OSDN Git Service

Improve \ltj@pkgpatch in luatexja-latex.sty.
[luatex-ja/luatexja.git] / doc / sample1.tex
index 1e8c9bb..094da7e 100644 (file)
@@ -11,7 +11,6 @@
 \def\XyM{X\kern-.30em\smash{\raise.50ex\hbox{\UPSILON}}\kern-.30em{M}}%
 \def\XyMTeX{\XyM\kern-.1em\TeX}%
 
-
 % main matter
 \centerline{\big Lua\TeX-jaパッケージ}\bigskip
 \centerline{\large\the\year/\the\month/\the\day}\medskip
@@ -20,7 +19,7 @@
 
 本パッケージは,(最低でもp\TeX と同等の水準の)日本語組版をLua\TeX 上で実現させることを
 目標としたマクロである.まだまだ足りないところはあるが,とりあえず動くようになった?ので公開する. 
-
+{\bf 本文章の更新は事実上停止しています.以降の更新は{\tt manual.dtx}と,そこから作られる{\tt man-en.pdf}, {\tt man-ja.pdf}で行います.}
 
 \beginparagraph 特徴
 
@@ -31,7 +30,8 @@
 ほげほげ){\gt (ふがふが}
 \endtt
 \item 欧文や和文のベースライン補正が可能.
-\item p\TeX とある程度コマンド名が互換.
+\item p\TeX とある程度コマンド名が互換ではあるが,{\bf 内部動作についてはp\TeX との100\%互換は
+目指していません{\small (p\TeX で不自然なところがあれば,積極的に改める)\inhibitglue}}.
 \enditem
 
 \beginparagraph 制限
 アクセントも,|make_accent|の処理をLuaコードで書けば可能だと思われます.}
 \item 数式中の日本語は想定していません.|\hbox|か何かで囲ってください.
 \item p\TeX にあった以下の機能はまだ実装していません.
-\itemitem |\euc|, |\jis|, |\sjis|, |\kuten|といった,コード変換プリミティブ.
-\itemitem |\kansuji|, |\kansujichar|.
 \itemitem |\showmode|, |\jfam|.
 \itemitem 縦組み関連一式.|\tate|, |\tfont|, |\tbaselineshift|, |\dtou|,$\,\ldots$
 
-\item 和文間・和欧文間空白の自動挿入がglobalでしかできていません.
-←解決はさほど難しくないので,仕様を決定した後に書き上げます.
 \enditem
 
 
 \beginparagraph ファイル構成
 
-
-\item {\tt luatexja-core.sty}: 
-コア部分.拡張子は{\tt sty}であるが,この単一のファイルでplain \TeX と\LaTeX 両方に
-対応するように設計する方針である.しかし,
-{\bf 現時点で\LaTeX での使用は全く考慮されていない.}
-\item {\tt luatexja-core.lua}: コア部分に使われるLuaコード.
-\item {\tt luatexja-jfont.lua}: 和文フォント定義部のLuaコード.
-\item {\tt luatexja-xkanji.lua}: |\[x]kanjiskip|自動挿入処理のLuaコード.
-\item {\tt luatexja-rmlgbm-data.lua}: 非埋込和文フォント用のデータ(小塚明朝Pr6N R由来).
-\item {\tt luatexja-rmlgbm.lua}: 非埋込和文フォント (Ryumin-Light etc.) 定義部.
-\item {\tt mk-rmlgbm-data.tex}: {\tt luatexja-rmlgbm-data.lua}作成用スクリプト
+\item {\tt src/}: 核となる\TeX ソースとLuaコードはこのディレクトリ内に入っている.
+\itemitem \TeX 用スタイルファイル達
+\itemT {\tt luatexja.sty}: 利用者はこのファイルを読み込む.
+拡張子は{\tt sty}であるが,plain \TeX と\LaTeX 両方に対応させる方針である.
+\itemT {\tt luatexja-core.sty}: 
+\itemT {\tt luatexja-base.sty}: 
+\itemT {\tt luatexja-cctbreg.sty}: 
+\itemT {\tt luatexja-compat.sty}: p\TeX 互換用primitive(|\euc|, |\kansuji|)定義部.
+\itemT {\tt luatexja-compat-ptex.sty}: 
+\itemT {\tt luatexja-plain.sty}: 
+\itemT {\tt luatexja-kinsoku.tex}: 禁則用ペナルティ等のパラメータを書いたファイル.
+{\tt ukinsoku.tex} (in up\TeX-0.30) から自動生成されたもの.
+
+\itemT {\tt mk-rmlgbm-data.tex}: {\tt luatexja-rmlgbm-data.lua}作成用スクリプト
 {\small(小塚明朝を{\tt luaotfload}で読み込んだ時のキャッシュが必要)\inhibitglue}.
-\item {\tt luatexja-kinsoku.tex}: 禁則用ペナルティ等のパラメータを書いたファイル.
-下のファイルによって{\tt ukinsoku.tex} (in up\TeX-0.30) から自動生成されたもの.
-\item {\tt jfm-ujis.lua}: up\TeX-0.30の{\tt ujis.tfm}ベースのメトリックサンプル.
-\item {\tt jfm-mono.lua}: 「全文字が全角幅」のメトリックサンプル.
+
+\itemitem \LaTeX 用スタイルファイル達
+\itemT {\tt luatexja-latex.sty}: 
+\itemT {\tt lltjdefs.sty}: 
+\itemT {\tt lltjfont.sty}: 
+
+
+\itemitem Luaコード達(旧フォーマット)
+\itemT {\tt luatexja-core.lua}: コア部分に使われるLuaコード.
+\itemT {\tt luatexja-rmlgbm-data.lua}: 非埋込和文フォント用のデータ(小塚明朝Pr6N R由来).
+\itemT {\tt jfm-ujis.lua}: up\TeX-0.30の{\tt ujis.tfm}ベースのメトリックサンプル.
+\itemT {\tt jfm-mono.lua}: 「全文字が全角幅」のメトリックサンプル.
+
+\itemitem Luaコード達(新フォーマット,{\tt src/luatexja/}以下)
+
+\itemT {\tt base.lua}
+\itemT {\tt compat.lua}: p\TeX 互換用primitive(|\euc|, |\kansuji|)実装部.
+\itemT {\tt jisx0208.lua}: |\euc|等で使うJIS~X~0208→Unicode変換表.
+\itemT {\tt infomute.lua}
+\itemT {\tt jfont.lua}: 和文フォント定義部のLuaコード.
+\itemT {\tt rmlgbm.lua}: 非埋込和文フォント (Ryumin-Light etc.) 定義用コード.
+\itemT {\tt jfmglue.lua}: 和文処理に伴う空白の挿入処理部.
+\itemT {\tt math.lua}: 数式モード中の和文文字のフォント置換部分.
+\itemT {\tt tangle.lua}
+\itemT {\tt charrange.lua}: 「和文文字の範囲」管理部.
+\itemT {\tt debug.lua}
+\itemT {\tt inputbuf.lua}: 「和文文字直後の改行」処理用.
+\itemT {\tt stack.lua}: Lua\TeX-ja スタック管理システム.
 \enditem
 
 \beginsection 使用方法
 
-大é\9b\91æ\8a\8aã\81«è¨\80ã\81\86ã\81¨ï¼\8cplain \TeX ã\81®ç\8a¶æ³\81ã\81§ï¼\8c以ä¸\8bã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8cã\81°ã\82\88ã\81\84ï¼\8e
+大é\9b\91æ\8a\8aã\81«è¨\80ã\81\86ã\81¨ï¼\8cplain \TeX ã\81®ç\8a¶æ³\81ã\81§ï¼\8c以ä¸\8bã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8bã\81\8bï¼\8c
 \begintt
-\input luatexja-core.sty               % ←マクロ本体を読み込み
+\input luatexja.sty               % ←マクロ本体を読み込み
 \jfont\tenipam={file:ipam.ttf:jfm=ujis} at 13.5\jQ 
 \tenipam\parindent=1\zw 
 
 \rm\tenipam abcほげほげ)(あいう本文本文……
 \endtt
+\LaTeX において preamble 部で
+\begintt
+\usepackage{luatexja}
+\endtt
+と書けばよい.標準では非埋込の標準和文フォントRyumin-Light, GothicBBB-Mediumが使われる.
 
 \beginparagraph 和文フォントの定義
 
@@ -101,7 +129,6 @@ JFM は和文文字の幅や,和文文字間の空白の入り方などを規
   \globaljfont<font>={<font_name>:<features>} <size> % global に定義
 \endtt
 
-
 \item {\bf <font_name> の指定について}\par\noindent
 内部でluaotfloadパッケージを読み込んでいる.大きくわけて,以下の4種類がある.
 このうち,前の2つはluaotfloadパッケージの機能である.
@@ -153,11 +180,11 @@ PSフォント名<PSfont_name>を直接指定することもでき,
 \endtt
 と指定している{\small(つまりLatin-1 Supplementの範囲は欧文扱い)\inhibitglue}.
 
-TODO: 「{\ltjsetparameter{jacharrange={1}}× (|U+00D7|)}」等,ISO 8859-1領域
-にマッピングされた文字の扱い.
-「{\ltjsetparameter{jacharrange={1}}¢ (|U+00A2|)}」はHalfwidth and
-Fullwidth Formsに全角形(\char"FFE0)があるから%"
-luaotfloadの置換処理に割り込めばよいが…….
+%TODO: 「{\ltjsetparameter{jacharrange={1}}× (|U+00D7|)}」等,ISO 8859-1領域
+%にマッピングされた文字の扱い.
+%「{\ltjsetparameter{jacharrange={1}}¢ (|U+00A2|)}」はHalfwidth and
+%Fullwidth Formsに全角形(\char"FFE0)があるから%"
+%luaotfloadの置換処理に割り込めばよいが…….
 \enditem
 
 
@@ -180,8 +207,7 @@ p\TeX の|\prebreakpenalty|に対応した設定項目である.
 \itemitem <chr_code>: 文字コードを指定する.一旦補助カウンタに代入されるので,
 16進法での数値の指定 (|"abcd|) や,%"
 文字トークンによる指定 (|`あ|) も可能である.
-\itemitem <penalty>: penalty の値を0から10000までの自然数で指定する
-{\small(範囲外でも可能だが)\inhibitglue}.
+\itemitem <penalty>: penalty の値を$-10000$から10000までの整数で指定する.
 
 \item |postbreakpenalty={<chr_code>, <penalty>}|★\par\noindent
 同様に,p\TeX の|\postbreakpenalty|に対応した設定項目である.
@@ -199,17 +225,17 @@ p\TeX では,同一文字に対して|\prebreakpenalty|, |\postbreakpenalty|
 
 \item |jaxspmode={<chr_code>, <mode>}|★\par\noindent
 p\TeX の|\inhibitxspcode|に対応した設定項目である.<mode>で許される値は,
-\itemitem |0|, |inhibit|: 前後の欧文文字との間の|\xkanjiskip|自動挿入を禁止.
-\itemitem |2|, |preonly|: 前の欧文文字との間の|\xkanjiskip|自動挿入のみを許可.
-\itemitem |1|, |postonly|: 後の欧文文字との間の|\xkanjiskip|自動挿入のみを許可.
-\itemitem |3|, |allow|: 前後の欧文文字との間の|\xkanjiskip|自動挿入を許可.
+\itemitem |0|, |inhibit|: 前後の欧文文字との間の|xkanjiskip|自動挿入を禁止.
+\itemitem |2|, |preonly|: 前の欧文文字との間の|xkanjiskip|自動挿入のみを許可.
+\itemitem |1|, |postonly|: 後の欧文文字との間の|xkanjiskip|自動挿入のみを許可.
+\itemitem |3|, |allow|: 前後の欧文文字との間の|xkanjiskip|自動挿入を許可.
 \item |alxspmode={<chr_code>, <mode>}|★\par\noindent
 同様に,p\TeX の|\xspcode|に対応した設定項目である.
 <mode>で許される値は,
-\itemitem |0|, |inhibit|: 前後の和文文字との間の|\xkanjiskip|自動挿入を禁止.
-\itemitem |1|, |preonly|: 前の和文文字との間の|\xkanjiskip|自動挿入のみを許可.
-\itemitem |2|, |postonly|: 後の和文文字との間の|\xkanjiskip|自動挿入のみを許可.
-\itemitem |3|, |allow|: 前後の和文文字との間の|\xkanjiskip|自動挿入を許可.
+\itemitem |0|, |inhibit|: 前後の和文文字との間の|xkanjiskip|自動挿入を禁止.
+\itemitem |1|, |preonly|: 前の和文文字との間の|xkanjiskip|自動挿入のみを許可.
+\itemitem |2|, |postonly|: 後の和文文字との間の|xkanjiskip|自動挿入のみを許可.
+\itemitem |3|, |allow|: 前後の和文文字との間の|xkanjiskip|自動挿入を許可.
 
 \item |yalbaselineshift=<dimen>|:
 p\TeX の|\ybaselineshift|に対応したものであり,
@@ -226,16 +252,49 @@ p\TeX では「和文が主」という考えからか,常に和文文字の
 また,この値を適切に調整することで,%
 {\small 異なる文字サイズの文字を「上下中央揃え」で組む}ことも可能である.
 
-\item |kanjiskip=<skip>|★\inhibitglue: 後に述べる|\kanjiskip=<skip>|と同じ意味.
-\item |xkanjiskip=<skip>|★\inhibitglue: 後に述べる|\xkanjiskip=<skip>|と同じ意味.
-\item |jcharwidowpenalty=<penalty>|★\inhibitglue: 
-後に述べる|\jcharwidowpenalty=<penalty>|と同じ意味.
-\item |autospacing[=<bool>]|★◎\par\noindent
-%\item |autospacing[=<bool>]|★\par\noindent
-和文文字間のglue(|\kanjiskip|)の自動挿入をするかしないかを制御.
-\item |autoxspacing[=<bool>]|★◎\par\noindent
-%\item |autoxspacing[=<bool>]|★\par\noindent
-和欧文間のglue(|\xkanjiskip|)の自動挿入をするかしないかを制御.
+\item |kanjiskip=<skip>|★\par\noindent
+和文文字同士の間に入る空白量を指定.p\TeX の同名の命令と同様に,
+基本的には段落/hbox終了時の値が,その段落/hbox全体に適用される. つまり,
+\begintt
+\ltjsetparameter{kanjiskip=3pt}あい%
+{\ltjsetparameter{kanjiskip=10pt}うえ}}
+\endtt
+の組版結果は(段落終了時の値が$3\,{\rm pt}$のため),
+$$
+ \hbox{\ltjsetparameter{kanjiskip=3pt}あい{\ltjsetparameter{kanjiskip=10pt}うえ}}
+$$
+となる.
+
+但し,|kanjiskip|の自然長が$\hbox{|\maxdimen|}=16383.99998\,{\rm pt}$の場合は,
+\itemitem (和文文字の間それぞれについて)JFMに指定されている
+|kanjiskip|の値を採用する.
+\itemitem 左側JFM,右側JFMのどちらかにおいて指定されていれば,そちらを使用する.
+\itemitem どちらにおいても指定されていない場合は,0とみなす.
+
+\item |xkanjiskip=<skip>|★\par\noindent
+和文文字と欧文文字の間に入る空白量.p\TeX の同名の命令と同様.
+これも,自然長が|\maxdimen|の場合は,JFMで指定された値を使う.
+
+
+\item |jcharwidowpenalty=<penalty>|★\par\noindent
+段落において「最後の1文字のみが次の行に」くることを
+抑制するためのpenalty値.このpenaltyは,段落内にある,最後の「|kcatcode|の最下位bitが
+1で{\bf ない}ような和文文字」の直前に挿入される.
+
+
+\item |autospacing[=<bool>]|\par\noindent
+和文文字間のglue(|kanjiskip|)の自動挿入をするかしないかを制御.
+p\TeX では段落/hbox 単位での設定となったが,Lua\TeX-ja では
+そうではなくなった.
+挿入可能な箇所の両端のノードにおいて,片方でも
+この値がfalseなら自動挿入は行われる.つまり,例えば
+\begintt
+あ\ltjsetparameter{autospacing=false}いう
+\endtt
+の場合,「あい」の間には|kanjiskip|が挿入され,「いう」の間には入らない.
+\item |autoxspacing[=<bool>]|\par\noindent
+和欧文間のglue(|xkanjiskip|)の自動挿入をするかしないかを制御.
+その他は|autospacing|と同様.
 
 \item |differentjfm=(large/small/average/both)|★◎\par\noindent
 異なる$(\hbox{<jfm>}, \hbox{<varkey>})$である2つの和文文字の間の
@@ -245,6 +304,8 @@ glue/kernの計算方法を設定する.
 \itemitem {\tt small}: 両者のうち小さい方.
 \itemitem {\tt average}: 両者の相加平均.
 \itemitem {\tt both}: 両者の合計値の幅をもつglue/kernを挿入する.
+この指定は,JFM由来の|kanjiskip|の値が左右の和文文字で異なったときの
+挙動にも適用される.
 
 \item |jacharrange={<range_num>,<range_num>,...}|: 
 $\lvert\hbox{<range_num>}\rvert$番の文字範囲の文字を和文扱いするか欧文扱いするかを設定する.
@@ -280,7 +341,7 @@ $\lvert\hbox{<range_num>}\rvert$番の文字範囲の文字を和文扱いする
 
 \item |jacharrange|: 文字範囲の番号$n$を第2引数にとり,$n$番の文字範囲が
 和文文字扱いされていれば|0|,欧文文字扱いされていれば|1|を返す.
-$n\notin [1,216]$の場合は,「どの文字範囲にも属さない|U+0100|以降の文字」に対しての結果を返す
+$n\notin [1,216]$の場合は,「どの文字範囲にも属さない|U+0080|以降の文字」に対しての結果を返す(しかし,前に述べたデフォルトでの設定のため,実際には|U+0100|以降となる)
 
 \item |chartorange|: 文字コード<chr_code>を第2引数にとり,それが属している文字範囲の番号を返す.
 \itemitem <chr_code>がUnicodeの範囲外または|0x80|未満ならば,|-1|を返す.
@@ -288,13 +349,9 @@ $n\notin [1,216]$の場合は,「どの文字範囲にも属さない|U+0100|
 
 \beginparagraph その他の命令
 
-\item skip |\kanjiskip|: 和文文字同士の間に入る空白量を指定.p\TeX の同名の命令と同様.
-\item skip |\xkanjiskip|: 和文文字と欧文文字の間に入る空白量.p\TeX の同名の命令と同様.
-\item count |\jcharwidowpenalty|: 段落において「最後の1文字のみが次の行に」くることを
-抑制するためのpenalty値.このpenaltyは,段落内にある,最後の「|kcatcode|の最下位bitが
-1で{\bf ない}ような和文文字」の直前に挿入される.
+\item |\zw|, |\zh|: 現在の和文フォントの「幅」/「高さ」(メトリックにより指定)\hfil\break
+今の版では,これは純粋なdimenレジスタではなくなっている.
 
-\item dimen |\zw|, |\zh|: 現在の和文フォントの「幅」/「高さ」(メトリックから指定)
 \item dimen |\jQ|, |\jH|${}= 0.25\,{\rm mm}$.
 \item |\inhibitglue|: 
 指定箇所でのJFM由来のglue/kernの挿入を禁止する.
@@ -308,7 +365,7 @@ Lua\TeX-jaで用いる和文用のメトリック情報は,次のようなLua
 見本として,|jfm-ujis.lua|を入れてある.
 
 \begintt
-ltj.define_jfm {
+luatexja.jfont.define_jfm {
    dir = 'yoko', zw = 1.0, zh = 1.0,
    [0] = {
       align = 'left', left = 0.0, down = 0.0,
@@ -335,12 +392,17 @@ ltj.define_jfm {
 }
 \endtt
 
-全体は,「関数|ltj.define_jfm|にテーブルを引数として与える」という構造になっている.
+全体は,「関数|luatexja.jfont.define_jfm|にテーブルを引数として与える」という構造になっている.
 以下に,テーブルの中身を述べる.
 \item |dir|: 組方向を指定する.将来的にはいずれ縦組(|'tate'|)を実装したいが,
 現時点では横組(|'yoko'|)のみの対応.
 \item |zw|, |zh|: それぞれ|\zw|, |\zh|のフォントサイズに対する割合を記述する(必須).
 通常は両方とも1.0となるだろう.
+\item |kanjiskip|, |xkanjiskip|: それぞれ和文文字間グルー量,和欧文間グルー量を
+\begintt
+{<width>, <stretch>, <shrink>}
+\endtt
+という形で,フォントサイズ単位で指定する.
 \item 数字のindex $i$を持った値:$i$番の文字クラスについての情報を記述する.
 \itemitem |glue|: 現在の文字クラスの文字の後に挿入するglueを指定する.
 この項目の内容は
@@ -371,8 +433,9 @@ $i$番の文字クラスの文字と$j$番の文字クラスの文字の間に
 
 \noindent という意味である.
 
-\itemitem |chars|: 文字クラスに属する「文字」達のUnicodeにおけるコード番号を
-リストの形|{...}|で記述する.
+\itemitem |chars|: 文字クラスに属する「文字」達をリストの形|{...}|で記述する.
+文字の指定には,Unicodeにおけるコード番号か,その文字1文字だけからなる文字列(|'字'|のように)
+を用いる.
 どの文字クラスにも属さなかった文字は,0番の文字クラスに属するとみなされる.
 そのため,0番以外の文字クラスではこの項目は必須である.
 
@@ -404,6 +467,17 @@ $i$番の文字クラスの文字と$j$番の文字クラスの文字の間に
 
 \enditem
 
+\beginsection 互換用命令(書きかけ)
+
+{\tt luatexja-compat.sty}を読み込むことで,次が追加.
+\item |\euc|, |\jis|, |\sjis|, |\kuten|, |\ucs|: 
+それぞれEUC-JP,ISO-2022-JP,Shift-JIS,区点コードからUnicodeへの変換を行う.
+JIS~X~0208→Unicodeへの変換テーブルとしては,up\TeX-0.30で用いられているものを利用している.
+\item |\kansuji|
+\item |kansujichar={<num>, <char>}|~key in |\ltjsetparameter|.
+\enditem
+
+
 \beginsection 大まかな処理の流れ
 
 Lua\TeX-jaパッケージでは,次のような流れで実際の処理を行っている.
@@ -414,14 +488,29 @@ Lua\TeX-jaパッケージでは,次のような流れで実際の処理を行
 改行した箇所には自動的に空白が入るようになっている.
 だが,日本語ではそのような振る舞いは不自然であり,p\TeX でも
 「和文文字で行が終わった場合,改行文字は無視する」という
½¿ç\94¨になっている.
»\95æ§\98になっている.
 
 そこで,入力が和文文字で終わった場合,コメント文字を挿入することにより
-この問題を解決する方法をとっている.
+この問題を解決する方法をとっている.{\small
 この部分のコードは前田氏のjafontspecパッケージの部分から拝借したが,挿入する文字を|%|から
-(通常使用されることはないと思われる)|U+FFFFF|へと変更している.
+(通常使用されることはないと思われる)|U+FFFFF|へと変更している.}
+
+しかし,現行Lua\TeX の仕様により,完全にp\TeX と同じというわけには
+いかず,次のような動作になっている:
+\itemitem 入力行の末尾が,正規表現で
+\begintt
+[:jchar:][\{\}]^*$
+\endtt
+となっている場合,即ち,{\bf catcodeが11 or 12の和文文字の後に,
+グループ境界文字(catcodeが1 or 2の文字.通常は\hskip\ltjgetparameter{xkanjiskip}|{|%
+\hskip\ltjgetparameter{xkanjiskip}や\hskip\ltjgetparameter{xkanjiskip}|}|%
+\hskip\ltjgetparameter{xkanjiskip})が任意個続いて
+行が終わっていた}場合,この行の入力にコメント文字を追加.
+\itemitem 上の「和文文字」「グループ境界文字」の判定は,処理対象の入力行の前行末尾の時点の
+設定値をもとに行う.そのため,行の途中でcatcodeの変更を行った場合などで,p\TeX と異なる挙動
+を示す場合がある.
 
-\item {\bf 和文フォントへの置換: |hyphenate|, |hpack_filter| callbacks}
+\item {\bf 和文フォントへの置換: |hyphenate| callback}
 
 この段階の前では,和文文字であっても,それを内部で表している|glyph_node|~$p$は,
 「|\tenrm あ|」のように,欧文フォントが指定されている状態になっている.しかし,
@@ -436,49 +525,11 @@ $p$は「現在の和文フォント」の番号もattribute |\ltj@curjfnt|と
 
 \item {\bf (luaotfloadパッケージによるグリフ置換等の処理はこの位置で)}
 
-\item {\bf JFM由来glue/kernの挿入: |pre_linebreak_filter|, |hpack_filter|}
-
-ここで,JFMに由来する和文文字間のglue/kernを挿入する.
-基本的には連続する和文文字(を表すnode)間に挿入するが,
-\itemitem 水平ボックスの先頭/末尾,段落の先頭/末尾には「文字コード|'boxbdd'|の文字」があると
-見做して空白を挿入する.
-\itemitem 和文文字とそうでないもの(欧文文字,ボックス等)の間に関しては,
-和文文字でない方は「文字コード|'jcharbdd'|の文字」であると見做す.
-\itemitem フォントの異なる2つの和文文字においても,
-両者のフォントのJFMとsizeが一致した場合は,
-挿入処理においては「同じフォント」であるかのように扱う.
-\itemitem  そうでない場合は,両者の間に「文字コード|'diffmet'|の文字」があると見做して,
-両和文文字からそれぞれglue/kern |gb|, |ga|を計算し,そこから実際に入るglue/kernを
-計算している(|\ltjsetparameter|中の|differentjfm|キーを参照).
-\itemitem もうちょっと詳しく書くと,本処理前において,和文文字を表す
-2つの連続した|glyph_node| $Q$, $P$の間には,次のnode達が挿入される:
-$$
- \ldots,\ Q,\ (\hbox{|\kern|}\ w\,{\rm pt}),\ (\hbox{|\penalty|}\ p),\ 
-(\hbox{|\kern|}\ (k-w)\,{\rm pt})
-,\ P,\ \ldots
-$$
-上に書いた全てのnodeが挿入されるとは限らず,また4つめのkernもglueに変わる可能性がある.
-上に出てきた量の意味は次の通りである:
-\itemT $w$: $Q$が行末にきたときに,行末からどれだけずらすかを指定した量.
-\itemT $p$: $Q$の行末禁則用penaltyと$P$の行頭禁則用penaltyの合計値.ウィドウ防止用の
-|\jcharwidowpenalty|が挿入される時は,値はここに加算される.
-\itemT |\kern| $k$: 本来の$Q$と$P$の間に入る空き(glueであることも).
-$w$のために自然長を補正している.
-
-\item {\bf |\kanjiskip|, |\xkanjiskip|の挿入: |pre_linebreak_filter|, |hpack_filter|}
-
-p\TeX の|adjust_hlist| procedureとほぼ同様の処理を用いて,
-和文間glue |\kanjiskip|や和欧文間glue |\xkanjiskip|を
-挿入する.
-\itemitem 数式境界 (|math_node|) との間に|\xkanjiskip|を自動挿入するかの決定は,
-p\TeX では数字{\tt 0}との間に挿入するかどうかで判定していたが,Lua\TeX-jaでは
-「文字コード$-1$の文字」で判定している.
-\itemitem 合字の周囲の空白挿入については,構成要素の文字列を通じて判断している.例えば,
-「漢ffi字」という文字列に対して,
-\itemT 「漢」と「ffi」間の空白挿入:「漢」と「f」間に入るかで判断
-\itemT 「ffi」と「字」間の空白挿入:「i」と「字」間に入るかで判断
-
-\item {\bf ベースライン補正: |pre_linebreak_filter|, |hpack_filter|}
+\item {\bf 和文処理グルーの挿入: |pre_linebreak_filter|, |hpack_filter| callbacks}
+
+動作の詳細については,{\tt jfmglue.pdf}(未完)を参照.
+
+\item {\bf ベースライン補正: |pre_linebreak_filter|, |hpack_filter| callbacks}
 
 この段階では,(主として)欧文文字のベースラインをずらす作業を行う.幸いにして,
 Lua\TeX で文字を表す|glyph_node|には|y_offset| fieldがあるので,作業は楽である.
@@ -491,7 +542,7 @@ Lua\TeX で文字を表す|glyph_node|には|y_offset| fieldがあるので,
 \itemitem 文字 (|glyph_node|)
 \itemitem ボックス・rule(文中数式内部).これによって,数式全体が下がったように見えるはず.
 
-\item {\bf 和文文字の幅の補正: |pre_linebreak_filter|, |hpack_filter|}
+\item {\bf 和文文字の幅の補正: |pre_linebreak_filter|, |hpack_filter| callbacks}
 
 例えば,括弧類は「フォント中では全角幅だが,組版では半角幅として扱う」ことが多いが,このように
 文字幅を補正する処理を最後に行う.jafontspecパッケージのように,補正対象となる|glyph_node|~$p$%