Author: tilman
Date: Sat Sep 5 15:19:21 2026
New Revision: 1937903
Log:
PDFBOX-5960: refactor for next commit, by Valery Bokov
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
Sat Sep 5 15:19:17 2026 (r1937902)
+++
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
Sat Sep 5 15:19:21 2026 (r1937903)
@@ -567,32 +567,7 @@ public class PDTrueTypeFont extends PDSi
}
else
{
- // (3, 1) - (Windows, Unicode)
- if (cmapWinUnicode != null)
- {
- String unicode =
GlyphList.getAdobeGlyphList().toUnicode(name);
- if (unicode != null)
- {
- int uni = unicode.codePointAt(0);
- gid = cmapWinUnicode.getGlyphId(uni);
- }
- }
-
- // (1, 0) - (Macintosh, Roman)
- if (gid == 0 && cmapMacRoman != null)
- {
- Integer macCode = INVERTED_MACOS_ROMAN.get(name);
- if (macCode != null)
- {
- gid = cmapMacRoman.getGlyphId(macCode);
- }
- }
-
- // 'post' table
- if (gid == 0)
- {
- gid = ttf.nameToGID(name);
- }
+ gid = codeToGIDByName(name, gid);
}
}
else // symbolic
@@ -656,6 +631,42 @@ public class PDTrueTypeFont extends PDSi
}
return gid;
}
+
+ /**
+ * Resolves a glyph name to a GID, the way a non-symbolic font would: via
the (3, 1)
+ * Windows/Unicode cmap, the (1, 0) Macintosh/Roman cmap, or the 'post'
table, in that order.
+ *
+ * @param name PostScript glyph name
+ * @return GID (glyph index), or 0 if none of the tables have a mapping
for the name
+ */
+ private int codeToGIDByName(String name, int gid) throws IOException
+ {
+ // (3, 1) - (Windows, Unicode)
+ if (cmapWinUnicode != null)
+ {
+ String unicode = GlyphList.getAdobeGlyphList().toUnicode(name);
+ if (unicode != null)
+ {
+ int uni = unicode.codePointAt(0);
+ gid = cmapWinUnicode.getGlyphId(uni);
+ }
+ }
+ // (1, 0) - (Macintosh, Roman)
+ if (gid == 0 && cmapMacRoman != null)
+ {
+ Integer macCode = INVERTED_MACOS_ROMAN.get(name);
+ if (macCode != null)
+ {
+ gid = cmapMacRoman.getGlyphId(macCode);
+ }
+ }
+ // 'post' table
+ if (gid == 0)
+ {
+ gid = ttf.nameToGID(name);
+ }
+ return gid;
+ }
/**
* extract all useful "cmap" subtables.