fofi/FoFiTrueType.cc   |   12 ++++++++++--
 poppler/PSOutputDev.cc |    2 +-
 splash/SplashFTFont.cc |    2 +-
 3 files changed, 12 insertions(+), 4 deletions(-)

New commits:
commit 68c6ebc78b89eec94a9c3538fe6e27561a21b680
Author: Carlos Garcia Campos <[email protected]>
Date:   Thu Sep 1 17:49:46 2011 +0200

    xpdf303: codeToGID items can be < 0 now

diff --git a/fofi/FoFiTrueType.cc b/fofi/FoFiTrueType.cc
index 53fb1a5..36467f8 100644
--- a/fofi/FoFiTrueType.cc
+++ b/fofi/FoFiTrueType.cc
@@ -1179,8 +1179,16 @@ void FoFiTrueType::writeTTF(FoFiOutputFunc outputFunc,
     newCmapTab[42] = 0;                // idRangeOffset[1]
     newCmapTab[43] = 0;
     for (i = 0; i < 256; ++i) {
-      newCmapTab[44 + 2*i] = codeToGID[i] >> 8;
-      newCmapTab[44 + 2*i + 1] = codeToGID[i] & 0xff;
+      if (codeToGID[i] < 0) {
+       //~ this may not be correct - we want this character to never be
+       //~ displayed, but mapping it to the notdef glyph may result in
+       //~ little boxes being displayed
+       newCmapTab[44 + 2*i] = 0;
+       newCmapTab[44 + 2*i + 1] = 0;
+      } else {
+       newCmapTab[44 + 2*i] = codeToGID[i] >> 8;
+       newCmapTab[44 + 2*i + 1] = codeToGID[i] & 0xff;
+      }
     }
   } else {
     newCmapLen = 0;
diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc
index 0f03c2b..5c16d44 100644
--- a/poppler/PSOutputDev.cc
+++ b/poppler/PSOutputDev.cc
@@ -4625,7 +4625,7 @@ void PSOutputDev::drawString(GfxState *state, GooString 
*s) {
        ++nChars;
       }
     } else {
-      if (!codeToGID || codeToGID[code]) {
+      if (!codeToGID || codeToGID[code] >= 0) {
        s2->append((char)code);
       }
     }
diff --git a/splash/SplashFTFont.cc b/splash/SplashFTFont.cc
index d663d08..48df63b 100644
--- a/splash/SplashFTFont.cc
+++ b/splash/SplashFTFont.cc
@@ -291,7 +291,7 @@ double SplashFTFont::getGlyphAdvance(int c)
   } else {
     gid = (FT_UInt)c;
   }
-  if (ff->trueType && gid == 0) {
+  if (ff->trueType && gid < 0) {
     // skip the TrueType notdef glyph
     return -1;
   }
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to