1 \documentclass{zh-article}
3 \geometry{twoside,left=23mm,width=170mm,right=17mm,top=25mm,height=231mm,bottom=32mm}
4 \def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}}
9 \def\PuTeX{P\kern-.1667em\lower.5ex\hbox{U}\kern-.1667em\TeX}
11 \title{高性能排版:从\pTeX到\LuaTeX-ja}
16 \subsection{CJK语言排版综述}
17 CJK是英文中日韩(Chinese, Japanese, Korean)的缩写。CJK语言的排版因为涉及到大量象形字和诸多技术处理细节,一直是\TeX中的排版难题。自\TeX发明以来,有多种排版CJK语言的方法:
19 \item 次字体框架(subfont scheme),将CJK字体分割为字符为256个或者更少的字符为单位的字体。次字体框架的弊病为不能在不同的次级字体中增加胶(glue)和出格(kern)。
20 \item 对\TeX进行扩展,例如扩展至支持Unicode或者JIS之类,可以处理CJK。
21 \item 根据扩展的\TeX来处理CJK排版。
24 由这三种方法,衍生出了大量的CJK版本的\TeX扩展(为讨论方便,此处略去韩国扩展部分)。pmC/pmJ,\cwTeX,\PuTeX,CCT,TY,\JTeX,\pTeX,\Omega-CJK,CJK,xeCJK,zhspacing。
27 \subsection{日本的\TeX扩展历史}
28 1987年,NTT的斋藤康己开发了\JTeX\cite{1},使用次字体框架(Subfont Scheme)技术,使用33个字体,每个字体包含256个字符。
30 同年,ASCII公司的大野俊治和苍泽良一开发了ASCII Nihongo \TeX。
32 1990年,滨野尚人对ASCII Nihongo \TeX扩展了直行排版功能,此版更名为\pTeX。
34 1995年,\pTeX升级到\TeX3扩展。
36 2007年,田中琢尔对\pTeX进行Unicode扩展,可以处理CJK区块。
39 \section{\pTeX/\upTeX细节}
41 汉字间隙在\pTeX中定义为\verb!\kanjiskip!,初始值为\verb!0pt plus .4pt minus.4pt!,有如下定义:
42 $$ 字宽 \times \frac{1}{单行字数 - 1} $$
44 \verb!\noautospacing!和\verb!\autospacing!
46 汉字与西文之间:\verb!\inhibitxspcode!和\verb!\xspcode!
48 西文与汉字之间:\verb!\xspcode!和\verb!\inhibitxspcode!
52 和文フォントのメトリック情報から、自動的に挿入されるグルーの挿入を禁止します。このプリミティブを挿入した箇所にのみ有効です。
54 \verb!\xspcode!和\verb!\inhibitxspcode!
57 \item 0 漢字と英字間の処理を禁止する。
58 \item 1 文字と直前の英字との間にだけスペースの挿入を禁止する。
59 \item 2 直後の英字との間にだけスペースの挿入を禁止する。
60 \item 3 前後の英字との間に対して、スペースの挿入を許可する。
63 \xspcode`(=1 \xspcode`)=2 \xspcode`[=1
64 \xspcode`]=2 \xspcode``=1 \xspcode`'=2
65 \xspcode`;=2 \xspcode`,=2 \xspcode`.=2
67 \inhibitxspcode`、=1 \inhibitxspcode`。=1
68 \inhibitxspcode`,=1 \inhibitxspcode`.=1
69 \inhibitxspcode`;=1 \inhibitxspcode`?=1
70 \inhibitxspcode`(=2 \inhibitxspcode`)=1
71 \inhibitxspcode`[=2 \inhibitxspcode`]=1
72 \inhibitxspcode`{=2 \inhibitxspcode`}=1
73 \inhibitxspcode`‘=2 \inhibitxspcode`’=1
74 \inhibitxspcode`“=2 \inhibitxspcode`”=1
75 \inhibitxspcode`〔=2 \inhibitxspcode`〕=1
76 \inhibitxspcode`〈=2 \inhibitxspcode`〉=1
77 \inhibitxspcode`《=2 \inhibitxspcode`》=1
78 \inhibitxspcode`「=2 \inhibitxspcode`」=1
79 \inhibitxspcode`『=2 \inhibitxspcode`』=1
80 \inhibitxspcode`【=2 \inhibitxspcode`】=1
81 \inhibitxspcode`―=0 \inhibitxspcode`~=0
82 \inhibitxspcode`…=0 \inhibitxspcode`¥=0
83 \inhibitxspcode`°=1 \inhibitxspcode`′=1
86 \section{\LuaTeX-ja:\pTeX的\LuaTeX实现。}
88 \begin{thebibliography}{99}
89 \bibitem{1}奥村晴彦,{\it \pTeX\ and Japanese Typesetting\/}, The Asian Journal of \TeX\ 2 (2008), no. 1, 43-51
90 \bibitem{2}斋藤康己,{\it Report on \JTeX: A Japanese \TeX\/}, TUGboat 8 (1987), no. 2, 103-116.
91 \bibitem{3}滨野尚人,{\it Vertical typesetting with \TeX\/}, TUGboat 11 (1990), no. 3, 346-352.
92 \bibitem{4}田中琢尔,{\it \upTeX\/}. \texttt{http://homepage3.nifty.com/ttk/comp/tex/uptex.html}
93 \bibitem{5}ASCII MEDIA WORKS, {\hei アスキー日本語\TeX\ (\pTeX)}. \texttt{http://ascii.asciimw.jp/pb/ptex/}
94 \bibitem{6}赵珍焕,奥村晴彦,{\it Typesetting CJK Languages with Omega\/}, \TeX, XML, and Digital Typography, Lecture Notes in Computer Science, vol.~3130, Springer, 2004, 139--148.