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());
     }
 
     /**