Commit Graph

9252 Commits

Author SHA1 Message Date
Garret Rieger 73ff04a324 [subset] add option to have the subsetter set the mac overlaps flag on each glyph. 2021-05-26 16:04:56 -06:00
Qunxin Liu f739e1dc6a [subset] subset both CPAL and COLRv1 2021-05-26 15:39:42 -06:00
Garret Rieger 466e1fdf5d [subset] remove unnessecary brackets. 2021-05-26 15:26:09 -06:00
Garret Rieger 583237299d Add cmp() method for major to page map. 2021-05-26 15:26:09 -06:00
Garret Rieger 2c137045dc [subset] Optimize set iteration by caching the last found page map index.
Reuse it if possible on consecutive calls to next(). Will signifcantly speed up cases where the entire set is iterated. In local testing iterating a very large set was 10x faster.
2021-05-26 15:26:09 -06:00
Behdad Esfahbod 9e5738a86a [set] Okay, giving up on constexpr till C++14
../src/hb-set.hh:213:89: error: call to non-'constexpr' function 'const elt_t& hb_vector_size_t<elt_t, byte_size>::operator[](unsigned int) const [with elt_t = long long unsigned int; unsigned int byte_size = 64]'
2021-05-26 15:15:06 -06:00
Behdad Esfahbod 90fa558a5b [set] Another try at constexpr to make msvc happy 2021-05-26 15:05:48 -06:00
Behdad Esfahbod bf5d4a6392 [set] Add TODO 2021-05-26 14:27:02 -06:00
Behdad Esfahbod 11d03f1ff9 [set] Mark a couple methods as constexpr 2021-05-26 14:26:05 -06:00
Behdad Esfahbod d2829ad374 [set] Refactor code into page_t::is_subset() 2021-05-26 14:24:27 -06:00
Behdad Esfahbod e47e44a858 [set] Whitespace 2021-05-26 14:19:27 -06:00
Kurt Kartaltepe 2000f47ae5 [set] Compute is_subset by comparing pages.
Test subsets one page at a time instead of by codepoints. On my machine
this is about 250x faster than the previous implementation.
2021-05-26 14:15:25 -06:00
Dominik Röttsches 1dffb55361 Chromium build fixes for C++ 17 warning and missing _remap_indexes
Use class instead of typename, move _remap_indexes out of #ifndef.

Fixes #2979
2021-05-18 08:20:46 -06:00
Jonathan Kew bbc5fc3731 [aat] If shaping via morx, don't adjust mark positioning when zeroing widths. 2021-05-17 21:44:29 -06:00
Jonathan Kew 4f1e8d2bf7 [aat] Update glyph properties from GDEF if available when doing a replacement. 2021-05-17 21:44:29 -06:00
Garret Rieger 5e0ec33b3d Error when link width not in [2, 4] 2021-05-12 16:05:11 -06:00
Qunxin Liu b23f29bf05 [subset] Add subset () method for COLRv1 Paint tables, BaseGlyphV1List and LayerV1List
Also add support for Offset24 in serializer and repacker
2021-05-12 16:05:11 -06:00
Garret Rieger 413769bf86 Add hb-ot-color-colrv1-closure.hh to sources list. 2021-05-12 15:29:53 -06:00
Garret Rieger de0eba20ed Remove array for visited_paint. 2021-05-12 15:29:53 -06:00
Qunxin Liu e59ffe5482 [subset] COLRv1 layer/palette indices closure 2021-05-12 15:29:53 -06:00
Garret Rieger a08900b721 [subset] fix failing colrv0 subsetting when font has composite glyphs.
Composite glyph collection was happening along side colrv0 glyph collection which meant it was possible to miss grabbing the component glyphs for a glyph added by colrv0.
2021-05-10 15:33:54 -06:00
tstuefe b54d9b695a start 2021-05-07 16:23:09 -06:00
Khaled Hosny b37f03f16b 2.8.1 2021-05-04 02:07:06 +02:00
Garret Rieger be50779cda [subset] correct ClassDef format determination.
It was possible for glyph_min to be a glyph mapped to class zero which threw off the number of glyph calculation.
2021-04-30 14:46:57 -06:00
Khaled Hosny 90713f270e [hb-ot-layout] Document some return values 2021-04-30 14:05:33 -06:00
Garret Rieger e25efb31f2 [subset] consider all value formats when computing effective format. 2021-04-23 19:09:37 -07:00
Qunxin Liu 84dbfacfec [subset] fix collect_variation_idx in PairPosFormat2 2021-04-23 18:52:24 -07:00
Garret Rieger d356d0f79c [subset] optimize ValueRecord's for PairPosFormat1. 2021-04-23 18:50:34 -07:00
Garret Rieger f9fbe4817e [subset] implement value record optimization for PairPosFormat2. 2021-04-23 18:50:34 -07:00
Garret Rieger badb8e409b [subset] use copy_values for PairPos serialize. 2021-04-23 18:50:33 -07:00
Garret Rieger 2f50283cd3 [subset] Begin implementing ValueRecord optimization:
remove value records which have a zero value.
2021-04-23 18:50:33 -07:00
Garret Rieger 5df7c668ba [subset] In SinglePosFormat1 serialize only 1 value record.
Previously one record per glyph in the subset was serialized.
2021-04-23 18:50:33 -07:00
Garret Rieger 92757f6809 [subset] Don't drop anchor device tables when dropping hints. These may contain variation data.
Update subseting expected files to match latest version of fontTools.
2021-04-23 18:50:33 -07:00
Garret Rieger 6fddc2bbf9 [subset] subset layout tables (G*) by default. 2021-04-22 15:08:49 -07:00
Garret Rieger 425ba1f4ab [subset] fixes infinite loop in hb_set_get_max().
Fixes https://oss-fuzz.com/testcase-detail/5363902507515904
2021-04-20 13:18:07 -06:00
Garret Rieger ec4321068b [subset] fix infinite loop caused by alloc failure in repacker.
Fixes: https://oss-fuzz.com/testcase-detail/5609112151916544.
2021-04-20 13:18:07 -06:00
Garret Rieger 0e845d973e [subset] fix memory leak in repacker caused by failed alloc.
Fixes: https://oss-fuzz.com/testcase-detail/5616763250278400.
2021-04-20 13:18:07 -06:00
Garret Rieger 3fb62cdc14 [subset] fail on offset overflow in tables that we don't repack.
Fixes: https://oss-fuzz.com/testcase-detail/5229304507138048
2021-04-19 17:01:05 -06:00
Behdad Esfahbod 23a28f5ad0 Avoid undefined-behavior
If a struct had (because it's a union) sizeof that is larger than the null_size,
we were providing only null_size bytes for its Null object. We know we'd never
access beyond that, but is undefined-behavior nonetheless according to the
standard.

The alternative fix would have required use of flexible-arrays, which are not
standard and have their own issues in various compiler. We've discussed that
extensively in the follow Mozilla issue (currently locked; I've asked that it
be opened):

  https://bugzilla.mozilla.org/show_bug.cgi?id=1577584

Part of
https://github.com/harfbuzz/harfbuzz/pull/2067
2021-04-16 13:23:25 -06:00
Behdad Esfahbod 499248c533 [blob] Use min_size, instead of null_size in .as<T>()
Part of https://github.com/harfbuzz/harfbuzz/pull/2067
2021-04-16 13:14:48 -06:00
Khaled Hosny e116058bba [directwrite] Use correct UTF-16 string length
Fixes https://github.com/harfbuzz/harfbuzz/issues/2474
2021-04-15 09:30:40 -06:00
Ben Denckla 668acff1f0 similarly improve comments on Hebrew ccc 18 & 19
Should have committed this along with commit 9658435a25 but forgot.
2021-04-13 11:01:22 -06:00
Ben Denckla 43d955207b improve comments on Hebrew ccc 18 & 19
improve comments to reflect that:
ccc 18 includes both "flavors" of qamats: qamats [gadol] and qamats qatan
ccc 19 includes both "flavors" of holam: holam [not haser for vav] and holam haser for vav
This code and its comments may have been written before these code points were added to Unicode.
I.e. originally, these comments may have been complete, but they may have become incomplete in the meantime.
2021-04-13 11:01:22 -06:00
Qunxin Liu 9dc9f0385d [subset] fix for fuzzer testcase: https://oss-fuzz.com/testcase-detail/5858518134554624 2021-04-09 11:07:28 -06:00
Qunxin Liu 430a67ceab [subset] COLRv1 struct definitions 2021-04-08 11:27:01 -06:00
Qunxin Liu 553ffaf682 [subset] fix for fuzzer testcase: https://oss-fuzz.com/testcase-detail/6382598554255360
avoid writing to null pointer
2021-04-08 09:54:48 -06:00
Garret Rieger 8b686afeb5 [subset] add unlikely(). 2021-04-06 12:34:44 -06:00
Garret Rieger 64122b5a44 [subset] don't visit lookup if covered glyph set has failed.
If covered glyph set is in error then the same lookup can be recursed into repeatedly potentially causing a fuzzer timeout. Fixes: https://oss-fuzz.com/testcase-detail/5416421032067072.
2021-04-06 12:34:44 -06:00
Garret Rieger 6f98a8ed46 [subset] Anchor should only use format 1 when hints are dropped.
Refactor Anchor to have a subset method instead of copy. This also allows
use to use serialize_subset in several places which simplifies calculating
offset bases.
2021-04-06 11:50:44 -06:00
Garret Rieger 71d6d15600 [subset] clamp distance to prevent shifting outside of the limits of int64.
Fixes https://oss-fuzz.com/testcase-detail/4961171477233664.
2021-04-06 11:48:39 -06:00