src/hb-subset-cff-common.hh


Log

Author Commit Date CI Message
Behdad Esfahbod 7a7001df 2023-07-08T17:48:00 Typo
Behdad Esfahbod d3f90a8c 2023-06-26T14:02:26 [subset/cff] Use a typedef for glyph_to_sid_map_t
Behdad Esfahbod 393f0f9f 2023-06-25T18:14:56 [map] Rename resize() to alloc() Better matches the functionality, and hb_vector_t.
Behdad Esfahbod 5f399139 2023-06-23T11:22:01 [subset/cff] Move lazy cff-accelerator to cff-subset-accelerator Fixes https://github.com/harfbuzz/harfbuzz/issues/4295
Behdad Esfahbod 43ec78f9 2023-06-23T10:22:30 [subset/cff] Cache CFF accelerator in hb_subset_plan_t This shows 7% speedup in: BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/retaingids/10
Behdad Esfahbod ad025ddf 2023-06-22T20:09:36 [subset-cff] Simplify a bit
Behdad Esfahbod e1753782 2023-06-22T19:45:29 [subset-cff] Handle an error condition
Behdad Esfahbod 67b16247 2023-06-07T16:15:48 [set] Simplify a few set iterations as range loop
Behdad Esfahbod ffc6899b 2023-06-05T14:16:47 [subset/cff1] Use a vector, instead of map, for glyph_to_sid_map Much faster.
Behdad Esfahbod 640774b9 2023-06-04T13:26:14 [subset/cff] Speed up subsr subset for retaingids
Behdad Esfahbod 6b11a3d9 2023-06-04T13:18:43 [subset/cff] Speed up closure_subroutines for retaingids
Behdad Esfahbod 054f966a 2023-06-03T22:52:16 [subset/cff1] Don't allocate memory for retaingid holes 40% speedup in BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/retaingids/10 benchmark.
Behdad Esfahbod b5792f11 2023-06-03T22:24:06 [subset] Reuse num_glyphs in various places
Behdad Esfahbod 7e4311a8 2023-06-03T22:11:47 [cff] Speed up for retaingids
Behdad Esfahbod ca237e6b 2023-06-03T22:07:29 [subset/cff] Reuse num_glyphs
Behdad Esfahbod 5b50b077 2023-02-19T20:30:38 [subset-cff] Make BCD writing locale-independent
Behdad Esfahbod a4b7033d 2023-02-19T17:48:02 [cff2-subset] Blend Private values when instancing
Behdad Esfahbod f10a4c9d 2023-02-19T17:11:30 [cff] Rename encode_num to encode_num_cs
Behdad Esfahbod c65eb5a8 2023-02-19T15:15:57 [cff] Specialize cff_private_dict_op_serializer_t for CFF1/2
Behdad Esfahbod bf4b34e8 2023-02-19T11:16:51 [subset-cff2] Don't encode vsindex in Private dict
Behdad Esfahbod 82d9940a 2023-02-19T10:51:55 [subset-cff2] Don't encode vsindex if pinned
Behdad Esfahbod c632a164 2023-01-06T11:01:25 [subset/cff] Support instancing
Behdad Esfahbod b6be4550 2023-01-02T18:05:43 [vector] Add resize_exact()
Behdad Esfahbod a516ce97 2023-01-02T17:58:51 [subset-cff] Add a few exact-allocation calls
Behdad Esfahbod 4a435dc0 2023-01-02T17:41:31 [subset-cff] Remove an unlikely
Behdad Esfahbod f8c578fd 2023-01-02T17:33:04 [subset-cff] Remove commented-out line
Behdad Esfahbod 27531d85 2023-01-02T12:05:11 [subset-cff] Move code around
Behdad Esfahbod 4f013c42 2023-01-02T10:38:30 [subset-cff] Always compact charstrings Reduces non-preprocessed subsetting memory footprint significantly.
Behdad Esfahbod 4dda1f78 2023-01-01T19:00:04 [cff-subset] Compact charstrings just after parsing Massive peak-memory saving when processing face.
Behdad Esfahbod a7617c3c 2023-01-01T18:58:08 [cff-subset] Drop hints just after parsing charstring In prep for next commit.
Behdad Esfahbod 1119e602 2023-01-01T18:31:32 [subset-cff] Tweak another storage allocation
Behdad Esfahbod edb81234 2022-12-31T13:55:41 [subset-cff] Another exact allocation
Behdad Esfahbod 0ec0214f 2022-12-31T13:18:32 [cff-subset] Adjust pre-allocation Reduces memory use significantly.
Behdad Esfahbod 043eeb29 2022-12-02T13:58:36 [subset-cff] Optimize encode_subrs Don't loop over all original subrs. Just walk over closure subrs.
Behdad Esfahbod 0ad5977c 2022-12-02T13:41:06 [subset-cff] Simplify hinting processing We already have drop_hints in the params.
Behdad Esfahbod c9476527 2022-12-01T21:48:35 [subset-cff] Micro-optimize
Behdad Esfahbod a5616227 2022-12-01T20:11:34 [subset-cff] Fix buffer size calculation
Behdad Esfahbod 015af5a8 2022-12-01T20:08:59 [subset-cff] Write a couple loops as range-based for
Behdad Esfahbod bfbbd4af 2022-12-01T20:05:20 [subset-cff] Copy str for call ops
Behdad Esfahbod c755b388 2022-12-01T20:02:38 [subset-cff] Pre-alloc enough for check-less copy
Behdad Esfahbod 062e59ae 2022-12-01T19:43:48 [subset-cff] Optimize vector allocation for preprocessed input
Behdad Esfahbod 2644540a 2022-12-01T18:49:09 [subset-cff] Compact parsed strings if using accelerator Saves 32% on SourceHanSans/10000 benchmark! Also, use memcmp now for writing out strings since now that our ops are not super short, that's faster. This makes cff-japanese test takes super long though; that needs inspection.
Behdad Esfahbod 32dd9810 2022-11-30T13:15:58 [subset-cff1] Cache glyph-to-sid-map in the accelerator Benchmark Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10 -0.0841 -0.0843 0 0 0 0 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/64 -0.1305 -0.1305 0 0 0 0 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/512 -0.1398 -0.1401 1 1 1 1 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/4096 +0.0382 +0.0380 9 9 9 9 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10000 +0.0213 +0.0211 11 11 11 11
Garret Rieger 7551a668 2022-11-30T00:04:16 [subset] Make cff_accelerator const. This gives more confidence that it won't be accidentally modified by the subset operation using it.
Behdad Esfahbod 3ea0f37c 2022-11-28T13:58:44 [subset-cff] Move an init to constructor The init was not called anyway.
Behdad Esfahbod 6c92c3e0 2022-11-28T13:54:24 [subset-cff] Remove unnecessary check
Behdad Esfahbod 7fd300dd 2022-11-28T13:51:16 [subset-cff] Use constructor for parsed_cs_op_t
Garret Rieger bd37900e 2022-11-28T20:35:34 [subset] use a reference to cached global/loca subrs. Previously they were being copied in. Copying is no longer necessary now that hint dropping doesn't mutate the arrays.
Behdad Esfahbod ded9de9c 2022-11-28T13:31:40 [cff] bsearch in fdselect Saves 8% in NotoSansCJK / 10000 subset benchmark.
Behdad Esfahbod 0c33aba3 2022-11-28T12:28:13 [subset-cff] Rename drop flag to hinting flag
Behdad Esfahbod 6f5b5319 2022-11-28T11:39:24 [subset-cff] Make no-hinting use accelerator as well
Behdad Esfahbod f51a624e 2022-11-27T14:54:39 [subset-cff] Micro-optimize drop_hints_in_str
Behdad Esfahbod 38603266 2022-11-27T13:23:13 [subset-cff] Write loop more idiomatic
Behdad Esfahbod 3ff502d3 2022-11-27T12:58:04 [subset-cff] Remove unnecessary initialization
Behdad Esfahbod 6af4985b 2022-11-26T18:20:20 [subset-cff] No need for bitflag here anymore
Behdad Esfahbod 69ce606d 2022-11-26T18:18:35 [subset-cff] Immediately drop subr numbers instead of marking for skip Seems to work and saves ~2% time.
Behdad Esfahbod 1cf4f3e0 2022-11-26T18:15:28 [subset-cff] More comment
Behdad Esfahbod f68221ff 2022-11-26T18:12:14 [subset-cff] Add comment
Behdad Esfahbod 048ab8a0 2022-11-26T18:00:43 [subset-cff] Remove unused bits
Behdad Esfahbod 37cbfc0c 2022-11-26T17:57:44 [subset-cff] Remove unneeded member
Behdad Esfahbod 46ab1513 2022-11-26T17:49:21 [subset-cff] Add has_calls to parsed charstrings Optimize closure based on it.
Behdad Esfahbod 6d53074e 2022-11-26T17:23:09 [subset-cff] Drop another unused parameter
Behdad Esfahbod 42615561 2022-11-26T17:10:58 Optimize a couple array references
Behdad Esfahbod 04d23b7c 2022-11-26T17:08:00 [subset-cff] Micro-optimize collect_subr_refs_in_str
Garret Rieger a5d35fd8 2022-11-25T23:17:05 [subset] use charstrings directly from accelerator cache if mutability isn't needed.
Behdad Esfahbod 74acf52f 2022-11-25T14:43:44 [subset-cff] Micro-optimize copy_str more
Behdad Esfahbod d2f3cde7 2022-11-25T14:38:30 [subset-cff] Micro-optimize copy_str
Behdad Esfahbod 22990fca 2022-11-25T14:12:58 Merge pull request #3894 from googlefonts/cff_accel [subset] Cache parsed char strings in CFF accelerator
Garret Rieger 8d5c899b 2022-11-25T20:33:39 [subset] In cff accelerator hold reference to CFF table instead of the whole font.
Garret Rieger 75a99f28 2022-11-25T18:38:13 [subset] destruct cff accelerator if present.
Behdad Esfahbod 1d474194 2022-11-25T13:21:35 [subset-cff] Micro-optimize encode_str
Behdad Esfahbod 3c4a610b 2022-11-25T13:16:30 [subset-cff] Micro-optimize copy_str some more
Behdad Esfahbod 535aadb3 2022-11-25T13:07:42 [subset-cff] Micro-optimize collect_subr_refs_in_str more
Behdad Esfahbod 00a9df3a 2022-11-25T13:05:05 [subset-cff] Micro-optimize collect_subr_refs_in_str
Garret Rieger 71c23c1c 2022-11-25T18:04:44 [subset] don't copy the entire global/loca subr lists from the accelerator. Instead run a closure on the retained charstrings and copy only the referenced subrs. This significantly speeds up cases with small character sets.
Garret Rieger 4ff09274 2022-11-24T22:47:29 [subset] In CFF accelerator keep a reference to original face. The charstring objects reference memory from the original face so we need to maintain a reference to prevent it from being destroyed.
Garret Rieger a3afa61c 2022-11-23T22:24:39 [subset] use cached parsed char strings if available.
Garret Rieger 47c12584 2022-11-23T21:02:39 [subset] Cache parsed charstrings in the cff accelerator.
Garret Rieger 48b68370 2022-11-23T20:51:51 [subset] add a CFF specific accelerator object. This allows CFF specific accelerator structures to be isolated to the CFF code.
Behdad Esfahbod d77f346d 2022-11-24T14:02:46 [subset-cff] Minor rename
Behdad Esfahbod 29a0fa08 2022-11-24T14:00:59 [subset-cff] Micro-optimize
Behdad Esfahbod 0bf7d9eb 2022-11-23T13:00:23 [subset-cff] Micro-optimize encode_byte
Behdad Esfahbod a23f8204 2022-11-23T12:56:13 [subset-cff] Micro-optimize array access
Behdad Esfahbod 59c45f6d 2022-11-22T12:54:50 Use hb_memcpy instead of memcpy consistently
Behdad Esfahbod c53c6481 2022-11-22T12:46:25 [subset-cff] Another handrolled memcpy
Behdad Esfahbod 1572ba28 2022-11-21T22:26:44 [subset-cff] Return in subr closure if already seen subr Not sure why this was not done before.
Behdad Esfahbod a29ca6ef 2022-11-21T22:02:17 [subset-cff] Comment
Behdad Esfahbod 28e767dd 2022-11-21T21:59:51 [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.
Behdad Esfahbod 2d5ee237 2022-11-21T21:37:38 [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.
Behdad Esfahbod 4f056b92 2022-11-21T21:37:38 [subset-cff] Optimize op_str_t layout
Behdad Esfahbod dc3bb5e0 2022-11-21T18:18:48 [subset-cff] Pre-allocate values array for subroutines as well
Behdad Esfahbod c6279224 2022-11-21T18:01:50 [cff] Adjust pre-allocation This better matches actual usage, given that ops are one or two bytes, and vector also allocates 50% extra.
Behdad Esfahbod 2cadacad 2022-11-21T17:17:15 [cff] Simplify str_encoder_t error handling
Behdad Esfahbod f263e3fe 2022-11-21T17:04:55 [cff] Manually copy short strings instead of memcpy()
Behdad Esfahbod 38efd186 2022-11-21T17:02:11 [cff] Add a likely()
Behdad Esfahbod 191025cc 2022-11-21T16:58:19 [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%).
Behdad Esfahbod 4b2caafe 2022-11-21T16:46:20 [subset-cff] Optimize parsed_cs_op_t size Shows 5% speedup on SourceHanSans-Regular/10000 benchmark.
Garret Rieger 98aaecd3 2022-06-01T21:01:16 [subset] fix data race touching Crap() in cff subsetting.
Behdad Esfahbod e91863b7 2022-05-18T12:39:55 [subset-cff] Pre-size map in subr_remap_t::create()
Behdad Esfahbod b5aa8a27 2022-05-18T11:58:58 [subset-cff] Cosmetic