Commit Graph

339 Commits

Author SHA1 Message Date
Behdad Esfahbod 3dcbdc2125 Minor 2012-07-30 19:32:42 -04:00
Behdad Esfahbod 05bd1b6342 [GSUB/GPOS] Move glyph props matching around 2012-07-30 19:30:01 -04:00
Behdad Esfahbod fd42257f8c Minor 2012-07-30 18:44:10 -04:00
Behdad Esfahbod f860366456 [OT] Gain back some lost speed 2012-07-30 03:16:38 -04:00
Behdad Esfahbod 11f4c87d01 [OT] Remove hb_ot_layout_ensure()
I didn't like it from the beginning.
2012-07-30 02:36:46 -04:00
Behdad Esfahbod 578e42182b Minor 2012-07-30 02:35:07 -04:00
Behdad Esfahbod cfe9882610 Add hb_ot_layout_ensure() and hb_uniscribe_font_ensure() 2012-07-27 03:06:30 -04:00
Behdad Esfahbod ea278d3895 Partially switch ot shaper to shape_plan 2012-07-27 02:12:28 -04:00
Behdad Esfahbod e72b360ac6 Refactor / finish would_apply() operation
Untested.
2012-07-19 14:44:46 -04:00
Behdad Esfahbod 559f706678 Fix MarkAttachmentType matching
Fixes issue reported by Khaled Hosny with his Hussaini Nastaleeq font
and sequences like those added in the previous commit.
2012-07-16 22:46:52 -04:00
Behdad Esfahbod ad4494759f Minor 2012-07-16 22:40:21 -04:00
Behdad Esfahbod ad6a6f2240 Minor 2012-06-09 01:43:20 -04:00
Behdad Esfahbod ce47613889 Micro-optimize
I know...
2012-06-09 01:43:15 -04:00
Behdad Esfahbod 0f8fea71a6 Minor. Hide _hb_ot_layout_get_glyph_property() 2012-06-09 00:24:38 -04:00
Behdad Esfahbod 44b8ee0c90 Minor 2012-06-09 00:23:24 -04:00
Behdad Esfahbod 0594a24484 Cleanup TRUE/FALSE vs true/false 2012-06-05 20:35:40 -04:00
Behdad Esfahbod 5caece67ab Make closure() return void 2012-04-23 23:03:12 -04:00
Behdad Esfahbod 6a9be5bd35 Rename hb_glyph_map_t to hb_set_t 2012-04-23 22:23:17 -04:00
Behdad Esfahbod 3e32cd9570 Minor 2012-04-23 13:22:50 -04:00
Behdad Esfahbod 650ac00da3 Minor refactoring 2012-04-23 13:17:09 -04:00
Behdad Esfahbod f94b0aa646 Add "closure" operation stubs to GSUB
Filling in.
2012-04-23 13:04:38 -04:00
Behdad Esfahbod 71632c96da Fallback to Latin script if the font has no other usable scripts
Patch and description from Jonathan Kew:

It turns out that some legacy Thai fonts provide OpenType substitution
features to implement mark positioning, but (incorrectly) put those
features/lookups under the 'latn' script tag instead of using 'thai' (or
possibly 'DFLT'). See
https://bugzilla.mozilla.org/show_bug.cgi?id=719366 for an example and
more detailed description.

Although this is really a font bug, I suggest that we could improve the
rendering of such fonts by looking for the 'latn' as a fallback if
neither the requested script nor "default" is found in
hb_ot_layout_table_choose_script. Suggested patch against harfbuzz
master is attached.

This does _not_ affect the other kind of legacy Thai font, where custom
code to support vendor-specific PUA codepoints would be needed. I'm not
keen to go down that path; IMO, such fonts should be ruthlessly stamped
out in favour of standards-based solutions. :)

JK
2012-01-22 15:31:44 -05:00
Behdad Esfahbod 7a750ac33e Rename table files from eg maxp-private.hh to maxp-table.hh 2011-08-17 14:19:59 +02:00
Behdad Esfahbod 944b2ba1ce [buffer] Make API take signed int length
Since we already switched to accepting -1 as 'zero-terminated'.
2011-08-09 00:23:58 +02:00
Behdad Esfahbod 3897335c76 [API] Sort out get_blob API
hb_face_get_blob() renamed to hb_face_reference_blob(), returns a
reference now.

hb_face_[sg]et_index() added.

hb_face_set_upem() added.
2011-08-08 23:37:41 +02:00
Behdad Esfahbod c605bbbb6d Remove C++ guards from source files
Where causing issues for people with MSVC.
2011-08-04 20:00:53 -04:00
Behdad Esfahbod c47a31fb47 [OT] Save chosen script tag 2011-07-30 20:57:01 -04:00
Behdad Esfahbod a9ad3d3460 Move more code around
Buffer var allocation coming into shape
2011-07-28 15:42:18 -04:00
Behdad Esfahbod 651e8dd79e Start cleaning up buffer var allocation
I've messed up a lot of stuff recently, different parts of the
shaping process are stumbling on eachother's toes because
manually tracking what's in which buffer var is hard.  I'm
going to add some internal API to track those such that mistakes
are discovered as soon as they are introduced.
2011-07-25 14:54:08 -04:00
Behdad Esfahbod b9452bfc16 Fix compiler warnings with -pedantic 2011-06-14 14:47:07 -04:00
Behdad Esfahbod 46d6a21cc8 [API] Add hb_ot_layout_substitute_start/finish() 2011-05-11 22:33:13 -04:00
Behdad Esfahbod 6a4e7e1372 Add maxp table
Not used for anything right now.  Will use to get num_glyphs in the future.
2011-05-11 10:31:33 -04:00
Behdad Esfahbod abcfe9b59b Remove hb_ot_layout_context_t, simplify code 2011-05-11 00:02:02 -04:00
Behdad Esfahbod 1c9f8717eb [API] Simplify blob API, remove lock 2011-05-06 22:59:42 -04:00
Behdad Esfahbod 266b34418c Refactor to keep hb-object-private.h and hb-open-type.h separate
Needed to be able to include <Windows.h> from hb-object-private.h.
2011-05-03 00:35:53 -04:00
Behdad Esfahbod 72657e4ce7 [API] Make hb_font_create() take a face and reference it 2011-05-02 20:47:23 -04:00
Behdad Esfahbod 2409d5f8d7 Update Copyright headers 2011-04-21 17:14:28 -04:00
Behdad Esfahbod c035812feb [API] Rename hb_face_get_table() to hb_face_reference_table()
That correctly reflects the reference ownership transfer happening.
2011-04-20 17:03:00 -04:00
Behdad Esfahbod 8f0d7e0c3f Remove hb_buffer_clear_positions(), add hb_ot_layout_position_start() 2011-04-15 19:08:43 -04:00
Behdad Esfahbod 4a2d844c2f Minor code shuffling 2010-11-03 15:28:56 -04:00
Behdad Esfahbod c2709119c8 Move things around some more 2010-11-02 19:12:59 -04:00
Behdad Esfahbod 1e7c1fcbc3 Move code around 2010-11-02 19:12:59 -04:00
Behdad Esfahbod bf94b3ad22 Move some more code around 2010-11-02 19:12:59 -04:00
Behdad Esfahbod 6334658fe7 Simplify mark skipping logic 2010-11-02 19:12:59 -04:00
Behdad Esfahbod 8c69e65abe Rename lookup_flags to lookup_props since it's more than just flags 2010-11-02 19:12:59 -04:00
Behdad Esfahbod 98370e89d1 WIP removing external synthesized GDEF support and implementing it internally 2010-11-02 19:12:58 -04:00
Behdad Esfahbod 88474c6fda Get rid of the OpenType-specific internal buffer representation
Add variant integers to buffer item types.  More cleanup coming.
2010-11-02 19:12:58 -04:00
Behdad Esfahbod 13528d0c78 Supposedly implement vertical support in GPOS
Not tested at all.
2010-10-27 14:09:27 -04:00
Behdad Esfahbod 9624de5b49 Clarify cursive_chain (and change its sign) 2010-10-27 13:44:59 -04:00
Behdad Esfahbod e204674fe3 Rename hb_ot_layout_get_lig_carets() to hb_ot_layout_get_ligature_carets() 2010-10-27 12:32:02 -04:00
Behdad Esfahbod 3357d145f8 Implement vertical support in get_lig_carets() 2010-10-27 12:30:46 -04:00
Behdad Esfahbod dca8aff246 Add comment re DejaVu Sans Mono having 'dflt' script 2010-09-28 16:25:45 -04:00
Behdad Esfahbod 9ea7368fce Fix hb_ot_layout leak 2010-09-22 17:38:44 -04:00
Behdad Esfahbod ed4acbde9c Fix NULL dereference
Reported by Jonathan Kew.  Face table handling needs to be redone
anyway, but fix this for now.
2010-08-16 14:36:27 -04:00
Behdad Esfahbod 4e4ef24e46 Towards separating bit allocation from shaping 2010-07-23 17:22:11 -04:00
Behdad Esfahbod acdba3f90b Prefer C linkage 2010-07-23 15:39:27 -04:00
Behdad Esfahbod 0a4399ca22 Fix scale issues
hb_font_set_scale() now sets the value to be used to represent a unit
pixel.  For example, if rendering a 10px font with a 26.6 representation,
you would set scale to (10 << 6).  For 10px in 16.16 you would set it to
(10 << 16).  This space should be the same space that the get_glyph_metrics
and get_kerning callbacks work in.
2010-05-19 15:45:06 -04:00
Behdad Esfahbod f415755fdf Minor 2010-05-17 15:14:14 -04:00
Behdad Esfahbod d7cfb3b2d1 s/\<context\>/c/g 2010-05-13 14:18:49 -04:00
Behdad Esfahbod 22da7fd94d Rename a few files to be C++ sources
In anticipation for buffer revamp coming.
2010-05-12 18:23:21 -04:00
Behdad Esfahbod b5db4f1e4e Clean up NO_INDEX 2010-05-10 22:22:22 -04:00
Behdad Esfahbod b435ab7e29 Fix accessing tables from NULL pointer 2010-05-10 19:51:57 -04:00
Behdad Esfahbod 64d3fc8d0d Cosmetic: Rename HB_LIKELY/HB_UNLIKELY to likely/unlikely 2010-05-03 22:51:19 -04:00
Behdad Esfahbod 33d13fdda9 Rename HB_GNUC_UNUSED -> HB_UNUSED 2010-04-29 13:56:44 -04:00
Behdad Esfahbod 990443e5f2 Remove lock_instance() 2010-04-23 17:53:32 -04:00
Behdad Esfahbod 4206e9511a More warning fixes 2010-04-23 14:54:01 -04:00
Behdad Esfahbod c755cb3e3a Change header comment 2010-04-22 00:11:43 -04:00
Behdad Esfahbod 555d11273e [GDEF] Fix bug in building synthetic GDEF 2010-01-26 12:58:59 -05:00
Behdad Esfahbod 2014b8d110 Hook OpenType shaping up
Default features only for now.
2009-12-20 20:58:26 +01:00
Behdad Esfahbod 52ea47767c Change order of font and face for API consistency 2009-11-06 17:45:38 -05:00
Behdad Esfahbod f4f1fc970b Remove debug info that crept in 2009-11-06 17:42:38 -05:00
Behdad Esfahbod 9db8ad7531 Add hb_ot_layout_position_finish()
We expect buffer to be setup with default positions before GPOS.
2009-11-06 16:47:31 -05:00
Behdad Esfahbod 8a3511ac6c Add hb_language_t as well as language/script conversion to OT tags 2009-11-04 19:45:39 -05:00
Behdad Esfahbod e21899bc35 Fix array query API
The array query APIs now all do:

  - Return the total number of items
  - Take a start_offset, such that individual items can be fetched
  - The _count IN/OUT variable always has number of items written
    into the array upon return of the function
2009-11-04 16:36:14 -05:00
Behdad Esfahbod aa87d95173 [HB] Fix lookup_flag ignoring
Reported by Keith Stribley on HarfBuzz list.
2009-11-02 14:40:48 -05:00
Behdad Esfahbod 37006bd1bd Fix stupid array growing bug 2009-11-02 14:40:47 -05:00
Behdad Esfahbod 9897749113 [HB] Simplify counting 2009-11-02 14:40:47 -05:00
Behdad Esfahbod f0c7540c4e Bug 592484 - invalid write in HB
Fix off-by-one.
2009-11-02 14:40:47 -05:00
Behdad Esfahbod 081819ea8b [OT] Hookup glib unicode funcs 2009-11-02 14:40:39 -05:00
Behdad Esfahbod 17878255fa [HB] Remove hb_ot_layout_table_find_feature()
That function doesn't make much sense as multiple features in the table may
have the same tag.
2009-11-02 14:40:35 -05:00
Behdad Esfahbod 468769b8f5 [HB] Rename hb_ot_layout_feature_mask_t to hb_mask_t 2009-11-02 14:40:34 -05:00
Behdad Esfahbod bff3c0fde5 [HB] Remove clumsy macros and improve API 2009-11-02 14:40:34 -05:00
Behdad Esfahbod 07e69226cb [HB] Remove another stale XXX 2009-11-02 14:40:33 -05:00
Behdad Esfahbod d60bb8ca2a [HB] Hook Sanitizer up. Hell's breaking loose right now 2009-11-02 14:40:30 -05:00
Behdad Esfahbod 679f41fe61 [HB] Fix leak 2009-11-02 14:40:30 -05:00
Behdad Esfahbod f2be750981 [HB] Remove stale TODO 2009-11-02 14:40:29 -05:00
Behdad Esfahbod 15164d9258 [HB] Fix mix warnings 2009-11-02 14:40:29 -05:00
Behdad Esfahbod 70e0f2a75e [HB] Make it all work again 2009-11-02 14:40:27 -05:00
Behdad Esfahbod 23c86aa000 [HB] Use face_t directly instead of ot_layout_t 2009-11-02 14:40:27 -05:00
Behdad Esfahbod 5f5b24f99f [OT] Rename C++ header files from *.h to *.hh 2009-11-02 14:40:27 -05:00
Behdad Esfahbod 2098a021a8 [HB] Move OT file handling out of ot-layout 2009-11-02 14:40:26 -05:00
Behdad Esfahbod 0ead481a5a [HB] Port ot-layout to new public API 2009-11-02 14:40:26 -05:00
Behdad Esfahbod 2c80296aa5 [HB] Add XXX marks 2009-11-02 14:40:26 -05:00
Behdad Esfahbod f1322e52d5 [HB] Cleanup public buffer structs 2009-11-02 14:40:26 -05:00
Behdad Esfahbod 6d5bb18e93 [OT] Match struct with HB's 2009-11-02 14:40:25 -05:00
Behdad Esfahbod 0090dc0f67 [HB] Remove hinting setting and use ppem==0 to mean "no hinting" 2009-11-02 14:40:24 -05:00
Behdad Esfahbod 02a370697d [HB] Move direction to buffer 2009-11-02 14:40:23 -05:00
Behdad Esfahbod f9cd1014f8 Apply patch from Jonathan Kew 2009-11-02 14:40:23 -05:00
Behdad Esfahbod 2ebb89d63d Revert "XX"
This reverts commit c939f6aff405ca7b10b1f1538f46148bff719fcb.
2009-11-02 14:40:22 -05:00
Behdad Esfahbod 55520d2af1 XX 2009-11-02 14:40:22 -05:00
Behdad Esfahbod 09c292e3b6 [HB] Fix glyph properties 2009-11-02 14:40:21 -05:00
Behdad Esfahbod 4189b92aaa [HB] When looking back/forward, skip marks only 2009-11-02 14:40:20 -05:00
Behdad Esfahbod 1246e41021 [GDEF] Support MarkFilteringSets 2009-11-02 14:40:20 -05:00
Behdad Esfahbod 5130c35e93 [HB] Simplify MarkAttachmentType handling 2009-11-02 14:40:20 -05:00
Behdad Esfahbod e4b92b85a7 [HB] Support parsing MarkFilteringSets introduced in OpenType 1.6 2009-11-02 14:40:19 -05:00
Behdad Esfahbod 62964afcec [HB] Implement get_lig_carets() 2009-11-02 14:40:19 -05:00
Behdad Esfahbod 79420ad9ca [HB] Add get_attach_points() 2009-11-02 14:40:19 -05:00
Behdad Esfahbod c968fc2dc8 [HB] More buffer cleanup 2009-11-02 14:40:19 -05:00
Behdad Esfahbod 88a5f5a49b [HB] Cleanup buffer 2009-11-02 14:40:19 -05:00
Behdad Esfahbod 347f0b8621 [HB] Clean more 2009-11-02 14:40:18 -05:00
Behdad Esfahbod 3015c41751 [HB] Remove last dependence on the old code base! 2009-11-02 14:40:15 -05:00
Behdad Esfahbod 5c0adce1cc [HB] Rename harfbuzz-buffer to hb-buffer 2009-11-02 14:40:15 -05:00
Behdad Esfahbod b857b49c82 [HB] Remove all references to the old code! 2009-11-02 14:40:15 -05:00
Behdad Esfahbod e1593a6e62 [GPOS] Finally it's working, up to Cursive
Wow, IranNastaliq renders perfectly again!
2009-11-02 14:40:15 -05:00
Behdad Esfahbod 0f7e6b2cea [GPOS] Fix more brokenness 2009-11-02 14:40:15 -05:00
Behdad Esfahbod 9c42f05a5c Switch Pango to new, defunt, GPOS 2009-11-02 14:40:13 -05:00
Behdad Esfahbod 5e5eb0573f [HB] Start GPOS! 2009-11-02 14:40:13 -05:00
Behdad Esfahbod 4acaffd786 [HB] Don't use G_LIKELY! 2009-11-02 14:40:13 -05:00
Behdad Esfahbod d6aae5f5ca [HB] Cleanup TODOs 2009-11-02 14:40:12 -05:00
Behdad Esfahbod ee58aaebd2 [HB] Update copyright years 2009-11-02 14:40:09 -05:00
Behdad Esfahbod f4c9514935 [HB] Simplify more arrays 2009-11-02 14:40:09 -05:00
Behdad Esfahbod 8b83580331 [HB] Use templates for Null objects
Also use a common pool for all nul-content ones.
2009-11-02 14:40:08 -05:00
Behdad Esfahbod fc36d9453e [GSUB] Add GSUB::substitute_lookup() 2009-11-02 14:40:08 -05:00
Behdad Esfahbod c43562b2a7 [GSUB] Finish ContextSubstFormat1 2009-11-02 14:40:08 -05:00
Behdad Esfahbod 5a0b791184 [harfbuzz/GSUB] towards a partially working GSUB 2009-11-02 14:40:06 -05:00
Behdad Esfahbod 30bd763fa2 Implement the first substitute() 2009-11-02 14:40:06 -05:00
Behdad Esfahbod ce48f03946 Merge harfbuzz-ng 2009-11-02 14:38:33 -05:00
Behdad Esfahbod 2d15e72c75 Give it a start at GSUB 2009-04-15 19:50:16 -04:00
Behdad Esfahbod c44733596c [hb-ot-layout] Add proper namespace to accessors 2008-02-18 21:33:22 -05:00
Behdad Esfahbod 4a26ea408c Finish script, language, and feature public API 2008-01-29 17:42:11 -05:00
Behdad Esfahbod 706ab25a4c Add script and language public getter API 2008-01-28 05:58:50 -05:00
Behdad Esfahbod e50c3978d3 Rename HB_OT_Layout to hb_ot_layout_t 2008-01-28 00:16:49 -05:00
Behdad Esfahbod dfa8119651 Rename hb_ot_layout_create() to hb_ot_layout_create_for_data() 2008-01-28 00:12:21 -05:00
Behdad Esfahbod 54e5aac5e2 GDEF completely working now 2008-01-27 21:21:37 -05:00
Behdad Esfahbod 6f425b1179 [GDEF] Finish internal API 2008-01-24 19:39:49 -05:00
Behdad Esfahbod 590d55cbb9 [GDEF] Finish public API 2008-01-24 19:15:35 -05:00
Behdad Esfahbod aff831ed67 Implement glyph properties 2008-01-24 06:03:45 -05:00
Behdad Esfahbod ead428d7a0 More public api 2008-01-24 04:09:46 -05:00
Behdad Esfahbod fd92a3dde3 Starting public interface 2008-01-24 03:36:11 -05:00