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