Matthias Clasen
89bd7f64ae
[hb-cairo] Small docs fixes
2022-12-29 10:09:50 -07:00
Khaled Hosny
c9206df166
[hb-cairo] Fix warnings
2022-12-29 10:07:59 -07:00
Khaled Hosny
723e7a48e2
[docs] Small fixes
2022-12-29 15:49:21 +02:00
Matthias Clasen
67456a7a02
[ft] Some more docs clarifications
2022-12-28 11:14:12 -07:00
Matthias Clasen
c612d068e8
[ft] Clarify docs around faces too
2022-12-28 11:14:12 -07:00
Matthias Clasen
4dc955bb46
[ft] Clarify docs
...
Add some clarifications on what fonts these apis
work with.
2022-12-28 11:14:12 -07:00
Matthias Clasen
ef20b5e66f
Typo fix
2022-12-28 08:51:27 -05:00
Behdad Esfahbod
81c04b0c21
[cairo] Add separate x/y scale factors
2022-12-27 17:46:25 -07:00
Behdad Esfahbod
50b7fff0c6
[cairo] Fix text_to_glyphs scale factor
2022-12-27 17:37:42 -07:00
Behdad Esfahbod
8f62b8c6bb
[cairo] Fix cluster conversion
2022-12-27 17:26:39 -07:00
Behdad Esfahbod
326db329f8
[directwrite] Simplify delete
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3981
2022-12-27 14:38:17 -07:00
Behdad Esfahbod
7b0f9abc89
[paint] Add back "remote-control" API
...
This reverts commit f146299a40
.
2022-12-27 12:38:49 -07:00
Behdad Esfahbod
43b0364eda
[paint] Document composition modes
2022-12-27 12:29:53 -07:00
Behdad Esfahbod
ec9e8a5993
[paint] Document extend modes.
2022-12-27 12:22:56 -07:00
Behdad Esfahbod
fa3fa9422d
[cairo] Doc
2022-12-27 11:54:23 -07:00
Behdad Esfahbod
bbf6f42d3b
[cairo] TODO
2022-12-27 11:50:06 -07:00
Behdad Esfahbod
f9fc13287b
[hb-cairo] Return hb_font_t* from init-func
2022-12-27 11:08:55 -07:00
Matthias Clasen
d18903e443
Add def files for libharfbuzz-cairo
2022-12-27 11:00:23 -07:00
Behdad Esfahbod
d88787b6ca
[cairo] Add func to init fonts on creation
...
To set, for example, font-funcs.
2022-12-27 10:59:17 -07:00
Behdad Esfahbod
c52bff2d61
[cairo] Hide internal symbols
2022-12-27 10:42:13 -07:00
Behdad Esfahbod
34aa8b0148
[cairo] Add to library tests
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
5fdfe6ae5d
[cairo] Use hb_qsort
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
21573265e9
[cairo] More namespacing
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
84d1b00cd4
[cairo] More namespacing
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
8f16e98c1b
[cairo] Namespace types
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
488be52467
[cairo] Try fix msvc build
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
c652e8e1b7
[cairo] Docs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
23980d3cb2
[cairo] Docs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
f5fd46aa3d
[cairo] Docs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
36482b684b
[cairo] Err, utf8_clusters
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
48cb25dd36
[cairo] Implement (untested) text_to_glyphs callback
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
c38abcb3fb
[cairo] Add x,y args to get_glyphs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
847ed69547
[cairo] Reorder arguments of a call
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
726cfffc0d
[cairo] Doc fix
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
0fe0cdf066
[cairo] Document scale-factor business
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
4e3e879c1c
[cairo] Add [sg]et_scale_factor
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
186bfa99f5
[cairo] Make scale_factor a double
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
120419e180
[hb-view] Fix autotools build
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
650a46d919
[cairo] Fix autotools build
2022-12-26 17:01:08 -07:00
Matthias Clasen
b417ac8a19
Try to fix autotools build
2022-12-26 17:01:08 -07:00
Matthias Clasen
8d0e18b51d
[cairo] More details in the docs
...
Mention slant as well.
2022-12-26 17:01:08 -07:00
Matthias Clasen
30605e09b9
[cairo] Mention variations in the docs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
c4f7563f81
[cairo] Fix build
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
7a52ac4bbe
[cairo] Set variations
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
4be4e017fc
[cairo] Make font immutable
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
70babda6ad
[cairo] docs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
1c67180d6d
[cairo] Add typed destroy funcs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
43da222e6d
[cairo] Rename
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
cf001f6ec7
[cairo] Add constructor from hb_face_t
2022-12-26 17:01:08 -07:00
Matthias Clasen
2e897cc90b
Add a pc file for harfbuzz-cairo
2022-12-26 17:01:08 -07:00
Matthias Clasen
ddb52e4a30
[cairo] Add docs
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
dc2bf2664d
[cairo] Set scaled-font extents
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
d6ecda36bf
[cairo] Renames
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
ffa45f243c
[cairo] #ifdef HAVE_CAIRO
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
9e61fd7705
[hb-cairo] Lazy-load funcs thread-safe
2022-12-26 17:01:08 -07:00
Matthias Clasen
306645503d
Work on proper build integration
...
Install hb-cairo.h and define HB_HAS_CAIRO.
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
a7c2e839e1
[hb-cairo] Prefix internal methods
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
bb640d4031
[hb-cairo] Use nullptr instead of NULL
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
b3a3656683
[hb-cairo] Minor
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
3a11a09f54
[hb-cairo] Rename cairo_extend
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
20a50acc91
[hb-cairo] Make hb_cairo_glyphs_from_buffer public
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
bf52386cfa
[cairo] Silence warning
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
e594780e28
[hb-cairo] Some header tweaks
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
1ad24421a6
[hb-cairo] Rename files to C++
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
5c3da76a43
[hb-cairo] Change API again
...
We need to work with a hb-font for variations and font-funcs
to be fetched properly.
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
9f7538c260
[hb-cairo] Change API
2022-12-26 17:01:08 -07:00
Matthias Clasen
767bdd43a6
wip: Add libharfbuzz-cairo
...
This library will provide integration with cairo
for font rendering.
2022-12-26 17:01:08 -07:00
Behdad Esfahbod
c3a8c6bb8b
[paint] More docs
2022-12-26 15:38:24 -07:00
Behdad Esfahbod
ae208963df
Add hb-limits.hh
2022-12-26 12:30:39 -07:00
Matthias Clasen
5f5fa4b219
[ft-colr] Limit the size of the graph we follow
...
This adds the same check that we already do in
the native implementation.
2022-12-26 12:20:04 -07:00
Matthias Clasen
ea2892c30e
[paint] Limit the size of the graph we follow
...
In addition to checking the depth, also count
the number of edges in the graph we've followed,
and give up after 1024.
2022-12-26 12:20:04 -07:00
Matthias Clasen
5dd69d81b0
Fix hb_ot_color_has_paint
...
We must no access v1 data without checking that
version is 1. A bit of a trap.
2022-12-26 11:29:26 -07:00
Matthias Clasen
b8f2281c6c
Add hb_ot_color_glyph_has_paint
2022-12-26 11:29:26 -07:00
Behdad Esfahbod
79c5bb92ce
[ft] Work around a freetype bug
2022-12-24 12:57:33 -07:00
Behdad Esfahbod
fa1cf15e5d
[ft-colr] Whitespace
2022-12-24 11:56:23 -07:00
Behdad Esfahbod
5343eac161
[ft-colr] Minor use context instead of direct access
2022-12-24 11:53:43 -07:00
Behdad Esfahbod
0b6468b820
[ft-colr] Minor
2022-12-24 11:50:57 -07:00
Behdad Esfahbod
1c595ec17f
[paint-extents] Lazy-load paint_extents funcs
2022-12-24 11:40:44 -07:00
Behdad Esfahbod
4280ed290d
[paint-extents] Add missing file
2022-12-24 11:38:32 -07:00
Behdad Esfahbod
2c0ab34d03
[paint-extents] Lazy-load draw-funcs
2022-12-24 11:37:59 -07:00
Behdad Esfahbod
11036ed71e
[paint] Add hb-paint-extents.cc
2022-12-24 11:30:45 -07:00
Behdad Esfahbod
959996d709
[paint-extents] Namespace
2022-12-24 11:22:16 -07:00
Behdad Esfahbod
62bd26dda3
[ft] Pick largest bitmap size
2022-12-24 11:01:32 -07:00
Behdad Esfahbod
d35dff020f
[cbdt] Remove extra clip
2022-12-24 10:59:17 -07:00
Behdad Esfahbod
f70c5d6f0d
[paint] Continue returning bool from paint_image()
...
6ccbfabd4f (commitcomment-94127307)
2022-12-24 10:56:06 -07:00
Behdad Esfahbod
6ccbfabd4f
[paint] Return bool from paint_image()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3974
2022-12-24 10:44:25 -07:00
Behdad Esfahbod
346331d375
[ft] Fix negative xscale
2022-12-24 10:35:26 -07:00
Behdad Esfahbod
9376e7a930
[ft] Remove stale TODO
2022-12-24 10:31:30 -07:00
Behdad Esfahbod
a7fd48c408
[ft] Comment
2022-12-24 10:28:41 -07:00
Behdad Esfahbod
bb45ba2f9f
[ft] Fix negative y-scale
2022-12-24 10:25:43 -07:00
Behdad Esfahbod
aba2063c22
[paint-extents] Comments
2022-12-24 10:15:47 -07:00
Behdad Esfahbod
988ca459f3
[paint-extents] Minor refactor
2022-12-24 10:12:35 -07:00
Behdad Esfahbod
f8bf98798d
[paint-extents] Refactor code
2022-12-24 10:11:04 -07:00
Matthias Clasen
4816be9ab5
Work around cairo limitations
...
If we just draw an image, cairos recording surface
complains that it is unbounded. Its not true of course.
To make things work, clip to the extents.
2022-12-24 09:16:29 -05:00
Behdad Esfahbod
f7eebc397c
[paint-extents] Shorten enum addressing
2022-12-23 18:52:46 -07:00
Behdad Esfahbod
0110bdb3ea
[paint-extents] Streamline extents_t more
2022-12-23 18:17:05 -07:00
Behdad Esfahbod
9f3e050b99
[paint-extents] Streamline extents_t
2022-12-23 18:15:21 -07:00
Behdad Esfahbod
0d129ae308
Fix warning
2022-12-23 18:00:38 -07:00
Behdad Esfahbod
73e48b9357
[colr] Push clipbox or computed clip
2022-12-23 17:55:09 -07:00
Behdad Esfahbod
02684751bd
[paint-extents] Clean up
2022-12-23 17:33:13 -07:00
Behdad Esfahbod
dbea503a38
[colr] Return true extents
2022-12-23 17:28:46 -07:00
Behdad Esfahbod
f9c2e30e01
[paint-extents] Better handle empty glyphs
2022-12-23 17:13:35 -07:00
Matthias Clasen
885dbcfba0
Skip empty outlines
2022-12-23 19:07:32 -05:00
Behdad Esfahbod
bd61e645ff
[paint-extents] Use hb_min/hb_max
2022-12-23 16:59:12 -07:00
Behdad Esfahbod
56a48f8b0a
[paint] Don't use extents in hb-view
...
Let the clipbox do its magic. Currently works for ft backend only.
2022-12-23 16:45:04 -07:00
Matthias Clasen
79229cea17
Get outline extents manually
2022-12-23 18:41:24 -05:00
Behdad Esfahbod
47c896f004
[paint-extents] Hook it up, kinda
2022-12-23 16:25:36 -07:00
Behdad Esfahbod
7fbaaebe8b
[paint-extents] Finish off
...
Untested and unused.
2022-12-23 15:57:05 -07:00
Behdad Esfahbod
8ca78d1520
[paint-extend] More
2022-12-23 15:21:48 -07:00
Behdad Esfahbod
23a2d4dbab
[paint-extents] More
2022-12-23 15:11:45 -07:00
Behdad Esfahbod
d7435b1009
[paint-extents] Flesh out more
2022-12-23 15:05:30 -07:00
Behdad Esfahbod
c37a1eadef
[paint-extents] Flesh out some more
2022-12-23 14:57:12 -07:00
Behdad Esfahbod
268d8b7ded
[paint-extents] Start out
2022-12-23 14:45:56 -07:00
Behdad Esfahbod
d9875ddc9d
[ft-colr] Add depth counter
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
583f010b05
[ft] Move lock only around clip_glyph
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
2762903909
[ft-colr] Minor
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
3a1385f019
[ft-colr] Simplify color-stop callback
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
1cc3b10008
[ft-colr] Ifdef build for older freetype
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
882c2bca2d
[ft-colr] Add a paint context
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
7a4b4c64f2
[ft-colr] Minor macro
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
c453c2fce9
[ft-colr] Fix color-stop iteration
2022-12-23 13:37:59 -07:00
Matthias Clasen
bbb89e62aa
[paint] Document color lines as transient
...
Just so people don't get ideas.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
15582d5fc1
[ft-colr] Apply slant to clipbox
2022-12-23 13:37:59 -07:00
Matthias Clasen
7abd5dcf10
[ft-paint] Fix handling of colorstop iters
2022-12-23 13:37:59 -07:00
Matthias Clasen
393bab4ba1
[ft-paint] Apply ClipBox to all glyphs
2022-12-23 13:37:59 -07:00
Matthias Clasen
c11ae85cbf
[ft-paint] Apply root transform
2022-12-23 13:37:59 -07:00
Matthias Clasen
7fc3fdac76
[ft-paint] Optimize away some transforms
2022-12-23 13:37:59 -07:00
Matthias Clasen
586d1758c1
[ft-paint] Fix an oversight
2022-12-23 13:37:59 -07:00
Matthias Clasen
092637f94c
[ft-paint] Fix rounding
2022-12-23 13:37:59 -07:00
Matthias Clasen
fe08e956e0
[ft-paint] Fix a case of x/y confusion
2022-12-23 13:37:59 -07:00
Matthias Clasen
0d5256e5a7
[ft-paint] Fix some fixed->float conversions
2022-12-23 13:37:59 -07:00
Matthias Clasen
07ba5be393
[paint] Documentation tweaks
2022-12-23 13:37:59 -07:00
Matthias Clasen
21f78c8774
[paint] Document that colors are unpremultiplied
...
And mention that gradient interpolation must happen
in premultiplied space.
2022-12-23 13:37:59 -07:00
Matthias Clasen
b6e98cf758
[colr] Add more docs
...
State explicitly that palette entries are
unpremultipled, and link to the spec.
2022-12-23 13:37:59 -07:00
Matthias Clasen
a634f6b486
[colr] Add more docs
...
State explicitly that palette entries are
unpremultipled, and link to the spec.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
a02c2a911c
[ft-paint] Apply alpha correctly
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
6ebcc9d2e1
[ft-paint] Hook up gradients
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
fe4e9bd930
[colr] Add public vtable for hb_color_line_t
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
7c9e42ed92
[colr] Fix transform hell
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
569d5b436c
[ft-paint] Remove dead code
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
cfdc34b44d
[ft-paint] Implement FT_COLR_PAINTFORMAT_SKEW
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
64cf17ec8b
[ft-paint] Fix center translation
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
ddbe4e52ec
[ft-paint] Implement FT_COLR_PAINTFORMAT_ROTATE
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
16598e024b
[ft-paint] Default
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
a0f7f9e61c
[ft-paint] Implement FT_COLR_PAINTFORMAT_COMPOSITE
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
0ec201446b
[ft] Implement FT_COLR_PAINTFORMAT_COLR_GLYPH
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
ac2682c610
[ft] Start of a COLRv1 renderer
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
e2546f5ab0
[ft] Add hb-ft-colr.hh
2022-12-23 13:37:59 -07:00
Matthias Clasen
5bd3c07b54
[colr] Don't access baseGlyphList unless v1
...
This was showing up sporadic crashes due to
invalid reads.
2022-12-23 13:37:59 -07:00
Matthias Clasen
6909701b36
[paint] Update docs
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
381d410b1e
[paint] Add HB_PAINT_IMAGE_FORMAT_BGRA and use it in hb-ft
...
Now hb-ft can render color emoji as well.
Just left COLRv2.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
c5f903872f
[paint] Add bitmap width/height to paint_image callback
...
Such that we can add raw data as well.
2022-12-23 13:37:59 -07:00
Matthias Clasen
eef47f2379
[paint] Fix the docs
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
3c972867b9
More s/hb_font_get_glyph_shape/hb_font_draw_glyph/
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
72a169c846
[ft] Paint COLRv0 glyphs
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
bb807f47d2
[ft] Implement paint_glyph() for outline glyphs
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
91c880503e
[ft] Use new name for draw API
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
c27eefec1d
Revert "Drop the deprecation"
...
This reverts commit 3904e66777339a3d420ece1c2b7d550949aa3946.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
f3985d9482
[paint] Fix drawing non-color glyphs
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
237955dffc
[paint] Add slant to image() callback
...
And slant images in hb-view.
2022-12-23 13:37:59 -07:00
Matthias Clasen
c221933977
[paint] Preserve foreground information
2022-12-23 13:37:59 -07:00
Matthias Clasen
f146299a40
[paint] Drop unnecessary api
2022-12-23 13:37:59 -07:00
Matthias Clasen
6387004cad
[paint] Simplify api
...
Drop the hb_paint_context_t struct from the API, and
only pass the font where we need it.
2022-12-23 13:37:59 -07:00
Matthias Clasen
71bd5a0dfc
[paint] Resolve colors
...
We don't need to pass the index/alpha pairs to
client callbacks, and can just resolve the colors
internally.
Update test results.
2022-12-23 13:37:59 -07:00
Matthias Clasen
9be01b6bff
[paint] Pass hb_paint_context_t along
...
Replace the font argument with a hb_paint_context_t
that carries the font, the palette index and the
foreground color.
The hb_font_paint_glyph() api now takes the palette
index and the foreground color as extra arguments.
Update all callers and regenerate test results.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
6c71c530ca
[paint] Rename hb_paint_context_t to hb_ot_paint_context_t
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
8495395397
[paint] Fix slant
2022-12-23 13:37:59 -07:00
Matthias Clasen
97224f3b63
[paint] Pass font to all callbacks
...
This will lead to easier implementations.
At the same time, we change the push_clip_glyph
callback to use the font as-is, no unscaling needed.
Update all callers and expected test results.
2022-12-23 13:37:59 -07:00
Matthias Clasen
32ce29f99e
[font] Move hb_font_t typedef
...
This is needed to avoid circular header dependencies.
2022-12-23 13:37:59 -07:00
Matthias Clasen
8364d9130f
Document hb_font_set_draw_glyph_func
2022-12-23 13:37:59 -07:00
Matthias Clasen
a20999b9df
[font] Fix a few documentation mistakes
2022-12-23 13:37:59 -07:00
Matthias Clasen
2333a566ed
Drop the deprecation
...
No need to drop hb_font_get_glyph_shape, just
because hb_font_draw_glyph does the same.
Its fine to keep both around.
2022-12-23 13:37:59 -07:00
Matthias Clasen
14b026ff86
[draw] Add hb_font_draw_glyph
...
hb_font_draw_glyph(), hb_font_draw_glyph_func_t and
hb_font_funcs_set_draw_glyph_func() are just alternative
names for hb_font_get_glyph_shape and friends, to better
align with hb_font_paint_glyph.
2022-12-23 13:37:59 -07:00
Matthias Clasen
08da126523
[docs] Linkify links
2022-12-23 13:37:59 -07:00
Matthias Clasen
9437f719a7
[paint] Document hb_paint_extend_t
2022-12-23 13:37:59 -07:00
Matthias Clasen
3a2634e27c
[paint] Document hb_font_paint_glyph_func_t
2022-12-23 13:37:59 -07:00
Matthias Clasen
0f287e75ec
[paint] Rename hb_font_get_glyph_paint_func_t
...
The 'get' was just there due to implementation
choices. Work around that and call the vfunc
what it should be: hb_font_paint_glyph_func_t.
2022-12-23 13:37:59 -07:00
Matthias Clasen
ddd2039265
[paint] Improve the docs
2022-12-23 13:37:59 -07:00
Matthias Clasen
3a219cfa6a
[config] Make HB_LEAN imply HB_NO_PAINT
2022-12-23 13:37:59 -07:00
Matthias Clasen
0ef2dc9be5
Drop a TODO
...
This was addressed in 61bd602791d801
2022-12-23 13:37:59 -07:00
Matthias Clasen
96cda3886c
[paint] Clarify docs
...
Spell out where the different datas originate.
2022-12-23 13:37:59 -07:00
Matthias Clasen
0800d1879c
Try to fix autotools build
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
5ac218865a
[paint] A doc fix
2022-12-23 13:37:59 -07:00
Matthias Clasen
7c12db46ff
Try to fix msvc build
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
5d1fc9ee9d
[paint] Fix annotations
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
ee2204469e
[paint] Add get_empty / [sg]et_user_data
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
21a9db875e
[draw] Add get_empty / [sg]et_user_data
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
9a7422c5fb
[font] Minor doc fix
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
a9b37206eb
[font] Minor rename
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
815544a1f7
[font] Adapt paint_glyph to parent transform
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
85917e5b21
[paint] Fix docs
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
14bf3aaa8d
[colr] Make paint_image work again
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
7accbe97d8
[util] Fix argument order and root transform PNGs
2022-12-23 13:37:59 -07:00
Matthias Clasen
f1f8d1e855
Small documentation addition
2022-12-23 13:37:59 -07:00
Matthias Clasen
021618e91a
[colr] Add hb_ot_color_has_paint
...
This is a counterpart to hb_ot_color_has_layers
for COLRv1 data.
2022-12-23 13:37:59 -07:00
Matthias Clasen
63fcb26c9b
Add some more docs
2022-12-23 13:37:59 -07:00
Matthias Clasen
451414a27e
[paint] Documentation fixes
2022-12-23 13:37:59 -07:00
Matthias Clasen
0c77f1d9ab
[paint] Documentation tweaks
2022-12-23 13:37:59 -07:00
Matthias Clasen
0a2f3673b9
[paint] Use tags for image formats
...
This fits better with the rest of the
HarfBuzz API.
2022-12-23 13:37:59 -07:00
Matthias Clasen
4c728e952b
[colr] Add a todo
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
4b0285bae6
[colr] Use slant_xy
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
b9314400ec
[colr] Hook up color-line variation
2022-12-23 13:37:59 -07:00
Matthias Clasen
a935e4b0c2
[paint] Add synthetic slant to root transform
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
edf2738263
[colr] Try fixing bot build
...
I don't get the error. Let's see.
../../src/harfbuzz/src/hb-ot-color-colr-table.hh:574:66: error: incomplete definition of type 'OT::NoVariable<OT::ColorLine<OT::NoVariable>>'
2022-12-23 13:37:59 -07:00
Matthias Clasen
686e627bdf
[paint] Set up root transform in one place
...
Instead of spreading this in all the tables,
make hb_paint_funcs_t provide a push/pop_root_transform
that does all the setup.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
c6dd56cc64
[colr] Simplify color-stop handling
2022-12-23 13:37:59 -07:00
Matthias Clasen
485ba9beb3
[paint] Spell out rectangle in the API
...
No need to abbreviate this.
2022-12-23 13:37:59 -07:00
Matthias Clasen
37f3f0fcc2
[paint] Change the image callback
...
Instead of passing the glyph ID, give
it the image blob, a mimetype, and
glyph extents (if available).
Update all callers.
2022-12-23 13:37:59 -07:00
Matthias Clasen
ea48d6c292
Move hb_glyph_extents_t definition
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
b722039c48
[colr] Simplify
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
452cfb9599
[colr] Simplify loop using iterators
...
Or complexify?!
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
601a596ca0
[paint] Fix include path
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
8a9069d55f
[colr] Fix radial gradient
...
Broke it when adding variations.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
e799c33bb5
[paint] Fix function prototype
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
1953d26a8a
[colr] Limit recursion depth
2022-12-23 13:37:59 -07:00
Matthias Clasen
378bbeea01
Add more docs
2022-12-23 13:37:59 -07:00
Matthias Clasen
6079173a52
Try paint_glyph for more tables
...
If the COLR table does not paint the glyph,
try SVG, CBDT and sbix too, before giving up
on color.
2022-12-23 13:37:59 -07:00
Matthias Clasen
e6c5a616aa
SVG Implement paint-glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
23c60fd9b2
sbix: Implement paint_glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
7996ae4c3d
CBDT: Implement paint glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
82e23f322a
paint: Add a paint-image callback
...
This will be used for image blobs like pngs and svgs.
FIXME: nail down and document sizing.
2022-12-23 13:37:59 -07:00
Matthias Clasen
56b02b6599
Update the docs
...
Mention that the color index will always be 0xFFFF
when using hb_paint API with fonts that don't have
color palettes.
And add an outline about which kinds of glyphs
require which callbacks.
2022-12-23 13:37:59 -07:00
Matthias Clasen
9461ab7088
Try paint_glyph for more tables
...
If the COLR table can't paint the glyph,
try glyf, cff1 and cff2 too.
2022-12-23 13:37:59 -07:00
Matthias Clasen
3e39dd492b
cff2: Implement paint_glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
df89b52130
cff1: Implement paint_glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
2edd771cf5
glyf: Implement paint_glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
0b33b35eb0
COLRv1: Return bool from paint_glyph
...
This will let hb_ot_font_paint_glyph() try
multiple tables in turn.
2022-12-23 13:37:59 -07:00
Matthias Clasen
0d890061d1
Rename 'solid' to 'color'
...
'solid' does not really describe well what
the function does, and there is no strong
reason to stick 1:1 to the terminology used
in the spec.
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
46286275f7
[colr] More dispatch functionality
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
81f232afb5
[colr] Use dispatch machinery for paint_glyph context
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
a96300d42c
[colr] Hide internal symbols
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
b4cab86d94
Fix autotools build
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
0757519092
[colr] Add variation to rest of the paints
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
5bce005346
[colr] Flesh out variations for a few paints
2022-12-23 13:37:59 -07:00
Behdad Esfahbod
9d3440b742
[colr] Add variation infrastructure to paint_glyph
...
No paint applies variations yet.
2022-12-23 13:37:59 -07:00
Matthias Clasen
5c6329555e
Apply root transform
...
This commit applies scale, slant is still missing.
2022-12-23 13:37:59 -07:00
Matthias Clasen
5afca91ff2
Add some docs
2022-12-23 13:37:59 -07:00
Matthias Clasen
44c68594f1
Some docs
2022-12-23 13:37:59 -07:00
Matthias Clasen
d7c2eacf45
Handle COLRv0 layers in paint_glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
55ca6ed230
minor fixes
2022-12-23 13:37:59 -07:00
Matthias Clasen
1880e54753
Assorted fixes
2022-12-23 13:37:59 -07:00
Matthias Clasen
684df8a82a
add some todos
2022-12-23 13:37:59 -07:00
Matthias Clasen
a6f813b680
Implement hb_color_line_get_extend
2022-12-23 13:37:59 -07:00
Matthias Clasen
3937d6b0aa
Implement hb_color_line_t
2022-12-23 13:37:59 -07:00
Matthias Clasen
64f1b55d01
api fixes: use floats consistently
2022-12-23 13:37:59 -07:00
Matthias Clasen
627c857f8b
rename pop_group_and_composite
2022-12-23 13:37:59 -07:00
Matthias Clasen
c9350838c7
assorted fixes and changes
2022-12-23 13:37:59 -07:00
Matthias Clasen
42324aef2b
hb-paint: annotation fix
2022-12-23 13:37:59 -07:00
Matthias Clasen
8377341b28
wip: implement paint_glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
efe13a191d
fix introspection
2022-12-23 13:37:59 -07:00
Matthias Clasen
6a48ac42f4
COLR implementation
2022-12-23 13:37:59 -07:00
Matthias Clasen
71efa0dcf1
wip: hb_font_paint_glyph
2022-12-23 13:37:59 -07:00
Matthias Clasen
83d0a49f71
wip: hb-paint
2022-12-23 13:37:59 -07:00
Matthias Clasen
30c5402e3d
Make hb-features.h usable standalone
...
The intended use for hb-features.h is to
be included standalone, so we can't put
the single-include guards in here.
2022-12-23 12:33:28 -07:00
Behdad Esfahbod
d628aff9db
[ft] Apply slant in get_glyph_extents
2022-12-22 10:53:37 -07:00
Behdad Esfahbod
9a0ebd2b2a
[glyf] Fix slant-scaling in GlyphHeader too
2022-12-22 10:21:50 -07:00
Behdad Esfahbod
392463bff5
[cff] Fix extent rounding
...
I broke it in b0abbfd868
.
2022-12-22 08:34:01 -07:00
Behdad Esfahbod
897c102703
[font] Fix scale_glyph_extents
2022-12-22 08:15:01 -07:00
Behdad Esfahbod
9194e13e25
[font] Apply slant to glyph extents
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3952
hb-ft not fixed since doesn't use this code.
2022-12-22 07:32:29 -07:00
Behdad Esfahbod
b0abbfd868
[font] Centralize glyph-extents scaling
...
Needs more testing...
Some rounding was removed, namely in cff1 and cff2.
2022-12-22 07:32:15 -07:00
Behdad Esfahbod
97b8ada865
[varc] Reset component coordinates to that of the font
...
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/78
2022-12-21 19:52:20 -07:00
Garret Rieger
40342c9437
[subset] check for addition overflow in hdmx size calculation.
...
Fixes https://oss-fuzz.com/testcase-detail/4877336988483584 .
2022-12-21 16:44:06 -07:00
Garret Rieger
d77fca997e
[subset] when subsetting preprocessor fails, reference the returned face.
...
The caller of the method is expected to destroy the returned result.
2022-12-21 15:04:27 -07:00
Behdad Esfahbod
9b5b4da0e4
[varc] Set coordinates as absolute values
2022-12-20 09:58:04 -07:00
Behdad Esfahbod
80e68f09c5
[VarC] Change rotation/skew representation
...
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/77
2022-12-19 19:17:04 -07:00
Garret Rieger
1840b02e6a
[subset] Don't gate access to the table repacker.
...
Any table with an object graph should repack correctly.
2022-12-19 17:57:33 -07:00
Behdad Esfahbod
03a1685693
[VarC] Change representation of scale from 4.12 to 6.10
...
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/76
2022-12-19 17:12:09 -07:00
Matthias Clasen
c292e577ff
Fix a typo
2022-12-19 20:04:36 +02:00
Matthias Clasen
b795246fff
[draw] Clarify the docs
...
Disambiguate the origin of draw_data and user_data,
this had me confused a few times.
Fixes: https://github.com/harfbuzz/harfbuzz/issues/3955
2022-12-19 20:04:36 +02:00
Matthias Clasen
eddb408f9c
[draw] Small doc fix
2022-12-19 20:03:57 +02:00
Khaled Hosny
bc4c290b75
[doc] Workaround gtk-doc limitation with HB_DEPRECATED_FOR
...
See https://github.com/harfbuzz/harfbuzz/issues/3957#issuecomment-1356890525
2022-12-19 00:59:50 +02:00
Khaled Hosny
f9e1192d58
[ot-tag] Document two deprecated symbols
...
See https://github.com/harfbuzz/harfbuzz/issues/3957
2022-12-18 23:58:36 +02:00
Khaled Hosny
947e01a7c1
[subset] Suppress gtk-doc warning
2022-12-18 23:40:01 +02:00
Nirbheek Chauhan
7be06f6377
meson: Override dependencies to improve usage as a subproject
...
With this change, harfbuzz can be consumed as a subproject without
making any changes to the build files of a project. All you need to do
is provide a wrap file with a `[provide]` section:
https://mesonbuild.com/Wrap-dependency-system-manual.html#provide-section
This is also necessary because otherwise projects need to hard-code
the subproject name, which might be `harfbuzz` when using `wrap-git` or
`harfbuzz-6.0.0` when using `wrap-file` (to build from a release
tarball). This can cause conflicts between different subprojects that
consume harfbuzz differently.
Other projects like glib, cairo, pango, etc already do this.
2022-12-18 08:28:55 +02:00
Behdad Esfahbod
206957aee4
[COLR] Change recursion limit back to 128
2022-12-17 08:57:56 -07:00
Khaled Hosny
afcae83a06
6.0.0
2022-12-16 23:35:26 +02:00
Matthias Clasen
a98c6fdd92
Mark an argument as unused
2022-12-16 13:23:01 -07:00
Matthias Clasen
601d3806c9
COLRv1: Revamp extents variation
...
Try to do this a cleaner way.
2022-12-16 13:23:01 -07:00
Behdad Esfahbod
51a17201a7
[open-type] In to_float() take offset as float
2022-12-16 12:28:50 -07:00
Behdad Esfahbod
f252cf80e1
[open-type] Allow passing an offset to to_float()
2022-12-16 12:03:51 -07:00
Behdad Esfahbod
6ae35365f8
Fix build
2022-12-16 11:43:38 -07:00
Behdad Esfahbod
e957391efe
[colr] Add NoVariable::varIdxBase
2022-12-16 11:33:04 -07:00
Behdad Esfahbod
e06de98c36
[var-common] Make VarInstancer take an offset
2022-12-16 11:31:00 -07:00
Behdad Esfahbod
251f9f6213
[open-type] Add VarIdx::add()
2022-12-16 11:29:51 -07:00
Behdad Esfahbod
bf2ae3f0ca
[open-type] Add static_assert for NO_VARIATION
2022-12-16 11:26:24 -07:00
Matthias Clasen
d4496e6405
COLRv1: Apply variations correctly
...
The variations are for xMin, yMin, xMAx, yMax.
Apply them before converting to extents..
2022-12-16 11:14:42 -07:00
Matthias Clasen
193e0e3e8e
Cosmetic: typo fix
2022-12-14 22:34:06 -07:00
Garret Rieger
b5acde43ed
[subset] check pending/subsetted tag sets for alloc failure.
2022-12-13 15:31:40 -07:00
Jordan Petridis
79285a9983
VarC: cast ints ( #3934 )
...
msvc is rightfully complaining that the types on the sides of
the ternary are not matching:
```
C:\pango\subprojects\harfbuzz\src\OT\glyf\VarCompositeGlyph.hh(317): error C2446: ':': no conversion from 'const OT::HBUINT16' to 'const OT::HBUINT8'
```
2022-12-13 11:14:20 -07:00
Behdad Esfahbod
300d82ce2e
Fix compiler warning
2022-12-13 11:01:03 -07:00
Behdad Esfahbod
199345eb29
Merge pull request #3928 from harfbuzz/colrv1-extents
...
COLRv1: use ClipBoxes for extents
2022-12-12 18:37:10 -07:00
Behdad Esfahbod
bd7cb384cf
[VarC] Remove unused variable
2022-12-12 14:10:48 -07:00
Behdad Esfahbod
51d3ce39ba
Merge pull request #3933 from googlefonts/cff
...
[subset] Fix infinite loop when instancing CFF fonts
2022-12-12 14:07:44 -07:00
Behdad Esfahbod
1b278c7658
[VarC] Update for new format
...
https://github.com/harfbuzz/boring-expansion-spec/issues/71
2022-12-12 13:57:05 -07:00
Garret Rieger
64cbe8b962
[subset] Also note that only full instancing works.
2022-12-12 20:41:40 +00:00
Garret Rieger
0da59f86a8
[subset] note that CFF/CFF2 instancing is not yet supported.
2022-12-12 20:26:11 +00:00
Garret Rieger
38a9628885
[subset] simplify handling of table subsetting depedencies.
...
Allow the dependency checker to see all tables that will be subset. Use this to fix the HMTX/VMTX dep check against glyf. Don't delay hmtx/vmtx subsetting if no glyf table is present.
2022-12-12 20:13:17 +00:00
Garret Rieger
0853e5d9d7
[subset] if table dependencies can't be resolved fail the subset.
...
Avoids getting stuck in an infinite loop.
2022-12-12 19:43:31 +00:00
Behdad Esfahbod
6bb478eeeb
[VarC] Clamp after addition
2022-12-12 11:39:06 -07:00
Behdad Esfahbod
80a5011eb6
[VarC] Fix coord setting
...
Those are additive.
2022-12-12 11:37:59 -07:00
Behdad Esfahbod
4e9a6cfb49
[COLR] Use VarStoreInstancer
2022-12-12 10:20:51 -07:00
Behdad Esfahbod
a3a3d37b95
[var] Add VarStoreInstancer
2022-12-12 10:17:41 -07:00
Behdad Esfahbod
c64661b2f8
[COLR] Fix variation code
2022-12-12 10:11:02 -07:00
Behdad Esfahbod
ff332b14ea
[COLR] Handle HB_OT_LAYOUT_NO_VARIATIONS_INDEX
2022-12-11 21:05:14 -07:00
Behdad Esfahbod
9a3f0be291
[COLR] Apply variations in get_extent
2022-12-11 13:40:53 -07:00
Behdad Esfahbod
68964efa55
[COLR] Use bsearch in get_extents
2022-12-11 13:21:01 -07:00
Behdad Esfahbod
d0ee5a452f
[COLR] Return false from get_extents if table version not 1
2022-12-11 13:13:35 -07:00
Behdad Esfahbod
b3d6a5ef86
[colr] Minor no behavior change
2022-12-11 13:12:30 -07:00
Matthias Clasen
7a748ad4ac
COLRv1: use ClipBoxes for extents
...
This is a first step; ultimatively, we
should compute the extents is ClipBoxes
are missing.
2022-12-11 13:12:30 -07:00
Behdad Esfahbod
d36a0f8c42
[COLR] Add TODO
2022-12-11 13:12:19 -07:00
Behdad Esfahbod
a306820681
[colr] Use SortedArray instead of Array
2022-12-11 13:03:55 -07:00
Behdad Esfahbod
b9d5e7a8bb
[colr] Set HB_COLRV1_MAX_NESTING_LEVEL to 16
...
Was 100. That seemed excessive.
2022-12-11 12:54:19 -07:00
Behdad Esfahbod
c17afa48de
[colr] Remove COLRV1_ENABLE_SUBSETTING
2022-12-11 12:53:55 -07:00
Behdad Esfahbod
9ab2c8034e
Revert "[glyf] Use component phantom points after transformation"
...
This reverts commit a756bd1944
.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3929
2022-12-11 12:04:29 -07:00
Behdad Esfahbod
7f73b57bc1
[subset] Graduate L1 instancing API from experimental
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3926
2022-12-10 17:35:52 -07:00
Khaled Hosny
0f4e38cd86
[subset] Small doc fixes
2022-12-10 16:39:26 +02:00
Behdad Esfahbod
bf2e817549
[VarComposites] Support GID24
2022-12-09 23:15:26 -07:00
Behdad Esfahbod
10d38dcdfd
[varc] Change format slightly
...
Fixes https://github.com/harfbuzz/boring-expansion-spec/issues/70
2022-12-09 19:19:57 -07:00
Behdad Esfahbod
af450a757d
[config] Use HB_EXPERIMENTAL_API instead of adhoc HB_EXPERIMENTAL
2022-12-09 19:05:16 -07:00
Behdad Esfahbod
5cf0b9ae7d
[varc] Mark as experimental feature with HB_NO_VAR_COMPOSITES
2022-12-09 18:59:43 -07:00
Behdad Esfahbod
82b4f3791e
[coord-setter] Don't modify font coords
2022-12-09 18:46:33 -07:00
Behdad Esfahbod
e9e503b80b
[Glyph] Pass down coords to get_points
2022-12-09 18:42:46 -07:00
Behdad Esfahbod
8e46870093
[gvar] Take coords in instead of font in apply_deltas_to_points
2022-12-09 18:35:30 -07:00
Behdad Esfahbod
3caa42a4a7
Fix build after rebase
2022-12-09 14:48:41 -07:00
Behdad Esfahbod
bbe59e4211
Whitespace
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
13deea7cbd
[glyf/VarComposite] Clamp axis coordinates
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
a975be4c07
[glyf/VarComposite] Minor rename
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
1e71db2d26
[glyf/VarComposite] Fix transformation
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
1233be61d8
[glyf/VarComposite] Remove unneeded resize
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
1a906162cb
[glyf/coord-setter] Fix memory issue
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
7efd68da39
[glyf/VarComposite] Set coordinates
...
Code is untested but complete!
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
4ec7781497
[glyf] Move coord-setter to its own file
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
dadb4ed71d
[glyf/VarComposite] More, almost there
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
0a939b48a6
[glyf/VarComposite] Implement more
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
65cc3b5e2b
[glyf/VarComposite] More
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
12688ed386
[glyf] Fix distcheck
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
60d959a6e7
[glyf/VarComposite] Add use_my_metrics()
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
575d99406a
[glyf] Flesh out VarCompositeGlyph
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
21f671bc45
[glyf] Add stub VarCompositeGlyph
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
435c5eeffe
[glyf] Split composite-iter
2022-12-09 14:45:29 -07:00
Behdad Esfahbod
1024a013fd
[glyf] Add CoordSetter
2022-12-09 14:45:29 -07:00
Garret Rieger
e66d02126e
[subset] replace subset-processing.md reference with link to it on github.
2022-12-08 16:32:24 -07:00
Garret Rieger
27201ed32b
[subset] fix up hb_subset_preprocess api comment.
2022-12-08 16:32:24 -07:00
Garret Rieger
13b0388351
[subset] link to preprocessing doc from api comment.
2022-12-08 16:32:24 -07:00
Garret Rieger
c097abab52
[subset] set no prune unicode ranges flag in preprocessor.
...
To avoid modifying the original unicode range values in the source font.
2022-12-08 16:32:24 -07:00
Garret Rieger
bc87fe952e
[subset] add note about memory management with preprocessed faces.
2022-12-08 16:32:24 -07:00
Garret Rieger
5e713e99bf
Revert "[map] Speed up is_real()"
...
This reverts commit f5307c3ba8
.
Found to slow down the benchmarks in some cases.
2022-12-08 16:32:24 -07:00
Garret Rieger
eda02c2ebd
[subset] Move hb_subset_preprocess to be non-experimental.
2022-12-08 16:32:24 -07:00
Garret Rieger
76d5482a7c
[subset] always return a valid face from hb_subset_preprocess.
2022-12-08 16:32:24 -07:00
Garret Rieger
35233d2514
[repacker] fix fuzzer reported stack overflow.
...
Fixes https://oss-fuzz.com/testcase-detail/6014493291577344 .
2022-12-07 10:32:56 -07:00
Garret Rieger
f1d3489388
[repacker] bail on failure to alloc assigned_bytes set.
...
Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/5390364397928448 .
2022-12-05 14:13:47 -07:00
Garret Rieger
239a5aca02
[repacker] don't allow references to the null object in graph.
...
Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/6714085985353728
2022-12-05 14:13:47 -07:00
Behdad Esfahbod
4ce0f08897
[coretext] Clamp variation settings to min/max
...
Like our native implementation does; CoreText doesn't itself.
Also fix leak of CFNumber's.
2022-12-05 13:18:34 -07:00
Behdad Esfahbod
22b0390e2d
Revert "[VarData] Don't clear memory we are going to fill in completely"
...
This reverts commit e28e2dad03
.
This made fuzzer unhappy. I'm not sure how.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54044
2022-12-05 09:43:36 -07:00
Behdad Esfahbod
3c497e2458
[harfbuzz-subset.cc] Revert accidental change
...
These extra files are unnecessary, but our generator currently
isn't smart enough to know that. Will fix some time.
2022-12-04 15:35:01 -07:00
Behdad Esfahbod
aa7f5e3742
[subset] Conditionalize call to hb_font_set_variations
2022-12-04 15:33:18 -07:00
Behdad Esfahbod
ad5588e800
[config] If HB_NO_SHAPER then HB_NO_OT_SHAPE
2022-12-04 15:27:59 -07:00
Behdad Esfahbod
1a5c749581
[config] Flesh out HB_NO_SHAPER a bit more
2022-12-04 15:20:51 -07:00
Behdad Esfahbod
2c0abf0258
Revert "[harfbuzz-subset.cc] Trim down!"
...
This reverts commit a335458d57
.
While this can be vastly trimmed down, what I did is not right.
It still depends on hb-face, hb-font, hb-blob, hb-set, and hb-map.
2022-12-04 15:03:36 -07:00
Behdad Esfahbod
a335458d57
[harfbuzz-subset.cc] Trim down!
2022-12-04 14:56:20 -07:00
Behdad Esfahbod
765a3551da
[face-builder] Minor cast
2022-12-04 14:48:32 -07:00
Behdad Esfahbod
3fff6d9084
[face-builder] Initialize face orders to -1
2022-12-04 14:47:38 -07:00
Behdad Esfahbod
805ce9ad3d
[face-builer] Protect against wrong face
...
In hb_face_builder_sort_tables.
2022-12-04 14:43:17 -07:00
Behdad Esfahbod
0acfd2b714
[indic-machine] Regenerate line numbers
2022-12-04 14:01:05 -07:00
Behdad Esfahbod
9704f8354e
Merge branch 'config-header'
2022-12-04 13:58:52 -07:00
Behdad Esfahbod
c1aae14a68
[features.h] Fix autotools build rules
2022-12-04 13:58:39 -07:00
Behdad Esfahbod
0545949f01
[gvar] Minor use array get_size()
2022-12-04 12:44:09 -07:00
Behdad Esfahbod
1bd386515c
[bit-set] Micro-optimize page_for
2022-12-04 12:30:20 -07:00
Behdad Esfahbod
b182e2808a
[bit-set] Don't clear pages when copying set
2022-12-04 12:22:17 -07:00
Behdad Esfahbod
f5307c3ba8
[map] Speed up is_real()
2022-12-04 11:54:16 -07:00
Behdad Esfahbod
301f6e4b47
[Coverage] Remove TODO
2022-12-04 11:46:10 -07:00
Behdad Esfahbod
dbbb8e8006
Revert "[map] Add hb_map_filter_invalid"
...
This reverts commit 8d7e921117
.
Surprisingly this slowed NotoNastaliqUrdu benchmark down by a couple
percent instead of speeding it up.
2022-12-04 11:13:39 -07:00
Behdad Esfahbod
8d7e921117
[map] Add hb_map_filter_invalid
...
Use it in one place.
2022-12-04 11:02:15 -07:00
David Corbett
260df1fa32
[indic] Support <U+0A02, U+0A40>
2022-12-04 10:46:47 -07:00
Behdad Esfahbod
8b533763c0
Use hb_len() instead of .len()
2022-12-03 15:58:12 -07:00
Behdad Esfahbod
e28e2dad03
[VarData] Don't clear memory we are going to fill in completely
2022-12-03 15:56:43 -07:00
Behdad Esfahbod
0e13b4abbc
[VarData] Optimize main loop slightly
2022-12-03 15:50:24 -07:00
Behdad Esfahbod
ad17c0acce
[VarData] Whitespace
2022-12-03 14:56:57 -07:00
Behdad Esfahbod
e7eb445d29
[VarData] Optimize longWord calculation
2022-12-03 14:56:00 -07:00
Behdad Esfahbod
f2c980be29
[VarData] Optimize wordCount calculation
...
6% speedup in RobotoFlex-Variable/900 benchmark.
2022-12-03 14:49:38 -07:00
Behdad Esfahbod
3641b0e01e
[VarData] Optimize serialize()
2022-12-03 14:26:21 -07:00
Behdad Esfahbod
e155f12307
[VarData] Minor save a variable
2022-12-03 14:14:39 -07:00
Behdad Esfahbod
5596a73087
[layout] Speed up ClassDefFormat2 intersects
2022-12-03 13:33:48 -07:00
Behdad Esfahbod
85e7263b38
[VariationStore] Minor access array directly
2022-12-03 13:28:02 -07:00
Behdad Esfahbod
41a8597f38
[layout] Simplify CoverageFormat2 intersects_coverage()
2022-12-03 13:23:26 -07:00
Behdad Esfahbod
1f4d8ccaed
[CoverageFormat2] Optimize intersects()
2022-12-03 13:17:15 -07:00
Behdad Esfahbod
c482b06108
[gpos] Optimize PairPosFormat1::intersects
2022-12-03 13:14:31 -07:00
Behdad Esfahbod
58e9df132f
[Device] Serialize VariationDevice zerocopy
2022-12-03 13:04:00 -07:00
Behdad Esfahbod
071a2bb4f7
[serialize] Support zerocopy while sharing
2022-12-03 13:03:38 -07:00
Behdad Esfahbod
44a5de3a97
[Device] Save a snap/revert
2022-12-03 12:50:32 -07:00
Behdad Esfahbod
93328cedfc
[Device] Save a map get()
2022-12-03 12:49:26 -07:00
Behdad Esfahbod
630b874ae6
[gsubgpos] Add a cache to intersected_class_glyphs
...
30% gain on subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/1400.
2022-12-03 12:13:15 -07:00
Behdad Esfahbod
c044f4af3e
[gsubgpos] Remove wrong const
2022-12-03 11:58:04 -07:00
Behdad Esfahbod
2680be1f22
[gsubgpos] Don't set unnecessary funcs
2022-12-03 11:54:52 -07:00
Behdad Esfahbod
023f595dec
[cmap] Speed up DefaultUVS::copy even more
...
Another 14% on SourceHanSerifVF/10 benchmark.
2022-12-03 11:18:05 -07:00
Behdad Esfahbod
4ca6105108
[cmap] Remove double-min
2022-12-03 11:15:06 -07:00
Behdad Esfahbod
cd29147e30
[cmap] Minor cast
2022-12-03 10:41:42 -07:00
Behdad Esfahbod
4cdb5cc69b
[cmap] Minor change iterator
2022-12-03 10:40:24 -07:00
Behdad Esfahbod
2cdaedaf54
Use hb_enumerate in more places
2022-12-03 10:16:35 -07:00
Behdad Esfahbod
02bc4dd69b
Use hb_enumerate instead of hand-coding
2022-12-03 10:10:01 -07:00
Behdad Esfahbod
4d19c724c0
[CoverageFormat1] Speed up intersects()
...
Speeds up SourceHanSerif/10000 benchmark (not in test suite) by
32%!
2022-12-03 09:57:29 -07:00
Behdad Esfahbod
a2d33779e1
Fix arm bot build
2022-12-03 09:49:00 -07:00
Behdad Esfahbod
dabbf13d40
[cmap] Speed up DefaultUVS::copy
2022-12-03 09:46:11 -07:00
Qunxin Liu
8eadb83640
[subset] Update hb_subset_input_override_name_table API
...
Override the name string for the NameRecord identified by name_id,
platform_id, encoding_id and language_ids specified by the user.
If a record with specified name_id does not exist, this API will create
a new NameRecord with provided info and insert it to the name table.
2022-12-02 18:05:53 -07:00
Behdad Esfahbod
ddeac3658b
[test-multimap] More tests
2022-12-02 16:51:07 -07:00
Behdad Esfahbod
ff419789ef
[subset-plan] Sort unicode_to_new_gid_list when needed
2022-12-02 16:43:33 -07:00
Behdad Esfahbod
1a40da4ad1
[subset-plan] Use add_array instead of add_sorted_array
...
That vector is not declared as sorted.
2022-12-02 16:13:37 -07:00
Behdad Esfahbod
32e049a315
[subset-plan] Use gid-to-unicodes multimap
...
One test fails. Need investigation.
2022-12-02 16:09:10 -07:00
Behdad Esfahbod
da7961b2e8
.
2022-12-02 16:08:40 -07:00
Behdad Esfahbod
7d6893a803
[subset-accelerator] Cache gid-to-unicodes
2022-12-02 15:50:52 -07:00
Behdad Esfahbod
10c8fc5553
[multimap] Add a multimap datastructure
2022-12-02 15:50:49 -07:00
Behdad Esfahbod
a42fc8ec4a
[subset-accelerator] Adjust in_error()
2022-12-02 15:41:18 -07:00
Behdad Esfahbod
65d9630312
[subset-cff2] Whitespace
2022-12-02 14:59:26 -07:00
Behdad Esfahbod
b33297ee26
[cff2] Remove unused typedef
2022-12-02 14:43:37 -07:00
Behdad Esfahbod
3ade2ffaa5
[serialize] Adjust pop_discard for zerocopy
2022-12-02 14:26:36 -07:00
Behdad Esfahbod
043eeb29a3
[subset-cff] Optimize encode_subrs
...
Don't loop over all original subrs. Just walk over closure subrs.
2022-12-02 13:58:36 -07:00
Behdad Esfahbod
0ad5977cd6
[subset-cff] Simplify hinting processing
...
We already have drop_hints in the params.
2022-12-02 13:41:36 -07:00
Behdad Esfahbod
16cbe41bca
Merge pull request #3910 from googlefonts/repacker_fuzz
...
[repacker] Add a fuzzer for the hb-subset-repacker api.
2022-12-02 12:43:13 -07:00
Behdad Esfahbod
2a7a1d5a73
[Coverage] Avoid timeout on broken ranges
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53929
2022-12-02 12:33:24 -07:00
Behdad Esfahbod
c947652768
[subset-cff] Micro-optimize
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
a24d4e9261
[array] Oops. Fix memcpy copy()!
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
5e41766bb9
[array] Fix hb_bytes_t memcpy copy
...
Wasn't being used!
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
a5616227ca
[subset-cff] Fix buffer size calculation
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
015af5a8e5
[subset-cff] Write a couple loops as range-based for
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
bfbbd4af25
[subset-cff] Copy str for call ops
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
c755b3884f
[subset-cff] Pre-alloc enough for check-less copy
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
062e59ae67
[subset-cff] Optimize vector allocation for preprocessed input
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
8e9e94dba9
Revert "[vector] Optimize grow_vector() for size"
...
This reverts commit 1dd9396c7a
.
Is faster indeed.
15% on SourceHanSans/10000 benchmark.
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
2644540a74
[subset-cff] Compact parsed strings if using accelerator
...
Saves 32% on SourceHanSans/10000 benchmark!
Also, use memcmp now for writing out strings since now that our
ops are not super short, that's faster.
This makes cff-japanese test takes super long though; that needs
inspection.
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
6012d3b228
[subset-cff] Write out charstrings zerocopy to serializer
2022-12-01 17:33:53 -07:00
Behdad Esfahbod
36e1a6339c
[cff] Add total_size to INDEX
2022-12-01 17:00:03 -07:00
Behdad Esfahbod
3843000660
[serialize] Add start_zerocopy()
2022-12-01 16:48:22 -07:00
Garret Rieger
de5a621322
[repacker] enforce root node having no incoming edges.
2022-12-01 23:37:16 +00:00
Behdad Esfahbod
a2681c37c1
[cff-subset] Simplify INDEX serialize() more
2022-12-01 16:15:23 -07:00
Behdad Esfahbod
c4b05878cb
[subset-cff] Remove INDEX unused serialize() methods
2022-12-01 15:56:37 -07:00
Behdad Esfahbod
b3ad4d72cc
[cff] Another no-memset in INDEX
2022-12-01 15:46:00 -07:00
Behdad Esfahbod
5fd2f255fc
[open-type] Don't memset 0 in serialize for ArrayOf family
...
Not necessary.
2022-12-01 15:18:59 -07:00
Garret Rieger
30e405e470
[repacker] ensure link obj indices are valid.
2022-12-01 22:12:59 +00:00
Behdad Esfahbod
70ac6dfb28
[subset-cff] Don't memset 0 INDEX and other serialize methods
...
Not necessary.
2022-12-01 14:58:25 -07:00
Garret Rieger
554ed06fac
[repacker] add cycle detection to the graph sort.
...
This allows us to bail early if the graph is not acyclic.
2022-12-01 21:52:37 +00:00
Behdad Esfahbod
a66de336fb
[vector] Minor use get_size() in as_bytes()
2022-12-01 14:32:13 -07:00
Behdad Esfahbod
0b826368fd
[serializer] Don't memset memory in embed
...
Not necessary.
2022-12-01 14:23:25 -07:00
Behdad Esfahbod
3b68c7146f
[array] Don't clear serializer buffer when copying out
...
Not needed.
2022-12-01 14:19:27 -07:00
Behdad Esfahbod
57808609c9
[VarData] Move an unlikely
2022-12-01 14:03:56 -07:00
Garret Rieger
9e99d08470
[repacker] validate link widths during repacker setup.
2022-12-01 20:17:41 +00:00
Garret Rieger
edf7a29595
[repacker] Validate link positions before running the repacker.
2022-12-01 20:17:41 +00:00
Garret Rieger
deca30b268
[repacker] get repacker fuzzer working.
...
Additionally add helper method that allows a graph to be saved as a fuzzer seed.
2022-12-01 20:17:40 +00:00
Garret Rieger
985b19f678
[repacker] begin implementing a fuzzer for the repacker api.
2022-12-01 20:17:39 +00:00
Matthias Clasen
c6d616cc41
Generate and install hb-features.h
...
This header has defines for all the optional
dependendencies that come with their own Harfbuzz
headers, so you can do:
#include <hb-features.h>
#ifdef HB_HAS_DIRECTWRITE
#include <hb-directwrite.h>
#endif
2022-12-01 18:16:55 +08:00
Behdad Esfahbod
8805a866b5
[ClassDef2] Write a few loops as range-based for
2022-11-30 17:18:04 -07:00
Behdad Esfahbod
ac8b232a2d
[gsub] Cache intersects_class results for closure
...
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/10 +0.0246 +0.0240 0 0 0 0
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/64 -0.5541 -0.5544 4 2 4 2
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/512 -0.1120 -0.1123 43 38 43 38
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/1400 -0.1154 -0.1159 43 38 43 38
2022-11-30 17:09:04 -07:00
Behdad Esfahbod
c6a4b60116
[gsubgpos] Add an unlikely
2022-11-30 15:02:42 -07:00
Behdad Esfahbod
32dd9810cf
[subset-cff1] Cache glyph-to-sid-map in the accelerator
...
Benchmark Time CPU Time Old Time New CPU Old CPU New
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10 -0.0841 -0.0843 0 0 0 0
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/64 -0.1305 -0.1305 0 0 0 0
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/512 -0.1398 -0.1401 1 1 1 1
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/4096 +0.0382 +0.0380 9 9 9 9
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10000 +0.0213 +0.0211 11 11 11 11
2022-11-30 14:00:33 -07:00
Behdad Esfahbod
72fabef0a4
[SingleSubstFormat2] Speed up closure
2022-11-30 11:37:49 -07:00
Behdad Esfahbod
2dc2e016d4
[cff] Enable an unlikely
2022-11-30 11:25:50 -07:00
Behdad Esfahbod
582a87ef0a
[cff] Speed up FDSelect0 sanitize
2022-11-30 11:20:19 -07:00
Garret Rieger
2658370f00
[subset] make the cmap cache in accelerator const.
2022-11-29 22:04:10 -07:00
Garret Rieger
7551a668e3
[subset] Make cff_accelerator const.
...
This gives more confidence that it won't be accidentally modified by the subset operation using it.
2022-11-29 22:04:10 -07:00
Behdad Esfahbod
d8d0e06694
[array] Comment
2022-11-29 21:35:54 -07:00
Behdad Esfahbod
2fecf2aa19
[ClassDef] Minor rename
2022-11-29 21:25:01 -07:00
Behdad Esfahbod
8f632ca884
[ClassDef] Write another loop as range for
2022-11-29 21:23:35 -07:00
Behdad Esfahbod
87b12aee13
[ClassDef] Write a couple loops as range for
2022-11-29 21:18:48 -07:00
Behdad Esfahbod
ccd40c842c
[ClassDef] Optimize intersected_class_glyphs
2022-11-29 21:15:19 -07:00
Behdad Esfahbod
44c585a6df
[ClassDef] Fix disabled codeblock
2022-11-29 20:52:48 -07:00
Behdad Esfahbod
9b7617d433
[ClassDef2] Use a faster algorithm in subset()
...
Speedup across the board; up to 40% for MPlus1 at small sizes.
2022-11-29 20:29:58 -07:00
Behdad Esfahbod
ae5e6d562b
[ClassDef2] Micro-optimize
2022-11-29 15:48:38 -07:00
Behdad Esfahbod
7129b79406
[open-type] Add faster range-based loop to array types
2022-11-29 15:33:07 -07:00
Behdad Esfahbod
dc82334061
Remove a couple of unneeded .iter() invocations
2022-11-29 15:26:55 -07:00
Behdad Esfahbod
00f2657bb8
[subset] Accelerate sanitize-table-cache
...
Big wins all across small subsets
BM_subset/subset_codepoints/Roboto-Regular.ttf/nohinting/10 -0.1140 -0.1129 0 0 0 0
BM_subset/subset_codepoints/Amiri-Regular.ttf/nohinting/10 -0.4717 -0.4714 0 0 0 0
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/10 -0.8147 -0.8146 0 0 0 0
BM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/nohinting/10 -0.3248 -0.3242 0 0 0 0
BM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/10 -0.1262 -0.1260 0 0 0 0
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10 -0.0308 -0.0309 0 0 0 0
BM_subset/subset_codepoints/SourceSansPro-Regular.otf/nohinting/10 -0.1374 -0.1373 0 0 0 0
BM_subset/subset_codepoints/AdobeVFPrototype.otf/nohinting/10 -0.4555 -0.4555 0 0 0 0
BM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/10 -0.4175 -0.4174 0 0 0 0
BM_subset/subset_codepoints/RobotoFlex-Variable.ttf/nohinting/10 -0.4214 -0.4214 0 0 0
2022-11-29 15:20:13 -07:00
Behdad Esfahbod
33165f4848
[bit-page] Remove ELT_BITS_LOG_2
...
My compiler is smart enough to take care of it.
2022-11-29 15:15:43 -07:00
Garret Rieger
7a004a7ac2
[subset] Cache per subtable cmap unicode mappings.
2022-11-28 19:48:15 -07:00
Behdad Esfahbod
d2a2670e54
[iter] Simplify has() interface implementations
2022-11-28 19:43:09 -07:00
Behdad Esfahbod
cba82829ba
[subset-cff1] Share subrs object
...
Multiple FDs might share the same subrs...
2022-11-28 16:19:54 -07:00
Behdad Esfahbod
c7b998b355
[cff2] Don't share fd-array link
...
No point.
2022-11-28 16:18:21 -07:00
Behdad Esfahbod
3d9e3c2dc7
[subset-cff2] Don't share varstore object
2022-11-28 16:17:09 -07:00
Behdad Esfahbod
c503cf003e
[cmap] Store offset, not pointer, in cmap cache
2022-11-28 15:53:35 -07:00
Behdad Esfahbod
3e151139a8
[PairPos] Optimize get_effective_value_format
...
Speeds up BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/512
12%.
2022-11-28 14:23:49 -07:00
Behdad Esfahbod
3131aecf9f
[array/hash] Fix asan issue
...
../src/hb-algs.hh:240:43: runtime error: reference binding to misaligned address 0x7ffe91a08b0e for type 'const unsigned int', which requires 4 byte alignment
2022-11-28 14:12:55 -07:00
Behdad Esfahbod
26ad7a6022
[gpos] Minor micro-optimize
2022-11-28 14:12:52 -07:00
Behdad Esfahbod
c769d7e181
[gpos] Whitespace
2022-11-28 14:03:58 -07:00
Behdad Esfahbod
3ea0f37c30
[subset-cff] Move an init to constructor
...
The init was not called anyway.
2022-11-28 13:58:44 -07:00
Behdad Esfahbod
6c92c3e0cf
[subset-cff] Remove unnecessary check
2022-11-28 13:54:24 -07:00
Behdad Esfahbod
7fd300dd9a
[subset-cff] Use constructor for parsed_cs_op_t
2022-11-28 13:51:16 -07:00
Garret Rieger
bd37900e0d
[subset] use a reference to cached global/loca subrs.
...
Previously they were being copied in. Copying is no longer necessary now that hint dropping doesn't mutate the arrays.
2022-11-28 13:43:52 -07:00
Behdad Esfahbod
ded9de9cd8
[cff] bsearch in fdselect
...
Saves 8% in NotoSansCJK / 10000 subset benchmark.
2022-11-28 13:32:08 -07:00
Behdad Esfahbod
0c33aba30c
[subset-cff] Rename drop flag to hinting flag
2022-11-28 12:28:13 -07:00
Behdad Esfahbod
6f5b531986
[subset-cff] Make no-hinting use accelerator as well
2022-11-28 12:24:29 -07:00
Behdad Esfahbod
f51a624e67
[subset-cff] Micro-optimize drop_hints_in_str
2022-11-27 14:54:39 -07:00
Behdad Esfahbod
3860326688
[subset-cff] Write loop more idiomatic
2022-11-27 13:23:13 -07:00
Behdad Esfahbod
3ff502d3ae
[subset-cff] Remove unnecessary initialization
2022-11-27 12:58:04 -07:00
Behdad Esfahbod
6af4985bf9
[subset-cff] No need for bitflag here anymore
2022-11-26 18:20:20 -07:00
Behdad Esfahbod
69ce606d14
[subset-cff] Immediately drop subr numbers instead of marking for skip
...
Seems to work and saves ~2% time.
2022-11-26 18:18:35 -07:00
Behdad Esfahbod
1cf4f3e083
[subset-cff] More comment
2022-11-26 18:15:28 -07:00
Behdad Esfahbod
f68221ff43
[subset-cff] Add comment
2022-11-26 18:12:14 -07:00
Behdad Esfahbod
048ab8a066
[subset-cff] Remove unused bits
2022-11-26 18:00:43 -07:00
Behdad Esfahbod
37cbfc0c7e
[subset-cff] Remove unneeded member
2022-11-26 17:57:44 -07:00
Behdad Esfahbod
46ab15137b
[subset-cff] Add has_calls to parsed charstrings
...
Optimize closure based on it.
2022-11-26 17:49:21 -07:00
Behdad Esfahbod
6d53074e63
[subset-cff] Drop another unused parameter
2022-11-26 17:23:09 -07:00
Behdad Esfahbod
42615561b5
Optimize a couple array references
2022-11-26 17:13:20 -07:00
Behdad Esfahbod
04d23b7ca8
[subset-cff] Micro-optimize collect_subr_refs_in_str
2022-11-26 17:08:00 -07:00
Behdad Esfahbod
9d18180c3c
[array] Use hb_hash instead of handrolling
2022-11-26 15:38:21 -07:00
Behdad Esfahbod
e302b9d5da
Fix build
2022-11-26 15:18:16 -07:00
Behdad Esfahbod
70d97d079b
[subset-cff] Remove unused argument
2022-11-26 15:16:11 -07:00
Behdad Esfahbod
4167e93a15
[subset-cff2] Micro-optimize blend operator
2022-11-26 15:14:52 -07:00
Behdad Esfahbod
f159bf075b
[cff2] Micro-optimize blend operator
2022-11-26 15:11:32 -07:00
Behdad Esfahbod
a331e913dc
[bit-page] Hand-code equality
...
Faster than memcmp() because of alignment.
2022-11-26 14:59:37 -07:00
Behdad Esfahbod
9df06a2695
[bit-set] Fix is_subset() short-circut criteria
...
Ouch!
2022-11-26 14:56:45 -07:00
Behdad Esfahbod
915c1a00cf
[vector] Add remove_unordered
...
Saves 5% in NotoNastaliq/1000 subset benchmark.
2022-11-26 14:48:57 -07:00
Behdad Esfahbod
4b8d8fbee4
[ot-map] Micro-optimize for size
2022-11-26 14:31:15 -07:00
Behdad Esfahbod
93f3a9dbc6
[ot-map] Micro-optimize more
...
Another 500 bytes.
2022-11-26 14:25:21 -07:00
Behdad Esfahbod
f39f049870
[ot-map] Micro-optimize
...
Weird that shrinks size by 500 bytes.
2022-11-26 14:16:15 -07:00
Behdad Esfahbod
60bb32c454
[ot-map] Minor refactor
2022-11-26 14:12:57 -07:00
Behdad Esfahbod
e3cc61838f
[PairPos] Adjust kerning buffer messages
2022-11-26 13:58:04 -07:00
Behdad Esfahbod
a81dd1053d
[layout] Adjust printing feature tags
...
For required-feature, print spaces, not nul bytes.
2022-11-26 13:43:36 -07:00
Behdad Esfahbod
56e3868b52
[layout/buffer-message] Print feature name in lookup buffer messages
2022-11-26 13:14:23 -07:00
Garret Rieger
a5d35fd80a
[subset] use charstrings directly from accelerator cache if mutability isn't needed.
2022-11-25 16:50:55 -07:00
Behdad Esfahbod
026b64ef76
[subset-cff] Avoid set mallocation in hb_plan_subset_cff_fdselect
2022-11-25 14:57:40 -07:00
Behdad Esfahbod
74acf52f33
[subset-cff] Micro-optimize copy_str more
2022-11-25 14:43:44 -07:00
Behdad Esfahbod
d2f3cde7ef
[subset-cff] Micro-optimize copy_str
2022-11-25 14:38:30 -07:00
Behdad Esfahbod
e333223f26
[array] Optimize serializing copy()
2022-11-25 14:26:02 -07:00
Behdad Esfahbod
22990fca1d
Merge pull request #3894 from googlefonts/cff_accel
...
[subset] Cache parsed char strings in CFF accelerator
2022-11-25 14:12:58 -07:00
Garret Rieger
8d5c899b0f
[subset] In cff accelerator hold reference to CFF table instead of the whole font.
2022-11-25 20:53:20 +00:00
Behdad Esfahbod
7b197446ac
[vector] Adjust for HB_OPTIMIZE_SIZE
2022-11-25 13:28:53 -07:00
Garret Rieger
75a99f28ab
[subset] destruct cff accelerator if present.
2022-11-25 20:24:05 +00:00
Behdad Esfahbod
1d474194f0
[subset-cff] Micro-optimize encode_str
2022-11-25 13:21:35 -07:00
Behdad Esfahbod
3c4a610b59
[subset-cff] Micro-optimize copy_str some more
2022-11-25 13:16:30 -07:00
Behdad Esfahbod
535aadb309
[subset-cff] Micro-optimize collect_subr_refs_in_str more
2022-11-25 13:07:42 -07:00
Behdad Esfahbod
00a9df3a43
[subset-cff] Micro-optimize collect_subr_refs_in_str
2022-11-25 13:05:05 -07:00
Behdad Esfahbod
d2a2f5bf4e
[vector] Handroll copy
2022-11-25 12:44:02 -07:00
Behdad Esfahbod
1fed366d5b
[serialize] Shut compiler warning off
2022-11-25 12:37:24 -07:00
Behdad Esfahbod
f2297e6978
[buffer] Documentation
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3889
2022-11-25 11:33:00 -07:00
Garret Rieger
71c23c1c07
[subset] don't copy the entire global/loca subr lists from the accelerator.
...
Instead run a closure on the retained charstrings and copy only the referenced subrs. This significantly speeds up cases with small character sets.
2022-11-25 18:05:39 +00:00
Garret Rieger
4ff09274a8
[subset] In CFF accelerator keep a reference to original face.
...
The charstring objects reference memory from the original face so we need to maintain a reference to prevent it from being destroyed.
2022-11-24 22:47:29 +00:00
Behdad Esfahbod
6aaa16627c
[Coverage] Comment
2022-11-24 14:58:42 -07:00
Behdad Esfahbod
06e2147a48
More call set->next() directly
2022-11-24 14:56:04 -07:00
Behdad Esfahbod
196c9db06f
Call ->next() directly
2022-11-24 14:51:52 -07:00
Behdad Esfahbod
03d64b7469
[bit-set] Remove TODO that would never happen
2022-11-24 14:33:18 -07:00
Behdad Esfahbod
690df8a369
[bit-set] Micro-optimize prev()
2022-11-24 14:32:51 -07:00
Behdad Esfahbod
fe5d9176ae
[bit-set] Micro-optimize size
...
It's silly that this saves size at all. :(
2022-11-24 14:30:18 -07:00
Behdad Esfahbod
cf9b9929df
[bit-set] Micro-optimize process()
2022-11-24 14:26:28 -07:00
Behdad Esfahbod
d77903db7b
[bit-set] Micro-optimize
2022-11-24 14:22:32 -07:00
Behdad Esfahbod
13dd4b464b
[bit-set] Micro-optimize access
2022-11-24 14:20:42 -07:00
Garret Rieger
a3afa61ce8
[subset] use cached parsed char strings if available.
2022-11-24 21:14:00 +00:00
Garret Rieger
47c125845c
[subset] Cache parsed charstrings in the cff accelerator.
2022-11-24 21:14:00 +00:00
Garret Rieger
48b6837074
[subset] add a CFF specific accelerator object.
...
This allows CFF specific accelerator structures to be isolated to the CFF code.
2022-11-24 21:13:59 +00:00
Behdad Esfahbod
d77f346d1a
[subset-cff] Minor rename
2022-11-24 14:02:46 -07:00
Behdad Esfahbod
29a0fa089a
[subset-cff] Micro-optimize
2022-11-24 14:00:59 -07:00
Behdad Esfahbod
d480ae1fac
[cff] Remove unused function
2022-11-24 13:53:43 -07:00
Behdad Esfahbod
73046d53e5
[shaper] Disable dumber shaper if no AAT
2022-11-24 13:49:29 -07:00
Behdad Esfahbod
e9f964c01a
[ot-face] Declare more tables as core
2022-11-24 13:38:53 -07:00
Behdad Esfahbod
5bc27a128d
[machinery] Comment
2022-11-24 13:30:12 -07:00
Behdad Esfahbod
d21bfb0861
[normalize] Remove an unlikely
...
Keep unlikely for truely unlikely scenarios.
2022-11-24 13:14:05 -07:00
Behdad Esfahbod
9e1239f443
[config] Define HB_NO_VERTICAL in HB_LEAN and as such in HB_TINY
2022-11-24 13:00:47 -07:00
Behdad Esfahbod
6f133ccfde
[glyf] Fix build with HB_NO_VERTICAL
2022-11-24 12:59:55 -07:00
Behdad Esfahbod
76420ef769
[machine.rl] Remove unlikely from what happens 1/16 of the time
2022-11-24 12:52:15 -07:00
Behdad Esfahbod
1248574454
[config] Disable Zawgyi shaper in HB_MINI/HB_TINY
2022-11-24 12:46:04 -07:00
Behdad Esfahbod
05aa084e67
[PairPos] Another attempt at fixing unsafe-to-break with ValueFormat2
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3888#issuecomment-1326781116
Test:
$ hb-shape XBRoya34.ttf ' الأ' --show-flags --script=arab
2022-11-24 12:14:09 -07:00
Behdad Esfahbod
54ae3345b2
[buffer] Improve documentation of hb_buffer_add_codepoints()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3889
2022-11-24 12:00:36 -07:00
Behdad Esfahbod
a4a4078632
Merge pull request #3893 from googlefonts/preprocess_test
...
[subset] Fix testing of preprocess
2022-11-24 11:56:58 -07:00
Behdad Esfahbod
0c70bc7f32
[skippy-iter] Fix two logic errors
...
First, a signed underflow.
Second, a wrong condition.
Both were introduced in 42681bdb55
2022-11-24 11:48:48 -07:00
Behdad Esfahbod
3b43096ef3
[buffer] Whitespace
2022-11-23 22:04:02 -07:00
Behdad Esfahbod
094f80738a
[buffer] Handle null buffer in set_message_func
2022-11-23 22:03:26 -07:00
Behdad Esfahbod
1fa64c0c23
[gsubgpos] Conditionalize skippy on unsafe-to-concat
2022-11-23 21:38:51 -07:00
Behdad Esfahbod
42681bdb55
[gsubgpos] No logic-change minor rewrite
2022-11-23 21:36:43 -07:00
Behdad Esfahbod
c15efdec49
[gsubgpos] Comment
2022-11-23 21:14:28 -07:00
Behdad Esfahbod
7ec1c41a55
[gsubgpos] Skippy-iter: Prefer correctness to performance
...
Prefer unsafe-to-concat correctness, over performance.
2022-11-23 21:12:41 -07:00
Behdad Esfahbod
dce3502e10
[array] Add commented-out static asserts
...
They don't work.
2022-11-23 18:34:54 -07:00
Behdad Esfahbod
a7fee43cef
[priority-queue] Minor micro-optimize
2022-11-23 17:46:32 -07:00
Garret Rieger
ff3cac0ccd
[subset] Fix unecessary trailing 0 bytes left by ContextFormat2 pruning.
...
Uneeded rules where beind removed from the count by the bytes for them was being left in the font.
2022-11-23 23:50:49 +00:00
Behdad Esfahbod
f2851e4157
[test-map] Test has() getter with unique-ptr
2022-11-23 16:50:30 -07:00
Behdad Esfahbod
5f3a780614
[font] Protect against div-by-zero
2022-11-23 16:45:46 -07:00
Behdad Esfahbod
060ecac949
[font] Respect subfont slant setting in hb-draw
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3890
2022-11-23 16:31:37 -07:00
Garret Rieger
51028e63e6
[subset] Retain all glyphs in preprocessed face.
2022-11-23 22:51:16 +00:00
Behdad Esfahbod
404cb99d86
[buffer-diff] Fix check for glyph flag equality
...
I'm not sure if the old behavior was intentional, but it was checking
that the glyph flags were a subset of the reference buffer's glyph
flags. I don't see why that is useful. Fix that.
Then make the buffer-verify code ignore flag differences when verifying
buffers, since our unsafe-to-concat flag at least, is conservative and
not guaranteed to be produced the same in fragments. See:
https://github.com/harfbuzz/harfbuzz/issues/3888
2022-11-23 15:37:03 -07:00
Garret Rieger
4c49daf7cd
[subset] actually use the preprocessed face in hb-subset.
...
Tests weren't actually using the preprocessed face due to this typo in util/hb-subset.
2022-11-23 22:33:57 +00:00
Garret Rieger
2c0afde737
[subset] add an inprogress accelerator to plan.
...
This allows subset code to cache information into the accelerator during preprocess subset. Previously the accelerator was created at the end of subsetting.
2022-11-23 13:41:52 -07:00
Garret Rieger
81640fdffe
[subset] fix leaked font in glyf::subset(...)
2022-11-23 13:41:52 -07:00
Behdad Esfahbod
dcce53ddcb
[cff] Micro-optimize fetch_op
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
0bf7d9eb4d
[subset-cff] Micro-optimize encode_byte
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
a23f820427
[subset-cff] Micro-optimize array access
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
1e8f1ac677
[subset-glyf] Micro-optimize array access
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
356d135ed6
[subset-glyf] Reduce roundf calls
...
Saves 7% on MPLUS1-Variable/6000 benchmark.
2022-11-23 13:20:48 -07:00
Garret Rieger
463ae07e99
[subset] In the preprocess subset call always use long loca.
...
Long loca is needed so that we can store the trimmed glyph bytes to allow us to safely skip trimming in the later subset.
2022-11-23 12:52:55 -07:00
Behdad Esfahbod
299ec902eb
[glyf] Move instanciation to serialize()
2022-11-22 16:03:02 -07:00
Behdad Esfahbod
d8d881f22d
[subset-glyf] Don't create a second glyf accelerator
2022-11-22 15:24:16 -07:00
Behdad Esfahbod
7560930070
[glyf] Add _create_font_for_instancing
2022-11-22 15:22:25 -07:00
Behdad Esfahbod
40634ceeb0
[glyf] Adjust data types
2022-11-22 15:07:16 -07:00
Behdad Esfahbod
ba0d28ea36
[glyf] Fix font error check
2022-11-22 15:01:48 -07:00
Behdad Esfahbod
04c525019c
[glyf] Use a malloc instead of calloc
2022-11-22 14:54:55 -07:00
Behdad Esfahbod
024aa81805
[glyf] Micro-optimize encode_coord
2022-11-22 14:51:42 -07:00
Behdad Esfahbod
b6694597f9
[glyf] Micro-optimize encode_flag()
2022-11-22 14:49:01 -07:00
Behdad Esfahbod
d47cfe7936
[glyf] Minor use operator ++
2022-11-22 14:45:04 -07:00
Behdad Esfahbod
03e6bde790
[glyf] Minor adjustment to lastflag handling
...
No logic change.
2022-11-22 14:40:50 -07:00
Behdad Esfahbod
0ca9fda889
[glyf] Remove misplaced comment
2022-11-22 14:39:10 -07:00
Behdad Esfahbod
44be8ef4ce
[gvar] Skip degenerate all-untouched delta-sets
2022-11-22 14:21:25 -07:00
Behdad Esfahbod
656bb223f1
[gvar] Micro-optimize unpack_points
2022-11-22 14:16:40 -07:00
Behdad Esfahbod
a383027262
[gvar] Cosmetic
2022-11-22 14:15:17 -07:00
Behdad Esfahbod
be89919a70
[gvar] is_valid() remove a check
...
I don't know why this check was there, but it doesn't make sense
because that function never returns 0 / false.
2022-11-22 13:56:20 -07:00
Behdad Esfahbod
e8ddf107d0
[gvar] Optimize a loop
2022-11-22 13:29:32 -07:00
Behdad Esfahbod
dd6fcec92c
[gvar] Remove a conditional
2022-11-22 13:27:40 -07:00