Commit Graph

14296 Commits

Author SHA1 Message Date
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 443961971a [perf] Add fa-words.txt and use in shape benchmark 2022-11-16 16:35:00 -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