Author: lehmi
Date: Sun May 4 11:50:51 2025
New Revision: 1925397
URL: http://svn.apache.org/viewvc?rev=1925397&view=rev
Log:
PDFBOX-5998: avoid unnecessary map lookups based on a proposal by Axel Howind
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cmap/CMap.java
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
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/encoding/GlyphList.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
---
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
(original)
+++
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
Sun May 4 11:50:51 2025
@@ -180,8 +180,8 @@ public class CFFCIDFont extends CFFFont
{
return 1000;
}
- Map<String, Object> privDict =
this.privateDictionaries.get(fdArrayIndex);
- return privDict.containsKey("defaultWidthX") ?
((Number)privDict.get("defaultWidthX")).intValue() : 1000;
+ Object privDictValue =
this.privateDictionaries.get(fdArrayIndex).get("defaultWidthX");
+ return privDictValue instanceof Number ? ((Number)
privDictValue).intValue() : 1000;
}
/**
@@ -196,8 +196,8 @@ public class CFFCIDFont extends CFFFont
{
return 0;
}
- Map<String, Object> privDict =
this.privateDictionaries.get(fdArrayIndex);
- return privDict.containsKey("nominalWidthX") ?
((Number)privDict.get("nominalWidthX")).intValue() : 0;
+ Object privDictValue =
this.privateDictionaries.get(fdArrayIndex).get("nominalWidthX");
+ return privDictValue instanceof Number ? ((Number)
privDictValue).intValue() : 0;
}
/**
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
---
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
(original)
+++
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
Sun May 4 11:50:51 2025
@@ -673,13 +673,13 @@ public class CFFParser
parseCIDFontDicts(input, topDict, (CFFCIDFont) font, numEntries);
- List<Number> privMatrix = null;
List<Map<String, Object>> fontDicts = ((CFFCIDFont)
font).getFontDicts();
- if (!fontDicts.isEmpty() &&
fontDicts.get(0).containsKey("FontMatrix"))
+ List<Number> privMatrix = null;
+ if (!fontDicts.isEmpty())
{
- privMatrix = (List<Number>) fontDicts.get(0).get("FontMatrix");
+ privMatrix = (List<Number>)
fontDicts.get(0).getOrDefault("FontMatrix", null);
}
- // some malformed fonts have FontMatrix in their Font DICT, see
PDFBOX-2495
+ // some malformed fonts have FontMatrix in their Font DICT,
seePDFBOX-2495
List<Number> matrix = topDict.getArray("FontMatrix", null);
if (matrix == null)
{
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cmap/CMap.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cmap/CMap.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
--- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cmap/CMap.java
(original)
+++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cmap/CMap.java
Sun May 4 11:50:51 2025
@@ -243,15 +243,12 @@ public class CMap
return 0;
}
Integer cid = null;
- if (codeToCid.containsKey(code.length))
+ Map<Integer, Integer> codeToCidMap = codeToCid.get(code.length);
+ if (codeToCidMap != null)
{
- cid = codeToCid.get(code.length).get(toInt(code));
+ cid = codeToCidMap.get(toInt(code));
}
- if (cid == null)
- {
- cid = toCIDFromRanges(code);
- }
- return cid;
+ return cid != null ? cid : toCIDFromRanges(code);
}
/**
@@ -295,9 +292,10 @@ public class CMap
return 0;
}
Integer cid = null;
- if (codeToCid.containsKey(length))
+ Map<Integer, Integer> codeToCidMap = codeToCid.get(length);
+ if (codeToCidMap != null)
{
- cid = codeToCid.get(length).get(code);
+ cid = codeToCidMap.get(code);
}
return cid != null ? cid : toCIDFromRanges(code, length);
}
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
---
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
(original)
+++
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
Sun May 4 11:50:51 2025
@@ -91,13 +91,6 @@ public class VerticalOriginTable extends
*/
public int getOriginY(int gid)
{
- if (origins.containsKey(gid))
- {
- return origins.get(gid);
- }
- else
- {
- return defaultVertOriginY;
- }
+ return origins.getOrDefault(gid, defaultVertOriginY);
}
}
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
(original)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
Sun May 4 11:50:51 2025
@@ -604,14 +604,10 @@ public class PDStructureElement extends
public String getStandardStructureType()
{
String type = this.getStructureType();
- Map<String,Object> roleMap = getRoleMap();
- if (roleMap.containsKey(type))
+ Object mappedValue = getRoleMap().get(type);
+ if (mappedValue instanceof String)
{
- Object mappedValue = getRoleMap().get(type);
- if (mappedValue instanceof String)
- {
- type = (String)mappedValue;
- }
+ type = (String) mappedValue;
}
return type;
}
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
(original)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
Sun May 4 11:50:51 2025
@@ -78,10 +78,7 @@ public class PDTrueTypeFont extends PDSi
{
MacOSRomanEncoding.INSTANCE.getCodeToNameMap().forEach((key, value) ->
{
- if (!INVERTED_MACOS_ROMAN.containsKey(value))
- {
- INVERTED_MACOS_ROMAN.put(value, key);
- }
+ INVERTED_MACOS_ROMAN.putIfAbsent(value, key);
});
}
@@ -93,7 +90,7 @@ public class PDTrueTypeFont extends PDSi
private CmapSubtable cmapWinSymbol = null;
private CmapSubtable cmapMacRoman = null;
private boolean cmapInitialized = false;
- private Map<Integer, Integer> gidToCode; // for embedding
+ private final Map<Integer, Integer> gidToCode = new HashMap<>(); // for
embedding
private BoundingBox fontBBox;
/**
@@ -454,19 +451,15 @@ public class PDTrueTypeFont extends PDSi
*/
protected Map<Integer, Integer> getGIDToCode() throws IOException
{
- if (gidToCode != null)
+ if (!gidToCode.isEmpty())
{
return gidToCode;
}
- gidToCode = new HashMap<>();
for (int code = 0; code <= 255; code++)
{
int gid = codeToGID(code);
- if (!gidToCode.containsKey(gid))
- {
- gidToCode.put(gid, code);
- }
+ gidToCode.putIfAbsent(gid, code);
}
return gidToCode;
}
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
(original)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
Sun May 4 11:50:51 2025
@@ -136,12 +136,6 @@ public final class GlyphList
String name = parts[0];
String[] unicodeList = parts[1].split(" ");
- if (nameToUnicode.containsKey(name))
- {
- LOG.warn("duplicate value for " + name + " -> " +
parts[1] + " " +
- nameToUnicode.get(name));
- }
-
int[] codePoints = new int[unicodeList.length];
int index = 0;
for (String hex : unicodeList)
@@ -151,8 +145,12 @@ public final class GlyphList
String string = new String(codePoints, 0 ,
codePoints.length);
// forward mapping
- nameToUnicode.put(name, string);
-
+ String oldMapping = nameToUnicode.put(name, string);
+ if (oldMapping != null)
+ {
+ LOG.warn("duplicate value for " + name + " -> " +
parts[1] + " "
+ + nameToUnicode.get(name));
+ }
// reverse mapping
// PDFBOX-3884: take the various standard encodings as
canonical,
// e.g. tilde over ilde
@@ -162,10 +160,14 @@ public final class GlyphList
MacExpertEncoding.INSTANCE.contains(name) ||
SymbolEncoding.INSTANCE.contains(name) ||
ZapfDingbatsEncoding.INSTANCE.contains(name);
- if (!unicodeToName.containsKey(string) || forceOverride)
+ if (forceOverride)
{
unicodeToName.put(string, name);
}
+ else
+ {
+ unicodeToName.putIfAbsent(string, name);
+ }
}
}
}
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java?rev=1925397&r1=1925396&r2=1925397&view=diff
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
(original)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
Sun May 4 11:50:51 2025
@@ -586,11 +586,8 @@ public class PDExtendedGraphicsState imp
*/
public PDSoftMask getSoftMask()
{
- if (!dict.containsKey(COSName.SMASK))
- {
- return null;
- }
- return PDSoftMask.create(dict.getDictionaryObject(COSName.SMASK));
+ COSBase smask = dict.getDictionaryObject(COSName.SMASK);
+ return smask == null ? null : PDSoftMask.create(smask);
}
/**