Simon Cozens
2e0193d741
Add more cast spaces
2020-11-17 09:05:40 +00:00
Simon Cozens
8e1bedc50b
Keep phase names
2020-11-17 09:05:40 +00:00
Simon Cozens
f19018da41
Smaller issues from review
2020-11-17 09:05:40 +00:00
Simon Cozens
8b3b835a0a
Trace normalization and preprocessing stages
2020-11-17 09:05:40 +00:00
Nathan Willis
eb10ef46aa
[Docs] Add GTK-Doc comments for hb-ot-font and hb-ot-shape.
2020-09-26 09:46:15 +02:00
Ebrahim Byagowi
d0e2addd43
minor
2020-07-18 22:16:02 +04:30
Sebastian Rasmussen
a373e16131
[ot-shape] Free shape plan maps upon error creating data ( #2497 )
2020-06-27 20:09:45 -07:00
Ebrahim Byagowi
f9070cfef8
Run morx if run is horizontal or GSUB doesn't exist
2020-01-25 00:36:36 +03:30
Dominik Röttsches
298c46afbf
Only prefer AAT morx for horizontal layout
...
Fixes #2124 .
2020-01-24 19:48:36 +03:30
Dominik Röttsches
66dfd605b5
Fix duplicate check in hb_ot_rotate chars
...
Fixes #2099 . Fix indentation in mirroring section as well.
2020-01-13 18:20:12 +03:30
Evgeniy Reizner
b79ceac3c6
Prefer UINT_MAX instead of uint overflow.
...
Also, prefer HB_FEATURE_GLOBAL_START and HB_FEATURE_GLOBAL_END.
2019-12-15 11:46:05 -08:00
Behdad Esfahbod
f47cbade18
[aat] Adjust fallback positioning logic
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1528
Wish could add a test...
$ ./hb-view --font-file Thonburi.ttc --unicodes U+0E17,U+0E35,U+0E48,U+0E4A --shaper ot
▃
▂▃▃▄▃▂▁▊ ▃ ▃ ▎
▗ ▅▆▆▅ ▌ ▆▆▅▆▙ ▌▗
▗ ▙ ▂ ▎▗ ▟
▅▆▆▆▇▇▇▇▇▇▇▆▆▅▄ ▇▅▅▅ ▙▆▇
▁▁▂▁ ▁▁
▖ ▖ ▂▂
▉ ▁ ▆▆ ▌ ▆ ▙▄ ▁▁
▙ ▉ ▃▖ ▟
▊ ▉ ▅▟ ▗▄
▊ ▉ ▗ ▏ ▇▆
▊ ▟ ▉ ▆ ▖
▊ ▉ ▌ ▂
▊ ▏ ▉ ▌ ▗ ▄▟
▊ ▆
2019-12-09 18:11:04 -06:00
Behdad Esfahbod
2dc20e632e
Implement fallback vertical shaping from Firefox
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/355
2019-12-05 15:28:42 +00:00
Behdad Esfahbod
0414341ac5
Prefer AAT shaping over OT if both available
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1529
2019-12-05 11:26:39 +00:00
Behdad Esfahbod
1a1d64bc6f
If applying morx, apply kern table even if GPOS is present and has kern
...
Since we won't be applying GPOS if morx...
To be adjusted as I receive more information from Ned. But for now
fixes this:
$ ./hb-shape GillSans.ttc Ty
[T=0+1109|y=1@-128,0+769]
Fixes https://github.com/harfbuzz/harfbuzz/issues/1982 for now.
2019-10-31 12:51:40 -07:00
Ebrahim Byagowi
a0b4ac4dce
Turn 8 spaces to tab across the project
...
According to the current code style of the project
2019-08-27 02:40:41 +04:30
Khaled Hosny
40aef1b473
[ot-shape] Keep horizontal_features array sorted
2019-08-16 02:17:32 +02:00
Khaled Hosny
da5118da77
[ot-shape] Enable abvm/blwm features by default
...
Core Text seems to apply them to Latin text, but Uniscribe doesn’t.
See https://github.com/harfbuzz/harfbuzz/pull/1908#issuecomment-521819343
2019-08-16 02:17:32 +02:00
Khaled Hosny
2164bd6f29
[ot-shape] Enable dist feature by default ( #1908 )
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1907
2019-08-16 00:28:41 +02:00
Behdad Esfahbod
cd65305b05
[config] Don't disable emoji sequences in HB_TINY
...
It makes sense to disable this code these if editing is not needed.
However, this is also necessary to correctly display emoji sequences
in right-to-left direction. For that reason, don't auto-disable it.
2019-06-26 14:57:48 -07:00
Behdad Esfahbod
5130c90ac0
[config] Add HB_NO_EMOJI
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-26 14:29:39 -07:00
Behdad Esfahbod
2804790bce
[config] Add dependency
2019-06-26 13:38:14 -07:00
Behdad Esfahbod
12092a46d8
[config] Rename HB_NO_SHAPE_AAT to HB_NO_AAT_SHAPE
2019-06-26 13:31:01 -07:00
Behdad Esfahbod
7aad53657e
[config] Add HB_NO_OT_SHAPE / HB_NO_OT
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-26 13:21:03 -07:00
Behdad Esfahbod
f4de0c7754
[config] Disable AAT map
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-19 17:09:55 -07:00
Behdad Esfahbod
d8bf6723a1
[config] Disable more legacy kerning
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-19 17:04:16 -07:00
Behdad Esfahbod
43d7048d59
[config] More trak disabling
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-19 17:02:32 -07:00
Behdad Esfahbod
d84932ba50
[config] add HB_NO_OT_SHAPE_FRACTIONS, enabled in HB_LEAN
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-19 16:57:48 -07:00
Behdad Esfahbod
eaf4a7364c
[config] Minor trak disable
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-19 16:51:23 -07:00
Behdad Esfahbod
588697afd0
[config] Add HB_NO_OT_KERN, enabled by HB_MINI / HB_NO_LEGACY
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-19 16:24:51 -07:00
Behdad Esfahbod
231d025788
[config] Don't compile AAT API if HB_NO_AAT
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-06-18 14:25:52 -07:00
Ebrahim Byagowi
9e7c9c3adb
Fix -Wunused-function on HB_NO_SHAPE_AAT
...
We should add a bot for it
Part of #1652
2019-05-14 15:58:51 +04:30
Behdad Esfahbod
809c587083
[config] Better compile away morx/kerx/trak
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-05-13 14:45:51 -07:00
Behdad Esfahbod
799c6a5081
[config] Add some
2019-05-10 23:56:40 -07:00
Behdad Esfahbod
2c93f0dee3
Add HB_NO_AAT
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-05-10 23:35:10 -07:00
Behdad Esfahbod
41248cce0e
Remove MIN/MAX in favor of hb_min/hb_max
2019-05-07 20:54:31 -07:00
Eric Muller
30d7c40f8c
Add a flag to hb_buffer_t to prevent the insertion of dotted circles on incorrect character sequences.
...
Current behavior unchanged if this flag is not set (and it isn't by default).
2019-03-11 16:06:41 -07:00
Behdad Esfahbod
fd0889f903
Comment
2019-01-24 16:12:52 +01:00
Behdad Esfahbod
9f31417733
Form cluster for Emoji sub-region tag sequences
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1556
2019-01-24 16:08:33 +01:00
Behdad Esfahbod
3ecda71041
Adjust mark offsets when zeroing from fallback mark positioning code
...
Adjust tests.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1532
2019-01-24 12:28:24 +01:00
Ebrahim Byagowi
e412008599
Remove redundant void from C++ sources ( #1486 )
2018-12-17 13:01:01 -05:00
Behdad Esfahbod
000d4b128e
Make shaper's override_features() override user features as well
...
The override_features is used to override features that are normally
discretionary features, but in a specific shaper are for various
reasons desired to be bolted on or off, because they've been used
for inherent shaping. As such, it makes sense that they also
override user features. Ie. if user turned 'liga' on, we don't
want Khmer shaping to become broken... Or turn 'clig' off...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1310
2018-11-29 12:32:47 -05:00
Behdad Esfahbod
748962264a
[aat] Disable mark advance zeroing if kern table has state-machines
...
Geeza Pro for example, relies on that for fancy mark positioning.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1405
2018-11-23 11:10:17 -05:00
Behdad Esfahbod
199a0f7b41
[ot-shape] Simplify logic
2018-11-22 17:31:07 -05:00
Behdad Esfahbod
014e4980ed
Move
2018-11-22 16:21:49 -05:00
Behdad Esfahbod
62890dee18
[aat] Zero mark advances if decided so even if there's cross-kerning
...
Cross-kerning can only take care of positioning vertically. It doesn't
adjust mark advance...
2018-11-22 16:20:29 -05:00
Behdad Esfahbod
a201fa74cd
[aat] Tweak fallback positioning logic when applying morx
...
Such that for Indic-like scripts (eg. Khmer), we don't do any fallback mark
advance-zeroing / positioning, but we do for Latin, etc. Reuses preferences
of our script-specific OpenType shapers for those.
Fixes regression: https://github.com/harfbuzz/harfbuzz/issues/1393
Which means, fixes again: https://github.com/harfbuzz/harfbuzz/issues/1264
While not regressing: https://github.com/harfbuzz/harfbuzz/issues/1357
2018-11-22 15:52:29 -05:00
Behdad Esfahbod
7a97f70740
Don't apply GPOS if applying morx
...
That's what Apple does, and it wouldn't degrade our OpenType performance.
Part of https://github.com/harfbuzz/harfbuzz/issues/1348
2018-11-16 14:46:40 -08:00
Behdad Esfahbod
eafd515639
Prefer morx table if GSUB is empty (no scripts)
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1348
2018-11-16 14:45:56 -08:00
Behdad Esfahbod
ce5da0f36a
[shaper] Rewrite shaper data code to be more template-driven than macro-driven
2018-11-16 02:52:20 -05:00
Behdad Esfahbod
c221dc0ba7
[ot-shape] Move code around
2018-11-14 19:57:19 -05:00
Behdad Esfahbod
3c3eb5ea9c
[aat] Disable fallback mark advance zeroing and positioning if morx applied
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1357
2018-11-13 21:10:10 -05:00
Behdad Esfahbod
cc8428756a
[shape-plan] Cache shape plans with variations based on variation indices
2018-11-12 18:48:10 -05:00
Behdad Esfahbod
1082338525
[shape-plan] Only use shape-plan key to initialize hb_ot_shape_plan_t
...
Such that we don't accidentally use info not in the cache key.
2018-11-12 18:05:02 -05:00
Behdad Esfahbod
3e284e02c2
[shape-plan] Minor
2018-11-11 22:51:34 -05:00
Behdad Esfahbod
f521a28b4a
Embed hb_ot_shape_plan_t into hb_shape_plan_t
...
No other shaper will need shape_plan_data, by definition. So, remove
abstraction layer and always create hb_ot_shape_plan_t as part of
hb_shape_plan_t.
2018-11-11 21:54:10 -05:00
Behdad Esfahbod
1beacdded9
Minor
2018-11-11 16:35:28 -05:00
Behdad Esfahbod
385f78b312
[aat] Remove deleted-glyhs after applying kerx/kern
...
Finally: Fixes https://github.com/harfbuzz/harfbuzz/issues/1356
Test case:
$ ./hb-shape GeezaPro.ttc -u U+0628,U+064A,U+064E,U+0651,U+0629
[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656]
The mark positioning (kern table CrossStream kerning) only works if deleted
glyph (as result of ligation) is still in stream and pushed through the
state machine.
2018-11-07 17:20:47 -05:00
Behdad Esfahbod
ca23567f41
Disable fallback mark positioning if kern table has cross-stream kerning
...
Happens even if the cross-stream kerning is for cursive attachment only. Oh well..
2018-11-07 16:19:51 -05:00
Behdad Esfahbod
5cf6f94dfd
Don't apply both kerx and kern
...
Ouch!
2018-11-07 16:07:22 -05:00
Behdad Esfahbod
41cff7afc9
Minor
2018-11-07 16:05:36 -05:00
Behdad Esfahbod
649cc3ef27
[kerx] Don't disable crossKerning if kern feature is off
2018-11-07 14:07:13 -05:00
Behdad Esfahbod
0c3b061ac2
[kern] Apply erlier, where GPOS/kerx are applied
2018-11-07 13:58:41 -05:00
Behdad Esfahbod
914b595f25
[ot-face] Include hb-ot-face directly in hb_face_t
...
Simplifying access coming next.
2018-11-05 23:10:12 -05:00
Behdad Esfahbod
17335a8161
Clean up buffer->swap_buffers() calls
...
That function checks for buffer->successful already. No need
to check at call site.
2018-11-04 02:25:07 -05:00
Behdad Esfahbod
095f5add0b
[kern] Push apply loop to each subtable
2018-11-02 13:23:54 -04:00
Behdad Esfahbod
80d9a427cf
[docs] Document remaining sections
2018-10-27 04:58:32 -07:00
Behdad Esfahbod
39bd07aed5
Fix bunch of unused parameter warnings
...
Show up with gcc -O0.
There's a few more but those are functions that need to be filled in.
Maybe this is a lost battle...
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
f33ad6d692
[aat] Fix up previous commit and add files
2018-10-23 14:31:51 -07:00
Behdad Esfahbod
ffe3478448
[aat] Allow enabling/disabling features
...
Only works at entire-buffer range, not sub-ranges.
Test with:
$ hb-shape Zapfino.dfont Zapfino
[Z_a_p_f_i_n_o=0+2333]
$ hb-shape Zapfino.dfont Zapfino --features=-dlig
[Z=0+416|a=1@-21,0+264|p_f=2+433|i=4+181|n=5+261|o=6+250]
$ hb-shape Zapfino.dfont Zapfino --features=+dlig
[Z_a_p_f_i_n_o=0+2333]
Fixes https://github.com/harfbuzz/harfbuzz/issues/1303
2018-10-23 14:14:03 -07:00
Behdad Esfahbod
76324d95ca
Shift code around
2018-10-23 13:09:30 -07:00
Behdad Esfahbod
cf92d6579e
[trak] Allow disabling tracking for ranges of text
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1303
2018-10-23 03:10:56 -07:00
Ebrahim Byagowi
22ecefd88e
Make tracking optout possible using 'trak' ot feature
...
So '--features=-trak' or 'font-feature-settings: 'trak' 0;' can prevent
applying of tracking if used.
2018-10-23 02:57:55 -07:00
Behdad Esfahbod
0b9d60e1a1
[aat] Apply kerx if GPOS kern was not applied
...
Ned tells me this is what Apple does.
2018-10-11 13:26:58 -04:00
Behdad Esfahbod
b59a428af0
Minor
2018-10-11 13:24:17 -04:00
Behdad Esfahbod
d6a12dba6d
[trak] Fix, and hook up
...
Works beautifully! Test coming.
2018-10-11 11:10:06 -04:00
Behdad Esfahbod
34caadc5c7
Ugh. Re-enable accidentally disabled GPOS
2018-10-10 22:17:07 -04:00
Behdad Esfahbod
504cb68fc9
Disable mark advance zeroing as well as mark fallback positioning if doing kerx
2018-10-10 21:29:46 -04:00
Behdad Esfahbod
60f86d32d7
[kerx] Don't loop over kerning subtables if kerning disabled
2018-10-10 18:10:05 -04:00
Behdad Esfahbod
38a7a8a89e
Allow HB_OPTIONS=aat to prefer AAT tables over OT
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/322
2018-10-10 17:44:46 -04:00
Behdad Esfahbod
7727e73756
[kerx] Actually hook up, and fix crash
2018-10-10 13:24:51 -04:00
Behdad Esfahbod
a03850a356
Fix GPOS/kern interaction
...
Oops. Was checking for kern feature in GSUB, not GPOS.
2018-10-10 10:57:28 -04:00
Behdad Esfahbod
d1be805e78
More rewriting plan compile
...
Hopefully more clear.
2018-10-10 10:49:45 -04:00
Behdad Esfahbod
961ab46b24
More reshuffle plan compile
2018-10-10 10:42:10 -04:00
Behdad Esfahbod
2091b509e3
[kerx] Hook up to shaper
2018-10-10 10:41:08 -04:00
Behdad Esfahbod
e655fd38cf
Apply TT or fallback kerning when GPOS does not have kern feature
...
Previously we only did if there was no GPOS whatsoever. This applies
to Arial, Times New Roman, etc in Win7. Was not kerning before. It
is now.
2018-10-10 10:19:07 -04:00
Behdad Esfahbod
53e5594500
[kerx] Implement Format0 apply()
...
Not hooked up to be called yet.
2018-10-09 22:35:22 -04:00
Behdad Esfahbod
a51958819f
Apply TrueType/OpenType kern table when GPOS kern feature is not available
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/250
2018-10-08 23:57:45 -04:00
Behdad Esfahbod
09ad2613c8
Separate fallback kern vs mark positioning
2018-10-08 23:30:24 -04:00
Behdad Esfahbod
c0d3bf1baf
Minor
2018-10-08 16:32:44 -04:00
Behdad Esfahbod
94368855c6
Remove some code
...
We use scratch-flags to short-circuit this function. No need for previous
early loop.
2018-10-07 18:52:48 -04:00
Behdad Esfahbod
71b65eb27d
Add API for setting invisible-codepoint
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1216
New API:
hb_buffer_set_invisible_codepoint()
hb_buffer_get_invisible_codepoint()
hb-shape / hb-view --invisible-codepoint
2018-10-07 18:43:26 +02:00
Behdad Esfahbod
a62f37d6fa
Change vendor features from Harf/Buzz to HARF/BUZZ
...
a01194aaf4 (commitcomment-30772041)
"The tag space of tags consisting of four uppercase letters (A-Z) with no punctuation,
spaces, or numbers, is reserved as a vendor space. Font vendors may use such tags to
identify private features."
2018-10-05 02:49:29 +02:00
Behdad Esfahbod
a01194aaf4
Enable two OpenType features, 'Harf' and 'Buzz'
...
One early, before script-specific features, one late, after. Allows font
developers to detect us and behave differently if needed.
2018-10-04 13:00:37 +02:00
Behdad Esfahbod
14ff3cbe0f
Apply morx if there's no GSUB!
2018-10-04 11:34:21 +02:00
Behdad Esfahbod
b710ea4fde
Clean Fitzpatrick hack
2018-10-03 21:17:59 +02:00
Behdad Esfahbod
03fb6dd4c7
Rewrite grapheme-formation in terms of new work
...
Also, don't attach ZWNJ to previous cluster. Closer to Unicode graphemes.
2018-10-03 21:11:40 +02:00
Behdad Esfahbod
3b78318510
[emoji] Mark emoji contination sequences as continuation
...
This adds a new grapheme bit. Not used yet.
Part of https://github.com/harfbuzz/harfbuzz/issues/1159
2018-10-03 20:19:42 +02:00
Behdad Esfahbod
123326e20a
Dotted-circle all marks, not just non-spacing, at text beginning
2018-10-03 20:19:42 +02:00
Behdad Esfahbod
0a371fee4d
Minor
2018-10-02 14:48:39 +02:00