Commit Graph

9773 Commits

Author SHA1 Message Date
Behdad Esfahbod d1e7df5c3f [buffer] Add enter()/leave() pair around shape() 2022-01-04 07:32:04 -07:00
Behdad Esfahbod 43be5ba442 [buffer] Group shape-related members together 2022-01-04 07:26:53 -07:00
Behdad Esfahbod 52f5711ed0 [buffer] Add hb_buffer_create_similar()
Fixes https://github.com/harfbuzz/harfbuzz/issues/1555
2022-01-03 11:57:42 -07:00
Behdad Esfahbod f643b81ffc [buffer] Clean up internal state bookkeeping
hb_buffer_reset() was NOT resetting cluster_level. Ouch! Fix that.

Part of https://github.com/harfbuzz/harfbuzz/issues/1555
2022-01-03 11:45:31 -07:00
Behdad Esfahbod 36e9f467a4 [buffer] Overlay segment-properties in hb_buffer_append()
Part of https://github.com/harfbuzz/harfbuzz/issues/1555
2022-01-03 11:23:14 -07:00
Behdad Esfahbod 6a66992842 Add hb_segment_properties_overlay()
New API:
+ hb_segment_properties_overlay()
2022-01-03 11:21:29 -07:00
Behdad Esfahbod 165a6073fa
Merge pull request #3338 from harfbuzz/slant
[font] Add public API for synthetic slant
2022-01-02 12:02:20 -07:00
Behdad Esfahbod 3fc2e654c0 [metrics] Fix slant calc 2022-01-02 11:56:45 -07:00
Behdad Esfahbod a7751277e9 [docs] Add hb_font_[gs]et_synthetic_slant() 2022-01-02 11:50:02 -07:00
Behdad Esfahbod 4ab94443bb [metrics] Ouch. Fix slant code 2022-01-02 11:26:45 -07:00
Behdad Esfahbod f7d49d9c2b [metrics] Simplify 2022-01-02 11:16:33 -07:00
Behdad Esfahbod f1ba1f940f [metrics] Only scale caret rise/run if font is slanted 2022-01-02 10:58:25 -07:00
Behdad Esfahbod 45c2b6e384 [metrics] Harden math 2022-01-02 10:57:19 -07:00
Behdad Esfahbod fa008a021f [metrics] Implement synthetic slant for caret slope
Part of https://github.com/harfbuzz/harfbuzz/pull/3338
2022-01-02 10:46:38 -07:00
Behdad Esfahbod fc329f665f [metrics] Scale up horizontal caret rise/run
Eg. if rise/run are 1/0, we now return upem/0. This is equivalent.

Part of https://github.com/harfbuzz/harfbuzz/pull/3338
2022-01-02 10:43:13 -07:00
Behdad Esfahbod 0df83f52a1 Fix test 2022-01-02 08:01:11 -07:00
Behdad Esfahbod 5b87c30d6b [font] Mark hb_font_get_var_coords_design() non-experimental
Any remaining issue with the API will address later by deprecating it.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1865
2022-01-02 07:53:45 -07:00
Behdad Esfahbod 2d42fc9fbb [font] Load named-instance if face index top bits are set
This matches FreeType behavior.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3348
2022-01-02 07:45:10 -07:00
Behdad Esfahbod da7dba0002 [face] Clarify face_index handling
Fixes https://github.com/harfbuzz/harfbuzz/issues/3347
2022-01-01 11:20:20 -07:00
Behdad Esfahbod 6da4b80e5f [hb-ot-var] Specify normalized 2.14 docs
Fixes https://github.com/harfbuzz/harfbuzz/issues/3345
2021-12-22 21:51:03 -07:00
Behdad Esfahbod 1b51be57dc [hb-ot-var] Actually set in/out argument
Fixes https://github.com/harfbuzz/harfbuzz/pull/3344
2021-12-22 21:43:48 -07:00
Behdad Esfahbod 06ee40213c Use invisible-glyph for spaces if font has no ASCII space
Fixes https://github.com/harfbuzz/harfbuzz/issues/3340

Should add tests ideally.
2021-12-22 21:34:44 -07:00
Behdad Esfahbod 602bd39680 [style] Adjust font slant angle for synthetic slant value
Part of https://github.com/harfbuzz/harfbuzz/pull/3338
2021-12-19 21:40:25 -08:00
Behdad Esfahbod ff697debd8 [GPOS] Apply font synthetic slant
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/3196
2021-12-19 21:20:25 -08:00
Behdad Esfahbod 810f5d71c7 [font] Add public API for slant
Not hooked up internally to anything.

New API:

+ hb_font_set_synthetic_slant()
+ hb_font_get_synthetic_slant()

Part of fixing https://github.com/harfbuzz/harfbuzz/issues/3196
2021-12-19 21:20:25 -08:00
Garret Rieger 067f90a820 [subset] Fix for fuzzer timeout.
Fixes https://oss-fuzz.com/testcase-detail/5549945449480192

In prune_langsys: move LangSys visited check up before any work is done for a LangSys. In this particular case the compare() method is responsible for the majority of the time spent and wasn't being guarded with a visisted check.
2021-12-14 17:34:21 -07:00
Garret Rieger c4573c2ec7 [repacker] don't infinite loop if visited or roots is in error.
Fixes https://oss-fuzz.com/testcase-detail/5205038086094848
2021-12-14 15:57:48 -07:00
Khaled Hosny be91d2917d 3.2.0 2021-12-12 04:45:54 +02:00
Garret Rieger 77507a1d8d [subset] Don't double count visit lookups in closure_lookups
Each recursed lookup was getting counted once in closure_lookups() and then again in hb_closure_lookups_context_t::recurse.
2021-12-10 15:13:49 -07:00
Garret Rieger d67025705f [subset] reset the visited lookup count before each closure iteration. 2021-12-10 15:13:49 -07:00
Behdad Esfahbod 23159084b4 [morx] Reverse graphemese, not whole buffer
Fixes https://github.com/harfbuzz/harfbuzz/issues/3314
Supersedes https://github.com/harfbuzz/harfbuzz/pull/3315
2021-12-10 15:02:57 -07:00
Behdad Esfahbod 5b995526f7 [buffer] Fix reverse_group() to reverse() at the end 2021-12-10 14:59:56 -07:00
Behdad Esfahbod 21c4fc1011 [buffer] Add optional merge_clusters arg to reverse_groups() 2021-12-10 13:02:43 -07:00
Behdad Esfahbod e949e51218 [ot-layout] Port foreach_grapheme to buffer foreach_group 2021-12-10 12:58:27 -07:00
Behdad Esfahbod eb96e69d18 [buffer] Add foreach_group() 2021-12-10 12:55:29 -07:00
Behdad Esfahbod 1b78e04c78 [buffer] Add ::reverse_groups() 2021-12-10 12:45:43 -07:00
Behdad Esfahbod 4cd96e73e4 [buffer] Inline revers_range() / reverse() 2021-12-10 12:33:21 -07:00
Garret Rieger 5914acb3cb [repacker] Clear distance and position cache when assigning a new space.
A change in space will effect the distance assigned to the node and any of it's children so clear the distance cache.
2021-12-10 11:09:03 -07:00
Qunxin Liu 706014f69d [subset] (Chain)ContextSubst glyph_closure fix
- When pos_glyphs is empty, use current full glyphs set as input for
subsequent recursive closure process
- Also increase max_lookup_visit_count to 35000 cause a real font file hit
previous limit 20000 and some lookups are dropped unexpectedly
2021-12-10 11:08:36 -07:00
Garret Rieger 441877f56a [repacker] add test case for using max priority to resolve an overflow. 2021-12-09 17:46:52 -07:00
Garret Rieger be2c488e5d [repacker] Improve vertex priority packing.
Previous priority implementation would move a node further back within it's layer, but at max priority was unable to move any further up than that. This updates the implementation to have 3 priority levels:
1. Distance is reduced by half of table size.
2. Distance is reduced by full table size (move to beginning of the layer).
3. Distance is set to 0. Vertex will be packed as soon as possible.

Also makes the iterative resolutions aware of max priority, so it won't keep trying to raise priority beyond the maximum.
2021-12-09 17:46:52 -07:00
David Corbett 2404617a60 Update language system tag registry to OT 1.9 2021-12-09 07:18:57 -07:00
Behdad Esfahbod 002a1f70b8 [ft] Disable vertical funcs if HB_NO_VERTICAL 2021-12-08 10:45:30 -08:00
Behdad Esfahbod ef14cad736 [GPOS] Disable vertical advance if HB_NO_VERTICAL 2021-12-08 10:43:52 -08:00
Behdad Esfahbod 6ed22de127 [CONFIG] Fix HB_NO_VERTICAL build without HB_TINY 2021-12-08 10:40:40 -08:00
Behdad Esfahbod 53eebc7cd2 [CONFIG] Add HB_NO_VERTICAL 2021-12-08 08:34:20 -08:00
Behdad Esfahbod 9bc5d2903a [TINY] Don't disable VORG table in any config profile
Is needed for vertical layout of CFF fonts.

Fixes https://github.com/harfbuzz/harfbuzz/discussions/3294#discussioncomment-1770313
2021-12-08 08:16:17 -08:00
Garret Rieger 3e4a25098d [repacker] add a maximum number of roots that can be moved in one iteration.
Set to half of the roots in a space. This prevents the repacker from moving all roots in a space to a new space if their are overflows in every root.
2021-12-06 21:27:28 -07:00
Garret Rieger 02b12d7965 [repacker] Move all overflowing roots to a new space simultaneously. 2021-12-06 21:27:28 -07:00
Garret Rieger fa966bcc29 [repacker] create repacker output buffer after final length is known.
Don't rely on a buffer provided by the caller, as it may not be large enough.
2021-12-06 21:27:28 -07:00