diff options
Diffstat (limited to 'language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt')
-rw-r--r-- | language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt | 425 |
1 files changed, 425 insertions, 0 deletions
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt new file mode 100644 index 0000000000..432fbda51b --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt @@ -0,0 +1,425 @@ +How to make PDF files using CJK/LaTeX with embedded TrueType fonts + +Hin-Tak Leung <htl10@users.sourceforge.net> +December 2003 + + +Introduction +------------ + +Existing CJK/LaTeX instruction for high-quality print-out tends to suggest +permanently converting TrueType fonts (which had a better availability) to +postscript sub-fonts; this document covers how to use TrueType fonts +directly, and also preparing such PDF documents. Today, the PDF output +format is slightly more popular than PostScript; also, even on US English +systems, CJK font packs are available for font substitution in Adobe Acrobat +Reader (and similar mechanisms exist for xpdf and ghostscript), which allows +the generation of PDF files containing only important textual content but no +embedded fonts. Such files are small enough to be e-mailed while preserving +formatting, provided the recipient has the font packs installed. This +document also covers the issues with no-embedded-font PDF files at the very +end as well. + +The following steps are discussed below in greater detail: + + 1. Finding the fonts. + 2. Getting and building some software: ttf2tfm, dvipdfmx. + Some other nice optional software: oto, the other freetype/freetype2 + demo tools, ttfm, ttx. + 3. Using ttf2tfm, generating *.tfm and *.enc files for each font. + 4. Putting the fonts, the *.tfm files, and the *.enc files into the right + place in your system. + 5. Configuring dvipdfmx to use the new fonts. + 6. (optional) Configuring pdflatex to use the new fonts also. + 7. Configuring CJK/LaTeX to use those fonts. + 8. Testing. + 9. Problems and tips. + +I can read both traditional and simplified Chinese, and a substantial amount +of Japanese, but there isn't any Korean-specific info here. Hopefully this +is useful enough as a starting point at least for Korean-related +experiments. + +The two most important references during this venture was the FreeBSD +(Taiwan) Chinese HOWTO (it is substantially better and more up-to-date than +the GNU/Linux one), and Edward G. J. Lee's various treatises on the net, +particularly his `mycjk' notes. Unfortunately both are available in Chinese +only, I believe. + + +1. Fonts +======== + + Chinese + ------- + + Arphic donated 4 high-quality Chinese fonts to the open-source community: + two for traditional and two for simplified Chinese, respectively. They are + shipped with Redhat 9 (which I used for most of this work) and Debian 3 + and possibly also other GNU/Linux distributions; they can be downloaded + from Arphic's home site and, probably more convenient, from + + ftp://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/ + + and its mirrors. Tip: Use `unzip -L' to convert file names to lowercase. + + Redhat 9 also ships zysong, a simplified Chinese font. This font seems to + be licensed to Redhat only since it isn't found in other GNU/Linux + distributions. It is part of the package "ttfonts-zh_CN-2.12-1.noarch.rpm", + together with the two Arphic simplified Chinese fonts, on the 3rd CD + of the Redhat 9 CD set. + + The Ministry of Education in Taiwan released a few fonts for + standardization: Currently two are available from the ministry's home page + (http://www.edu.tw/mandr/index.htm), but there are old versions with + different type faces floating around in the net. + + CwTeX (a Chinese-enabled LaTeX implementation in Taiwan) ships 5 fonts. + (http://ccms.ntu.edu.tw/~ntut019/cwtex/cwtex.html) + + Still available is the set of 8 TrueType fonts from NTU which were widely + used previously for CJK/LaTeX documents (http://input.cpatch.org/font/ntu/). + + There is also a set of 10 quite fancy and unusual fonts for traditional + Chinese, developed by Dr Hann-Tzong Wang + (http://140.135.64.77/teacher/htwang/htwang.htm). It is distributed as + one of the standard font sets for FreeBSD Taiwan. + (http://www.freebsd.org/cgi/pds.cgi?ports/chinese/wangttf). + + Japanese + -------- + + Redhat 9 and SuSE both ship the Kochi Gothic and Mincho fonts; Debian + ships Watanabe Mincho and Wadalab Gothic as part of the XTT TrueType font + server. The packages are: "ttfonts-ja-1.2-21.noarch.rpm" on the 3rd disc + of the Redhat 9 CD set, "ttf-kochi-mincho-0.2.20020727-81.noarch.rpm" and + "ttf-kochi-gothic-0.2.20030118-17.noarch.rpm" on SuSe 8.2, + "xtt-fonts" for Debian systems. + + Other source of fonts (e.g. Win2k/WinXP/Win2k3 ships a few as standard, + and also localized version of MS Office, etc.) are mostly proprietary. + + These instructions are known to work on those also, but I don't want to + go into specific details... + + +2. ttf2tfm and dvipdfmx +======================= + + The specific details about compiler switches, include paths, are for + the Redhat 9 distribution. You may have to adapt them. + + ttf2tfm + ------- + + ttf2tfm is part of ttf2pk package which is itself part of + freetype-contrib, a suite of programs depending on the FreeType 1 library. + Most GNU/Linux systems ship both FreeType 2 and FreeType 1 (that's the + case for RH9, in fact), which are *not* compatible. So I decided to build + the latest FreeType 1 static version and made freetype-contrib depend on + that to avoid using the out-dated library shipped with my system. The + mentioned packages can be downloaded from ftp.freetype.org. + + Unpack freetype-current (adapt the `/home/hleung' part to suit yourself), + then do + + cd /home/hleung/freetype-current + ./configure --enable-static --disable-shared --prefix=/home/hleung + make + + Now unpack freetype-contrib-current inside the freetype-current tree, then + do + + cd freetype-contrib-current/ttf2pk + CFLAGS=-I../../lib/ LDFLAGS=-L../../lib/.libs ./configure \ + --with-kpathsea-lib=/usr/lib --with-kpathsea-include=/usr/include + make + make install + + Important: At the end, you need to manually copy the data/*.sfd files into + ${TEXMF}/ttf2tfm and also ${TEXMF}/ttf2pk (a soft link from + ${TEXMF}/ttf2tfm to ${TEXMF}/ttf2pk will do also). + + [The recent TeX directory structure (TDS), version 1.1, comes with a new + subdirectory fonts/sfd, to be accessed with the kpathsea variable + $SFDFONTS. ttf2tfm and other programs available in the TeXLive + distribution have already been updated to use it.] + + The man pages of ttf2tfm and ttf2pk give detailed explanation of all + command line arguments. + + Tip: I find a utility called "checkinstall" quite useful. Instead of `make + install' one calls `checkinstall' which does the same as `make install' + but also integrates the data nicely into the package management system for + Redhat/Debian/Slackware; this gives cleaner upgrades and uninstalls. + + dvipdfmx + -------- + + http://project.ktug.or.kr/dvipdfmx/ + + For dvipdfmx I use + + CFLAGS='-I/usr/kerberos/include -O2 -march=i386 -mcpu=i686' ./configure + make + make install + + The include path is due to dependency on the kerberos library for PDF + encryption. Important: The 10 Wang fonts have some peculiarities; I + submitted a preliminary patch which the author has much refined and + incoporated into a new release. You need a version newer than 2003-08-11 + if you want to use this set of fonts. From the ChangLog of dvipdfmx: + + 2003-08-11 Jin-Hwan Cho <chofchof@ktug.or.kr> + * A faked font name was used for TrueType fonts without any PS + font name as suggested by Hin-Tak Leung. + + [The recent TeX directory structure (TDS), version 1.1, comes with a new + subdirectory fonts/sfd, to be accessed with the kpathsea variable + $SFDFONTS. dvipdfmx and other programs available in the TeXLive + distribution have already been updated to use it.] + + +3. Generating ttf and enc files +=============================== + + OpenType Organizer (oto) : http://sourceforge.net/projects/oto/ + True Type Font Manager (ttfm): + - part of Chinese GNU/Linux Extention http://cle.linux.org.tw/ + + You need to know what cmap (character map) the TrueType font (*.ttf or + *.ttc) contains. The utility programs oto, ftdump (two versions! -- + FreeType 1 and FreeType 2 both have this demo program, showing quite + different information), and ttfinfo (part of ttfm) can show this info, and + some other information about your font as well. Only ftdump works on + TrueType collections (*.ttc), but the other two have their strengths also + (ttfinfo gives the most straightforward info, while oto gives some details + that ftdump doesn't show). + + For detailed information on cmaps in a font you can use ttx, a tool to + assemble and disassemble OpenType fonts. It is available from + http://fonttools.sf.net. + + If there is a Unicode cmap you can use ttf2tfm's `U*.sfd' files (see the + `@...@' argument for ttf2tfm); the command line for ttf2tfm is simpler + also. Otherwise you need to specify the platform (-P) and encoding (-E) + IDs. + + Here is what works for me for the fonts I mentioned. Important: The font + stem name needs to be unique. Additionally, dvipdfmx doesn't like numbers + in the font stem name. I use a 4-letter combination. By LaTeX convention + it shouldn't be longer than 5 letters. + + ttf2tfm bkai00mp.ttf -q -w bkai@UBig5@ + ttf2tfm bsmi00lp.ttf -q -w bsmi@UBig5@ + ttf2tfm gbsn00lp.ttf -q -w gbsn@UGB@ + ttf2tfm gkai00mp.ttf -q -w gkai@UGB@ + + ttf2tfm zysong.ttf -q -w zysg@UGB@ + + ttf2tfm kai-linux.ttf -P 3 -E 4 -q -w mekl@Big5@ + ttf2tfm edustd-15.ttf -P 3 -E 4 -q -w mest@Big5@ + ttf2tfm moe_kai.ttf -P 3 -E 4 -q -w meko@Big5@ + ttf2tfm moe_sung.ttf -P 3 -E 4 -q -w meso@Big5@ + + ttf2tfm ntu_li_m.ttf -P 3 -E 4 -q -w ntli@Big5@ + ttf2tfm ntu_br.ttf -P 3 -E 4 -q -w ntbr@Big5@ + ttf2tfm ntu_fs_m.ttf -P 3 -E 4 -q -w ntfs@Big5@ + ttf2tfm ntu_kai.ttf -P 3 -E 4 -q -w ntka@Big5@ + ttf2tfm ntu_mb.ttf -P 3 -E 4 -q -w ntmb@Big5@ + ttf2tfm ntu_mm.ttf -P 3 -E 4 -q -w ntmm@Big5@ + ttf2tfm ntu_mr.ttf -P 3 -E 4 -q -w ntmr@Big5@ + ttf2tfm ntu_tw.ttf -P 3 -E 4 -q -w nttw@Big5@ + + ttf2tfm mttf.ttf -q -w cwtm@UBig5@ + ttf2tfm kttf.ttf -q -w cwtk@UBig5@ + ttf2tfm fttf.ttf -q -w cwtf@UBig5@ + ttf2tfm bbttf.ttf -q -w cwtb@UBig5@ + ttf2tfm rttf.ttf -q -w cwtr@UBig5@ + + ttf2tfm kochi-gothic.ttf -w kcgt@UJIS@ + ttf2tfm kochi-mincho.ttf -w kcmc@UJIS@ + + ttf2tfm wadalab-gothic.ttf -P 3 -E 2 -w wdgt@SJIS@ + ttf2tfm watanabe-mincho.ttf -P 3 -E 2 -w wnmc@SJIS@ + + The Wang's font set has some unusual properties, and need either + a new version of freetype 1 (after 2003-10 from CVS), or a slightly + modified "Big5.sfd", called "wcl.sfd" here: + + ttf2tfm wcl-01.ttf -P 3 -E 4 -q -w wclj@wcl@ + ttf2tfm wcl-02.ttf -P 3 -E 4 -q -w wclk@wcl@ + ttf2tfm wcl-03.ttf -P 3 -E 4 -q -w wcll@wcl@ + ttf2tfm wcl-04.ttf -P 3 -E 4 -q -w wclm@wcl@ + ttf2tfm wcl-05.ttf -P 3 -E 4 -q -w wcln@wcl@ + ttf2tfm wcl-06.ttf -P 3 -E 4 -q -w wclp@wcl@ + ttf2tfm wcl-07.ttf -P 3 -E 4 -q -w wclq@wcl@ + ttf2tfm wcl-08.ttf -P 3 -E 4 -q -w wclr@wcl@ + ttf2tfm wcl-09.ttf -P 3 -E 4 -q -w wcls@wcl@ + ttf2tfm wcl-10.ttf -P 3 -E 4 -q -w wclt@wcl@ + + As an example, here is what I do for a well-known proprietary simplified + Chinese font which has only a cmap for simplified Chinese: + + ttf2tfm gkai00m.ttf -P 3 -E 3 -q -w gkaim@EUC@ + + Here an example for a TrueType collection: + + ttf2tfm dcai5.ttc -q -w dcaiq@UJIS@ + + +4. Putting the files where they should be +========================================= + + This is somewhat related to how kpathsea works and how latex (the program) + find its files. It is possible to set individual environment variables for + each of these items, but it is easier to set one: $TEXMF to a list of + locations, with a tree parallel to the system tree. Then do the following: + + . Put the *.tfm files into a subdirectory of ${TEXMF}/fonts/tfm. + . Put the *.enc files into a subdirectory of ${TEXMF}/dvips. + . Put the *.ttf (or *.ttc) files into a subdirectory of + ${TEXMF}/fonts/truetype. + . Put the *.sfd files into ${TEXMF}/ttf2tfm or a subdirectory of it. + Don't forget to either copy them into ${TEXMF}/ttf2pk also or to set up + a link from ${TEXMF}/ttf2pk to ${TEXMF}/ttf2tfm. + + Reason: dvipdfmx searches SFD files (which it needs for reassembling) + under ${TEXMF}/ttf2pk although we don't use ttf2pk anywhere. ttf2tfm + looks for them under its own name, of course. + + [The recent TeX directory structure (TDS), version 1.1, comes with a new + subdirectory fonts/sfd, to be accessed with the kpathsea variable + $SFDFONTS. dvipdfmx and other programs available in the TeXLive + distribution have already been updated to use it.] + + Important: Run texhash (mktexlsr) to rebuild the kpathsea database, + otherwise files won't be found. You have been warned! + + +5., 6. Configuring dvipdfmx and (optionally) pdflatex +===================================================== + + cid-x.map, dvipdfmx.cfg, *.map + + See for example, my own "cid-x.map" for the main font config file of + dvipdfmx -- all my own customization is at the very end after the line + "Hin-Tak Leung's custom setup below:". For each font xxxx, one needs + to add a line "f xxxx.map" into "dvipdfmx.cfg", and a fontmap + file "xxxx.map" into the dvipdfmx config directory -- + ${TEXMF}/dvipdfm/config/ on my system (the missing + "x" is not a typo, as dvipdfmx originally derived from dvipdfm). + I have included cwbt.map, for one of the CwTeX fonts, as an example, + and my dvipdfmx.cfg as well. + + Because I have a fair number of fonts I like to add, I wrote a little + perl script "gen-map.pl", which generates all the *.map files plus + a file called "map.list" which I can simply append to dvipdfmx.cfg, + from an internal table at the very top of the script. + + pdflatex needs the same fontmap files for each new font - copy them into + ${TEXMF}/dvips/config/. Modify the updmap script which is used for + updating both pdflatex.cfg and dvips.cfg, and run the updmap script. + On teTeX 1.0.x, one needs to add to the "extra_modules=" entry the + *.map files for each font. My modified updmap is included as an + example "updmap.my", found as "/usr/share/texmf/dvips/config/updmap" on + a RH 9 system. On teTeX 2.0.x, updmap has a separate config file + updmap.cfg located in ${TEXMF}/web2c/. + + +7. Configuring CJK/LaTeX +======================== + + Copy the whole `texinput' directory of the CJK package into a directory + which is in your $TEXINPUTS path. Also create some new *.fd files there. + My "c00cwtb.fd" is included as an example; again, since I have quite + a few font files, I have created some template fd files as c*tmpl.fd, + and duplicating and change every "tmpl" string to "cwtb" inside + as needed like this: + cp c00tmpl.fd c00cxtb.fd + perl -pi -e "s/tmpl/cwtb/;" c00cwtb.fd + + If you use Big5 or Shift-JIS encoding, compile the bg5conv and + sjisconv utilities; under Unix-like systems you can use the bg5pdflatex + and sjispdflatex scripts to access them conveniently. + + +8. Testing +========== + + Just pick the relevant files in the CJK/examples directory and change the + font name to match. Either call pdflatex or call latex followed by + dvipdfmx. In general, I found that dvipdfmx generates much smaller files + (1/3 to 1/2 size). + + +9. Problems +=========== + + a. files can't be found + + This is the most frequent problem. Setting the environment variable + KPATHSEA_DEBUG to -1 activates full debugging; you can then check + how latex/dvipdfmx/pdflatex tries to find those files. See the + kpathsea info pages for more details on debugging output. + + For latex (the program) you only need the new custom-made *.fd files, + the files from CJK/texinput, and the tfm files. The *.fd files could be + broken -- check their contents. latex (the program) neither needs the + *.enc files nor the font files themselves. + + If latex (the program) works, but dvipdfmx doesn't, then your dvipdfmx + configuration probably needs some tuning. Alternatively, the map files + or the font files are not found, etc. Note that dvipdfmx neither needs + the tfm files, nor the CJK/LaTeX input files, but it does need the + enc files. + + pdflatex does everything in one step, so everything needs to be in the + right place. + + b. Acrobat on GNU/Linux doesn't print PDF files generated with dvipdfmx + + The problem is probably caused by ghostscript version 7.x which chokes + on the intermediate postscript file under some command options. + Upgrading to ghostscript 8.x should fix this printfilter problem. It is + *strongly* recommended to use ghostscript 8.11 or newer due to severe + problems with earlier versions. + + c. no-font-embedded PDF files + + This is quite simple to do with dvipdfmx: Just put an extra `!' + (exclamation mark) in the dvipdfmx configuration file in front of the + font which shouldn't be embedded. + + A problem can arise if the PDF reader is not able to find a proper + substitution font if the font specified in the document isn't available. + I did some investigation and had a long discussion with the author of + dvipdfmx about this. Basically, it seems that win32 Acrobat Reader 6.x + will substitute any missing fonts with fonts from the Adobe CJK font + packs or from the system. Acrobat reader 5.x for GNU/Linux will only do + so -- and only with fonts from the CJK packs, not from the X server -- + if the font name is one of the well-known ones for that region: + SimHei, SimSun (found on most MS Windows boxes), and some fonts of Arphic + and Dynafont which are very popular in the far east. Otherwise, + it aborts with an error message. + + Besides the proprietary fonts mentioned in the last paragraph, only + Wang's fonts can be configured currently to be not embedded so that + acroread on GNU/Linux accepts them. I have spent much time looking + into this issue and apparently Acroread on GNU/Linux seems to do + font substitutions by looking at the capital letters in the font name. + Due to the missing PS name of the Wang's fonts (and our dvipdfmx + work-around on 2003-08-11 using the file name -- happened to be all + lowercase -- as the missing font name), they work by luck. + + Both xpdf and ghostscript will substitute any missing fonts with a + specific font per language, if suitably configured. On Redhat 9, the + heavily adapted ghostscript will substitute automatically if some named + fonts from the CD are installed (without any extra effort); for xpdf it + is an extra few lines of configuration in ${HOME}/.xpdfrc to tell it + what font to use from the X server for substituting a missing font for a + particular language. So ghostscript works out of the box for a full RH + installation, whereas xpdf doesn't, but xpdf is more configurable and + the setting of what fall-back font to use can differ per user. + +---End of HOWTO.txt--- |