Behdad Esfahbod
71d52e10aa
[var] Fix getting side-bearing variations
...
In HVAR/VVAR, if the side-bearing mappings are null, it means the
table does not have them and they should be loaded from glyf table.
Previous logic was returning zer0.
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/1694
2022-07-03 12:39:55 -06:00
Behdad Esfahbod
78b4f39821
[glyf] Fix confusion between scaled vs unscaled lsb
...
Was always broken.
2022-07-03 12:39:55 -06:00
Behdad Esfahbod
6665881c7d
[glyf] Change side-bearing rounding
2022-07-03 12:39:55 -06:00
Behdad Esfahbod
0a295fcde6
[var] Fix DeltaSetIndexMapFormat1
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3692
2022-07-01 17:16:24 -06:00
Behdad Esfahbod
351cccdb75
[buffer-deserialize] Deserialize glyph flags
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1482
2022-07-01 16:52:49 -06:00
Behdad Esfahbod
5134041f21
[deserialize-json] Make it actually work!
...
Was not correctly deserializing glyph names as it was not dropping
double-quotes from glyph name before parsing.
2022-07-01 16:48:47 -06:00
Behdad Esfahbod
534b0911f7
[aat-layout] Add an unlikely()
2022-07-01 16:20:31 -06:00
Stephan Bergmann
14b018124c
hb_graphite2_cluster_t::advance can apparently be negative
...
...as seen with HarfBuzz used by LibreOffice, with `instdir/program/soffice
--headless --convert-to pdf` of doc/abi6073-2.doc from the LibreOffice crash-
testing corpus when run under UBSan,
> hb-graphite2.cc:361:15: runtime error: -1024 is outside the range of representable values of type 'unsigned int'
> #0 in _hb_graphite2_shape at workdir/UnpackedTarball/harfbuzz/src/hb-graphite2.cc:361:15
> #1 in _hb_shape_plan_execute_internal(hb_shape_plan_t*, hb_font_t*, hb_buffer_t*, hb_feature_t const*, unsigned int) at workdir/UnpackedTarball/harfbuzz/src/./hb-shaper-list.hh:38:1
> #2 in hb_shape_plan_execute at workdir/UnpackedTarball/harfbuzz/src/hb-shape-plan.cc:453:14
> #3 in hb_shape_full at workdir/UnpackedTarball/harfbuzz/src/hb-shape.cc:139:19
> #4 in GenericSalLayout::LayoutText(ImplLayoutArgs&, SalLayoutGlyphsImpl const*) at vcl/source/gdi/CommonSalLayout.cxx:495:23
> #5 in OutputDevice::getFallbackLayout(LogicalFontInstance*, int, ImplLayoutArgs&, SalLayoutGlyphs const*) const at vcl/source/outdev/font.cxx:1232:21
> #6 in OutputDevice::ImplGlyphFallbackLayout(std::unique_ptr<SalLayout, std::default_delete<SalLayout> >, ImplLayoutArgs&, SalLayoutGlyphs const*) const at vcl/source/outdev/font.cxx:1300:48
> #7 in OutputDevice::ImplLayout(rtl::OUString const&, int, int, Point const&, long, long const*, SalLayoutFlags, vcl::TextLayoutCache const*, SalLayoutGlyphs const*) const at vcl/source/outdev/text.cxx:1332:22
> #8 in lcl_CreateLayout(SwTextGlyphsKey const&, __gnu_debug::_Safe_iterator<std::_Rb_tree_iterator<std::pair<SwTextGlyphsKey const, SwTextGlyphsData> >, std::__debug::map<SwTextGlyphsKey, SwTextGlyphsData, std::less<SwTextGlyphsKey>, std::allocator<std::pair<SwTextGlyphsKey const, SwTextGlyphsData> > >, std::bidirectional_iterator_tag>) at sw/source/core/txtnode/fntcache.cxx:233:33
> #9 in SwFntObj::GetCachedSalLayoutGlyphs(SwTextGlyphsKey const&) at sw/source/core/txtnode/fntcache.cxx:257:12
> #10 in SwFont::GetTextBreak(SwDrawTextInfo const&, long) at sw/source/core/txtnode/fntcache.cxx:2551:58
> #11 in SwTextSizeInfo::GetTextBreak(long, o3tl::strong_int<int, Tag_TextFrameIndex>, unsigned short, vcl::TextLayoutCache const*) const at sw/source/core/text/inftxt.cxx:450:20
> #12 in SwTextGuess::Guess(SwTextPortion const&, SwTextFormatInfo&, unsigned short) at sw/source/core/text/guess.cxx:205:26
> #13 in SwTextPortion::Format_(SwTextFormatInfo&) at sw/source/core/text/portxt.cxx:305:32
> #14 in SwTextPortion::Format(SwTextFormatInfo&) at sw/source/core/text/portxt.cxx:456:12
> #15 in SwLineLayout::Format(SwTextFormatInfo&) at sw/source/core/text/porlay.cxx:260:31
(where in frame #4 GenericSalLayout::LayoutText, pHbBuffer->props.direction is
HB_DIRECTION_RTL, in case that is relevant).
It is unclear to me whether it is sufficient to only change
hb_graphite2_cluster_t::advance from signed to unsigned int, as there are other
unsigned int variables (like curradv in _hb_graphite2_shape) whose value depend
on hb_graphite2_cluster_t::advance, and which thus might also become negative.
But unlike the float -> unsigned int conversion that UBSan warned about here
(where gr_slot_origin_X() and xscale are float), those are signed int ->
unsigned int conversions that do not cause undefined behavior. At least, with
this change, the above --convert-to pdf and a full `make check screenshot`
succeeded for me under without further UBSan warnings.
(For the version of HarfBuzz optionally built as part of the LibreOffice build,
this has been addressed with
<https://git.libreoffice.org/core/+/6e53e03f752c2f85283c4d47efaaf0683299783c%5E!/ >
"external/harfbuzz: hb_graphite2_cluster_t::advance can apparently be
negative.")
2022-07-01 12:00:09 -06:00
Garret Rieger
dbfd2bf327
minor.
2022-06-30 23:04:35 +00:00
Garret Rieger
79bdcbef0d
[subset] Fix GDEF version downgrade logic.
2022-06-30 22:20:32 +00:00
Garret Rieger
587969af42
[subset] Drop scripts that are not in the layout_scripts list.
2022-06-30 21:37:42 +00:00
Garret Rieger
900476c635
Move GSUB.hh GPOS.hh back into the GPOS/GSUB sub directories.
2022-06-30 15:33:20 -06:00
Garret Rieger
5fdae68481
[reorg] Move GSUB.hh up one level and change GSUB namespace to GSUB_impl.
2022-06-30 15:33:20 -06:00
Garret Rieger
70e32a662f
[subset] Add layout_scripts to subset input.
2022-06-30 21:00:48 +00:00
Behdad Esfahbod
13c499cb26
[hvar] Minor internal rewiring
...
Not passing font to functions makes it more clear that they don't
scale values.
2022-06-30 14:25:09 -06:00
Garret Rieger
41d2c335bc
[subset] Apply script list filter when doing layout collection.
2022-06-30 20:24:42 +00:00
Garret Rieger
e5c8a2f4e1
[subset] Pass plan through to collect methods.
...
Allows to more easily access the filtering sets as they are added and enables propagating errors to the plan.
2022-06-30 20:14:29 +00:00
Behdad Esfahbod
aba4a4957a
[ot-font] Disable VORG variation code in HB_NO_VAR
2022-06-30 14:13:44 -06:00
Behdad Esfahbod
d5921b379b
[tt-font] Apply VVAR.vOrg variation to VORG origin
...
Mostly fixes https://github.com/harfbuzz/harfbuzz/issues/1694
2022-06-30 14:09:09 -06:00
Behdad Esfahbod
eee29f7327
[hmtx] Specialize var_table
2022-06-30 14:09:09 -06:00
Garret Rieger
1bf051ef3b
[subset] refactor feature tag filtering so it can be used for scripts as well.
2022-06-30 20:03:33 +00:00
Khaled Hosny
f6f93c30f3
[docs] Fix warning
...
These comment blocks don’t use gtk-doc syntax.
2022-06-30 08:50:59 +02:00
Khaled Hosny
98e90cc67c
[docs] Reduce warnings
...
Use markdown syntax for inline code blocks instead of %true, %false, and
%NULL.
2022-06-30 08:44:40 +02:00
Behdad Esfahbod
c69ec6f5bb
[kern2] Fix sanitize issue on 32bit systems
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3483
2022-06-29 16:32:59 -06:00
Khaled Hosny
34d3d49e78
[docs] Fix Since annotation
2022-06-29 07:46:21 +02:00
Khaled Hosny
096aaa62a6
4.4.1
2022-06-29 07:30:05 +02:00
Behdad Esfahbod
050f169078
[GPOS/kerx] Call into impl namespace from kerx
2022-06-28 18:52:27 -06:00
Garret Rieger
910a137f4e
[reorg] Fix propagate_attachment_offsets definition.
2022-06-28 18:47:50 -06:00
Garret Rieger
3fbf2dece7
[reorg] Move OT::Layout::GPOS_impl::GPOS to OT::Layout::GPOS.
2022-06-28 18:47:50 -06:00
Garret Rieger
88ef3c5a9a
[reorg] Change OT::Layout::GPOS to OT::Layout::GPOS_impl.
2022-06-28 18:47:50 -06:00
Garret Rieger
49ddf069e0
[reorg] Move GPOS reverse_cursive_minor_offset implementation into new directory layout.
2022-06-28 18:47:50 -06:00
Garret Rieger
74f45f7c2a
[reorg] Move remaining GPOS lookup types to new directory.
2022-06-28 18:47:50 -06:00
Garret Rieger
197d9a5c99
[reorg] Move more GPOS lookups to new directory.
2022-06-28 18:47:50 -06:00
Garret Rieger
c7307ca06a
[reorg] Begin moving GPOS into the new directory layout.
2022-06-28 18:47:50 -06:00
Behdad Esfahbod
9909d11f6f
[indic generator] Fix regression
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3690
2022-06-28 16:02:51 -06:00
Behdad Esfahbod
4499ae0225
[coretext] Fix positioning of out-of-order glyphs
...
Unfortunately this now generates negative advances. To be fixed...
2022-06-28 15:44:34 -06:00
Behdad Esfahbod
58d2e93099
[coretext] Fix up clusters only if needed
2022-06-28 15:44:34 -06:00
Behdad Esfahbod
eaba5e74a9
[directwrite] Simplify
2022-06-28 13:51:50 -06:00
Behdad Esfahbod
33e3bf2d79
[font] Drop caches on variation changes
2022-06-28 13:51:50 -06:00
Behdad Esfahbod
c90130e625
[coretext] Remove old hack now that font layer takes care...
...
of invalidating font data when font settings change.
2022-06-28 13:30:44 -06:00
Behdad Esfahbod
c1c78ade71
[font] When font changes, drop font shaper data
...
https://github.com/harfbuzz/harfbuzz/issues/3683#issuecomment-1168016509
2022-06-28 13:19:30 -06:00
Behdad Esfahbod
34c6c0193c
[glyf] Fix byterange check again
2022-06-27 20:26:57 -06:00
Behdad Esfahbod
20572f914c
[glyf] Move read_flags into a function
2022-06-27 20:22:09 -06:00
Behdad Esfahbod
31e985d7d1
[buffer] Likely that not messaging
2022-06-27 16:32:02 -06:00
Behdad Esfahbod
4be074e2cb
[gvar] Whitespace
2022-06-27 16:12:42 -06:00
Behdad Esfahbod
a96647841a
[gvar] Optimize apply_deltas_to_points
2022-06-27 15:41:02 -06:00
Behdad Esfahbod
e9af9062c0
[gvar] Optimize unpack_deltas
2022-06-27 15:38:42 -06:00
Behdad Esfahbod
573e77280b
[gvar] Optimize unpack_deltas
2022-06-27 15:35:28 -06:00
Behdad Esfahbod
698f51464c
[gvar] Share vector allocation across delta-sets
2022-06-27 15:30:19 -06:00
Behdad Esfahbod
39e280c256
[gvar] Handle a couple of error conditions
2022-06-27 15:28:30 -06:00
Behdad Esfahbod
5be6e5dd57
[gvar] Rewrite linear interpolation
2022-06-27 15:22:16 -06:00
Behdad Esfahbod
57519b532d
[gvar] Use pointer-to-member instead of function
2022-06-27 15:18:56 -06:00
Behdad Esfahbod
ab15fe082a
[gvar] Handle a couple of error conditions
2022-06-27 15:13:10 -06:00
Behdad Esfahbod
b7e9e8785c
[gvar] Optimize deltas and points loading
2022-06-27 15:09:25 -06:00
Behdad Esfahbod
6e72c2e3fa
[glyf] Add an assertion
2022-06-27 15:09:25 -06:00
Behdad Esfahbod
5da341ce92
[map] Another try at hiding minus1
...
To fix https://github.com/harfbuzz/harfbuzz/issues/3684
2022-06-27 14:00:34 -06:00
Behdad Esfahbod
c72d3104ed
[map] Return const reference in operator[]
2022-06-27 13:31:05 -06:00
Behdad Esfahbod
69d53f3e7f
[map] Make default_value() inline
...
See if it make fix https://github.com/harfbuzz/harfbuzz/issues/3684
2022-06-27 13:17:10 -06:00
Behdad Esfahbod
3a0e27e794
[glyf] Move comment
2022-06-27 13:07:39 -06:00
Behdad Esfahbod
d0836dee7a
[glyf] Minor typo change
2022-06-27 13:05:58 -06:00
Behdad Esfahbod
5cca25e5d0
[glyf] Accumulate points as int
...
Everything is int at this stage.
Doesn't seem to matter for performance though.
2022-06-27 13:03:06 -06:00
Behdad Esfahbod
d6f60b3c19
[glyf] Minor optimization
2022-06-27 13:00:08 -06:00
Behdad Esfahbod
b30a3dcba3
[glyf] Another bounds check
...
Very unlikely that is needed but technically possible.
2022-06-27 12:56:54 -06:00
Behdad Esfahbod
2e9dbdcbbe
[glyf] Protect against an unlikely overflow
2022-06-27 12:55:13 -06:00
Khaled Hosny
8537d68172
4.4.0
2022-06-27 20:51:16 +02:00
Behdad Esfahbod
f1fb8c4489
[glyf] Optimize Glyph layout
2022-06-27 12:41:46 -06:00
Behdad Esfahbod
34e3f561b5
[glyf] Fix a bug I introduced recently
...
Pass gid to Glyph in trim_padding codepath.
2022-06-27 12:39:35 -06:00
Behdad Esfahbod
97cbc2d40a
[gvar] Remove condition that font num_coords should match gvar's
2022-06-27 12:37:11 -06:00
Behdad Esfahbod
19cbfb9ce9
[glyf] Relax a condition that font num_coords be equal to gvar's
...
gvar itself still checks the same.
2022-06-27 12:32:18 -06:00
Behdad Esfahbod
d5cfbaa068
[glyf] Optimize composite points loading
2022-06-27 12:24:20 -06:00
Behdad Esfahbod
32dc0641e1
[glyf] Remove an unnecessary condition
2022-06-27 12:22:06 -06:00
Behdad Esfahbod
95bfa0913d
[gvar] Optimize translate()
2022-06-27 12:10:16 -06:00
Behdad Esfahbod
9f067582b8
[gvar] Optimize transform()
2022-06-27 12:10:16 -06:00
Behdad Esfahbod
cfc57ef862
[glyf] Optimize contour_point_t layout
2022-06-27 12:10:16 -06:00
Behdad Esfahbod
75ca78a6bb
[glyf] Optimize hb_contour_points_t::extend
2022-06-27 12:10:16 -06:00
David Corbett
04c4767150
[lao] Decompose and reorder U+0EB3 around U+0EBB
2022-06-27 11:31:32 -06:00
Behdad Esfahbod
d3308f4713
[font] Optimize font scaling further
2022-06-27 11:28:57 -06:00
Matthias Clasen
e72506d085
Fix the annotation for hb_blob_get_data
...
This function will return NULL for the the
empty blob. That is important information for
bindings that treat nullability as a type trait.
2022-06-27 10:59:02 -06:00
Behdad Esfahbod
3c49a6a60a
[glyf] Fix an allocation error
...
Try fixing assertion failure found by fuzzers:
hb-draw-fuzzer: ../../src/harfbuzz/src/OT/glyf/glyf.hh:175: bool OT::glyf_accelerator_t::get_points(hb_font_t *, hb_codepoint_t, T) const [T = OT::glyf_impl::path_builder_t]: Assertion `count >= glyf_impl::PHANTOM_COUNT' failed.
2022-06-27 10:57:51 -06:00
Behdad Esfahbod
556e7078f0
[font] Optimize glyph scaling
2022-06-26 17:48:43 -06:00
Behdad Esfahbod
a1c45bbb55
[glyf] Minor simplify
2022-06-26 17:30:16 -06:00
Behdad Esfahbod
a21a9bb855
[glyf] Optimize flags decoding byte range checking
2022-06-26 17:24:29 -06:00
Behdad Esfahbod
0f1fdf461c
[glyf] Optimize points decoding byte range checking
2022-06-26 17:22:45 -06:00
Behdad Esfahbod
51cfcf2957
[glyf] Optimize points decoding
2022-06-26 17:04:47 -06:00
Behdad Esfahbod
86b7022503
[glyf] Optimize flag decoding
2022-06-26 17:02:32 -06:00
Behdad Esfahbod
30d58bfd0f
[glyf] Don't translate/transform components if has no effect
2022-06-26 16:49:40 -06:00
Behdad Esfahbod
2bb0fa878a
[glyf] Remove unneeded point init()
2022-06-26 16:43:05 -06:00
Behdad Esfahbod
fc72a1d22d
[glyf] Add a pre-allocation for phantom points
2022-06-26 16:42:01 -06:00
Behdad Esfahbod
8d242aaa8b
[glyf] Rewrite a loop harmlessly
...
I hope...
2022-06-26 16:36:08 -06:00
Behdad Esfahbod
cf57f04ddb
[glyf/path-builder] Optimize scaling code
...
Scale each point once upon entry to function.
This makes our shape fetching code as fast as FreeType for all
benchmark cases now.
2022-06-26 16:26:17 -06:00
Behdad Esfahbod
36dd5d32fb
[draw] Use multiplication instead of division in quadratic conversion
2022-06-26 16:16:43 -06:00
Behdad Esfahbod
b095df1343
[glyf/path-builder] Use operator bool for style
2022-06-26 16:12:50 -06:00
Behdad Esfahbod
abb433d0f4
[glyf] Avoid a copy of points in shape fetching for simple glyphs
...
Matches performance with freetype now.
2022-06-26 16:09:32 -06:00
Behdad Esfahbod
7eac779abf
Revert "Revert "[glyf] Optimize shape loading""
...
This reverts commit 164bd288cf
.
2022-06-26 16:02:27 -06:00
Behdad Esfahbod
164bd288cf
Revert "[glyf] Optimize shape loading"
...
This reverts commit f0819301b7
.
Broke tests. To be debugged and redone.
2022-06-26 16:01:15 -06:00
Behdad Esfahbod
f0819301b7
[glyf] Optimize shape loading
...
Do away with a copy for simple glyph load.
2022-06-26 15:52:54 -06:00
Behdad Esfahbod
65b066f18e
[glyf/path-builder] Simplify initialization
2022-06-26 13:18:00 -06:00
David Corbett
b2abd5c7e8
[thai] Reword to include all relevant marks
2022-06-26 13:12:12 -06:00
Behdad Esfahbod
2d4557fe04
[glyf/SimpleGlyph] Use member pointer instead of lambda
2022-06-26 13:08:37 -06:00
Behdad Esfahbod
9ce9773040
[glyf/SimpleGlyph] Minor use constructor for contour_point_t
2022-06-26 13:08:37 -06:00
Behdad Esfahbod
f897978f21
[glyf] Adjust a check-range
2022-06-26 13:08:37 -06:00
Behdad Esfahbod
db039d97ff
[glyf/Composite] Make glyphIndex public
2022-06-26 13:08:37 -06:00
Behdad Esfahbod
1b14bf8aa8
[glyf] Rename CompositeGlyphChain to CompositeGlyphRecord
2022-06-26 13:08:37 -06:00
Behdad Esfahbod
a5ac7f2ea6
[glyf/composite_iter_t] Renames
2022-06-26 13:08:37 -06:00
Behdad Esfahbod
d15260ca95
[gpos] Limit recursion depth in propagate_attachment_offsets()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2927
2022-06-25 19:53:11 -06:00
Behdad Esfahbod
449bdeed5f
[glyf] Rename get_iterator() to iter()
...
That's the standard name.
2022-06-25 18:32:30 -06:00
Behdad Esfahbod
11d2670676
[glyf] Split off glyf-helpers.hh
2022-06-25 18:19:09 -06:00
Behdad Esfahbod
7c4b8c9bf4
[glyf] path-builder minor header guards fix test
2022-06-25 18:14:42 -06:00
Behdad Esfahbod
499c637922
[glyf] Split off path-builder.hh
2022-06-25 18:07:49 -06:00
Behdad Esfahbod
13aadc8961
[glyf] Split off CompositeGlyph.hh
2022-06-25 18:03:15 -06:00
Behdad Esfahbod
f0ec2b728e
[glyf] Split off SimpleGlyph.hh
2022-06-25 17:55:16 -06:00
Behdad Esfahbod
8ed78627f0
[glyf] Split off GlyphHeader.hh
2022-06-25 17:53:13 -06:00
Behdad Esfahbod
81315a3016
[glyf] Namespace implementation in glyf_impl
...
Part of https://github.com/harfbuzz/harfbuzz/issues/3677
2022-06-25 17:50:44 -06:00
Behdad Esfahbod
be1d4bcf29
[glyf] Add fast __end__ to composite iterator
2022-06-25 17:45:21 -06:00
Behdad Esfahbod
ef250eea7e
[glyf] Move a few structs out of Glyph{}
2022-06-25 17:37:59 -06:00
Behdad Esfahbod
ae75f066b5
[glyf] Split SubsetGlyph
2022-06-25 17:12:10 -06:00
Behdad Esfahbod
0031069f47
[glyf] Fix includes
2022-06-25 17:05:18 -06:00
Behdad Esfahbod
b4a0c30d98
[glyf] Remove hardcoded HB_MAX_COMPOSITE_OPERATIONS
2022-06-25 17:01:11 -06:00
Behdad Esfahbod
36373ee15c
[glyf] Move add_gid_and_children to subset-plan where it belongs
2022-06-25 16:55:26 -06:00
Behdad Esfahbod
ba1c9eda38
[glyf] Use a range for loop
2022-06-25 16:51:33 -06:00
Behdad Esfahbod
e4f2bc9342
[glyf] Split Glyph.hh
2022-06-25 16:47:06 -06:00
Behdad Esfahbod
3f9c6bf3fc
[glyf] Minor in _write_loca()
2022-06-25 14:46:26 -06:00
Behdad Esfahbod
852985da0f
[glyf] Split loca.hh
2022-06-25 14:41:51 -06:00
Behdad Esfahbod
100576b7b7
[glyf] Start splitting file
2022-06-25 14:38:43 -06:00
Behdad Esfahbod
e867ac3aef
Merge pull request #3674 from harfbuzz/use-sinhala-no-hacks
...
[use] Switch Sinhala to USE
2022-06-25 12:43:04 -06:00
Behdad Esfahbod
b1629b0ce0
[gdef] Minor harmless use of HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED
2022-06-25 12:00:25 -06:00
David Corbett
78c5ae3979
[indic] Remove remnants of Sinhala
2022-06-25 13:49:18 -04:00
Behdad Esfahbod
0cc948b96c
[use] Switch Sinhala to USE
...
https://github.com/harfbuzz/harfbuzz/issues/1044
2022-06-25 13:48:43 -04:00
David Corbett
6059828769
[use] Reintroduce the HVM class for U+0DCA
2022-06-25 13:48:43 -04:00
David Corbett
1555b30081
Add U+25CC to lone Robatic but not after U+17D9
2022-06-25 11:02:39 -06:00
David Corbett
0f15cb12de
[indic-table] Fix block headers
2022-06-25 11:02:39 -06:00
Garret Rieger
2674962cf5
[repacker] Add comment to graph class.
2022-06-24 17:16:50 -06:00
Garret Rieger
81a2dd0e80
[repacker] Update Makefile for repacker re-org.
2022-06-24 17:16:50 -06:00
Garret Rieger
7078560e33
[repacker] extract graph serialization code into a seperate file.
2022-06-24 17:16:50 -06:00
Garret Rieger
20b02a672d
[repacker] Begin splitting up the repacker implementation into several files.
2022-06-24 17:16:50 -06:00
Behdad Esfahbod
ad2ab1ddb4
[indic] Clear syllables at the end of GSUB
2022-06-24 11:08:35 -06:00
Behdad Esfahbod
8bfb3e9df2
[indic] Disable vowel-constraints under uniscribe-bug-compatible
2022-06-23 13:28:07 -06:00
Behdad Esfahbod
a5cf1a8738
Another null adjustment
2022-06-20 18:01:39 -06:00
Behdad Esfahbod
a7960bdfb0
[config] Add HB_NO_LANGUAGE_LONG and enable in TINY profile
...
Disables 3letter language tags and more complex ones.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3664
2022-06-20 17:55:28 -06:00
Behdad Esfahbod
0d03123350
Mark a null variable as const
2022-06-20 16:51:35 -06:00
Behdad Esfahbod
91d00ab722
[ucd] Update
2022-06-20 13:36:01 -06:00
Khaled Hosny
a15ad778fe
[arabic-fallback] Generate PUA table from data
...
Uses packtab for more compact arrays.
2022-06-19 12:29:10 -06:00
Behdad Esfahbod
abc0685749
Merge pull request #3063 from harfbuzz/arabic-pua
...
Arabic PUA shaping
2022-06-19 11:05:17 -06:00
Behdad Esfahbod
7ec4a556d9
[normalize] Cosmetic
...
I didn't know this syntax is allowed in old C++.
2022-06-19 11:01:45 -06:00
Behdad Esfahbod
8c27c51c27
[arabic-pua] Rename symbols
2022-06-19 10:47:38 -06:00
Behdad Esfahbod
7698962911
[arabic-fallback] Disable PUA shaping under HB_NO_OT_SHAPER_ARABIC_FALLBACK
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
4520911429
[arabic-fallback] Fix warning
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
55350377b0
[cmap/ft] Only map 0xF000 range if font_page is NONE
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
41a079bdec
[arabic-fallback] Make win1256 code build again
...
Humm. Untested.
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
1db6fddb24
[arabic-fallback.hh] Hook up 3-letter ligatures
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
20e9f0b1d2
[arabic-fallback] Add the component loop
...
Should be able to support 3-letter ligatures now. Hooking up next.
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
9684d2d8aa
[arabic-fallback] More baby steps
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
08715d75e0
[arabic-fallback] Another baby-step
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
15dd34b515
[arabic-fallback] Another minor rename towards supporting 3-letter ligatures
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
d86effa4a6
[arabic-fallback] Rename; towards supporting 3-letter ligatures
2022-06-19 10:42:06 -06:00
Behdad Esfahbod
16c2371352
[arabick-fallback] Apply mark ligatures
2022-06-19 10:42:06 -06:00
Khaled Hosny
7f362196c5
[arabic] Split ligature array
...
Generate marks and 3-component ligatures in separate arrays. The new
arrays are unused currently.
2022-06-19 10:42:06 -06:00
Khaled Hosny
6e29060af2
[arabic] Add mapping files for the PUA encoding
...
Unused right now.
2022-06-19 10:42:06 -06:00
Khaled Hosny
189e8c326e
[ft] Remap legacy Arabic PUA codepoints
...
Similar to what ot font finctions does, to support Support legacy
pre-OpenType Windows 3.1-era fonts.
2022-06-19 10:42:05 -06:00
Khaled Hosny
69cbd365cc
WIP: manually add data entries for PUA ligatures
...
Just a test, I’m not entirely convinced we should do this.
2022-06-19 10:42:05 -06:00
Khaled Hosny
c3f590bb1e
[arabic] Support legacy PUA shaping
...
Support legacy pre-OpenType Windows 3.1-era fonts, by remapping PUA code
points in cmap table and letting our fallback shaper build the GSUB
table.
Uniscribe applies also mset-like substitution, but our fallback mark
positioning gives better results, so this is not implemented.
2022-06-19 10:42:05 -06:00
Behdad Esfahbod
b172f88c7d
Fix a warning
...
D:\a\harfbuzz\harfbuzz\src\hb-bit-set-invertible.hh(83): warning C4805: '^': unsafe mix of type 'uint32_t' and type 'const bool' in operation
[870/1075] Compiling C++ object src/harfbuzz.dll.p/hb-face.cc.obj
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
2022-06-18 14:00:59 -06:00
Garret Rieger
af74ab452f
[repack] always run the sort in repack.
...
This is needed to ensure virtual link ordering constraints are respected when repack is being called from fontTools. For subset usage, repack won't be called if the graph doesn't already overflow so this change doesn't cause any extra work.
2022-06-16 15:17:58 -06:00
Behdad Esfahbod
29811a720c
Fix typo
2022-06-16 14:04:08 -06:00
Behdad Esfahbod
c859cbfb88
Mark an array as static
...
Not sure how this wasn't flagged before.
2022-06-16 13:55:12 -06:00
Behdad Esfahbod
19802dfdf0
Minor rename of static symbols to namespace them
2022-06-16 13:52:47 -06:00
Behdad Esfahbod
e0a5231657
[draw] Lazy-allocate user-data/destroy callback vector
2022-06-16 13:40:44 -06:00
Garret Rieger
823f32a0e2
[subset] Fix potential out of bounds write setting overlap flag on composite glyphs.
2022-06-16 12:30:59 -06:00
Behdad Esfahbod
3f9226da37
[meta] Fix typo
2022-06-16 09:28:47 -06:00
Ryan VanderMeulen
1c0eeb7cb3
Don't try to set _USE_MATH_DEFINES if already defined
2022-06-16 09:28:33 -06:00
Ryan VanderMeulen
25917c780f
Fix build warning when __GNUG__ isn't defined
2022-06-16 09:28:33 -06:00
Behdad Esfahbod
e9c0a74063
Fix clang -Wcomma warnings
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3656
2022-06-15 17:28:36 -06:00
Behdad Esfahbod
d9c18cc2f0
[indic-table] Update
2022-06-15 16:50:34 -06:00
Behdad Esfahbod
99a26bc19d
[indic-generator] Fix typo
2022-06-15 16:15:21 -06:00
Behdad Esfahbod
2cbb775866
[myanmar] Fold category P into GB
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3649
This actually now allows Asat after the Myanmar punctuation marks;
something I see in Wikipedia data.
2022-06-15 16:15:21 -06:00
Behdad Esfahbod
b350e30186
[myanmar] Remove category D completely
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3651
2022-06-15 16:15:21 -06:00
Behdad Esfahbod
8533214ac5
[khmer] Fold category Coeng completely into category H
2022-06-15 16:15:21 -06:00
Behdad Esfahbod
607a9fe793
[indic-like] Remove category duplication
2022-06-15 16:15:21 -06:00
Behdad Esfahbod
0485192195
[indic-like] Remove dependence on ot_category_t
2022-06-15 16:15:21 -06:00
Behdad Esfahbod
14049003ac
[indic-like] Reduce indic-dependency of khmer/myanmar even more
2022-06-15 16:15:21 -06:00
Garret Rieger
f9f0969cb6
[subset] switch to hb_memcpy.
2022-06-14 17:49:13 +01:00
Garret Rieger
1e34852f07
[subset] Fix undefined behaviour.
...
Don't memcpy if there's nothing to copy.
2022-06-14 17:49:13 +01:00
Garret Rieger
311413f16b
[subset] Fix fuzzer issue.
...
Fixes https://oss-fuzz.com/testcase-detail/5693568490012672 . new_index should be set from new_index2 when the entry is present in the map.
2022-06-14 17:49:13 +01:00
Matthias Clasen
4ba7980b8e
Fix the generated gobject headers
...
These headers are not acceptable to modern compilers.
gcc says things like:
/usr/include/harfbuzz/hb-gobject-enums.h💯 1: warning:
function declaration isn’t a prototype [-Wstrict-prototypes]
100 | hb_gobject_ot_metrics_tag_get_type () G_GNUC_CONST;
2022-06-11 23:47:00 +01:00
Ali Chraghi
79bb3b5278
[docs] fix typo
2022-06-11 13:04:55 +01:00
Behdad Esfahbod
98116e5cf5
[myanmar] Fix comments on categories
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894955430
2022-06-11 03:42:36 -06:00
Behdad Esfahbod
02016914b3
[indic-generator] Remove unnecessary Myanmar category=D overrides
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894685106
2022-06-10 17:24:19 -06:00
Behdad Esfahbod
937c878078
[indic-generator] Remove unnecessary override for Myanmar U+1039
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894762535
2022-06-10 17:20:15 -06:00
Behdad Esfahbod
9504037ccb
[indic-generator] Remove three unneeded Myanmar overrides U+AA74-6
...
These three characters have Indic_Syllabic_Category=Consonant_Placeholder. The
original evidence that prompted these overrides says they can take tone marks.
They are not subjoined: Khamti Shan apparently does not use subjoined
characters at all. Therefore, PLACEHOLDER is good enough and these need not be
overridden to C.
https://www.unicode.org/L2/L2008/08276-khamti-proposal.pdf
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894640713
2022-06-10 17:13:16 -06:00
Behdad Esfahbod
02eb6606d7
[indic-generator] Remove redundant PLACEHODER characters overrides
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894631922
2022-06-10 17:10:42 -06:00
Behdad Esfahbod
e16669ceac
[indic-generator] Remove redundant override of U+2010 / U+2011
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894630596
2022-06-10 17:05:35 -06:00
Behdad Esfahbod
bb255cd9a6
[indic-generator] Remove redundant override of U+0980
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894627064
2022-06-10 17:03:52 -06:00
Behdad Esfahbod
30d8c87d01
[myanmar] Document Medials
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894532676
2022-06-10 16:56:15 -06:00
Behdad Esfahbod
e1826c3714
[khmer] Reuse OT_H for OT_Coeng
...
https://github.com/harfbuzz/harfbuzz/pull/3648#discussion_r894517417
2022-06-10 16:53:11 -06:00
Behdad Esfahbod
eb2f2e318a
[indic-generator] Update comment re U+104E
...
https://github.com/harfbuzz/harfbuzz/pull/3648#pullrequestreview-1002150048
2022-06-10 16:47:59 -06:00
Behdad Esfahbod
0daafefdd1
Merge branch 'main' into indic-cleanup
2022-06-10 10:55:49 -06:00
Behdad Esfahbod
148283d0e0
[syllabic] Use a buffer scratch-flag for has-broken-syllable
2022-06-10 07:48:39 -06:00
Behdad Esfahbod
6997d10bc0
[arabic] Remove a couple TODO items
2022-06-10 07:43:33 -06:00
Behdad Esfahbod
e1575f2347
[iter] Remove a few TODO items
2022-06-10 07:41:39 -06:00
Behdad Esfahbod
689c77530a
[buffer] Actually remove TODO item
...
In reality, one side is smaller and one side is larger. The existing code
handles that just fine.
2022-06-10 07:37:45 -06:00
Behdad Esfahbod
d09e962b9f
[buffer] Update a TODO item
2022-06-10 07:36:43 -06:00
Behdad Esfahbod
b3f689e7e5
[serializer] Remove TODO that's not gonna happen
2022-06-10 07:31:47 -06:00
Behdad Esfahbod
10a8cc28fc
[normalizer] Remove a TODO that's not going to happen
2022-06-10 07:31:06 -06:00
Behdad Esfahbod
7635568f29
[font] Remove a TODO item that's not gonna happen
2022-06-10 07:29:15 -06:00
Behdad Esfahbod
bd453de757
[unicode] Accept a couple hacks as permanent
2022-06-10 07:25:48 -06:00
Behdad Esfahbod
39c132a62d
[indic/myanmar] Simplify compare functions
2022-06-10 07:12:39 -06:00
Behdad Esfahbod
a5bcd8567f
[indic] Update comment re category listing
2022-06-10 07:03:02 -06:00
Behdad Esfahbod
10a5485136
[indic/myanmar] Move is_consonant to .cc files
2022-06-10 06:34:56 -06:00
Behdad Esfahbod
1c657460ef
[indic] Expand MEDIAL_FLAGS
2022-06-10 06:29:45 -06:00
Behdad Esfahbod
9e3917f6d6
[indic] Move a couple of functions to .cc file
2022-06-10 06:26:26 -06:00
Behdad Esfahbod
165ef55e57
[indic-generator] Move INDIC_COMBINE_CATEGORIES here
2022-06-10 06:20:10 -06:00
Behdad Esfahbod
b030dd9e88
[indic-table] Minor rename
2022-06-10 06:12:13 -06:00
Behdad Esfahbod
d414fb3328
[indic/khmer/myanmar] Add static_assert that categories match OT_*
2022-06-10 00:50:47 -06:00
Behdad Esfahbod
15ea4ccb04
[indic-like] Add note about replicated values
2022-06-09 17:47:46 -06:00
Behdad Esfahbod
3289e81532
[indic] Use categories from the machine
2022-06-09 17:46:15 -06:00
Behdad Esfahbod
37217fc9be
[indic-generator/myanmar] Move most Myanmar category overrides to generator
2022-06-09 17:27:43 -06:00
Behdad Esfahbod
c136227f57
[indic-generator/khmer] Move Khmer overrides to generator
2022-06-09 13:38:34 -06:00
Behdad Esfahbod
40aa4e8320
[indic/khmer/myanmar] Add Khmer/Myanmar categories to indic_category_t
2022-06-09 13:30:00 -06:00
Behdad Esfahbod
25793075e2
[indic-generator] Move Khmer/Myanmar vowel categories to the generator
2022-06-09 13:11:46 -06:00
Behdad Esfahbod
a6c82d4b8c
[myanmar] Simplify to not use position info from the indic table for shaping
2022-06-09 13:04:28 -06:00
Behdad Esfahbod
10cd8ac0e5
[indic-generator] Move matra category overrides to generator
2022-06-09 12:27:31 -06:00
Behdad Esfahbod
c4e4f1d387
[indic-generator] Move SMVD position overrides to generator
2022-06-09 11:58:37 -06:00
Behdad Esfahbod
2963154c15
[indic-generator] Add a couple comments
2022-06-09 11:53:24 -06:00
Behdad Esfahbod
91d6f45bc9
[indic-generator] Move some position overrides to the generator
2022-06-09 11:52:56 -06:00
Behdad Esfahbod
0ec4dcb93d
[indic-generator] Ouch
...
Not sure how this was passing tests still.
2022-06-09 11:52:25 -06:00
Behdad Esfahbod
f0269e0f1b
[indic-generator] Move Ra handling to the generator
2022-06-09 11:52:03 -06:00
Behdad Esfahbod
419d2146c2
[indic-generator] Cap off what categories have positions
...
This was left off of the commit moving Indic categories to the generator.
It didn't fail any tests, but adding it back because it has implications
possibly.
2022-06-09 11:51:38 -06:00
Behdad Esfahbod
e1d965d527
[indic-generator] Move position mapping to generator
2022-06-09 11:51:15 -06:00
Behdad Esfahbod
4907514026
[indic-generator] Move category overrides to generator
2022-06-09 11:50:30 -06:00
Behdad Esfahbod
58eeb3a180
[indic-generator] Move category mapping to generator
2022-06-09 11:49:57 -06:00
Behdad Esfahbod
899ca24387
[myanmar] Remove duplication of categories in the Myanmar shaper
2022-06-09 07:02:54 -06:00
Behdad Esfahbod
ce0528c0ff
[khmer] Remove duplication of categories in the Khmer shaper
2022-06-09 07:02:54 -06:00
Behdad Esfahbod
17c80035ad
Revert "[cplusplus] Internally allow using hb_unique_ptr with hb_free()"
...
This reverts commit b5f621b08d
.
A build was failing with clang 14 for Firefox apparently, sigh.
https://github.com/harfbuzz/harfbuzz/issues/3647
2022-06-09 04:17:38 -06:00
Behdad Esfahbod
9fc9b1ece4
[layout] Minor, add using Lookup to GSUB/GPOS
2022-06-08 12:37:31 -06:00
Behdad Esfahbod
d4ddb3acf8
Comments typos
2022-06-08 11:45:33 -06:00
Behdad Esfahbod
4119f73c21
[subset/layout] Rename dispatch_closure_lookups_recurse_func to dispatch_recurse_func<>
2022-06-08 18:42:09 +01:00
Behdad Esfahbod
c13ff39520
[layout] Rename apply_recurse_func to specialization of dispatch_recurse_func
2022-06-08 18:42:09 +01:00
Behdad Esfahbod
6a1edb8c97
[set-digest] One more rename
2022-06-08 11:38:17 -06:00
Behdad Esfahbod
6453737b0e
[set-digest] Rename lowest_bits to bits_pattern
2022-06-08 11:37:12 -06:00
Behdad Esfahbod
2a061cb9cc
[set-digest] Improve documentation
2022-06-08 11:35:50 -06:00
Behdad Esfahbod
42051fe18a
[layout] s/inplace/always_inplace/g
2022-06-08 04:00:21 -06:00
Behdad Esfahbod
21346af01d
[layout-cache] Adjust cost-function for recent change
2022-06-07 14:41:39 -06:00
Behdad Esfahbod
bfee6839b0
[layout-cache] Cache lookahead, not input, classdef in ChainContextFormat2
...
From the commit:
+ /* For ChainContextFormat2 we cache the LookaheadClassDef instead of InputClassDef.
+ * The reason is that most heavy fonts want to identify a glyph in context and apply
+ * a lookup to it. In this scenario, the length of the input sequence is one, whereas
+ * the lookahead / backtrack are typically longer. The one glyph in input sequence is
+ * looked-up below and no input glyph is looked up in individual rules, whereas the
+ * lookahead and backtrack glyphs are tried. Since we match lookahead before backtrack,
+ * we should cache lookahead. This decisions showed a 20% improvement in shaping of
+ * the Gulzar font.
https://github.com/harfbuzz/harfbuzz/pull/3636
2022-06-07 11:41:05 -06:00
Behdad Esfahbod
39820af72f
[layout] Add HB_NO_OT_LAYOUT_LOOKUP_CACHE to disable caching lookups
...
Enabled when optimize-size profile is enabled.
2022-06-07 10:27:55 -06:00
Behdad Esfahbod
845279c34c
Merge pull request #3636 from harfbuzz/classdef-cache
...
Classdef cache
2022-06-07 16:40:22 +01:00
Behdad Esfahbod
b59e25f25e
[cff] Try fixing Heap-buffer-overflow in CFF::Charset::collect_glyph_to_sid_map
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47790
2022-06-07 09:27:44 -06:00
Behdad Esfahbod
c8fb048f79
[gsubgpos] Document caching
2022-06-07 09:20:27 -06:00
Behdad Esfahbod
5963cf4469
[gsubgpos] Merge cache_enter and cache_leave entry points
...
Saves a pointer per subtable
2022-06-07 09:17:14 -06:00
Behdad Esfahbod
d4c09e9a87
[gsubgpos] Remove apply_cached() entry point
...
Just use a bool to apply()
2022-06-07 09:17:14 -06:00
Behdad Esfahbod
b96622d15c
[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
2022-06-07 09:14:38 -06:00
Xavier Claessens
4266f4e29a
Fix check-* scripts when harfbuzz is a subproject
...
When harfbuzz is a subproject paths are in the form
"subprojects/harfbuzz/src/...". Instead of removing "src/" prefix, take
the absolute path and make it relative to current source dir.
This fix regression introduced in
https://github.com/harfbuzz/harfbuzz/pull/3394 .
2022-06-06 16:53:29 +01:00
Behdad Esfahbod
15543f70e0
[indic-like] Move allocation of syllable() buffer var to shapers that use it
...
In indic, we don't have a pause location release the var.
2022-06-05 08:15:47 -06:00
Behdad Esfahbod
104dc85a22
[buffer] Add try_allocate for buffer variables
2022-06-05 08:15:46 -06:00
Behdad Esfahbod
b5f621b08d
[cplusplus] Internally allow using hb_unique_ptr with hb_free()
...
...for arbitrary types.
2022-06-05 08:15:31 -06:00
Behdad Esfahbod
f18eb000d3
[buffer] Mark a variable as unused
...
Weird. Somehow our HB_TINY bot started erring as this var being unused
in non-debug builds. Not sure why now...
In file included from src/hb-ot-map.hh:32:0,
from src/hb-ot-shape.hh:32,
from src/hb-aat-layout.hh:32,
from src/hb-aat-layout.cc:30,
from src/harfbuzz.cc:1:
src/hb-buffer.hh: In member function ‘void hb_buffer_t::assert_var(unsigned int, unsigned int)’:
src/hb-buffer.hh:192:18: error: unused variable ‘bits’ [-Werror=unused-variable]
unsigned int bits = (1u<<end) - (1u<<start);
^~~~
cc1plus: some warnings being treated as errors
Error: Process completed with exit code 1.
2022-06-05 07:06:07 -06:00
Behdad Esfahbod
e6409d3905
Revert "[layout] Use a cache for main input ClassDef of (Chain)ContextLookups"
...
This reverts commit 57d1c08739
.
Err. This was an accident.
2022-06-05 06:57:37 -06:00
Behdad Esfahbod
57d1c08739
[layout] Use a cache for main input ClassDef of (Chain)ContextLookups
2022-06-05 06:54:19 -06:00
Behdad Esfahbod
92e81ab1df
[indic/khmer/myanmar] Shift category numbers around to avoid overlap
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3632
2022-06-05 01:14:32 -06:00
Behdad Esfahbod
d6dbc0d175
[gi/ft] Silence warnings
...
gi doesn't understand that FT_Face is a pointer, and not bare struct.
So it skips these APIs anyway. Mark skip to silense the warning.
../src/hb-ft.cc:242: Warning: HarfBuzz: hb_ft_font_get_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
../src/hb-ft.cc:264: Warning: HarfBuzz: hb_ft_font_lock_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
2022-06-05 00:58:53 -06:00
Behdad Esfahbod
f78a25098a
[gi] Remove Xconstructor annotations
2022-06-05 00:55:35 -06:00
Behdad Esfahbod
cb961eac5c
[configs] Fix builds with HB_NO_BUFFER_SERIALIZE but not HB_NO_BUFFER_VERIFY
...
e986c12075 (commitcomment-75339317)
2022-06-05 00:45:29 -06:00
Behdad Esfahbod
67852504f6
[indic/myanmar] No-op update to machines
2022-06-04 09:27:45 -06:00
Behdad Esfahbod
20a61ca447
[myanmar] Fold D category into GB
...
Trying to free a byte the buffer vars, for caching of lookups.
Part of https://github.com/harfbuzz/harfbuzz/issues/3633
2022-06-04 09:27:37 -06:00
Behdad Esfahbod
f9b643f6b2
[layout] s/hb_get_subtables_context_t/hb_accelerate_subtables_context_t/g
2022-06-04 09:27:31 -06:00
Behdad Esfahbod
d4dfb8c1f1
[arabic] Free up buffer variable earlier
2022-06-04 09:27:23 -06:00
Behdad Esfahbod
cc7ebb0ffa
Remove remaining mention to complex shapers in the code
...
https://github.com/harfbuzz/harfbuzz/pull/3628#issuecomment-1146248037
2022-06-04 05:42:58 -06:00
Behdad Esfahbod
b39b5f2f31
[name] Implement approximate language matching
...
Very rudimentary.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3354
2022-06-03 13:00:33 +01:00
Behdad Esfahbod
40d7d56e53
[subset-input] Minor move
2022-06-03 05:40:18 -06:00
Behdad Esfahbod
40193adbfc
[subset] Update default features list
2022-06-03 05:35:19 -06:00
Behdad Esfahbod
5bfb0b721c
Rename s/shape-complex/shaper/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
44be1e5dfb
s/SHAPE_COMPLEX/SHAPER/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
6fbb552156
s/FLAG_COMPLEX/FLAG_SHAPER/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
6d9e94d2b8
s/hb_ot_shape_complex_categorize/hb_ot_shaper_categorize/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
a560182cb3
s/complex_var/ot_shaper_var/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
13fbed29e4
s/HB_OT_SHAPE_COMPLEX_MAX_COMBINING_MARKS/HB_OT_SHAPE_MAX_COMBINING_MARKS/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
44a7b3b773
s/ot_complex_shaper/ot_shaper/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
e5161977a4
s/COMPLEX_SHAPER/OT_SHAPER/g
2022-06-03 10:30:34 +01:00
Behdad Esfahbod
f3a8b7f36b
[algs] Test hb_hash()
2022-06-03 02:21:46 -06:00
Behdad Esfahbod
215a0afad1
[algs] Remove unused hb_coerce()
2022-06-03 01:48:46 -06:00
Behdad Esfahbod
5dc12d7d8d
[cmap] Rewrite set_for() slightly
2022-06-03 01:37:02 -06:00
Behdad Esfahbod
9552955e08
Add an unlikely
2022-06-03 01:33:01 -06:00
Behdad Esfahbod
88f00ecb84
[map] Fix iter_ref () and test it
2022-06-03 01:30:27 -06:00
Behdad Esfahbod
a42c624fca
Convert one final use of hashmap to unique_ptr
2022-06-03 01:22:34 -06:00
Behdad Esfahbod
f13a79548f
[subset] Convert another use of hashmap to unique_ptr
2022-06-03 01:17:20 -06:00
Behdad Esfahbod
25f57230d5
[map] Return references from new iter_ref()
2022-06-03 01:14:35 -06:00
Behdad Esfahbod
a7a688616a
[cmap] Convert another map use to unique_ptr
2022-06-02 18:59:15 -06:00
Behdad Esfahbod
997d9cc466
[map] Make unique_ptr hashable
2022-06-02 18:47:42 -06:00
Behdad Esfahbod
8bb2a3326e
[map] Remove unneeded assignment
2022-06-02 15:18:23 -06:00
Behdad Esfahbod
d7785a6da0
[cplusplus] Add unique_ptr
2022-06-02 12:43:04 -06:00
Behdad Esfahbod
bca710e8ad
[gsubgpos] Use map has() instead of get() when appropriate
2022-06-02 12:06:25 -06:00
Behdad Esfahbod
e9407a2bd2
Use shared_ptr<hb_set_t> in one place
...
See if valgrind is happy...
2022-06-02 12:00:43 -06:00
Behdad Esfahbod
a42a703cb6
[shared_ptr] Clear p in destructor
2022-06-02 12:00:43 -06:00
Behdad Esfahbod
f0a0dcad70
[test-map] Test hashing shared_ptr
2022-06-02 11:25:56 -06:00
Behdad Esfahbod
4c1b5d9ece
Whitespace
2022-06-02 11:25:11 -06:00
Behdad Esfahbod
b9230c5425
[map] Fix has()
2022-06-02 11:23:38 -06:00
Behdad Esfahbod
97ea10a63a
Remove old nullptr_t hacks
...
Were used for hashmap before.
2022-06-02 11:23:38 -06:00
Behdad Esfahbod
3f78a71ca0
[map] Finally! Just can usd hb_hashmap_t<obj_t, obj_t>
...
Yay!
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
0ccab339f9
[map] Remove invalid-key template arguments since unused
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
3f6a8f69a0
[map] Remove invalid-key special-casing
...
Can override invalid-key value now.
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
5328b73fba
[map] Reduce map item size again
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
4f58ae60eb
[map] Keep is_used, is_tombstone as booleans
2022-06-02 11:23:37 -06:00
Behdad Esfahbod
7ec3aad20f
[shared_ptr] Fix hb_hash() crash on nullptr
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
4d646773cf
[cplusplus] Make .reference() return T*
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
7e7a4a8f05
[cplusplus] Fix build
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
a089d91fda
[hash] Adjust hash for shared_ptr, implement it for std::hash
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
e037325efb
[hash] Remove custom hash, rely on std::hash
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
0d3d5b62ae
[cplusplus] Adjustments
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
0b35940a72
Make hb::shared_ptr hashable
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
3817bdfd7f
[hb.hh] Include hb-cplusplus.hh
2022-06-02 18:22:05 +01:00
Behdad Esfahbod
e0f3cab246
[cplusplus] Add hb-cplusplus.hh
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2152
2022-06-02 18:22:05 +01:00
Garret Rieger
98aaecd397
[subset] fix data race touching Crap() in cff subsetting.
2022-06-01 22:50:35 +01:00
Behdad Esfahbod
c88a6a9ec3
[face] Remove const from get_user_data prototype
...
This was done by mistake.
Since the returned user_data can be changed, face should not be marked
const. Other object types follow this parttern.
2022-06-01 09:46:41 -06:00
Behdad Esfahbod
bc6ecaa262
[font-funcs] Handle case of null func but non-null destroy or user-data
2022-06-01 16:38:12 +01:00
Behdad Esfahbod
88ccbd2c43
[font-funcs] Optimize user-data/destroy storage
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2427
2022-06-01 16:38:12 +01:00
Behdad Esfahbod
e421613e8f
[sbix] Fix conditional
2022-06-01 09:07:57 -06:00
Behdad Esfahbod
55b911d863
[buffer] Mark getter functions as taking const buffer
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2873
2022-06-01 08:13:06 -06:00
Behdad Esfahbod
9e1479b5f0
[morx] Limit context length
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3097
2022-06-01 07:54:45 -06:00
Behdad Esfahbod
62e803b361
[sbix] Limit glyph extents
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3557
2022-06-01 07:39:20 -06:00
Behdad Esfahbod
cd05d187c8
[font] Fix undefined-behavior when scales are negative
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3555
2022-06-01 07:27:53 -06:00
Behdad Esfahbod
fc4d42ff99
[ft] Add API to notify that hb_font_t changed
...
New API:
- hb_ft_hb_font_changed()
Mostly reverts 56e0ff9ea1
Related https://github.com/harfbuzz/harfbuzz/issues/2270
Fixes https://github.com/harfbuzz/harfbuzz/issues/3619
2022-06-01 14:12:38 +01:00
Behdad Esfahbod
e246723f0c
[shape] Fail shaping internally if buffer ops exceeded
2022-06-01 05:00:06 -06:00
Behdad Esfahbod
9c0c31dfaa
[buffer] When deleting glyphs, check cluster backwards as well
2022-06-01 04:52:10 -06:00
Behdad Esfahbod
0384f80e78
[buffer-verify] If shaping buffers failed during verification, pass the test
2022-06-01 04:50:15 -06:00
Behdad Esfahbod
eba626ff6a
[shape-plan] Return empty plan if buffer direction is invalid
...
Happens if buffer creation failed.
2022-06-01 04:49:46 -06:00
Behdad Esfahbod
a441c6c16b
[shape] Only verify if text_buffer is successful
2022-06-01 04:49:39 -06:00
Behdad Esfahbod
f7f61aeb6f
[buffer] Add TODO item
2022-06-01 04:48:59 -06:00
Behdad Esfahbod
d72d37008d
[shape] Allow null buffer
...
Ouch!
2022-06-01 04:48:40 -06:00
Behdad Esfahbod
45a2252607
[flags] Fix undefined-behavior
...
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/hb-buffer.hh:60:1 in
failure on clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5736539338833920
2022-05-31 06:35:42 -06:00
Behdad Esfahbod
f3f9fc1544
[buffer] Mark glyph_flags_t as flags
2022-05-31 06:35:42 -06:00
Behdad Esfahbod
ab143e85c3
[buffer] Add HB_BUFFER_FLAG_DEFINED and HB_BUFFER_SERIALIZE_FLAG_DEFINED
...
New API:
+ HB_BUFFER_FLAG_DEFINED
+ HB_BUFFER_SERIALIZE_FLAG_DEFINED
2022-05-31 06:35:42 -06:00
Behdad Esfahbod
9a2a857043
[ot-shape] Don't verify buffer if shaping failed
...
Fixes all of fuzzing verify failures, which were result of buffer failure
on super-long results, which fails unsafe-to-break because shorter strings
don't fail shaping.
2022-05-31 06:35:42 -06:00
Behdad Esfahbod
f8b26f43ec
Merge pull request #3606 from harfbuzz/32bit-varstore
...
32bit varstore
2022-05-31 11:22:32 +01:00
Behdad Esfahbod
5af5a56593
[VarStore] Implement writing 32bit var-store
...
Untested.
Finishes fixing https://github.com/harfbuzz/harfbuzz/issues/2965
2022-05-31 03:58:35 -06:00
Behdad Esfahbod
75112098ac
[VarStore] Implement reading 32bit var-store
...
Untested.
Part of https://github.com/harfbuzz/harfbuzz/issues/2965
Serializing is incomplete.
2022-05-31 03:58:29 -06:00
Xavier Claessens
334bd013d9
Skip warning when building as subproject and ragel is missing
...
It is unlikely to be a developer build in that case.
2022-05-30 18:27:33 +02:00
Behdad Esfahbod
e5d6da7905
[varStore] rename shortCount to wordCount
2022-05-30 07:48:58 -06:00
Behdad Esfahbod
d11455f285
[blob] Fix strncpy() use in Mac resource opening code
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3616
2022-05-30 06:59:03 -06:00
Behdad Esfahbod
ea2dd54b68
[map] Place item hash between key and value, not after them
...
This way if only one of key and value is 64bit (eg. pointer), and other is 32bit,
the whole item will fit in 128bit, whereas before it would have been bumped up to
196 if only value was 64bit (a common use-case for us.)
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
ec6cefc46a
[repacker] Simplify map types
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
cbcdf442c5
[map] Speed up map's own hash()
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
de33ef61b7
[map] Add TODO item
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
fc5739ea90
[test-map] Whitespace
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
3e64abd5d6
Merge pull request #3613 from harfbuzz/threads-test
...
Threads test
2022-05-30 05:52:21 -06:00
Behdad Esfahbod
efa4385b16
Merge pull request #3615 from harfbuzz/gir-freetype
...
[gi] Add freetype2-2.0 for g-i-r includes
2022-05-30 05:40:56 -06:00
Behdad Esfahbod
f4a8b70016
More member initialization
2022-05-30 05:30:37 -06:00
Behdad Esfahbod
484cc18732
[test-shape-threads] Set language
2022-05-30 05:09:53 -06:00
Behdad Esfahbod
315ef83b4e
Revert "Revert "[ot-lang] Use atomic int for cache""
...
This reverts commit c56ce8681c
.
The revert was not intentional. Ouch!
2022-05-30 05:09:26 -06:00
Khaled Hosny
3427511988
[gi] Add freetype2-2.0 for g-i-r includes
...
Fixes the warnings:
../src/hb-ft.cc:810: Warning: HarfBuzz: hb_ft_face_create: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:886: Warning: HarfBuzz: hb_ft_face_create_cached: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:855: Warning: HarfBuzz: hb_ft_face_create_referenced: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:920: Warning: HarfBuzz: hb_ft_font_create: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:1029: Warning: HarfBuzz: hb_ft_font_create_referenced: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:240: Warning: HarfBuzz: hb_ft_font_get_face: return value: Unresolved type: 'FT_Face'
../src/hb-ft.cc:262: Warning: HarfBuzz: hb_ft_font_lock_face: return value: Unresolved type: 'FT_Face'
2022-05-30 04:48:22 +02:00
Behdad Esfahbod
97aa1ce6ba
[gsubgpos] Move some member initialization
2022-05-29 10:56:41 -06:00
Behdad Esfahbod
0bb4c1f021
[cache] Set default values for cache template parameters
2022-05-29 10:23:19 -06:00
Behdad Esfahbod
3957d2927d
[layout] Remove stale comment
2022-05-29 07:30:58 -06:00
Behdad Esfahbod
b6fed6f711
[set-digest] Minor don't use !! when auto bool conversion happens
2022-05-29 06:33:34 -06:00
Behdad Esfahbod
371e14d99c
Combine uses of map has() then get() with has(.., &..)
2022-05-28 13:40:30 -06:00
Behdad Esfahbod
b99efa6c8d
[map] Minor: use const reference in has()
2022-05-28 05:16:34 -06:00
Behdad Esfahbod
24d5a11dcb
[bimap] Add unlikely and minor optimization in is_empty()
2022-05-28 05:14:16 -06:00
Behdad Esfahbod
c56ce8681c
Revert "[ot-lang] Use atomic int for cache"
...
This reverts commit d61b207491
.
2022-05-28 04:25:51 -06:00
Behdad Esfahbod
63bc6be0cf
Merge pull request #3603 from harfbuzz/font-serial
...
Add font serial API
2022-05-27 08:25:22 -06:00
Behdad Esfahbod
e2aa29907d
[set] Use relaxed atomic ops for last_page_index
...
Since iterating a set from multiple threads is supported.
2022-05-27 07:06:02 -06:00
Behdad Esfahbod
d61b207491
[ot-lang] Use atomic int for cache
...
Fixes(?) https://github.com/harfbuzz/harfbuzz/issues/3612
2022-05-26 18:24:43 -06:00
Behdad Esfahbod
67bd147c73
Merge pull request #3610 from googlefonts/subset_create_tables_face
...
[subset] fix subsetting of faces created via hb_face_create_for_tables.
2022-05-26 05:16:07 -06:00
Behdad Esfahbod
a719e67887
[ot-font] Use atomic ops for cache serial number
...
This guarantees the cache is coherent.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
5248b2567b
[ot-font/h-advance] Adjust varStore cache condition
...
This gives best performance for short strings, now that we have a h-advance cache as well.
The en-words benchmark in particular, now ot-font is faster than ft.
Second to last line is of interest:
Before:
-----------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------------------------
BM_Shape/en-words.txt/Roboto-Regular.ttf/hb 29.8 ms 29.8 ms 23
BM_Shape/en-words.txt/Roboto-Regular.ttf/ft 30.4 ms 30.4 ms 23
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/hb 16.3 ms 16.3 ms 43
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/ft 16.5 ms 16.5 ms 42
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/hb 18.0 ms 18.0 ms 39
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/ft 17.8 ms 17.8 ms 39
After:
behdad@Behdads-MacBook-Pro harfbuzz % ninja -Cbuild && build/perf/benchmark-shape --benchmark_filter=en-words
-----------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------------------------
BM_Shape/en-words.txt/Roboto-Regular.ttf/hb 30.0 ms 30.0 ms 23
BM_Shape/en-words.txt/Roboto-Regular.ttf/ft 30.3 ms 30.3 ms 23
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/hb 16.3 ms 16.3 ms 43
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/ft 16.4 ms 16.4 ms 43
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/hb 17.6 ms 17.6 ms 40
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/ft 17.8 ms 17.8 ms 39
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
12fff976b6
[ot-var] Use atomic int for cached-serial
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
0919eaa6e8
[ot-font] Remove lock around cache
...
Not needed.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
3548b6025f
[ot-font] Cache h-advances for variable fonts
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
39a07bf3eb
[ot-font] Rename cache to varStore_cache
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
970e03ecae
[ot-font] Add a hb_ot_font_t struct
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
80c49933c6
[hb-ft] Adjust serial signature
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
56e0ff9ea1
[ft] If hb_font changed, update FT_Face
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2270
Rather untested.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
d0de389de8
[font] Fix test
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
a2015cd300
[font] Add a separate serial_coords
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
8629df188a
[ft] Discard advance cache if font changed
...
Uses newly added font serial API.
Part of https://github.com/harfbuzz/harfbuzz/issues/2270
But doesn't set new coords on the FT_Face. That's a lot more
work :(.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
48db1c9583
[font] Add serial API
...
New API:
+ hb_font_get_serial()
+ hb_font_changed()
Fixes https://github.com/harfbuzz/harfbuzz/issues/2426
Unused internally as of now.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
efa2a5796e
[map] Add hb_map_copy()
...
New API:
+ hb_map_copy()
2022-05-26 05:01:57 -06:00
Behdad Esfahbod
3b28cff9c0
[cff1] Fix null dereference on memory alloc failure
2022-05-26 04:42:17 -06:00
Behdad Esfahbod
8df9aba997
Actually try to fix null-size undefined behavior
...
Related to:
https://github.com/harfbuzz/harfbuzz/pull/2067
https://bugzilla.mozilla.org/show_bug.cgi?id=1577584
2022-05-26 03:59:21 -06:00
Garret Rieger
e00c7358a0
[subset] special case table presence check for hb_face_create_from_tables faces.
2022-05-25 22:39:00 +00:00
Garret Rieger
6a149a09e7
[subset] fix use of lazy static constructor.
2022-05-25 22:22:35 +00:00
Garret Rieger
d4c7939eb7
[subset] use a list of known tables instead of handled tables.
2022-05-25 22:11:32 +00:00
Garret Rieger
3472f73b79
[subset] also include no subset tables when guessing which tables are present.
2022-05-25 21:52:48 +00:00
Garret Rieger
9564d98739
[subset] fix subsetting of faces created via hb_face_create_for_tables.
...
Fixes #3609 .
2022-05-25 21:16:37 +00:00
Behdad Esfahbod
6010feeeb5
[varStore] Rename variable as per review
...
https://github.com/harfbuzz/harfbuzz/pull/3605
2022-05-24 09:01:02 -06:00
Behdad Esfahbod
3eb7eff487
Remove varstore cache use if HB_NO_VAR
2022-05-21 15:25:53 -06:00
Behdad Esfahbod
099482a37a
[ot-font] Cache v_advance varstore as well
2022-05-21 15:24:23 -06:00
Behdad Esfahbod
d9acc045f1
[VarStore] Sprinkle cache_t type around
...
It's available so no need to use void*.
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
da38312e42
[VarStore] Pepper cache with likely()
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
cf8f00e354
[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.
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
5336ba70f6
[HVAR] Cache VarStore region scalars
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
880f50f7e4
Refactor varstore cache
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
f2a2fb91a3
[GPOS] Cache VarStore region scalars
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
5fbc70c59b
[VarStore] Add cache API
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
05e82aa12e
[ft] Add missing lock to kerning function
2022-05-20 17:36:59 -06:00
Behdad Esfahbod
4ea2725704
[set/map] Expose hash API publicly
...
New API:
+ hb_set_hash()
+ hb_map_hash()
2022-05-20 13:19:48 -06:00
Behdad Esfahbod
2e186d9f24
[buffer] Improve hash function of segment_properties_t
2022-05-20 13:19:48 -06:00
Khaled Hosny
aee123fc83
4.3.0
2022-05-20 21:07:25 +02:00
Behdad Esfahbod
975a5f9194
[array] Use hb_memcmp instead of memcmp
...
Fixes ubsan error.
2022-05-20 12:34:49 -06:00
Behdad Esfahbod
55804e8d68
[hb-ft] Minor rearrange of struct members
...
To make clear what members the lock protects.
2022-05-20 11:40:44 -06:00
Garret Rieger
cbf8f44c9b
[subset-perf] swap instead of copying vertice's when reordering during sort.
2022-05-20 09:41:18 -06:00
Garret Rieger
b32ca2a292
[subset-perf] remove sort_kahn from repacker.
...
Without an optimized FIFO queue implementation it's nearly as slow as the now optimized sort_shortest_distance.
2022-05-20 09:41:18 -06:00
Behdad Esfahbod
4266cf3be2
[array] Specialize operator== for bytes_t and ubytes_t
2022-05-19 18:16:54 -06:00
Behdad Esfahbod
6eaa22e9d7
[serialize] Reduce link_t size from 16 to 12
2022-05-19 18:16:54 -06:00
Behdad Esfahbod
30ba9a39e2
[vector] Add emplacing push implementation
2022-05-19 18:16:48 -06:00
Garret Rieger
73b8360dcf
[subset] fix fuzzer found underflow when heap push fails.
...
Fixes https://oss-fuzz.com/testcase-detail/5148625505746944 .
2022-05-19 17:02:34 -06:00
Behdad Esfahbod
f1bf14ea89
Revert "[set] Cache hash value"
...
This reverts commit 44952bcc25
.
While we investivate https://github.com/harfbuzz/harfbuzz/issues/3599
2022-05-19 16:49:27 -06:00
Behdad Esfahbod
b4d1ec310c
[algs] Declare coerce() as constexpr
2022-05-19 16:06:21 -06:00
Behdad Esfahbod
2fdb7616f5
[map Further adjust hash function
2022-05-19 16:00:43 -06:00
Behdad Esfahbod
01fc90b68c
[map] Adjust hash function
2022-05-19 16:00:06 -06:00
Behdad Esfahbod
a47b0aebf5
[vector] Fix remove() implementation
...
test-vector under valgrind happy now.
2022-05-19 15:52:16 -06:00
Behdad Esfahbod
3bd755c32d
[test-vector] Test remove()
...
Currently buggy. Valgrind confirms.
2022-05-19 15:51:18 -06:00
Behdad Esfahbod
58f848daa8
[set/map] Adjust hash function return type
2022-05-19 15:43:19 -06:00
Behdad Esfahbod
6544fc284f
[vector] Add further copy implementation
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
c19f116952
[meta] Remove non-existing gcc4 trait implementation
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
679b900e9b
[meta] Fix gcc4 trait implementation
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
fb77f48ffd
[vector] Optimize vector copy
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
28b44ac46a
[set] Switch set copy to vector operator =
...
Slows it down currently.
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
37d3275dec
[test-vector] Enable disabled test
...
This seems to work already.
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
544ffb913e
[set] Adjust grow_vector condition
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
0623aa598b
[benchmark-set] Add benchmark for set copy
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
44952bcc25
[set] Cache hash value
2022-05-19 14:02:48 -06:00
Behdad Esfahbod
844ac328e4
[set] Fix hb_set_t hash stability
2022-05-19 13:54:31 -06:00
Behdad Esfahbod
2d0b1248b2
[test-map] Test hb_set_t hash stability
...
Fails currently.
2022-05-19 13:53:53 -06:00
Behdad Esfahbod
561e02fefb
[map] Make hb_map_t hashable
2022-05-19 13:41:53 -06:00
Behdad Esfahbod
ad17699089
[map] Add is_equal() / towards making hb_map_t hashable
...
New API:
+ hb_map_is_equal()
2022-05-19 13:36:12 -06:00
Behdad Esfahbod
14a24d8e3f
[vector] Make hb_vector_t hashable
2022-05-19 13:04:06 -06:00
Behdad Esfahbod
124f9aeb9b
[set] Make hb_set_t hashable
2022-05-19 12:58:02 -06:00
Garret Rieger
3ab2c7935f
[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.
2022-05-19 12:37:28 -06:00
David Corbett
e3e685e5ee
[ot-tags] Fix `min_subtag_len` calculations
2022-05-18 18:30:01 -06:00
Garret Rieger
0b1c2ff96a
[subset-perf] Remove extra map lookup in ClassDef subset methods.
2022-05-18 18:25:36 -06:00
Garret Rieger
13ace77f1d
[subset-perf] Use glyph_map instead of set in ClassDefFormat.
2022-05-18 18:25:36 -06:00
Garret Rieger
adae2f2272
[subset-perf] Cache a glyph map for gsub.
...
This allows us in some cases to avoid using glyph_set_gsub as a filter.
2022-05-18 18:25:36 -06:00
Behdad Esfahbod
202e6c4699
[subset] Remove unnecessary test
2022-05-18 17:12:43 -06:00
Behdad Esfahbod
cedf739646
Add some commented-out code
2022-05-18 16:53:26 -06:00
Behdad Esfahbod
6b62c10f02
[priority-queue] Remove old init/fini
2022-05-18 16:27:54 -06:00
Behdad Esfahbod
bff8248a9d
[repacker] Pre-alloc vertices
2022-05-18 16:25:03 -06:00
Behdad Esfahbod
39a424caf0
[priority-queue] Optimize heap access
2022-05-18 16:19:44 -06:00
Behdad Esfahbod
9308659fd7
[priority-queue] Optimize swap()
2022-05-18 16:14:25 -06:00
Behdad Esfahbod
c7317ef761
[repacker] Avoid destroying and recreating objects
2022-05-18 16:03:41 -06:00
Behdad Esfahbod
864e09a0c4
[repacker] Reuse allocated vector
2022-05-18 15:59:29 -06:00
Behdad Esfahbod
ca77f16470
[repacker] Remove unnecessary vector .fini() calls
2022-05-18 15:55:49 -06:00
Behdad Esfahbod
4cfc2d668e
[subset] Use a std::move on set_t when feasible
2022-05-18 15:32:19 -06:00
Behdad Esfahbod
1f578b5a32
[set] Add pre-allocation internal API
2022-05-18 15:25:00 -06:00
Garret Rieger
48dfbd54a3
[subset] minor cleanup.
2022-05-18 15:24:54 -06:00
Garret Rieger
482c6e5dc4
[subset-perf] Speed up Coverage::serialize by caching iterator.
2022-05-18 15:24:54 -06:00
Behdad Esfahbod
14b18725f0
In Coverage::iter_t, assume iterators are from same Coverage object
...
No need to support otherwise.
2022-05-18 15:14:32 -06:00
Behdad Esfahbod
27141735c3
[subset] Add Coverage::__end__ implementation
2022-05-18 15:12:49 -06:00
Behdad Esfahbod
c476f58adb
[subset] Write CoverageFormat2::intersects_coverage() as bsearch()
2022-05-18 14:20:23 -06:00
Behdad Esfahbod
63c6695108
[ot-layout] Cosmetic
...
The implementation of HBUINT16 operator == is slower than just
comparing to ints.
2022-05-18 13:53:52 -06:00
Behdad Esfahbod
777debd748
[subset] Rewrite CoverageFormat2::intersects as dagger
2022-05-18 13:46:06 -06:00
Behdad Esfahbod
cf5001fac7
[subset] Optimize CoverageFormat2::intersected_coverage_glyphs
2022-05-18 13:38:29 -06:00
Behdad Esfahbod
6f37c20798
[subset] Minor rewrite in CoverageFormat2::serialize()
2022-05-18 13:25:42 -06:00
Behdad Esfahbod
e91863b717
[subset-cff] Pre-size map in subr_remap_t::create()
2022-05-18 12:39:55 -06:00
Behdad Esfahbod
ce60462173
[subset-plan] Pre-size maps in _create_old_gid_to_new_gid_map()
2022-05-18 12:34:27 -06:00
Behdad Esfahbod
f82ee17a75
[map] Pre-size map in constructor if we can
2022-05-18 12:19:49 -06:00
Behdad Esfahbod
b5aa8a27ea
[subset-cff] Cosmetic
2022-05-18 11:58:58 -06:00
Behdad Esfahbod
0b201623f5
[subset-cff] Fix previous commit
...
Oops!
2022-05-18 11:58:22 -06:00
Behdad Esfahbod
4792309265
[subset-cff] Access vector directly
2022-05-18 11:54:08 -06:00
Behdad Esfahbod
7c86f2e763
[subset-cff] Pre-alloc out buffer
2022-05-18 11:45:27 -06:00
Behdad Esfahbod
0761e7cdfd
[subset-cff] Avoid resetting buffer as encoder does
2022-05-18 11:38:25 -06:00
Behdad Esfahbod
71aa10a394
[subset-cff] Manually grow vector to avoid memset overhead
2022-05-18 11:37:24 -06:00
Behdad Esfahbod
f455cc53fd
[subset-cff] Reuse buffer allocation
2022-05-18 11:31:55 -06:00
Behdad Esfahbod
e24797aeac
[ot-tags] Follow-up to previous commit
...
Part of https://github.com/harfbuzz/harfbuzz/issues/3591
2022-05-18 11:10:10 -06:00
Behdad Esfahbod
f5d619be79
[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
2022-05-18 11:04:52 -06:00
Behdad Esfahbod
9c64bda21d
[ot-tag] Whitespace
2022-05-17 17:31:18 -06:00
Behdad Esfahbod
3df8017e9b
[ot-tag] Optimize subtag_matches() more
2022-05-17 17:29:39 -06:00
Behdad Esfahbod
7f6e8c5536
[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
2022-05-17 16:58:35 -06:00
Behdad Esfahbod
27c11405a2
[ot-tag] Optimize subtag_matches
...
Part of https://github.com/harfbuzz/harfbuzz/issues/3591
2022-05-17 16:51:51 -06:00
Behdad Esfahbod
a07d818597
[ot-tag] Add a likely() to the cache hit case
2022-05-17 16:46:10 -06:00
Behdad Esfahbod
dfca47f419
[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
2022-05-17 16:21:02 -06:00
Behdad Esfahbod
909f00ac6e
[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
2022-05-17 15:51:41 -06:00
Behdad Esfahbod
c460cf74ce
[ot-tags] Cosmetic
2022-05-17 15:30:11 -06:00
Behdad Esfahbod
1c8226ed14
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.
2022-05-17 15:28:50 -06:00
Behdad Esfahbod
c1f4b57c06
[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
2022-05-17 15:19:40 -06:00
Behdad Esfahbod
dde48d78c1
Fix compiler warning
2022-05-17 15:07:49 -06:00
Behdad Esfahbod
15be0deda0
[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
2022-05-17 14:57:08 -06:00
Behdad Esfahbod
dd3c858f84
[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
2022-05-17 14:28:28 -06:00
Behdad Esfahbod
9baccb9860
[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
2022-05-17 13:34:34 -06:00
Behdad Esfahbod
fb413f5202
[subset/cff] Don't use bitfields for hot bools
...
The struct has room because of alignment, and these bools are hot.
2022-05-16 17:38:18 -06:00
Behdad Esfahbod
a4d98b63ea
[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
2022-05-16 17:38:18 -06:00
Behdad Esfahbod
b87f48e948
[cff1] get_sid() move bounds check into each implementation
2022-05-16 17:38:18 -06:00
Behdad Esfahbod
e1e359b4da
[cff1] Tighten up range_list_t a bit
2022-05-16 16:36:28 -06:00
Behdad Esfahbod
3fbac0942d
[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
2022-05-16 16:36:28 -06:00
Behdad Esfahbod
b58bfd9818
[font] Minor move of code to silence gcc-12 warning
...
See mailing list discussion.
2022-05-16 11:21:45 -06:00
Behdad Esfahbod
602e0ca79d
[cff] Minor restructure of struct
...
Surprisingly this shows tiny benchmark improvement consistently.
2022-05-16 10:14:34 -06:00
Behdad Esfahbod
acdab17ed3
[cff] Cosmetic in parsed_values_t
2022-05-13 14:14:36 -06:00
Behdad Esfahbod
b46c7faa9c
[cff] Check buf_len, not buf
...
Ouch!
2022-05-13 14:02:54 -06:00
Garret Rieger
19a8db8545
[subset] fix potential integer overflow in gname_t::cmp.
2022-05-13 13:55:39 -06:00
Behdad Esfahbod
2d2f66e1a3
[cff-common] In INDEX, return empty bytes if length is zero
...
Before it was possible to return non-null arrayZ.
2022-05-13 13:53:17 -06:00
Behdad Esfahbod
a2f132f1fc
[cff] Check glyph-name's length, not arrayZ
...
As the latter can be non-null while still zero-length.
2022-05-13 13:49:39 -06:00
Thomas Devoogdt
c657c4e1f8
[meta] fix type traits on gcc 4.9 #3526
...
Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
2022-05-13 11:26:12 -06:00
Behdad Esfahbod
e61234c5f7
[vector] Add tests for move constructor/assignment
2022-05-12 13:20:10 -06:00
Behdad Esfahbod
7fa580bc4f
[map] Fix map copy/move constructors to actually work
...
Ouch!
2022-05-12 13:05:32 -06:00
Behdad Esfahbod
a09dd87ca3
[set] Fix set copy/move constructors to actually work
...
Ouch!
2022-05-12 12:58:07 -06:00
Behdad Esfahbod
76fc27713f
[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
2022-05-12 12:14:07 -06:00
Behdad Esfahbod
c81198b5bc
[set] Tweak move operators a bit
...
Should be equivalent.
2022-05-12 12:14:02 -06:00
Behdad Esfahbod
175319cd89
[gsubgpos] Clean up OT::ClassDefFormat2::intersected_class_glyphs 0 case
2022-05-11 13:47:17 -06:00
Behdad Esfahbod
137af3612b
[gsubgpos] Simplify OT::ClassDefFormat2::intersected_class_glyphs()
2022-05-11 13:39:30 -06:00
Behdad Esfahbod
3261e05bdb
[subset] Optimize ClassDef1::intersected_class_glyphs() for class0
2022-05-11 13:16:31 -06:00
Behdad Esfahbod
c78d8ba60b
[subset] Allocate same size as source table for GSUB/GPOS/name
2022-05-11 13:05:41 -06:00
Behdad Esfahbod
2e7f1ae48f
[subset] Use vector.allocated size instead of tracking buf_size
2022-05-11 12:52:27 -06:00
Behdad Esfahbod
f08537963b
[cff-subset] Pre-alloc vector for operator decoding
2022-05-11 12:14:49 -06:00