<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>This patch is from xpdf-3.00, fixed display cjk fonts which 
not embedded in pdf file (need xpdf cjk language package).</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>diff -Naur poppler-0.3.3.orig/poppler/CharCodeToUnicode.h 
poppler-0.3.3/poppler/CharCodeToUnicode.h<BR>--- 
poppler-0.3.3.orig/poppler/CharCodeToUnicode.h&nbsp;2005-03-04 
03:46:00.000000000 +0800<BR>+++ 
poppler-0.3.3/poppler/CharCodeToUnicode.h&nbsp;2005-07-06 20:23:08.000000000 
+0800<BR>@@ -66,6 +66,10 @@<BR>&nbsp;&nbsp; // Map a CharCode to 
Unicode.<BR>&nbsp;&nbsp; int mapToUnicode(CharCode c, Unicode *u, int 
size);<BR>&nbsp;<BR>+&nbsp; // Return the mapping's length, i.e., one more than 
the max char<BR>+&nbsp; // code supported by the mapping.<BR>+&nbsp; CharCode 
getLength() { return mapLen; }<BR>+<BR>&nbsp;private:<BR>&nbsp;<BR>&nbsp;&nbsp; 
void parseCMap1(int (*getCharFunc)(void *), void *data, int nBits);<BR>diff 
-Naur poppler-0.3.3.orig/poppler/SplashOutputDev.cc 
poppler-0.3.3/poppler/SplashOutputDev.cc<BR>--- 
poppler-0.3.3.orig/poppler/SplashOutputDev.cc&nbsp;2005-03-04 03:46:01.000000000 
+0800<BR>+++ poppler-0.3.3/poppler/SplashOutputDev.cc&nbsp;2005-07-06 
20:12:12.000000000 +0800<BR>@@ -502,7 +502,11 @@<BR>&nbsp;&nbsp; double m11, 
m12, m21, m22, w1, w2;<BR>&nbsp;&nbsp; SplashCoord mat[4];<BR>&nbsp;&nbsp; char 
*name;<BR>-&nbsp; int c, substIdx, n, code;<BR>+//&nbsp; int c, substIdx, n, 
code;<BR>+&nbsp; CharCodeToUnicode *ctu;<BR>+&nbsp; Unicode uBuf[8];<BR>+&nbsp; 
int c, substIdx, n, code, cmap;<BR>+&nbsp; dfp = NULL;<BR>&nbsp;<BR>&nbsp;&nbsp; 
needFontUpdate = gFalse;<BR>&nbsp;&nbsp; font = NULL;<BR>@@ -546,7 +550,7 
@@<BR>&nbsp;&nbsp;&nbsp;&nbsp; } else if (!(fileName = 
gfxFont-&gt;getExtFontFile())) 
{<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // look for a display font 
mapping or a substitute font<BR>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dfp = 
NULL;<BR>+//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dfp = 
NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gfxFont-&gt;isCIDFont()) 
{<BR>&nbsp;&nbsp;if (((GfxCIDFont *)gfxFont)-&gt;getCollection()) 
{<BR>&nbsp;&nbsp;&nbsp; dfp = globalParams-&gt;<BR>@@ -652,10 +656,54 
@@<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
case fontCIDType2:<BR>+/*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = 
((GfxCIDFont 
*)gfxFont)-&gt;getCIDToGIDLen();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
codeToGID = (Gushort *)gmalloc(n * 
sizeof(Gushort));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcpy(codeToGID, 
((GfxCIDFont 
*)gfxFont)-&gt;getCIDToGID(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n * 
sizeof(Gushort));<BR>+*/<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; codeToGID = 
NULL;<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = 
0;<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dfp) {<BR>+&nbsp;// create a 
CID-to-GID mapping, via Unicode<BR>+&nbsp;if ((ctu = ((GfxCIDFont 
*)gfxFont)-&gt;getToUnicode())) {<BR>+&nbsp;&nbsp; if ((ff = 
FoFiTrueType::load(fileName-&gt;getCString()))) {<BR>+&nbsp;&nbsp;&nbsp;&nbsp; 
// look for a Unicode cmap<BR>+&nbsp;&nbsp;&nbsp;&nbsp; for (cmap = 0; cmap &lt; 
ff-&gt;getNumCmaps(); ++cmap) {<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
((ff-&gt;getCmapPlatform(cmap) == 3 &amp;&amp;<BR>+&nbsp;&nbsp;&nbsp;&nbsp; 
ff-&gt;getCmapEncoding(cmap) == 1) ||<BR>+&nbsp;&nbsp;&nbsp; 
ff-&gt;getCmapPlatform(cmap) == 0) 
{<BR>+&nbsp;&nbsp;break;<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>+&nbsp;&nbsp;&nbsp;&nbsp; }<BR>+&nbsp;&nbsp;&nbsp;&nbsp; if (cmap &lt; 
ff-&gt;getNumCmaps()) {<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // map CID 
-&gt; Unicode -&gt; GID<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = 
ctu-&gt;getLength();<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; codeToGID = 
(Gushort *)gmalloc(n * 
sizeof(Gushort));<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (code = 0; code 
&lt; n; ++code) {<BR>+&nbsp;&nbsp;if (ctu-&gt;mapToUnicode(code, uBuf, 8) &gt; 
0) {<BR>+&nbsp;&nbsp;&nbsp; codeToGID[code] = ff-&gt;mapCodeToGID(cmap, 
uBuf[0]);<BR>+&nbsp;&nbsp;} else {<BR>+&nbsp;&nbsp;&nbsp; codeToGID[code] = 
0;<BR>+&nbsp;&nbsp;}<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>+&nbsp;&nbsp;&nbsp;&nbsp; }<BR>+&nbsp;&nbsp;&nbsp;&nbsp; delete 
ff;<BR>+&nbsp;&nbsp; }<BR>+&nbsp;&nbsp; ctu-&gt;decRefCnt();<BR>+&nbsp;} else 
{<BR>+&nbsp;&nbsp; error(-1, "Couldn't find a mapping to Unicode for font 
'%s'",<BR>+&nbsp;&nbsp;gfxFont-&gt;getName() ? 
gfxFont-&gt;getName()-&gt;getCString()<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
: "(unnamed)");<BR>+&nbsp;}<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else 
{<BR>+&nbsp;if (((GfxCIDFont *)gfxFont)-&gt;getCIDToGID()) {<BR>+&nbsp;&nbsp; n 
= ((GfxCIDFont *)gfxFont)-&gt;getCIDToGIDLen();<BR>+&nbsp;&nbsp; codeToGID = 
(Gushort *)gmalloc(n * sizeof(Gushort));<BR>+&nbsp;&nbsp; memcpy(codeToGID, 
((GfxCIDFont *)gfxFont)-&gt;getCIDToGID(),<BR>+&nbsp;&nbsp; n * 
sizeof(Gushort));<BR>+&nbsp;}<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!(fontFile = 
fontEngine-&gt;loadTrueTypeFont(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
id,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
fileName-&gt;getCString(),</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=2>&nbsp;</DIV></FONT></BODY></HTML>