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;
}