Log

Author Commit Date CI Message
Behdad Esfahbod 6e668a2a 2022-05-18T11:16:11 [perf/benchmark-ot] Rename test
Behdad Esfahbod e24797ae 2022-05-18T11:10:10 [ot-tags] Follow-up to previous commit Part of https://github.com/harfbuzz/harfbuzz/issues/3591
Behdad Esfahbod f5d619be 2022-05-18T11:04:52 [ot-tags] Further gate the slow complex case, and add more tests Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Still 'zh-trad' is the slowest case. -------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_trad 136 ns 136 ns 5107838 BM_hb_ot_tags_from_script_and_language/COMMON ab_abcd 115 ns 115 ns 6103104 BM_hb_ot_tags_from_script_and_language/COMMON ab_abc 25.4 ns 25.3 ns 27674482 BM_hb_ot_tags_from_script_and_language/COMMON abcdef_XY 20.2 ns 20.1 ns 34795719 BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 19.4 ns 19.3 ns 36390401 BM_hb_ot_tags_from_script_and_language/COMMON cxy_CN 33.5 ns 33.4 ns 20998939 BM_hb_ot_tags_from_script_and_language/COMMON exy_CN 25.1 ns 25.0 ns 27705832 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 34.2 ns 34.1 ns 20564356 BM_hb_ot_tags_from_script_and_language/COMMON en_US 15.5 ns 15.5 ns 45032204 BM_hb_ot_tags_from_script_and_language/LATIN en_US 15.9 ns 15.8 ns 44412379 BM_hb_ot_tags_from_script_and_language/COMMON none 4.72 ns 4.71 ns 149101665 BM_hb_ot_tags_from_script_and_language/LATIN none 4.72 ns 4.70 ns 149254498
Behdad Esfahbod 9c64bda2 2022-05-17T17:31:18 [ot-tag] Whitespace
Behdad Esfahbod 3df8017e 2022-05-17T17:29:39 [ot-tag] Optimize subtag_matches() more
Behdad Esfahbod b231fc2d 2022-05-17T17:02:48 [perf/benchmark-ot] Add a couple more test cases
Behdad Esfahbod 3524b14f 2022-05-17T17:02:48 [perf/benchmark-ot] Add a couple more test cases
Behdad Esfahbod 7f6e8c55 2022-05-17T16:58:35 [ot-tags] Optimize subtag_matches() further Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Comparing before to after Benchmark Time CPU Time Old Time New CPU Old CPU New ---------------------------------------------------------------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY -0.3371 -0.3371 71 47 71 47
Behdad Esfahbod 27c11405 2022-05-17T16:51:51 [ot-tag] Optimize subtag_matches Part of https://github.com/harfbuzz/harfbuzz/issues/3591
Behdad Esfahbod a07d8185 2022-05-17T16:46:10 [ot-tag] Add a likely() to the cache hit case
Behdad Esfahbod 0ff5d36c 2022-05-17T16:34:52 [perf/benchmark-ot] Fix benchmark Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Ouch! These are the current numbers: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 78.0 ns 77.7 ns 8917912 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 44.9 ns 44.8 ns 15475318 BM_hb_ot_tags_from_script_and_language/COMMON en_US 17.6 ns 17.5 ns 39812340 BM_hb_ot_tags_from_script_and_language/LATIN en_US 18.2 ns 18.1 ns 38356204 BM_hb_ot_tags_from_script_and_language/COMMON none 4.76 ns 4.74 ns 148746131 BM_hb_ot_tags_from_script_and_language/LATIN none 4.73 ns 4.71 ns 148421349
Behdad Esfahbod dfca47f4 2022-05-17T16:21:02 [ot-tag] Cache last bsearch result Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Humm. Looks like not all of the fat is bsearch overhead now. I cached the last bsearch result, but most of the time is still there. I'm baffled. Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.08 ns 8.05 ns 84500482 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 42.2 ns 42.1 ns 16722006 BM_hb_ot_tags_from_script_and_language/COMMON en_US 16.1 ns 16.0 ns 43461527 BM_hb_ot_tags_from_script_and_language/LATIN en_US 16.5 ns 16.5 ns 42448505 BM_hb_ot_tags_from_script_and_language/COMMON none 4.34 ns 4.33 ns 161290530 BM_hb_ot_tags_from_script_and_language/LATIN none 4.34 ns 4.33 ns 162339799 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.13 ns 8.11 ns 80438134 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 40.0 ns 39.9 ns 17487939 BM_hb_ot_tags_from_script_and_language/COMMON en_US 12.7 ns 12.7 ns 55124394 BM_hb_ot_tags_from_script_and_language/LATIN en_US 13.1 ns 13.0 ns 53660125 BM_hb_ot_tags_from_script_and_language/COMMON none 4.61 ns 4.60 ns 151394104 BM_hb_ot_tags_from_script_and_language/LATIN none 4.70 ns 4.68 ns 150402847
Behdad Esfahbod 909f00ac 2022-05-17T15:51:41 [ot-tags] Further speed up language bsearch() Using an integer tag to bsearch, instead of string. Part of: https://github.com/harfbuzz/harfbuzz/issues/3591 Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.11 ns 8.08 ns 87067795 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 53.6 ns 53.5 ns 13042418 BM_hb_ot_tags_from_script_and_language/COMMON en_US 24.2 ns 24.1 ns 29052731 BM_hb_ot_tags_from_script_and_language/LATIN en_US 24.4 ns 24.3 ns 28736769 BM_hb_ot_tags_from_script_and_language/COMMON none 4.43 ns 4.41 ns 160370413 BM_hb_ot_tags_from_script_and_language/LATIN none 4.35 ns 4.34 ns 160578191 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 7.97 ns 7.95 ns 85208363 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 41.7 ns 41.6 ns 16945817 BM_hb_ot_tags_from_script_and_language/COMMON en_US 16.1 ns 16.0 ns 43613523 BM_hb_ot_tags_from_script_and_language/LATIN en_US 16.5 ns 16.4 ns 42568107 BM_hb_ot_tags_from_script_and_language/COMMON none 4.30 ns 4.29 ns 164055469 BM_hb_ot_tags_from_script_and_language/LATIN none 4.29 ns 4.27 ns 163793591
Behdad Esfahbod c460cf74 2022-05-17T15:30:11 [ot-tags] Cosmetic
Behdad Esfahbod 1c8226ed 2022-05-17T15:28:50 Fix compiler warning On Mac compiler: FAILED: src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o c++ -Isrc/libharfbuzz.0.dylib.p -Isrc -I../src -I. -I.. -I/usr/local/opt/freetype/include/freetype2 -I/usr/local/Cellar/graphite2/1.3.14/include -I/usr/local/Cellar/glib/2.72.1/include/glib-2.0 -I/usr/local/Cellar/glib/2.72.1/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -Xclang -fcolor-diagnostics --coverage -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++11 -fno-rtti -O2 -g -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -DHAVE_CONFIG_H -Wno-non-virtual-dtor -MD -MQ src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o -MF src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o.d -o src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o -c ../src/hb-ot-tag.cc In file included from ../src/hb-ot-tag.cc:29: In file included from ../src/hb.hh:481: ../src/hb-array.hh:359:14: error: missing default argument on parameter 'ds' Ts... ds) const ^ ../src/hb-ot-tag.cc:292:58: note: in instantiation of function template specialization 'hb_sorted_array_t<const LangTag>::bfind<const char *, unsigned int>' requested here if (hb_sorted_array (ot_languages, ot_languages_len).bfind (lang_str, &tag_idx, ^ 1 error generated.
Behdad Esfahbod c1f4b57c 2022-05-17T15:19:40 [ot-tags] Optimize language comparison Now that we know both strings are of equal len of 2 or 3, optimize. Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.50 ns 8.47 ns 81221549 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 79.6 ns 79.3 ns 8785804 BM_hb_ot_tags_from_script_and_language/COMMON en_US 40.0 ns 39.9 ns 17462768 BM_hb_ot_tags_from_script_and_language/LATIN en_US 39.2 ns 39.1 ns 17886793 BM_hb_ot_tags_from_script_and_language/COMMON none 4.31 ns 4.30 ns 162805417 BM_hb_ot_tags_from_script_and_language/LATIN none 4.32 ns 4.31 ns 162656688 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.27 ns 8.24 ns 81868701 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 56.1 ns 56.0 ns 12353284 BM_hb_ot_tags_from_script_and_language/COMMON en_US 24.3 ns 24.2 ns 28955030 BM_hb_ot_tags_from_script_and_language/LATIN en_US 24.5 ns 24.4 ns 28664868 BM_hb_ot_tags_from_script_and_language/COMMON none 4.35 ns 4.34 ns 161190014 BM_hb_ot_tags_from_script_and_language/LATIN none 4.36 ns 4.34 ns 161319000
Behdad Esfahbod dde48d78 2022-05-17T15:07:49 Fix compiler warning
Behdad Esfahbod 15be0ded 2022-05-17T14:57:08 [ot-tags] Optimize lang_matches() Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.67 ns 8.64 ns 80324382 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 91.2 ns 90.9 ns 7674131 BM_hb_ot_tags_from_script_and_language/COMMON en_US 41.1 ns 41.0 ns 17174093 BM_hb_ot_tags_from_script_and_language/LATIN en_US 41.3 ns 41.2 ns 17000876 BM_hb_ot_tags_from_script_and_language/COMMON none 4.56 ns 4.55 ns 153914130 BM_hb_ot_tags_from_script_and_language/LATIN none 4.53 ns 4.52 ns 153830303 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.24 ns 8.21 ns 84078465 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 77.5 ns 77.2 ns 9059230 BM_hb_ot_tags_from_script_and_language/COMMON en_US 38.8 ns 38.7 ns 17790692 BM_hb_ot_tags_from_script_and_language/LATIN en_US 37.6 ns 37.5 ns 18648293 BM_hb_ot_tags_from_script_and_language/COMMON none 4.50 ns 4.49 ns 155573267 BM_hb_ot_tags_from_script_and_language/LATIN none 4.49 ns 4.47 ns 156456653
Behdad Esfahbod 407a135b 2022-05-17T14:45:45 [perf/benchmark-ot] Add one more test
Behdad Esfahbod dd3c858f 2022-05-17T14:28:28 [ot-tags] Speed up hb_ot_tags_from_language() Part of https://github.com/harfbuzz/harfbuzz/issues/3591 "After that, bulk of the time I suppose is spent in binary-searching the language table. I suggest we split the language table in 2-letter and 3-letter tags, to speed-up the vast majority of cases that are 2-letter." benchmark-ot, before: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 112 ns 111 ns 6286271 BM_hb_ot_tags_from_script_and_language/COMMON en_US 60.6 ns 60.4 ns 11671176 BM_hb_ot_tags_from_script_and_language/LATIN en_US 61.3 ns 61.1 ns 11442645 BM_hb_ot_tags_from_script_and_language/COMMON none 4.75 ns 4.74 ns 146997235 BM_hb_ot_tags_from_script_and_language/LATIN none 4.65 ns 4.64 ns 150938747 After: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 89.5 ns 89.2 ns 7747649 BM_hb_ot_tags_from_script_and_language/COMMON en_US 38.5 ns 38.4 ns 18199432 BM_hb_ot_tags_from_script_and_language/LATIN en_US 39.0 ns 38.9 ns 18049238 BM_hb_ot_tags_from_script_and_language/COMMON none 4.53 ns 4.52 ns 154895110 BM_hb_ot_tags_from_script_and_language/LATIN none 4.54 ns 4.52 ns 154762105
Behdad Esfahbod 9baccb98 2022-05-17T13:34:34 [ot-tags] Speed up hb_ot_tags_from_complex_language() Part of https://github.com/harfbuzz/harfbuzz/issues/3591 2. All the subtag_matches outside the switch match long strings (>= 6 or so). As such, check the tag for such length before going into any of them. benchmark-ot, before: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 172 ns 171 ns 4083155 BM_hb_ot_tags_from_script_and_language/COMMON en_US 120 ns 119 ns 5849947 BM_hb_ot_tags_from_script_and_language/LATIN en_US 113 ns 112 ns 5840326 BM_hb_ot_tags_from_script_and_language/COMMON none 4.66 ns 4.64 ns 151396224 BM_hb_ot_tags_from_script_and_language/LATIN none 4.66 ns 4.64 ns 149019593 After: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 112 ns 112 ns 6357763 BM_hb_ot_tags_from_script_and_language/COMMON en_US 60.5 ns 60.3 ns 11475091 BM_hb_ot_tags_from_script_and_language/LATIN en_US 54.9 ns 54.8 ns 12575690 BM_hb_ot_tags_from_script_and_language/COMMON none 4.61 ns 4.59 ns 152388450 BM_hb_ot_tags_from_script_and_language/LATIN none 4.66 ns 4.64 ns 151497600
Behdad Esfahbod 26d906b8 2022-05-17T13:12:17 [perf] Add benchmark-ot
Behdad Esfahbod 629fa8ee 2022-05-16T17:44:50 [perf/benchmark-font] Test Roboto as variable even though it's not
Behdad Esfahbod 71a0cda8 2022-05-16T17:43:48 [perf/benchmark-font] Only certain fonts are variable Don't test every font as variable.
Behdad Esfahbod fb413f52 2022-05-16T17:08:43 [subset/cff] Don't use bitfields for hot bools The struct has room because of alignment, and these bools are hot.
Behdad Esfahbod a4d98b63 2022-05-16T17:02:40 [subset/cff1] Collect glyph-to-sid map to avoid an O(n^2) algorithm Saves 13 for largest benchmark: BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/10000 -0.1313 -0.1308 75 65 75 65 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/4096 -0.1009 -0.1004 54 48 54 48 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/10000 -0.1067 -0.1066 70 62 69 62
Behdad Esfahbod b87f48e9 2022-05-16T16:33:31 [cff1] get_sid() move bounds check into each implementation
Behdad Esfahbod e1e359b4 2022-05-16T15:53:28 [cff1] Tighten up range_list_t a bit
Behdad Esfahbod 3fbac094 2022-05-16T15:41:11 [cff1] Lazy-load & sort glyph names Improves subset benchmarks by up to 70% for small CFF1 subset of non-CID fonts! BM_subset/subset_glyphs/SourceSansPro-Regular.otf/10 -0.7067 -0.7071 1 0 1 0 BM_subset/subset_glyphs/SourceSansPro-Regular.otf/64 -0.4817 -0.4824 1 0 1 0 BM_subset/subset_glyphs/SourceSansPro-Regular.otf/512 -0.1948 -0.1956 2 2 2 2 BM_subset/subset_glyphs/SourceSansPro-Regular.otf/2000 -0.0767 -0.0761 6 6 6 6
Behdad Esfahbod b58bfd98 2022-05-16T11:21:45 [font] Minor move of code to silence gcc-12 warning See mailing list discussion.
Behdad Esfahbod 602e0ca7 2022-05-16T10:14:34 [cff] Minor restructure of struct Surprisingly this shows tiny benchmark improvement consistently.
Behdad Esfahbod acdab17e 2022-05-13T14:14:36 [cff] Cosmetic in parsed_values_t
Behdad Esfahbod b46c7faa 2022-05-13T14:02:54 [cff] Check buf_len, not buf Ouch!
Garret Rieger 19a8db85 2022-05-13T18:05:05 [subset] fix potential integer overflow in gname_t::cmp.
Behdad Esfahbod 2d2f66e1 2022-05-13T13:53:17 [cff-common] In INDEX, return empty bytes if length is zero Before it was possible to return non-null arrayZ.
Behdad Esfahbod a2f132f1 2022-05-13T13:49:17 [cff] Check glyph-name's length, not arrayZ As the latter can be non-null while still zero-length.
jeremiazhao dc09053f 2022-05-13T17:54:11 fix build requirements for fedora/centos in buiding document
Thomas Devoogdt c657c4e1 2022-05-10T10:00:06 [meta] fix type traits on gcc 4.9 #3526 Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
Garret Rieger e4e053c8 2022-05-13T17:00:57 [perf] fix typo in perf Makefile.
Behdad Esfahbod e61234c5 2022-05-12T13:20:10 [vector] Add tests for move constructor/assignment
Behdad Esfahbod 7fa580bc 2022-05-12T13:05:32 [map] Fix map copy/move constructors to actually work Ouch!
Behdad Esfahbod a09dd87c 2022-05-12T12:58:07 [set] Fix set copy/move constructors to actually work Ouch!
Behdad Esfahbod 76fc2771 2022-05-12T12:14:07 [vector] Remove explicit std::move Was confusing compilers. Let them figure it out themselves. Makes NotoNastaliqu subsetting/1000 benchmark more than twice faster: Benchmark Time CPU Time Old Time New CPU Old CPU New ------------------------------------------------------------------------------------------------------------------------------------------------------------ BM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/1000 -0.5064 -0.5065 111 55 110 55 BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/1000 -0.5494 -0.5493 132 59 131 59
Behdad Esfahbod c81198b5 2022-05-12T11:58:37 [set] Tweak move operators a bit Should be equivalent.
Behdad Esfahbod 8dc072d2 2022-05-11T16:45:40 Merge pull request #3579 from harfbuzz/subset-retain-buffer Subset retain buffer
Behdad Esfahbod 175319cd 2022-05-11T13:47:17 [gsubgpos] Clean up OT::ClassDefFormat2::intersected_class_glyphs 0 case
Behdad Esfahbod 137af361 2022-05-11T13:39:30 [gsubgpos] Simplify OT::ClassDefFormat2::intersected_class_glyphs()
Behdad Esfahbod 3261e05b 2022-05-11T13:16:31 [subset] Optimize ClassDef1::intersected_class_glyphs() for class0
Behdad Esfahbod c78d8ba6 2022-05-11T13:05:41 [subset] Allocate same size as source table for GSUB/GPOS/name
Behdad Esfahbod 2e7f1ae4 2022-05-11T12:49:16 [subset] Use vector.allocated size instead of tracking buf_size
Behdad Esfahbod f0853796 2022-05-11T12:10:03 [cff-subset] Pre-alloc vector for operator decoding
Behdad Esfahbod 7edd54f3 2022-05-10T18:44:14 [perf/benchmark-subset] Minor cleanup
Behdad Esfahbod aeb50b89 2022-05-10T18:06:53 [subset] Retain buffer across table subset operations
Behdad Esfahbod bff78e65 2022-05-10T16:33:37 [cff] Convert interpretation environment to use constructor
Behdad Esfahbod de053e2e 2022-05-10T15:38:37 [cff] Convert subr_subset_param_t to use constructor
Behdad Esfahbod 96140db4 2022-05-10T15:34:33 [cff] Convert cff2_extents_param_t to use constructor
Behdad Esfahbod 54544f2a 2022-05-10T15:31:49 [cff] Convert cff1_extents_param_t to use constructor
Behdad Esfahbod 377befd0 2022-05-10T15:29:12 [cff] Convert get_seac_param_t to use constructor
Behdad Esfahbod 8fd70362 2022-05-10T15:15:49 [cff] Use hb_ubytes_t() instead of Null(hb_ubytes_t)
Behdad Esfahbod 9033c7f9 2022-05-10T14:58:53 [cff-common] Optimize INDEX::operator[] Previous try showed slowdown in benchmarks, suprisingly. Rewrite it keeping the function, hopefully allowing better optimization.
Behdad Esfahbod 3aace243 2022-05-10T14:54:04 Revert "[cff-common] Optimize INDEX::operator[]" This reverts commit 9edb03ac7ac4b4d0814f3fd1f20cc8d2be99e971.
Behdad Esfahbod b31ef081 2022-05-10T14:52:40 Revert "[cff] Add an unlikely()" This reverts commit 9ba9adb7ed6d48504e97a2af117b7da1fdb28450. This shows slowdown in benchmarks.
Behdad Esfahbod 9edb03ac 2022-05-10T14:25:08 [cff-common] Optimize INDEX::operator[]
Behdad Esfahbod 9ba9adb7 2022-05-10T14:42:50 [cff] Add an unlikely()
Garret Rieger 52d59bf1 2022-05-10T19:40:37 [perf] Make subset benchmark data driven.
Behdad Esfahbod 0a42410d 2022-05-10T12:05:19 [cff2] Change extents/shape stack to be just a number Do the blending immediately. Fixes https://github.com/harfbuzz/harfbuzz/issues/3559 Benchmark on AdobeVFPrototype shows 35% speedup. Now we're faster than FreeType: Benchmark Time CPU Time Old Time New CPU Old CPU New ------------------------------------------------------------------------------------------------------------------------------------------------ BM_Font/glyph_extents/AdobeVFPrototype.otf/hb -0.3792 -0.3792 1584 983 1581 982 BM_Font/glyph_extents/AdobeVFPrototype.otf/ft +0.0228 +0.0224 1220 1248 1218 1245 BM_Font/glyph_extents/AdobeVFPrototype.otf/var/hb -0.3513 -0.3518 1616 1048 1613 1046 BM_Font/glyph_extents/AdobeVFPrototype.otf/var/ft +0.0172 +0.0169 1232 1254 1230 1251
Garret Rieger 5277a577 2022-05-10T18:14:25 [perf] Add benchmarks for CFF subsetting.
Garret Rieger 8f9f0c49 2022-05-10T17:47:08 [subset] Enforce cmap12 group ordering constraints in collect_mapping. Fixes fuzzer issue: https://oss-fuzz.com/testcase-detail/6365271012540416
Behdad Esfahbod c99ad0f0 2022-05-09T18:52:19 Merge pull request #3572 from harfbuzz/cff-stack Cff stack
Behdad Esfahbod 1b14d2ff 2022-05-09T18:15:31 [cff] Fix arg-stack peek() impl
Behdad Esfahbod 6106ef8c 2022-05-09T18:12:09 [cff] Tighten up arg-stack access
Behdad Esfahbod 8c616a6e 2022-05-09T17:49:54 [cff] Allocate stack inline instead of using hb_vector_t Speeds up glyph_extents and glyph_shape benchmarks for CFF by 10 to 16 percent!
Behdad Esfahbod c941ece6 2022-05-09T16:20:22 [cff] Use using instead of typedef
Behdad Esfahbod 64d63ceb 2022-05-09T16:16:07 [cff-common] Use existing types for str_buff_vec_t
Behdad Esfahbod e1838ec1 2022-05-09T16:14:13 [cff-common] Remove unused method
Behdad Esfahbod 8aa54aac 2022-05-09T16:09:56 [cff] Replace byte_str_t with hb_bytes_t use
Behdad Esfahbod fe1d85a5 2022-05-09T16:04:52 [cff] Remove custom byte_str_t impl
Behdad Esfahbod c8a5f1e3 2022-05-09T15:49:47 [cff-common] Indent
Behdad Esfahbod be7b2905 2022-05-09T15:48:18 [cff-common] Remove unused INDEX::serialize() method
Behdad Esfahbod 60390169 2022-05-09T15:44:09 [cff-common] Write str_buf_t::total_size() as dagger
Behdad Esfahbod 258afb45 2022-05-09T15:40:55 [cff-common] Use range-based loop in str_buff_vec_t
Behdad Esfahbod 8bb1a3ce 2022-05-09T15:38:40 [cff-common] Write INDEX offset-size calc using hb_bit_storage()
Behdad Esfahbod 2ccfe84e 2022-05-09T15:35:04 [cff-common] Add assert to INDEX::set_offset_at()
Behdad Esfahbod 4bcab9e9 2022-05-09T15:30:42 [cff-common] Use byte_str_t() instead of Null(byte_str_t)
Behdad Esfahbod 94f7a263 2022-05-09T15:29:14 [cff-common] Fix get_size() for Null object The special-casing didn't make sense.
Behdad Esfahbod c9cc7d5d 2022-05-09T15:27:27 [cff-common] Inline once-used method in INDEX
Behdad Esfahbod 11482a3a 2022-05-09T15:25:21 [cff-common] Remove unused method from INDEX
Behdad Esfahbod d1bb3b08 2022-05-09T15:23:59 [cff-common] Hide more INDEX internals
Behdad Esfahbod d3b21387 2022-05-09T15:22:55 [cff-common] Remove redundant operator implementation
Behdad Esfahbod a96b408d 2022-05-09T15:20:16 [cff-common] Hide INDEX internals
Behdad Esfahbod 335b1d83 2022-05-06T13:37:11 [cff-common] No need to check max-offset in INDEX The length_at() function makes sure out-of-range offsets are discarded. We just need to check the last offset.
Garret Rieger b051f3fa 2022-05-05T23:27:34 [subset] Fix cpal subsetting when there are partial palette overlaps. The existing code doesn't correctly handle the case where palettes partially overlap in the color record array. This changes the subsetting to only share entries in the color record array when palettes have the same first color index. Partially overlapping palettes will be converted to disjoint segments in the color record array. Updates one of the color tests to use multiple palettes. Also fixes fuzzer: https://oss-fuzz.com/testcase-detail/5568200165687296.
Behdad Esfahbod 2884eb97 2022-05-06T12:54:02 [cff-common] Remove special-casing of count=0 in INDEX serialize The generic code-path now can handle count=0.
Behdad Esfahbod fc7f51ae 2022-05-06T12:53:19 [cff-common] Reduce iterator calls
Behdad Esfahbod c857b8e3 2022-05-06T12:50:37 [cff-common] Set INDEX min_size to 2 That is what it is, for an empty INDEX.
Behdad Esfahbod dd71d2c1 2022-05-06T13:02:26 [gvar] Protect against offset underflow
Behdad Esfahbod 9a6dabd6 2022-05-06T12:01:37 [gvar] Remove sanitize check for data array We are not checking in sanitize that offset array is ascending, so this check was bogus.
Behdad Esfahbod 38478d10 2022-05-06T12:00:01 [gvar] DEFINE_SIZE_ARRAY instead of DEFINE_SIZE_MIN
Behdad Esfahbod 90d278c9 2022-05-06T11:58:53 [gvar] Remove requirement that num_glyphs matches the font's
Behdad Esfahbod ca8a0f3e 2022-05-06T11:54:38 [gvar] Protect against out-of-range access Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47281 Fixes https://oss-fuzz.com/testcase-detail/5508865908670464