[poppler] Support for CJK fonts in postscript / on Windows platforms

Thomas Freitag Thomas.Freitag at kabelmail.de
Sat Feb 25 23:44:09 PST 2012


I implemented a patch which supports CJK fonts in the postscript output 
device and on Windows platforms in general. It consists mainly of three 

1. Adapt bug fix for bug 11413 to the postscript device
2. A small bug fix when locateFont doesn't find a suitable font and 
returns a null pointer
3. CJK substitute implementation on WIndows platforms.

to 1.:
Adapting the implementation of the bug fix for splash and cairo to the 
postscript device was quite easy. But my first proofs of the output with 
ghostscript 8.71 shows some regressions where the CJK chars have a 
smaller height than the default square of the font. But the "48" in the 
output of bug-poppler11413.pdf which is set in a "normal" font but 
rotated was at the right position. Then I stepped to ghostscript 9.04, 
and now the CJK chars were shown correctly, but the 48 was positioned 
wrong. But because of these different tests I think that it is still a 
problem in ghostscript when using a mix of CJK fonts and "normal" fonts. 
BTW, also Acrobat X distiller has problems with the position of the "48"!

to 2.:
On my first tests with PDF which uses non embedded CJK fonts on Windows 
I got crashes. Reason for it was that GlobalParamWin returns Helvetica, 
which is not a CID font, but locateFont accepts here only CID fonts and 
therefore returns a NULL pointer. I first fixed that and then decided to 
return as default MS Mincho if a CID font is expected.

to 3.:
When You install ghostscript on WIndows You're able to switch on CJK 
support. This will create a  cidfmap file in the gs-lib directory. The 
ps file which creates it (mkcidfm.ps) runs over the windows font 
directory and tries to create a suitable substitution table for missing 
CJK fonts. The cidfmap file is more or less PDF like, so it's quite easy 
to parse it with our parser and create a substitution table in 
GlobalParamsWin and use that table. But I expect it in the poppler data 
dir instead of searching for ghostscript installation. If it is not 
there, it always returns the default CID font of point 2.
You can either copy it from the gs lib directory or create it with the 
ghostscript tool calling

gswin32c -q -dBATCH -sFONTDIR=<windows font directory>  
-sCIDFMAP=<popper data dir>/cidfmap mkcidfm.ps

To clearify the format of cidfmap I attach the file produced on my 
installation. Keep care: I have not a default windows installation with 
windows on c:/windows, my windows installation is on drive f!

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cjkfonts.diff
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20120226/ff34b4eb/attachment-0001.asc>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cidfmap
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20120226/ff34b4eb/attachment-0001.txt>

More information about the poppler mailing list