You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/09/21 23:03:41 UTC
svn commit: r1626632 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
pdmodel/font/PDSimpleFont.java rendering/font/TTFGlyph2D.java
Author: jahewson
Date: Sun Sep 21 21:03:41 2014
New Revision: 1626632
URL: http://svn.apache.org/r1626632
Log:
PDFBOX-2372: Standard 14 Type 0 fonts should have empty .notdef glyph
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/font/TTFGlyph2D.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=1626632&r1=1626631&r2=1626632&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Sun Sep 21 21:03:41 2014
@@ -59,6 +59,14 @@ public abstract class PDSimpleFont exten
));
}
+ /**
+ * Returns true if this font is one of the "standard 14" fonts.
+ */
+ public static boolean isStandard14(String name)
+ {
+ return STANDARD_14.contains(name);
+ }
+
protected Encoding encoding;
protected GlyphList glyphList;
private final Set<Integer> noUnicode = new HashSet<Integer>(); // for logging
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/font/TTFGlyph2D.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/font/TTFGlyph2D.java?rev=1626632&r1=1626631&r2=1626632&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/font/TTFGlyph2D.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/font/TTFGlyph2D.java Sun Sep 21 21:03:41 2014
@@ -34,6 +34,7 @@ import org.apache.fontbox.ttf.HeaderTabl
import org.apache.fontbox.ttf.TrueTypeFont;
import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
@@ -108,25 +109,6 @@ public class TTFGlyph2D implements Glyph
}
}
- // todo: HACK!
- private static Set<String> STANDARD_14 = new HashSet<String>();
- static
- {
- // standard 14 names
- STANDARD_14.addAll(Arrays.asList(
- "Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique", "Helvetica",
- "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique", "Times-Roman",
- "Times-Bold", "Times-Italic", "Times-BoldItalic", "Symbol", "ZapfDingbats"
- ));
- // alternative names from Adobe Supplement to the ISO 32000
- STANDARD_14.addAll(Arrays.asList(
- "CourierCourierNew", "CourierNew", "CourierNew,Italic", "CourierNew,Bold",
- "CourierNew,BoldItalic", "Arial", "Arial,Italic", "Arial,Bold", "Arial,BoldItalic",
- "TimesNewRoman", "TimesNewRoman,Italic", "TimesNewRoman,Bold", "TimesNewRoman,BoldItalic"
- ));
- }
-
-
/**
* Returns the path describing the glyph for the given glyphId.
*
@@ -163,8 +145,10 @@ public class TTFGlyph2D implements Glyph
GlyphData glyph = ttf.getGlyph().getGlyph(gid);
- // todo: MEGA HACK! (for CIDFont "known") - sort of works (width issues?)
- if (gid == 0 && !font.isEmbedded() && STANDARD_14.contains(font.getName()))
+ // workaround for Type0 "Standard 14" font handling, as Adobe has GID 0 as empty
+ // while Microsoft uses a rectangle, which we don't want to appear
+ if (isCIDFont && gid == 0 && !font.isEmbedded() &&
+ PDSimpleFont.isStandard14(font.getName()))
{
glyph = null;
}