|
ae208963
|
2022-12-26T12:30:39
|
|
Add hb-limits.hh
|
|
300d82ce
|
2022-12-13T10:48:56
|
|
Fix compiler warning
|
|
9a3f0be2
|
2022-12-11T13:40:53
|
|
[COLR] Apply variations in get_extent
|
|
22b0390e
|
2022-12-05T09:43:36
|
|
Revert "[VarData] Don't clear memory we are going to fill in completely"
This reverts commit e28e2dad03a453c5e5c4c5a9d6fd276182c5f80b.
This made fuzzer unhappy. I'm not sure how.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54044
|
|
e28e2dad
|
2022-12-03T15:56:43
|
|
[VarData] Don't clear memory we are going to fill in completely
|
|
0e13b4ab
|
2022-12-03T15:50:24
|
|
[VarData] Optimize main loop slightly
|
|
ad17c0ac
|
2022-12-03T14:56:57
|
|
[VarData] Whitespace
|
|
e7eb445d
|
2022-12-03T14:56:00
|
|
[VarData] Optimize longWord calculation
|
|
f2c980be
|
2022-12-03T14:49:38
|
|
[VarData] Optimize wordCount calculation
6% speedup in RobotoFlex-Variable/900 benchmark.
|
|
3641b0e0
|
2022-12-03T14:26:21
|
|
[VarData] Optimize serialize()
|
|
e155f123
|
2022-12-03T14:14:39
|
|
[VarData] Minor save a variable
|
|
5596a730
|
2022-12-03T13:33:48
|
|
[layout] Speed up ClassDefFormat2 intersects
|
|
85e7263b
|
2022-12-03T13:28:02
|
|
[VariationStore] Minor access array directly
|
|
58e9df13
|
2022-12-03T13:04:00
|
|
[Device] Serialize VariationDevice zerocopy
|
|
44a5de3a
|
2022-12-03T12:50:32
|
|
[Device] Save a snap/revert
|
|
93328ced
|
2022-12-03T12:49:26
|
|
[Device] Save a map get()
|
|
02bc4dd6
|
2022-12-03T10:07:16
|
|
Use hb_enumerate instead of hand-coding
|
|
57808609
|
2022-12-01T14:03:56
|
|
[VarData] Move an unlikely
|
|
8805a866
|
2022-11-30T17:15:00
|
|
[ClassDef2] Write a few loops as range-based for
|
|
2fecf2aa
|
2022-11-29T21:25:01
|
|
[ClassDef] Minor rename
|
|
8f632ca8
|
2022-11-29T21:23:35
|
|
[ClassDef] Write another loop as range for
|
|
87b12aee
|
2022-11-29T21:18:48
|
|
[ClassDef] Write a couple loops as range for
|
|
ccd40c84
|
2022-11-29T21:14:44
|
|
[ClassDef] Optimize intersected_class_glyphs
|
|
44c585a6
|
2022-11-29T20:51:58
|
|
[ClassDef] Fix disabled codeblock
|
|
9b7617d4
|
2022-11-29T20:29:58
|
|
[ClassDef2] Use a faster algorithm in subset()
Speedup across the board; up to 40% for MPlus1 at small sizes.
|
|
ae5e6d56
|
2022-11-29T15:48:38
|
|
[ClassDef2] Micro-optimize
|
|
dc823340
|
2022-11-29T15:26:55
|
|
Remove a couple of unneeded .iter() invocations
|
|
d2a2670e
|
2022-11-28T19:42:27
|
|
[iter] Simplify has() interface implementations
|
|
06e2147a
|
2022-11-24T14:56:04
|
|
More call set->next() directly
|
|
196c9db0
|
2022-11-24T14:51:52
|
|
Call ->next() directly
|
|
59c45f6d
|
2022-11-22T12:54:50
|
|
Use hb_memcpy instead of memcpy consistently
|
|
a0bde1e1
|
2022-11-16T21:27:12
|
|
[open-type] Remove (Sorted)ArrayOf.sub_array()
|
|
83769b9c
|
2022-10-21T22:37:32
|
|
[subset] add comment for why we retain empty lookups.
|
|
70e2de2b
|
2022-10-21T22:33:17
|
|
[subset] Always output Lookup's even if they are empty.
The rest of layout subsetting depends on lookup indices being consistent with those computed during planning. So if an empty lookup is discarded during the subset phase it will invalidate all subsequent lookup indices. Generally we shouldn't end up with an empty lookup as we pre-prune them during the planning phase, but it can happen in rare cases such as when a subtable is considered degenerate (eg. #3853)
|
|
c813f842
|
2022-10-20T19:45:23
|
|
Make build work for arm-none-eabi
|
|
b706c6f7
|
2022-09-12T13:58:55
|
|
[instance] update FeatureList with variations
|
|
8f3a7017
|
2022-09-09T15:00:37
|
|
[instance] support FeatureVariations table
|
|
f4813e3b
|
2022-09-09T10:34:09
|
|
[instance] update collect_lookups/prune_features()/closure_features() with variations
Some features will be substituted with variations, so we do not collect
lookups from the original feature tables.
|
|
64e2f2fc
|
2022-09-09T09:36:19
|
|
[instance] store active featurevariation record/condition idxes in the plan
|
|
9ab6605f
|
2022-08-02T09:54:29
|
|
[instance] update GDEF table
|
|
b72995ff
|
2022-08-01T14:48:01
|
|
[instance] GDEF table: collect both varidxes and deltas
|
|
e03043bd
|
2022-08-01T11:37:47
|
|
[subset] don't let VariationStore subset() produce inner_maps
Make it a subset-planning object so VariationStore can subset to
specified inner_maps.
Also add a layout_variation_idx_delta_map in subset_plan
|
|
7fde6ab0
|
2022-08-05T13:33:22
|
|
fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49790
|
|
c67c1b74
|
2022-08-04T11:42:22
|
|
VarStore: simplify again
|
|
d831e935
|
2022-08-04T10:15:21
|
|
bug fix in VarData get_delta ()
when LONG_WORDS flag is set, item row is not computed correctly
lcursor should be interpreted as INT32
|
|
3da50c50
|
2022-07-29T11:40:33
|
|
Remove unused const
|
|
3f7a74ff
|
2022-07-19T21:50:13
|
|
[repacker] WIP extension promotion implementation.
|
|
4cb83967
|
2022-07-23T10:59:42
|
|
[subset/ClassDefFormat2] Fix timeout
Fixes https://oss-fuzz.com/testcase-detail/5417800474165248
|
|
f94a3ba1
|
2022-07-23T10:36:08
|
|
[varStore] Better protect against HB_NO_VAR builds
|
|
5a9c7930
|
2022-07-22T21:33:15
|
|
Add HB_NO_BEYOND_64K
|
|
7cdde6a2
|
2022-07-21T17:17:59
|
|
[ClassDef] Write a loop as range for
|
|
00dfbbce
|
2022-07-21T11:39:32
|
|
[Coverage] Rename and templatize intersected_coverage_glyphs
|
|
8d923363
|
2022-07-20T12:08:18
|
|
[layout] Reduce number of closure rounds
|
|
f3151b65
|
2022-07-17T16:19:28
|
|
[ArrayOf family] Use memory barrier before accessing array
Without it, the compiler was reordering and batching the read
of array length and array[0] if the 0'th member was accessed
constantly and function was inlined. This felt safe to the
compiler because HB_VAR_ARRAY is 1, but could be unsafe actually.
The memory barrier disallows that.
This was found by afl/honggfuzz address sanitizers.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49187
|
|
1327d8e3
|
2022-07-15T16:03:38
|
|
[layout-common] Reshuffle code so Feature is defined before it's used
|
|
c1e280ea
|
2022-07-13T22:43:38
|
|
[reorg] Move Coverage, RangeRecord into new namespace layout.
|
|
df7eebf4
|
2022-07-11T14:14:55
|
|
[>64k:layout] Fix layout of RangeRecord
https://github.com/be-fonts/boring-expansion-spec/issues/30
|
|
9ef9fc01
|
2022-07-11T13:29:23
|
|
[>64k:layout] Templatize GSUBGPOSFormat1
|
|
5fd0a3f0
|
2022-07-11T13:10:04
|
|
[>64k:layout] Templatize GSUBGPOSFormat1
|
|
ca5c8a64
|
2022-07-06T13:02:49
|
|
[>64k:layout:Coverage] Implement format 3/4
Implements rest of https://github.com/be-fonts/boring-expansion-spec/issues/30
|
|
25de6fb4
|
2022-07-06T12:52:03
|
|
[>64k:layout:ClassDef] Implement format 3/4
This implements part of https://github.com/be-fonts/boring-expansion-spec/issues/30
|
|
9286526f
|
2022-07-06T12:26:58
|
|
[>64k:layout] Templatize Coverage & ClassDef
Have not added new formats yet.
|
|
e8cce9d1
|
2022-07-05T14:05:43
|
|
[>64k:layout] Add SmallTypes & MediumTypes
|
|
8a971d01
|
2022-07-06T12:37:43
|
|
[layout] Use is_source_of instead of is_iterator
|
|
0dc0da05
|
2022-07-06T12:33:37
|
|
[iter] Add hb_is_sorted_iterator(_of)
|
|
587969af
|
2022-06-30T21:37:42
|
|
[subset] Drop scripts that are not in the layout_scripts list.
|
|
b96622d1
|
2022-06-05T02:45:41
|
|
[layout] Use a cache for main input ClassDef of (Chain)ContextLookupFormat2
This commit adds a per-lookup caching infrastructure to GSUB/GPOS, and
uses it to cache input ClassDef.get_class value for (Chain)ContextLookupFormat2.
For fonts heavy on use of heave class-based2 context matching, this shows
a good speedup. For NotoNastaliqUrdu for example, I observe 17% speedup.
Unfortunately not many other lookups can use a cache like this :(.
https://github.com/harfbuzz/harfbuzz/pull/3636
|
|
e6409d39
|
2022-06-05T06:57:37
|
|
Revert "[layout] Use a cache for main input ClassDef of (Chain)ContextLookups"
This reverts commit 57d1c08739d0acd94b96da2f9d5dd6c0ff3b3722.
Err. This was an accident.
|
|
57d1c087
|
2022-06-05T02:45:41
|
|
[layout] Use a cache for main input ClassDef of (Chain)ContextLookups
|
|
f13a7954
|
2022-06-03T01:17:20
|
|
[subset] Convert another use of hashmap to unique_ptr
|
|
997d9cc4
|
2022-06-02T18:04:12
|
|
[map] Make unique_ptr hashable
|
|
5af5a565
|
2022-05-30T08:32:50
|
|
[VarStore] Implement writing 32bit var-store
Untested.
Finishes fixing https://github.com/harfbuzz/harfbuzz/issues/2965
|
|
75112098
|
2022-05-23T12:42:15
|
|
[VarStore] Implement reading 32bit var-store
Untested.
Part of https://github.com/harfbuzz/harfbuzz/issues/2965
Serializing is incomplete.
|
|
e5d6da79
|
2022-05-23T12:25:39
|
|
[varStore] rename shortCount to wordCount
|
|
371e14d9
|
2022-05-28T13:40:30
|
|
Combine uses of map has() then get() with has(.., &..)
|
|
6010feee
|
2022-05-24T09:00:44
|
|
[varStore] Rename variable as per review
https://github.com/harfbuzz/harfbuzz/pull/3605
|
|
d9acc045
|
2022-05-21T14:16:21
|
|
[VarStore] Sprinkle cache_t type around
It's available so no need to use void*.
|
|
da38312e
|
2022-05-20T17:32:56
|
|
[VarStore] Pepper cache with likely()
|
|
cf8f00e3
|
2022-05-20T17:14:10
|
|
[VarStore] Don't use NAN
Is faster.
With this, I'm seeing 25 to 28% speedup in glyph_h_advances benchmark
of benchmark-font for var/hb tests.
|
|
880f50f7
|
2022-05-20T16:50:00
|
|
Refactor varstore cache
|
|
f2a2fb91
|
2022-05-20T16:06:05
|
|
[GPOS] Cache VarStore region scalars
|
|
5fbc70c5
|
2022-05-20T14:07:27
|
|
[VarStore] Add cache API
|
|
3ab2c793
|
2022-05-19T17:23:36
|
|
[subset-perf] Signficiantly speed up ClassDef*::subset.
Eliminates the usage of a glyph -> klass hash map and replaces it with a vector storing the mapping. This allows us to use the vector directly as the iterator driving the serialize. Approximately 1% speedup for Noto Nastaliq.
|
|
0b1c2ff9
|
2022-05-18T23:32:03
|
|
[subset-perf] Remove extra map lookup in ClassDef subset methods.
|
|
13ace77f
|
2022-05-18T22:38:43
|
|
[subset-perf] Use glyph_map instead of set in ClassDefFormat.
|
|
adae2f22
|
2022-05-18T21:42:28
|
|
[subset-perf] Cache a glyph map for gsub.
This allows us in some cases to avoid using glyph_set_gsub as a filter.
|
|
cedf7396
|
2022-05-18T16:52:35
|
|
Add some commented-out code
|
|
48dfbd54
|
2022-05-18T21:03:56
|
|
[subset] minor cleanup.
|
|
482c6e5d
|
2022-05-18T19:58:55
|
|
[subset-perf] Speed up Coverage::serialize by caching iterator.
|
|
14b18725
|
2022-05-18T15:14:32
|
|
In Coverage::iter_t, assume iterators are from same Coverage object
No need to support otherwise.
|
|
27141735
|
2022-05-18T15:12:49
|
|
[subset] Add Coverage::__end__ implementation
|
|
c476f58a
|
2022-05-18T14:20:23
|
|
[subset] Write CoverageFormat2::intersects_coverage() as bsearch()
|
|
63c66951
|
2022-05-18T13:53:52
|
|
[ot-layout] Cosmetic
The implementation of HBUINT16 operator == is slower than just
comparing to ints.
|
|
777debd7
|
2022-05-18T13:46:06
|
|
[subset] Rewrite CoverageFormat2::intersects as dagger
|
|
cf5001fa
|
2022-05-18T13:38:29
|
|
[subset] Optimize CoverageFormat2::intersected_coverage_glyphs
|
|
6f37c207
|
2022-05-18T13:25:42
|
|
[subset] Minor rewrite in CoverageFormat2::serialize()
|
|
175319cd
|
2022-05-11T13:47:17
|
|
[gsubgpos] Clean up OT::ClassDefFormat2::intersected_class_glyphs 0 case
|
|
137af361
|
2022-05-11T13:39:30
|
|
[gsubgpos] Simplify OT::ClassDefFormat2::intersected_class_glyphs()
|
|
3261e05b
|
2022-05-11T13:16:31
|
|
[subset] Optimize ClassDef1::intersected_class_glyphs() for class0
|
|
a792e16e
|
2022-03-24T13:08:51
|
|
[ot-layout] Change max nesting level of lookups from 6 to 64
|