Garret Rieger
ebb64b50da
[repacker] size buffer correctly.
2022-07-26 12:22:17 -06:00
Garret Rieger
815bb82b4d
[repack] fix incorrect extension object bounds.
2022-07-26 12:22:17 -06:00
Garret Rieger
7e6f6c3e88
[repack] fix new node bounds.
2022-07-26 12:22:17 -06:00
Garret Rieger
b1d38a6d0b
[repack] WIP implement extension promotion mechanism.
2022-07-26 12:22:17 -06:00
Garret Rieger
3f7a74ff40
[repacker] WIP extension promotion implementation.
2022-07-26 12:22:17 -06:00
Behdad Esfahbod
1945b400da
[cpluscplus] Wrap hb-subset types as well
...
Also changes signature of get_user_data of hb.h types to take const
object. This is safe.
2022-07-25 10:45:55 -06:00
Behdad Esfahbod
1ac21246a7
[hb-ft] Fix bitmap font rendering with hb_ft_font_changed()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3754
Fixes https://github.com/harfbuzz/harfbuzz/issues/3755
2022-07-25 08:40:02 -06:00
Behdad Esfahbod
94de328011
[GSUB/GPOS] Adjust buffer message
2022-07-24 18:51:55 -06:00
Behdad Esfahbod
bc80e4b923
[GSUB/GPOS] More buffer message for contextuals
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3753
2022-07-24 18:50:14 -06:00
Behdad Esfahbod
59b05359cd
[GSUB/GPOS] Add more buffer messages
...
Behind HB_BUFFER_MESSAGE_MORE.
https://github.com/harfbuzz/harfbuzz/pull/3495
2022-07-24 18:39:30 -06:00
Behdad Esfahbod
0722b627f4
[buffer] Return delta from sync_so_far
2022-07-24 17:35:44 -06:00
Behdad Esfahbod
c55c019771
[buffer] Add assertions of buffer sync status to message_impl
2022-07-24 16:30:33 -06:00
Behdad Esfahbod
da9edce84c
[buffer] Add sync_so_far()
...
This removes separate out-buffer, at the cost of possibly changing
idx.
2022-07-24 16:30:19 -06:00
Khaled Hosny
cbccadba8d
5.0.1
2022-07-23 22:09:06 +02:00
Behdad Esfahbod
61d0c54701
[ft] Pass design, not normalized, coords to freetype
...
Needed for avar2 to work.
2022-07-23 13:26:18 -06:00
Behdad Esfahbod
473a5e5651
[font] Fix design-coords
...
Ouch!
2022-07-23 13:26:18 -06:00
Khaled Hosny
40b21edf48
5.0.0
2022-07-23 19:53:14 +02:00
Behdad Esfahbod
4cb83967aa
[subset/ClassDefFormat2] Fix timeout
...
Fixes https://oss-fuzz.com/testcase-detail/5417800474165248
2022-07-23 11:00:20 -06:00
Behdad Esfahbod
32c85b8c8c
[avar2] Fix mapping when coords length don't match
...
Ouch.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49407
2022-07-23 10:50:26 -06:00
Behdad Esfahbod
06c3ec0a19
[avar2] Minor sanitize rewrite
2022-07-23 10:45:28 -06:00
Behdad Esfahbod
f94a3ba1db
[varStore] Better protect against HB_NO_VAR builds
2022-07-23 10:36:08 -06:00
Behdad Esfahbod
17863bd16b
[config/avar2] add HB_NO_VARIATIONS2
2022-07-22 22:38:08 -06:00
Behdad Esfahbod
5a9c7930ef
Add HB_NO_BEYOND_64K
2022-07-22 21:33:31 -06:00
Behdad Esfahbod
c76fd3c5f9
[avar2] Add link to "Spec".
2022-07-22 15:29:57 -06:00
Behdad Esfahbod
edca52c3b6
[avar2] Use a varStore cache
2022-07-22 15:29:57 -06:00
Behdad Esfahbod
59f8afa73e
[avar2] Remove XXX item
2022-07-22 15:29:57 -06:00
Behdad Esfahbod
d6c4f757a4
[avar2] Clamp out values
2022-07-22 15:29:57 -06:00
Behdad Esfahbod
d0e2ad9297
[avar] Pre-alloc vector
2022-07-22 15:29:57 -06:00
Behdad Esfahbod
2a877b554a
[avar2] First stab at mapping v2 values
2022-07-22 15:29:57 -06:00
Behdad Esfahbod
c3eb6713e9
[avar2] Add v2 structure and sanitize
2022-07-22 15:29:57 -06:00
Behdad Esfahbod
c9e843942e
[min/max] Don't forward argument
2022-07-22 09:01:28 -06:00
Behdad Esfahbod
cb5ca6be29
[ft] Actually call check_changed() from _changed()
...
Ouch!
Fixes https://github.com/harfbuzz/harfbuzz/issues/3746
2022-07-22 05:48:27 -06:00
Behdad Esfahbod
fd535a240b
[ft] Remove check_changed from get_glyph_shape()
...
Leftover.
2022-07-22 05:48:12 -06:00
Behdad Esfahbod
7cdde6a241
[ClassDef] Write a loop as range for
2022-07-21 17:18:45 -06:00
Behdad Esfahbod
0cc2f3c218
[algs] Remove hb_pair_t()
2022-07-21 16:46:45 -06:00
Behdad Esfahbod
9eab3ac72d
[CoverageFormat2] Remove hand-written loop
...
While on a fuzzer-found test case (added) that loop was faster,
on real fonts, including NotoNastaliq in our benchmark, it was
actually slower, which intuitively I would have expected.
Still no idea why on that fuzzer case it's faster though. :(
2022-07-21 12:36:53 -06:00
Behdad Esfahbod
bbb4db90dd
[Coverage/SingleSubst] Move hand-written loop to Coverage
2022-07-21 12:34:46 -06:00
Behdad Esfahbod
7b95783efb
[Coverage] Internal rename
2022-07-21 12:18:51 -06:00
Behdad Esfahbod
afa65f2903
[Coverage] Minor type change
2022-07-21 12:17:08 -06:00
Behdad Esfahbod
b38587aa0b
[Coverage] Internal renames
2022-07-21 12:14:06 -06:00
Behdad Esfahbod
84d38df828
[Coverage] Minor use range-based loop
2022-07-21 12:12:04 -06:00
Behdad Esfahbod
b017b73ffe
[Coverage] Minor remove a couple unnecessary as_array()'s
2022-07-21 12:06:55 -06:00
Behdad Esfahbod
9e650b4e0c
[Coverage] Speedup intersect_set
2022-07-21 12:01:52 -06:00
Behdad Esfahbod
efa388074d
[subset/SingleSubsetFormat1] Use Coverage.intersect_set
2022-07-21 11:52:36 -06:00
Behdad Esfahbod
00dfbbce1c
[Coverage] Rename and templatize intersected_coverage_glyphs
2022-07-21 11:45:05 -06:00
Behdad Esfahbod
d0eb273791
[subset/GSUB/GPOS] Use more intersected_coverage_glyphs()
2022-07-21 11:24:56 -06:00
Behdad Esfahbod
450d834679
[subset/PairPosFormat1] Speed up significantly
2022-07-21 11:05:35 -06:00
Behdad Esfahbod
5d7556e184
Revert "[subst/SingleSubstFormat1] Rewrite nicer"
...
This reverts commit bababe1072
.
The hand-written code is still much faster :(.
2022-07-21 10:58:36 -06:00
Behdad Esfahbod
71ce931e6d
[PairPos] Don't compute newFormat
...
It was wrong, because it would be writing wrong values.
Test suite doesn't seem to catch any.
2022-07-21 10:41:29 -06:00
Behdad Esfahbod
02ca025443
[layout] Add large_int to Types
2022-07-21 10:30:23 -06:00
Behdad Esfahbod
bababe1072
[subst/SingleSubstFormat1] Rewrite nicer
2022-07-21 10:25:27 -06:00
Behdad Esfahbod
cf123e6a0d
[Coverage] Add get_population ()
2022-07-21 10:24:04 -06:00
Behdad Esfahbod
2ad3c0c770
Fix uninitialized variable
2022-07-21 09:46:25 -06:00
Behdad Esfahbod
fa471043fc
[subset] Fix previous commit
2022-07-20 22:42:18 -06:00
Behdad Esfahbod
c4d2ef9004
[subset] Speed up subsetting of SingleSubstFormat1_3
2022-07-20 22:36:35 -06:00
Behdad Esfahbod
d01e6babe6
[subset] Speed up SingleSubstFormat1_3 closure
2022-07-20 22:17:33 -06:00
Qunxin Liu
0f80076937
[subset] Do not repeat COLR table closure
2022-07-20 19:17:34 -06:00
Behdad Esfahbod
9fc31db6fa
[blob] Initialize members if ever on the stack
2022-07-20 16:03:02 -06:00
Behdad Esfahbod
60a9175f2c
[blob] Remove fini_shallow()
2022-07-20 15:59:46 -06:00
Behdad Esfahbod
bcd59b5142
[set/map] Remove init_shallow/fini_shallow()
2022-07-20 15:58:28 -06:00
Behdad Esfahbod
79b23cc25d
Fix another leak
2022-07-20 15:38:34 -06:00
Behdad Esfahbod
3fad942ee2
Try fix leak
2022-07-20 15:26:32 -06:00
Behdad Esfahbod
e1b5f2f806
[object] Call destructor in hb_object_destroy()
2022-07-20 15:07:55 -06:00
Behdad Esfahbod
9ea4ab6051
[object] Call constructor
2022-07-20 14:57:32 -06:00
Behdad Esfahbod
61c0438425
[map] Allow geting non-const value pointer out with has()
2022-07-20 14:43:58 -06:00
Behdad Esfahbod
00cfc5c17d
[map] Don't set out value in has() if not found
2022-07-20 14:38:28 -06:00
Behdad Esfahbod
485f043211
[map] Enable using hashmap with unique_ptr
2022-07-20 14:34:55 -06:00
Behdad Esfahbod
53fd4c9236
[set] A variable rename
2022-07-20 13:33:49 -06:00
Behdad Esfahbod
6826b2c3fd
[gsubgpos/closure] Minor condition use bool operator
2022-07-20 13:25:34 -06:00
Behdad Esfahbod
55a1e0bb11
[ot-map] Use hb_array for a return value
2022-07-20 13:15:55 -06:00
Behdad Esfahbod
8d923363db
[layout] Reduce number of closure rounds
2022-07-20 12:09:00 -06:00
Behdad Esfahbod
aae8c74e05
[>64k:layout:SingleSubstFormat3] Fix masking
...
https://github.com/be-fonts/boring-expansion-spec/issues/31
2022-07-20 11:51:27 -06:00
Behdad Esfahbod
3c137ef041
[GPOS/CursivePos] Fix unsafe-to-break marking
...
Fixes test.
2022-07-20 11:29:30 -06:00
Behdad Esfahbod
5998cd00c8
[hebrew] Break out of reordering loop when pattern found
2022-07-20 11:16:32 -06:00
Behdad Esfahbod
d861303797
[hebrew] Comment
2022-07-20 10:57:12 -06:00
Behdad Esfahbod
c60d810d50
[hebrew] Implement Jerusalem mark reordering
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2947
2022-07-20 10:25:31 -06:00
Khaled Hosny
605bb1ee3d
[subset] Add amalgam harfbuzz-subset.cc
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3733
2022-07-19 17:15:35 -06:00
Qunxin Liu
712bfa8872
build fix for HB_NO_VAR
2022-07-19 15:16:37 -06:00
Behdad Esfahbod
798a0c8a58
Fix build
2022-07-19 14:40:47 -06:00
Behdad Esfahbod
8737dea4d9
[>64k:layout:GDEF] Implement version 2
...
Implements https://github.com/be-fonts/boring-expansion-spec/issues/36
Subset does NOT lower format.
2022-07-19 14:39:47 -06:00
Behdad Esfahbod
8080e01afc
[>64k:layout] Templatize GDEFVersion1
2022-07-19 14:35:58 -06:00
Behdad Esfahbod
1665cf6bc4
[>64k:layout] Split GDEFVersion1
...
https://github.com/be-fonts/boring-expansion-spec/issues/36
2022-07-19 14:21:48 -06:00
Behdad Esfahbod
1de5591cf7
[>64k:layout] Prepare GDEF for templatizing
...
https://github.com/be-fonts/boring-expansion-spec/issues/36
2022-07-19 14:21:48 -06:00
Khaled Hosny
c0d60bd496
[meta] Fix warning with emscripten
...
For whatever reason, em++ takes the first branch and spouts a gazillion
warnings like:
./harfbuzz/src/hb-vector.hh:229:20: warning: builtin __has_trivial_assign is deprecated; use __is_trivially_assignable instead [-Wdeprecated-builtins]
hb_enable_if (hb_is_trivially_copy_assignable(T))>
^
./harfbuzz/src/hb-meta.hh:193:44: note: expanded from macro 'hb_is_trivially_copy_assignable'
2022-07-19 11:33:54 -06:00
Behdad Esfahbod
91c60802e6
[open-type] Fix overflow check
...
Without the cast, the compiler is within its rights to reason that
overflow didn't happen and optimize away the check, as clang was.
2022-07-18 22:24:28 -06:00
Behdad Esfahbod
4279304a62
[stat] Fix double-promotion warnings
2022-07-18 22:20:06 -06:00
Behdad Esfahbod
54e9ab4a91
[GPOS/Cursive] Fix breaking of parent-child attachment
...
Mostly fixes https://github.com/harfbuzz/harfbuzz/issues/2469
2022-07-18 18:57:14 -06:00
Behdad Esfahbod
c2baf2796c
[arabic] Make more features F_MANUAL_ZWJ
...
The change to `ccmp` fixes shaping of certain sequences with
Calibri on Windows 11. Addition of `liga` and `clig` is
speculative.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3530
2022-07-18 15:41:20 -06:00
Behdad Esfahbod
ddeef8c875
[test-ot-glyphname] Fix return value
2022-07-18 15:13:47 -06:00
Qunxin Liu
be8e8e8c80
[instance] prune name tables after axes pinned at fixed locations
...
Restricting axes to ranges is not supported yet.
2022-07-18 14:59:07 -06:00
Qunxin Liu
df55f840cb
[instance] instantiate STAT table when axes are pinned at fixed locations
...
restricting ranges is not supported yet.
2022-07-18 14:59:07 -06:00
Qunxin Liu
2a4773e43d
add option "--instance", store axes_location in subset_plan and drop all
...
variation tables when all axes are pinned at default
2022-07-18 14:59:07 -06:00
Behdad Esfahbod
5744e951fc
[gir] Skip graphite API
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2557
2022-07-18 14:54:44 -06:00
Behdad Esfahbod
3723b8544b
[cff] Better max op counting
2022-07-18 14:00:14 -06:00
Behdad Esfahbod
3c84aa8416
[cff] Add a max work counter
...
Set to 10,000 per interpretation right now.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3700
Fixes https://oss-fuzz.com/testcase-detail/5667125715927040
2022-07-18 13:57:59 -06:00
Behdad Esfahbod
89de8c700f
[CoverageFormat2] Another fix for broken tables
...
Fixes https://oss-fuzz.com/testcase-detail/6005342714068992
2022-07-18 13:07:29 -06:00
Behdad Esfahbod
4f22397f05
[ft] A couple of introspection fixes
2022-07-18 11:03:54 -06:00
Behdad Esfahbod
f7f6d278bb
Add hb_language_matches()
...
New API:
+ hb_language_matches()
2022-07-17 22:15:42 -06:00
Behdad Esfahbod
d57ce30054
[ot-shape] Pass reference to props instead of pointer
...
Since cannot be nullptr.
2022-07-17 21:56:56 -06:00
Behdad Esfahbod
a972d05d7e
[aat] Fix build
2022-07-17 21:42:04 -06:00
Behdad Esfahbod
2124ad8906
[aat/morx] Implement language-specific forms
...
Test on Mac with, eg.
$ hb-view /Library/Fonts/BigCaslon.ttf -u 107
vs
$ hb-view /Library/Fonts/BigCaslon.ttf -u 107 --language pl
Fixes https://github.com/harfbuzz/harfbuzz/issues/1373
2022-07-17 21:32:27 -06:00
Behdad Esfahbod
d8574b44cc
[CoverageFormat2] Fix iterator to avoid infinite loop
...
on invalid data.
Fixes https://oss-fuzz.com/testcase-detail/5304497047470080
2022-07-17 18:44:27 -06:00
Behdad Esfahbod
b475a2ab29
[array] Adjust operator !=
2022-07-17 18:44:11 -06:00
Behdad Esfahbod
9518d602f3
[atomic] Disable compiler memory barrier on MSVC
...
It keeps giving me internal compiler error.
https://github.com/harfbuzz/harfbuzz/issues/3728
2022-07-17 17:03:40 -06:00
Behdad Esfahbod
f0707e2348
[atomic] Add compiler memory_r_barrier
...
https://github.com/harfbuzz/harfbuzz/issues/3728
2022-07-17 16:47:16 -06:00
Behdad Esfahbod
f3151b6582
[ArrayOf family] Use memory barrier before accessing array
...
Without it, the compiler was reordering and batching the read
of array length and array[0] if the 0'th member was accessed
constantly and function was inlined. This felt safe to the
compiler because HB_VAR_ARRAY is 1, but could be unsafe actually.
The memory barrier disallows that.
This was found by afl/honggfuzz address sanitizers.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49187
2022-07-17 16:22:29 -06:00
Behdad Esfahbod
90e40f24fe
[algs] Tweak attribute(packed) usage
...
Allow disabling it. Also don't cast this pointer.
2022-07-17 15:01:04 -06:00
Behdad Esfahbod
af84680f23
[GSUB] Remove a reinterpret_cast
2022-07-17 12:00:04 -06:00
Behdad Esfahbod
9843f07658
[OffsetTo] Try catching nullable offsets to unbounded types
...
Doesn't catch all cases; if type is not fully defined at
OffsetTo time, we can't know.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1300
to the best we can do.
2022-07-15 16:04:40 -06:00
Behdad Esfahbod
1327d8e3df
[layout-common] Reshuffle code so Feature is defined before it's used
2022-07-15 16:03:38 -06:00
Behdad Esfahbod
f7147835eb
[colr] Add MIN_SIZE to Paint
2022-07-15 16:03:25 -06:00
Behdad Esfahbod
e1d2facd53
[null] Add hb_has_null_size() and hb_has_min_size()
2022-07-15 16:02:58 -06:00
Behdad Esfahbod
6ed57de15c
[ft] Fix negative font sizes for bitmaps
2022-07-15 15:09:28 -06:00
Behdad Esfahbod
307ee9baff
[ft] Fix bitmap-only vertical metrics
2022-07-15 14:48:29 -06:00
Behdad Esfahbod
87d338eb61
[ft] Fix test
2022-07-15 14:26:47 -06:00
Khaled Hosny
e294200dac
[ft] Check for FT_Get_Transform at build time
2022-07-15 21:59:33 +02:00
Behdad Esfahbod
901236f721
[ft] Implement loading (color) bitmap fonts
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/489
Something about the vertical metrics is still off, not matching
hb-ot. I cannot figure out what.
2022-07-15 13:35:14 -06:00
Behdad Esfahbod
3ac110560d
[ft] Fix scale when font-sizes are negative
2022-07-15 12:48:11 -06:00
Behdad Esfahbod
d68507d062
[arabic] Pause after calt only if no rclt
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1573
2022-07-15 12:27:46 -06:00
Behdad Esfahbod
8b379ddc76
[test-iter] Add back test of OT namespace iteration
2022-07-14 16:20:04 -06:00
Garret Rieger
5363e40de1
[reorg] update build files.
2022-07-13 20:25:13 -06:00
Garret Rieger
d82ace5c6f
[reorg] add TODO to RangeRecord.
2022-07-13 20:25:13 -06:00
Garret Rieger
c1e280ea78
[reorg] Move Coverage, RangeRecord into new namespace layout.
2022-07-13 20:25:13 -06:00
Garret Rieger
9c2518988d
[repack] Don't count space isolation against round limit.
...
Restore max rounds to 20 but don't count space isolation against the limit. The number of iterations space isolation can make changes for is already bounded to a reasonable max (the number of lookups in the font) so no need to cap the number of iterations.
2022-07-13 20:24:59 -06:00
Behdad Esfahbod
a2f0723148
[GPOS] Adjust mark attachment on multiple substitution some more
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1545
2022-07-13 16:02:39 -06:00
Behdad Esfahbod
ac216972ab
[subset] Add table size blowup bound
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3091
2022-07-13 15:32:19 -06:00
Behdad Esfahbod
4b3afafb00
[array] Use hb_swap() in reverse()
2022-07-13 15:13:07 -06:00
Behdad Esfahbod
87167acfe3
Merge pull request #3704 from harfbuzz/64k
...
Towards breaking the 64k in GSUB/GPOS
2022-07-13 14:58:09 -06:00
Garret Rieger
a369ab133b
[repacker] Increase max_rounds when called via public api.
2022-07-13 14:01:42 -06:00
Behdad Esfahbod
4ee471922d
More -Wcomma fixes
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3716
2022-07-13 13:59:35 -06:00
Behdad Esfahbod
c2712ff4f5
Reorder hb_ot_shaper_t members to save 8 bytes of data per shaper
2022-07-13 13:34:11 -06:00
Behdad Esfahbod
e5f0bc8f0a
[set] Save a few kilobytes via type erasure of process()
2022-07-13 13:22:34 -06:00
Behdad Esfahbod
42da7da5ef
Fix HB_NO_SHAPER HB_NO_OT_SHAPE build
2022-07-13 12:46:36 -06:00
Behdad Esfahbod
015aecfcdd
[use-table] Port to using packtab
...
Saves around 9kb.
2022-07-13 12:24:46 -06:00
Behdad Esfahbod
0fcd1decb7
Fix file permissions
2022-07-13 12:17:35 -06:00
Behdad Esfahbod
7549d447ba
[>64k:glyf] Implement composites for >64k
...
Implements https://github.com/be-fonts/boring-expansion-spec/issues/42
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
09de94788b
[>64k:glyf] Hid composite glyphIndex
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
df7eebf40a
[>64k:layout] Fix layout of RangeRecord
...
https://github.com/be-fonts/boring-expansion-spec/issues/30
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
99f017f41d
[>64k:layout:GSUBGPOS] Implement format 2
...
Implements https://github.com/be-fonts/boring-expansion-spec/issues/58
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
9ef9fc0114
[>64k:layout] Templatize GSUBGPOSFormat1
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
5fd0a3f0b9
[>64k:layout] Templatize GSUBGPOSFormat1
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
f6c2aaeea4
[>64k:layout] Add List16OfOffsetTo
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
6d0e3e677b
[>64k:layout] Split GSUBGPOSVersion1 into own struct
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
04c5cd4085
[subset/layout] Move find_duplicate_features to subset from layout
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
1bf8fa2f1f
[>64k:layout:(Chain)Context] Implement format 4
...
Implements rest of https://github.com/be-fonts/boring-expansion-spec/issues/34
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
0f13eb1f5c
[>64k:layout] Templatize (Chain)ContextFormat1
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
d1f58e5979
[>64k:layout:(Chain)Context] Implement format 5
...
Implements part of https://github.com/be-fonts/boring-expansion-spec/issues/34
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
a90c5af9d2
[>64k:layout] Templatize (Chain)ContextFormat2
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
cc83b0b8fd
[>64k:layout:MarkBasePos/MarkMarkPos/MarkLigPos] Implement format 2
...
Implements https://github.com/be-fonts/boring-expansion-spec/issues/40
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
4b43070e2f
[>64k:layout] Templatize MarkBasePos/MarkMarkPos/MarkLigPos
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
f0d6dda5a6
[>64k:layout:PairPos] Implement format 3
...
Implements rest of https://github.com/be-fonts/boring-expansion-spec/issues/38
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
298ee47c55
[>64k:layout] Templatize PairPosFormat1
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
e9f8010fd0
[>64k:layout:PairPos] Templatize & implement format 4
...
Implements part of https://github.com/be-fonts/boring-expansion-spec/issues/38
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
ecd8bc5a9c
[>64k:layout:LigatureSubst] Implement format 2
...
Implements https://github.com/be-fonts/boring-expansion-spec/issues/33
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
9d0e9faa43
[>64k:layout] Templatable bunch of GSUBGPOS internal functions
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
429b387a6f
[>64k:layout] Support HBUINT24 in skippy_iter
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
1ef67a6d66
[gsubgpos] Remove HBUINT16 from matcher
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
704e696ad0
[>64k:layout] Templatize LigatureSubst
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
27d24212db
[>64k:layout:AlternateSubst] Implement format 2
...
Implements rest of https://github.com/be-fonts/boring-expansion-spec/issues/32
Subset does NOT lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
c53d3ad51e
[>64k:layout] Templatize AlternateSet
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
a58a48622a
[>64k:layout:MultipleSubst] Implement format 2
...
Implements part of https://github.com/be-fonts/boring-expansion-spec/issues/32
Subset is NOT updated to lower format.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
684c8fcea7
[>64k:layout] Templatize MultipleSubst
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
8775e9b4a4
[>64k:layout:SingleSubst] Implement format 3/4
...
Implements https://github.com/be-fonts/boring-expansion-spec/issues/31
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
e3caf8d50a
[>64k:layout] Templatize SingleSubst
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
ca5c8a6419
[>64k:layout:Coverage] Implement format 3/4
...
Implements rest of https://github.com/be-fonts/boring-expansion-spec/issues/30
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
25de6fb4e7
[>64k:layout:ClassDef] Implement format 3/4
...
This implements part of https://github.com/be-fonts/boring-expansion-spec/issues/30
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
9286526f37
[>64k:layout] Templatize Coverage & ClassDef
...
Have not added new formats yet.
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
e8cce9d1b3
[>64k:layout] Add SmallTypes & MediumTypes
2022-07-12 13:42:52 -06:00
Behdad Esfahbod
d8f9d51780
[hashmap] Add keys_ref() and values_ref()
2022-07-12 13:19:31 -06:00
Behdad Esfahbod
cddcb31065
[vector] Remove residual nullptr_t from when hashmap needed it
2022-07-12 13:15:38 -06:00
Behdad Esfahbod
46a36771f4
[draw] Fix leak from e0a5231657
2022-07-12 12:03:00 -06:00
Behdad Esfahbod
f8544cbfc0
[draw] Fix regression from e0a5231657
2022-07-12 11:52:33 -06:00
Behdad Esfahbod
d15041be7d
[GSUB/GPOS] Trace toplevel sanitize
2022-07-12 11:11:22 -06:00
Behdad Esfahbod
7c4e9080c0
[sanitize] Minor trace format fixup
...
This likely() is unlikely to make a difference, and obscures
the return_trace() message by writing out "something" instead
of the true/false value.
2022-07-11 21:52:41 -06:00
Matthias Clasen
d826a5920c
docs: Clarify 0xFFFF as palette index
...
Mention that a palette index of 0xFFFF
means to use the foreground color.
2022-07-10 11:08:52 -06:00
Behdad Esfahbod
6d051f4018
[layout] Simplify StructAfter<> usage
2022-07-08 14:09:04 -06:00
Behdad Esfahbod
5192294f83
.
2022-07-08 14:09:04 -06:00
Garret Rieger
29f149c16c
[subset] cache sanitized tables in subset plan to avoid sanitizing tables multiple times.
2022-07-08 13:42:38 -06:00
Behdad Esfahbod
8b349e1139
[gsubgpos] Remove HBUINT16 from match functions signatures
2022-07-08 12:05:01 -06:00
Behdad Esfahbod
f114b18c58
[gsubgpos] Break skippy_iter set_match_func into two
2022-07-08 12:04:14 -06:00
Behdad Esfahbod
8a107125a5
[layout] Make SubstLookup:serialize_single take iterators
2022-07-08 12:02:11 -06:00
Behdad Esfahbod
8a971d01e9
[layout] Use is_source_of instead of is_iterator
2022-07-08 12:01:48 -06:00
Behdad Esfahbod
0dc0da054d
[iter] Add hb_is_sorted_iterator(_of)
2022-07-08 12:01:38 -06:00
Behdad Esfahbod
2c67261723
[open-type] Add HBGlyph24
2022-07-08 12:01:26 -06:00
Behdad Esfahbod
7cfe7fe651
[null] Change null bytes for RangeRecord
...
Should be harmless.
2022-07-08 12:01:18 -06:00
Behdad Esfahbod
486555c691
[open-type] Add Array24Of<> and SortedArray24Of<>
2022-07-08 12:01:07 -06:00
Behdad Esfahbod
1e503f587b
[null] Add DECLARE_NULL_NAMESPACE_BYTES_TEMPLATE1
2022-07-08 12:00:53 -06:00
Behdad Esfahbod
ea11029a6e
[GPOS] Split LigatureArray.hh
2022-07-08 11:58:43 -06:00
Behdad Esfahbod
68b2742fe4
[GPOS] Move code around
2022-07-07 16:11:15 -06:00
Behdad Esfahbod
6a3043a0c1
Fix tests
2022-07-07 14:51:37 -06:00
Behdad Esfahbod
aa68657434
[Makefile.sources/meson.build] Sort file names
2022-07-07 14:07:45 -06:00
Behdad Esfahbod
0b0e3b30ce
[GPOS] Break down PairPosFormat1 into new layout
2022-07-07 14:06:44 -06:00
Garret Rieger
6fad6b4113
[repacker] add tests for special casing of 24bit offsets.
2022-07-06 19:18:27 +00:00
Garret Rieger
b4f561dbbf
[subset] Add some comments to find_space_roots/find_32_bit_roots methods.
2022-07-06 18:49:23 +00:00
Garret Rieger
401066bf3d
[subset] Prepare the repacker for handling 24bit offsets in GSUB/GPOS.
...
The boring expansion (https://github.com/be-fonts/boring-expansion-spec ) plans to introduce 24bit offsets into GSUB/GPOS. This changes the repacker to treat 24 bit offsets similar to 32 bit offsets and assign the top level 24 bit offsets into spaces to improve packing.
2022-07-06 18:44:40 +00:00
Behdad Esfahbod
c091d029c2
Merge pull request #3706 from lb90/dwrite-dll
...
Load DirectWrite dynamically
2022-07-06 10:51:04 -06:00
Luca Bacci
1abc14b463
Do not link with the DWrite lib
...
It's loaded dynamically now
2022-07-06 17:55:39 +02:00
Luca Bacci
c22acfa8bd
Fix function pointer typedef
2022-07-06 17:55:24 +02:00
Kleis Auke Wolthuizen
79eb0f7486
[GSUB] Fix build on GCC < 7
2022-07-06 14:00:16 +02:00
Kleis Auke Wolthuizen
3238cb744b
[GPOS] Fix build on GCC < 7
2022-07-06 14:00:16 +02:00
Luca Bacci
3e881efbe4
Revert "Revert "Revert "[hb-directwrite] Don't load dwrit.dll dynamically"""
...
This reverts commit 361a438658
.
2022-07-06 13:51:56 +02:00
Kleis Auke Wolthuizen
7b51bc95d9
[cplusplus] Fix build on GCC < 7
2022-07-06 13:12:00 +02:00
Behdad Esfahbod
386e1bbad8
Merge pull request #3699 from googlefonts/filter_scripts
...
[subset] Add support for --layout-scripts
2022-07-05 12:46:05 -06:00
Garret Rieger
30309ec8d3
[subset] add null element in _filter_tag_list.
2022-07-05 18:33:19 +00:00
Garret Rieger
216cf5946b
[subset] Allocate space for null entry in script/feature list.
2022-07-05 17:49:12 +00:00
Behdad Esfahbod
d9ab805e61
Fix LookupFlag negation
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3703
2022-07-05 11:45:10 -06:00
Behdad Esfahbod
b0cb9a1a63
Make get_leading_bearing return bool
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3496
Part of supporting >64k glyphs correctly.
2022-07-03 15:32:32 -06:00
Behdad Esfahbod
115e1a03e7
[glyf] Relax condition for matching number of coords
2022-07-03 14:45:12 -06:00
Behdad Esfahbod
800760c5bd
[glyf] Rename get_extents functions for clarity
2022-07-03 13:21:06 -06:00
Behdad Esfahbod
ab327f93b7
[glyf] Fix another bug with scaling
...
Of advances this time.
That codepath is never exercised though, if font has HVAR table.
2022-07-03 13:17:03 -06:00
Behdad Esfahbod
f46ddeba48
[hmtx/glyf] Rename side-bearing functions for clarity
2022-07-03 13:12:49 -06:00
Behdad Esfahbod
23435d5285
[hvar] Rename advance function for clarity
2022-07-03 13:04:27 -06:00
Behdad Esfahbod
9f974cae4a
[hvar] Rename lsb function for clarity
2022-07-03 13:03:12 -06:00
Behdad Esfahbod
ab5ce64313
[VVAR] Rename vorg function for clarity
2022-07-03 13:00:22 -06:00
Behdad Esfahbod
b2d60cbd6e
[glyf] Rename advance functions for clarity
2022-07-03 12:56:48 -06:00
Behdad Esfahbod
35c00c1216
[hmtx] Rename advance functions for clarity
2022-07-03 12:54:17 -06:00
Behdad Esfahbod
6b82d4faa1
[glyf] Make an optional argument non-optional
2022-07-03 12:45:27 -06:00
Behdad Esfahbod
3ef590808f
[glyf] Internal flip a variable
2022-07-03 12:44:24 -06:00
Behdad Esfahbod
b07fa2bb1a
[ot-font] Respect VORG even if it has no variations
2022-07-03 12:39:55 -06:00
Behdad Esfahbod
71d52e10aa
[var] Fix getting side-bearing variations
...
In HVAR/VVAR, if the side-bearing mappings are null, it means the
table does not have them and they should be loaded from glyf table.
Previous logic was returning zer0.
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/1694
2022-07-03 12:39:55 -06:00
Behdad Esfahbod
78b4f39821
[glyf] Fix confusion between scaled vs unscaled lsb
...
Was always broken.
2022-07-03 12:39:55 -06:00
Behdad Esfahbod
6665881c7d
[glyf] Change side-bearing rounding
2022-07-03 12:39:55 -06:00
Behdad Esfahbod
0a295fcde6
[var] Fix DeltaSetIndexMapFormat1
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3692
2022-07-01 17:16:24 -06:00
Behdad Esfahbod
351cccdb75
[buffer-deserialize] Deserialize glyph flags
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1482
2022-07-01 16:52:49 -06:00
Behdad Esfahbod
5134041f21
[deserialize-json] Make it actually work!
...
Was not correctly deserializing glyph names as it was not dropping
double-quotes from glyph name before parsing.
2022-07-01 16:48:47 -06:00
Behdad Esfahbod
534b0911f7
[aat-layout] Add an unlikely()
2022-07-01 16:20:31 -06:00
Stephan Bergmann
14b018124c
hb_graphite2_cluster_t::advance can apparently be negative
...
...as seen with HarfBuzz used by LibreOffice, with `instdir/program/soffice
--headless --convert-to pdf` of doc/abi6073-2.doc from the LibreOffice crash-
testing corpus when run under UBSan,
> hb-graphite2.cc:361:15: runtime error: -1024 is outside the range of representable values of type 'unsigned int'
> #0 in _hb_graphite2_shape at workdir/UnpackedTarball/harfbuzz/src/hb-graphite2.cc:361:15
> #1 in _hb_shape_plan_execute_internal(hb_shape_plan_t*, hb_font_t*, hb_buffer_t*, hb_feature_t const*, unsigned int) at workdir/UnpackedTarball/harfbuzz/src/./hb-shaper-list.hh:38:1
> #2 in hb_shape_plan_execute at workdir/UnpackedTarball/harfbuzz/src/hb-shape-plan.cc:453:14
> #3 in hb_shape_full at workdir/UnpackedTarball/harfbuzz/src/hb-shape.cc:139:19
> #4 in GenericSalLayout::LayoutText(ImplLayoutArgs&, SalLayoutGlyphsImpl const*) at vcl/source/gdi/CommonSalLayout.cxx:495:23
> #5 in OutputDevice::getFallbackLayout(LogicalFontInstance*, int, ImplLayoutArgs&, SalLayoutGlyphs const*) const at vcl/source/outdev/font.cxx:1232:21
> #6 in OutputDevice::ImplGlyphFallbackLayout(std::unique_ptr<SalLayout, std::default_delete<SalLayout> >, ImplLayoutArgs&, SalLayoutGlyphs const*) const at vcl/source/outdev/font.cxx:1300:48
> #7 in OutputDevice::ImplLayout(rtl::OUString const&, int, int, Point const&, long, long const*, SalLayoutFlags, vcl::TextLayoutCache const*, SalLayoutGlyphs const*) const at vcl/source/outdev/text.cxx:1332:22
> #8 in lcl_CreateLayout(SwTextGlyphsKey const&, __gnu_debug::_Safe_iterator<std::_Rb_tree_iterator<std::pair<SwTextGlyphsKey const, SwTextGlyphsData> >, std::__debug::map<SwTextGlyphsKey, SwTextGlyphsData, std::less<SwTextGlyphsKey>, std::allocator<std::pair<SwTextGlyphsKey const, SwTextGlyphsData> > >, std::bidirectional_iterator_tag>) at sw/source/core/txtnode/fntcache.cxx:233:33
> #9 in SwFntObj::GetCachedSalLayoutGlyphs(SwTextGlyphsKey const&) at sw/source/core/txtnode/fntcache.cxx:257:12
> #10 in SwFont::GetTextBreak(SwDrawTextInfo const&, long) at sw/source/core/txtnode/fntcache.cxx:2551:58
> #11 in SwTextSizeInfo::GetTextBreak(long, o3tl::strong_int<int, Tag_TextFrameIndex>, unsigned short, vcl::TextLayoutCache const*) const at sw/source/core/text/inftxt.cxx:450:20
> #12 in SwTextGuess::Guess(SwTextPortion const&, SwTextFormatInfo&, unsigned short) at sw/source/core/text/guess.cxx:205:26
> #13 in SwTextPortion::Format_(SwTextFormatInfo&) at sw/source/core/text/portxt.cxx:305:32
> #14 in SwTextPortion::Format(SwTextFormatInfo&) at sw/source/core/text/portxt.cxx:456:12
> #15 in SwLineLayout::Format(SwTextFormatInfo&) at sw/source/core/text/porlay.cxx:260:31
(where in frame #4 GenericSalLayout::LayoutText, pHbBuffer->props.direction is
HB_DIRECTION_RTL, in case that is relevant).
It is unclear to me whether it is sufficient to only change
hb_graphite2_cluster_t::advance from signed to unsigned int, as there are other
unsigned int variables (like curradv in _hb_graphite2_shape) whose value depend
on hb_graphite2_cluster_t::advance, and which thus might also become negative.
But unlike the float -> unsigned int conversion that UBSan warned about here
(where gr_slot_origin_X() and xscale are float), those are signed int ->
unsigned int conversions that do not cause undefined behavior. At least, with
this change, the above --convert-to pdf and a full `make check screenshot`
succeeded for me under without further UBSan warnings.
(For the version of HarfBuzz optionally built as part of the LibreOffice build,
this has been addressed with
<https://git.libreoffice.org/core/+/6e53e03f752c2f85283c4d47efaaf0683299783c%5E!/ >
"external/harfbuzz: hb_graphite2_cluster_t::advance can apparently be
negative.")
2022-07-01 12:00:09 -06:00
Garret Rieger
dbfd2bf327
minor.
2022-06-30 23:04:35 +00:00
Garret Rieger
79bdcbef0d
[subset] Fix GDEF version downgrade logic.
2022-06-30 22:20:32 +00:00
Garret Rieger
587969af42
[subset] Drop scripts that are not in the layout_scripts list.
2022-06-30 21:37:42 +00:00
Garret Rieger
900476c635
Move GSUB.hh GPOS.hh back into the GPOS/GSUB sub directories.
2022-06-30 15:33:20 -06: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
Garret Rieger
70e32a662f
[subset] Add layout_scripts to subset input.
2022-06-30 21:00:48 +00:00
Behdad Esfahbod
13c499cb26
[hvar] Minor internal rewiring
...
Not passing font to functions makes it more clear that they don't
scale values.
2022-06-30 14:25:09 -06:00
Garret Rieger
41d2c335bc
[subset] Apply script list filter when doing layout collection.
2022-06-30 20:24:42 +00:00
Garret Rieger
e5c8a2f4e1
[subset] Pass plan through to collect methods.
...
Allows to more easily access the filtering sets as they are added and enables propagating errors to the plan.
2022-06-30 20:14:29 +00:00
Behdad Esfahbod
aba4a4957a
[ot-font] Disable VORG variation code in HB_NO_VAR
2022-06-30 14:13:44 -06:00
Behdad Esfahbod
d5921b379b
[tt-font] Apply VVAR.vOrg variation to VORG origin
...
Mostly fixes https://github.com/harfbuzz/harfbuzz/issues/1694
2022-06-30 14:09:09 -06:00
Behdad Esfahbod
eee29f7327
[hmtx] Specialize var_table
2022-06-30 14:09:09 -06:00
Garret Rieger
1bf051ef3b
[subset] refactor feature tag filtering so it can be used for scripts as well.
2022-06-30 20:03:33 +00:00
Khaled Hosny
f6f93c30f3
[docs] Fix warning
...
These comment blocks don’t use gtk-doc syntax.
2022-06-30 08:50:59 +02: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
Behdad Esfahbod
c69ec6f5bb
[kern2] Fix sanitize issue on 32bit systems
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3483
2022-06-29 16:32:59 -06:00
Khaled Hosny
34d3d49e78
[docs] Fix Since annotation
2022-06-29 07:46:21 +02:00
Khaled Hosny
096aaa62a6
4.4.1
2022-06-29 07:30:05 +02:00
Behdad Esfahbod
050f169078
[GPOS/kerx] Call into impl namespace from kerx
2022-06-28 18:52:27 -06:00
Garret Rieger
910a137f4e
[reorg] Fix propagate_attachment_offsets definition.
2022-06-28 18:47:50 -06: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
49ddf069e0
[reorg] Move GPOS reverse_cursive_minor_offset implementation into new directory layout.
2022-06-28 18:47:50 -06:00