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 2021/02/06 11:59:54 UTC
svn commit: r1886254 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
Author: lehmi
Date: Sat Feb 6 11:59:53 2021
New Revision: 1886254
URL: http://svn.apache.org/viewvc?rev=1886254&view=rev
Log:
PDFBOX-5094: removed first attempt for a fix, rearranged existing code to meet the spec
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1886254&r1=1886253&r2=1886254&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Sat Feb 6 11:59:53 2021
@@ -549,8 +549,7 @@ public class PDTrueTypeFont extends PDSi
extractCmapTable();
int gid = 0;
- if (!isSymbolic() // non-symbolic
- || encoding instanceof WinAnsiEncoding || encoding instanceof MacRomanEncoding)
+ if (!isSymbolic()) // non-symbolic
{
String name = encoding.getName(code);
if (".notdef".equals(name))
@@ -589,6 +588,30 @@ public class PDTrueTypeFont extends PDSi
}
else // symbolic
{
+ // PDFBOX-4755 / PDF.js #5501
+ // PDFBOX-3965: fallback for font has that the symbol flag but isn't
+ if (gid == 0 && cmapWinUnicode != null)
+ {
+ if (encoding instanceof WinAnsiEncoding || encoding instanceof MacRomanEncoding)
+ {
+ String name = encoding.getName(code);
+ if (".notdef".equals(name))
+ {
+ return 0;
+ }
+ String unicode = GlyphList.getAdobeGlyphList().toUnicode(name);
+ if (unicode != null)
+ {
+ int uni = unicode.codePointAt(0);
+ gid = cmapWinUnicode.getGlyphId(uni);
+ }
+ }
+ else
+ {
+ gid = cmapWinUnicode.getGlyphId(code);
+ }
+ }
+
// (3, 0) - (Windows, Symbol)
if (cmapWinSymbol != null)
{
@@ -621,30 +644,7 @@ public class PDTrueTypeFont extends PDSi
{
gid = cmapMacRoman.getGlyphId(code);
}
-
- // PDFBOX-4755 / PDF.js #5501
- if (gid == 0 && cmapWinUnicode != null)
- {
- gid = cmapWinUnicode.getGlyphId(code);
- }
-
- // PDFBOX-3965: fallback for font has that the symbol flag but isn't
- if (gid == 0 && cmapWinUnicode != null && encoding != null)
- {
- String name = encoding.getName(code);
- if (".notdef".equals(name))
- {
- return 0;
- }
- String unicode = GlyphList.getAdobeGlyphList().toUnicode(name);
- if (unicode != null)
- {
- int uni = unicode.codePointAt(0);
- gid = cmapWinUnicode.getGlyphId(uni);
- }
- }
}
-
return gid;
}