summaryrefslogtreecommitdiff
path: root/src/cairo-cff-subset.c
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2017-05-28 09:07:54 +0930
committerAdrian Johnson <ajohnson@redneon.com>2017-05-28 09:12:56 +0930
commit0fd0fd0ae9ad8cfb177bb844091de98c0235917e (patch)
tree1570ecf38862c45b9fedb2c8b796102a2c3d5383 /src/cairo-cff-subset.c
parent9d44136ef8e2a1ad2c6631beb4bbdaeed7a2dad8 (diff)
downloadcairo-0fd0fd0ae9ad8cfb177bb844091de98c0235917e.tar.gz
subsetting: support variable fonts
If the font is a non default variant, fallback to creating a font from the outlines.
Diffstat (limited to 'src/cairo-cff-subset.c')
-rw-r--r--src/cairo-cff-subset.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c
index 775ca61be..bd3bfde70 100644
--- a/src/cairo-cff-subset.c
+++ b/src/cairo-cff-subset.c
@@ -2788,13 +2788,20 @@ _cairo_cff_font_create (cairo_scaled_font_subset_t *scaled_font_subset,
{
const cairo_scaled_font_backend_t *backend;
cairo_int_status_t status;
+ cairo_bool_t is_synthetic;
cairo_cff_font_t *font;
backend = scaled_font_subset->scaled_font->backend;
- /* We need to use a fallback font generated from the synthesized outlines. */
- if (backend->is_synthetic && backend->is_synthetic (scaled_font_subset->scaled_font))
- return CAIRO_INT_STATUS_UNSUPPORTED;
+ /* We need to use a fallback font if this font differs from the CFF outlines. */
+ if (backend->is_synthetic) {
+ status = backend->is_synthetic (scaled_font_subset->scaled_font, &is_synthetic);
+ if (unlikely (status))
+ return status;
+
+ if (is_synthetic)
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+ }
font = calloc (1, sizeof (cairo_cff_font_t));
if (unlikely (font == NULL))