Commit graph

12671 commits

Author SHA1 Message Date
Behdad Esfahbod
ae223764a3 [test/draw] Typo 2022-02-13 15:39:14 -06:00
Ebrahim Byagowi
0429921c10 [draw/test] Add test for freetype callback
Let's have that part of the code also covered.
2022-02-14 00:18:13 +03:30
Ebrahim Byagowi
d4588204e5 [draw/glyf] Emit empty contours
This makes it actually match freetype behaviour even though rasterizer
should filter such contours specially for stroking.

See https://github.com/harfbuzz/harfbuzz/pull/3411#discussion_r802283827 for the context.
2022-02-13 23:50:53 +03:30
Khaled Hosny
f942874fac [draw] Fix some introspection warnings 2022-02-13 13:21:15 -06:00
Khaled Hosny
2da6accda6 [meson] Update cairo submodule
To include the latest color glyph fixes
2022-02-13 13:21:15 -06:00
Behdad Esfahbod
0858463ac3 [draw/glyf] Don't skip empty contours of size 2
See:
https://github.com/harfbuzz/harfbuzz/pull/3411#discussion_r804988217
2022-02-13 13:21:15 -06:00
Khaled Hosny
0e357c504c [draw] Test scaling subfont differently from parent 2022-02-13 13:21:15 -06:00
Behdad Esfahbod
096121badb [util] Implement --sub-font
Internally creates a font at 2x and creates a sub-font from it...
2022-02-13 13:21:15 -06:00
Behdad Esfahbod
57aa8c3b3a [draw] Another try at a stable draw moveto semantic 2022-02-13 13:21:15 -06:00
Behdad Esfahbod
151f205819 [draw] Emit move_to immediately, like other operators 2022-02-13 13:21:15 -06:00
Khaled Hosny
aca80a4a40 [draw] Add test for applying synthetic slant 2022-02-13 13:21:15 -06:00
Khaled Hosny
052fd2d8b9 [draw] Add test for hb_draw_move_to() etc 2022-02-13 13:21:15 -06:00
Behdad Esfahbod
640b6ffddd [util] Default font-funcs to 'ot' instead of 'ft' 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
9cc9ffe352 [util/draw] If HB_DRAW is not set, choose depending on cairo version
If HB_DRAW=0, don't use it, if HB_DRAW=1, use it, if unset, choose depending
on cairo version
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
22f2c78c28 [util/draw] Explicitly chain from render_color_glyph to render_glyph
This seems to be more robust.  See:
https://github.com/harfbuzz/harfbuzz/pull/3411#issuecomment-1033176635
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
6a3dec357c [util/draw] Use hb-draw in hb-view only if HB_DRAW=1 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
18b8a1c345 [draw] Fix conversion warnings 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
6812f7ee1e [draw] Implement COLRv0 fonts 2022-02-13 13:21:14 -06:00
Khaled Hosny
74ebfc646a [meson] Update cairo subproject
Update to the current master branch so that is has
cairo_user_font_face_set_render_color_glyph_func().

I had to disable optimized builds on win[32|64] crossbuild setups
because they are now broken in the CI (something about cairo defining
_FORTIFY_SOURCE for optimized builds that MingW does not like).
2022-02-13 13:21:14 -06:00
Khaled Hosny
628847b5c8 [doc] Link to respective draw callback functions 2022-02-13 13:21:14 -06:00
Khaled Hosny
7245298e25 [doc] Document HB_DRAW_STATE_DEFAULT 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
8f519d55ac [meson] Put back Experimental-API infrastructure
Just unused for now.
2022-02-13 13:21:14 -06:00
Khaled Hosny
8e892bdb54 [doc] Message draw documentation a bit 2022-02-13 13:21:14 -06:00
Khaled Hosny
cf28821337 [meson] fix building with Cairo subproject
We can’t pass internal (subproject) dependency to cpp.has_function(), so
we manually hard-code the result.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
cdf1cb35db [draw] Destroy callback data 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
5c558586eb [util/draw] Apply slant to non-user-fonts as well 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
c56c13756b [draw] Document more 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
2376230523 [draw] Flesh out docs a bit 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
bc6c3b8401 [font] Update get_glyph_shape() doc 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
732c749ef7 [font] Adjust synthetic-slant docs 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
4818b7ed72 [util] Add --font-slant 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
59067db9f4 [font/draw] Slant drawings
Need to update hb_font_set_synthetic_slant() docs now that we do this.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
aa5c7a3811 [draw-session] Add slant 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
4f2704adb6 [draw] Add more reserved items to hb_draw_state_t
Since these are free basically.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
2ce19f2868 [font/draw] Fetch shape from parent font if not implemented in font 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
d6b61dff95 [draw] Minor cleanup 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
cfc06c24d5 [util/draw] Render color glyphs if cairo API available 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
542f8269cb [util/draw/ft] Use hb-draw for font-funcs=ft as well
If cairo is >= 1.17.5.

This essentially breaks emoji and bitmap fonts for now.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
6d5b998f25 [ft/draw] Implement hb-draw for hb-ft 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
370bec938b [draw] Rename internal draw_session_t to hb_draw_session_t 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
5d2df1208a [util] Use hb-draw to render alternatively to cairo-ft
Is automatically enabled if cairo is recent enough, and font-funcs are
not 'ft'.

Uses cairo-user-font backend internally.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
a357e5d889 [draw] Do quadratic-to-cubic conversion in nil quadratic implementation 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
c681331c3f [draw] Rename internal draw_helper_t to draw_session_t 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
f1a9a9ccaf [draw-state] Pass state down to callbacks 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
a9dd9f0bae [draw] Add public move_to/line_to/... API that take a draw-state 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
9f05362d43 [test-draw] Fix compiler warning 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
ebc2a133c3 [draw] Rename internal methods 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
86fcd4fe98 [draw] Simplify start_path 2022-02-13 13:21:14 -06:00
Behdad Esfahbod
1740916ede [draw] Remove check for no-op
This is unnecessary overhead. Up to rasterizers to handle this.  Plus,
this throws off point-numbers in uses that rely on it.

Disabled one test that broke with this.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod
fc78592e67 [draw-state] Add type and use in draw-helper 2022-02-13 13:21:14 -06:00