Commit Graph

1376 Commits

Author SHA1 Message Date
Behdad Esfahbod b2da26d1e3 [hb-view] Support --features
Accepts values like:

  --features="-mkmk,aalt=2,calt=1,+cswh"

A minus sign means "=0", a plus sign means "=1".  Default is "=1".
A minus sign overrides an explicit value.
2011-04-01 15:48:43 -04:00
Behdad Esfahbod f48ff19b62 Sort options for clarity 2011-04-01 14:19:10 -04:00
Behdad Esfahbod 5d91c3d547 Add script to/from ISO 15924 tag support
Also adds --script support to hb-view.

If a script tag is not known to us, we pass the ISO 15924 tag around.
Right now, the OT layer ignores that, but we can fix it to blindly
convert that to an OT script tag.
2011-03-16 17:36:32 -03:00
Behdad Esfahbod 3286fc0e9a Let hb_shape() guess script and direction...
- Rename HB_SCRIPT_INVALID_CODE to HB_SCRIPT_INVALID

- Add HB_DIRECTION_INVALID

- Make hb_script_get_horizontal_direction() public

- Make hb_shape() guess script from buffer text (first non-common
  non-inherit script) if buffer script is set to HB_SCRIPT_INVALID (this
  is NOT the default.)

- Make hb_shape() guess direction from buffer script if buffer direction
is set to HB_DIRECTION_INVALID (this is NOT the default.)

- Make hb-view.c set INVALID script and direction on the buffer.

The above changes are meant to make hb-view fairly useful for uni-script
uni-direction text.  The guessing behavior however is NOT the default of
hb_shape() and must be asked for explicitly.  This is intended, because
the guess is not a suitable substitute to full-fledged bidi and script
segmentation.  It's just a testing tool.
2011-03-16 14:53:32 -03:00
Behdad Esfahbod b7b29684df [hb-view] Handle write_to_png errors 2011-03-02 01:01:03 -05:00
Behdad Esfahbod c2cb98c818 [hb-view] Link with -lm 2011-03-01 23:18:09 -05:00
Behdad Esfahbod b5dd44e246 Fix possible overflow 2011-02-28 10:13:52 -08:00
Behdad Esfahbod a4b781e93a Default background color shall either be white or transparent
Definitely not black!
2011-02-23 12:47:56 -05:00
Behdad Esfahbod 5353bf439c Add initial hb-view tool
Currently doesn't handle script or direction.
2011-02-22 18:06:19 -05:00
Bradley Grainger 82438c6ad5 Fix #pragma message for MSVC.
__LOC__ was renamed to _HB__LOC__ in cd7555 but the corresponding
change wasn't made in hb-private.h.
2011-02-15 18:37:29 -05:00
Behdad Esfahbod ba9ab8d6d9 Fix language extension matching 2011-01-10 07:45:41 -05:00
Behdad Esfahbod 7bbe14bed8 Fix 'make distcheck' 2011-01-09 22:29:14 -05:00
Behdad Esfahbod cc1a8a938b Fix ChanContext backtrack matching with GPOS
Reported on mailing list by Keith Stribley and Khaled Hosny.
2011-01-06 14:58:52 -05:00
Behdad Esfahbod 1c3183027f Remove unused realloc
We always allocate and grow str and pos together.
2011-01-06 14:44:14 -05:00
Behdad Esfahbod 756f794a1f Remove Graphite backend
It was unmaintained and the code has to be replaced to use the new
grphite-ng code base.
2010-12-26 20:52:40 -05:00
Behdad Esfahbod f3d9d98793 Docs 2010-12-22 01:39:29 -05:00
Behdad Esfahbod d86a5b3c57 Bug 32274 - classic mongolian shaper
Add support for classic Mongolian script to the Arabic shaper.

Still work to be done around U+180E MONGOLIAN VOWEL SEPARATOR as it
should not be included in the final glyph stream the same way that
ZWNJ, etc should not appear in the final glyph stream.

But the joining part should be done.

There remains the question of how should the U+18A9 MONGOLIAN LETTER ALI
GALI DAGALGA be handled as it has General Category NSM but a letter
nonetheless.  For now, our generic logic makes this a joining T instead
of joining D as other Mongolian letters are.
2010-12-21 18:36:25 -05:00
Behdad Esfahbod b0e7378fa9 Reroute Mandaic shaping through the Arabic shaper
We added Mandaic joining data to the Arabic shaper a while ago, but
were not actually using the Arabic shaper for Mandaic.  Fixed.
2010-12-21 14:19:32 -05:00
Behdad Esfahbod 88e7f37488 Annotate the Arabic joining table with block information 2010-12-21 14:18:24 -05:00
Behdad Esfahbod 1482a39e56 Rename remaining metrics uses to extents 2010-12-17 20:15:05 -05:00
Behdad Esfahbod 22c537657c Rename TableDirectory to TableRecord as per OpenType 1.6 2010-12-14 23:51:29 -05:00
Behdad Esfahbod 33e8b86197 Update 'head' table to OpenType 1.6 2010-12-13 15:54:56 -05:00
Behdad Esfahbod b768333514 Disallow ligature substitutions replacing one glyph 2010-12-13 14:22:35 -05:00
Behdad Esfahbod 7eb875118d Mozilla Bug 618592 - freeze on typekit
Fix apply_lookup() for zero-input broken fonts.
2010-12-13 14:13:35 -05:00
Behdad Esfahbod bbbbe80ec9 Rename original_direction to target_direction 2010-12-07 16:22:02 -05:00
Behdad Esfahbod ee8aaf976a Fix arabic shaping of LTR text
We should ensure-direction before doing any complex work.  The only
exception is mirroring that needs to see the original / final direction,
not the native.  Handle that.
2010-12-07 16:20:42 -05:00
Behdad Esfahbod 4f9e4a40bc Fix failing checks 2010-11-22 11:30:32 -05:00
Behdad Esfahbod 9da26d6669 Remove email address from Copyright headers 2010-11-22 11:03:18 -05:00
Behdad Esfahbod a45f000192 Clarify copyright notice 2010-11-18 13:59:10 -05:00
Behdad Esfahbod 0884a8d9cd Move generated table to its own file 2010-11-17 16:58:21 -05:00
Behdad Esfahbod 14d784116b Update Arabic joining table to include Mandaic
Mandaic was added to Unicode 6.0, but the joining data was not updated.
Draft ArabicShaping.txt from 6.1 includes the joining data for Mandaic.
Use that.
2010-11-17 16:52:58 -05:00
Behdad Esfahbod 43bf2f7f1e Add OpenType script tags for Unicode 5.2 and Unicode 6.0 scripts
Based on tags proposed by Microsoft for inclusion in OpenType.
2010-11-17 14:49:40 -05:00
Behdad Esfahbod afab01cf7c Add Unicode 6.0 scripts 2010-11-17 14:35:34 -05:00
Behdad Esfahbod f234b68d18 Change HB_SCRIPT_MEITEI_MAYEK to HB_SCRIPT_MEETEI_MAYEK
The new name matches the Unicode name.  Reported by Jonathan Kew.
2010-11-17 14:25:44 -05:00
Behdad Esfahbod 300cb41417 Add XXX marks 2010-11-17 12:57:23 -05:00
Behdad Esfahbod 3a852ae7fe Save general category and combining class in the buffer for reuse 2010-11-03 16:37:24 -04:00
Behdad Esfahbod a5ab682b9b More "unreached code" warning fixes
Ugly :(.
2010-11-03 16:10:12 -04:00
Behdad Esfahbod 4e22c7e941 Add comment 2010-11-03 16:10:12 -04:00
Behdad Esfahbod 0342034d1c Pedantic 2010-11-03 16:10:12 -04:00
Behdad Esfahbod 4a2d844c2f Minor code shuffling 2010-11-03 15:28:56 -04:00
Behdad Esfahbod 11e3ec444a Fix a few more "unreachable code" warnings 2010-11-03 15:11:04 -04:00
Behdad Esfahbod 2304856340 Remove another couple lines of dead code 2010-11-03 12:47:27 -04:00
Behdad Esfahbod b8783c85ac Fix unreachable-code warning 2010-11-03 11:51:43 -04:00
Behdad Esfahbod c2709119c8 Move things around some more 2010-11-02 19:12:59 -04:00
Behdad Esfahbod 194d4566ec Move buffer var allocation local 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 870e2d6eac Remove unused function 2010-11-02 19:12:58 -04:00
Behdad Esfahbod 1115890b90 More cleanup 2010-11-02 19:12:58 -04:00
Behdad Esfahbod dbf56b1d94 More lig-id cleanup 2010-11-02 19:12:58 -04:00
Behdad Esfahbod f6a23a0b91 More removal of lig-id code from buffer 2010-11-02 19:12:58 -04:00
Behdad Esfahbod dd2ffd282c Minor renaming 2010-11-02 19:12:58 -04:00
Behdad Esfahbod fe263272a2 Move setting lig_id/component out of buffer and to the gsub code 2010-11-02 19:12:58 -04:00
Behdad Esfahbod 2e2b2480c0 Always allocate new ligature id
No practical point in reusing ligature ids.
2010-11-02 19:12:58 -04:00
Behdad Esfahbod bf07d5a29c Set component=0 for ligature glyph 2010-11-02 19:12:58 -04:00
Behdad Esfahbod 37ab877149 Remove comment 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 6cb8c34930 Add hb_var_int_t 2010-11-02 19:12:57 -04:00
Behdad Esfahbod f22802431a Remove trailing comma 2010-11-02 19:12:57 -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 d6c9eadb88 Remove more pointless LONGTERMTODO items 2010-10-27 12:34:50 -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 8eeed7eddc Remove LONGTERMTODO item that I'll never fix 2010-10-27 12:07:49 -04:00
Behdad Esfahbod 184a5279c6 Remove unused macro 2010-10-27 12:00:49 -04:00
Behdad Esfahbod af5d02a269 Rewrite Cursive joining to act more like other pair lookups
Look forward for next character instead of joining to the last character.
2010-10-27 11:54:26 -04:00
Behdad Esfahbod ea22c749c7 Fix Cursive positioning
Test case: "مرا" rendered using IranNastaliq.
2010-10-27 11:09:48 -04:00
Behdad Esfahbod aefdb64689 Fix segfault with Arabic combining marks 2010-10-27 10:40:39 -04:00
Behdad Esfahbod 248e3c2ba4 Oops, remove extra mask setting that broke complex shaping 2010-10-27 01:23:14 -04:00
Behdad Esfahbod 502f4cba3e Divide get_metrics into get_advance and get_extents
Graphite module not updated.
Bump version to 0.3.
2010-10-27 01:13:56 -04:00
Behdad Esfahbod ec6c0e54d3 Fix blob leak 2010-10-26 11:28:14 -04:00
Behdad Esfahbod bd7378b2ef Massage mask setting a bit more
Still finding the exact correct way the masks should be set.
2010-10-13 18:33:16 -04:00
Behdad Esfahbod 961f9baa7b Oops, actually set global mask 2010-10-13 17:17:00 -04:00
Behdad Esfahbod 39dede9fff Make sure boolean features always use value=1
Previously boolean features turned on the entire feature mask.  This is
wrong if feature is Alternate and user has provided values bigger than one.
Though, I don't think other engines support such corner cases.
2010-10-13 15:54:06 -04:00
Behdad Esfahbod 3506b2e78d Return early if mask is 0 2010-10-13 15:38:52 -04:00
Behdad Esfahbod 5c1c8c9c50 Make sure feature values don't leak out of their mask 2010-10-13 15:36:38 -04:00
Behdad Esfahbod 852912fc2d Fix applying default-value for features
Previously if a default global feature was overrided by a non-global
user feature, we were not setting any default mask for the feature,
essentially disabling the feature by default.  Fix that.
2010-10-13 15:34:50 -04:00
Behdad Esfahbod 2989be4919 Set user masks after complex masks 2010-10-13 15:18:29 -04:00
Behdad Esfahbod 3111b8a0d5 Fix stupid bug, oops 2010-10-13 10:41:53 -04:00
Behdad Esfahbod 758f68b860 Fix Arabic shaper
It's tested now.  It works!
2010-10-12 17:37:44 -04:00
Behdad Esfahbod 13403bc67a Hookup Arabic shaper!
Not tested yet.
2010-10-12 17:23:54 -04:00
Behdad Esfahbod 57ac0ecb78 Merge clearing masks and setting global masks 2010-10-12 17:07:02 -04:00
Behdad Esfahbod fc96596b7c Form clusters before setting masks 2010-10-12 17:00:40 -04:00
Behdad Esfahbod 1e80782244 Clear masks before setting them up, not after! 2010-10-12 17:00:07 -04:00
Behdad Esfahbod fd3d32d31c Add hb_ot_shape_execute()
Not public yet.
2010-10-12 16:57:47 -04:00
Behdad Esfahbod 49baa1f69e Add hb_ot_complex_shaper_t stuff and start hooking Arabic shaper up 2010-10-12 16:50:36 -04:00
Behdad Esfahbod 605ed468f3 Add hb_ot_shape_plan_t
This is the object that a separate plan/execute shaping API will use in
between the two stages.
2010-10-12 16:19:38 -04:00
Behdad Esfahbod 895fb5d364 Refactor, in a different direction 2010-10-12 16:00:21 -04:00
Behdad Esfahbod d2ba016ca1 More refactoring 2010-10-12 15:35:45 -04:00
Behdad Esfahbod 66e487dfbf Update Arabic shaping table to Unicode 6.0.0. 2010-10-12 13:51:19 -04:00
Behdad Esfahbod f4792d99ee Fix infinite loop!
Untested code is indeed buggy code.

Mozilla bug #603352.
2010-10-12 12:32:18 -04:00
Behdad Esfahbod 993d1e786a Fix missing negation in unreachable code!
Mozilla bug #603346
2010-10-12 11:17:30 -04:00
Behdad Esfahbod 52601275d5 More separation 2010-10-08 20:38:46 -04:00
Behdad Esfahbod 6b7e675862 Minor 2010-10-08 20:30:04 -04:00
Behdad Esfahbod aa9c450bb2 Enable 'rtlm' mirroring 2010-10-08 20:27:38 -04:00
Behdad Esfahbod 36925f695d Rename hb_mask_allocator_t to hb_ot_map_t
hb_ot_plan_t may be a better name, donno.
2010-10-08 20:21:09 -04:00
Behdad Esfahbod f5dd3be46b Improve checks 2010-10-08 20:16:23 -04:00
Behdad Esfahbod 5a2b0b3878 Add hb-ot-map.cc 2010-10-08 20:14:57 -04:00
Behdad Esfahbod ecc4550ed7 Fix feature overriding 2010-10-08 20:05:29 -04:00
Behdad Esfahbod 8f08c32750 Minor cleanup 2010-10-08 19:51:03 -04:00
Behdad Esfahbod a806762a31 Add hb-ot-shape-private.hh 2010-10-08 19:21:46 -04:00
Behdad Esfahbod 4924affe0f Add hb-ot-map-private.hh 2010-10-08 19:18:16 -04:00
Behdad Esfahbod a7c5046d6b Add private hb_segment_properties_t 2010-10-08 18:47:47 -04:00
Behdad Esfahbod b897c607d9 Flip the OT bit-allocation vs gsub/gpos inside-out
We now build our entire attack plan before jumping in.
2010-10-08 18:41:57 -04:00
Behdad Esfahbod e89b7d2a61 Logically separate feature collection 2010-10-08 12:29:59 -04:00
Behdad Esfahbod 5b88908f12 Minor 2010-10-08 12:23:01 -04:00
Behdad Esfahbod 5360ce0c5c Move some more code around 2010-10-07 21:21:11 -04:00
Behdad Esfahbod d9c7260788 Minor 2010-10-07 21:19:54 -04:00
Behdad Esfahbod efe0d682e8 Simplify compiling lookups 2010-10-07 21:12:46 -04:00
Behdad Esfahbod 476c94218b Rename 2010-10-07 17:47:33 -04:00
Behdad Esfahbod 34db6f031d Add XXX note 2010-10-07 01:21:19 -04:00
Behdad Esfahbod 98aa3f6544 Call hb_ot_shape_setup_lookups_complex() 2010-10-06 00:23:36 -04:00
Behdad Esfahbod f1d07885dc Rename setup_lookups() 2010-10-06 00:21:37 -04:00
Behdad Esfahbod affc5abac7 Move table_tag to hb_ot_shape_context_t 2010-10-06 00:18:16 -04:00
Behdad Esfahbod 967240dd8b Add internal hb_ot_shape_context_t 2010-10-05 23:00:05 -04:00
Behdad Esfahbod 3eb936f153 Add Arabic/Syriac/N'ko shaping logic
Not hooked up just yet.
2010-10-05 19:22:06 -04:00
Behdad Esfahbod e81d7afe6e Add hb_face_get_upem() 2010-10-04 18:18:48 -04:00
Behdad Esfahbod bd361945a8 Add API comments 2010-10-04 17:22:57 -04:00
Behdad Esfahbod 645f6f265b Add is_mutable() functions
Correspond to the make_mutable() ones.
2010-10-04 17:01:01 -04:00
Behdad Esfahbod 19c0eab8cf Add getters for all setter APIs
One in particular is not a straight getter: hb_font_unset_funcs() is
special because of the specific needs of the lifecycle management of
the user_data object.
2010-10-04 16:45:21 -04:00
Behdad Esfahbod f0feb084b0 Minor 2010-10-03 19:09:39 -04:00
Behdad Esfahbod ac0c1663fa Avoid div-by-zero, validate upem 2010-10-01 19:09:23 -04:00
Behdad Esfahbod 7f97d2cd90 Pedantic 2010-10-01 19:09:01 -04:00
Behdad Esfahbod 2841436926 Don't zero glyph advances in MarkToBase and similar lookups
See email thread "Should MarkToBase attachment zero the mark advance?"
started by Jonathan Kew on 23 August 2010 for details.
2010-10-01 18:32:45 -04:00
Behdad Esfahbod 36b3862009 One fewer cmp() implementation... 2010-09-29 12:10:24 -04:00
Behdad Esfahbod 4e573715ae Improve cmp function parameter namings and casts
No semantic change.
2010-09-28 16:28:57 -04:00
Behdad Esfahbod dca8aff246 Add comment re DejaVu Sans Mono having 'dflt' script 2010-09-28 16:25:45 -04:00
Behdad Esfahbod 9dc45401c0 Fix stupid bug in bsearch cmp function! 2010-09-28 16:23:28 -04:00
Behdad Esfahbod f2a30bd605 Remove unimplemented method hb_font_get_funcs()
Got to add a suitable replacement.
2010-09-23 10:27:08 -04:00
Behdad Esfahbod 7b9a38a112 Add test.c using public API 2010-09-22 17:42:59 -04:00
Behdad Esfahbod 9ea7368fce Fix hb_ot_layout leak 2010-09-22 17:38:44 -04:00
Behdad Esfahbod 8e577acae2 Fix blob refcounting with insane SFNT table directories 2010-09-22 17:37:02 -04:00
Behdad Esfahbod 5bd1e95236 Speedup Device table delta computation for common cases 2010-09-22 16:46:18 -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 258305c2a5 [GPOS] Fix div-by-zero
Patch by Jonathan Kew.  Mozilla bug #465728.
2010-08-13 14:10:02 -04:00
Behdad Esfahbod 2422c4b96d Add TODO 2010-08-13 14:00:34 -04:00
Behdad Esfahbod 27f0b092a1 Logically separate feature allocation from application 2010-07-23 17:35:54 -04:00
Behdad Esfahbod 6cf63132dc Minor 2010-07-23 17:32:26 -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 cc6d52279d De-C++ where possible
Helps with avoiding many "extern C" declarations in source files.
2010-07-23 15:00:13 -04:00
Behdad Esfahbod 0dd200d28f Header dep cleanup 2010-07-23 14:56:29 -04:00
Behdad Esfahbod fb0d252462 dos2unix 2010-07-23 14:54:22 -04:00
Behdad Esfahbod 81408cd51c Don't use "operator ="
Some compilers don't like operator = defined on members of union members
either.  Reported by Ginn Chen for Sun Studio compilers.
2010-07-23 14:46:57 -04:00
Behdad Esfahbod 4f801bd658 Mozilla bug 580233 - check for zero-length record in hb sanitizer.
Patch / report by Jonathan Kew.
2010-07-21 16:37:01 -04:00
Behdad Esfahbod 17e9ff938b Fix 64bit issues with debug prints 2010-07-15 11:21:34 -07:00
Behdad Esfahbod fd56ae4963 Don't bother sorting, it's a safe font error if the array is not sorted 2010-07-08 00:53:40 -04:00
Behdad Esfahbod cc8a4abea6 Use bsearch where applicable 2010-07-08 00:40:04 -04:00
Behdad Esfahbod 2f418f5709 Remove useless TODO 2010-07-07 22:07:40 -04:00
Behdad Esfahbod da8edbb622 Fix header 2010-06-09 07:15:39 -04:00
Behdad Esfahbod d05d13df02 Add a test for header preprocessor guards 2010-06-09 07:15:03 -04:00
Behdad Esfahbod 0f0cd9d361 Fix header tags 2010-06-09 06:32:56 -04:00
Behdad Esfahbod f2a1b411b1 Followup fix for variation-selectors
Patch from Jonathan Kew
2010-06-03 11:37:51 -04:00
Behdad Esfahbod a224b4d502 Fix skipping variation-selectors 2010-06-02 22:31:41 -04:00
Behdad Esfahbod 81a77b115d Make feature sorting stable 2010-06-01 23:03:54 -04:00
Behdad Esfahbod fdc322a820 Minor 2010-05-28 20:55:52 -04:00
Behdad Esfahbod f062ec6bb2 Further simplify mask allocator 2010-05-28 20:54:43 -04:00
Behdad Esfahbod 8af45fda47 Fix global feature handling 2010-05-28 20:41:20 -04:00
Behdad Esfahbod e04685ee7b Simplify mask allocation 2010-05-28 20:37:06 -04:00
Behdad Esfahbod 0e235d0fc9 Towards a mask allocator 2010-05-28 20:27:30 -04:00
Behdad Esfahbod 81c5e8724b Allow disabling default features
Patch from Jonathan Kew
2010-05-28 18:31:16 -04:00
Behdad Esfahbod 2163afbf35 Add note about UTF-8 decoder 2010-05-27 14:04:15 -04:00
Behdad Esfahbod 226faa58f4 Fix loop 2010-05-27 11:42:34 -04:00
Martin Hosken 56bef5680c Fixes to Python and Graphite from Martin 2010-05-27 11:41:47 -04:00
Behdad Esfahbod b485da0b71 Disable Graphite as it crashes all over the place... 2010-05-27 11:39:19 -04:00
Behdad Esfahbod 93ac709b1f Cypriot is RTL 2010-05-26 16:22:00 -04:00
Behdad Esfahbod 15c7379c16 Revert "Merge remote branch 'martin/master'"
This reverts commit 80af2812fb, reversing
changes made to c442672ec2.
2010-05-26 10:48:10 -04:00
Behdad Esfahbod 80af2812fb Merge remote branch 'martin/master' 2010-05-24 18:14:24 +01:00
Behdad Esfahbod c442672ec2 Fix struct initializers 2010-05-24 18:02:32 +01:00
Behdad Esfahbod f5ac9de259 Minor 2010-05-24 18:01:09 +01:00
Behdad Esfahbod f97bf4f812 Make sure we initialize all callbacks upon creation
Also fixes issue with unicode callbacks never being set really.
2010-05-24 17:50:19 +01:00
Behdad Esfahbod bf36a1074a Move all callback functions in a vtable structs 2010-05-24 17:46:21 +01:00
Martin Hosken 3109a86add hb-graphite now no longer has -ve advances within clusters. Fix infinite loop in tag_to_script(). python fixed to use tag_to_script and allow hbtestfont to be passed font files, where fontconfig knows about them. 2010-05-24 13:25:37 +01:00
Martin Hosken 72631c9d06 Merge branch 'master' of git://git.freedesktop.org/~behdad/harfbuzz-ng 2010-05-22 09:38:02 +01:00
Martin Hosken 1432ab15c1 Add graphical output to hbtestfont 2010-05-22 00:56:40 +01:00
Behdad Esfahbod bbc7a99d01 Move mirroring around a bit 2010-05-21 18:25:08 +01:00
Behdad Esfahbod bd0987386b Add a few more standard features 2010-05-21 18:06:35 +01:00
Behdad Esfahbod 75f3469ca6 Add note 2010-05-21 17:59:04 +01:00
Behdad Esfahbod 1094a294f6 Add rtlm 2010-05-21 17:58:20 +01:00
Behdad Esfahbod 074ea78749 Add ltra, ltrm, and rtla features 2010-05-21 17:53:10 +01:00
Behdad Esfahbod 1ce7b87c4d Cleanup bitmask allocation 2010-05-21 17:31:45 +01:00
Behdad Esfahbod dd22a8f7bf Add note 2010-05-21 16:43:17 +01:00
Martin Hosken cbd1d6a63a Rename Grxxx to HbGrxxx 2010-05-21 15:16:43 +01:00
Martin Hosken 0375bdd202 Rename classes from Grxxx to HbGrxxx 2010-05-21 15:13:26 +01:00
Behdad Esfahbod a5a72e004b Add hb-ot-shape.h, oops. 2010-05-21 15:12:52 +01:00
Behdad Esfahbod aa62a402a7 Fix Makefile to install hb-ot-shape.h 2010-05-21 14:42:11 +01:00
Behdad Esfahbod 9722b8f005 Simple renames 2010-05-21 14:37:47 +01:00
Behdad Esfahbod 02f28550d7 Graphite also forces us to link to libstdc++ currently 2010-05-21 14:37:28 +01:00
Behdad Esfahbod ca663bb23c Move main shaper code into hb_ot_shape() 2010-05-21 14:34:23 +01:00
Behdad Esfahbod 7acd232d36 Fix test failing 2010-05-21 14:20:48 +01:00
Behdad Esfahbod dd47924d88 Fix warnings 2010-05-21 14:18:08 +01:00
Behdad Esfahbod 305ba86715 Import Graphite shaping backend by Martin Hosken 2010-05-21 14:15:39 +01:00
Behdad Esfahbod 83f34677bc Add hb_tag_from_string() 2010-05-21 13:43:49 +01:00
Behdad Esfahbod 4a9a5c0b06 Don't allocate bits for features not available 2010-05-21 13:33:46 +01:00
Behdad Esfahbod e53d77142a Speed up feature mask setting
Patch from Jonathan Kew.
2010-05-21 13:32:38 +01:00
Behdad Esfahbod 4fa67f34ec Add Unicode 5.2 scripts 2010-05-21 13:29:12 +01:00
Behdad Esfahbod ee1b322100 Fix feature mask setting 2010-05-21 12:55:57 +01:00
Behdad Esfahbod b490fa3433 Add hb_ot_tag_to_script() 2010-05-21 11:15:07 +01:00
Behdad Esfahbod 280af1bddb Let hb_face_get_table() return NULL if table not found 2010-05-20 18:33:35 +01:00
Behdad Esfahbod 1cdbfd944e Fix alternate, again 2010-05-20 17:47:28 +01:00
Behdad Esfahbod fdca3d5160 Fix alternate off-by-one 2010-05-20 17:46:20 +01:00
Behdad Esfahbod b634beb39e Fix delta scale, again... 2010-05-20 17:44:52 +01:00
Behdad Esfahbod 40335d4533 Remove unused operator 2010-05-20 17:35:14 +01:00
Behdad Esfahbod f7acd8df51 Do alternate glyph selection!
Kinda hand-wavy right now.  Not tested.
2010-05-20 17:26:35 +01:00
Behdad Esfahbod 750a229455 get_table() is allowed to return NULL. Use that to simplify code 2010-05-20 16:23:27 +01:00
Behdad Esfahbod 99d9ef785f Write hb_face_create_for_data() in terms of hb_face_create_for_tables()
Fixes lack of head_table initialization in create_for_tables() also.
2010-05-20 15:47:49 +01:00
Behdad Esfahbod 6774463883 Apply user features to ranges! 2010-05-20 15:41:20 +01:00
Behdad Esfahbod 9b60233385 Add _hb_bit_storage() 2010-05-20 15:31:12 +01:00
Behdad Esfahbod 6b1b957f6d Add lookup_map 2010-05-20 15:14:44 +01:00
Behdad Esfahbod 60010a0c4d Update always-apply mask from 0xFFFF to 1
We plan to use the first bit to be always on.
2010-05-20 14:05:02 +01:00
Behdad Esfahbod 009aad5678 Invert the mask logic
Before, the mask in the buffer was inverted.  That is, a 0 bit meant
feature should be applied and 1 meant not applied, whereas in the
lookups, the logic was positive.

Now both are in sync.  When calling hb_buffer_add_glyph() manually,
the mask should be 1 instead of 0.
2010-05-20 14:00:57 +01:00
Behdad Esfahbod 7f411dbfd9 Apply user features
No ranges yet
2010-05-20 13:40:18 +01:00
Behdad Esfahbod 0db299ccad Change hb_feature_t to keep tag/int instead of string 2010-05-20 13:30:09 +01: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 cf5585cfa6 Add 'head' table 2010-05-19 12:03:35 -04:00
Behdad Esfahbod e29caf3f94 Add LONGDATETIME 2010-05-19 11:47:17 -04:00
Behdad Esfahbod f415755fdf Minor 2010-05-17 15:14:14 -04:00
Behdad Esfahbod 73af7756dc Indent 2010-05-14 23:38:08 -04:00
Behdad Esfahbod 3567b87cce Add an inline version of hb_buffer_ensure() 2010-05-14 23:28:44 -04:00
Behdad Esfahbod a6a79df5fe Handle malloc failture in the buffer 2010-05-14 23:20:16 -04:00
Behdad Esfahbod ca54a12658 Minor 2010-05-14 22:25:42 -04:00
Behdad Esfahbod 910a33fe84 Update buffer docs 2010-05-14 22:13:38 -04:00
Behdad Esfahbod 36b73c80df Shortening buffer accessors: rename buffer->in_pos to buffer->i 2010-05-14 22:10:39 -04:00
Behdad Esfahbod 29427c5c51 Shortening buffer accessors: rename buffer->out_length to buffer->out_len 2010-05-14 22:08:22 -04:00
Behdad Esfahbod 6960350be9 Shortening buffer accessors: rename buffer->in_length to buffer->len 2010-05-14 22:07:46 -04:00
Behdad Esfahbod 1b621823f3 Shortening buffer accessors: rename buffer->positions to buffer->pos 2010-05-14 22:05:53 -04:00
Behdad Esfahbod 9d5e26df08 Shortening buffer accessors: rename buffer->out_string to buffer->out_info 2010-05-14 22:03:11 -04:00
Behdad Esfahbod 7e7007a1c9 Shortening buffer accessors: rename buffer->in_string to buffer->info 2010-05-14 22:02:37 -04:00
Behdad Esfahbod 8e6b6bb293 Merge buffer->out_pos and buffer->out_length 2010-05-14 21:58:22 -04:00
Behdad Esfahbod 22f668eb9a Remove the unused BUFFER macro 2010-05-14 21:41:04 -04:00
Behdad Esfahbod 7e53ebe478 Remove the IN_CURGLYPH() macro 2010-05-14 21:38:46 -04:00
Behdad Esfahbod d784da1923 Remove the IN_CURINFO() macro 2010-05-14 21:37:18 -04:00
Behdad Esfahbod 281f59b4fb Remove IN_INFO() and IN_NEXTGLYPH() macros 2010-05-14 21:34:22 -04:00
Behdad Esfahbod 6e489cdf76 Remove the IN_GLYPH() macro 2010-05-14 21:07:35 -04:00
Behdad Esfahbod 01feb74c78 Remove the IN_CLUSTER() macro 2010-05-14 21:00:08 -04:00
Behdad Esfahbod d63a1e089a Remove the IN_MASK() macro 2010-05-14 20:30:07 -04:00
Behdad Esfahbod 89e2834dab Remove the IN_LIGID() macro 2010-05-14 20:26:44 -04:00
Behdad Esfahbod 4a871041f4 Remove IN_COMPONENT() macro 2010-05-14 20:25:04 -04:00
Behdad Esfahbod 27da6dd89a Remove OUT_GLYPH() and OUT_INFO() macros 2010-05-14 20:17:50 -04:00
Behdad Esfahbod cc6ae7ff91 Fix lookahead matching. Oops! 2010-05-14 20:09:48 -04:00
Behdad Esfahbod 3109375b84 Remove POSITION() and CURPOSITION() macros 2010-05-14 19:55:27 -04:00
Behdad Esfahbod d7cfb3b2d1 s/\<context\>/c/g 2010-05-13 14:18:49 -04:00
Behdad Esfahbod f679635893 Don't use variable-length-arrays 2010-05-13 13:34:17 -04:00
Behdad Esfahbod 72071a8afa Add a few more buffer convenience methods 2010-05-13 13:22:24 -04:00
Behdad Esfahbod 11a81612e5 Minor 2010-05-13 00:01:40 -04:00
Behdad Esfahbod 3f93518a63 Improve check for internal symbols 2010-05-12 23:48:40 -04:00
Behdad Esfahbod 357d0f29c4 Make HB_PRIVATE more useful
So we can apply it to class methods also.  Not sure if that works!
2010-05-12 23:46:16 -04:00
Behdad Esfahbod 1d5e780136 Add a few other buffer methods 2010-05-12 23:43:00 -04:00
Behdad Esfahbod d0316a81f5 Add buffer->swap() 2010-05-12 23:34:52 -04:00
Behdad Esfahbod 3b649a38b5 Add check for internal symbols 2010-05-12 23:28:38 -04:00
Behdad Esfahbod eee8598d75 Hide internal symbols 2010-05-12 23:22:55 -04:00
Behdad Esfahbod 8951fc2c82 Add buffer->allocate_lig_id() 2010-05-12 23:13:39 -04:00
Behdad Esfahbod 1ce4dc95db Use bit tricks for HB_DIRECTION_IS_*
We already depend on the exact values of the direction enum
in HB_DIRECTION_REVERSE(), so we may as well use that.
2010-05-12 18:29:25 -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 c3df649f25 Fix comment 2010-05-11 13:54:12 -04:00
Behdad Esfahbod 281f08954a Remove obsolete friend 2010-05-11 11:37:58 -04:00
Behdad Esfahbod 70c9bfd564 Simplify PairSet 2010-05-11 00:36:30 -04:00
Behdad Esfahbod 97e7f8f305 Add CONST_FUNC annotation 2010-05-11 00:11:36 -04:00
Behdad Esfahbod 494d28ad98 Simplify likely() implementation
Shrinks .text by 1%!
2010-05-10 23:50:07 -04:00
Behdad Esfahbod 75651b2087 Fix warnings 2010-05-10 23:44:51 -04:00
Behdad Esfahbod 4c20d8c057 Sprinkle a few strategic likely()'s
Shrinks the code size by some 2% even.
2010-05-10 23:27:54 -04:00
Behdad Esfahbod 69cb28bc13 Remove a few likely()'s 2010-05-10 23:13:08 -04:00
Behdad Esfahbod 24552ecf92 Remove excess sub_format sanitize 2010-05-10 23:08:41 -04:00
Behdad Esfahbod f7adc5e9be Shrink NullPool now that we have accurate size tracking 2010-05-10 22:41:50 -04:00
Behdad Esfahbod 3d44fb6f15 Fix warning 2010-05-10 22:22:54 -04:00
Behdad Esfahbod b5db4f1e4e Clean up NO_INDEX 2010-05-10 22:22:22 -04:00
Behdad Esfahbod fe9bc070e1 Fix awful confusion between lookup format and subtable format
As reported by John Daggett.
2010-05-10 21:39:24 -04:00
Behdad Esfahbod 458ecbb60b Fix tracing order 2010-05-10 21:11:35 -04:00
Behdad Esfahbod 48146e5612 Don't fail sanitize on NULL data 2010-05-10 20:07:56 -04:00
Behdad Esfahbod d2c2ca8faf Fix comment 2010-05-10 19:58:25 -04:00
Behdad Esfahbod b435ab7e29 Fix accessing tables from NULL pointer 2010-05-10 19:51:57 -04:00
Behdad Esfahbod dacebcadae Simplify unions 2010-05-10 19:45:41 -04:00
Behdad Esfahbod fd671e0243 Remove unused macro 2010-05-10 19:02:32 -04:00
Behdad Esfahbod 0eb9fc6e37 Change DEFINE_SIZE_VAR to DEFINE_SIZE_ARRAY 2010-05-10 19:01:17 -04:00
Behdad Esfahbod 596e471aa5 Cleanup DEFINE_SIZE_VAR2 2010-05-10 18:48:29 -04:00
Behdad Esfahbod 33afa4e2dc Minor 2010-05-10 18:35:02 -04:00
Behdad Esfahbod b961518b96 Simplify array access 2010-05-10 18:20:54 -04:00
Behdad Esfahbod 54842374c2 Fix check_struct to check min_size instead of sizeof 2010-05-10 18:13:32 -04:00
Behdad Esfahbod ed07422c33 Further cleanup of sizeof 2010-05-10 18:08:46 -04:00
Behdad Esfahbod a82ef7a893 Remove CastP completely 2010-05-10 17:55:03 -04:00
Behdad Esfahbod 40cbefe858 Remove unnecessary casts 2010-05-10 17:47:22 -04:00
Behdad Esfahbod 09766b1ec5 Make StructAtOffset take a pointer
Is safer.
2010-05-10 17:36:03 -04:00
Behdad Esfahbod bea34c7cbb Further cleanup of DEFINE_SIZE 2010-05-10 17:28:16 -04:00
Behdad Esfahbod 0abcc3b48c Cleanup 2010-05-10 17:04:20 -04:00
Behdad Esfahbod b3651231bf Remove ASSERT_SIZE in favor of the safer DEFINE_SIZE_STATIC 2010-05-10 16:59:57 -04:00
Behdad Esfahbod 569da92bc6 Cleanup ASSERT_SIZE_VAR 2010-05-10 16:46:36 -04:00
Behdad Esfahbod 99bf03459f Whitespace 2010-05-06 19:37:32 -04:00
Behdad Esfahbod 65f46b0033 Simplify DEFINE_NULL_DATA
Using ::min_size.
2010-05-06 19:35:19 -04:00
Behdad Esfahbod e45d3f86f9 Start cleaning up get_size()
So we know when the size is static and when dynamic.
2010-05-06 19:33:31 -04:00
Behdad Esfahbod b157617644 Remove the last of SANITIZE macros: SANITIZE_SELF 2010-05-06 14:48:27 -04:00
Behdad Esfahbod 4f252fedc7 Remove SANITIZE macro 2010-05-06 13:30:23 -04:00
Behdad Esfahbod c2ddfd2d26 Cleanup Value casts 2010-05-06 13:21:54 -04:00
Behdad Esfahbod 41a93d2c1f Remove SANITIZE_WITH_BASE 2010-05-06 12:55:14 -04:00
Behdad Esfahbod f5fab0c718 Remove SANITIZE_MEM 2010-05-06 10:26:52 -04:00
Behdad Esfahbod 4ad2cc5dec Rename check to check_range 2010-05-06 09:24:56 -04:00
Behdad Esfahbod 1cd1e117d0 Remove SANITIZE_ARRAY 2010-05-05 20:15:14 -04:00
Behdad Esfahbod 583d7f9586 Cosmetic 2010-05-05 01:49:22 -04:00
Behdad Esfahbod 705e215268 Minor 2010-05-05 01:40:25 -04:00
Behdad Esfahbod b18eafd0f6 Minor 2010-05-05 01:39:26 -04:00
Behdad Esfahbod 4169710911 Simplify chaining 2010-05-05 01:37:58 -04:00
Behdad Esfahbod 1911b9d21b Remove APPLY_ARG_DEF and APPLY_ARG 2010-05-05 01:32:04 -04:00
Behdad Esfahbod 6c42cddfe5 Port apply to use hb_trace_t 2010-05-05 01:30:48 -04:00
Behdad Esfahbod 969c9705ae Move context_length into apply_context 2010-05-05 01:23:44 -04:00
Behdad Esfahbod 94a23aaeca Move buffer into apply_context 2010-05-05 01:13:09 -04:00
Behdad Esfahbod 63493f956d Move layout_context into apply_context 2010-05-05 01:01:05 -04:00
Behdad Esfahbod fff9aa263d Minor 2010-05-05 00:32:21 -04:00
Behdad Esfahbod 27e302dc8e I keep changing my mind about this 2010-05-05 00:26:16 -04:00
Behdad Esfahbod 39840474af Remove SANITIZE_ARG_DEF and SANITIZE_ARG 2010-05-05 00:23:19 -04:00
Behdad Esfahbod b261e2ad5c Remove trace from sanitize_shallow() 2010-05-05 00:20:16 -04:00
Behdad Esfahbod dfc8cbe854 Add hb_trace_t 2010-05-05 00:19:46 -04:00
Behdad Esfahbod 20e3dd5d29 Make sanitize_depth variable automatic and not passed through function args 2010-05-04 23:32:49 -04:00
Behdad Esfahbod 4a446ac351 Use function template for pass-thru argument 2010-05-04 22:56:20 -04:00
Behdad Esfahbod 98daaf183d Make _hb_sanitize_*() methods of the context object 2010-05-04 22:42:49 -04:00
Behdad Esfahbod bb029af943 Remove SANITIZE_THIS 2010-05-04 15:28:52 -04:00
Behdad Esfahbod 2226fc93d1 Rename SANITIZE_BASE to SANITIZE_WITH_BASE 2010-05-04 15:12:17 -04:00
Behdad Esfahbod 89da1346ec Remove SANITIZE_OBJ 2010-05-04 15:01:45 -04:00
Behdad Esfahbod 4d4cce9626 Remove SANITIZE_THIS2 2010-05-04 14:57:55 -04:00
Behdad Esfahbod 26bfcb64e4 Cosmetic 2010-05-04 14:49:45 -04:00
Behdad Esfahbod be74284673 Remove SANITIZE_THIS3 2010-05-04 14:47:05 -04:00
Behdad Esfahbod fbab9f9bd8 Remove SANITIZE_BASE2 2010-05-04 14:42:10 -04:00
Behdad Esfahbod 73c7dbf7f5 Remove SANITIZE2 2010-05-04 14:40:55 -04:00
Behdad Esfahbod c9f14687a3 Remove the NEUTER macro, move code to a method 2010-05-04 14:38:08 -04:00
Behdad Esfahbod 30fa2821c2 Make internal method private 2010-05-04 14:28:18 -04:00
Behdad Esfahbod ce5694c796 [main] Recognize Apple SFNTs 2010-05-04 14:10:18 -04:00
Behdad Esfahbod 710500a93e Comment new SFNT tags 2010-05-03 23:11:16 -04:00
Behdad Esfahbod 64d3fc8d0d Cosmetic: Rename HB_LIKELY/HB_UNLIKELY to likely/unlikely 2010-05-03 22:51:19 -04:00
Behdad Esfahbod fa3b3d5844 Mark a couple functions as inline 2010-05-03 22:47:22 -04:00
Behdad Esfahbod 6b84198f9d Merge remote branch 'jrmuizel/master' 2010-05-03 22:46:52 -04:00
Jeff Muizelaar eaf29edb8f HB_UNUSED is unneeded on static inline functions 2010-05-03 22:27:56 -04:00
Jeff Muizelaar 4ce578ed36 Include the tags from the Apple specification for TrueType fonts 2010-05-03 15:03:53 -04:00
Behdad Esfahbod 631d10b728 Remove unused method 2010-05-02 21:14:21 -04:00
Behdad Esfahbod f0abcd6940 Whitespace 2010-05-02 18:14:25 -04:00
Behdad Esfahbod a8d960bd26 [GPOS] Speedup apply_value() 2010-04-29 14:31:56 -04:00
Behdad Esfahbod 2cd1ea4411 [ft] Disallow getting the entire font data with tag=0 2010-04-29 14:16:43 -04:00
Behdad Esfahbod 33d13fdda9 Rename HB_GNUC_UNUSED -> HB_UNUSED 2010-04-29 13:56:44 -04:00
Behdad Esfahbod 7d3a126334 Define HB_FUNC for portability to non-gcc 2010-04-29 13:54:01 -04:00
Behdad Esfahbod fa030175ca [sanitize] Make debug code always available to the compiler
Such that we don't break debug build all the time.
2010-04-29 13:48:26 -04:00
Behdad Esfahbod fde6f5bd68 Convert to uppercase in hb_ot_tag_from_language() 2010-04-29 04:41:41 -04:00
Behdad Esfahbod 6f729b45b0 More contour point use 2010-04-29 03:59:06 -04:00
Behdad Esfahbod 3840b6b505 [gdef] Fix delta scale 2010-04-29 03:48:27 -04:00
Behdad Esfahbod 4ac6cc284b [gdef] Fix rounding 2010-04-29 03:48:11 -04:00
Behdad Esfahbod b52fbb1bab [gdef] Implement getting contour point 2010-04-29 03:47:00 -04:00
Behdad Esfahbod 4c5fbae011 Make sure mirroring is done in original direction
Reported by Jonathan Kew.
2010-04-29 03:39:39 -04:00
Behdad Esfahbod ce23c9234b Use BCP47 private-use tags for OpenType tag language string mapping 2010-04-29 03:31:03 -04:00
Behdad Esfahbod eaf1d9a46c Minor 2010-04-29 03:11:32 -04:00
Behdad Esfahbod 3a4784fe88 Fix bug in hb_language_from_string()
Reported by Jonathan Kew.
2010-04-29 02:58:38 -04:00