src/hb-ot-shape.cc


Log

Author Commit Date CI Message
Behdad Esfahbod e5a01efd 2025-03-13T02:42:43 [aat] Put back one set of compiled map in the plan Use it if there's no user features. Reduces mallocs.
Behdad Esfahbod 75187186 2025-02-12T11:39:14 [buffer] Add HB_BUFFER_CLUSTER_LEVEL_GRAPHEMES https://github.com/harfbuzz/harfbuzz/discussions/5026#discussioncomment-12168668
Behdad Esfahbod ff76244e 2025-03-09T17:23:18 [aat/morx] Delete deleted glyphs again But also check for default-ignorable bit this time.
Behdad Esfahbod c6972ac6 2025-03-07T15:29:48 [aat] Towards removing special deleting of 0xFFFF See https://github.com/harfbuzz/harfbuzz/discussions/5118 Remove the removal. Depend on the default_ignorable flag to hide them later. Test output adjusted.
Khaled Hosny 694ffa87 2025-02-20T23:56:59 10.3.0
Khaled Hosny cf336f17 2025-02-10T14:15:25 [shape-plan] Rename hb_ot_shape_plan_get_features to get_feature_tags Simplify the API by returning only feature tags. The users of this API would be interested only in feature enabled by default and whether the feature is globally or partially enabled wouldn’t be of much interest in that case. For user features, the user of the API already have full access to them.
Khaled Hosny a7d7715f 2025-02-02T23:06:11 [shape-plan] Add hb_ot_shape_plan_get_features This should get the features on a shape plan after executing it. Initially I wanted to return an array of tags, but then there can be user features that are not enabled globally, so I thought returning hb_feature_t with value and range would be better. There is a TODO since I couldn’t figure out how to get the value and range from the feature mask. But also it may be overkill and a simple boolean indicating wither it is a global feature or not would be enough. I wounder also what should happen to non-user features that are applied selectively, like init or medi, does ot make sense to indicate whether they are global or not? This is inspired by the discussion in: https://github.com/fontforge/fontforge/pull/5522#pullrequestreview-2574321449, but it might be useful to other HarfBuzz users.
Behdad Esfahbod ffae5b04 2025-02-09T04:39:32 [ot-font/trak] Move trak application to ot-font instead of ot-shape This is what CoreText does. Fixes https://github.com/harfbuzz/harfbuzz/issues/5049
Behdad Esfahbod f840480f 2025-02-09T04:27:20 [trak] Remove leftover
Behdad Esfahbod 1150d4bf 2025-02-09T04:16:57 [trak] Remove support for disabling using pseudo-font-feature Fixes https://github.com/harfbuzz/harfbuzz/issues/5052
Behdad Esfahbod 691cc939 2025-02-06T20:08:16 [trak] Fix build without STAT
Behdad Esfahbod f394206b 2025-02-06T19:48:56 [ot-shape] Only apply trak'ing if STAT table present
Behdad Esfahbod c7ef6a2e 2024-09-25T19:42:40 Remove the hack re variation-selectors Instead of abusing an unused Gen_Cat value, use existing facilities to remember variation selectors. Addresses https://github.com/RazrFalcon/rustybuzz/pull/134#issuecomment-2374894164
Behdad Esfahbod 5e5cd10e 2024-09-22T12:36:51 Don't make variation-selectors default-ignorable if not-found set https://github.com/harfbuzz/harfbuzz/pull/4863#issuecomment-2366908261
Behdad Esfahbod b94a39d7 2024-09-22T08:23:34 Follow up to variation-selector-not-found glyph Addresses https://github.com/harfbuzz/harfbuzz/pull/4529#discussion_r1769638033 I'm not sure if this is an improvement. By leaving the var-selector as default-ignorable, ligatures can form around it, and the resulting cluster won't make it clear *which* base+var-selector could not be resolved... That doesn't quite help font fallback the way we want. Putting up for review.
Behdad Esfahbod 3e06b705 2024-06-06T12:04:37 [ot-map] Make shaper categorizer independent of shape planner We might want to use it in the subset closure.
Behdad Esfahbod 3d86b360 2024-03-22T10:37:39 [shape] Fix syntax error under some configs Fixes https://github.com/harfbuzz/harfbuzz/issues/4635
Bruce Mitchener f380a328 2023-08-25T14:01:01 Fix some typos.
Behdad Esfahbod 35a026c8 2023-07-30T11:28:59 [shape] Unsafe-to-concat around fraction slash
Behdad Esfahbod f19ca24a 2023-07-30T11:26:11 Revert "Revert "Require numerator and denominator in auto fraction"" This reverts commit 8fe506e153c530affd529e7175e813c3a878faed.
Behdad Esfahbod 8fe506e1 2023-07-30T10:43:28 Revert "Require numerator and denominator in auto fraction" This reverts commit f3e86937df345d7709de879af1d1a1502e84e1e9.
David Corbett f3e86937 2023-07-30T08:28:23 Require numerator and denominator in auto fraction
Behdad Esfahbod 76de3451 2023-07-15T15:00:23 [ot-shape] Short-circuit spaces as well
Behdad Esfahbod 765da4db 2023-07-15T14:55:36 [ot-shape] Minor short-circuit
Behdad Esfahbod 7b8e0bbb 2023-07-15T14:53:15 [ot-shape] Minor short-circuit
Behdad Esfahbod de2c1073 2023-07-02T16:44:48 [ot-map] Speed up for default shaper Sort late, the reduced number of features.
Behdad Esfahbod db4c8747 2023-01-09T21:32:15 Revert "Revert "[aat] Support feature ranges"" This reverts commit 6a7a38521f940216f1e9e2fa2bf22f7b45ce2aef.
Behdad Esfahbod 6a7a3852 2023-01-09T21:29:19 Revert "[aat] Support feature ranges" This reverts commit 1b7994cb3a3c35f3618d7f40c7289496bdab6f06. Broke Zapfino with partial ligature disabling. Debugging.
Behdad Esfahbod adfd5dd7 2023-01-09T21:18:12 Fix TINY build
Behdad Esfahbod 1b7994cb 2023-01-09T19:38:50 [aat] Support feature ranges The hard way... A bit uglier than I liked it to be, but is proper at least. Fixes https://github.com/harfbuzz/harfbuzz/issues/4020
Behdad Esfahbod 622a6869 2023-01-09T18:14:40 Revert "Revert "Revert "[aat] Allow disable feature ranges""" This reverts commit 5202053c2c5fb2c8af9704e690b25a26bf2a0295.
Behdad Esfahbod 5202053c 2023-01-09T17:29:43 Revert "Revert "[aat] Allow disable feature ranges"" This reverts commit 82b3e8af69b09fd908d1cd27b669234328d4a500. Another try. Fixes https://github.com/harfbuzz/harfbuzz/issues/4020
Behdad Esfahbod 82b3e8af 2023-01-09T17:28:52 Revert "[aat] Allow disable feature ranges" This reverts commit 24a4d397bae6b614215086c85a714dc789af3e7f. This was broken.
Behdad Esfahbod 24a4d397 2023-01-09T17:26:08 [aat] Allow disable feature ranges Fixes https://github.com/harfbuzz/harfbuzz/issues/4020 This is a hack. To implement this properly we need to treat runs with different features as independent runs for running the state machine, as the subtable flags might be different. That would be a significant change to our internal implementation.
Behdad Esfahbod 73046d53 2022-11-24T13:49:29 [shaper] Disable dumber shaper if no AAT
Behdad Esfahbod ed43bc51 2022-11-20T13:10:19 [buffer] Move delete_glyphs_inplace() here
Behdad Esfahbod d65af602 2022-10-15T14:26:02 [shape] Adjust Grapheme clusters for Katakana voiced sound marks Fixes https://github.com/harfbuzz/harfbuzz/issues/3844
Behdad Esfahbod a722b3e6 2022-07-30T14:33:33 [shape] Only add any unsafe-to-concat flag if requested Previously it was confusing as random incorrect flags were produced.
Behdad Esfahbod f43dadb8 2022-07-30T10:23:03 Rename kashida -> tatweel
Behdad Esfahbod d277addb 2022-07-30T10:10:21 [buffer] Add HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_KASHIDA
Behdad Esfahbod 915e12cc 2022-07-29T13:55:39 Prototype glyph flag safe-to-kashida Fixes https://github.com/harfbuzz/harfbuzz/issues/3721
Behdad Esfahbod d57ce300 2022-07-17T21:56:56 [ot-shape] Pass reference to props instead of pointer Since cannot be nullptr.
Behdad Esfahbod cc7ebb0f 2022-06-04T05:42:58 Remove remaining mention to complex shapers in the code https://github.com/harfbuzz/harfbuzz/pull/3628#issuecomment-1146248037
Behdad Esfahbod 5bfb0b72 2022-06-03T02:56:41 Rename s/shape-complex/shaper/g
Behdad Esfahbod 6d9e94d2 2022-06-03T02:48:34 s/hb_ot_shape_complex_categorize/hb_ot_shaper_categorize/g
Behdad Esfahbod 44a7b3b7 2022-06-03T02:42:34 s/ot_complex_shaper/ot_shaper/g
Behdad Esfahbod e246723f 2022-06-01T04:54:18 [shape] Fail shaping internally if buffer ops exceeded
Behdad Esfahbod 8575a8f5 2022-04-21T11:14:09 Add _hb_codepoint_is_regional_indicator()
Behdad Esfahbod c1ee7d28 2022-04-20T13:38:05 Typo Co-authored-by: Khaled Hosny <khaled@aliftype.com>
Behdad Esfahbod 4d48fae4 2022-04-20T11:35:19 Enforce Regional_Indicators native direction to LTR And undo the morx direction reversal change introduced in https://github.com/harfbuzz/harfbuzz/pull/3315 23159084b43c1ce429d9e98035bf845919fd8a89 This fixes original bug https://github.com/harfbuzz/harfbuzz/issues/3314 And the reversion in morx code fixes regressions: https://github.com/harfbuzz/harfbuzz/issues/3528 https://github.com/harfbuzz/harfbuzz/issues/3535 Supersedes: https://github.com/harfbuzz/harfbuzz/pull/3529
Behdad Esfahbod 94f5c630 2022-03-28T11:25:44 [aat] Remove morx deleted-glyphs before GPOS processing Fixes new Apple Color Emoji glyphs sequences rendering. Fixes https://github.com/harfbuzz/harfbuzz/issues/3512
Behdad Esfahbod 3122c2cd 2021-12-04T19:50:33 [buffer] Add HB_GLYPH_FLAG_UNSAFE_TO_CONCAT Fixes https://github.com/harfbuzz/harfbuzz/issues/1463
luz paz e2e30506 2022-01-16T07:00:53 Fix various typos Found via `codespell -q 3 -S ./perf/texts -L actualy,ba,beng,fo,gir,inout,nd,ot,pres,ro,te,teh,timne`
Behdad Esfahbod bea5369c 2022-01-04T10:52:05 [buffer] Rename swap_buffers() to sync()
Behdad Esfahbod d1e7df5c 2022-01-04T07:32:04 [buffer] Add enter()/leave() pair around shape()
Behdad Esfahbod 43be5ba4 2022-01-04T07:26:53 [buffer] Group shape-related members together
Behdad Esfahbod 23159084 2021-12-10T15:00:16 [morx] Reverse graphemese, not whole buffer Fixes https://github.com/harfbuzz/harfbuzz/issues/3314 Supersedes https://github.com/harfbuzz/harfbuzz/pull/3315
Behdad Esfahbod 53eebc7c 2021-12-08T08:32:41 [CONFIG] Add HB_NO_VERTICAL
Behdad Esfahbod d58f1685 2021-10-04T08:40:24 [ot-shape] Tweak table order some more; apply GPOS with morx During 5bc05ba155 accidentally GPOS was disabled when morx was enabled. Fix that. Fixes https://github.com/harfbuzz/harfbuzz/issues/2757#issuecomment-933531978
Behdad Esfahbod 5a1a6f1f 2021-09-14T07:14:56 [ot-shape] Enabled two more features: 'Harf' and 'Buzz' Considered 'required', as opposed to existing 'HARF' and 'BUZZ', consider them discretionary. See discussion in https://github.com/harfbuzz/harfbuzz/issues/3200
Behdad Esfahbod f0de40dd 2021-08-23T23:52:17 Whitespace
Behdad Esfahbod 33c82c7d 2021-08-22T22:31:39 [ot-shape] Fix unused-var error when building without AAT Fixes https://github.com/harfbuzz/harfbuzzjs/issues/45
Behdad Esfahbod 368e9578 2021-08-05T10:16:13 [ot-shape] Add comment re `vert` feature
Behdad Esfahbod 79e8b306 2021-07-16T15:06:10 [ot-shape] Fix application of kern table if GPOS kern is missing Was broken sometime after we implemented kerx and tweaking it. Fixes https://github.com/harfbuzz/harfbuzz/issues/3043
Behdad Esfahbod a623446a 2021-07-12T16:55:54 [shape] Remove stray clear_output() call in hb_shape()
Behdad Esfahbod 1cb0ca1f 2021-07-12T16:52:31 Whitespace
Behdad Esfahbod 09696148 2021-06-26T08:52:53 [ot-shape] Rewrite loop without foreach_grapheme() We were not using the graphemes, and that's costlier than just for().
Khaled Hosny c3be28ea 2021-06-23T17:39:23 [ot-shape] Numeric runs native direction is LTR See inline comments. Slightly modified version of the code from Jonathan Kew on the linked issue. Fixes https://github.com/harfbuzz/harfbuzz/issues/501
Behdad Esfahbod 93e6a9bc 2021-06-15T15:38:49 Revert "Remove unneeded buffer clear_output / remove_output calls" This reverts commit 06175b71433bc42edc07d342e6354035e37fb5fd. One of the sanitizers is failing. Pushing again as PR to debug. I have suspicions.
Behdad Esfahbod 06175b71 2021-06-15T14:33:27 Remove unneeded buffer clear_output / remove_output calls Made sure clear_output is always paired with swap_buffers. Trying to see if we can move towards RAII-like buffer iterators instead of the buffer keeping an iterator internally.
Behdad Esfahbod 2b0ced28 2021-06-09T19:06:31 Cluster Regional_Indicator pairs (aka emoji flags) Fixes https://github.com/harfbuzz/harfbuzz/issues/2265
Behdad Esfahbod 5bc05ba1 2021-06-13T05:28:20 Prefer GPOS over kerx, if GSUB was applied Fixes https://github.com/harfbuzz/harfbuzz/issues/3008
Jonathan Kew bbc5fc37 2021-05-13T11:39:09 [aat] If shaping via morx, don't adjust mark positioning when zeroing widths.
Behdad Esfahbod e6be9eb4 2021-03-15T14:12:10 [buffer] HB_NODISCARD output_info()
Behdad Esfahbod 9fcba109 2020-06-28T20:30:39 [buffer] Make swap_buffers() copy rest
Simon Cozens fd8f4ffc 2020-09-18T16:37:22 Trace reorder, not normalize
Simon Cozens 2e0193d7 2020-09-18T16:28:29 Add more cast spaces
Simon Cozens 8e1bedc5 2020-09-18T16:25:43 Keep phase names
Simon Cozens f19018da 2020-09-17T15:08:32 Smaller issues from review
Simon Cozens 8b3b835a 2020-09-17T14:27:31 Trace normalization and preprocessing stages
Nathan Willis eb10ef46 2019-04-22T19:22:24 [Docs] Add GTK-Doc comments for hb-ot-font and hb-ot-shape.
Ebrahim Byagowi d0e2addd 2020-07-18T22:14:52 minor
Sebastian Rasmussen a373e161 2020-06-28T11:09:45 [ot-shape] Free shape plan maps upon error creating data (#2497)
Ebrahim Byagowi f9070cfe 2020-01-24T22:19:03 Run morx if run is horizontal or GSUB doesn't exist
Dominik Röttsches 298c46af 2020-01-24T12:11:07 Only prefer AAT morx for horizontal layout Fixes #2124.
Dominik Röttsches 66dfd605 2020-01-13T15:50:27 Fix duplicate check in hb_ot_rotate chars Fixes #2099. Fix indentation in mirroring section as well.
Evgeniy Reizner b79ceac3 2019-12-15T16:50:01 Prefer UINT_MAX instead of uint overflow. Also, prefer HB_FEATURE_GLOBAL_START and HB_FEATURE_GLOBAL_END.
Behdad Esfahbod f47cbade 2019-12-09T18:10:34 [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 ▃ ▂▃▃▄▃▂▁▊ ▃ ▃ ▎ ▗ ▅▆▆▅ ▌ ▆▆▅▆▙ ▌▗ ▗ ▙ ▂ ▎▗ ▟ ▅▆▆▆▇▇▇▇▇▇▇▆▆▅▄ ▇▅▅▅ ▙▆▇ ▁▁▂▁ ▁▁ ▖ ▖ ▂▂ ▉ ▁ ▆▆ ▌ ▆ ▙▄ ▁▁ ▙ ▉ ▃▖ ▟ ▊ ▉ ▅▟ ▗▄ ▊ ▉ ▗ ▏ ▇▆ ▊ ▟ ▉ ▆ ▖ ▊ ▉ ▌ ▂ ▊ ▏ ▉ ▌ ▗ ▄▟ ▊ ▆
Behdad Esfahbod 2dc20e63 2019-12-05T15:28:42 Implement fallback vertical shaping from Firefox Fixes https://github.com/harfbuzz/harfbuzz/issues/355
Behdad Esfahbod 0414341a 2019-12-05T11:26:39 Prefer AAT shaping over OT if both available Fixes https://github.com/harfbuzz/harfbuzz/issues/1529
Behdad Esfahbod 1a1d64bc 2019-10-31T12:50:47 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.
Ebrahim Byagowi a0b4ac4d 2019-08-24T17:57:14 Turn 8 spaces to tab across the project According to the current code style of the project
Khaled Hosny 40aef1b4 2019-08-16T01:00:30 [ot-shape] Keep horizontal_features array sorted
Khaled Hosny da5118da 2019-08-16T00:48:26 [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
Khaled Hosny 2164bd6f 2019-08-16T00:28:41 [ot-shape] Enable dist feature by default (#1908) Fixes https://github.com/harfbuzz/harfbuzz/issues/1907
Behdad Esfahbod cd65305b 2019-06-26T14:57:48 [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.
Behdad Esfahbod 5130c90a 2019-06-26T14:29:39 [config] Add HB_NO_EMOJI Part of https://github.com/harfbuzz/harfbuzz/issues/1652
Behdad Esfahbod 2804790b 2019-06-26T13:38:14 [config] Add dependency
Behdad Esfahbod 12092a46 2019-06-26T13:31:01 [config] Rename HB_NO_SHAPE_AAT to HB_NO_AAT_SHAPE
Behdad Esfahbod 7aad5365 2019-06-26T13:21:03 [config] Add HB_NO_OT_SHAPE / HB_NO_OT Part of https://github.com/harfbuzz/harfbuzz/issues/1652