src/OT


Log

Author Commit Date CI Message
Behdad Esfahbod c41b0d7b 2023-07-10T17:23:58 [sanitize/PairValueRecord] Add a max_size for faster sanitize
Behdad Esfahbod d84c5f29 2023-07-08T15:22:51 Revert "[gsubgpos] Make (Chain)Context funcs templatized" This reverts commit 03ac08d267eb7ad2f1ac039115fc0030ea475fae.
Behdad Esfahbod e73223b9 2023-07-08T15:22:18 [gsubgpos] Make (Chain)Context funcs templatized Unfortunately they still won't be inlined because the matcher_t needs function pointers. So, no speed up. Going to revert.
Behdad Esfahbod 0b879afb 2023-07-07T22:35:43 [sanitize] Inline Coverage::sanitize
Behdad Esfahbod 2006d321 2023-07-07T17:07:11 [sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size Unfortunately this doesn't speed up NotoNastaliq or Gulzar as I was hoping for. Their GSUB tables are not large enough for this to kick in...
Behdad Esfahbod 7a85663c 2023-07-07T19:21:18 Revert "[sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size" This reverts commit 10f8556c73f3cf231c6b5a900a6a1903f9516f90. This was, unfortunately, wrong :(.
Behdad Esfahbod 10f8556c 2023-07-07T17:07:11 [sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size
Behdad Esfahbod 68b78914 2023-07-07T17:07:11 [sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size Unfortunately this doesn't speed up NotoNastaliq or Gulzar as I was hoping for. Their GSUB tables are not large enough for this to kick in...
Behdad Esfahbod 90752cd5 2023-07-07T15:47:28 [type] Add HeadlessArray16Of
Behdad Esfahbod 25297408 2023-07-03T10:34:26 [COLR] Fix PaintComposite sanitize timeout Was timing out after recent sanitize() change. Fixes https://oss-fuzz.com/testcase-detail/5692635449524224
Behdad Esfahbod eae82788 2023-07-02T13:07:26 [GPOS] Micro-optimize lazy_some_gpos check Speeds up 11% in: BM_Font/load_face_and_shape/Roboto-Regular.ttf/hb
Behdad Esfahbod 46e54a23 2023-07-02T13:03:16 [GPOS] Remove extra check
Behdad Esfahbod 7f5380fe 2023-07-02T12:19:22 [Composite] Don't apply transformation if phantom_only
Behdad Esfahbod 0cf759b0 2023-07-02T12:15:43 [Glyph] Don't shift anchored Composite if phantom_only Fixes https://oss-fuzz.com/testcase-detail/5114131137822720
Behdad Esfahbod 645bde47 2023-07-02T12:07:22 [Glyph] Pass phantom-only to gvar only for SIMPLE glyphs For Composites we need to get the translation offset deltas.
Behdad Esfahbod 2d6091fc 2023-06-30T11:48:56 [GPOS] Make AnchorMatrix sanitize lazy again Was reverted in the previous commit, because it was incomplete.
Behdad Esfahbod 0887382c 2023-06-30T11:39:46 [GPOS] Fix sanitize
Behdad Esfahbod 690af7aa 2023-06-30T10:36:01 [GPOS] Sanitize Device tables lazily This speeds up face loading for variable fonts by 80%! Comparing before to after Benchmark Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------------------------------------- BM_Font/load_face_and_shape/Roboto-Regular.ttf/hb -0.0368 -0.0366 20 20 20 19 BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/hb -0.7149 -0.7162 77 22 77 22 BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/var/hb -0.7241 -0.7255 80 22 79 22 BM_Font/load_face_and_shape/SourceSansPro-Regular.otf/hb -0.1441 -0.1445 28 24 28 24 BM_Font/load_face_and_shape/AdobeVFPrototype.otf/hb -0.7893 -0.7910 66 14 66 14 BM_Font/load_face_and_shape/AdobeVFPrototype.otf/var/hb -0.7865 -0.7882 67 14 66 14 BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/hb -0.8895 -0.8900 227 25 226 25 BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/var/hb -0.8895 -0.8900 226 25 225 25 BM_Font/load_face_and_shape/Comfortaa-Regular-new.ttf/hb -0.5512 -0.5531 42 19 42 19 BM_Font/load_face_and_shape/NotoNastaliqUrdu-Regular.ttf/hb -0.1511 -0.1510 227 192 225 191 BM_Font/load_face_and_shape/NotoSerifMyanmar-Regular.otf/hb -0.1494 -0.1498 41 35 40 34 OVERALL_GEOMEAN -0.6443 -0.6456 0 0 0 0
Behdad Esfahbod d338506c 2023-06-30T10:13:05 [GPOS] Reuse sanitize_values_stride_unsafe in another function
Behdad Esfahbod 794fac32 2023-06-29T20:55:52 [glyf] Minor another range for loop
Behdad Esfahbod 0ae16766 2023-06-29T20:38:42 [CompositeGlyph] Minor use a range for loop
Behdad Esfahbod 05c01ad5 2023-06-29T16:49:20 [SimpleGlyph] Minor use a range for loop
Behdad Esfahbod 4123e0c7 2023-06-29T16:27:35 [path-builder] Speed up mid-point calculation
Behdad Esfahbod ca44c38c 2023-06-29T14:41:21 Add HB_ALWAYS_INLINE With MSVC implementation as well.
Behdad Esfahbod c49ca371 2023-06-29T12:38:45 [Glyph] Minor micro-optimize away a function call For when coords are not set.
Behdad Esfahbod 5fb7b02a 2023-06-29T12:28:43 [CompositeGlyph] Minor use range loop
Behdad Esfahbod 20b32b04 2023-06-29T12:08:11 [SimpleGlyph] Micro-optimize phantom_only
Behdad Esfahbod 04809ede 2023-06-29T11:58:53 [CompositeGlyph] Micro-optimize translate()
Behdad Esfahbod 229db973 2023-06-29T11:54:10 [CompositeGlyph] Minor use vector::push()
Behdad Esfahbod 75101802 2023-06-29T10:54:49 [CompositeGlyph] Micro-optimize
Behdad Esfahbod e9d74d6b 2023-06-29T10:53:52 [SimpleGlyph] Minor add an unlikely to error condition
Behdad Esfahbod 6abca413 2023-06-29T10:39:49 [path-builder] Micro-optimize No need to initialize these when has_data=false.
Behdad Esfahbod 5703c1c4 2023-06-29T10:35:23 [path-builder] Add a couple of unlikely's
Behdad Esfahbod f5eead04 2023-06-28T15:07:15 [glyf/gvar] Optimize getting variable phantom points Used when there's no HVAR table and get_h_advance(). I see some 10% speedup with a SourceSerifVariable-Roman with the HVAR table removed.
Behdad Esfahbod e42d6df5 2023-06-28T14:25:11 [glyf] Minor refactor a couple of lines and micro-optimize
Behdad Esfahbod c31471d1 2023-06-28T13:51:54 [glyf] Micro-optimize
Behdad Esfahbod 83d75d5e 2023-06-28T13:35:24 [glyf] always_inline consume_point 7% speedup in: BM_Font/draw_glyph/Roboto-Regular.ttf/hb
Behdad Esfahbod 8795cced 2023-06-28T13:29:29 Revert "[SimpleGlyph] Avoid branches in read_points" This reverts commit ba062c713e469f91f57f3c85990f721789ec7c2a.
Behdad Esfahbod ba062c71 2023-06-28T13:24:37 [SimpleGlyph] Avoid branches in read_points Calculate total bytes in read_flags and bounds-check once. This slows things down apparently, so going to revert.
أحمد المحمودي (Ahmed El-Mahmoudy) 10b9ca54 2023-06-28T07:46:33 Fix typo: subtitution -> substitution
Behdad Esfahbod 452557cd 2023-06-26T18:40:54 Replace a free with hb_free Ouch.
Behdad Esfahbod 1fc128f6 2023-06-26T18:34:27 Replace a few memset/memcpy's with hb_ equivalents
Behdad Esfahbod 67b16247 2023-06-07T16:15:48 [set] Simplify a few set iterations as range loop
Behdad Esfahbod dcecb4d1 2023-06-05T16:03:36 [subset/ValueFormat] Micro-optimize
Behdad Esfahbod 469e82a2 2023-06-05T15:23:22 [subset/PairPos] Micro-optimize
Behdad Esfahbod 6593d2aa 2023-06-05T15:11:43 [subset/PairPos] Speed up
Behdad Esfahbod 15048e50 2023-06-04T10:07:04 [serialize] Add more function attributes
Behdad Esfahbod 4e076da9 2023-06-04T09:48:42 Another try at fixing build
Behdad Esfahbod b08866af 2023-06-04T09:44:37 Fix build
Behdad Esfahbod 82741304 2023-06-04T09:41:41 [subset] start_embed never returns nullptr Remove checks.
Behdad Esfahbod af3fdf1f 2023-06-04T09:22:42 [subset/glyf] Simplify error handling
Behdad Esfahbod 3dd1de46 2023-06-04T09:15:14 [subset/glyf] Fix a few return_trace's
Behdad Esfahbod 73f2f935 2023-06-04T09:12:18 [subset/glyf] Fix another leak
Behdad Esfahbod 3d08a2f1 2023-06-03T23:38:38 [subset/glyf] Fix leak
Behdad Esfahbod fc33200d 2023-06-03T23:29:39 [subset/glyf] Avoid a vector copy Oops!
Behdad Esfahbod 3bfcbd61 2023-06-03T23:17:56 [subset/glyf] Minor use range lopp
Behdad Esfahbod 917c8d0a 2023-06-03T23:15:56 [subset/glyf] Minor change of value
Behdad Esfahbod b5792f11 2023-06-03T22:24:06 [subset] Reuse num_glyphs in various places
Behdad Esfahbod 87cf09bd 2023-06-03T21:00:56 [subset/loca] Fix up for retaingid null glyphs at the end We currently don't have those, but in case we add.
Behdad Esfahbod 38fa0323 2023-06-03T18:51:09 Revert "[subset/loca] Build in the serializer memory" This reverts commit 546b51818666ca1ddb01824f752eccbd6a751b4b.
Behdad Esfahbod 546b5181 2023-06-03T18:50:35 [subset/loca] Build in the serializer memory Because it's hot. Doesn't seem to speed up though. Slight slowdown. Going to revert.
Behdad Esfahbod 3cb2b49e 2023-06-03T18:44:56 [subset/loca] Shuffle code around
Behdad Esfahbod b0d0babb 2023-06-03T17:14:55 [subset/loca] Rewrite loop faster
Behdad Esfahbod ca27925d 2023-06-03T16:18:15 Use hb_codepoint_pair_t in more places
Behdad Esfahbod c7493efe 2023-06-03T15:39:27 [subset/loca] Micro-optimize
Behdad Esfahbod efefec13 2023-06-02T20:33:52 [subset/glyf] Remove unneeded codepath
Behdad Esfahbod ac1f5ca0 2023-06-02T17:07:44 [subset/loca] Micro-optimize
Behdad Esfahbod 6eae9325 2023-06-02T17:05:27 [subset/loca] Reduce a vector allocation
Behdad Esfahbod ec8965e4 2023-06-02T16:10:25 [subset/glyf] Don't clear loca allocation
Behdad Esfahbod b67e464b 2023-06-02T15:11:06 [subset/retaingid] Regain perf lost In 0f12fd5a66a5dd1c3c9ac5ea8a52341bafcfe567
Behdad Esfahbod 0f12fd5a 2023-06-02T13:58:55 [subset/glyf] Fix for non-monotonic glyphmap Slows things down again, but is correct. Still a good win combined with the previous changes.
Behdad Esfahbod 66ce902c 2023-06-02T13:53:21 [glyf] Reduce allocation again
Behdad Esfahbod 0e0110e7 2023-06-02T13:34:58 [glyf] Avoid a SubsetGlyph copy Unfortunately hb_second() always does a copy...
Behdad Esfahbod 33ea8b5e 2023-06-02T13:10:52 [subset/glyf] Don't allocate empty SubsetGlyf's Shows 33% speedup on Mplus/retaingid/10 benchmark: Comparing before to after Benchmark Time CPU Time Old Time New CPU Old CPU New -------------------------------------------------------------------------------------------------------------------------------------------------------- BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10 -0.3296 -0.3294 0 0 0 0
Behdad Esfahbod b04ca1c1 2023-06-01T20:43:07 Revert "[subset/glyf] Exact allocation" This reverts commit a830f085c849846f8441f5d92d4db36130ef71f8. Weirdly enough in a benchmark I'm running I see this show some slowdown. Makes zero sense.
Behdad Esfahbod a830f085 2023-06-01T20:37:29 [subset/glyf] Exact allocation
Behdad Esfahbod ff0b85cf 2023-06-01T20:30:56 [subset/glyf] Empty .notdef only if old-gid was also 0 Otherwise it wasn't a .notdef, even if new-gid is 0.
Behdad Esfahbod 65a7d8c6 2023-06-01T20:20:00 [glyf] Empty glyphs need no padding
Behdad Esfahbod 73c18d1d 2023-06-01T20:06:42 [glyf] Micro-optimize padded_offsets
Behdad Esfahbod 4d853b8b 2023-06-01T18:47:58 [subset/regaingid/glyf] Add a fastpath for empty glyphs Mplus benchmark: Comparing before to after Benchmark Time CPU Time Old Time New CPU Old CPU New ----------------------------------------------------------------------------------------------------------------------------------------------------------- BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10 -0.1764 -0.1771 0 0 0 0 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/64 -0.1394 -0.1394 0 0 0 0 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/512 -0.0644 -0.0645 0 0 0 0 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/4096 +0.0132 +0.0131 1 1 1 1 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10000 -0.0029 -0.0034 3 3 3 3 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/10 +0.0364 +0.0362 0 0 0 0 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/64 +0.0346 +0.0343 0 0 0 0 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/512 +0.0271 +0.0268 0 0 0 0 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/4096 +0.0193 +0.0193 1 1 1 1 BM_subset/subset_glyphs/Mplus1p-Regular.ttf/10000 -0.0240 -0.0243 2 2 2 2 OVERALL_GEOMEAN -0.0305 -0.0307 0 0 0 0
Behdad Esfahbod 6ec7629f 2023-06-01T18:18:30 [subset/glyf] Add a const
Behdad Esfahbod 208c9490 2023-05-26T12:02:03 [VarComposite] Limit number of axes that are copied Bandaid for https://oss-fuzz.com/testcase-detail/4591122882887680
Behdad Esfahbod 5872bdf6 2023-05-26T11:41:54 [vector] Add copy-constructor for array_t's
Behdad Esfahbod 5543d058 2023-05-17T17:29:44 [subset] Use vector instead of map for glyph bounds (#4232) * [subset] Use vector instead of map for glyph bounds Is faster. Part of https://github.com/harfbuzz/harfbuzz/issues/4231 * [subset] initialize bounds_vec value to 0xFFFFFFFF Some non-EMPTY glyph might have 0 bounds width/height --------- Co-authored-by: Qunxin Liu <qxliu@google.com>
Qunxin Liu bf298e50 2023-05-01T13:40:19 [instancer ]update OS_2/post/glyf tables to accept Triple for axes positions
Behdad Esfahbod 33ef96b6 2023-05-09T11:13:51 [glyf] Micro-optimize a few hash operations
Behdad Esfahbod 2f05c32c 2023-05-08T14:29:07 [Coverage] Minor access arrayZ directly in a couple places
Behdad Esfahbod 4ad443d5 2023-05-08T10:14:43 [Coverage/ClassDef] Don't call qsort if sorted already
Behdad Esfahbod 8df5cdbc 2023-05-07T15:49:50 [Coverage/ClassDef] Handle glyphID overflow in serialize
Behdad Esfahbod 71910fdf 2023-05-05T15:37:07 [Coverage] Remove unnecessary check
Behdad Esfahbod ee9b631d 2023-05-05T10:26:57 [SingleSubst] Fix condition to upgrade to beyond-64k
Behdad Esfahbod 0e9ebf10 2023-05-05T06:57:51 [config] Add HB_OPTIMIZE_SIZE_MORE and enable in HB_TINY Part of https://github.com/harfbuzz/harfbuzz/issues/4220
Behdad Esfahbod 31949636 2023-05-04T16:29:48 Revert "[layout] Cache subtable coverages in hb_map_t" This reverts commit 7a715d74e06720c17d28ba7b4c3da0b583f8d1d3.
Behdad Esfahbod 7a715d74 2023-05-04T16:28:11 [layout] Cache subtable coverages in hb_map_t Proof-of-concept. Going to revert. Memory consumption is more than I like. It does speed up Roboto shaping another 15% though. Perhaps if we could add logic to choose which subtables to cache, this might be a useful approach.
Behdad Esfahbod 1be39729 2023-05-04T13:18:34 [subset] Support unordered glyphlist in Coverage/ClassDef serialize
Behdad Esfahbod a10fad7c 2023-05-04T11:32:07 [config] Add HB_NO_GDEF_CACHE
Behdad Esfahbod 319a488b 2023-05-04T10:36:48 [GDEF] Fix null check Fixes https://oss-fuzz.com/testcase-detail/5920994267889664
Behdad Esfahbod fb795dc3 2023-05-03T15:17:20 [GPOS] Optimize iterator reset Speeds up Gulzar shaping 5%.
Behdad Esfahbod 8a8fc37c 2023-05-03T14:57:00 [GDEF] Use a cache for glyph classes Shows 5% speedup for Roboto shaping.
Behdad Esfahbod 323a1fe4 2023-05-03T13:52:43 [PairPos] Fix what I broke