Skip to content

Commit d447044

Browse files
committed
Use /ToUnicode when extracting simple TrueType fonts without explicit encoding
DEVSIX-1681
1 parent 76b2613 commit d447044

File tree

4 files changed

+4
-2
lines changed

4 files changed

+4
-2
lines changed

kernel/src/main/java/com/itextpdf/kernel/font/DocTrueTypeFont.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private DocTrueTypeFont(PdfDictionary fontDictionary) {
7575
subtype = fontDictionary.getAsName(PdfName.Subtype);
7676
}
7777

78-
static TrueTypeFont createFontProgram(PdfDictionary fontDictionary, FontEncoding fontEncoding) {
78+
static TrueTypeFont createFontProgram(PdfDictionary fontDictionary, FontEncoding fontEncoding, CMapToUnicode toUnicode) {
7979
DocTrueTypeFont fontProgram = new DocTrueTypeFont(fontDictionary);
8080
fillFontDescriptor(fontProgram, fontDictionary.getAsDictionary(PdfName.FontDescriptor));
8181

@@ -91,6 +91,8 @@ static TrueTypeFont createFontProgram(PdfDictionary fontDictionary, FontEncoding
9191
//FontEncoding.codeToUnicode table has higher priority
9292
if (glyph.hasValidUnicode() && fontEncoding.convertToByte(glyph.getUnicode()) == i) {
9393
fontProgram.unicodeToGlyph.put(glyph.getUnicode(), glyph);
94+
} else if (toUnicode != null) {
95+
glyph.setChars(toUnicode.lookup(i));
9496
}
9597
if (widths[i] > 0) {
9698
glyphsWithWidths++;

kernel/src/main/java/com/itextpdf/kernel/font/PdfTrueTypeFont.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public class PdfTrueTypeFont extends PdfSimpleFont<TrueTypeFont> {
9090
newFont = false;
9191
CMapToUnicode toUni = FontUtil.processToUnicode(fontDictionary.get(PdfName.ToUnicode));
9292
fontEncoding = DocFontEncoding.createDocFontEncoding(fontDictionary.get(PdfName.Encoding), toUni);
93-
fontProgram = DocTrueTypeFont.createFontProgram(fontDictionary, fontEncoding);
93+
fontProgram = DocTrueTypeFont.createFontProgram(fontDictionary, fontEncoding, toUni);
9494
embedded = ((IDocFontProgram) fontProgram).getFontFile() != null;
9595
subset = false;
9696
}

0 commit comments

Comments
 (0)