Behdad Esfahbod
4afcdf675b
More hb_memcpy
2022-11-22 12:56:48 -07:00
Behdad Esfahbod
58a696d80e
More hb_memset
2022-11-22 12:56:05 -07:00
Behdad Esfahbod
59c45f6deb
Use hb_memcpy instead of memcpy consistently
2022-11-22 12:54:50 -07:00
Behdad Esfahbod
ac0efaf818
Use hb_memset instead of memset consistently
2022-11-22 12:50:36 -07:00
Behdad Esfahbod
44a892a233
[shape] Use hb_memcmp instead of memcmp
2022-11-22 12:48:52 -07:00
Behdad Esfahbod
c53c648127
[subset-cff] Another handrolled memcpy
2022-11-22 12:46:25 -07:00
Behdad Esfahbod
ae578705c2
[array] Write hash as range for loop again
...
Now that our range loop is faster than our own iter.
2022-11-22 12:23:17 -07:00
Behdad Esfahbod
13e1ca9eb5
[cff] Micro-optimize memcpy
2022-11-22 12:19:28 -07:00
Behdad Esfahbod
2968dd7844
[gvar] Optimize as_array() access
2022-11-22 11:57:29 -07:00
Behdad Esfahbod
bb3bb76450
[gvar] Optimize scalar = 1.0 case
2022-11-22 11:53:35 -07:00
Behdad Esfahbod
2d098d5d7f
[gvar] Use memset
2022-11-22 11:51:04 -07:00
Behdad Esfahbod
e630a65e60
[gvar] Micro-optize vector extend
2022-11-22 11:29:13 -07:00
Behdad Esfahbod
49d4f62135
[gvar] Micro-optimize
2022-11-22 11:14:56 -07:00
Behdad Esfahbod
1758ee6646
[glyf] Minor write loop more idiomatically
2022-11-22 10:55:16 -07:00
Behdad Esfahbod
16ec9dcc1b
[gvar] Whitespace
2022-11-22 10:55:16 -07:00
Behdad Esfahbod
b567ce51d3
[subset] Don't trim glyf's again if preprocessed
...
Speeds up M1/10000 benchmark by 30%!
2022-11-22 10:55:08 -07:00
Behdad Esfahbod
72059a4789
[gvar] Optimize IUP alg
2022-11-22 10:41:37 -07:00
Behdad Esfahbod
ee9873b5ed
[gvar] Disable initializing vectors when not necessary
2022-11-22 10:23:17 -07:00
Behdad Esfahbod
b0d2641186
[vector] Add "initialize" argument to resize()
2022-11-22 10:20:11 -07:00
Behdad Esfahbod
a2059f8f55
[gvar] Optimize unpack_points
2022-11-22 10:16:21 -07:00
Behdad Esfahbod
6d7206b68b
[gvar] Optimize unpack_deltas
2022-11-22 10:13:14 -07:00
Behdad Esfahbod
bca569ae53
[array] Speed up hash() for byte arrays
2022-11-21 23:19:42 -07:00
Behdad Esfahbod
d7b492e3f5
Revert "[array] Remove hash specializations for bytes"
...
This reverts commit 213117317c
.
2022-11-21 23:08:51 -07:00
Behdad Esfahbod
1572ba281a
[subset-cff] Return in subr closure if already seen subr
...
Not sure why this was not done before.
2022-11-21 22:26:44 -07:00
Behdad Esfahbod
a29ca6efbc
[subset-cff] Comment
2022-11-21 22:02:17 -07:00
Behdad Esfahbod
28e767ddea
[subset-cff] Really optimize op_str_t / parsed_cs_op_t layout
...
Now parsed_cs_op_t and op_str_t are both 16 bytes.
Saves another 7% in SourceHanSans/10000 benchmark.
2022-11-21 21:59:51 -07:00
Behdad Esfahbod
2d5ee23731
[subset-cff] Readjust parsed_cs_op_t
...
Now it doesn't matter anymore since op_str_t is adjusted and
is 16 bytes with 8byte alignment.
2022-11-21 21:55:21 -07:00
Behdad Esfahbod
4f056b923a
[subset-cff] Optimize op_str_t layout
2022-11-21 21:37:57 -07:00
Behdad Esfahbod
a750cb0128
Simplify rvalue creation
2022-11-21 21:03:32 -07:00
Behdad Esfahbod
86a763c651
[map] Make keys moveable
2022-11-21 20:53:44 -07:00
Behdad Esfahbod
cf20d2ec5d
[map] Take const key
2022-11-21 20:47:17 -07:00
Behdad Esfahbod
3d1c76f713
[serializer] Don't hash objects twice
2022-11-21 19:40:32 -07:00
Behdad Esfahbod
35878df215
[algs] Implement swap() for pair_t
...
Helps priority_queue::pop_minimum and friends, which help subsetter
repacker. Shows a few percentage improvement on NotoNastaliq benchmark.
2022-11-21 19:14:03 -07:00
Behdad Esfahbod
a2984a2932
[cff] Remove unnecessary namespacing
2022-11-21 18:40:52 -07:00
Behdad Esfahbod
dc3bb5e0ed
[subset-cff] Pre-allocate values array for subroutines as well
2022-11-21 18:18:48 -07:00
Behdad Esfahbod
c6279224db
[cff] Adjust pre-allocation
...
This better matches actual usage, given that ops are one or two
bytes, and vector also allocates 50% extra.
2022-11-21 18:01:50 -07:00
Behdad Esfahbod
bab8ec58b0
[subset-cff] Disable sharing when packing charstring INDEXes
...
Saves another 8%ish.
2022-11-21 17:46:32 -07:00
Behdad Esfahbod
2cadacad6c
[cff] Simplify str_encoder_t error handling
2022-11-21 17:17:15 -07:00
Behdad Esfahbod
f263e3fe2e
[cff] Manually copy short strings instead of memcpy()
2022-11-21 17:04:55 -07:00
Behdad Esfahbod
38efd1862f
[cff] Add a likely()
2022-11-21 17:02:11 -07:00
Behdad Esfahbod
191025cc96
[cff] Adjust buffer pre-allocation
...
Most ops take one or two bytes, so allocate count*2, not count*3.
Shows minor speedup in subsetting benchmark (around 2%).
2022-11-21 16:58:19 -07:00
Behdad Esfahbod
4b2caafea2
[subset-cff] Optimize parsed_cs_op_t size
...
Shows 5% speedup on SourceHanSans-Regular/10000 benchmark.
2022-11-21 16:46:20 -07:00
Behdad Esfahbod
e0b06bd1b1
[subset] Cache has_seac in accelerator
...
Speeds up SourceHanSans-Regular/10000 benchmark by %25.
2022-11-21 16:30:34 -07:00
Garret Rieger
dd1ba328a8
[repacker] fix fuzzer timeout.
...
For https://oss-fuzz.com/testcase-detail/5845846876356608 . Only process the set of unique overflows.
2022-11-21 16:24:48 -07:00
Behdad Esfahbod
59451502e9
[cff] Optimize env error checking
2022-11-21 15:23:16 -07:00
Behdad Esfahbod
b238578a9c
[cff] Optimize INDEX operator[]
2022-11-21 14:36:57 -07:00
Behdad Esfahbod
d9de515a38
[cff] Optimize byte_str_ref_t array access
2022-11-21 14:23:07 -07:00
Behdad Esfahbod
a81ec9b2b6
[cff] Optimize byte_str_ref_t inc()
...
Shows a couple percent speedup.
2022-11-21 14:03:28 -07:00
Behdad Esfahbod
3ff75411bd
[algs] Fix bot fail
2022-11-21 13:08:55 -07:00
Behdad Esfahbod
b81e3989f8
Try fixing arm-eabi build after a10cfe3f32
2022-11-21 13:02:40 -07:00
Behdad Esfahbod
4c14043b06
[algs] Add output argument to hb_unsigned_mul_overflows()
2022-11-21 12:56:33 -07:00
Behdad Esfahbod
25adbb3825
[algs] Use __builtin_mul_overflow
...
Compiles to smaller binary.
2022-11-21 12:47:53 -07:00
Behdad Esfahbod
a10cfe3f32
[algs] Write hb_in_ranges() recursively
2022-11-21 12:37:59 -07:00
Behdad Esfahbod
2e86700e30
[gvar] Add memory-barrier as in ArrayOf
2022-11-21 12:28:10 -07:00
Behdad Esfahbod
b00a911fa7
[sorted-array] Add faster iterator implementation here as well
2022-11-21 12:11:30 -07:00
Behdad Esfahbod
7cc79a8a86
[vector] Adjust comment
2022-11-21 12:09:24 -07:00
Behdad Esfahbod
e82a3c69dd
[array/vector] Optimize range-based for-loop
...
Avoid bounds-checking.
2022-11-21 12:00:10 -07:00
Behdad Esfahbod
0387182c2a
[ot-map] Minor refactor features[i] access
2022-11-21 11:05:47 -07:00
Behdad Esfahbod
5ee6d5d77e
[cff] Add memory-barrier to INDEX
...
Like we do for ArrayOf.
2022-11-21 11:00:29 -07:00
Behdad Esfahbod
6905d36d73
[cff] Fix fetch_op() bounds-checking
2022-11-21 10:51:33 -07:00
Behdad Esfahbod
b51ab1a9e5
[cff] Optimize byte_str_ref_t
...
Make it 16 bytes instead of 24. This struct is used in the subroutine
call stack heavily.
This change makes the HB AdobeVFPrototype benchmark to become faster
than FT one, with about 6% speedup as a result of this change.
2022-11-21 10:27:07 -07:00
Behdad Esfahbod
7a39464b18
[cff] Hide members of byte_str_ref_t
2022-11-21 09:48:54 -07:00
Behdad Esfahbod
18141f0007
[cff] Move a sub_array call
...
No logic change.... I hope?!
2022-11-21 09:47:03 -07:00
Behdad Esfahbod
f66415cdd1
[cff] Move initialization of a type to constructor
2022-11-21 09:40:16 -07:00
Behdad Esfahbod
70a5cd53f6
[algs] Assert trivial copy assignable in stable_sort
2022-11-21 08:52:33 -07:00
Behdad Esfahbod
9bb39423f5
[algs] Simplify stable_sort signatures
2022-11-20 17:40:54 -07:00
Behdad Esfahbod
d119568df6
[cbdt] Use vector tail()
2022-11-20 14:11:51 -07:00
Behdad Esfahbod
87a88117c8
[object] Use vector tail()
2022-11-20 14:10:39 -07:00
Behdad Esfahbod
76ce390b5a
[ucd] Document algorithms
2022-11-20 13:54:56 -07:00
Behdad Esfahbod
ed43bc5118
[buffer] Move delete_glyphs_inplace() here
2022-11-20 13:10:19 -07:00
Behdad Esfahbod
dd88dae8a9
[unicode] Simplify set_funcs a bit more
2022-11-19 15:23:53 -07:00
Behdad Esfahbod
2d8ff3bcbe
[unicode] Destroy user_data in set_funcs fail paths
...
This is what the font_funcs / draw_funcs do.
2022-11-19 15:23:44 -07:00
Behdad Esfahbod
527823ccac
[unicode] Destroy user_data in set_funcs fail paths
...
This is what the font_funcs / draw_funcs do.
2022-11-19 15:19:08 -07:00
Behdad Esfahbod
56d6b6992b
[font/draw] Remove unneeded branch
...
The preamble sets user_data/destroy to nullptr if func is nullptr.
2022-11-19 15:11:59 -07:00
Behdad Esfahbod
976bb26cc1
[draw] Optimize set_func functions
2022-11-19 15:06:23 -07:00
Behdad Esfahbod
114167a933
[font] Optimize set_func functions
2022-11-19 14:47:45 -07:00
Behdad Esfahbod
f9d7b303ed
[thai] Use smaller type for arrays
...
No logic change.
2022-11-19 14:20:36 -07:00
Behdad Esfahbod
72c4e431af
[use-table] Add a OPTIMIZE_SIZE version
2022-11-19 13:40:33 -07:00
Behdad Esfahbod
83c3a91dc6
[gen-use-table] Report fullCost
2022-11-19 13:34:58 -07:00
Behdad Esfahbod
ba08de624e
[ucd] Change OPTIMIZE_SIZE to compression level 9
...
Also changes default compression level from 3 to 5, but that shows
no change in the generated table size.
2022-11-19 13:25:19 -07:00
Behdad Esfahbod
b68f9f3cfe
[machinery] Adjust comment
2022-11-18 21:36:01 -07:00
Behdad Esfahbod
a47ba1dc0e
[lazy-pointer] Hide instance
2022-11-18 21:14:07 -07:00
Behdad Esfahbod
281b4705b4
[pool] Rewrite a loop as dagger
2022-11-18 20:25:05 -07:00
Behdad Esfahbod
3ff8abf272
Revert "[map] Allow std::move-ing keys into the map"
...
This reverts commit f657ef7e57
.
This breaks many compilers with messages like this:
hb-subset-plan.hh:226: undefined reference to `OT::head::tableTag'
I'm out of my depth re how to fix it.
2022-11-18 19:38:12 -07:00
Behdad Esfahbod
039e476bac
[test-vector] Test sink-move'ing
2022-11-18 19:26:02 -07:00
Behdad Esfahbod
a3a218edb5
[map] Add a couple more sink interfaces
2022-11-18 19:24:41 -07:00
Behdad Esfahbod
90226eab89
[test-map] Test inserting shared_ptr key
2022-11-18 19:21:58 -07:00
Behdad Esfahbod
f657ef7e57
[map] Allow std::move-ing keys into the map
2022-11-18 19:17:03 -07:00
Behdad Esfahbod
a1768ad829
[map] Fix use of !=
2022-11-18 19:08:34 -07:00
Behdad Esfahbod
e74b372b59
[test-map] Test moving values
2022-11-18 18:43:31 -07:00
Behdad Esfahbod
a9c6a20b19
[map] Support moving value in sink interface
2022-11-18 18:29:12 -07:00
Behdad Esfahbod
1bf9afaad0
[test-vector] Test sink interface
2022-11-18 18:20:50 -07:00
Behdad Esfahbod
fa0e4b041d
[test-map] Test sink interface
2022-11-18 18:20:14 -07:00
Behdad Esfahbod
1c612a8541
[test-set] Test sinking range
2022-11-18 18:19:31 -07:00
Behdad Esfahbod
356708e34a
[test-set] Test length of iterator
2022-11-18 18:17:34 -07:00
Behdad Esfahbod
2892fc71e8
[vector] Add std::move to pop()
...
This was removed in 76fc27713f
,
but I believe that was faultly. It was because of a bad move
implementation in the set.
2022-11-18 18:03:59 -07:00
Behdad Esfahbod
921f45f46d
[array] Rewrite hash() as dagger
2022-11-18 17:26:58 -07:00
Behdad Esfahbod
213117317c
[array] Remove hash specializations for bytes
...
Not needed.
2022-11-18 17:24:44 -07:00
Behdad Esfahbod
bef5a1c8dc
[vector] Comment
2022-11-18 17:22:17 -07:00
Behdad Esfahbod
69b41f92ec
[vector] Simplify shift_down_vector()
...
Compiler is smarter than I am.
2022-11-18 17:04:34 -07:00
Behdad Esfahbod
1dd9396c7a
[vector] Optimize grow_vector() for size
...
Again, compiler is smarter than I am.
2022-11-18 17:01:14 -07:00
Behdad Esfahbod
d36f688131
[vector] Optimize shrink_vector for size
...
Compiler is smarter than I am.
2022-11-18 17:00:07 -07:00
Behdad Esfahbod
bc8eded296
[vector] Remove a for loop
2022-11-18 16:51:24 -07:00
Behdad Esfahbod
afd9a58bd7
[vector] Save a couple hb_iter() invocations
2022-11-18 16:47:32 -07:00
Behdad Esfahbod
3ead9863d2
[map] Add size()
2022-11-18 16:43:47 -07:00
Behdad Esfahbod
42db8be189
[map] Minor remove if condition
2022-11-18 16:41:50 -07:00
Behdad Esfahbod
4ec706980c
[map] Rewrite hash() as dagger
...
Somehow our daggers instead of for loop save size. I cannot
pinpoint why, other than maybe not inlining.
2022-11-18 16:39:30 -07:00
Behdad Esfahbod
025a68cb07
[map] Optimize copy resizing logic
2022-11-18 16:33:04 -07:00
Behdad Esfahbod
f1d716871d
[map] Change bucket_for_hash() to item_for_hash()
2022-11-18 16:31:27 -07:00
Behdad Esfahbod
d012f9a9b3
[map] Change bucket_for() to item_for()
2022-11-18 16:29:06 -07:00
Behdad Esfahbod
68a29020c5
[bit-page] Write hash() as dagger
2022-11-18 16:02:45 -07:00
Behdad Esfahbod
87271e1b2e
[bit-page] Write get_population as dagger
2022-11-18 16:01:23 -07:00
Behdad Esfahbod
744eb6baf9
[bit-page] Write is_empty() as dagger
2022-11-18 15:56:06 -07:00
Behdad Esfahbod
43a4028f0e
[algs] Move hb_vector_size_t to bit-page as only user
2022-11-18 15:54:34 -07:00
Behdad Esfahbod
01f961ac3a
[gsubgpos] Minor call hb_iter() instead of ->iter() directly
2022-11-18 15:47:17 -07:00
Behdad Esfahbod
bba5765583
[gsubgpos] Remove a few unnecessary namespace invocations
2022-11-18 14:52:17 -07:00
Behdad Esfahbod
b4d0d1608d
[gsubgpos] Rewrite a couple apply() functions as daggers
2022-11-18 14:47:33 -07:00
Behdad Esfahbod
76c8214eb5
[gsubgpos] Move member around
2022-11-18 12:30:46 -07:00
Behdad Esfahbod
81a573008e
[map] Optimize storage
2022-11-17 16:59:36 -07:00
Behdad Esfahbod
ae080bf202
[map] Initialize key and value explicitly
...
If they are of int time they won't be initialized otherwise.
2022-11-17 16:34:58 -07:00
Behdad Esfahbod
1d41b9cb3c
[user-data] std::move item
2022-11-17 16:26:48 -07:00
Behdad Esfahbod
ff0bb74895
[map] Call item_t constructor/destructor directly
2022-11-17 16:17:37 -07:00
Behdad Esfahbod
5c88715949
[map] Add item_t.destruct()
2022-11-17 16:14:16 -07:00
Behdad Esfahbod
7f83040836
[map] Simplify (de)construction of item_t
2022-11-17 16:10:37 -07:00
Behdad Esfahbod
99103bd976
[map] Destruct objects when clearing
2022-11-17 15:57:06 -07:00
Behdad Esfahbod
4caad5720c
[test-map] Add test for reset
...
I expect this to leak now, since we don't destruct items.
2022-11-17 15:51:39 -07:00
Behdad Esfahbod
e93c01c3ae
[map] Rename item clear() to construct()
2022-11-17 15:50:00 -07:00
Behdad Esfahbod
fc22d706fe
[test-map] Don't insert null smart-pointers in map
...
Dereferencing them is not supported anymore after
3aad7c2ddf
We don't support that for regular pointers, so don't supporting
them for smart-pointers sounds right to me.
2022-11-17 15:47:43 -07:00
Behdad Esfahbod
896377463f
[map] Don't resize map if not necessary
2022-11-17 15:25:45 -07:00
Behdad Esfahbod
7595fa2d9a
[map] Fix copy-assignment operator
...
Ouch!
2022-11-17 15:23:14 -07:00
Behdad Esfahbod
41f4bdac35
[map] Fix resize during copy-construction/assignment
2022-11-17 15:16:00 -07:00
Behdad Esfahbod
3aad7c2ddf
[algs] Remove smart-pointers from hb_hash()
...
hb_deref() handles them. I think this code predated that.
2022-11-17 15:10:47 -07:00
Behdad Esfahbod
7bd101728a
[map] Minor use hb_iter instead of hb_array
2022-11-17 15:01:55 -07:00
Behdad Esfahbod
238fc14716
[map] Simplify iterators
2022-11-17 14:58:50 -07:00
Behdad Esfahbod
410c14bfa2
[map] Fix equality
...
Ouch!
2022-11-17 14:53:00 -07:00
Behdad Esfahbod
6dfd4a16e7
[ot-font] Remove stale TODO
2022-11-16 22:44:22 -07:00
Behdad Esfahbod
a0bde1e1ea
[open-type] Remove (Sorted)ArrayOf.sub_array()
2022-11-16 21:27:12 -07:00
Behdad Esfahbod
f2b5db700f
[vector] Remove .sub_array ()
2022-11-16 21:22:57 -07:00
Behdad Esfahbod
c7d57dcf26
[vector/array] Simplify qsort()
2022-11-16 21:21:31 -07:00
Behdad Esfahbod
1610008e62
[gsubgpos] Minor remove call to hb_iter
2022-11-16 20:02:36 -07:00
Behdad Esfahbod
19ec01d25c
[gsubgpos] Sprinkle const around
2022-11-16 19:14:42 -07:00
Behdad Esfahbod
561946c7d5
[layout] Comment
2022-11-16 17:59:29 -07:00
Behdad Esfahbod
2268207c19
[layout] Update comment
2022-11-16 17:51:22 -07:00
Behdad Esfahbod
658f8f4391
[layout] Comment
2022-11-16 17:50:35 -07:00
Behdad Esfahbod
27a8fe7d58
[layout] Only update buffer digest if buffer changed by a pause
2022-11-16 17:49:44 -07:00
Behdad Esfahbod
8b2a211123
[layout] Keep digest updated in the context
...
Don't recompute digest after every (applied) GSUB lookup.
2022-11-16 16:57:44 -07:00
Behdad Esfahbod
a5964a2d2a
[layout] Minor simplify
2022-11-16 16:45:23 -07:00
Behdad Esfahbod
80b8758881
[layout] Add a buffer message for digest-skipped lookups
2022-11-16 16:26:41 -07:00
Behdad Esfahbod
afa71ee8ef
Fix alignment error
2022-11-16 16:22:45 -07:00
Behdad Esfahbod
dff1b809a0
[buffer] Add .digest() and use
2022-11-16 16:19:05 -07:00
Behdad Esfahbod
654a2eafc8
[layout] Use buffer-digest for GSUB as well
...
Combined with previous commit, this shows up to 12% speed up with
Roboto and the en-words (ie. short strings) benchmark, about 5%
for longer English tests, and no adverse effect on heavier fonts.
2022-11-16 16:13:52 -07:00
Behdad Esfahbod
15b6c32599
[layout] Use a buffer digest for GPOS to skip whole lookups
2022-11-16 16:11:36 -07:00
Behdad Esfahbod
a053b84cb9
[gsubgpos] Optimize set-digest initialization
...
Previously we were once collecting set-digest for each subtable,
and another time for each lookup.
Now we compute the one for each lookup simply from the ones for
its subtables.
2022-11-16 14:39:25 -07:00
Behdad Esfahbod
20654cd889
[set-digest] Minor no logic change
2022-11-16 14:29:10 -07:00
Behdad Esfahbod
95b9763dbc
[set-digest] Minor simplify
2022-11-16 14:15:01 -07:00
Behdad Esfahbod
9855b678f2
[cache] Minor rewrite assertion
2022-11-16 13:37:34 -07:00
Behdad Esfahbod
a10ff20562
[ft] Comment
2022-11-16 13:34:37 -07:00
Behdad Esfahbod
557be9502a
[test-vector] Fix test
2022-11-16 12:47:05 -07:00
Behdad Esfahbod
9027d15410
[test-iter] Fix leak
2022-11-16 12:39:30 -07:00
Behdad Esfahbod
afd716d4cd
[serialize] Don't free object-pool in reset()
2022-11-16 12:28:56 -07:00
Behdad Esfahbod
02949cf64f
[priority-queue] More assert adjustment
2022-11-16 12:06:44 -07:00
Behdad Esfahbod
620ddd762d
[priority-queue] Fix asserts
2022-11-16 12:04:35 -07:00
Behdad Esfahbod
57de568aad
[indic-table] Minor adjust empty lines
2022-11-16 11:50:40 -07:00
Behdad Esfahbod
281a2602cc
Update generated file
2022-11-16 11:36:33 -07:00
Behdad Esfahbod
f734c26c5c
[test-vector] Test inserting set and map
2022-11-15 16:27:56 -07:00
Behdad Esfahbod
0a97d27c2b
[test-iter] Add another test
2022-11-15 16:23:48 -07:00
Behdad Esfahbod
e9e985682a
[fallback-shape] Remove TODO
2022-11-15 16:11:57 -07:00
Behdad Esfahbod
6df8498da2
[sample.py] Fix warning
2022-11-15 15:52:04 -07:00
Behdad Esfahbod
49fe5c1e5a
[glib] Remove old cruft from pre-2011
2022-11-15 15:37:23 -07:00
Behdad Esfahbod
1bd1a37837
[test] Minor
2022-11-15 15:18:36 -07:00
Behdad Esfahbod
35aa492eb7
[main] sprintf -> snprintf
2022-11-15 15:05:15 -07:00
Behdad Esfahbod
72c6962012
[buffer-deserialize-text] Fix glyph name for glyph flags
...
Skip "#" in glyph names.
2022-11-14 21:34:16 -07:00
Behdad Esfahbod
dee26de76f
[test-buffer-serialize] Allow no font
2022-11-14 16:24:25 -07:00
Behdad Esfahbod
f6076890c5
Hide all mentions of name_table_overrides behind EXPERIMENTAL_API
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3872
2022-11-14 16:06:39 -07:00
Behdad Esfahbod
ebc382a847
Revert "Avoid use values () in hb-hashmap if value_t has an overriden operator &"
...
This reverts commit b92e4cc009
.
2022-11-14 15:59:46 -07:00
Behdad Esfahbod
ff0d0d020e
[meta] Use std::decay
2022-11-14 14:48:07 -07:00
Behdad Esfahbod
24cf86b009
[array] Fix MSVC fail
2022-11-14 13:58:43 -07:00
Behdad Esfahbod
a87843be3d
[array] Another try at sizeof sorted_array
2022-11-14 13:43:58 -07:00
Behdad Esfahbod
72ba0b2aa2
[array] Fix MSVC fail
2022-11-14 13:41:15 -07:00
Qunxin Liu
b92e4cc009
Avoid use values () in hb-hashmap if value_t has an overriden operator &
2022-11-14 13:19:55 -07:00
Behdad Esfahbod
ea63e95e4c
[GPOS.PairPos] Adjust unsafe-to-break for non-zero ValueFormat2
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3824
2022-11-14 12:36:48 -07:00
Behdad Esfahbod
85e0be1357
[vector/array] Add simple test for sorted size
2022-11-13 17:28:09 -07:00
Behdad Esfahbod
4e618557a6
[vector] Don't subclass sorted vector from unsorted
...
Was doubling the size unnecessarily.
2022-11-13 17:23:25 -07:00
Behdad Esfahbod
630f09c8b6
Another hb_memcpy instead of strncpy use
2022-11-09 11:32:30 -07:00
Behdad Esfahbod
cd011ceadf
Use hb_memcpy instead of strncpy
...
Nul-termination is not intended.
2022-11-09 11:30:44 -07:00
Behdad Esfahbod
c158b626c3
[name] Simplify buffer-length calculation
2022-11-08 15:05:31 -07:00
Behdad Esfahbod
55edf59d52
[name] Typo
2022-11-08 14:53:27 -07:00
Behdad Esfahbod
27c8bbcb04
Revert "[name] Simplify buffer-length calculation"
...
This reverts commit d70595657e
.
2022-11-08 14:48:38 -07:00
Behdad Esfahbod
d70595657e
[name] Simplify buffer-length calculation
2022-11-08 14:15:56 -07:00
Qunxin Liu
6314aa7da4
[subset] add an experimental API that can override name strings for specified name_id
2022-11-08 14:10:25 -07:00
Behdad Esfahbod
f53ef69d59
[indic] Order left-matras inside-out
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3863
2022-11-05 15:40:05 -06:00
Qunxin Liu
dbb7f47b19
fix bug in hb_hashmap_t has() interface
...
It was not working when the value type is hb_bytes_t because hb_array_t
overloaded operator &
2022-11-03 13:48:23 -06:00
Behdad Esfahbod
d1f445ec1e
[name] Typo
2022-11-02 12:24:04 -06:00
Behdad Esfahbod
fc935fb81b
Fix snprintf use
...
https://github.com/harfbuzz/harfbuzz/pull/3495#issuecomment-1299107964
2022-11-01 14:40:47 -06:00
Lorenz Wildberg
2ee42bbac2
hb_variation_to_string: Fix GIR annotation
2022-11-01 11:21:25 -06:00
Behdad Esfahbod
02b76393ef
[config] Re-enable BORING_EXPANSION
...
Only the non-experimental parts (currently avar2) are
enabled by default.
2022-10-29 11:19:04 -06:00
Behdad Esfahbod
6a47ef34b1
[config] If not HB_EXPERIMENTAL, then HB_NO_BEYOND_64K
2022-10-29 11:14:27 -06:00
Behdad Esfahbod
a0f999cd95
[config] Rename HB_NO_VARIATIONS2 to HB_NO_AVAR2
2022-10-29 11:13:40 -06:00
Behdad Esfahbod
60c6b7786d
Disable -Wcast-function-type-strict
...
https://github.com/harfbuzz/harfbuzz/pull/3859#issuecomment-1295409126
2022-10-28 14:19:39 -06:00
Martin Storsjö
d88269c827
freetype: Fix function signatures to match without casts
...
Clang 16 has got a new stricter warning for casts of function types
(see 1aad641c79
).
This new warning gets included as part of the existing error
diagnostic setting of -Wcast-function-type.
This fixes errors like these:
../src/hb-ft.cc:1011:34: error: cast from 'void (*)(FT_Face)' (aka 'void (*)(FT_FaceRec_ *)') to 'FT_Generic_Finalizer' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_ft_face_finalize;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2022-10-28 13:49:41 -06:00
Qunxin Liu
8a5524833c
[instance] update OS2/.usWeightClass and .usWidthClass when
...
no-prune-unicode-ranges option is enabled
2022-10-27 11:59:31 -06:00
خالد حسني (Khaled Hosny)
fddeba26e4
Merge pull request #3857 from 2xsaiko/outgoing/cmake-abs-path
...
Pass through absolute paths to cmake config directly
2022-10-26 22:34:02 +02:00
Marco Rebhan
db292f6f02
Pass through absolute paths to cmake config directly
...
The previous code concatenates includedir to _harfbuzz_prefix verbatim,
which results in a wrong final include path in case includedir is an absolute
path. Instead, we can let meson determine the absolute include and lib paths
in advance and save them in the cmake config.
This is an issue in nixpkgs, where includedir is set to the final (absolute)
path of the built library in the Nix store, which causes CMake projects
depending on harfbuzz to not configure.
See https://github.com/NixOS/nixpkgs/issues/180054 .
2022-10-26 22:13:44 +02:00
Behdad Esfahbod
477d71724c
[glyf] Limit points in a glyf to 10000 roughly
...
Only enforced when components are being expanded.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3838
2022-10-26 13:11:47 -06:00
Behdad Esfahbod
9aad3dba8f
[SingleSubst] Fix degenerate-lookup test
...
Part of https://github.com/harfbuzz/harfbuzz/issues/3853
2022-10-26 13:04:02 -06:00
Garret Rieger
83769b9cb1
[subset] add comment for why we retain empty lookups.
2022-10-21 18:29:23 -06:00
Garret Rieger
70e2de2bd4
[subset] Always output Lookup's even if they are empty.
...
The rest of layout subsetting depends on lookup indices being consistent with those computed during planning. So if an empty lookup is discarded during the subset phase it will invalidate all subsequent lookup indices. Generally we shouldn't end up with an empty lookup as we pre-prune them during the planning phase, but it can happen in rare cases such as when a subtable is considered degenerate (eg. #3853 )
2022-10-21 18:29:23 -06:00
Joel Auterson
c813f84235
Make build work for arm-none-eabi
2022-10-21 11:09:35 -06:00
Behdad Esfahbod
b0b7a65388
[subset] Fix check-symbols failure
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3850
2022-10-20 17:13:26 -06:00
Khaled Hosny
970321db7b
5.3.1
2022-10-19 22:06:46 +02:00
Behdad Esfahbod
a73137d101
[face] Fix annotation
2022-10-17 12:18:24 -06:00
Behdad Esfahbod
d65af60213
[shape] Adjust Grapheme clusters for Katakana voiced sound marks
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3844
2022-10-15 14:26:02 -06:00
Behdad Esfahbod
bda42fc34a
Merge pull request #3842 from harfbuzz/patch_mode
...
[subset] Begin implementing a subset accelerator
2022-10-14 15:08:22 -06:00
Garret Rieger
f53ebf5584
[subset] Add hb_subset_preprocess to experimental symbol list for check-symbols.
2022-10-14 19:38:19 +00:00
Garret Rieger
fdb98ed88e
[subset] add missing HB_EXTERN.
2022-10-14 18:30:39 +00:00
Garret Rieger
515863e57c
[subset] Remove add accelerator flag, replace with new api method.
...
Adds hb_subset_preprocess() which preprocesses the face and attaches accelerator data.
2022-10-13 23:42:00 +00:00
Garret Rieger
573640c99f
[subset] Add hb-subset-accelerator.hh to Make soure list.
2022-10-13 23:21:35 +00:00
Behdad Esfahbod
a756bd1944
[glyf] Use component phantom points after transformation
2022-10-13 17:18:19 -06:00
Behdad Esfahbod
82d19c08fc
Revert "[glyf/Composite] Remove phantom points when not needed anymore"
...
This reverts commit 527e63a3bd
.
2022-10-13 17:17:03 -06:00
Behdad Esfahbod
527e63a3bd
[glyf/Composite] Remove phantom points when not needed anymore
2022-10-13 17:13:40 -06:00
Garret Rieger
f4903defc4
[subset] use the accelerator in the subsetting benchmark.
2022-10-13 21:38:54 +00:00
Garret Rieger
01481db582
[subset] use accelerator unicode to gid map if available.
2022-10-13 21:12:22 +00:00
Garret Rieger
4ec5eb955f
[subset] add a subset accelerator.
...
Can be optionally attached to the face during subsetting. Contains data which can accelerate future subsets.
2022-10-13 19:40:31 +00:00
Garret Rieger
f105c28749
[subset] Suggested flags to enable more performant subset production for use in incxfer.
2022-10-13 18:53:41 +00:00
Behdad Esfahbod
5769d422c5
[type] Add HBFixed template
2022-10-13 12:12:24 -06:00
Behdad Esfahbod
8c29dcaee4
s/HBFixed/F16DOT16/g
2022-10-13 12:06:15 -06:00
Behdad Esfahbod
294b1c9f6e
Use snprintf instead of sprintf
2022-10-13 11:30:02 -06:00
Garret Rieger
9559d3c1c1
[repacker] fix incorrect coverage table size estimation.
...
During splitting of PairPosFormat2 the code was assuming the maximum size of the generated coverage table would be equal too the current size. This is incorrect size the new coverage table may not preserve the ranges found in the original coverage table (since we are splitting based on class, not coverage) and in the worst case may convert from format2 to format1. So use the size of a format1 table as the max size.
2022-10-11 14:06:04 -06:00
Khaled Hosny
3ce4b8f5c9
5.3.0
2022-10-08 19:10:07 +02:00
Garret Rieger
99f4668e19
[repacker] use mutable copies of Coverage/ClassDef in MarkBasePos shrink operation.
...
Also make mutable copies (when needed) of the top level subtables during a split operation.
2022-09-30 10:58:50 -06:00
Garret Rieger
8f1bf23cc9
[subset] optimize glyf subsetting w/ retain gids.
...
When retain gids is enabled the subset plan may require the output of many empty glyphs. This change optimizes the glyf subsetting code when the number of retained glyphs << number of output glyphs. Unnessecary lookups to the glyph map are reduced by iterating through the glyph map instead of the output glyph set.
2022-09-29 15:44:49 -06:00
Qunxin Liu
e94fe2adf3
[instance] minor optimizations to glyf instancing
2022-09-29 12:14:43 -06:00
Qunxin Liu
b90ce34a25
[instance] fix for non-empty .notdef glyph metrics update
...
we need pass in source glyph's outline data to calculate boundaries, and
then drop the outline data if notdef-outline is specified.
Also disable shifting points for instancing in get_points () API
2022-09-29 12:14:43 -06:00
Qunxin Liu
b706c6f77e
[instance] update FeatureList with variations
2022-09-29 12:14:43 -06:00
Qunxin Liu
8f3a7017c3
[instance] support FeatureVariations table
2022-09-29 12:14:43 -06:00
Qunxin Liu
f4813e3b7f
[instance] update collect_lookups/prune_features()/closure_features() with variations
...
Some features will be substituted with variations, so we do not collect
lookups from the original feature tables.
2022-09-29 12:14:43 -06:00
Qunxin Liu
64e2f2fc58
[instance] store active featurevariation record/condition idxes in the plan
2022-09-29 12:14:43 -06:00
Qunxin Liu
0a6c16a313
[instance] instantiate fvar table
...
Added an old->new axes_indices mapping in the subset plan
2022-09-29 12:14:43 -06:00
Behdad Esfahbod
486fc2271a
[cplusplus] Add missing const
2022-09-28 15:11:45 -06:00
Qunxin Liu
c335bf469f
support dereferencing shared_ptrs and unique_ptrs
2022-09-27 15:44:29 -06:00
Garret Rieger
8cd7d1c3fe
[subset] Allow table ordering on the face builder to be overriden.
2022-09-22 16:52:14 -06:00
Behdad Esfahbod
b70032edda
[layout] Fix typo in docs
2022-09-22 15:59:16 -06:00
Khaled Hosny
d2966d3919
[ot-font] Try CBDT extents before outline tables
...
Like we do for sbix table.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3827
2022-09-22 15:50:27 -06:00
Behdad Esfahbod
1fdf046427
Merge pull request #3799 from harfbuzz/optical-bounds
...
Optical bounds
2022-09-22 12:03:17 -06:00
David Corbett
3ca5fbda76
[USE] Update the data files
...
This uses the data files from
<3254c94606/USE
>
and closes #3817 .
2022-09-21 16:28:02 -06:00
Behdad Esfahbod
b78d4b1e58
[color] Fix documentation re UPEM vs PPEM
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3826
2022-09-21 13:27:12 -06:00
Behdad Esfahbod
56c4670935
[subset] Fix compiler warning
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3823
2022-09-20 17:40:13 -06:00
Behdad Esfahbod
c02a1a4adc
[ot-font] Remove unused include
2022-09-20 17:40:13 -06:00
David Corbett
d7cc82ad48
Update the language system tag registry URL
2022-09-20 10:37:50 -06:00
Jonathan Kew
f54d2b3e2c
[aat] Map 'rlig' to AAT required-ligatures setting.
...
Fixes #3819 .
2022-09-20 10:37:27 -06:00
Khaled Hosny
d827a5ee40
[subset] Skip glyph closure for any dropped table
...
If COLR or MATH tables are being dropped, there is no point in closing
glyphs over them, just like it is done for GSUB.
2022-09-19 13:49:42 -06:00
Khaled Hosny
4a1d891c63
5.2.0
2022-09-17 03:19:29 +02:00
Qunxin Liu
2b766e8ade
[subset] No need to collect_features twice
2022-09-06 13:41:51 -06:00
David Corbett
09b9a1ffdd
[USE] Allow ZWNJ at the end of a cluster
2022-09-06 11:33:12 -06:00
Qunxin Liu
a3e6dbbb43
[subset] skip the script if it's not included in the final subset
2022-09-06 11:29:34 -06:00
Behdad Esfahbod
752060a49c
[layout] Document hb_ot_layout_lookup_get_optical_bound()
2022-09-01 13:47:12 -06:00
Behdad Esfahbod
71c6cba097
[layout] Rename API:
...
-hb_ot_layout_get_optical_bound()
+hb_ot_layout_lookup_get_optical_bound()
2022-09-01 13:43:19 -06:00
Behdad Esfahbod
3892128a1f
[layout] Add HB_NO_LAYOUT_RARELY_USED
2022-09-01 13:41:50 -06:00
Behdad Esfahbod
8e88653f05
[layout] Move code around
2022-09-01 13:39:26 -06:00
Behdad Esfahbod
4bf9621113
[optical-bounds] Optimize
2022-09-01 13:36:26 -06:00
Behdad Esfahbod
5d6f1a88e4
[layout] Add hb_ot_layout_get_optical_bound()
2022-09-01 13:36:26 -06:00
Behdad Esfahbod
14eb3d37ad
[layout] Improve annotations
2022-09-01 13:18:42 -06:00
Qunxin Liu
f8ddb9998b
[instance] Fix os/2 table width to widthclass mapping
2022-09-01 09:44:28 -07:00
Qunxin Liu
8f84c58a34
[instance] don't copy phantom points from component
...
No need to consider USE_MY_METRICS for instancing
2022-09-01 09:44:28 -07:00
Qunxin Liu
58dbc00162
[instance] Fix compiling Composite glyph bytes
...
The x/y offset encoded with int8 originally might overflow after deltas
are applied. So we cannot just copy and update old values.
2022-09-01 09:44:28 -07:00
Qunxin Liu
8b7e2a1373
[instance] we need to update hmtx/vmtx values even for empty glyphs
...
Update metrics using the 4 phantom points
2022-09-01 09:44:28 -07:00
Qunxin Liu
7d7b492344
[instance] move _normalize_axes_location to the beginning of
...
subset_plan_create
pinned_at_default flag decides whether delta will be collected as well
when collecting layout variation indices
2022-09-01 09:44:28 -07:00
Qunxin Liu
6de0a6f0b7
[instance] update GPOS ValueRecord table
2022-09-01 09:43:46 -07:00
Qunxin Liu
61636d4efe
[instance] update GPOS AnchorFormat3 table
2022-09-01 09:37:00 -07:00
Qunxin Liu
9ab6605f20
[instance] update GDEF table
2022-09-01 09:35:22 -07:00
Qunxin Liu
b72995ff16
[instance] GDEF table: collect both varidxes and deltas
2022-09-01 09:33:02 -07:00
Qunxin Liu
e03043bd0b
[subset] don't let VariationStore subset() produce inner_maps
...
Make it a subset-planning object so VariationStore can subset to
specified inner_maps.
Also add a layout_variation_idx_delta_map in subset_plan
2022-09-01 09:32:41 -07:00
Matthias Clasen
29d5c7f67a
docs: Improve docs for some apis
...
Various functions take hb_tag_t arrays. Those
arrays are expected to be 0-terminated. Document
that.
2022-08-31 14:54:12 -06:00
Behdad Esfahbod
c96bfca380
[get-alternates] Minor simplify
2022-08-31 08:05:14 -06:00
Behdad Esfahbod
41aa02ae72
[layout] Improve get_feature_tags documentation
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3798
2022-08-29 11:17:22 -06:00
David Corbett
14e754cd2c
[Unicode 15] Update the Arabic joining script list
2022-08-27 19:11:19 -04:00
David Corbett
29386d963c
[Unicode 15] Send the new scripts to USE
2022-08-27 19:11:19 -04:00
David Corbett
cc0e0f7056
[Unicode 15] Update the USE table
2022-08-27 19:11:19 -04:00
David Corbett
e93c2d1309
[Unicode 15] Update the emoji table & cluster test
2022-08-27 19:11:19 -04:00
David Corbett
f0da4a587a
[Unicode 15] Update the vowel constraint table
2022-08-27 19:11:19 -04:00
David Corbett
a223a61209
[Unicode 15] Update the Indic table
2022-08-27 19:11:19 -04:00
David Corbett
8467e12a74
[Unicode 15] Update the Arabic table
2022-08-27 19:11:19 -04:00
David Corbett
d0c32c5a0e
[Unicode 15] Update the UCD table
2022-08-27 19:11:16 -04:00
David Corbett
893512219e
Add a target to download Blocks.txt
2022-08-27 19:08:02 -04:00
David Corbett
b68d0af889
[Unicode 15] Add new `hb_script_t` values
2022-08-27 15:41:07 -04:00
David Corbett
f9d48150e1
Regenerate files using Ragel
2022-08-27 15:39:39 -04:00
Khaled Hosny
371c88678f
Add few missing since tags
2022-08-23 22:30:39 +02:00
Behdad Esfahbod
84d33a1ed8
[glyf] Fix compiler warning
2022-08-23 13:13:13 -06:00
Qunxin Liu
f887ee0c67
[instance] update post.italicAngle
...
Add tests for instancing glyf/hmtx
2022-08-22 09:30:09 -07:00
Qunxin Liu
4882c717b5
[instance] update OS/2.usWeightClass and OS/2.usWidthClass
2022-08-22 09:30:09 -07:00
Qunxin Liu
ac0e22fa8e
[instance] update glyf/hmtx/vmtx tables
2022-08-22 09:29:37 -07:00
Behdad Esfahbod
23461b7502
[hb-ft] Only apply FT_Face's transform if we created FT_Face
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3788
https://github.com/harfbuzz/harfbuzz/issues/3790
2022-08-19 10:28:30 -06:00
Behdad Esfahbod
4f59211762
Merge pull request #3787 from harfbuzz/split_mark_base_bos
...
[repacker] Add support for splitting MarkBasePosFormat1 in the packer.
2022-08-18 16:33:44 -06:00
Behdad Esfahbod
2eda2ab3bb
[object] Forward hb_object_create() arguments to constructor
2022-08-18 16:15:54 -06:00
Behdad Esfahbod
df040de9b4
[array] Add a std::forward
2022-08-18 16:15:00 -06:00
Behdad Esfahbod
c606978ee0
[array] Remove unused type pack
2022-08-18 16:13:56 -06:00
Garret Rieger
37d61afd5e
[subset] add destructor to subset plan.
...
This ensures that it's members get destructed before the plan itself is destructed, as hb_object_destroy calls the destructor for plan.
2022-08-18 16:09:36 -06:00
Garret Rieger
a91bfeeda5
[repacker] comment cleanup.
2022-08-18 22:01:48 +00:00
Garret Rieger
015ca5bc3c
[repacker] fix compiler alignment warning.
2022-08-18 21:52:55 +00:00
Behdad Esfahbod
de37b2650d
[object] Only destruct object if it's not trivially-destructible
...
Such that we're legally free to access the object to destruct its
(pointer) fields ourselves afterwards. For things like hb_font_t,
hb_face_t, etc.
2022-08-18 15:21:48 -06:00
Garret Rieger
683c5dd21e
[repacker] further reduce base count.
2022-08-18 20:57:04 +00:00
Garret Rieger
5ddf41fc9c
[repacker] speed up MarkBasePos test case by using a smaller basecount.
2022-08-18 20:28:05 +00:00
Garret Rieger
bf28b84ae8
[repacker] cleanup unused base_array_id.
2022-08-18 01:51:37 +00:00
Garret Rieger
31976bfb50
[repacker] cleanup unused base_array_links.
2022-08-18 01:50:35 +00:00
Garret Rieger
6f5c52b604
[repacker] optimize AnchorMatrix::clone.
...
Previous runtime is O(n^2) reduced to O(n).
2022-08-18 01:48:10 +00:00
Garret Rieger
29e3b2467e
[repacker] optimzie remove_real_links as it's a hot method.
2022-08-18 01:19:54 +00:00
Garret Rieger
46b5dbd7ce
[repacker] optimize index_for_offset.
2022-08-18 01:18:16 +00:00
Garret Rieger
52303638b9
[repacker] correct size calculation for MarkBasePosFormat1.
2022-08-18 01:10:42 +00:00
Garret Rieger
ac1a853abc
[repacker] implement sanitize methods for MarkBasePos.
2022-08-18 00:55:47 +00:00
Garret Rieger
a3ed9f9099
[repacker] fix graph comparison, and mark base pos generation for the tests.
2022-08-17 23:39:11 +00:00
Garret Rieger
19c51ed35c
[repacker] Get mark base pos test working.
2022-08-17 19:15:55 +00:00
Garret Rieger
b46ced9562
[repacker] correct MarkArray size calculation.
2022-08-17 17:51:29 +00:00
Garret Rieger
36c76c27c6
[repacker] when clearing links in MarkArray, also clear parents of the children.
2022-08-17 17:30:21 +00:00
Garret Rieger
8c3db8bdfd
[repacker] more progress on MarkBasePos tests.
2022-08-17 00:36:23 +00:00
Garret Rieger
1405f96b6f
[repacker] change run_resolve_overflow_test to check for graph equivalence.
...
Replaces a check for an exact match on the final serialized bytes. The previous check enforced equivalent topological sorting between result and expected, but we only really care that the graph's are equivalent and don't overflow.
2022-08-15 23:48:00 +00:00
Garret Rieger
07fd0528c0
[repacker] add graph equality check.
...
Does not compare topological sorting, but looks for equivalence of the two graphs.
2022-08-15 23:16:51 +00:00
Garret Rieger
5cf2a25a60
[repacker] Expose on internal method in the repacker that allows the caller to pass in/out a graph.
...
Will be used in testing so we can compare graphs instead of packed result.
2022-08-15 22:49:24 +00:00
Garret Rieger
c414ef292b
[repacker] Implement MarkArray::shrink.
2022-08-15 22:10:37 +00:00
Behdad Esfahbod
4ab7e579cb
Make HB_BORING_EXPANSION opt-in instead of opt-out
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3757
2022-08-12 12:23:48 -06:00
Garret Rieger
f8b5520556
[repacker] Add AnchorMatrix::shrink.
2022-08-11 23:09:36 +00:00
Garret Rieger
bbe14417ad
[repacker] Begin implementing MarkBasePosFormat1::shrink.
2022-08-11 22:53:30 +00:00
Garret Rieger
c9ddf0815a
[repacker] Implement AnchorMatrix::clone.
2022-08-11 22:34:59 +00:00
Garret Rieger
5ea3c0be8f
[repacker] Implement MarkArray::clone.
2022-08-11 22:21:28 +00:00
Garret Rieger
0083fd109c
[repacker] add as_table() helper to graph.
2022-08-11 22:09:46 +00:00
Garret Rieger
b00eb77682
[repack] Add add_link helper to graph.
2022-08-11 20:33:21 +00:00
Garret Rieger
1acd2a8bf9
[repacker] implement MarkBasePosFormat1::clone_range.
2022-08-11 20:22:31 +00:00
Garret Rieger
cf817f3d99
[repacker] Hook up MarkBasePos splitting.
2022-08-11 19:26:59 +00:00
Garret Rieger
4418beac93
[repacker] start implmenting MarkBasePos splitting.
2022-08-11 19:08:04 +00:00
Behdad Esfahbod
f4f7d691af
Merge pull request #3779 from harfbuzz/split_pair_pos_2
...
[repacker] Add PairPosFormat2 table splitting in the repacker.
2022-08-09 22:23:23 -06:00
Garret Rieger
fa46dbca9d
[repacker] Make actuate_subtable_split internal.
2022-08-08 17:07:14 +00:00
Garret Rieger
fe15f2559f
[repacker] use position instead of memory address as key in device_tables map.
2022-08-08 16:57:28 +00:00
Garret Rieger
163fbf0be1
[repacker] Check for nullptr's before sanitizing.
2022-08-05 23:37:11 +00:00
Garret Rieger
13253233f7
[repacker] in PairPosFormat2 splitting use the max estimated coverage/classdef size for sizing serialization buffers.
2022-08-05 23:15:10 +00:00
Garret Rieger
dde0a2b071
[repacker] track estimated coverage size during PairPosFormat1 split point analysis.
2022-08-05 22:30:37 +00:00
Garret Rieger
b37e8bef0e
[repacker] count size of the current class at the split point in the next segment.
2022-08-05 22:16:20 +00:00
Qunxin Liu
7fde6ab025
fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49790
2022-08-05 15:10:31 -06:00
Behdad Esfahbod
a4e0fd1685
[MultipleSubst] Rewrite serialize signature as single iterator
2022-08-05 15:05:51 -06:00
Behdad Esfahbod
65d28bc5a7
[MultipleSubst] Rewrite serialize() in terms of iterators
...
Unused still, and hence untested
2022-08-05 14:56:07 -06:00
Behdad Esfahbod
b57ea3b053
Revert "[iter] Use && in uses of is_source_of"
...
This reverts commit ccbba667a9
.
2022-08-05 14:29:27 -06:00
Garret Rieger
0e48a65d32
[repacker] estimate size of classDef1 and coverage during PairPos2 split point analysis.
2022-08-05 20:19:11 +00:00
Garret Rieger
2264df6da3
[repacker] add utility that can calculate the size of Coverage+ClassDef via incremental class inclusion.
2022-08-05 18:33:03 +00:00
Behdad Esfahbod
ccbba667a9
[iter] Use && in uses of is_source_of
2022-08-05 11:51:51 -06:00
Behdad Esfahbod
8fb7cc1c63
[iter] Use && in is_sink_of uses
2022-08-05 11:49:29 -06:00
Garret Rieger
5d824c09c0
[repacker] during table splits don't mutate shared coverage/classdef in place.
...
If other subtables are sharing coverage with a subtable being split we have to duplicate the coverage/classdef tables before they are modified during the shrink operation.
2022-08-05 01:37:14 +00:00
Garret Rieger
e1ab355056
[repacker] correct lookup link insertion.
2022-08-05 01:25:16 +00:00
Garret Rieger
a733a9afa5
[repacker] insert new subtables immediately after the subtable they split from in the lookup.
2022-08-05 00:32:47 +00:00
Garret Rieger
506547c958
[repacker] Use hb_pair_t constructor instead of hb_pair ().
...
hb_pair was causing corrupted gid values.
2022-08-04 21:36:21 +00:00
Garret Rieger
fdd1952c75
[repacker] PairPosFormat2 splitting - fix coverage and classdef splitting.
...
The old code was splitting based on coverage index, but should have been splitting on class value.
2022-08-04 19:21:16 +00:00
Behdad Esfahbod
c67c1b745b
VarStore: simplify again
2022-08-04 11:42:22 -06:00
Behdad Esfahbod
914542bd18
Whitespace
2022-08-04 11:40:54 -06:00
Behdad Esfahbod
d7adc55e18
[ot-font] Allow 24bit glyphs in advance cache
2022-08-04 11:40:54 -06:00
Behdad Esfahbod
99070a734a
[cache] Use short instead of int if fits
2022-08-04 11:40:54 -06:00
Qunxin Liu
d831e935df
bug fix in VarData get_delta ()
...
when LONG_WORDS flag is set, item row is not computed correctly
lcursor should be interpreted as INT32
2022-08-04 11:40:42 -06:00
Garret Rieger
b154b1e4c3
[repacker] pull out PairPosFormat1,2::do_split() into a common helper method.
2022-08-04 01:37:21 +00:00
Garret Rieger
88e0dd02cb
[repacker] add sanitization for PairPosFormat2.
2022-08-04 01:03:07 +00:00
Garret Rieger
51a5060273
[repacker] add test for splitting a PairPos2 w/ device tables.
2022-08-03 22:30:42 +00:00
Garret Rieger
54fab21cb1
[repacker] get basic pair pos 2 split test working.
2022-08-03 21:57:37 +00:00
Garret Rieger
60d6ffb375
[repacker] always duplicate classDef2 when splitting a PairPos2.
...
Splits are done in a way that it shouldn't be possible to share the classDef2 between split PairPos2's so pre-emptively duplicate it.
2022-08-03 21:01:23 +00:00
Garret Rieger
6be152420f
[repacker] add basic test for PairPos2 splitting.
2022-08-03 19:02:20 +00:00
Behdad Esfahbod
b78546b1d2
[cache] Residual
2022-08-03 13:02:18 -06:00
Behdad Esfahbod
ec90d1e161
[cache] Add a non-threadsafe version
...
Use in hb-ft, since already mutex'ed.
2022-08-03 13:01:04 -06:00
Behdad Esfahbod
f73c15ca6c
[atomic-int] Add operators for relaxed ops
2022-08-03 13:01:04 -06:00
Behdad Esfahbod
86d1e22d4f
[atomic-ptr] Rename get
2022-08-03 13:01:04 -06:00
Behdad Esfahbod
d3f2287e0b
[atomic-int] Rename get/set
2022-08-03 13:01:04 -06:00
Behdad Esfahbod
c80e32972f
[mvar] Use VarIdx
2022-08-03 11:31:34 -06:00
Khaled Hosny
52bdc750c1
Revert "[meson] Use pathlib in gen-harfbuzzcc.py"
...
This reverts commit eaf7e5686c
.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3776
No idea what is going on, but lets restore the old code.
2022-08-03 10:40:57 +02:00
Garret Rieger
65ed82fde5
[repacker] PairPosFormat2::do_split.
2022-08-02 22:22:42 +00:00
Garret Rieger
f43055f35a
[repacker] Implement PairPosFormat2::shrink.
2022-08-02 22:16:29 +00:00
Khaled Hosny
16bfe6536b
[meson] use cpp.get_argument_syntax not cpp.get_id
...
To account for both MSVC and clang-cl.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3756
2022-08-03 00:07:40 +02:00
Garret Rieger
9f2a44640c
[repack] implement device table transfer for PairPosFormat2.
2022-08-02 21:47:53 +00:00
Garret Rieger
22eae32b3b
[repacker] add classDef1 clone_range to PairPosFormat2 split.
2022-08-02 21:04:38 +00:00
Garret Rieger
68b90153ea
[repacker] Add class def sanitize and range cloning.
2022-08-02 20:58:35 +00:00
Garret Rieger
ca0df565f7
[repacker] extract coverage cloning into helper.
2022-08-02 20:04:46 +00:00
Behdad Esfahbod
ee18ae3b76
[avar] Minor move code around
2022-08-02 12:56:06 -06:00
Garret Rieger
7f4b2037a5
[repacker] include size of device tables when determining PairPos2 split points.
2022-08-02 18:43:25 +00:00
Behdad Esfahbod
826639fab2
[src] Add test-use-table
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3758
2022-08-02 12:18:18 -06:00
Garret Rieger
58fdbd8e5d
[repacker] begin adding PairPosFormat2 splitting support.
2022-08-02 17:32:13 +00:00
Behdad Esfahbod
e387b3acd3
[ft] Try harder
2022-08-02 10:02:48 -06:00
Khaled Hosny
40a3468906
hb-ft: cast to float to help windows sqrtf
2022-08-02 10:02:48 -06:00
Behdad Esfahbod
6549aec89d
[SingleSubstFormat1] Help avoid timeouts in closure() some more
...
For https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49712
2022-08-01 13:11:14 -06:00
Behdad Esfahbod
ba9b20534c
[ft] Try working around fonts with transform set
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3772
2022-08-01 12:42:05 -06:00
psykose
04d28d94e5
[repacker] fix signedness of char in tests
2022-08-01 11:48:57 -06:00
Khaled Hosny
f1f2be776b
5.1.0
2022-07-31 15:48:32 +02:00
Khaled Hosny
d6e55f1baf
[automake] Use LANG=C when generating harfbuzz*.cc
...
Since `sort` is locale-dependent.
2022-07-30 23:35:47 +02:00
Behdad Esfahbod
a722b3e666
[shape] Only add any unsafe-to-concat flag if requested
...
Previously it was confusing as random incorrect flags were produced.
2022-07-30 14:33:33 -06:00
Behdad Esfahbod
0a31cfb225
[buffer] Fix produce-tatweel enum value
2022-07-30 14:32:58 -06:00
Behdad Esfahbod
a0111e4fab
[graph] Fix warning
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3766
2022-07-30 12:09:45 -06:00
Behdad Esfahbod
083d4ef5c4
[harfbuzz-subset.cc] Revert back the sort order
...
Generator seems unstable.
2022-07-30 11:53:56 -06:00
Behdad Esfahbod
065f1e33c8
Merge pull request #3763 from harfbuzz/split_pair_pos
...
[repacker] Add ability for repacker to pre split PairPosFormat1 subtables.
2022-07-30 11:09:33 -06:00
Behdad Esfahbod
7c9e1ffa7c
Merge pull request #3762 from harfbuzz/safe-to-kashida
...
Prototype glyph flag safe-to-kashida
2022-07-30 10:33:27 -06:00
Behdad Esfahbod
f43dadb8ee
Rename kashida -> tatweel
2022-07-30 10:23:03 -06:00
Behdad Esfahbod
73c3ac9172
Document kashida stuff
2022-07-30 10:21:34 -06:00
Behdad Esfahbod
d277addb2f
[buffer] Add HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_KASHIDA
2022-07-30 10:10:21 -06:00
Behdad Esfahbod
915e12ccbb
Prototype glyph flag safe-to-kashida
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3721
2022-07-30 10:05:36 -06:00
Behdad Esfahbod
5e31a582c9
[emoji] Bump compression level
2022-07-30 00:09:33 -06:00
Behdad Esfahbod
56a5bc3bd0
[emoji] Regenerate test data
...
Fix generator.
2022-07-30 00:08:44 -06:00
Behdad Esfahbod
90a3355e66
[ucd-table] Use more compact compression numbers
...
Doesn't show any slowdown in benchmarks.
2022-07-30 00:01:50 -06:00
Behdad Esfahbod
23dbd35ca3
Merge branch 'main' into split_pair_pos
2022-07-29 19:51:57 -06:00
Behdad Esfahbod
a5d9012e94
Revert "[ot-font] Minor simplification"
...
This reverts commit 28c02b3768
.
Old code was used in case of memory allocation failure (as shown
by fuzzers...)
2022-07-29 19:51:00 -06:00
Garret Rieger
9578c44ea2
[repacker] add HB_FALLTRHOUGH.
2022-07-29 22:21:32 +00:00
Garret Rieger
6a5e2cb2f8
[repacker] add todo.
2022-07-29 22:21:32 +00:00
Garret Rieger
14f95ee0cf
[repacker] re-count shared node sizes in split PairPos segments.
2022-07-29 22:21:32 +00:00
Garret Rieger
3b91fb2a9f
[repacker] cleanup todo.
2022-07-29 22:21:31 +00:00
Garret Rieger
a0b8893e46
[repacker] add Coverage sanitize.
2022-07-29 22:21:31 +00:00
Garret Rieger
38846f41d3
[repacker] more TODO cleanup.
2022-07-29 22:21:31 +00:00
Garret Rieger
46c1fa7d1b
[repacker] sanitize PairPos during subtable extension.
2022-07-29 22:21:31 +00:00
Garret Rieger
2a5902ee50
[repacker] cleanup.
2022-07-29 22:21:31 +00:00
Garret Rieger
674f0194a3
[repacker] add extension pairpos split test.
2022-07-29 22:21:31 +00:00
Garret Rieger
1d2516f037
[repack] get basic pairpos split test working.
2022-07-29 22:21:31 +00:00
Garret Rieger
fb3f6ad7c0
[repacker] ensure lookup map is updated when lookup memory location changes.
2022-07-29 22:21:31 +00:00
Garret Rieger
4e7360f78d
[repacker] begin adding tests for PairPosFormat1 splitting.
2022-07-29 22:21:31 +00:00
Garret Rieger
f1bfb6585f
[repacker] cleanup debug prints.
2022-07-29 22:21:31 +00:00
Garret Rieger
65afed047d
[repacker] more bug fixes.
2022-07-29 22:21:31 +00:00
Garret Rieger
1002a3dcd3
[repacker] bug fixes.
2022-07-29 22:21:31 +00:00
Garret Rieger
a5c2c8c131
[repack] fix incorrect shrink.
2022-07-29 22:21:31 +00:00
Garret Rieger
d589ce68ea
[repacker] add extension subtable when needed while adding new PairPos table's.
2022-07-29 22:21:31 +00:00
Garret Rieger
5024d4de67
[repack] more PairPos split implementation.
2022-07-29 22:21:31 +00:00
Garret Rieger
510b8ab101
[repack] link new coverage in PairPosFormat1::clone_range.
2022-07-29 22:21:31 +00:00
Garret Rieger
29cb8818cd
[repacker] new coverage serialization in PairPosFormat1.
2022-07-29 22:21:31 +00:00
Garret Rieger
8d63f60e5b
[repack] add graph_t::move_child helper function.
2022-07-29 22:21:31 +00:00
Garret Rieger
8e5fffc44a
[repack] add helper to create new nodes.
...
Switch to malloc'ing each node individually rather than trying to guess up front the total buffer space needed.
2022-07-29 22:21:31 +00:00
Garret Rieger
bf0986c7d1
[repack] sketch splitting mechanism for PairPosFormat1.
2022-07-29 22:21:30 +00:00
Garret Rieger
f6a242b605
[repacker] begin adding PairPos splitting support.
2022-07-29 22:21:30 +00:00
Garret Rieger
69913e012e
[repacker] Update repacker api method to take a table tag.
...
This is needed to allow table specific optimizations to be performed during repacking.
2022-07-29 16:16:46 -06:00
Behdad Esfahbod
28c02b3768
[ot-font] Minor simplification
2022-07-29 15:55:16 -06:00
Behdad Esfahbod
149b030520
Fix thinko
2022-07-29 12:41:30 -06:00
Behdad Esfahbod
f7677213d7
[SingleSubstFormat1] Don't close glyphs in degenerate cases
...
Fixes https://oss-fuzz.com/testcase-detail/5145429829877760
2022-07-29 12:00:29 -06:00
Behdad Esfahbod
3da50c50aa
Remove unused const
2022-07-29 11:57:15 -06:00
Khaled Hosny
0c4495e555
[meson] Don’t use f-string
...
It requires Python 3.6+
https://github.com/harfbuzz/harfbuzz/pull/3760#issuecomment-1198972788
2022-07-29 13:22:18 +02:00
Behdad Esfahbod
e51526bf06
[CompositeGlyph] Add HB_NO_BEYOND_64K
2022-07-28 09:53:30 -06:00
Behdad Esfahbod
6e6b9cf972
[use-table] Adjust main() code
2022-07-28 09:48:43 -06:00
Khaled Hosny
eaf7e5686c
[meson] Use pathlib in gen-harfbuzzcc.py
2022-07-28 13:49:06 +02:00
Khaled Hosny
5df2347cf3
[meson] Don’t tamper with paths in amalgam files
...
Using os.path.basename() breaks files in subdirectories
(gsubgpos-graph.cc instead of graph/gsubgpos-graph.cc).
Use paths relative to current source dir instead.
2022-07-28 13:49:06 +02:00
Behdad Esfahbod
0c5b60acbd
[use-table] Fix previous commit
2022-07-27 14:00:06 -06:00
Behdad Esfahbod
0788f77371
[use-table] Add a main() to print categories
2022-07-27 13:58:44 -06:00
Behdad Esfahbod
9aaa835ac1
[use-table] Regenerate with latest packtab
2022-07-27 12:24:43 -06:00
Behdad Esfahbod
3698ae25bf
[harfbuzz-subset.cc] Update
2022-07-26 14:41:34 -06:00
Behdad Esfahbod
e2cc34e190
[subset/GPOS] Fix a fuzzer timeout test
...
Fixes https://oss-fuzz.com/testcase-detail/5234369031176192
2022-07-26 12:31:40 -06:00
Garret Rieger
241ebc9354
[repacker] fix include paths.
2022-07-26 12:22:17 -06:00
Garret Rieger
5f4adb9bf3
[repacker] fix to lookup size comparison.
2022-07-26 12:22:17 -06:00
Garret Rieger
6627204c4d
[repacker] Makefile fix.
2022-07-26 12:22:17 -06:00
Garret Rieger
f56e66f3f0
[repacker] for ext promotion choose lookups from highest subtables per byte to lowest.
...
Attempts to roughly maximize the number of subtables that are non-ext.
2022-07-26 12:22:17 -06:00
Garret Rieger
9d0b2da51b
[repacker] count subtable size in each group of consecutive layers for extension promotion decisions.
...
Enforce that the following groups are all <64k in size:
- LookupList + Lookups
- Lookups + SubTables
- SubTables + Descendants
2022-07-26 12:22:17 -06:00
Garret Rieger
3d37b9f4db
[repacker] when calculating 16bit space size also consider ext lookup subtables.
2022-07-26 12:22:17 -06:00
Garret Rieger
9db3beb721
[repacker] include LookupList size when calculating size of 16bit space for ext promotion decisions.
2022-07-26 12:22:17 -06:00
Garret Rieger
e0607af976
[repacker] Use extension promotion when repacking invoked via hb-subset-repacker (eg. from fonttools).
2022-07-26 12:22:17 -06:00
Garret Rieger
8d611a7fd0
[repacker] remove temporary visibility overrides in gsubgpos.
2022-07-26 12:22:17 -06:00
Garret Rieger
7de136f8a8
[repacker] add ext promotion test.
2022-07-26 12:22:17 -06:00
Garret Rieger
c38896e07c
[repacker] todo.
2022-07-26 12:22:17 -06:00
Garret Rieger
ad0041f5f7
[repacker] Add basic version of the extension promotion selection algorithm.
2022-07-26 12:22:17 -06:00