Commit Graph

305 Commits

Author SHA1 Message Date
Behdad Esfahbod 97b8ada865 [varc] Reset component coordinates to that of the font
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/78
2022-12-21 19:52:20 -07:00
Behdad Esfahbod 9b5b4da0e4 [varc] Set coordinates as absolute values 2022-12-20 09:58:04 -07:00
Behdad Esfahbod 80e68f09c5 [VarC] Change rotation/skew representation
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/77
2022-12-19 19:17:04 -07:00
Behdad Esfahbod 03a1685693 [VarC] Change representation of scale from 4.12 to 6.10
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/76
2022-12-19 17:12:09 -07:00
Jordan Petridis 79285a9983
VarC: cast ints (#3934)
msvc is rightfully complaining that the types on the sides of
the ternary are not matching:

```
C:\pango\subprojects\harfbuzz\src\OT\glyf\VarCompositeGlyph.hh(317): error C2446: ':': no conversion from 'const OT::HBUINT16' to 'const OT::HBUINT8'
```
2022-12-13 11:14:20 -07:00
Behdad Esfahbod bd7cb384cf [VarC] Remove unused variable 2022-12-12 14:10:48 -07:00
Behdad Esfahbod 1b278c7658 [VarC] Update for new format
https://github.com/harfbuzz/boring-expansion-spec/issues/71
2022-12-12 13:57:05 -07:00
Behdad Esfahbod 6bb478eeeb [VarC] Clamp after addition 2022-12-12 11:39:06 -07:00
Behdad Esfahbod 80a5011eb6 [VarC] Fix coord setting
Those are additive.
2022-12-12 11:37:59 -07:00
Behdad Esfahbod 9ab2c8034e Revert "[glyf] Use component phantom points after transformation"
This reverts commit a756bd1944.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3929
2022-12-11 12:04:29 -07:00
Behdad Esfahbod bf2e817549 [VarComposites] Support GID24 2022-12-09 23:15:26 -07:00
Behdad Esfahbod 10d38dcdfd [varc] Change format slightly
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/70
2022-12-09 19:19:57 -07:00
Behdad Esfahbod 5cf0b9ae7d [varc] Mark as experimental feature with HB_NO_VAR_COMPOSITES 2022-12-09 18:59:43 -07:00
Behdad Esfahbod 82b4f3791e [coord-setter] Don't modify font coords 2022-12-09 18:46:33 -07:00
Behdad Esfahbod e9e503b80b [Glyph] Pass down coords to get_points 2022-12-09 18:42:46 -07:00
Behdad Esfahbod 8e46870093 [gvar] Take coords in instead of font in apply_deltas_to_points 2022-12-09 18:35:30 -07:00
Behdad Esfahbod 3caa42a4a7 Fix build after rebase 2022-12-09 14:48:41 -07:00
Behdad Esfahbod bbe59e4211 Whitespace 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 13deea7cbd [glyf/VarComposite] Clamp axis coordinates 2022-12-09 14:45:29 -07:00
Behdad Esfahbod a975be4c07 [glyf/VarComposite] Minor rename 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 1e71db2d26 [glyf/VarComposite] Fix transformation 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 1233be61d8 [glyf/VarComposite] Remove unneeded resize 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 1a906162cb [glyf/coord-setter] Fix memory issue 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 7efd68da39 [glyf/VarComposite] Set coordinates
Code is untested but complete!
2022-12-09 14:45:29 -07:00
Behdad Esfahbod 4ec7781497 [glyf] Move coord-setter to its own file 2022-12-09 14:45:29 -07:00
Behdad Esfahbod dadb4ed71d [glyf/VarComposite] More, almost there 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 0a939b48a6 [glyf/VarComposite] Implement more 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 65cc3b5e2b [glyf/VarComposite] More 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 60d959a6e7 [glyf/VarComposite] Add use_my_metrics() 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 575d99406a [glyf] Flesh out VarCompositeGlyph 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 21f671bc45 [glyf] Add stub VarCompositeGlyph 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 435c5eeffe [glyf] Split composite-iter 2022-12-09 14:45:29 -07:00
Behdad Esfahbod 1024a013fd [glyf] Add CoordSetter 2022-12-09 14:45:29 -07:00
Behdad Esfahbod aa7f5e3742 [subset] Conditionalize call to hb_font_set_variations 2022-12-04 15:33:18 -07:00
Behdad Esfahbod 301f6e4b47 [Coverage] Remove TODO 2022-12-04 11:46:10 -07:00
Behdad Esfahbod dbbb8e8006 Revert "[map] Add hb_map_filter_invalid"
This reverts commit 8d7e921117.

Surprisingly this slowed NotoNastaliqUrdu benchmark down by a couple
percent instead of speeding it up.
2022-12-04 11:13:39 -07:00
Behdad Esfahbod 8d7e921117 [map] Add hb_map_filter_invalid
Use it in one place.
2022-12-04 11:02:15 -07:00
Behdad Esfahbod 41a8597f38 [layout] Simplify CoverageFormat2 intersects_coverage() 2022-12-03 13:23:26 -07:00
Behdad Esfahbod 1f4d8ccaed [CoverageFormat2] Optimize intersects() 2022-12-03 13:17:15 -07:00
Behdad Esfahbod c482b06108 [gpos] Optimize PairPosFormat1::intersects 2022-12-03 13:14:31 -07:00
Behdad Esfahbod 4d19c724c0 [CoverageFormat1] Speed up intersects()
Speeds up SourceHanSerif/10000 benchmark (not in test suite) by
32%!
2022-12-03 09:57:29 -07:00
Behdad Esfahbod 2a7a1d5a73 [Coverage] Avoid timeout on broken ranges
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53929
2022-12-02 12:33:24 -07:00
Behdad Esfahbod 72fabef0a4 [SingleSubstFormat2] Speed up closure 2022-11-30 11:37:49 -07:00
Behdad Esfahbod d2a2670e54 [iter] Simplify has() interface implementations 2022-11-28 19:43:09 -07:00
Behdad Esfahbod 3e151139a8 [PairPos] Optimize get_effective_value_format
Speeds up BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/512
12%.
2022-11-28 14:23:49 -07:00
Behdad Esfahbod 26ad7a6022 [gpos] Minor micro-optimize 2022-11-28 14:12:52 -07:00
Behdad Esfahbod c769d7e181 [gpos] Whitespace 2022-11-28 14:03:58 -07:00
Behdad Esfahbod e3cc61838f [PairPos] Adjust kerning buffer messages 2022-11-26 13:58:04 -07:00
Behdad Esfahbod 6aaa16627c [Coverage] Comment 2022-11-24 14:58:42 -07:00
Behdad Esfahbod 6f133ccfde [glyf] Fix build with HB_NO_VERTICAL 2022-11-24 12:59:55 -07:00
Behdad Esfahbod 05aa084e67 [PairPos] Another attempt at fixing unsafe-to-break with ValueFormat2
Fixes https://github.com/harfbuzz/harfbuzz/issues/3888#issuecomment-1326781116

Test:
$ hb-shape XBRoya34.ttf  ' الأ' --show-flags --script=arab
2022-11-24 12:14:09 -07:00
Garret Rieger 81640fdffe [subset] fix leaked font in glyf::subset(...) 2022-11-23 13:41:52 -07:00
Behdad Esfahbod 1e8f1ac677 [subset-glyf] Micro-optimize array access 2022-11-23 13:20:48 -07:00
Behdad Esfahbod 356d135ed6 [subset-glyf] Reduce roundf calls
Saves 7% on MPLUS1-Variable/6000 benchmark.
2022-11-23 13:20:48 -07:00
Garret Rieger 463ae07e99 [subset] In the preprocess subset call always use long loca.
Long loca is needed so that we can store the trimmed glyph bytes to allow us to safely skip trimming in the later subset.
2022-11-23 12:52:55 -07:00
Behdad Esfahbod 299ec902eb [glyf] Move instanciation to serialize() 2022-11-22 16:03:02 -07:00
Behdad Esfahbod d8d881f22d [subset-glyf] Don't create a second glyf accelerator 2022-11-22 15:24:16 -07:00
Behdad Esfahbod 7560930070 [glyf] Add _create_font_for_instancing 2022-11-22 15:22:25 -07:00
Behdad Esfahbod 40634ceeb0 [glyf] Adjust data types 2022-11-22 15:07:16 -07:00
Behdad Esfahbod ba0d28ea36 [glyf] Fix font error check 2022-11-22 15:01:48 -07:00
Behdad Esfahbod 04c525019c [glyf] Use a malloc instead of calloc 2022-11-22 14:54:55 -07:00
Behdad Esfahbod 024aa81805 [glyf] Micro-optimize encode_coord 2022-11-22 14:51:42 -07:00
Behdad Esfahbod b6694597f9 [glyf] Micro-optimize encode_flag() 2022-11-22 14:49:01 -07:00
Behdad Esfahbod d47cfe7936 [glyf] Minor use operator ++ 2022-11-22 14:45:04 -07:00
Behdad Esfahbod 03e6bde790 [glyf] Minor adjustment to lastflag handling
No logic change.
2022-11-22 14:40:50 -07:00
Behdad Esfahbod 0ca9fda889 [glyf] Remove misplaced comment 2022-11-22 14:39:10 -07:00
Behdad Esfahbod 4afcdf675b More hb_memcpy 2022-11-22 12:56:48 -07:00
Behdad Esfahbod 58a696d80e More hb_memset 2022-11-22 12:56:05 -07:00
Behdad Esfahbod 1758ee6646 [glyf] Minor write loop more idiomatically 2022-11-22 10:55:16 -07:00
Behdad Esfahbod b567ce51d3 [subset] Don't trim glyf's again if preprocessed
Speeds up M1/10000 benchmark by 30%!
2022-11-22 10:55:08 -07:00
Behdad Esfahbod a0bde1e1ea [open-type] Remove (Sorted)ArrayOf.sub_array() 2022-11-16 21:27:12 -07:00
Behdad Esfahbod f2b5db700f [vector] Remove .sub_array () 2022-11-16 21:22:57 -07:00
Behdad Esfahbod ea63e95e4c [GPOS.PairPos] Adjust unsafe-to-break for non-zero ValueFormat2
Fixes https://github.com/harfbuzz/harfbuzz/issues/3824
2022-11-14 12:36:48 -07:00
Behdad Esfahbod fc935fb81b Fix snprintf use
https://github.com/harfbuzz/harfbuzz/pull/3495#issuecomment-1299107964
2022-11-01 14:40:47 -06:00
Behdad Esfahbod 02b76393ef [config] Re-enable BORING_EXPANSION
Only the non-experimental parts (currently avar2) are
enabled by default.
2022-10-29 11:19:04 -06:00
Behdad Esfahbod 477d71724c [glyf] Limit points in a glyf to 10000 roughly
Only enforced when components are being expanded.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3838
2022-10-26 13:11:47 -06:00
Behdad Esfahbod 9aad3dba8f [SingleSubst] Fix degenerate-lookup test
Part of https://github.com/harfbuzz/harfbuzz/issues/3853
2022-10-26 13:04:02 -06:00
Behdad Esfahbod a756bd1944 [glyf] Use component phantom points after transformation 2022-10-13 17:18:19 -06:00
Behdad Esfahbod 82d19c08fc Revert "[glyf/Composite] Remove phantom points when not needed anymore"
This reverts commit 527e63a3bd.
2022-10-13 17:17:03 -06:00
Behdad Esfahbod 527e63a3bd [glyf/Composite] Remove phantom points when not needed anymore 2022-10-13 17:13:40 -06:00
Behdad Esfahbod 294b1c9f6e Use snprintf instead of sprintf 2022-10-13 11:30:02 -06:00
Garret Rieger 8f1bf23cc9 [subset] optimize glyf subsetting w/ retain gids.
When retain gids is enabled the subset plan may require the output of many empty glyphs. This change optimizes the glyf subsetting code when the number of retained glyphs << number of output glyphs. Unnessecary lookups to the glyph map are reduced by iterating through the glyph map instead of the output glyph set.
2022-09-29 15:44:49 -06:00
Qunxin Liu e94fe2adf3 [instance] minor optimizations to glyf instancing 2022-09-29 12:14:43 -06:00
Qunxin Liu b90ce34a25 [instance] fix for non-empty .notdef glyph metrics update
we need pass in source glyph's outline data to calculate boundaries, and
then drop the outline data if notdef-outline is specified.

Also disable shifting points for instancing in get_points () API
2022-09-29 12:14:43 -06:00
Qunxin Liu 8f3a7017c3 [instance] support FeatureVariations table 2022-09-29 12:14:43 -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
Qunxin Liu 8f84c58a34 [instance] don't copy phantom points from component
No need to consider USE_MY_METRICS for instancing
2022-09-01 09:44:28 -07:00
Qunxin Liu 58dbc00162 [instance] Fix compiling Composite glyph bytes
The x/y offset encoded with int8 originally might overflow after deltas
are applied. So we cannot just copy and update old values.
2022-09-01 09:44:28 -07:00
Qunxin Liu 8b7e2a1373 [instance] we need to update hmtx/vmtx values even for empty glyphs
Update metrics using the 4 phantom points
2022-09-01 09:44:28 -07:00
Qunxin Liu 6de0a6f0b7 [instance] update GPOS ValueRecord table 2022-09-01 09:43:46 -07:00
Qunxin Liu 61636d4efe [instance] update GPOS AnchorFormat3 table 2022-09-01 09:37:00 -07:00
Qunxin Liu b72995ff16 [instance] GDEF table: collect both varidxes and deltas 2022-09-01 09:33:02 -07:00
Behdad Esfahbod 84d33a1ed8 [glyf] Fix compiler warning 2022-08-23 13:13:13 -06:00
Qunxin Liu ac0e22fa8e [instance] update glyf/hmtx/vmtx tables 2022-08-22 09:29:37 -07:00
Garret Rieger 5ea3c0be8f [repacker] Implement MarkArray::clone. 2022-08-11 22:21:28 +00:00
Behdad Esfahbod f4f7d691af
Merge pull request #3779 from harfbuzz/split_pair_pos_2
[repacker] Add PairPosFormat2 table splitting in the repacker.
2022-08-09 22:23:23 -06:00
Behdad Esfahbod a4e0fd1685 [MultipleSubst] Rewrite serialize signature as single iterator 2022-08-05 15:05:51 -06:00
Behdad Esfahbod 65d28bc5a7 [MultipleSubst] Rewrite serialize() in terms of iterators
Unused still, and hence untested
2022-08-05 14:56:07 -06:00
Behdad Esfahbod b57ea3b053 Revert "[iter] Use && in uses of is_source_of"
This reverts commit ccbba667a9.
2022-08-05 14:29:27 -06:00