File xpdf-cid-ttf-unicode-fix2.diff of Package xpdf
--- xpdf/GfxFont.cc
+++ xpdf/GfxFont.cc
@@ -1486,7 +1486,8 @@
int unicodeCmap, macRomanCmap, msSymbolCmap, cmap;
GBool useMacRoman, useUnicode;
char *charName;
- Unicode u;
+ Unicode u[64];
+ const int ulen = sizeof(u) / sizeof(Unicode);
int code, i;
int mapsize;
int cidlen;
@@ -1510,7 +1511,7 @@
while (cidlen < ctu->getMapLen()) {
int n;
- if ((n = ctu->mapToUnicode((CharCode)cidlen, &u, 1)) == 0) {
+ if ((n = ctu->mapToUnicode((CharCode)cidlen, u, ulen)) == 0) {
cidlen++;
continue;
}
@@ -1519,7 +1520,20 @@
mapsize *= 2;
map = (Gushort *)grealloc(map, mapsize * sizeof(Gushort));
}
- map[cidlen] = ff->mapCodeToGID(cmap, u);
+ if (n == 1)
+ map[cidlen] = ff->mapCodeToGID(cmap, u[0]);
+ else {
+ char str[n + 1];
+ Unicode u2;
+ for (i = 0; i < n; i++)
+ str[i] = u[i];
+ str[i] = 0;
+ u2 = globalParams->mapNameToUnicode(str);
+ if (u2)
+ map[cidlen] = ff->mapCodeToGID(cmap, u2);
+ else
+ map[cidlen] = cidlen; /* FIXME */
+ }
cidlen++;
}