[poppler] poppler/GfxFont.cc

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun May 17 10:15:18 UTC 2020


 poppler/GfxFont.cc |   32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

New commits:
commit 62727d0119b4e1a6c000506f47673385f7eccd43
Author: Albert Astals Cid <aacid at kde.org>
Date:   Sun May 17 11:53:21 2020 +0200

    Read CIDToGIDMap for all GfxCIDFont fonts
    
    Also revert my old hack to fix rendering of bug-poppler20605.pdf since
    that was breaking the PS export.
    
    What my old hack did was force the font type to be one of those that
    read the CIDToGIDMap, what the new fix does is actually just read the
    CIDToGIDMap for all fonts

diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc
index 07cb5f6f..adaf474e 100644
--- a/poppler/GfxFont.cc
+++ b/poppler/GfxFont.cc
@@ -429,7 +429,7 @@ GfxFontType GfxFont::getFontType(XRef *xref, Dict *fontDict, Ref *embID) {
 	t = isType0 ? fontCIDType2 : fontTrueType;
 	break;
       case fofiIdOpenTypeCFF8Bit:
-	t = expectedType; // hack: open type always == expected type? s. bug-poppler20605.pdf
+	t = isType0 ? fontCIDType0COT : fontType1COT;
 	break;
       case fofiIdOpenTypeCFFCID:
 	t = fontCIDType0COT;
@@ -1826,24 +1826,22 @@ GfxCIDFont::GfxCIDFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA,
   }
 
   // CIDToGIDMap (for embedded TrueType fonts)
-  if (type == fontCIDType2 || type == fontCIDType2OT) {
-    obj1 = desFontDict->lookup("CIDToGIDMap");
-    if (obj1.isStream()) {
-      cidToGIDLen = 0;
-      int i = 64;
-      cidToGID = (int *)gmallocn(i, sizeof(int));
-      obj1.streamReset();
-      while ((c1 = obj1.streamGetChar()) != EOF &&
-	     (c2 = obj1.streamGetChar()) != EOF) {
-	if (cidToGIDLen == i) {
-	  i *= 2;
-	  cidToGID = (int *)greallocn(cidToGID, i, sizeof(int));
-	}
-	cidToGID[cidToGIDLen++] = (c1 << 8) + c2;
+  obj1 = desFontDict->lookup("CIDToGIDMap");
+  if (obj1.isStream()) {
+    cidToGIDLen = 0;
+    int i = 64;
+    cidToGID = (int *)gmallocn(i, sizeof(int));
+    obj1.streamReset();
+    while ((c1 = obj1.streamGetChar()) != EOF &&
+	    (c2 = obj1.streamGetChar()) != EOF) {
+      if (cidToGIDLen == i) {
+	i *= 2;
+	cidToGID = (int *)greallocn(cidToGID, i, sizeof(int));
       }
-    } else if (!obj1.isName("Identity") && !obj1.isNull()) {
-      error(errSyntaxError, -1, "Invalid CIDToGIDMap entry in CID font");
+      cidToGID[cidToGIDLen++] = (c1 << 8) + c2;
     }
+  } else if (!obj1.isName("Identity") && !obj1.isNull()) {
+    error(errSyntaxError, -1, "Invalid CIDToGIDMap entry in CID font");
   }
 
   //----- character metrics -----


More information about the poppler mailing list