diff -u -r old/cairo-1.14.12/src/cairo-quartz-font.c new/cairo-1.14.12/src/cairo-quartz-font.c
--- old/cairo-1.14.12/src/cairo-quartz-font.c	2018-09-22 20:14:51.000000000 -0600
+++ new/cairo-1.14.12/src/cairo-quartz-font.c	2018-09-22 20:17:24.000000000 -0600
@@ -589,6 +589,7 @@
     CGAffineTransform textMatrix;
     CGPathRef glyphPath;
     CTFontRef ctFont;
+    int empty_path;
     cairo_path_fixed_t *path;
 
     if (glyph == INVALID_GLYPH) {
@@ -605,19 +606,30 @@
 
     ctFont = CTFontCreateWithGraphicsFont (font_face->cgFont, 1.0, NULL, NULL);
     glyphPath = CTFontCreatePathForGlyph (ctFont, glyph, &textMatrix);
+    empty_path = 0;
+    if (!glyphPath) {
+	/* an empty glyph path may just reflect whitespace; check bounding rects */
+	CGRect r;
+	r = CTFontGetBoundingRectsForGlyphs(ctFont, kCTFontHorizontalOrientation, &glyph, NULL, 1);
+	if (memcmp(&CGRectNull, &r, sizeof(CGRect)))
+	    empty_path = 1;
+    }
     CFRelease (ctFont);
-    if (!glyphPath)
+    if (!glyphPath && !empty_path)
 	return CAIRO_INT_STATUS_UNSUPPORTED;
 
     path = _cairo_path_fixed_create ();
     if (!path) {
-	CGPathRelease (glyphPath);
+	if (glyphPath)
+	    CGPathRelease (glyphPath);
 	return _cairo_error(CAIRO_STATUS_NO_MEMORY);
     }
 
-    CGPathApply (glyphPath, path, _cairo_quartz_path_apply_func);
+    if (glyphPath)
+	CGPathApply (glyphPath, path, _cairo_quartz_path_apply_func);
 
-    CGPathRelease (glyphPath);
+    if (glyphPath)
+	CGPathRelease (glyphPath);
 
     _cairo_scaled_glyph_set_path (scaled_glyph, &font->base, path);
 
Only in new/cairo-1.14.12/src: cairo-quartz-font.c~
