You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2026/10/18 12:53:28 UTC
svn commit: r1939245 - in pdfbox/branches/3.0: . pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font
Author: lehmi
Date: Sun Oct 18 12:53:28 2026
New Revision: 1939245
Log:
PDFBOX-6287: add Encoding::getCode to access inverted mapping, remove the inverted MacOSRomanEncoding as the encoding itself already provides an inverted mapping
Modified:
pdfbox/branches/3.0/ (props changed)
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/Standard14Fonts.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Sun Oct 18 12:49:36 2026 (r1939244)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Sun Oct 18 12:53:28 2026 (r1939245)
@@ -74,13 +74,6 @@ public class PDTrueTypeFont extends PDSi
private static final int START_RANGE_F100 = 0xF100;
private static final int START_RANGE_F200 = 0xF200;
- private static final Map<String, Integer> INVERTED_MACOS_ROMAN = new HashMap<>(250);
- static
- {
- MacOSRomanEncoding.INSTANCE.getCodeToNameMap().forEach((key, value) ->
- INVERTED_MACOS_ROMAN.putIfAbsent(value, key));
- }
-
private final TrueTypeFont ttf;
private final OpenTypeFont otf;
private final boolean isEmbedded;
@@ -405,7 +398,6 @@ public class PDTrueTypeFont extends PDSi
}
String name = getGlyphList().codePointToName(unicode);
- Map<String, Integer> inverted = encoding.getNameToCodeMap();
if (!ttf.hasGlyph(name))
{
@@ -418,7 +410,7 @@ public class PDTrueTypeFont extends PDSi
}
}
- int code = inverted.get(name);
+ int code = encoding.getCode(name);
return new byte[] { (byte)code };
}
else
@@ -750,7 +742,7 @@ public class PDTrueTypeFont extends PDSi
// (1, 0) - (Macintosh, Roman)
if (gid == 0 && cmapMacRoman != null)
{
- Integer macCode = INVERTED_MACOS_ROMAN.get(name);
+ Integer macCode = MacOSRomanEncoding.INSTANCE.getCode(name);
if (macCode != null)
{
gid = cmapMacRoman.getGlyphId(macCode);
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Sun Oct 18 12:49:36 2026 (r1939244)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Sun Oct 18 12:53:28 2026 (r1939245)
@@ -402,15 +402,13 @@ public class PDType1CFont extends PDSimp
String nameInFont = getNameInFont(name);
- Map<String, Integer> inverted = encoding.getNameToCodeMap();
-
if (nameInFont.equals(".notdef") || !genericFont.hasGlyph(nameInFont))
{
throw new IllegalArgumentException(
String.format("No glyph for U+%04X in font %s", unicode, getName()));
}
- int code = inverted.get(name);
+ int code = encoding.getCode(name);
return new byte[] { (byte)code };
}
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Sun Oct 18 12:49:36 2026 (r1939244)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Sun Oct 18 12:53:28 2026 (r1939245)
@@ -435,8 +435,7 @@ public class PDType1Font extends PDSimpl
}
}
- Map<String, Integer> inverted = encoding.getNameToCodeMap();
- int code = inverted.get(name);
+ int code = encoding.getCode(name);
if (code < 0)
{
throw new IllegalArgumentException(
@@ -599,7 +598,7 @@ public class PDType1Font extends PDSimpl
//TODO bring up better solution than this
if ("SymbolMT".equals(genericFont.getName()))
{
- Integer code = SymbolEncoding.INSTANCE.getNameToCodeMap().get(name);
+ Integer code = SymbolEncoding.INSTANCE.getCode(name);
if (code != null)
{
uniName = getUniNameOfCodePoint(code + 0xF000);
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/Standard14Fonts.java
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/Standard14Fonts.java Sun Oct 18 12:49:36 2026 (r1939244)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/Standard14Fonts.java Sun Oct 18 12:53:28 2026 (r1939245)
@@ -291,7 +291,7 @@ public final class Standard14Fonts
}
if ("SymbolMT".equals(mappedFont.getName()))
{
- Integer code = SymbolEncoding.INSTANCE.getNameToCodeMap().get(glyphName);
+ Integer code = SymbolEncoding.INSTANCE.getCode(glyphName);
if (code != null)
{
String uniName = getUniNameOfCodePoint(code + 0xF000);
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java Sun Oct 18 12:49:36 2026 (r1939244)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java Sun Oct 18 12:53:28 2026 (r1939245)
@@ -169,6 +169,17 @@ public abstract class Encoding implement
}
/**
+ * This will take a character name and get the code for that name.
+ *
+ * @param name PostScript glyph name
+ * @return character code
+ */
+ public Integer getCode(String name)
+ {
+ return inverted.get(name);
+ }
+
+ /**
* Returns the name of this encoding.
*
* @return the name of the encoding
Modified: pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java Sun Oct 18 12:49:36 2026 (r1939244)
+++ pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java Sun Oct 18 12:53:28 2026 (r1939245)
@@ -51,10 +51,10 @@ class TestFontEncoding
void testAdd() throws Exception
{
// see PDFDBOX-3332
- int codeForSpace = WinAnsiEncoding.INSTANCE.getNameToCodeMap().get("space");
+ int codeForSpace = WinAnsiEncoding.INSTANCE.getCode("space");
assertEquals(32, codeForSpace);
- codeForSpace = MacRomanEncoding.INSTANCE.getNameToCodeMap().get("space");
+ codeForSpace = MacRomanEncoding.INSTANCE.getCode("space");
assertEquals(32, codeForSpace);
}
@@ -70,8 +70,8 @@ class TestFontEncoding
differences.add(COSName.getPDFName("a"));
dictEncodingDict.setItem(COSName.DIFFERENCES, differences);
DictionaryEncoding dictEncoding = new DictionaryEncoding(dictEncodingDict, false, null);
- assertNull(dictEncoding.getNameToCodeMap().get("space"));
- assertEquals(32, dictEncoding.getNameToCodeMap().get("a").intValue());
+ assertNull(dictEncoding.getCode("space"));
+ assertEquals(32, dictEncoding.getCode("a").intValue());
}
/**