Welcome to ~taiji at gyve

Created: 4 Sep 2003, Modified: 30 Sep 2003, Updated: 5 Oct 2005
Back | Japanese

Data storage for gs-cjk project

(gs7.07) cannot handle MS *.ttf bundled with (Office 2004 for) Mac OS X Tiger [2005/9/15] and Hira*.otf bundled with Mac OS X [2005/9/16,21,27,10/3,10/5]
First, apply all published patches:
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/tagoh.jp_junk/ghostscript-7.07-bigposttable.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/tagoh.jp_junk/ghostscript-7.07-gsublookuptable.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/tagoh.jp_junk/ghostscript-7.07-coverage-glyphcount.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/fix_rename_font_gs_cidfn.ps.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/fix_cidfontname_Encoding_CIDToGIDMap_DW_W.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/modify_ps2pdfwr.patch
$ cd ghostscript-7.07
$ patch -p1 < ../ghostscript-7.07-bigposttable.patch
$ patch -p1 < ../ghostscript-7.07-gsublookuptable.patch
$ patch -p1 < ../ghostscript-7.07-coverage-glyphcount.patch
$ patch -p0 < ../fix_rename_font_gs_cidfn.ps.patch
$ patch -p0 < ../fix_cidfontname_Encoding_CIDToGIDMap_DW_W.patch
$ (cd lib && patch -p0 < ../../modify_ps2pdfwr.patch)	# optional
Next, apply a patch for lib/gs_ttf.ps to handle TrueType fonts which have a big cmap table and a patch for lib/gs_ttf.ps to avoid putting illegal not-defined glyph on mapping table for CIDs; These patches have no concern in ResourceFork-edition fonts:
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/ghostscript-7.07-bigcmaptable.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/ghostscript-7.07-noglyph-gid0.patch
$ cd ghostscript-7.07
$ patch -p0 -b < ../ghostscript-7.07-bigcmaptable.patch
$ patch -p0 -b < ../ghostscript-7.07-noglyph-gid0.patch
Incidentally, apply a patch for lib/gs_ttf.ps to increase CIDCount of Adobe-CNS1 (I've forgotten to put it on view)
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/fix_cidfonttype2_Adobe-CNS1-4.patch
$ cd ghostscript-7.07
$ patch -p0 -b < ../fix_cidfonttype2_Adobe-CNS1-4.patch
[2005/9/16,21,27,10/3] Additionally, apply a patch for lib/gs_cff.ps to fix seeking CFF table (This problem can be found also by using ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/samples/Munhwa*.otf fonts), a patch for lib/gs_cff.ps to fix the operand stack overflow at readFDSelect, a patch for src/gdevpsf2.c to fix the problem of creating PDF with OpenType fonts and [2005/10/5] a patch for src/gdevpsf2.c to avoid return_error caused by incomplete offset check at creating PDF with OpenType fonts
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/ghostscript-7.07-seekCFFtable.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/ghostscript-7.07-readFDSelect.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/ghostscript-7.07-write_GSubrs.patch	# revised at 2005/10/3,	compare the revised result and the problem created from the source.
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/ghostscript-7.07-nosyoffsetcheck.patch	# added at 2005/10/5,	compare the patched result and the problem created from the source.
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/fix_cidfonttype2_Adobe-Japan1-6.patch
$ curl -RO -C - http://www.aihara.co.jp/~taiji/gyve/tmp/modify_ps2pdfwr-20050921.patch
$ cd ghostscript-7.07
$ patch -p0 -b < ../ghostscript-7.07-seekCFFtable.patch
$ patch -p0 -b < ../ghostscript-7.07-readFDSelect.patch
$ patch -p0 -b < ../ghostscript-7.07-write_GSubrs.patch
$ patch -p0 -b < ../ghostscript-7.07-nosyoffsetcheck.patch
$ patch -p0 -b < ../fix_cidfonttype2_Adobe-Japan1-6.patch	# recommended with adobe-cmaps-200406.* at ftp://ftp.gyve.org/pub/gs-cjk/
$ (cd lib && patch -p0 < ../../modify_ps2pdfwr-20050921.patch)	# optional
Last, build and install gs7.07.
How to use TrueType and OpenType fonts on Mac OS X Tiger Some fonts have UTF-8-MAC encoded name and control characters, so let them symbolic link as follows:
#!/bin/sh
tt_fonts_dir=/usr/X11R6/lib/X11/fonts/truetype
ot_fonts_dir=/usr/X11R6/lib/X11/fonts/opentype

LN(){
  [ -f "$1" ] && ln -sf "$1" "$2"
}
evallines(){
  while read line; do
    eval $line
  done
}
[ ! -d "$tt_fonts_dir" ] && mkdir -p "$tt_fonts_dir"
(cd "$tt_fonts_dir" &&
  cat <<EOF | iconv -f UTF-8 -t UTF-8-MAC | evallines
LN "/Library/Fonts/儷宋 Pro.ttf"		LiSongPro.ttf
LN "/Library/Fonts/华文仿宋.ttf"		STFangsong.ttf
LN "/Library/Fonts/华文宋体.ttf"		STSong.ttf
LN "/Library/Fonts/华文楷体.ttf"		STKaiti.ttf
LN "/System/Library/Fonts/儷黑 Pro.ttf"	LiHeiPro.ttf
LN "/System/Library/Fonts/华文细黑.ttf"	STXihei.ttf
LN "/System/Library/Fonts/华文黑体.ttf"	STHeiti.ttf
LN "/Path To Fonts/Batang.ttf"			.
LN "/Path To Fonts/Gulim.ttf"			.
LN "/Path To Fonts/MS Gothic.ttf"		msgothic.ttf
LN "/Path To Fonts/MS Mincho.ttf"		msmincho.ttf
LN "/Path To Fonts/MS PGothic.ttf"		mspgothic.ttf
LN "/Path To Fonts/MS PMincho.ttf"		mspmincho.ttf
LN "/Path To Fonts/PMingLiU.ttf"		.
LN "/Path To Fonts/SimSun.ttf"			.
EOF
)
[ ! -d "$ot_fonts_dir" ] && mkdir -p "$ot_fonts_dir"
(cd "$ot_fonts_dir" &&
  cat <<EOF | iconv -f UTF-8 -t UTF-8-MAC | evallines
LN "/System/Library/Fonts/ヒラギノ丸ゴ Pro W4.otf"	HiraMaruPro-W4.otf
LN "/System/Library/Fonts/ヒラギノ明朝 Pro W3.otf"	HiraMinPro-W3.otf
LN "/System/Library/Fonts/ヒラギノ明朝 Pro W6.otf"	HiraMinPro-W6.otf
LN "/System/Library/Fonts/ヒラギノ角ゴ Pro W3.otf"	HiraKakuPro-W3.otf
LN "/System/Library/Fonts/ヒラギノ角ゴ Pro W6.otf"	HiraKakuPro-W6.otf
LN "/System/Library/Fonts/ヒラギノ角ゴ Std W8.otf"	HiraKakuStd-W8.otf
EOF
)
Next, create lib/CIDFnmap.OSX as follows:
%
% Adobe-CNS1
%
/PMingLiU			(/usr/X11R6/lib/X11/fonts/truetype/PMingLiU.ttf)	;
/SimSun-Adobe-CNS1		(/usr/X11R6/lib/X11/fonts/truetype/SimSun.ttf)		/Adobe-CNS1-Unicode	;
%/LiHeiPro-Medium		(/usr/X11R6/lib/X11/fonts/truetype/LiHeiPro.ttf)	;
%/LiSongPro-Light		(/usr/X11R6/lib/X11/fonts/truetype/LiSongPro.ttf)	;
%
% Adobe-GB1
%
/SimSun				(/usr/X11R6/lib/X11/fonts/truetype/SimSun.ttf)		;
/STHeiti-Regular		(/usr/X11R6/lib/X11/fonts/truetype/STHeiti.ttf)		/Adobe-GB1-Unicode	;
/STHeiti-Light			(/usr/X11R6/lib/X11/fonts/truetype/STXihei.ttf)		/Adobe-GB1-Unicode	;
/STFangsong-Regular		(/usr/X11R6/lib/X11/fonts/truetype/STFangsong.ttf)	/Adobe-GB1-Unicode	;
/STSong-Regular			(/usr/X11R6/lib/X11/fonts/truetype/STSong.ttf)		/Adobe-GB1-Unicode	;
/STKaiti-Regular		(/usr/X11R6/lib/X11/fonts/truetype/STKaiti.ttf)		/Adobe-GB1-Unicode	;
%
% Adobe-Japan1
%
/MS-Gothic			(/usr/X11R6/lib/X11/fonts/truetype/msgothic.ttf)	;
/MS-PGothic			(/usr/X11R6/lib/X11/fonts/truetype/mspgothic.ttf)	;
/MS-Mincho			(/usr/X11R6/lib/X11/fonts/truetype/msmincho.ttf)	;
/MS-PMincho			(/usr/X11R6/lib/X11/fonts/truetype/mspmincho.ttf)	;
/HiraKakuPro-W3			(/usr/X11R6/lib/X11/fonts/opentype/HiraKakuPro-W3.otf)	;
/HiraKakuPro-W6			(/usr/X11R6/lib/X11/fonts/opentype/HiraKakuPro-W6.otf)	;
/HiraKakuStd-W8			(/usr/X11R6/lib/X11/fonts/opentype/HiraKakuStd-W8.otf)	;
/HiraMaruPro-W4			(/usr/X11R6/lib/X11/fonts/opentype/HiraMaruPro-W4.otf)	;
/HiraMinPro-W3			(/usr/X11R6/lib/X11/fonts/opentype/HiraMinPro-W3.otf)	;
/HiraMinPro-W6			(/usr/X11R6/lib/X11/fonts/opentype/HiraMinPro-W6.otf)	;
%
% Adobe-Japan2
%
/MS-Gothic-Adobe-Japan2		(/usr/X11R6/lib/X11/fonts/truetype/msgothic.ttf)	/Adobe-Japan2	;
/MS-PGothic-Adobe-Japan2	(/usr/X11R6/lib/X11/fonts/truetype/mspgothic.ttf)	/Adobe-Japan2	;
/MS-Mincho-Adobe-Japan2		(/usr/X11R6/lib/X11/fonts/truetype/msmincho.ttf)	/Adobe-Japan2	;
/MS-PMincho-Adobe-Japan2	(/usr/X11R6/lib/X11/fonts/truetype/mspmincho.ttf)	/Adobe-Japan2	;
%
% Adobe-Korea1
%
/Batang				(/usr/X11R6/lib/X11/fonts/truetype/Batang.ttf)	;
/Gulim				(/usr/X11R6/lib/X11/fonts/truetype/Gulim.ttf)	;
and insert following line into lib/CIDFnmap:
	:
(CIDFnmap.OSX) .runlibfile
	:
Last, try like this.
$ cd examples/cjk
$ gs -sF=MS-Mincho all_aj1.ps
$ gs -sF=HiraMinPro-W3 all_aj1.ps
$ env NeverEmbedFontList=' ' NeverEmbedCIDFontList=' ' ps2pdf14 -sF=MS-Gothic all_aj1.ps
$ env NeverEmbedFontList=' ' NeverEmbedCIDFontList=' ' ps2pdf14 -sF=HiraKakuPro-W3 all_aj1.ps
By the way, gs7.07 cannot handle LiHeiPro-Medium and LiSongPro-Light for another reason.
(gs7.07) ps2pdf and CJK TrueType fonts [2003/9/30]
a patch for lib/gs_cidfn.ps to handle NeverEmbed CJK TrueType into PDF
% cd ghostscript-7.07
% patch -p0 -b < fix_rename_font_gs_cidfn.ps.patch
and a patch for src/gdevpdff.h, src/gdevpdff.c, src/gdevpdfw.c, src/gdevpdfs.c to write correct glyph widths of CJK TrueType into PDF, and not to write CIDToGIDMap of NeverEmbed CJK TrueType and Encoding of CIDFont into PDF (includes a patch for src/gdevpdff.c in toshiya-san's patches to use NeverEmbed)
% cd ghostscript-7.07
% patch -p0 -b < fix_cidfontname_Encoding_CIDToGIDMap_DW_W.patch
and requirements: References:
  1. http://www.on.cs.keio.ac.jp/~maru/replacejfonts/ (in Japanese)
  2. http://www2.kumagaku.ac.jp/teacher/herogw/gsfonts.html (in Japanese)
  3. http://www.matsusaka-u.ac.jp/~okumura/linux/gs707.html (in Japanese)
  4. toshiya-san's patches to use NeverEmbed
Results of testing CIDFontType0, CIDFontType2 and CFF/OpenType (some fonts requires Acrobat license and Cygwin environment to restage testing):
% env NeverEmbedCIDFontList=' ' ps2pdf14 testc.ps testc.pdf # compare with testc.pdf by unpatched gs
% env NeverEmbedCIDFontList=' ' ps2pdf14 testg.ps testg.pdf # compare with testg.pdf by unpatched gs
% env NeverEmbedCIDFontList=' ' ps2pdf14 testj.ps testj.pdf # compare with testj.pdf by unpatched gs
% env NeverEmbedCIDFontList=' ' ps2pdf14 testk.ps testk.pdf # compare with testk.pdf by unpatched gs
% ps2pdf14 testc.ps testc.pdf # compare with testc.pdf by unpatched gs
% ps2pdf14 testg.ps testg.pdf # compare with testg.pdf by unpatched gs
% ps2pdf14 testj.ps testj.pdf # compare with testj.pdf by unpatched gs
% ps2pdf14 testk.ps testk.pdf # compare with testk.pdf by unpatched gs
CIDFontType2 base (some TrueType fonts requires Cygwin environment to restage testing):
% ps2pdf14 all_ac1.ps all_ac1.pdf # compare with all_ac1.pdf by unpatched gs
% ps2pdf14 all_ag1.ps all_ag1.pdf # compare with all_ag1.pdf by unpatched gs
% ps2pdf14 all_aj1.ps all_aj1.pdf # compare with all_aj1.pdf by unpatched gs
% ps2pdf14 all_ak1.ps all_ak1.pdf # compare with all_ak1.pdf by unpatched gs
% ps2pdf14 gscjk_ac.ps gscjk_ac.pdf # compare with gscjk_ac.pdf by unpatched gs
% ps2pdf14 gscjk_ag.ps gscjk_ag.pdf # compare with gscjk_ag.pdf by unpatched gs
% ps2pdf14 gscjk_aj.ps gscjk_aj.pdf # compare with gscjk_aj.pdf by unpatched gs
% ps2pdf14 gscjk_ak.ps gscjk_ak.pdf # compare with gscjk_ak.pdf by unpatched gs
% ps2pdf14 iso2022.ps iso2022.pdf # compare with iso2022.pdf by unpatched gs
% ps2pdf14 iso2022v.ps iso2022v.pdf # compare with iso2022v.pdf by unpatched gs
CIDFontType0 base:
% ps2pdf14 all_ac1.ps all_ac1.pdf # compare with all_ac1.pdf by unpatched gs
% ps2pdf14 all_ag1.ps all_ag1.pdf # compare with all_ag1.pdf by unpatched gs
% ps2pdf14 all_aj1.ps all_aj1.pdf # compare with all_aj1.pdf by unpatched gs
% ps2pdf14 all_ak1.ps all_ak1.pdf # compare with all_ak1.pdf by unpatched gs
% ps2pdf14 gscjk_ac.ps gscjk_ac.pdf # compare with gscjk_ac.pdf by unpatched gs
% ps2pdf14 gscjk_ag.ps gscjk_ag.pdf # compare with gscjk_ag.pdf by unpatched gs
% ps2pdf14 gscjk_aj.ps gscjk_aj.pdf # compare with gscjk_aj.pdf by unpatched gs
% ps2pdf14 gscjk_ak.ps gscjk_ak.pdf # compare with gscjk_ak.pdf by unpatched gs
% ps2pdf14 iso2022.ps iso2022.pdf # compare with iso2022.pdf by unpatched gs
% ps2pdf14 iso2022v.ps iso2022v.pdf # compare with iso2022v.pdf by unpatched gs
Results of testing by Ghostscript 8.11 for comparison CIDFontType0, CIDFontType2 and CFF/OpenType (some fonts requires Acrobat license and Cygwin environment to restage testing):
% env NeverEmbedCIDFontList=' ' ps2pdf14 testc.ps testc.pdf
% env NeverEmbedCIDFontList=' ' ps2pdf14 testg.ps testg.pdf # VM error!
% env NeverEmbedCIDFontList=' ' ps2pdf14 testj.ps testj.pdf
% env NeverEmbedCIDFontList=' ' ps2pdf14 testk.ps testk.pdf
% ps2pdf14 testc.ps testc.pdf
% ps2pdf14 testg.ps testg.pdf # VM error!
% ps2pdf14 testj.ps testj.pdf
% ps2pdf14 testk.ps testk.pdf
(gs7.07) ps2pdf and CJK TrueType fonts [2003/9/4 obsolete!]
a patch for lib/gs_cidfn.ps to handle NeverEmbed CJK TrueType into PDF
% patch -p0 -b < fix_rename_font_gs_cidfn.ps.patch
and requirements: References:
  1. http://www.on.cs.keio.ac.jp/~maru/replacejfonts/ (in Japanese)
  2. http://www2.kumagaku.ac.jp/teacher/herogw/gsfonts.html (in Japanese)
  3. http://www.matsusaka-u.ac.jp/~okumura/linux/gs707.html (in Japanese)
  4. toshiya-san's patches to use NeverEmbed
Results of testing CIDFontType2 base (some TrueType fonts requires Cygwin environment to restage testing):
% ps2pdf14 all_ac1.ps all_ac1.pdf  
% ps2pdf14 all_ag1.ps all_ag1.pdf  
% ps2pdf14 all_aj1.ps all_aj1.pdf  
% ps2pdf14 all_ak1.ps all_ak1.pdf  
% ps2pdf14 gscjk_ac.ps gscjk_ac.pdf
% ps2pdf14 gscjk_ag.ps gscjk_ag.pdf
% ps2pdf14 gscjk_aj.ps gscjk_aj.pdf
% ps2pdf14 gscjk_ak.ps gscjk_ak.pdf
% ps2pdf14 iso2022.ps iso2022.pdf  
% ps2pdf14 iso2022v.ps iso2022v.pdf
CIDFontType0 base:
% ps2pdf14 all_ac1.ps all_ac1.pdf  
% ps2pdf14 all_ag1.ps all_ag1.pdf  
% ps2pdf14 all_aj1.ps all_aj1.pdf  
% ps2pdf14 all_ak1.ps all_ak1.pdf  
% ps2pdf14 gscjk_ac.ps gscjk_ac.pdf
% ps2pdf14 gscjk_ag.ps gscjk_ag.pdf
% ps2pdf14 gscjk_aj.ps gscjk_aj.pdf
% ps2pdf14 gscjk_ak.ps gscjk_ak.pdf
% ps2pdf14 iso2022.ps iso2022.pdf  
% ps2pdf14 iso2022v.ps iso2022v.pdf
Copyright (C) 2003, 2005 yamada taiji at gyve.org