Behdad Esfahbod
b030dd9e88
[indic-table] Minor rename
2022-06-10 06:12:13 -06:00
Behdad Esfahbod
d414fb3328
[indic/khmer/myanmar] Add static_assert that categories match OT_*
2022-06-10 00:50:47 -06:00
Behdad Esfahbod
15ea4ccb04
[indic-like] Add note about replicated values
2022-06-09 17:47:46 -06:00
Behdad Esfahbod
3289e81532
[indic] Use categories from the machine
2022-06-09 17:46:15 -06:00
Behdad Esfahbod
37217fc9be
[indic-generator/myanmar] Move most Myanmar category overrides to generator
2022-06-09 17:27:43 -06:00
Behdad Esfahbod
c136227f57
[indic-generator/khmer] Move Khmer overrides to generator
2022-06-09 13:38:34 -06:00
Behdad Esfahbod
40aa4e8320
[indic/khmer/myanmar] Add Khmer/Myanmar categories to indic_category_t
2022-06-09 13:30:00 -06:00
Behdad Esfahbod
25793075e2
[indic-generator] Move Khmer/Myanmar vowel categories to the generator
2022-06-09 13:11:46 -06:00
Behdad Esfahbod
a6c82d4b8c
[myanmar] Simplify to not use position info from the indic table for shaping
2022-06-09 13:04:28 -06:00
Behdad Esfahbod
10cd8ac0e5
[indic-generator] Move matra category overrides to generator
2022-06-09 12:27:31 -06:00
Behdad Esfahbod
c4e4f1d387
[indic-generator] Move SMVD position overrides to generator
2022-06-09 11:58:37 -06:00
Behdad Esfahbod
2963154c15
[indic-generator] Add a couple comments
2022-06-09 11:53:24 -06:00
Behdad Esfahbod
91d6f45bc9
[indic-generator] Move some position overrides to the generator
2022-06-09 11:52:56 -06:00
Behdad Esfahbod
0ec4dcb93d
[indic-generator] Ouch
...
Not sure how this was passing tests still.
2022-06-09 11:52:25 -06:00
Behdad Esfahbod
f0269e0f1b
[indic-generator] Move Ra handling to the generator
2022-06-09 11:52:03 -06:00
Behdad Esfahbod
419d2146c2
[indic-generator] Cap off what categories have positions
...
This was left off of the commit moving Indic categories to the generator.
It didn't fail any tests, but adding it back because it has implications
possibly.
2022-06-09 11:51:38 -06:00
Behdad Esfahbod
e1d965d527
[indic-generator] Move position mapping to generator
2022-06-09 11:51:15 -06:00
Behdad Esfahbod
4907514026
[indic-generator] Move category overrides to generator
2022-06-09 11:50:30 -06:00
Behdad Esfahbod
58eeb3a180
[indic-generator] Move category mapping to generator
2022-06-09 11:49:57 -06:00
Behdad Esfahbod
899ca24387
[myanmar] Remove duplication of categories in the Myanmar shaper
2022-06-09 07:02:54 -06:00
Behdad Esfahbod
ce0528c0ff
[khmer] Remove duplication of categories in the Khmer shaper
2022-06-09 07:02:54 -06:00
Behdad Esfahbod
17c80035ad
Revert "[cplusplus] Internally allow using hb_unique_ptr with hb_free()"
...
This reverts commit b5f621b08d
.
A build was failing with clang 14 for Firefox apparently, sigh.
https://github.com/harfbuzz/harfbuzz/issues/3647
2022-06-09 04:17:38 -06:00
Behdad Esfahbod
9fc9b1ece4
[layout] Minor, add using Lookup to GSUB/GPOS
2022-06-08 12:37:31 -06:00
Behdad Esfahbod
d4ddb3acf8
Comments typos
2022-06-08 11:45:33 -06:00
Behdad Esfahbod
4119f73c21
[subset/layout] Rename dispatch_closure_lookups_recurse_func to dispatch_recurse_func<>
2022-06-08 18:42:09 +01: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
6a1edb8c97
[set-digest] One more rename
2022-06-08 11:38:17 -06:00
Behdad Esfahbod
6453737b0e
[set-digest] Rename lowest_bits to bits_pattern
2022-06-08 11:37:12 -06:00
Behdad Esfahbod
2a061cb9cc
[set-digest] Improve documentation
2022-06-08 11:35:50 -06:00
Behdad Esfahbod
42051fe18a
[layout] s/inplace/always_inplace/g
2022-06-08 04:00:21 -06:00
Behdad Esfahbod
21346af01d
[layout-cache] Adjust cost-function for recent change
2022-06-07 14:41:39 -06:00
Behdad Esfahbod
bfee6839b0
[layout-cache] Cache lookahead, not input, classdef in ChainContextFormat2
...
From the commit:
+ /* For ChainContextFormat2 we cache the LookaheadClassDef instead of InputClassDef.
+ * The reason is that most heavy fonts want to identify a glyph in context and apply
+ * a lookup to it. In this scenario, the length of the input sequence is one, whereas
+ * the lookahead / backtrack are typically longer. The one glyph in input sequence is
+ * looked-up below and no input glyph is looked up in individual rules, whereas the
+ * lookahead and backtrack glyphs are tried. Since we match lookahead before backtrack,
+ * we should cache lookahead. This decisions showed a 20% improvement in shaping of
+ * the Gulzar font.
https://github.com/harfbuzz/harfbuzz/pull/3636
2022-06-07 11:41:05 -06:00
Behdad Esfahbod
39820af72f
[layout] Add HB_NO_OT_LAYOUT_LOOKUP_CACHE to disable caching lookups
...
Enabled when optimize-size profile is enabled.
2022-06-07 10:27:55 -06:00
Behdad Esfahbod
845279c34c
Merge pull request #3636 from harfbuzz/classdef-cache
...
Classdef cache
2022-06-07 16:40:22 +01:00
Behdad Esfahbod
b59e25f25e
[cff] Try fixing Heap-buffer-overflow in CFF::Charset::collect_glyph_to_sid_map
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47790
2022-06-07 09:27:44 -06:00
Behdad Esfahbod
c8fb048f79
[gsubgpos] Document caching
2022-06-07 09:20:27 -06:00
Behdad Esfahbod
5963cf4469
[gsubgpos] Merge cache_enter and cache_leave entry points
...
Saves a pointer per subtable
2022-06-07 09:17:14 -06:00
Behdad Esfahbod
d4c09e9a87
[gsubgpos] Remove apply_cached() entry point
...
Just use a bool to apply()
2022-06-07 09:17:14 -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
Xavier Claessens
4266f4e29a
Fix check-* scripts when harfbuzz is a subproject
...
When harfbuzz is a subproject paths are in the form
"subprojects/harfbuzz/src/...". Instead of removing "src/" prefix, take
the absolute path and make it relative to current source dir.
This fix regression introduced in
https://github.com/harfbuzz/harfbuzz/pull/3394 .
2022-06-06 16:53:29 +01: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
104dc85a22
[buffer] Add try_allocate for buffer variables
2022-06-05 08:15:46 -06:00
Behdad Esfahbod
b5f621b08d
[cplusplus] Internally allow using hb_unique_ptr with hb_free()
...
...for arbitrary types.
2022-06-05 08:15:31 -06:00
Behdad Esfahbod
f18eb000d3
[buffer] Mark a variable as unused
...
Weird. Somehow our HB_TINY bot started erring as this var being unused
in non-debug builds. Not sure why now...
In file included from src/hb-ot-map.hh:32:0,
from src/hb-ot-shape.hh:32,
from src/hb-aat-layout.hh:32,
from src/hb-aat-layout.cc:30,
from src/harfbuzz.cc:1:
src/hb-buffer.hh: In member function ‘void hb_buffer_t::assert_var(unsigned int, unsigned int)’:
src/hb-buffer.hh:192:18: error: unused variable ‘bits’ [-Werror=unused-variable]
unsigned int bits = (1u<<end) - (1u<<start);
^~~~
cc1plus: some warnings being treated as errors
Error: Process completed with exit code 1.
2022-06-05 07:06:07 -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
92e81ab1df
[indic/khmer/myanmar] Shift category numbers around to avoid overlap
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3632
2022-06-05 01:14:32 -06:00
Behdad Esfahbod
d6dbc0d175
[gi/ft] Silence warnings
...
gi doesn't understand that FT_Face is a pointer, and not bare struct.
So it skips these APIs anyway. Mark skip to silense the warning.
../src/hb-ft.cc:242: Warning: HarfBuzz: hb_ft_font_get_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
../src/hb-ft.cc:264: Warning: HarfBuzz: hb_ft_font_lock_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
2022-06-05 00:58:53 -06:00
Behdad Esfahbod
f78a25098a
[gi] Remove Xconstructor annotations
2022-06-05 00:55:35 -06:00
Behdad Esfahbod
cb961eac5c
[configs] Fix builds with HB_NO_BUFFER_SERIALIZE but not HB_NO_BUFFER_VERIFY
...
e986c12075 (commitcomment-75339317)
2022-06-05 00:45:29 -06:00
Behdad Esfahbod
67852504f6
[indic/myanmar] No-op update to machines
2022-06-04 09:27:45 -06:00
Behdad Esfahbod
20a61ca447
[myanmar] Fold D category into GB
...
Trying to free a byte the buffer vars, for caching of lookups.
Part of https://github.com/harfbuzz/harfbuzz/issues/3633
2022-06-04 09:27:37 -06:00
Behdad Esfahbod
f9b643f6b2
[layout] s/hb_get_subtables_context_t/hb_accelerate_subtables_context_t/g
2022-06-04 09:27:31 -06:00
Behdad Esfahbod
d4dfb8c1f1
[arabic] Free up buffer variable earlier
2022-06-04 09:27:23 -06:00
Behdad Esfahbod
cc7ebb0ffa
Remove remaining mention to complex shapers in the code
...
https://github.com/harfbuzz/harfbuzz/pull/3628#issuecomment-1146248037
2022-06-04 05:42:58 -06:00
Behdad Esfahbod
b39b5f2f31
[name] Implement approximate language matching
...
Very rudimentary.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3354
2022-06-03 13:00:33 +01:00
Behdad Esfahbod
40d7d56e53
[subset-input] Minor move
2022-06-03 05:40:18 -06:00
Behdad Esfahbod
40193adbfc
[subset] Update default features list
2022-06-03 05:35:19 -06:00
Behdad Esfahbod
5bfb0b721c
Rename s/shape-complex/shaper/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
44be1e5dfb
s/SHAPE_COMPLEX/SHAPER/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
6fbb552156
s/FLAG_COMPLEX/FLAG_SHAPER/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
6d9e94d2b8
s/hb_ot_shape_complex_categorize/hb_ot_shaper_categorize/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
a560182cb3
s/complex_var/ot_shaper_var/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
13fbed29e4
s/HB_OT_SHAPE_COMPLEX_MAX_COMBINING_MARKS/HB_OT_SHAPE_MAX_COMBINING_MARKS/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
44a7b3b773
s/ot_complex_shaper/ot_shaper/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
e5161977a4
s/COMPLEX_SHAPER/OT_SHAPER/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
f3a8b7f36b
[algs] Test hb_hash()
2022-06-03 02:21:46 -06:00
Behdad Esfahbod
215a0afad1
[algs] Remove unused hb_coerce()
2022-06-03 01:48:46 -06:00
Behdad Esfahbod
5dc12d7d8d
[cmap] Rewrite set_for() slightly
2022-06-03 01:37:02 -06:00
Behdad Esfahbod
9552955e08
Add an unlikely
2022-06-03 01:33:01 -06:00
Behdad Esfahbod
88f00ecb84
[map] Fix iter_ref () and test it
2022-06-03 01:30:27 -06:00
Behdad Esfahbod
a42c624fca
Convert one final use of hashmap to unique_ptr
2022-06-03 01:22:34 -06:00
Behdad Esfahbod
f13a79548f
[subset] Convert another use of hashmap to unique_ptr
2022-06-03 01:17:20 -06:00
Behdad Esfahbod
25f57230d5
[map] Return references from new iter_ref()
2022-06-03 01:14:35 -06:00
Behdad Esfahbod
a7a688616a
[cmap] Convert another map use to unique_ptr
2022-06-02 18:59:15 -06:00
Behdad Esfahbod
997d9cc466
[map] Make unique_ptr hashable
2022-06-02 18:47:42 -06:00
Behdad Esfahbod
8bb2a3326e
[map] Remove unneeded assignment
2022-06-02 15:18:23 -06:00
Behdad Esfahbod
d7785a6da0
[cplusplus] Add unique_ptr
2022-06-02 12:43:04 -06:00
Behdad Esfahbod
bca710e8ad
[gsubgpos] Use map has() instead of get() when appropriate
2022-06-02 12:06:25 -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
a42a703cb6
[shared_ptr] Clear p in destructor
2022-06-02 12:00:43 -06:00
Behdad Esfahbod
f0a0dcad70
[test-map] Test hashing shared_ptr
2022-06-02 11:25:56 -06:00
Behdad Esfahbod
4c1b5d9ece
Whitespace
2022-06-02 11:25:11 -06:00
Behdad Esfahbod
b9230c5425
[map] Fix has()
2022-06-02 11:23:38 -06:00
Behdad Esfahbod
97ea10a63a
Remove old nullptr_t hacks
...
Were used for hashmap before.
2022-06-02 11:23:38 -06:00
Behdad Esfahbod
3f78a71ca0
[map] Finally! Just can usd hb_hashmap_t<obj_t, obj_t>
...
Yay!
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
0ccab339f9
[map] Remove invalid-key template arguments since unused
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
3f6a8f69a0
[map] Remove invalid-key special-casing
...
Can override invalid-key value now.
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
5328b73fba
[map] Reduce map item size again
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
4f58ae60eb
[map] Keep is_used, is_tombstone as booleans
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
7ec3aad20f
[shared_ptr] Fix hb_hash() crash on nullptr
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
4d646773cf
[cplusplus] Make .reference() return T*
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
7e7a4a8f05
[cplusplus] Fix build
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
a089d91fda
[hash] Adjust hash for shared_ptr, implement it for std::hash
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
e037325efb
[hash] Remove custom hash, rely on std::hash
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
0d3d5b62ae
[cplusplus] Adjustments
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
0b35940a72
Make hb::shared_ptr hashable
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
3817bdfd7f
[hb.hh] Include hb-cplusplus.hh
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
e0f3cab246
[cplusplus] Add hb-cplusplus.hh
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2152
2022-06-02 18:22:05 +01:00
Garret Rieger
98aaecd397
[subset] fix data race touching Crap() in cff subsetting.
2022-06-01 22:50:35 +01:00