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 2021/11/26 14:01:53 UTC
svn commit: r1895355 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
Author: tilman
Date: Fri Nov 26 14:01:53 2021
New Revision: 1895355
URL: http://svn.apache.org/viewvc?rev=1895355&view=rev
Log:
PDFBOX-5324, PDFBOX-5331: Get unicode from TrueTypeFont cmap for non-embedded font
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1895355&r1=1895354&r2=1895355&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Fri Nov 26 14:01:53 2021
@@ -503,7 +503,7 @@ public class PDType0Font extends PDFont
}
// PDFBOX-5324: try to get unicode from font cmap
- if (descendantFont instanceof PDCIDFontType2 && descendantFont.isEmbedded())
+ if (descendantFont instanceof PDCIDFontType2)
{
TrueTypeFont font = ((PDCIDFontType2) descendantFont).getTrueTypeFont();
if (font != null)
@@ -513,7 +513,18 @@ public class PDType0Font extends PDFont
CmapLookup cmap = font.getUnicodeCmapLookup(false);
if (cmap != null)
{
- int gid = descendantFont.codeToGID(code);
+ int gid;
+ if (descendantFont.isEmbedded())
+ {
+ // original PDFBOX-5324 supported only embedded fonts
+ gid = descendantFont.codeToGID(code);
+ }
+ else
+ {
+ // PDFBOX-5331: this bypasses the fallback attempt in
+ // PDCIDFontType2.codeToGID() which would bring a stackoverflow
+ gid = descendantFont.codeToCID(code);
+ }
List<Integer> codes = cmap.getCharCodes(gid);
if (codes != null && !codes.isEmpty())
{