You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2023/12/13 09:48:49 UTC

svn commit: r1914623 - in /pdfbox/branches/3.0/fontbox/src: main/java/org/apache/fontbox/ttf/gsub/ test/java/org/apache/fontbox/ttf/gsub/ test/resources/ttf/

Author: tilman
Date: Wed Dec 13 09:48:48 2023
New Revision: 1914623

URL: http://svn.apache.org/viewvc?rev=1914623&view=rev
Log:
PDFBOX-5729: integrate fontbox subproject changes for Devanagari and Gujarati by JAVAUSER to 3.0, plus tests that were in pdfbox subproject

Added:
    pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java
      - copied, changed from r1914620, pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java
    pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java
      - copied, changed from r1914620, pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java
    pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForBengaliTest.java
      - copied unchanged from r1914620, pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForBengaliTest.java
    pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagariTest.java
      - copied unchanged from r1914620, pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagariTest.java
    pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujaratiTest.java
      - copied unchanged from r1914620, pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujaratiTest.java
    pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForLatinTest.java
      - copied unchanged from r1914620, pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/gsub/GsubWorkerForLatinTest.java
    pdfbox/branches/3.0/fontbox/src/test/resources/ttf/Lohit-Devanagari.ttf
      - copied unchanged from r1914620, pdfbox/trunk/fontbox/src/test/resources/ttf/Lohit-Devanagari.ttf
    pdfbox/branches/3.0/fontbox/src/test/resources/ttf/Lohit-Gujarati.ttf
      - copied unchanged from r1914620, pdfbox/trunk/fontbox/src/test/resources/ttf/Lohit-Gujarati.ttf
Modified:
    pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerFactory.java

Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerFactory.java?rev=1914623&r1=1914622&r2=1914623&view=diff
==============================================================================
--- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerFactory.java (original)
+++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerFactory.java Wed Dec 13 09:48:48 2023
@@ -17,6 +17,8 @@
 
 package org.apache.fontbox.ttf.gsub;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.fontbox.ttf.CmapLookup;
 import org.apache.fontbox.ttf.model.GsubData;
 import org.apache.fontbox.ttf.model.Language;
@@ -29,19 +31,29 @@ import org.apache.fontbox.ttf.model.Lang
  */
 public class GsubWorkerFactory
 {
+    private static final Log LOG = LogFactory.getLog(GsubWorkerFactory.class);
 
     public GsubWorker getGsubWorker(CmapLookup cmapLookup, GsubData gsubData)
     {
+        //TODO this needs to be redesigned / improved because if a font supports several languages,
+        // it will choose one of them and maybe not the one expected.
+        if (LOG.isDebugEnabled())
+        {
+            LOG.debug("Language: " + gsubData.getLanguage());
+        }
         switch (gsubData.getLanguage())
         {
         case BENGALI:
             return new GsubWorkerForBengali(cmapLookup, gsubData);
+        case DEVANAGARI:
+            return new GsubWorkerForDevanagari(cmapLookup, gsubData);
+        case GUJARATI:
+            return new GsubWorkerForGujarati(cmapLookup, gsubData);
         case LATIN:
             return new GsubWorkerForLatin(cmapLookup, gsubData);
         default:
             return new DefaultGsubWorker();
         }
-
     }
 
 }

Copied: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java (from r1914620, pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java)
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java?p2=pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java&p1=pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java&r1=1914620&r2=1914623&rev=1914623&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java (original)
+++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForDevanagari.java Wed Dec 13 09:48:48 2023
@@ -22,12 +22,12 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import org.apache.fontbox.ttf.CmapLookup;
 import org.apache.fontbox.ttf.model.GsubData;
 import org.apache.fontbox.ttf.model.ScriptFeature;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 /**
  * 
@@ -38,7 +38,7 @@ import org.apache.logging.log4j.Logger;
  */
 public class GsubWorkerForDevanagari implements GsubWorker
 {
-    private static final Logger LOG = LogManager.getLogger(GsubWorkerForDevanagari.class);
+    private static final Log LOG = LogFactory.getLog(GsubWorkerForDevanagari.class);
     
     private static final String RKRF_FEATURE = "rkrf";
     private static final String VATU_FEATURE = "vatu";
@@ -91,11 +91,17 @@ public class GsubWorkerForDevanagari imp
                             gsubData.getFeature(VATU_FEATURE),
                             intermediateGlyphsFromGsub);
                 }
-                LOG.debug("the feature {} was not found", feature);
+                if (LOG.isDebugEnabled())
+                {
+                    LOG.debug("the feature " + feature + " was not found");
+                }
                 continue;
             }
 
-            LOG.debug("applying the feature {}", feature);
+            if (LOG.isDebugEnabled())
+            {
+                LOG.debug("applying the feature " + feature);
+            }
             ScriptFeature scriptFeature = gsubData.getFeature(feature);
             intermediateGlyphsFromGsub = applyGsubFeature(scriptFeature,
                     intermediateGlyphsFromGsub);
@@ -109,7 +115,10 @@ public class GsubWorkerForDevanagari imp
         Set<List<Integer>> rkrfGlyphIds = rkrfGlyphsForSubstitution.getAllGlyphIdsForSubstitution();
         if (rkrfGlyphIds.isEmpty())
         {
-            LOG.debug("Glyph substitution list for {} is empty.", rkrfGlyphsForSubstitution.getName());
+            if (LOG.isDebugEnabled())
+            {
+                LOG.debug("Glyph substitution list for " + rkrfGlyphsForSubstitution.getName() + " is empty.");
+            }
             return originalGlyphIds;
         }
         // Replace this with better implementation to get second GlyphId from rkrfGlyphIds
@@ -209,7 +218,10 @@ public class GsubWorkerForDevanagari imp
         Set<List<Integer>> allGlyphIdsForSubstitution = scriptFeature.getAllGlyphIdsForSubstitution();
         if (allGlyphIdsForSubstitution.isEmpty())
         {
-            LOG.debug("getAllGlyphIdsForSubstitution() for {} is empty", scriptFeature.getName());
+            if (LOG.isDebugEnabled())
+            {
+                LOG.debug("getAllGlyphIdsForSubstitution() for " + scriptFeature.getName() + " is empty");
+            }
             return originalGlyphs;
         }
         GlyphArraySplitter glyphArraySplitter = new GlyphArraySplitterRegexImpl(
@@ -228,13 +240,18 @@ public class GsubWorkerForDevanagari imp
                 gsubProcessedGlyphs.addAll(chunk);
             }
         });
-        LOG.debug("originalGlyphs: {}, gsubProcessedGlyphs: {}", originalGlyphs, gsubProcessedGlyphs);
+        if (LOG.isDebugEnabled())
+        {
+            LOG.debug("originalGlyphs: " + originalGlyphs + " gsubProcessedGlyphs: " + gsubProcessedGlyphs);
+        }
         return gsubProcessedGlyphs;
     }
 
     private List<Integer> getBeforeHalfGlyphIds()
     {
-        return List.of(getGlyphId(BEFORE_HALF_CHAR));
+        List<Integer> glyphIds = new ArrayList<>();
+        glyphIds.add(getGlyphId(BEFORE_HALF_CHAR));
+        return Collections.unmodifiableList(glyphIds);
     }
 
     private List<Integer> getRephGlyphIds()

Copied: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java (from r1914620, pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java)
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java?p2=pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java&p1=pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java&r1=1914620&r2=1914623&rev=1914623&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java (original)
+++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/gsub/GsubWorkerForGujarati.java Wed Dec 13 09:48:48 2023
@@ -22,12 +22,12 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import org.apache.fontbox.ttf.CmapLookup;
 import org.apache.fontbox.ttf.model.GsubData;
 import org.apache.fontbox.ttf.model.ScriptFeature;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 /**
  * 
@@ -38,7 +38,7 @@ import org.apache.logging.log4j.Logger;
  */
 public class GsubWorkerForGujarati implements GsubWorker
 {
-    private static final Logger LOG = LogManager.getLogger(GsubWorkerForGujarati.class);
+    private static final Log LOG = LogFactory.getLog(GsubWorkerForGujarati.class);
     
     private static final String RKRF_FEATURE = "rkrf";
     private static final String VATU_FEATURE = "vatu";
@@ -91,10 +91,16 @@ public class GsubWorkerForGujarati imple
                             gsubData.getFeature(VATU_FEATURE),
                             intermediateGlyphsFromGsub);
                 }
-                LOG.debug("the feature {} was not found", feature);
+                if (LOG.isDebugEnabled())
+                {
+                    LOG.debug("the feature " + feature + " was not found");
+                }
                 continue;
             }
-            LOG.debug("applying the feature {}", feature);
+            if (LOG.isDebugEnabled())
+            {
+                LOG.debug("applying the feature " + feature);
+            }
             ScriptFeature scriptFeature = gsubData.getFeature(feature);
             intermediateGlyphsFromGsub = applyGsubFeature(scriptFeature,
                     intermediateGlyphsFromGsub);
@@ -108,7 +114,10 @@ public class GsubWorkerForGujarati imple
         Set<List<Integer>> rkrfGlyphIds = rkrfGlyphsForSubstitution.getAllGlyphIdsForSubstitution();
         if (rkrfGlyphIds.isEmpty())
         {
-            LOG.debug("Glyph substitution list for {} is empty.", rkrfGlyphsForSubstitution.getName());
+            if (LOG.isDebugEnabled())
+            {
+                LOG.debug("Glyph substitution list for " + rkrfGlyphsForSubstitution.getName() + " is empty.");
+            }
             return originalGlyphIds;
         }
 
@@ -208,7 +217,10 @@ public class GsubWorkerForGujarati imple
         Set<List<Integer>> allGlyphIdsForSubstitution = scriptFeature.getAllGlyphIdsForSubstitution();
         if (allGlyphIdsForSubstitution.isEmpty())
         {
-            LOG.debug("getAllGlyphIdsForSubstitution() for {} is empty", scriptFeature.getName());
+            if (LOG.isDebugEnabled())
+            {
+                LOG.debug("getAllGlyphIdsForSubstitution() for " + scriptFeature.getName() + " is empty");
+            }
             return originalGlyphs;
         }
         GlyphArraySplitter glyphArraySplitter = new GlyphArraySplitterRegexImpl(
@@ -227,7 +239,10 @@ public class GsubWorkerForGujarati imple
                 gsubProcessedGlyphs.addAll(chunk);
             }
         });
-        LOG.debug("originalGlyphs: {}, gsubProcessedGlyphs: {}", originalGlyphs, gsubProcessedGlyphs);
+        if (LOG.isDebugEnabled())
+        {
+            LOG.debug("originalGlyphs: " + originalGlyphs + " gsubProcessedGlyphs: " + gsubProcessedGlyphs);
+        }
         return gsubProcessedGlyphs;
     }