Commit Graph

568 Commits

Author SHA1 Message Date
Behdad Esfahbod 2fd8e36ea5 [layout] Fix return value of chosen_script when matching fails 2023-01-20 09:09:14 -07:00
Behdad Esfahbod ed023f66df Enable -Wformat-signedness
And fix the codebase.
2023-01-12 17:04:24 -07:00
Behdad Esfahbod a81dd1053d [layout] Adjust printing feature tags
For required-feature, print spaces, not nul bytes.
2022-11-26 13:43:36 -07:00
Behdad Esfahbod 56e3868b52 [layout/buffer-message] Print feature name in lookup buffer messages 2022-11-26 13:14:23 -07:00
Behdad Esfahbod ed43bc5118 [buffer] Move delete_glyphs_inplace() here 2022-11-20 13:10:19 -07:00
Behdad Esfahbod 561946c7d5 [layout] Comment 2022-11-16 17:59:29 -07:00
Behdad Esfahbod 27a8fe7d58 [layout] Only update buffer digest if buffer changed by a pause 2022-11-16 17:49:44 -07:00
Behdad Esfahbod 8b2a211123 [layout] Keep digest updated in the context
Don't recompute digest after every (applied) GSUB lookup.
2022-11-16 16:57:44 -07:00
Behdad Esfahbod a5964a2d2a [layout] Minor simplify 2022-11-16 16:45:23 -07:00
Behdad Esfahbod 80b8758881 [layout] Add a buffer message for digest-skipped lookups 2022-11-16 16:26:41 -07:00
Behdad Esfahbod dff1b809a0 [buffer] Add .digest() and use 2022-11-16 16:19:05 -07:00
Behdad Esfahbod 654a2eafc8 [layout] Use buffer-digest for GSUB as well
Combined with previous commit, this shows up to 12% speed up with
Roboto and the en-words (ie. short strings) benchmark, about 5%
for longer English tests, and no adverse effect on heavier fonts.
2022-11-16 16:13:52 -07:00
Behdad Esfahbod 15b6c32599 [layout] Use a buffer digest for GPOS to skip whole lookups 2022-11-16 16:11:36 -07:00
Khaled Hosny 3ce4b8f5c9 5.3.0 2022-10-08 19:10:07 +02:00
Qunxin Liu f4813e3b7f [instance] update collect_lookups/prune_features()/closure_features() with variations
Some features will be substituted with variations, so we do not collect
lookups from the original feature tables.
2022-09-29 12:14:43 -06:00
Behdad Esfahbod b70032edda [layout] Fix typo in docs 2022-09-22 15:59:16 -06:00
Behdad Esfahbod 752060a49c [layout] Document hb_ot_layout_lookup_get_optical_bound() 2022-09-01 13:47:12 -06:00
Behdad Esfahbod 71c6cba097 [layout] Rename API:
-hb_ot_layout_get_optical_bound()
+hb_ot_layout_lookup_get_optical_bound()
2022-09-01 13:43:19 -06:00
Behdad Esfahbod 3892128a1f [layout] Add HB_NO_LAYOUT_RARELY_USED 2022-09-01 13:41:50 -06:00
Behdad Esfahbod 8e88653f05 [layout] Move code around 2022-09-01 13:39:26 -06:00
Behdad Esfahbod 4bf9621113 [optical-bounds] Optimize 2022-09-01 13:36:26 -06:00
Behdad Esfahbod 5d6f1a88e4 [layout] Add hb_ot_layout_get_optical_bound() 2022-09-01 13:36:26 -06:00
Behdad Esfahbod 14eb3d37ad [layout] Improve annotations 2022-09-01 13:18:42 -06:00
Matthias Clasen 29d5c7f67a docs: Improve docs for some apis
Various functions take hb_tag_t arrays. Those
arrays are expected to be 0-terminated. Document
that.
2022-08-31 14:54:12 -06:00
Behdad Esfahbod c96bfca380 [get-alternates] Minor simplify 2022-08-31 08:05:14 -06:00
Behdad Esfahbod 41aa02ae72 [layout] Improve get_feature_tags documentation
Fixes https://github.com/harfbuzz/harfbuzz/issues/3798
2022-08-29 11:17:22 -06:00
Khaled Hosny 371c88678f Add few missing since tags 2022-08-23 22:30:39 +02:00
Garret Rieger 5fdae68481 [reorg] Move GSUB.hh up one level and change GSUB namespace to GSUB_impl. 2022-06-30 15:33:20 -06:00
Khaled Hosny 98e90cc67c [docs] Reduce warnings
Use markdown syntax for inline code blocks instead of %true, %false, and
%NULL.
2022-06-30 08:44:40 +02:00
Garret Rieger 3fbf2dece7 [reorg] Move OT::Layout::GPOS_impl::GPOS to OT::Layout::GPOS. 2022-06-28 18:47:50 -06:00
Garret Rieger 88ef3c5a9a [reorg] Change OT::Layout::GPOS to OT::Layout::GPOS_impl. 2022-06-28 18:47:50 -06:00
Garret Rieger 74f45f7c2a [reorg] Move remaining GPOS lookup types to new directory. 2022-06-28 18:47:50 -06:00
Behdad Esfahbod c13ff39520 [layout] Rename apply_recurse_func to specialization of dispatch_recurse_func 2022-06-08 18:42:09 +01:00
Behdad Esfahbod 42051fe18a [layout] s/inplace/always_inplace/g 2022-06-08 04:00:21 -06:00
Behdad Esfahbod b96622d15c [layout] Use a cache for main input ClassDef of (Chain)ContextLookupFormat2
This commit adds a per-lookup caching infrastructure to GSUB/GPOS, and
uses it to cache input ClassDef.get_class value for (Chain)ContextLookupFormat2.

For fonts heavy on use of heave class-based2 context matching, this shows
a good speedup. For NotoNastaliqUrdu for example, I observe 17% speedup.

Unfortunately not many other lookups can use a cache like this :(.

https://github.com/harfbuzz/harfbuzz/pull/3636
2022-06-07 09:14:38 -06:00
Behdad Esfahbod 15543f70e0 [indic-like] Move allocation of syllable() buffer var to shapers that use it
In indic, we don't have a pause location release the var.
2022-06-05 08:15:47 -06:00
Behdad Esfahbod e6409d3905 Revert "[layout] Use a cache for main input ClassDef of (Chain)ContextLookups"
This reverts commit 57d1c08739.

Err. This was an accident.
2022-06-05 06:57:37 -06:00
Behdad Esfahbod 57d1c08739 [layout] Use a cache for main input ClassDef of (Chain)ContextLookups 2022-06-05 06:54:19 -06:00
Behdad Esfahbod 997d9cc466 [map] Make unique_ptr hashable 2022-06-02 18:47:42 -06:00
Behdad Esfahbod e9407a2bd2 Use shared_ptr<hb_set_t> in one place
See if valgrind is happy...
2022-06-02 12:00:43 -06:00
Behdad Esfahbod 3957d2927d [layout] Remove stale comment 2022-05-29 07:30:58 -06:00
Behdad Esfahbod 044d7a06db [indic-like] Add per-lookup per-syllable flag
This allows mix-and-matching per-syllable and other lookups.
In fact, removes the clear-syllables call completely.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3513
2022-03-28 17:39:54 -06:00
Garret Rieger b342adeb96 [reorg] Move GSUB into OT::Layout::GSUB namespace. 2022-03-23 18:05:24 -06:00
Behdad Esfahbod cad2fe8e63 [baseline] Fix HB_NO_METRICS build
Fixes https://github.com/harfbuzz/harfbuzz/issues/3482
2022-03-15 10:49:29 -06:00
Behdad Esfahbod a8a89b80b4 [layout] Whitespace 2022-03-15 10:48:03 -06:00
Behdad Esfahbod 6bf8f0a38f [baseline] Use ot-metrics fallback API 2022-03-15 10:44:41 -06:00
Matthias Clasen e7ab42b246 [layout] Fix handling of baseline variations
For BASE table format 1.1, the handling of design
space vs user space coordinates was inconsistent.
We were applying design -> user transformation
twice for the deltas, leading to wrong baseline
values.

Patch by Ebrahim Byagowi <ebrahim@gnu.org>

Fixes: #3476
2022-03-10 09:29:56 -07:00
Khaled Hosny 8d1b000a3e 4.0.0 2022-03-01 21:27:32 +02:00
Matthias Clasen 95bb2ff719 [ot-layout] Add central baselines
Add HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL
and HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL
which are the centers of the ideographic em-box
and face box.
2022-02-16 17:37:35 -06:00
Matthias Clasen f81578fd86 [ot-layout] Synthesize missing baselines
Add a variation of hb_ot_layout_get_baseline that
synthesizes missing baselines, using heuristics in part
taken from the CSS Inline Layout Module, Level 3.

Includes some new tests for synthesized baselines.
The base2.ttf is a subset of Noto Sans Bengali that
includes just the Bengali Ka.

New API: hb_ot_layout_get_baseline_with_fallback
2022-02-16 17:37:33 -06:00