Behdad Esfahbod
8bfeea4828
[subset] Compute set max using previous()
2022-05-05 11:13:57 -06:00
Behdad Esfahbod
00cb8c629d
[subset] Don't go into glyf table if it's empty
2022-05-05 11:13:57 -06:00
Behdad Esfahbod
4fe69bc413
[subset] Use del_range in _remove_invalid_gids
2022-05-05 11:13:57 -06:00
Behdad Esfahbod
2a42edccbe
[subset] Cosmetic; use set bulk array population instead of for loop
2022-05-05 10:35:54 -06:00
Behdad Esfahbod
43938ecdc2
[subset] Remove outdated comment
...
I tried something like that. It was slower because of the allocations.
2022-05-04 16:59:28 -06:00
Behdad Esfahbod
50db78ba83
[subset] In cmap planning, remove a qsort()
2022-05-04 16:18:27 -06:00
Behdad Esfahbod
052812b6ba
Merge pull request #3561 from googlefonts/cmap_opt
...
[subset] Further cmap subsetting speed optimizations
2022-05-04 15:38:30 -06:00
Garret Rieger
7cb36e4222
[subset] Re-introduce size threshold in choosing unicode collection method.
...
Threshold is needed since the unicodes set might be an inverted set.
2022-05-04 21:22:26 +00:00
Garret Rieger
42c54eba83
[subset] Presize unicode to gid list to unicodes + glyphs size.
2022-05-04 20:21:43 +00:00
Garret Rieger
7c7c01d28c
[subset] Remove switch to alternate unicode collection at large subset sizes.
...
Benchmarks show that the first path is always faster even at large subset sizes:
BM_subset_codepoints/subset_roboto/10_median +0.0324 +0.0325 0 0 0 0
BM_subset_codepoints/subset_roboto/64_median +0.0253 +0.0255 0 1 0 1
BM_subset_codepoints/subset_roboto/512_median +0.0126 +0.0128 1 1 1 1
BM_subset_codepoints/subset_roboto/4000_median +0.0500 +0.0491 6 7 6 7
BM_subset_codepoints/subset_amiri/10_median +0.0338 +0.0332 1 1 1 1
BM_subset_codepoints/subset_amiri/64_median +0.0238 +0.0234 1 1 1 1
BM_subset_codepoints/subset_amiri/512_median +0.0066 +0.0063 8 8 8 8
BM_subset_codepoints/subset_amiri/4000_median -0.0011 -0.0012 13 13 13 13
BM_subset_codepoints/subset_noto_nastaliq_urdu/10_median +0.0226 +0.0226 0 0 0 0
BM_subset_codepoints/subset_noto_nastaliq_urdu/64_median +0.0047 +0.0044 20 20 20 20
BM_subset_codepoints/subset_noto_nastaliq_urdu/512_median +0.0022 +0.0021 165 166 165 166
BM_subset_codepoints/subset_noto_nastaliq_urdu/1000_median -0.0021 -0.0023 166 166 166 165
BM_subset_codepoints/subset_noto_devangari/10_median +0.0054 +0.0054 0 0 0 0
BM_subset_codepoints/subset_noto_devangari/64_median +0.0024 +0.0019 0 0 0 0
BM_subset_codepoints/subset_noto_devangari/512_median +0.0089 +0.0090 5 5 5 5
BM_subset_codepoints/subset_noto_devangari/1000_median -0.0028 -0.0019 5 5 5 5
BM_subset_codepoints/subset_mplus1p/10_median +0.0001 +0.0002 0 0 0 0
BM_subset_codepoints/subset_mplus1p/64_median +0.0073 +0.0075 1 1 1 1
BM_subset_codepoints/subset_mplus1p/512_median +0.0034 +0.0034 1 1 1 1
BM_subset_codepoints/subset_mplus1p/4096_median -0.1248 -0.1248 7 6 7 6
BM_subset_codepoints/subset_mplus1p/10000_median -0.0885 -0.0885 13 12 13 12
BM_subset_codepoints/subset_notocjk/10_median +0.0031 +0.0032 2 2 2 2
BM_subset_codepoints/subset_notocjk/64_median -0.0010 -0.0010 2 2 2 2
BM_subset_codepoints/subset_notocjk/512_median -0.0023 -0.0023 9 9 9 9
BM_subset_codepoints/subset_notocjk/4096_median -0.1725 -0.1726 28 23 28 23
BM_subset_codepoints/subset_notocjk/32768_median -0.0277 -0.0287 140 137 140 136
BM_subset_codepoints/subset_notocjk/100000_median -0.0929 -0.0926 162 147 162 147
2022-05-03 22:45:39 +00:00
Garret Rieger
f0c04114bc
[subset] Embed unicode to gid list vector in subset plan.
2022-05-03 22:02:59 +00:00
Behdad Esfahbod
15fa8afb21
Add fast-path for big-endian 32-bit byteswap
...
Speeds up cmap format-12 decoding by some 40% as measured by
the newly added test in perf/benchmark-font!
2022-05-02 16:46:41 -06:00
Behdad Esfahbod
3fff2e9182
[perf/benchmark-font] Cosmetic
2022-05-02 16:42:10 -06:00
Behdad Esfahbod
307d2d8bb6
[cmap] Sprinkle some 'unlikely's
2022-05-02 16:30:22 -06:00
Garret Rieger
85ec5cbcef
[subset] In _populate_unicodes_to_retain populate unicodes in order.
...
Allows the set insert to take advantage of page lookup cache.
2022-05-02 22:29:43 +00:00
Garret Rieger
088133d939
[subset] cache cp to new gid list in subset plan.
...
This avoids having to recompute the ordered list multiple times during cmap generation.
2022-05-02 21:29:16 +00:00
Garret Rieger
6922a2561f
[subset] Change serialize_rangeoffset_glyid back to using iterator.
2022-04-29 23:30:32 +00:00
Garret Rieger
c66fd50c26
[subset] in cmap4 serialization save cp to gid iter to memory.
...
Iterator accesses are slow and it's iterated multiple times.
2022-04-29 23:18:53 +00:00
Garret Rieger
17b98563dc
[subset] In cmap4 serialization reduce unnessecary calls into the iterator.
...
Gives ~20% speedup for large subsets.
2022-04-29 22:49:02 +00:00
Garret Rieger
5e241094bf
[subset] In unicodes cache cleanup if set insert fails.
2022-04-29 22:45:16 +00:00
Garret Rieger
a424a92ce5
[subset] s/void */intptr_t.
2022-04-29 22:14:03 +00:00
Garret Rieger
aad67f5629
[subset] cache results of collect_unicodes.
2022-04-29 22:05:34 +00:00
Garret Rieger
b4236b7de6
[subset] Optimize Cmap4 collect_unicodes.
...
Use set add_range() instead of individual add() calls.
2022-04-29 19:22:00 +00:00
Behdad Esfahbod
067225a86d
[set] Optimize const page_for() using last_page_lookup caching
...
Similar to previous commit.
This speeds up SetLookup benchmark by 50%, but that's because that
lookup always hits the same page...
2022-04-29 13:04:36 -06:00
Behdad Esfahbod
c283e41ce3
[set] Optimize non-const page_for() using last_page_lookup caching
...
This speeds up SetOrderedInsert tests by 15 to 40 percent, and the
subset_mplus1p benchmarks by 9 to 27 percent.
2022-04-29 12:45:48 -06:00
Behdad Esfahbod
d8292b8446
[CFF] Fix parsing of empty Index
...
https://github.com/harfbuzz/harfbuzz/issues/3545#issuecomment-1111047941
2022-04-27 12:38:35 -06:00
David Corbett
6454cec085
[USE] Classify U+10A38 as CONS_MOD_BELOW
2022-04-24 11:41:32 -06:00
Khaled Hosny
f7aee78e90
4.2.1
2022-04-24 05:47:57 +02:00
Behdad Esfahbod
6695bf0560
[gsubgpos] Remove wrong condition in Context application
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3545
2022-04-22 13:48:41 -06:00
Behdad Esfahbod
8575a8f50c
Add _hb_codepoint_is_regional_indicator()
2022-04-21 11:15:34 -06:00
Behdad Esfahbod
c1ee7d28f3
Typo
...
Co-authored-by: Khaled Hosny <khaled@aliftype.com>
2022-04-21 11:15:34 -06:00
Behdad Esfahbod
4d48fae4f2
Enforce Regional_Indicators native direction to LTR
...
And undo the morx direction reversal change introduced in
https://github.com/harfbuzz/harfbuzz/pull/3315
23159084b4
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
2022-04-21 11:15:34 -06:00
Behdad Esfahbod
a85461b9b6
Add link to Context LookupFlag discussion
...
https://github.com/harfbuzz/harfbuzz/discussions/3538
2022-04-20 12:13:40 -06:00
Simon Cozens
9e59c401e0
[myanmar] Reword confusing comment about masks
2022-04-20 11:25:15 -06:00
Behdad Esfahbod
903cf8cfce
[check-static-inits] Unbreak test
2022-04-13 15:31:51 -06:00
Behdad Esfahbod
ec925ece05
[khmer] Reinstate a pause after basic features
...
This was removed as part of 044d7a06db
,
which caused the regression. Just adding a pause fixes the shaping.
Debugged by just tracing the good/bad shaping and observing the
lookup orders intermingling in the bad shaping.
Test:
hb-shape LeelawUI.ttf --unicodes U+1780,U+17D2,U+179A,U+17BB
Fixes https://github.com/harfbuzz/harfbuzz/issues/3531
2022-04-13 11:54:08 -06:00
Khaled Hosny
88bb746b42
[blob] Return nullptr from create_from_file_or_fail
...
Fix a couple of cases where it would return empty blob, possibly
missed in bdfed8f113
.
2022-04-01 02:38:23 +02:00
Behdad Esfahbod
b179d357a9
[main] Fix unused-variable warnings
2022-03-30 12:59:52 -06:00
Khaled Hosny
9d5730b958
4.2.0
2022-03-30 15:08:34 +02: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
Behdad Esfahbod
61486746d3
Revert "[indic] Clear syllables before presentation features"
...
This reverts commit 90f09b1e87
.
This regressed Indic shaping. See:
https://github.com/harfbuzz/harfbuzz/issues/3513
2022-03-28 15:57:07 -06:00
Behdad Esfahbod
e8f3397f4e
[matcher] Simplify syllable initialization
2022-03-28 13:23:37 -06:00
Behdad Esfahbod
94f5c630fc
[aat] Remove morx deleted-glyphs before GPOS processing
...
Fixes new Apple Color Emoji glyphs sequences rendering.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3512
2022-03-28 13:10:56 -06:00
David Corbett
0dcbdbde9c
[indic] Categorize U+0D04 as Consonant_Placeholder
2022-03-26 21:02:08 -06:00
Behdad Esfahbod
a665e29ed7
[use] Avoid O(n^2) in the machine
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3502
2022-03-25 15:17:55 -06:00
Behdad Esfahbod
ccd9161bfd
[apply-lookup] Try to fix the logic for contextual lookups
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1611
Notably, this fixes Myles's AdditionFont:
https://litherum.blogspot.com/2019/03/addition-font.html
Test with AdditionFont, eg.:
$ util/hb-view AdditionFont.otf =1112112+1113134=
2022-03-25 15:14:40 -06:00
Behdad Esfahbod
fa15fc44bb
[subset] Require exact harfbuzz version in .pc file
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1446
2022-03-25 15:00:36 -06:00
Behdad Esfahbod
b619b05f39
[subset] Adjust name in .pc file
2022-03-25 15:00:36 -06:00
Khaled Hosny
1229078660
[set] Fix annotation
2022-03-25 22:41:25 +02:00
Behdad Esfahbod
3a78cf92c8
[gvar] Fix decoding of private vs shared points
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3506
2022-03-25 13:25:28 -06:00
Behdad Esfahbod
a02fb4a0dc
[glyf] Don't bail rendering glyf even if gvar failed
...
Part of https://github.com/harfbuzz/harfbuzz/issues/3506
2022-03-25 13:25:28 -06:00
Behdad Esfahbod
0a38878549
[set] Minor touch-up on the previous commit
2022-03-25 09:42:36 -06:00
Andrew John
0182988229
[set] Add call to export set contents to an array. ( #3500 )
...
[set] Add hb_set_next_many.
2022-03-25 09:36:44 -06:00
aneejit1
a55a42444d
Meson build writes to the source directory (issue #3507 ) ( #3508 )
...
Don't write to source directory if files did not change
Remove writes to the source directory which cause a meson build failure
if the source directory is read-only.
https://github.com/harfbuzz/harfbuzz/pull/3508
2022-03-24 14:16:41 -06:00
Behdad Esfahbod
bf2a845a17
[ot-layout] Comment
2022-03-24 13:09:53 -06:00
Behdad Esfahbod
a792e16e48
[ot-layout] Change max nesting level of lookups from 6 to 64
2022-03-24 13:08:51 -06:00
Garret Rieger
444c2375a1
[reorg] Use relative includes for hb-ot-layout-gsubgpos.hh
2022-03-23 18:05:24 -06:00
Garret Rieger
b342adeb96
[reorg] Move GSUB into OT::Layout::GSUB namespace.
2022-03-23 18:05:24 -06:00
Garret Rieger
a9910e258f
[reorg] Move SubstLookup and GSUB into the new layout.
2022-03-23 18:05:24 -06:00
Garret Rieger
90af2143d5
[reorg] Move ReverseChainSingleSubst to new layout.
2022-03-23 18:05:24 -06:00
Garret Rieger
403feb3804
[reorg] Move LigatureSubst to new layout.
2022-03-23 18:05:24 -06:00
Garret Rieger
6a369389d6
[reorg] Move AlternateSubst to new layout.
2022-03-23 18:05:24 -06:00
Garret Rieger
dea0681db2
[reorg] Move MultipleSubst into new layout.
2022-03-23 18:05:24 -06:00
Behdad Esfahbod
7243bf3e41
[reorg] Use relative include
2022-03-23 18:05:24 -06:00
Behdad Esfahbod
c180f93766
[reorg] Move sanitize/dispatch and size macros to top
2022-03-23 18:05:24 -06:00
Garret Rieger
f577d02f4a
[reorg] Fix check-* scripts to work with sources files in directories.
2022-03-23 18:05:24 -06:00
Garret Rieger
3ef180db44
[reorg] Move SingleSubst opentype fields to top of the classes.
2022-03-23 18:05:24 -06:00
Garret Rieger
7dfd9e7001
[reorganization] WIP move single substitution into separate files.
2022-03-23 18:05:24 -06:00
Khaled Hosny
c36844d6d9
4.1.0
2022-03-23 07:20:59 +02:00
Behdad Esfahbod
d35c73cd37
[buffer] Whitespace
2022-03-22 13:09:50 -06:00
Behdad Esfahbod
1449498e1d
[ot-font] Vertically center glyph in vertical writing fallback
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/537
2022-03-21 21:40:07 -06:00
Behdad Esfahbod
bf03d7e962
[ot-font] Use ascent+descent for fallback vertical advance
...
This matches what FreeType does.
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/537
2022-03-21 21:27:31 -06:00
Behdad Esfahbod
df42d28d18
[hmtx] Change default advance for horizontal direction to upem/2 again
2022-03-21 21:17:15 -06:00
Behdad Esfahbod
6d0e67dee0
[ot-font] Only use vmtx side-bearing if table exists
...
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/537
2022-03-21 21:07:28 -06:00
Behdad Esfahbod
f41945e313
[cmap] In collect_unicodes() of format 12/13, limit to max Unicode
...
Fixes fuzzer timeout:
https://oss-fuzz.com/testcase-detail/5062368881672192
2022-03-21 18:24:30 -06:00
Behdad Esfahbod
03085132ba
[buffer] Fix out-buffer under memory-alloc failure
...
This was broken in July refactoring of the buffer, and exposed to
ReverseChainSingleSubstFormat1 in 3807061d63
Fixes:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38800
https://bugs.chromium.org/p/chromium/issues/detail?id=1303552
2022-03-21 18:09:06 -06:00
Khaled Hosny
116cc69236
[set] Fix documentation
2022-03-22 00:15:23 +02:00
Behdad Esfahbod
90f09b1e87
[indic] Clear syllables before presentation features
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3488
2022-03-21 15:42:08 -06:00
Behdad Esfahbod
4289684cdb
[set] Fix-up previous commits
2022-03-21 15:37:05 -06:00
Andy John
1176620ba4
Move fn, fix doc.
2022-03-21 15:32:59 -06:00
Andy John
7d802994be
Remove null checks.
2022-03-21 15:32:59 -06:00
Andy John
ef588ea97b
Add option to insert a sorted arrays of values to sets.
2022-03-21 15:32:59 -06:00
Andy John
7a1e79c3ba
Fix typo.
2022-03-21 14:34:22 -06:00
Andy John
4ee00f943f
Use bit shifting instead of multiplying and dividing.
2022-03-21 14:34:22 -06:00
Andy John
3125f5ae33
Add log base 2 versions of constants.
2022-03-21 14:34:22 -06:00
Behdad Esfahbod
1ffe637a0e
[coretext] Remove dead code
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3484
2022-03-21 10:37:42 -06:00
TheBluuDot
7bdc20ec81
restores unintended addition in 43be5ba
...
restores two lines in restore in _hb_allocate_lig_id function that were unintentionally deleted in 43be5ba
2022-03-19 15:12:25 -04:00
Qunxin Liu
7cb002cb58
[subset] bug fix in prune_langsys
...
we should not cache visited langsys cause 2 different Record<Langsys>
could have different Tag while pointing to the same Langsys, a langsys
is redundant in Record<Langsys> A does not mean it's redundant in Record
B. Same thing for visited_script.
Also adding the number of features in the LangSys's feature list to the
visited langsys count so it's more accurate.
Plus some improvement in langsys compare()
2022-03-16 13:08:13 -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
21f5ef56f5
[metrics] Simplify x-height fallback
2022-03-15 10:45:50 -06:00
Behdad Esfahbod
6bf8f0a38f
[baseline] Use ot-metrics fallback API
2022-03-15 10:44:41 -06:00
Dominik Röttsches
965cf1d665
Make load_num_glyphs_from_loca conditional on HB_NO_BORING_EXPANSION
...
Fixes build errors complaining about this function being unused.
2022-03-14 15:16:35 +02:00
David Corbett
49fb8f9072
[USE] Treat visible viramas like dependent vowels
2022-03-13 14:45:27 -06:00
Khaled Hosny
1f79ba9407
4.0.1
2022-03-11 20:19:04 +02:00
Qunxin Liu
a35757c6bc
[repacker] expose hb_subset_repack() API, hb_object_t and hb_link_t structs
2022-03-10 17:26:20 -07: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
David Corbett
e5707a440c
Update IANA Language Subtag Registry to 2022-03-02
2022-03-08 13:28:25 -07:00
David Corbett
13bb46cfd5
[USE] Remove obsolete overrides
2022-03-06 16:04:18 -07:00
David Corbett
c33468d48e
[USE] Treat all gc=Cn as independent clusters
2022-03-06 10:44:37 -07:00