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
Garret Rieger
74f45f7c2a
[reorg] Move remaining GPOS lookup types to new directory.
2022-06-28 18:47:50 -06:00
Garret Rieger
197d9a5c99
[reorg] Move more GPOS lookups to new directory.
2022-06-28 18:47:50 -06:00
Garret Rieger
c7307ca06a
[reorg] Begin moving GPOS into the new directory layout.
2022-06-28 18:47:50 -06:00
Behdad Esfahbod
9909d11f6f
[indic generator] Fix regression
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3690
2022-06-28 16:02:51 -06:00
Behdad Esfahbod
4499ae0225
[coretext] Fix positioning of out-of-order glyphs
...
Unfortunately this now generates negative advances. To be fixed...
2022-06-28 15:44:34 -06:00
Behdad Esfahbod
58d2e93099
[coretext] Fix up clusters only if needed
2022-06-28 15:44:34 -06:00
Behdad Esfahbod
eaba5e74a9
[directwrite] Simplify
2022-06-28 13:51:50 -06:00
Behdad Esfahbod
33e3bf2d79
[font] Drop caches on variation changes
2022-06-28 13:51:50 -06:00
Behdad Esfahbod
c90130e625
[coretext] Remove old hack now that font layer takes care...
...
of invalidating font data when font settings change.
2022-06-28 13:30:44 -06:00
Behdad Esfahbod
c1c78ade71
[font] When font changes, drop font shaper data
...
https://github.com/harfbuzz/harfbuzz/issues/3683#issuecomment-1168016509
2022-06-28 13:19:30 -06:00
Behdad Esfahbod
34c6c0193c
[glyf] Fix byterange check again
2022-06-27 20:26:57 -06:00
Behdad Esfahbod
20572f914c
[glyf] Move read_flags into a function
2022-06-27 20:22:09 -06:00
Behdad Esfahbod
31e985d7d1
[buffer] Likely that not messaging
2022-06-27 16:32:02 -06:00
Behdad Esfahbod
4be074e2cb
[gvar] Whitespace
2022-06-27 16:12:42 -06:00
Behdad Esfahbod
a96647841a
[gvar] Optimize apply_deltas_to_points
2022-06-27 15:41:02 -06:00
Behdad Esfahbod
e9af9062c0
[gvar] Optimize unpack_deltas
2022-06-27 15:38:42 -06:00
Behdad Esfahbod
573e77280b
[gvar] Optimize unpack_deltas
2022-06-27 15:35:28 -06:00
Behdad Esfahbod
698f51464c
[gvar] Share vector allocation across delta-sets
2022-06-27 15:30:19 -06:00
Behdad Esfahbod
39e280c256
[gvar] Handle a couple of error conditions
2022-06-27 15:28:30 -06:00
Behdad Esfahbod
5be6e5dd57
[gvar] Rewrite linear interpolation
2022-06-27 15:22:16 -06:00
Behdad Esfahbod
57519b532d
[gvar] Use pointer-to-member instead of function
2022-06-27 15:18:56 -06:00
Behdad Esfahbod
ab15fe082a
[gvar] Handle a couple of error conditions
2022-06-27 15:13:10 -06:00
Behdad Esfahbod
b7e9e8785c
[gvar] Optimize deltas and points loading
2022-06-27 15:09:25 -06:00
Behdad Esfahbod
6e72c2e3fa
[glyf] Add an assertion
2022-06-27 15:09:25 -06:00
Behdad Esfahbod
5da341ce92
[map] Another try at hiding minus1
...
To fix https://github.com/harfbuzz/harfbuzz/issues/3684
2022-06-27 14:00:34 -06:00
Behdad Esfahbod
c72d3104ed
[map] Return const reference in operator[]
2022-06-27 13:31:05 -06:00
Behdad Esfahbod
69d53f3e7f
[map] Make default_value() inline
...
See if it make fix https://github.com/harfbuzz/harfbuzz/issues/3684
2022-06-27 13:17:10 -06:00
Behdad Esfahbod
3a0e27e794
[glyf] Move comment
2022-06-27 13:07:39 -06:00
Behdad Esfahbod
d0836dee7a
[glyf] Minor typo change
2022-06-27 13:05:58 -06:00
Behdad Esfahbod
5cca25e5d0
[glyf] Accumulate points as int
...
Everything is int at this stage.
Doesn't seem to matter for performance though.
2022-06-27 13:03:06 -06:00
Behdad Esfahbod
d6f60b3c19
[glyf] Minor optimization
2022-06-27 13:00:08 -06:00
Behdad Esfahbod
b30a3dcba3
[glyf] Another bounds check
...
Very unlikely that is needed but technically possible.
2022-06-27 12:56:54 -06:00
Behdad Esfahbod
2e9dbdcbbe
[glyf] Protect against an unlikely overflow
2022-06-27 12:55:13 -06:00
Khaled Hosny
8537d68172
4.4.0
2022-06-27 20:51:16 +02:00
Behdad Esfahbod
f1fb8c4489
[glyf] Optimize Glyph layout
2022-06-27 12:41:46 -06:00
Behdad Esfahbod
34e3f561b5
[glyf] Fix a bug I introduced recently
...
Pass gid to Glyph in trim_padding codepath.
2022-06-27 12:39:35 -06:00
Behdad Esfahbod
97cbc2d40a
[gvar] Remove condition that font num_coords should match gvar's
2022-06-27 12:37:11 -06:00
Behdad Esfahbod
19cbfb9ce9
[glyf] Relax a condition that font num_coords be equal to gvar's
...
gvar itself still checks the same.
2022-06-27 12:32:18 -06:00
Behdad Esfahbod
d5cfbaa068
[glyf] Optimize composite points loading
2022-06-27 12:24:20 -06:00
Behdad Esfahbod
32dc0641e1
[glyf] Remove an unnecessary condition
2022-06-27 12:22:06 -06:00
Behdad Esfahbod
95bfa0913d
[gvar] Optimize translate()
2022-06-27 12:10:16 -06:00
Behdad Esfahbod
9f067582b8
[gvar] Optimize transform()
2022-06-27 12:10:16 -06:00
Behdad Esfahbod
cfc57ef862
[glyf] Optimize contour_point_t layout
2022-06-27 12:10:16 -06:00
Behdad Esfahbod
75ca78a6bb
[glyf] Optimize hb_contour_points_t::extend
2022-06-27 12:10:16 -06:00
David Corbett
04c4767150
[lao] Decompose and reorder U+0EB3 around U+0EBB
2022-06-27 11:31:32 -06:00
Behdad Esfahbod
d3308f4713
[font] Optimize font scaling further
2022-06-27 11:28:57 -06:00
Matthias Clasen
e72506d085
Fix the annotation for hb_blob_get_data
...
This function will return NULL for the the
empty blob. That is important information for
bindings that treat nullability as a type trait.
2022-06-27 10:59:02 -06:00