63 lines
2.2 KiB
Diff
63 lines
2.2 KiB
Diff
From 164ddc22ee0d5b63a81d5148f44c37dd132a9356 Mon Sep 17 00:00:00 2001
|
|
Message-Id: <164ddc22ee0d5b63a81d5148f44c37dd132a9356.1542272812.git.mjg@fedoraproject.org>
|
|
From: Tor Andersson <tor.andersson@artifex.com>
|
|
Date: Mon, 5 Nov 2018 17:49:09 +0100
|
|
Subject: [PATCH] Fix 700043: Don't assume a font is t3 just because
|
|
fz_outline_glyph fails.
|
|
|
|
---
|
|
source/fitz/svg-device.c | 31 ++++++++++++++++---------------
|
|
1 file changed, 16 insertions(+), 15 deletions(-)
|
|
|
|
diff --git a/source/fitz/svg-device.c b/source/fitz/svg-device.c
|
|
index 2876a89b..aaf53b99 100644
|
|
--- a/source/fitz/svg-device.c
|
|
+++ b/source/fitz/svg-device.c
|
|
@@ -472,27 +472,28 @@ svg_dev_text_span_as_paths_defs(fz_context *ctx, fz_device *dev, fz_text_span *s
|
|
/* Need to send this one */
|
|
fz_rect rect;
|
|
fz_path *path;
|
|
- path = fz_outline_glyph(ctx, span->font, gid, fz_identity);
|
|
- if (path)
|
|
+ out = start_def(ctx, sdev);
|
|
+ fz_write_printf(ctx, out, "<symbol id=\"font_%x_%x\">\n", fnt->id, gid);
|
|
+ if (fz_font_ft_face(ctx, span->font))
|
|
{
|
|
- rect = fz_bound_path(ctx, path, NULL, fz_identity);
|
|
- shift.e = -rect.x0;
|
|
- shift.f = -rect.y0;
|
|
- fz_transform_path(ctx, path, shift);
|
|
- out = start_def(ctx, sdev);
|
|
- fz_write_printf(ctx, out, "<symbol id=\"font_%x_%x\">\n", fnt->id, gid);
|
|
- fz_write_printf(ctx, out, "<path");
|
|
- svg_dev_path(ctx, sdev, path);
|
|
- fz_write_printf(ctx, out, "/>\n");
|
|
- fz_drop_path(ctx, path);
|
|
+ path = fz_outline_glyph(ctx, span->font, gid, fz_identity);
|
|
+ if (path)
|
|
+ {
|
|
+ rect = fz_bound_path(ctx, path, NULL, fz_identity);
|
|
+ shift.e = -rect.x0;
|
|
+ shift.f = -rect.y0;
|
|
+ fz_transform_path(ctx, path, shift);
|
|
+ fz_write_printf(ctx, out, "<path");
|
|
+ svg_dev_path(ctx, sdev, path);
|
|
+ fz_write_printf(ctx, out, "/>\n");
|
|
+ fz_drop_path(ctx, path);
|
|
+ }
|
|
}
|
|
- else
|
|
+ else if (fz_font_t3_procs(ctx, span->font))
|
|
{
|
|
rect = fz_bound_glyph(ctx, span->font, gid, fz_identity);
|
|
shift.e = -rect.x0;
|
|
shift.f = -rect.y0;
|
|
- out = start_def(ctx, sdev);
|
|
- fz_write_printf(ctx, out, "<symbol id=\"font_%x_%x\">\n", fnt->id, gid);
|
|
fz_run_t3_glyph(ctx, span->font, gid, shift, dev);
|
|
}
|
|
fz_write_printf(ctx, out, "</symbol>\n");
|
|
--
|
|
2.19.1.1238.g4b45f61cc0
|
|
|