OSDN Git Service

Merge branch 'kitagawa_test' into vert_vrt2
[luatex-ja/luatexja.git] / doc / luatexja.dtx
index f46f6e1..4bf6643 100644 (file)
@@ -21,7 +21,7 @@
 \usepackage{metalogo,amsmath,array,tikz,pict2e,multienum,float}
 \usepackage{booktabs,multicol,luatexja-ruby}
 \usepackage[all]{xy}
-\usepackage{lltjext,alltt}
+\usepackage{lltjext,alltt,comment}
 
 %%%%%%%% Lua GC
 \patchcmd\@outputpage{\stepcounter{page}}{%
@@ -39,7 +39,6 @@
 
 %%%%%%%% fonts
 \usepackage{luatexja-otf}
-\directlua{luatexja.otf.enable_ivs()}
 \usepackage[no-math]{fontspec}
 \setmainfont[Ligatures=TeX]{Linux Libertine O}
 \setmonofont[Scale=MatchLowercase, ItalicFont=lmmono10-italic.otf,
@@ -460,7 +459,7 @@ on the content of the register \emph{only}. This is major difference with \pTeX.
 %</en>
 %<*ja>
 \paragraph{組方向}
-20150420.0版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
+バージョン20150420.0からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
 なお,\LuaTeX 本体も$\Omega$流の組方向をサポートしているが,それとは全くの別物であること
 に注意してほしい.
 特に,異なった組方向のボックスを扱う場合には
@@ -503,7 +502,7 @@ without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package.
       詳しい説明は\ref{ssec-setrange}節を参照してほしい.
 
 また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は
-      20150906.0版から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では
+      バージョン20150906.0から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では
 標準でTUエンコーディングのLatin Modernフォントが使われるので,
 特に何もせずソース中にそのまま記述してもこれらの文字が出力される
 \footnote{\LaTeXe\ 2017/01/01より前では,ソース中に直接記述しても
@@ -573,10 +572,10 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
 %</ja>
 %<*en>
 \item In this document, natural numbers start from~zero.
-  $\omega$ denotes the set of all natural numbers.
+  $\omega$ denotes the set of all natural numbers which can be used in \TeX.
 %</en>
 %<*ja>
-\item 本ドキュメントでは,自然数は0から始まる.自然数全体の集合は$\omega$と表記する.
+\item 本ドキュメントでは,自然数は0から始まる.(\TeX で扱える)自然数全体の集合は$\omega$と表記する.
 %</ja>
 \end{itemize}
 
@@ -645,7 +644,7 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
 \end{itemize}
 %<en>In summary, \LuaTeX-ja version 20160404.0 (or~later) no longer supports \TeX~Live~2015.
 %<*ja>
-要約すると,20160404.0版以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{%
+要約すると,バージョン20160404.0以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{%
   もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である.
 }.
 %</ja>
@@ -985,7 +984,7 @@ plfonts.dtx} and \texttt{pldefs.ltx}):
 
 \begin{itemize}
 %<*en>
-\item Font encodings for Japanese fonts is \texttt{JY3}~(for horizontal direction) and
+\item Font encodings for Japanese fonts are \texttt{JY3}~(for horizontal direction) and
 \texttt{JT3}~(for vertical direction).
 %</en>
 %<*ja>
@@ -994,20 +993,20 @@ plfonts.dtx} and \texttt{pldefs.ltx}):
 %</ja>
 
 %<*en>
-\item Traditionally, Japanese documents use two typeface categories: \emph{mincho}~(明朝体) and
+\item Traditionally, Japanese documents use only two families: \emph{mincho}~(明朝体) and
  \emph{gothic}~(\textgt{ゴシック体}). \emph{mincho} is used in the main text, while \emph{gothic}
       is used in the headings or for emphasis.
 \begin{center}\small
 \begin{tabular}{lllc}
 \toprule
-\textbf{classification}&&&\textbf{family name}\\\midrule
+\textbf{classification}&&&\textbf{commands}\\\midrule
 \emph{mincho} (明朝体)&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
 \emph{gothic} (\textgt{ゴシック体})&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\
 \bottomrule
 \end{tabular}
 \end{center}
 \item
-By default, the following fonts are used for \emph{mincho} and \emph{gothic}:
+By default, the following fonts are used for these two families.
 \begin{center}\small
 \begin{tabular}{ccccc}
 \toprule
@@ -1017,7 +1016,7 @@ By default, the following fonts are used for \emph{mincho} and \emph{gothic}:
 \bottomrule
 \end{tabular}
 \end{center}
-Note that the bold series in both family are same as the medium series of \emph{gothic}
+Note that the bold series in both family are same as the medium series of gothic
      family. There is no italic nor slanted shape for
       these \texttt{mc}~and~\texttt{gt}.
 %</en>
@@ -1032,7 +1031,7 @@ Note that the bold series in both family are same as the medium series of \emph{
 \bottomrule
 \end{tabular}
 \end{center}
-\item æ¨\99æº\96ã\81§ã\81¯ï¼\8c次ã\81®ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªã\81\8cç\94¨ã\81\84ã\82\89ã\82\8cã\82\8bï¼\9a
+\item 標準では,次のフォントが用いられる:
 \begin{center}\small
 \begin{tabular}{ccccc}
 \toprule
@@ -1042,8 +1041,8 @@ Note that the bold series in both family are same as the medium series of \emph{
 \bottomrule
 \end{tabular}
 \end{center}
-どちらのファミリにおいても,そのboldシリーズで使われるフォントは
-ゴシック体のmediumシリーズで使われるフォントと同じであることに注意.
+どちらのファミリにおいても,太字(\cs{bfseries})のフォントは
+ゴシック体中字(\cs{gtfamily}\cs{mdseries})で使われるフォントと同じであることに注意.
 また,どちらのファミリでもイタリック体・スラント体は定義されない.
 %</ja>
 
@@ -1058,7 +1057,7 @@ Note that the bold series in both family are same as the medium series of \emph{
        These classes and packages also redefine \cs{jttdefault} to
        \cs{gtdefault} (\emph{gothic}~family).
   } specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim} environment.
-  The default value of \cs{jttdefault} is \cs{mcdefault}, so \emph{mincho} family is used.
+  The default value of \cs{jttdefault} is \cs{mcdefault}, so the mincho family is used.
 %</en>
 %<*ja>
  \item \cs{verb} や \texttt{verbatim} 環境中の和文文字に使われる和文フォントファミリは
@@ -1075,8 +1074,8 @@ Note that the bold series in both family are same as the medium series of \emph{
 %<*en>
 \item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif
       fonts) and with \LuaTeX-ja, you might want to change default Japanese fonts to
-      \emph{gothic} family. The following line  changes  the default Japanese font family
-      to \emph{gothic}:
+      the gothic family. The following line  changes  the default Japanese font family
+      to it:
 %</en>
 %<*ja>
 \item \Pkg{beamer}クラスを既定のフォント設定で使う場合,既定欧文フォントがサンセリフなの
@@ -1433,22 +1432,19 @@ alphabetic fonts
 %</en>
 %<*ja>
 \begin{center}\small
-\begin{tabular}{cccc}
+\begin{tabular}{ccccc}
 \toprule
 和文
-&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}\\
-欧文
-&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}\\
-\midrule
-和文
-&\cs{newjfontfamily}&\cs{newjfontface}&\cs{defaultjfontfeatures}\\
+&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
 欧文
-&\cs{newfontfamily}&\cs{newfontface}&\cs{defaultfontfeatures}\\
+&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
 \midrule
 和文
-&\cs{addjfontfeatures}\\
+&\cs{newjfontfamily}&\cs{newjfontface}
+&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
 欧文
-&\cs{addfontfeatures}\\
+&\cs{newfontfamily}&\cs{newfontface}
+&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
 \bottomrule
 \end{tabular}
 \end{center}
@@ -1535,5989 +1531,6318 @@ JIS~X~0208:1990→辻
 
 %<en>\subsection{Presets of Japanese fonts}
 %<ja>\subsection{和文フォントのプリセット設定}
-\label{ssec-preset}
+\label{ssec:preset-abst}
 
 %<*en>
-One can load the \Pkg{luatexja-preset}
-package to use several ``presets'' of Japanese fonts.
-This package provides functions in a part of
-\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato.
-
-One can specified other options other than listed in this subsection.
-These are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is
-\emph{not} specified; in this case these options are simply ignored.}.
-For example, the line~5 in below example is eqivalent to lines 1--3.
+With \Pkg{luatexja-preset} package, 
+one use one of ``preset'' to simplify Japanese font setting.
+For details of package options, and those of each presets, please see Subsecion~\ref{ssec:preset}.
+The following presets are defined:
 %</en>
 %<*ja>
 よく使われている和文フォント設定を一行で指定できるようにしたのが
-\Pkg{luatexja-preset}パッケージである.このパッケージは,
-\Pkg{otf}パッケージの一部機能と八登崇之氏による\Pkg{PXchfon}パッケージの一部機能とを
-合わせたような格好をしている.
-
-オプションとして,本節にないものも指定することができるが,それらは
-\Pkg{luatexja-fontspec}パッケージに渡される\footnote{\texttt{nfssonly} オプションが
-指定されていた場合は,\Pkg{luatexja-fontspec}パッケージは読み込まれないので単純に無視され
-る.}.例えば,下の1--3行目は5行目のように一行にまとめることができる.
+\Pkg{luatexja-preset}パッケージである.オプションや各プリセットの詳細については
+\ref{ssec:preset}節を参照して欲しい.
+現時点では以下のプリセットが定義されている:
 %</ja>
+\begin{quote}
+  \ttfamily
+  \hyphenchar\font=-1 \exhyphenchar=-1
+  hiragino-pro, hiragino-pron, ipa, ipa-hg, ipaex, ipaex-hg,
+  kozuka-pr6, kozuka-pr6n, kozuka-pro, moga-mobo, moga-mobo-ex,
+  morisawa-pr6n, morisawa-pro, ms, ms-hg, noembed, noto-otc, noto-otf,
+  sourcehan, sourcehan-jp, ume, yu-osx, yu-win, yu-win10
+\end{quote}
+
+%<ja> 例えば,本ドキュメントでは\Pkg{luatexja-preset}パッケージを
+%<en> For example, this document loads \Pkg{luatexja-preset} package by
 \begin{lstlisting}
-\usepackage[no-math]{fontspec}
-\usepackage[match]{luatexja-fontspec}
 \usepackage[kozuka-pr6n]{luatexja-preset}
-%%--------
-\usepackage[no-math,match,kozuka-pr6n]{luatexja-preset}
 \end{lstlisting}
+%<ja>として読み込み,小塚書体(Pr6N)を使うことを指定している.
+%<en> which means that Kozuka~Pr6N fonts will be used in this document.
 
-%<en>\paragraph{General options}
-%<ja>\paragraph{一般的なオプション}
-\begin{cslist}[before*=]
-\item[fontspec%
-%<en>\textrm{~(enabled by default)}
-%<ja>\emph{\gtfamily (既定)}
-]
-%<*en>
-With this option, Japanese fonts are selected using functionality of
-the \Pkg{luatexja-fontspec} package. This means that the \Pkg{fontspec} package is
-            automatically loaded by this package.
 
-If you need to pass some options to \Pkg{fontspec}, you can load \Pkg{fontspec} manually
-before \Pkg{luatexja-preset}:
+%<*en>
+\subsection{\cs{CID}, \cs{UTF}, and macros in \Pkg{japanese-otf} package}
+Under \pLaTeX, \Pkg{japanese-otf} package (developed by Shuzaburo Saito) is
+used for typesetting characters which is in Adobe-Japan1-6 CID but not
+in JIS~X~0208. Since this package is widely used, \LuaTeX-ja
+supports some of functions in the \Pkg{japanese-otf} package,
+as an external package \Pkg{luatexja-otf}.
 %</en>
 %<*ja>
-\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する.
-これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する.
+\subsection{\cs{CID}, \cs{UTF}と\Pkg{otf}パッケージのマクロ}
+\pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために,
+齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは
+広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の
+一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した.
+%</ja>
 
-もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある
-\footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の
-斜体大文字が出なくなる,など.}場合は,
-次のように\Pkg{luatexja-preset}の前に\Pkg{fontspec}を手動で読みこめば良い:
+\begin{LTXexample}
+\jfontspec{KozMinPr6N-Regular.otf}
+森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。
+
+\CID{7652}飾区の\CID{13706}野家,
+\CID{1481}城市,葛西駅,
+高崎と\CID{8705}\UTF{FA11}
+
+\aj半角{はんかくカタカナ}
+\end{LTXexample}
+
+%<*ja>
+\Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した:
+\begin{cslist}
+\item[deluxe] 明朝体・ゴシック体各3ウェイトと,丸ゴシック体を扱えるようになる.
+\item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も
+\ \cs{rubyfamily}\ によって扱えるようになる.
+\item[bold] ゴシック体を標準で太いウェイトのものに設定する.
+\end{cslist}
+しかしこれらのオプションは\Pkg{luatexja-otf}パッケージには存在しない.
+\Pkg{otf}パッケージが文書中で使用する和文用TFMを自前の物に置き換えていたのに対し,
+\Pkg{luatexja-otf}パッケージでは,そのようなことは行わないからである.
+
+これら3オプションについては,
+\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか,
+あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や
+\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
 %</ja>
-\begin{lstlisting}
-\usepackage[no-math]{fontspec}
-\usepackage[...]{luatexja-preset}
-\end{lstlisting}
 
-\item[nfssonly]
+%<en>\subsection{Changing default Japanese fonts}
+%<ja>\subsection{標準和文フォントの変更}
+\label{ssec-cfg}
 %<*en>
-With this option, selecting Japanese fonts won't be performed using the functionality of
-            the \Pkg{fontspec} package, but only standard NFSS2 (hence without
-            \cs{addjfontfeatures} etc.).
-This option is ignored when \Pkg{luatexja-fontspec} package is loaded.
+If \texttt{luatexja.cfg} can be seen from \LuaTeX, \LuaTeX-ja automatically reads it.
+The main use of \texttt{luatexja.cfg} is for changing default Japanese fonts,
+when IPAex fonts cannot be installed in \TeX~system.
+One should not overuse this \texttt{luatexja.cfg}; fonts which will be used in
+a document should be specified in its source.
 
-When this option is specified, \Pkg{fontspec}~and~\Pkg{luatexja-fontspec} are
-\emph{not} loaded by default. Nevertheless,
-the package\Pkg{fontspec} can coexist with the option, as the following:
+For example,
 \begin{lstlisting}
-\usepackage{fontspec}
-\usepackage[hiragino-pron,nfssonly]{luatexja-preset}
+\def\ltj@stdmcfont{IPAMincho}
+\def\ltj@stdgtfont{IPAGothic}
+\end{lstlisting}
+makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of
+IPAex~Mincho and IPAex~Gothic.
+
+For another example, the following two lines makes that
+non-embedded fonts Ryumin-Light~and~GothicBBB-Medium as default Japanese fonts
+(as the earlier version of \LuaTeX-ja):
+\begin{lstlisting}
+\def\ltj@stdmcfont{psft:Ryumin-Light}
+\def\ltj@stdgtfont{psft:GothicBBB-Medium}
 \end{lstlisting}
-In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fonts.
 %</en>
 %<*ja>
-\LaTeX 標準のフォント選択機構(NFSS2)を用いて
-\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ
-            ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という
-3つの和文フォントファミリを定義し,これらを用いる.
+\LuaTeX から見える位置に \texttt{luatexja.cfg} があれば,\LuaTeX-jaはそれを読み込む.
+このファイルを用いるとplain~\TeX, \LaTeXe における標準和文フォントを
+IPAex明朝・IPAexゴシックから変更することができる.
+しかし,基本的には\emph{文章中で用いるフォントは(例えば \Pkg{luatexja-preset} などで)
+文書ソース内で指定するべき}であり,この \texttt{luatexja.cfg} は,
+「IPAexフォントがインストールできない」など,IPAexフォントが使用できない場合にのみ
+応急処置的に用いるべきである.
 
-本オプション指定時には\Pkg{fontspec}・\Pkg{luatexja-fontspec}パッケージは
-自動では読み込まれない,しかし,
+例えば
 \begin{lstlisting}
-\usepackage{fontspec}
-\usepackage[hiragino-pron,nfssonly]{luatexja-preset}
+\def\ltj@stdmcfont{IPAMincho}
+\def\ltj@stdgtfont{IPAGothic}
 \end{lstlisting}
-のようにすれば,このオプションを指定すれば
-欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる.
-一方,
-パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて
-            いる場合は \texttt{nfssonly} オプションは無視される.
+と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変
+更される.
+
+
+なお,20140906.0以前のバージョンのように,
+Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用いる場合は
+\begin{lstlisting}
+\def\ltj@stdmcfont{psft:Ryumin-Light}
+\def\ltj@stdgtfont{psft:GothicBBB-Medium}
+\end{lstlisting}
+と記述すればよい.
 %</ja>
 
-\item[match]
+
+%<en>\section{Changing Internal Parameters}
+%<ja>\section{パラメータの変更}
+
 %<*en>
-If this option is specified, usual family-changing commands such as
-\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
-This option is passed to \Pkg{luatexja-fontspec}, if \texttt{fontspec}
-option is specifed.
+There are many internal parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX,
+most of them are not stored as internal register of \TeX, but as an
+original storage system in \LuaTeX-ja. Hence, to assign or acquire those
+parameters, you have to use commands \cs{ltjsetparameter} and
+\cs{ltjgetparameter}.
 %</en>
-
 %<*ja>
-このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
-\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
-欧文フォントだけでなく和文フォントも変更するようになる.
-\ \texttt{fontspec}\
-オプションが有効になっている場合は,このオプションは \Pkg{luatexja-fontspec} パッケージへと渡される.
+\LuaTeX-jaには多くのパラメータが存在する.そして\LuaTeX の仕様のために,
+その多くは\TeX のレジスタにではなく,\LuaTeX-ja独自の方法で保持されている.
+これらのパラメータを設定・取得するためには \cs{ltjsetparameter} と \cs{ltjgetparameter} を
+用いる.
 %</ja>
 
+%<en>\subsection{Range of \textbf{JAchar}s}
+%<ja>\subsection{\textbf{JAchar}の範囲}
+\label{ssec-setrange}
 
-\item[nodeluxe%
-%<en>\textrm{~(enabled by default)}
-%<ja>\emph{\gtfamily (既定)}
-]
 %<*en>
-The nagation of \texttt{deluxe} option.
-Use one-weighted \textit{mincho} and \textit{gothic} font families.
-This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and
-\verb+\gtfamily\mdseries+ use the same font.
+\LuaTeX-ja divides the Unicode codespace \texttt{U+0080}--\texttt{U+10FFFF}
+into \emph{character ranges},
+numbered 1 to 217. The grouping can be (globally) customized by \cs{ltjdefcharrange}.
+The next line adds whole characters in Supplementary Ideographic Plane
+and the character ``漢'' to the character range~100.
 %</en>
 %<*ja>
-\texttt{deluxe}オプションの否定.
-\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する.
-より具体的に言うと,この設定の下では
-\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+,
-\verb+\gtfamily\mdseries+はみな同じフォントとなる.
+\LuaTeX-jaは,Unicodeの \texttt{U+0080}--\texttt{U+10FFFF} の空間を
+1番から217番までの\emph{文字範囲}に分割している.
+区分けは \cs{ltjdefcharrange} を用いることで(グローバルに)変更することができ,
+例えば,次は追加漢字面(SIP)にある全ての文字と「漢」を「100番の文字範囲」に追加する.
 %</ja>
-\item[deluxe]
+\begin{lstlisting}
+\ltjdefcharrange{100}{"20000-"2FFFF,`漢}
+\end{lstlisting}
+
 %<*en>
-Use \textit{mincho} with two weights (medium~and~bold),
-\textit{gothic} with three weights (medium, bold~and~heavy), and \textit{rounded gothic}%
-\footnote{Provided by \cs{mgfamily} and \cs{textmg},
-because \textit{rounded gothic} is called \textit{maru gothic} (丸ゴシック) in Japanese.}.
-The heavy weight of \textit{gothic} can be used by ``changing the family'' \cs{gtebfamily},
-or \verb+\textgteb{...}+.
-This is because the \Pkg{fontspec} package can handle only medium (\cs{mdseries}) and
-bold (\cs{bfseries}).
+A character can belong to only one character range.
+For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja,
+and if one executes the above line, then SIP will belong to the range~100 and be
+removed from the range~4.
+%</en>
+%<*ja>
+各文字はただ一つの文字範囲に所属することができる.
+例えば,SIP内の文字は全て\LuaTeX-jaのデフォルトでは4番の文字範囲に
+属しているが,上記の指定を行えばSIP内の文字は100番に属すようになり,4番からは除かれる.
+%</ja>
+
+%<*en>
+The distinction between \textbf{ALchar} and \textbf{JAchar} is performed by character ranges.
+This can be edited by setting the \textsf{jacharrange} parameter.
+For example, the code below is just the default setting of \LuaTeX-ja, and
+it sets
+\begin{itemize}
+ \item a character which belongs character ranges 1,~4, 5, and~8 is \textbf{ALchar},
+ \item a character which belongs character ranges 2,~3, 6, and~7 is \textbf{JAchar}.
+\end{itemize}
 %</en>
 %<*ja>
-明朝体2ウェイト・ゴシック体3ウェイトと,
-丸ゴシック体 (\cs{mgfamily}, \verb+\textmg{...}+) を使用可能とする.
-ゴシック体は中字・太字・極太の3ウェイトがあるが,
-極太ゴシック体を使う場合,
+\textbf{ALchar}と\textbf{JAchar}の区別は文字範囲ごとに行われる.
+これは\textsf{jacharrange}パラメータによって編集できる.
+例えば,以下は\LuaTeX-jaの初期設定であり,次の内容を設定している:
 \begin{itemize}
- \item \cs{gtebfamily}, \verb+\textgteb{...}+
- \item \cs{ebseries} (周囲がゴシック体のとき,\texttt{nfssonly} オプション指定時のみ)
+ \item 1番,4番,5番,8番の文字範囲に属する文字は\textbf{ALchar}.
+ \item 2番,3番,6番,7番の文字範囲に属する文字は\textbf{JAchar}.
 \end{itemize}
-のいずれかを用いる.標準で \cs{ebseries} が準備されていないのは,バージョンが古い
-\Pkg{fontspec}では中字(\cs{mdseries})と太字(\cs{bfseries})しか扱えなかった名残である.
 %</ja>
-\item[expert]
+\begin{lstlisting}
+\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}}
+\end{lstlisting}
 %<*en>
-Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana
-characters designed for ruby.
+The argument to \textsf{jacharrange} parameter is a list of non-zero integer.
+Negative integer $-n$ in the list means that ``each character in the range~$n$ is an
+\textbf{ALchar}'',
+and positive integer $+n$ means that ``\dots\ is a \textbf{JAchar}''.
 %</en>
 %<*ja>
-横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{%
-  \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では
-  font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え).
-}.
+\textsf{jacharrange}パラメータの引数は非零の整数のリストである.
+リスト中の負の整数$-n$は「文字範囲$n$に属する文字は\textbf{ALchar}として
+扱う」ことを意味し,正の整数$+n$は「\textbf{JAchar}として扱う」ことを意味する.
 %</ja>
-\item[bold]
+
 %<*en>
-Substitute bold series of \textit{gothic} for  bold series of \textit{mincho}.
-If \texttt{nodeluxe} option is enabled, medium series of \textit{gothic} is also changed,
-since we use same font for both series of \textit{gothic}.
+Note that characters \texttt{U+0000}--\texttt{U+007F} are always treated as an
+\textbf{ALchar} (this cannot be customized).
 %</en>
 %<*ja>
-「明朝の太字」をゴシック体の太字によって代替する.
-もし\texttt{nodeluxe}オプションが指定されている場合は,ゴシック体は1ウェイトしか使用されな
-          いため,
-「ゴシック体の中字」も同時に変更されることになる.
+なお,\texttt{U+0000}--\texttt{U+007F} は常に\textbf{ALchar}として扱われる(利用者が変更す
+ることは出来ない).
 %</ja>
-\item[90jis]
-%<en>Use 90JIS glyph variants if possible.
-%<ja>出来る限り90JISの字形を使う.
-\item[jis2004]
-%<en>Use JIS2004 glyph variants if possible.
-%<ja>出来る限りJIS2004の字形を使う.
-\item[jfm\_yoko=<jfm>]
+
 %<*en>
-Use the JFM \texttt{jfm-<jfm>.lua} for horizontal direction, instead of \texttt{jfm-ujis.lua}~(default JFM).
+\paragraph{Default character ranges}
+\LuaTeX-ja predefines eight character ranges for convenience. They are
+determined from the following data:
 %</en>
 %<*ja>
-横組用和文フォントで用いるJFMを\texttt{jfm-<jfm>.lua}にする.このオプションがない時は
-\LuaTeX\nobreakdash -ja標準の\texttt{jfm-ujis.lua}が用いられる.
+\paragraph{文字範囲の初期値}
+\LuaTeX-jaでは8つの文字範囲を予め定義しており,
+これらは以下のデータに基づいて決定している.
 %</ja>
-\item[jfm\_tate=<jfm>]
+\begin{itemize}
+%<en>\item Blocks in Unicode~6.0.
+%<ja>\item Unicode~6.0のブロック.
+%<en>\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode.
+%<ja>\item Adobe-Japan1-6のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}.
+%<en>\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato.
+%<ja>\item 八登崇之氏による\upTeX 用の\Pkg{PXbase}バンドル.
+\end{itemize}
+
 %<*en>
-Use the JFM \texttt{jfm-<jfm>.lua} for vertical direction, instead of \texttt{jfm-ujisv.lua}~(default JFM).
+Now we describe these eight ranges. The superscript ``J'' or ``A'' after the
+number shows whether each character in the range is treated as
+\textbf{JAchar}s or not by default. These settings are similar to the
+\texttt{prefercjk} settings defined in \texttt{PXbase} bundle.
+Any characters equal to or above \texttt{U+0080} which does not belong to
+these eight ranges belongs to the character range~217.
 %</en>
 %<*ja>
-縦用和文フォントで用いるJFMを\texttt{jfm-<jfm>.lua}にする.このオプションがない時は
-\LuaTeX-ja標準の\texttt{jfm-ujisv.lua}が用いられる.
+以下ではこれら8つの文字範囲について記述する.添字のアルファベット「J」「A」
+は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの初期設定は
+\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものであるが,
+8ビットフォント使用時のトラブルを防ぐために \texttt{U+0080}--\texttt{U+00FF} の文字は全部
+\textbf{ALchar}としている.
+なお,\texttt{U+0080} 以降でこれら8つの文字範囲に属さない文字は,217番の文字範囲に属することになっている.
 %</ja>
+\begin{description}
+%<*en>
 
-\item[jis]
-%<en>Same as \texttt{jfm\_yoko=jis}.
-%<ja>\texttt{jfm\_yoko=jis}と同じ.ここで用いるJFM\texttt{jfm-jis.lua}はJISフォントメトリックを元にしたものである.
+\item[Range~8${}^{\text{A}}$] The intersection of the upper half of ISO~8859-1
+        (Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range
+        consists of the following characters:
+%</en>
+%<*ja>
+\item[範囲8${}^{\text{A}}$] ISO~8859-1の上位領域(ラテン1補助)と
+                             JIS~X~0208の共通部分.この文字範囲は
+                             以下の文字で構成される:
+%</ja>
+\begin{multicols}{2}
+\begin{itemize}
+\def\ch#1#2{\item \char"#1\ (\texttt{U+00#1}, #2)}%"
+\ch{A7}{Section Sign}
+\ch{A8}{Diaeresis}
+\ch{B0}{Degree sign}
+\ch{B1}{Plus-minus sign}
+\ch{B4}{Spacing acute}
+\ch{B6}{Paragraph sign}
+\ch{D7}{Multiplication sign}
+\ch{F7}{Division Sign}
+\end{itemize}
+\end{multicols}
 
-\end{cslist}
 %<*en>
-Note that \texttt{90jis} and \texttt{jis2004} only affect with \textit{mincho},
-\textit{gothic} (and possibly \textit{rounded gothic}) defined by this package.
-We didn't taken account of  when both \texttt{90jis} and \texttt{jis2004} are specified.
+\item[Range~1${}^{\text{A}}$] Latin characters that some of them are included in Adobe-Japan1-6.
+This range consists of the following Unicode ranges, \emph{except characters in the range~8 above}:
 %</en>
 %<*ja>
-\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された
-明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.
-両オプションが同時に指定された場合の動作については全く考慮していない.
+\item[範囲1${}^{\text{A}}$] ラテン文字のうち,Adobe-Japan1-6との共通部分があるもの.
+                             この範囲は以下のUnicodeのブロックのうち
+                             \emph{範囲8を除いた}部分で構成されている:
 %</ja>
-
-%<en>\paragraph{Presets for multi weight}
-%<ja>\paragraph{多ウェイト用プリセットの一覧}
+\begin{multicols}{2}
+\begin{itemize}
+\item \texttt{U+0080}--\texttt{U+00FF}: Latin-1 Supplement
+\item \texttt{U+0100}--\texttt{U+017F}: Latin Extended-A
+\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B
+\item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions
+\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters
+%<en>\par\
+\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks
+\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional
+%<ja>\par\
+\end{itemize}
+\end{multicols}
 %<*en>
-Besides \texttt{morisawa-pro}~and~\texttt{morisawa-pr6n} presets,
-fonts are specified by font name, not by file name.
-In following tables, starred fonts (e.g.~KozGo\dots-Regular) are used for medium series of \textit{gothic},
-\emph{if and only if \texttt{deluxe} option is specified}.
+\item[Range~2${}^{\text{\kern.1emJ}}$] Greek and Cyrillic letters. JIS~X~0208 (hence most of Japanese
+          fonts) has some of these characters.
 %</en>
 %<*ja>
-\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は
-(ファイル名でなく)フォント名で行われる.
-以下の表において,*\,つきのフォント(e,g,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に}
-ゴシック体中字として用いられるものを示している.
+\item[範囲2${}^{\text{\kern.1emJ}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの
+                             和文フォント)には,これらの文字の一部が含まれている.
 %</ja>
-\begin{cslist}[style=standard]
- \item[kozuka-pro] Kozuka Pro (Adobe-Japan1-4) fonts.
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[kozuka-pr6] Kozuka Pr6 (Adobe-Japan1-6)  fonts.
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[kozuka-pr6n] Kozuka Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts.
-
+\begin{multicols}{2}
+\begin{itemize}
+\item \texttt{U+0370}--\texttt{U+03FF}: Greek and Coptic
+\item \texttt{U+0400}--\texttt{U+04FF}: Cyrillic
+\item \texttt{U+1F00}--\texttt{U+1FFF}: Greek Extended
+\\\
+\end{itemize}
+\end{multicols}
 %<*en>
-Kozuka Pro/Pr6N fonts are bundled with Adobe's software, such as Adobe~InDesign.
-There is not rounded gothic family in Kozuka fonts.
+\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is
+          indicated in \autoref{tab:rng3}.
 %</en>
 %<*ja>
-小塚Pro書体・Pr6N書体はAdobe InDesign等のAdobe製品にバンドルされている.
-「小塚丸ゴシック」は存在しないので,便宜的に小塚ゴシックHによって代用している.
+\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは\autoref{tab:rng3}%
+                             に示してある.
 %</ja>
-\begin{center}\small
-\begin{tabular}{cllll}
-\toprule
-\bfseries family&\bfseries series&\ttfamily kozuka-pro&\ttfamily kozuka-pr6&\ttfamily kozuka-pr6n\\
-\midrule
- &medium&KozMinPro-Regular&KozMinProVI-Regular&KozMinPr6N-Regular\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&KozMinPro-Bold&KozMinProVI-Bold&KozMinPr6N-Bold\\
-\midrule
- &&KozGoPro-Regular*&KozGoProVI-Regular*&KozGoPr6N-Regular*\\
- &\smash{\raisebox{1.5ex}{medium}}
- &KozGoPro-Medium&KozGoProVI-Medium&KozGoPr6N-Medium\\
-\cmidrule(l){2-5}
-%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
- &bold&KozGoPro-Bold&KozGoProVI-Bold&KozGoPr6N-Bold\\
- &heavy&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\
-\bottomrule
+\begin{table}[!tb]
+%<en>\caption{Unicode blocks in predefined character range~3.}\medskip
+%<ja>\caption{文字範囲3に指定されているUnicodeブロック.}
+\label{tab:rng3}
+\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
+\centering\small
+\begin{tabular}{llll}
+"2000--"206F&General Punctuation&
+"2070--"209F&Superscripts and Subscripts\\
+"20A0--"20CF&Currency Symbols&
+"20D0--"20FF&Comb.\ Diacritical Marks for Symbols\\
+"2100--"214F&Letterlike Symbols&
+"2150--"218F&Number Forms\\
+"2190--"21FF&Arrows&
+"2200--"22FF&Mathematical Operators\\
+"2300--"23FF&Miscellaneous Technical&
+"2400--"243F&Control Pictures\\
+"2500--"257F&Box Drawing&
+"2580--"259F&Block Elements\\
+"25A0--"25FF&Geometric Shapes&
+"2600--"26FF&Miscellaneous Symbols\\
+"2700--"27BF&Dingbats&
+"2900--"297F&Supplemental Arrows-B\\
+"2980--"29FF&Misc.\ Mathematical Symbols-B&
+"2B00--"2BFF&Miscellaneous Symbols and Arrows
 \end{tabular}
-\end{center}
-
- \item[hiragino-pro]  Hiragino Pro (Adobe-Japan1-5) fonts.
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts.
-
+\end{table}
 %<*en>
-Hiragino fonts are bundled with Mac OS~X 10.5 or later.
-Some editions of a Japanese word-processor ``一太郎2012'' includes Hiragino ProN fonts.
-Note that the heavy weight of \textit{gothic} family only supports
-Adobe-Japan1-3 character collection (Std/StdN).
+\item[Range~4${}^{\text{A}}$] Characters usually not in Japanese fonts. This range consists
+          of almost all Unicode blocks which are not in other
+          predefined ranges. Hence, instead of showing the block list,
+          we put the definition of this range itself:
 %</en>
 %<*ja>
-ヒラギノフォントは,Mac OS~X以外にも,一太郎2012の上位エディションにもバンドルされている.
-極太ゴシックとして用いるヒラギノ角ゴW8は,Adobe-Japan1-3の範囲しかカバーしていない
-Std/StdNフォントであり,その他はAdobe-Japan1-5対応である.
+\item[範囲4${}^{\text{A}}$] 通常和文フォントには含まれていない文字.
+                             この範囲は他の範囲にないほとんど全てのUnicodeブロック
+                             で構成されている.したがって,ブロックのリストを示す
+                             代わりに,範囲の定義そのものを示す:
 %</ja>
-\begin{center}\small
-\begin{tabular}{clll}
-\toprule
-\bf family&\bf series&\tt hiragino-pro&\tt hiragino-pron\\
-\midrule
- &medium&Hiragino~Mincho~Pro~W3&Hiragino~Mincho~ProN~W3\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&Hiragino~Mincho~Pro~W6&Hiragino~Mincho~ProN~W6\\
-\midrule
- &&Hiragino~Kaku~Gothic~Pro~W3*&Hiragino~Kaku~Gothic~ProN~W3*\\
- &\smash{\raisebox{1.5ex}{medium}}
- &Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\
-\cmidrule(l){2-4}
-%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
- &bold&Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\
- &heavy&Hiragino~Kaku~Gothic~Std~W8&Hiragino~Kaku~Gothic~StdN~W8\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&Hiragino~Maru~Gothic~Pro~W4&Hiragino~Maru~Gothic~ProN~W4\\
-\bottomrule
+\begin{lstlisting}
+\ltjdefcharrange{4}{%
+   "500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
+  "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A82F, "A840-"ABFF, "FB00-"FE0F,
+  "FE20-"FE2F, "FE70-"FEFF, "10000-"1FFFF, "E000-"F8FF} % non-Japanese
+\end{lstlisting}
+%<en>\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
+%<ja>\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域.
+%<en>\item[Range~6${}^{\text{\kern.1emJ}}$] Characters used in Japanese. The block list is indicated in \autoref{tab:rng6}.
+%<ja>\item[範囲6${}^{\text{\kern.1emJ}}$] 日本語で用いられる文字.ブロックのリストは\autoref{tab:rng6}に示す.
+\begin{table}[!tb]
+%<en>\caption{Unicode blocks in predefined character range~6.}\medskip
+%<ja>\caption{文字範囲6に指定されているUnicodeブロック.}
+\label{tab:rng6}
+\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
+\centering\small
+\begin{tabular}{llll}
+"2460--"24FF&Enclosed Alphanumerics&
+"2E80--"2EFF&CJK Radicals Supplement\\
+"3000--"303F&CJK Symbols and Punctuation&
+"3040--"309F&Hiragana\\
+"30A0--"30FF&Katakana&
+"3190--"319F&Kanbun\\
+"31F0--"31FF&Katakana Phonetic Extensions&
+"3200--"32FF&Enclosed CJK Letters and Months\\
+"3300--"33FF&CJK Compatibility&
+"3400--"4DBF&CJK Unified Ideographs Extension A\\
+"4E00--"9FFF&CJK Unified Ideographs&
+"F900--"FAFF&CJK Compatibility Ideographs\\
+"FE10--"FE1F&Vertical Forms&
+"FE30--"FE4F&CJK Compatibility Forms\\
+"FE50--"FE6F&Small Form Variants&
+"{20}000--"{2F}FFF&(Supplementary Ideographic Plane)\\
+"{E0}100--"{E0}1EF&Variation Selectors Supplement
 \end{tabular}
-\end{center}
-
- \item[morisawa-pro]  Morisawa Pro (Adobe-Japan1-4) fonts.
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[morisawa-pr6n]  Morisawa Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts.
-\begin{center}\small
-\begin{tabular}{cl>{\tt}l>{\tt}l}
-\toprule
-\bf family&\bf series&morisawa-pro&morisawa-pr6n\\
-\midrule
- &medium&A-OTF-RyuminPro-Light.otf&A-OTF-RyuminPr6N-Light.otf\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&A-OTF-FutoMinA101Pro-Bold.otf&A-OTF-FutoMinA101Pr6N-Bold.otf\\
-\midrule
- &medium
- &A-OTF-GothicBBBPro-Medium.otf&A-OTF-GothicBBBPr6N-Medium.otf\\
-%<en>\textit{gothic}%
-%<ja>\gt ゴシック
- &bold&A-OTF-FutoGoB101Pro-Bold.otf&A-OTF-FutoGoB101Pr6N-Bold.otf\\
- &heavy&A-OTF-MidashiGoPro-MB31.otf&A-OTF-MidashiGoPr6N-MB31.otf\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&A-OTF-Jun101Pro-Light.otf&A-OTF-ShinMGoPr6N-Light.otf\\
-\bottomrule
+\end{table}
+%<*en>
+\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in  Adobe-Japan1-6.
+The block list is indicated in \autoref{tab:rng7}.
+%</en>
+%<*ja>
+\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に
+                            含まれていないもの.
+                            ブロックのリストは\autoref{tab:rng7}に示す.
+%</ja>
+\begin{table}[!tb]
+%<en>\caption{Unicode blocks in predefined character range~7.}\medskip
+%<ja>\caption{文字範囲7に指定されているUnicodeブロック.}
+\label{tab:rng7}
+\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
+\centering\small
+\begin{tabular}{llll}
+"1100--"11FF&Hangul Jamo&
+"2F00--"2FDF&Kangxi Radicals\\
+"2FF0--"2FFF&Ideographic Description Characters&
+"3100--"312F&Bopomofo\\
+"3130--"318F&Hangul Compatibility Jamo&
+"31A0--"31BF&Bopomofo Extended\\
+"31C0--"31EF&CJK Strokes&
+"A000--"A48F&Yi Syllables\\
+"A490--"A4CF&Yi Radicals&
+"A830--"A83F&Common Indic Number Forms\\
+"AC00--"D7AF&Hangul Syllables&
+"D7B0--"D7FF&Hangul Jamo Extended-B
 \end{tabular}
-\end{center}
+\end{table}
+\end{description}
 
-\newpage
- \item[yu-win]  Yu fonts bundled with Windows~8.1.
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[yu-win10]  Yu fonts bundled with Windows~10.
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[yu-osx]  Yu fonts bundled with OSX~Mavericks.
-\begin{center}\small
-\begin{tabular}{cllll}
-\toprule
-\bf family&\bf series&\texttt{yu-win}&\texttt{yu-win10}&\texttt{yu-osx}\\
-\midrule
- &medium&YuMincho-Regular&YuMincho-Regular&YuMincho~Medium\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&YuMincho-Demibold&YuMincho-Demibold&YuMincho~Demibold\\
-\midrule
- &&YuGothic-Regular*&YuGothic-Regular*&YuGothic~Medium*\\
- &\smash{\raisebox{1.5ex}{medium}}%
-        &YuGothic-Regular&YuGothic-Medium&YuGothic~Medium\\
-\cmidrule(l){2-5}
-%<en>\textit{gothic}%
-%<ja>\gt ゴシック
- &bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
- &heavy&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
-\bottomrule
-\end{tabular}
-\end{center}
+%<*en>
+\paragraph{Notes on \texttt{U+0080}--\texttt{U+00FF}}
+You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar},
+when you use traditional 8-bit fonts, such as the \Pkg{marvosym} package.
 
-\item[moga-mobo]  MogaMincho, MogaGothic, and MoboGothic.
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
-\item[moga-mobo-ex]  MogaExMincho, MogaExGothic, and MoboExGothic.
-%<en>\par These fonts can be downloaded from \url{http://yozvox.web.fc2.com/}.
-%<ja>これらのフォントは \url{http://yozvox.web.fc2.com/} からダウンロードできる.
-\begin{center}\small
-\begin{tabular}{clll}
-\toprule
-\bf family&\bf series&\bf default, \texttt{90jis}~option&\bf \texttt{jis2004} option\\
-\midrule
- &medium&Moga90Mincho&MogaMincho\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&Moga90Mincho Bold&MogaMincho Bold\\
-\midrule
- &medium&Moga90Gothic&MogaGothic\\
-%<en>\textit{gothic}%
-%<ja>\gt ゴシック
- &bold&Moga90Gothic Bold&MogaGothic Bold\\
- &heavy&Moga90Gothic Bold&MogaGothic Bold\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&Mobo90Gothic&MoboGothic\\
-\bottomrule
-\end{tabular}
-\end{center}
-%<en>When \texttt{moga-mobo-ex} is specified, the font ``MogaEx90Mincho'' etc.\ are used.
-%<ja>\texttt{moga-mobo-ex}オプション指定時にはMogaEx90MinchoなどのExが名前についたフォントが使われる.
+For example, \cs{Frowny} which is provided by the \Pkg{marvosym} package has
+the same codepoint as \S\ (\text{U+00A7}).
+Hence, as previous versions of \LuaTeX-ja, if these characters are treated as
+\text{JAchar}s, then \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font).
 
-\item[ume]  Ume Mincho and Ume Gothic.
-%<en>\par These fonts can be downloaded from\\\hfill \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage}.
-%<ja>これらのフォントは \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage} からダウンロードできる.
-\begin{center}\small
-\begin{tabular}{cll}
-\toprule
-\bf family&\bf series&\bf default\\
-\midrule
- &medium&Ume Mincho\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&Ume Mincho\\
-\midrule
- &&Ume Gothic*\\
- &\smash{\raisebox{1.5ex}{medium}}&Ume Gothic O5\\
-\cmidrule(l){2-3}
-%<en>\textit{gothic}%
-%<ja>\gt ゴシック
- &bold&Ume Gothic O5\\
- &heavy&Ume Gothic O5\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&Ume Gothic O5\\
-\bottomrule
-\end{tabular}
-\end{center}
+To avoid such situations, the default setting of \LuaTeX-ja is changed in version~20150906.0
+so that all characters \texttt{U+0080}--\texttt{U+00FF} are treated as \textbf{ALchar}.
 
-%<ja>\newpage
- \item[sourcehan]  Source Han Serif and Source Han Sans fonts (Language-specific OTF \textit{or} OTC)
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[sourcehan-jp]  Source Han Serif JP and Source Han Sans JP fonts (Region-specific Subset OTF)
-\begin{center}\small
-\def\AD#1#2{Source Han #1 #2&Source Han #1 JP #2}%
-\begin{tabular}{cllll}
-\toprule
-\bf family&\bf series&\texttt{sourcehan}&\texttt{sourcehan-jp}\\
-\midrule
- &medium&\AD{Serif}{Regular}\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&\AD{Serif}{Bold}\\
-\midrule
- &&\AD{Sans}{Regular*}\\
- &\smash{\raisebox{1.5ex}{medium}}
- &\AD{Sans}{Medium}\\
-\cmidrule(l){2-4}
-%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
- &bold&\AD{Sans}{Bold}\\
- &heavy&\AD{Sans}{Heavy}\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&\AD{Sans}{Heavy}\\
-\bottomrule
-\end{tabular}
-\end{center}
+If you want to output a character as \textbf{ALchar} and \textbf{JAchar} regardless the range
+setting, you can use \cs{ltjalchar} and \cs{ltjjachar} respectively, as the following example.
+\begin{LTXexample}[width=0.3\textwidth]
+\gtfamily\large % default, ALchar, JAchar
+¶, \ltjalchar`¶, \ltjjachar`¶\\   % default: ALchar
+α, \ltjalchar`α, \ltjjachar`α  % default: JAchar
+\end{LTXexample}
+%</en>
+%<*ja>
+\paragraph{\texttt{U+0080}--\texttt{U+00FF}についての注意}
+\LuaTeX-jaで,\Pkg{marvosym}パッケージ等,Unicodeフォントでなく
+伝統的な8ビットフォントを用いる場合には注意が必要である.
 
+例えば,\Pkg{marvosym}パッケージの提供する \cs{Frowny} も,符号位置は167,つまりUnicodeにおける
+\S\ (\text{U+00A7}) と同じ符号位置にある.
+即ち,以前のバージョンのように,「前節の文字範囲8内の文字は\textbf{JAchar}」という設定で
+あったとすると,上記の \cs{Frowny} は和文フォントで「\ltjjachar`§」を出力することになる.
 
- \item[noto-otc]  Noto Serif CJK and Noto Sans CJK fonts (OTC)
-%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[noto-otf]  Noto Serif CJK and Noto Sans CJK fonts (Language-specific OTF)
-\begin{center}\small
-\def\AD#1#2{Noto #1 CJK #2&Noto #1 CJK JP #2}%
-\begin{tabular}{cllll}
-\toprule
-\bf family&\bf series&\texttt{noto-otc}&\texttt{noto-otf}\\
-\midrule
- &medium&\AD{Serif}{Regular}\\
-%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
- &bold&\AD{Serif}{Bold}\\
-\midrule
- &&\AD{Sans}{Regular*}\\
- &\smash{\raisebox{1.5ex}{medium}}
- &\AD{Sans}{Medium}\\
-\cmidrule(l){2-4}
-%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
- &bold&\AD{Sans}{Bold}\\
- &heavy&\AD{Sans}{Black}\\
-\midrule
-%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
-&&\AD{Sans}{Black}\\
-\bottomrule
-\end{tabular}
-\end{center}
+このような事態を避けるために,バージョン20150906.0からは \texttt{U+0080}--\texttt{U+00FF} の範囲の
+文字は全て\textbf{ALchar}となるように初期設定を変更している.
+
+なお,文字範囲の設定に関わらず1つの文字を\textbf{ALchar}, \textbf{JAchar}で出力したい場合には,
+以下の例のようにそれぞれ \cs{ltjalchar},~\cs{ltjjachar} に該当文字の文字コードを渡せばよい.
+\begin{LTXexample}[width=0.3\textwidth]
+\gtfamily\large % default, ALchar, JAchar
+¶, \ltjalchar`¶, \ltjjachar`¶\\   % default: ALchar
+α, \ltjalchar`α, \ltjjachar`α  % default: JAchar
+\end{LTXexample}
+%</ja>
 
 
+%<en>\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
+%<ja>\subsection{\Param{kanjiskip}と\Param{xkanjiskip}}
+\label{subs-kskip}
 
-\end{cslist}
-%<en>\paragraph{Presets for single weight}
-%<ja>\paragraph{単ウェイト用プリセット一覧}
+%<en>\textbf{JAglue} is divided into the following three categories:
+%<ja>\textbf{JAglue}は以下の3つのカテゴリに分類される:
+\begin{itemize}
 %<*en>
-Next, we describe settings for using only single weight.
+\item Glues/kerns specified in JFM. If \cs{inhibitglue} is issued
+      around a \textbf{JAchar}, this glue will not be inserted at the
+      place.
 %</en>
 %<*ja>
-次に,単ウェイト用の設定を述べる.この4設定では
-明朝体太字・丸ゴシック体はゴシック体と同じフォントが用いられる
+\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が\textbf{JAchar}の周りで
+      発行されていれば,このグルーは挿入されない
 %</ja>
-\par\nobreak\medskip
-{\centering\small
-\begin{tabular}{lllll}
-\toprule
-&\tt noembed&\tt ipa&\tt ipaex&\tt ms\\
-\midrule
 %<*en>
-\it mincho&Ryumin-Light (non-embedded)
-&IPA Mincho&IPAex Mincho&MS Mincho\\
-\it gothic&GothicBBB-Medium (non-embedded)
-&IPA Gothic&IPAex Gothic&MS Gothic\\
+\item The default glue which inserted between two \textbf{JAchar}s (\Param{%
+      kanjiskip}).
 %</en>
 %<*ja>
-\gtfamily 明朝体&Ryumin-Light(非埋込)
-&IPA明朝&IPAex明朝&MS明朝\\
-\gtfamily ゴシック体&GothicBBB-Medium(非埋込)
-&IPAゴシック&IPAexゴシック&MSゴシック\\
+\item デフォルトで2つの\textbf{JAchar}の間に挿入されるグルー(\Param{kanjiskip}).
 %</ja>
-\bottomrule
-\end{tabular}\par\medskip}
-
-%<en>\paragraph{Using HG fonts}
-%<ja>\paragraph{HGフォントの利用}
 %<*en>
-We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights.
+\item The default glue which inserted between a \textbf{JAchar} and an
+      \textbf{ALchar} (\Param{xkanjiskip}).
 %</en>
 %<*ja>
-すぐ前に書いた単ウェイト用設定を,Microsoft Office等に付属するHGフォントを使って
-多ウェイト化した設定もある.
-%</ja>
-\par\nobreak\medskip
-{\centering\small
-\begin{tabular}{llll}
-\toprule
-&\tt ipa-hg&\tt ipaex-hg&\tt ms-hg\\
-\midrule
-%<*en>
-\bf mincho medium
-&IPA Mincho&IPAex Mincho&MS Mincho\\\midrule
-\bf mincho bold&
-\multicolumn{3}{c}{HG Mincho E}\\\midrule
-\bf Gothic medium\\
-~~without \texttt{deluxe}
-&IPA Gothic&IPAex Gothic&MS Gothic\\
-~~with {\tt jis2004}
-&IPA Gothic&IPAex Gothic&MS Gothic\\
-\cmidrule(lr){1-4}
-~~otherwise&
-\multicolumn{3}{c}{HG Gothic M}\\\midrule
-\bf gothic bold&
-\multicolumn{3}{c}{HG Gothic E}\\\midrule
-\bf gothic heavy&
-\multicolumn{3}{c}{HG Soei Kaku Gothic UB}\\\midrule
-\bf rounded gothic&
-\multicolumn{3}{c}{HG Maru Gothic PRO}\\
-%</en>
-%<*ja>
-\gtfamily 明朝体中字
-&IPA明朝&IPAex明朝&MS明朝\\\midrule
-\gtfamily 明朝体太字&
-\multicolumn{3}{c}{HG明朝E}\\\midrule
-\gtfamily ゴシック体中字\\
- 単ウェイト時
-&IPAゴシック&IPAexゴシック&MSゴシック\\
- {\tt jis2004}指定時
-&IPAゴシック&IPAexゴシック&MSゴシック\\
-\cmidrule(lr){1-4}
- それ以外の時&
-\multicolumn{3}{c}{HGゴシックM}\\\midrule
-\gtfamily ゴシック体太字&
-\multicolumn{3}{c}{HGゴシックE}\\\midrule
-\gtfamily ゴシック体極太&
-\multicolumn{3}{c}{HG創英角ゴシックUB}\\\midrule
-\gtfamily 丸ゴシック体&
-\multicolumn{3}{c}{HG丸ゴシック体PRO}\\
-%</ja>
-\bottomrule
-\end{tabular}\par\medskip}
-
-%<*en>
-Note that HG~Mincho~E, HG~Gothic~E, HG Soei Kaku Gothic UB, and HG Maru Gothic PRO
-are internally specified by:
-\begin{description}
-\item[default] by font name (\texttt{HGMinchoE}, etc.).
-\item[{\tt 90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}).
-\item[{\tt jis2004}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}).
-\end{description}
-%</en>
-%<*ja>
-なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で
-\begin{description}
-\item[標準] フォント名(\texttt{HGMinchoE} など)
-\item[{\tt 90jis}指定時] ファイル名 (%
-\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf})
-\item[{\tt jis2004}指定時] ファイル名 (%
-\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf})
-\end{description}
-として指定を行っているので注意すること.
+\item デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルー(\Param{xkanjiskip}).
 %</ja>
-
-
+\end{itemize}
 %<*en>
-\subsection{\cs{CID}, \cs{UTF}, and macros in \Pkg{japanese-otf} package}
-Under \pLaTeX, \Pkg{japanese-otf} package (developed by Shuzaburo Saito) is
-used for typesetting characters which is in Adobe-Japan1-6 CID but not
-in JIS~X~0208. Since this package is widely used, \LuaTeX-ja
-supports some of functions in the \Pkg{japanese-otf} package,
-as an external package \Pkg{luatexja-otf}.
+The value (a skip) of \Param{kanjiskip} or
+\Param{xkanjiskip} can be changed as the following.
+Note that only their values \emph{at the end of a paragraph or a hbox are
+adopted in the whole paragraph or the whole hbox.
+}
 %</en>
 %<*ja>
-\subsection{\cs{CID}, \cs{UTF}と\Pkg{otf}パッケージのマクロ}
-\pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために,
-齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは
-広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の
-一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した.
-%</ja>
-
-\begin{LTXexample}
-\jfontspec{KozMinPr6N-Regular.otf}
-森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。
-
-\CID{7652}飾区の\CID{13706}野家,
-\CID{1481}城市,葛西駅,
-高崎と\CID{8705}\UTF{FA11}
-
-\aj半角{はんかくカタカナ}
-\end{LTXexample}
-
-%<*ja>
-\Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した:
-\begin{cslist}
-\item[deluxe] 明朝体・ゴシック体各3ウェイトと,丸ゴシック体を扱えるようになる.
-\item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も
-\ \cs{rubyfamily}\ によって扱えるようになる.
-\item[bold] ゴシック体を標準で太いウェイトのものに設定する.
-\end{cslist}
-しかしこれらのオプションは\Pkg{luatexja-otf}パッケージには存在しない.
-\Pkg{otf}パッケージが文書中で使用する和文用TFMを自前の物に置き換えていたのに対し,
-\Pkg{luatexja-otf}パッケージでは,そのようなことは行わないからである.
-
-これら3オプションについては,
-\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか,
-あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や
-\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
+\Param{kanjiskip}や\Param{xkanjiskip}の値
+は以下のようにして変更可能である.
 %</ja>
-
-%<en>\subsection{Changing default Japanese fonts}
-%<ja>\subsection{標準和文フォントの変更}
-\label{ssec-cfg}
-%<*en>
-If \texttt{luatexja.cfg} can be seen from \LuaTeX, \LuaTeX-ja automatically reads it.
-The main use of \texttt{luatexja.cfg} is for changing default Japanese fonts,
-when IPAex fonts cannot be installed in \TeX~system.
-One should not overuse this \texttt{luatexja.cfg}; fonts which will be used in
-a document should be specified in its source.
-
-For example,
 \begin{lstlisting}
-\def\ltj@stdmcfont{IPAMincho}
-\def\ltj@stdgtfont{IPAGothic}
+\ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt},
+                 xkanjiskip={0.25\zw plus 1pt minus 1pt}}
 \end{lstlisting}
-makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of
-IPAex~Mincho and IPAex~Gothic.
+%<*en>
+Here \cs{zw} is a internal dimension
+which stores fullwidth of the current Japanese font.
+This \cs{zw} can be used as the unit \texttt{zw} in \pTeX.
 
-For another example, the following two lines makes that
-non-embedded fonts Ryumin-Light~and~GothicBBB-Medium as default Japanese fonts
-(as the earlier version of \LuaTeX-ja):
-\begin{lstlisting}
-\def\ltj@stdmcfont{psft:Ryumin-Light}
-\def\ltj@stdgtfont{psft:GothicBBB-Medium}
-\end{lstlisting}
+The value of these parameter can be get by \cs{ltjgetparameter}.
+Note that the result by \cs{ltjgetparameter} is \emph{not} the internal quantities,
+but \emph{a string} (hence \cs{the} cannot be prefixed).
 %</en>
 %<*ja>
-\LuaTeX から見える位置に \texttt{luatexja.cfg} があれば,\LuaTeX-jaはそれを読み込む.
-このファイルを用いるとplain~\TeX, \LaTeXe における標準和文フォントを
-IPAex明朝・IPAexゴシックから変更することができる.
-しかし,基本的には\emph{文章中で用いるフォントは(例えば \Pkg{luatexja-preset} などで)
-文書ソース内で指定するべき}であり,この \texttt{luatexja.cfg} は,
-「IPAexフォントがインストールできない」など,IPAexフォントが使用できない場合にのみ
-応急処置的に用いるべきである.
-
-例えば
-\begin{lstlisting}
-\def\ltj@stdmcfont{IPAMincho}
-\def\ltj@stdgtfont{IPAGothic}
-\end{lstlisting}
-と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変
-更される.
-
+ここで,\cs{zw} は現在の和文フォントの全角幅を表す長さであり,
+\pTeX における長さ単位 \texttt{zw} と同じように使用できる.
 
-なお,20140906.0以前のバージョンのように,
-Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用いる場合は
-\begin{lstlisting}
-\def\ltj@stdmcfont{psft:Ryumin-Light}
-\def\ltj@stdgtfont{psft:GothicBBB-Medium}
-\end{lstlisting}
-と記述すればよい.
+これらのパラメータの値は以下のように取得できる.
+戻り値は内部値ではなく\emph{文字列}である(\cs{the} は前置できない)ことに注意してほしい:
 %</ja>
-
-
-%<en>\section{Changing Internal Parameters}
-%<ja>\section{パラメータの変更}
+\begin{LTXexample}
+kanjiskip: \ltjgetparameter{kanjiskip},\\
+xkanjiskip: \ltjgetparameter{xkanjiskip}
+\end{LTXexample}
 
 %<*en>
-There are many internal parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX,
-most of them are not stored as internal register of \TeX, but as an
-original storage system in \LuaTeX-ja. Hence, to assign or acquire those
-parameters, you have to use commands \cs{ltjsetparameter} and
-\cs{ltjgetparameter}.
+It may occur that JFM contains the data of ``ideal width of
+\Param{kanjiskip}''
+and/or ``ideal width of \Param{xkanjiskip}''.
+To use these data from JFM, set the value of \Param{kanjiskip} or
+\Param{xkanjiskip} to \cs{maxdimen}
+(these ``ideal width'' cannot be retrived by \cs{ltjgetparameter}).
 %</en>
 %<*ja>
-\LuaTeX-jaには多くのパラメータが存在する.そして\LuaTeX の仕様のために,
-その多くは\TeX のレジスタにではなく,\LuaTeX-ja独自の方法で保持されている.
-これらのパラメータを設定・取得するためには \cs{ltjsetparameter} と \cs{ltjgetparameter} を
-用いる.
+JFMは「望ましい\Param{kanjiskip}の値」や
+「望ましい\Param{xkanjiskip}の値」を持っていることがある.
+これらのデータを使うためには,\Param{kanjiskip}や%
+\Param{xkanjiskip}の値を \cs{maxdimen} の値に設定すればよいが,
+\cs{ltjgetparameter} によって取得することはできないので注意が必要である.
 %</ja>
 
-%<en>\subsection{Range of \textbf{JAchar}s}
-%<ja>\subsection{\textbf{JAchar}の範囲}
-\label{ssec-setrange}
+%<en>\subsection{Insertion setting of \Param{xkanjiskip}}
+%<ja>\subsection{\Param{xkanjiskip} の挿入設定}
 
 %<*en>
-\LuaTeX-ja divides the Unicode codespace \texttt{U+0080}--\texttt{U+10FFFF}
-into \emph{character ranges},
-numbered 1 to 217. The grouping can be (globally) customized by \cs{ltjdefcharrange}.
-The next line adds whole characters in Supplementary Ideographic Plane
-and the character ``漢'' to the character range~100.
+It is not desirable that \Param{xkanjiskip} is inserted into every
+boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example,
+\Param{xkanjiskip} should not be inserted after opening parenthesis
+(\textit{e.g.}, compare ``(あ'' and ``(\hskip\ltjgetparameter{xkanjiskip}あ'').
+\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted
+before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and
+\Param{alxspmode} parameters \textbf{ALchar}s respectively.
 %</en>
 %<*ja>
-\LuaTeX-jaは,Unicodeの \texttt{U+0080}--\texttt{U+10FFFF} の空間を
-1番から217番までの\emph{文字範囲}に分割している.
-区分けは \cs{ltjdefcharrange} を用いることで(グローバルに)変更することができ,
-例えば,次は追加漢字面(SIP)にある全ての文字と「漢」を「100番の文字範囲」に追加する.
+\Param{xkanjiskip}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に
+挿入されるのは望ましいことではない.例えば,\Param{xkanjiskip}は開き括弧の
+後には挿入されるべきではない(「(あ」と「(\hskip\ltjgetparameter{xkanjiskip}あ」を
+比べてみよ).
+\LuaTeX-jaでは\Param{xkanjiskip}をある文字の前/後に挿入するかどうかを,
+\textbf{JAchar}に対しては\Param{jaxspmode}を,\textbf{ALchar}に対しては
+\Param{alxspmode}をそれぞれ変えることで制御することができる.
 %</ja>
-\begin{lstlisting}
-\ltjdefcharrange{100}{"20000-"2FFFF,`漢}
-\end{lstlisting}
+\begin{LTXexample}
+\ltjsetparameter{jaxspmode={`あ,preonly}, alxspmode={`\!,postonly}}
+pあq い!う
+\end{LTXexample}
 
 %<*en>
-A character can belong to only one character range.
-For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja,
-and if you execute the above line, then SIP will belong to the range~100 and be
-removed from the range~4.
+The second argument \texttt{preonly} means that the insertion of
+\Param{xkanjiskip} is allowed before this character, but not after.
+the other possible values are \texttt{postonly}, \texttt{allow}, and \texttt{inhibit}.
 %</en>
 %<*ja>
-各文字はただ一つの文字範囲に所属することができる.
-例えば,SIP内の文字は全て\LuaTeX-jaのデフォルトでは4番の文字範囲に
-属しているが,上記の指定を行えばSIP内の文字は100番に属すようになり,4番からは除かれる.
+2つ目の引数の \texttt{preonly}は「\Param{xkanjiskip}の挿入はこの文字の
+前でのみ許され,後では許さない」ことを意味する.他に指定可能な値は
+\texttt{postonly}, \texttt{allow}, \texttt{inhibit}である.
 %</ja>
 
 %<*en>
-The distinction between \textbf{ALchar} and \textbf{JAchar} is performed by character ranges.
-This can be edited by setting the \textsf{jacharrange} parameter.
-For example, the code below is just the default setting of \LuaTeX-ja, and
-it sets
-\begin{itemize}
- \item a character which belongs character ranges 1,~4, 5, and~8 is \textbf{ALchar},
- \item a character which belongs character ranges 2,~3, 6, and~7 is \textbf{JAchar}.
-\end{itemize}
+\Param{jaxspmode} and \Param{alxspmode} use a same table to store the parameters
+on the current version. Therefore, line~1 in the code above can be rewritten
+as follows:
 %</en>
 %<*ja>
-\textbf{ALchar}と\textbf{JAchar}の区別は文字範囲ごとに行われる.
-これは\textsf{jacharrange}パラメータによって編集できる.
-例えば,以下は\LuaTeX-jaの初期設定であり,次の内容を設定している:
-\begin{itemize}
- \item 1番,4番,5番,8番の文字範囲に属する文字は\textbf{ALchar}.
- \item 2番,3番,6番,7番の文字範囲に属する文字は\textbf{JAchar}.
-\end{itemize}
+なお,現行の
+仕様では,\Param{jaxspmode}, \Param{alxspmode}はテーブルを共有しており,
+上のコードの1行目を次のように変えても同じことになる:
 %</ja>
 \begin{lstlisting}
-\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}}
+\ltjsetparameter{alxspmode={`あ,preonly}, jaxspmode={`\!,postonly}}
 \end{lstlisting}
 %<*en>
-The argument to \textsf{jacharrange} parameter is a list of non-zero integer.
-Negative integer $-n$ in the list means that ``each character in the range~$n$ is an
-\textbf{ALchar}'',
-and positive integer $+n$ means that ``\dots\ is a \textbf{JAchar}''.
+One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}).
 %</en>
 %<*ja>
-\textsf{jacharrange}パラメータの引数は非零の整数のリストである.
-リスト中の負の整数$-n$は「文字範囲$n$に属する文字は\textbf{ALchar}として
-扱う」ことを意味し,正の整数$+n$は「\textbf{JAchar}として扱う」ことを意味する.
+また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param}節を参照).
 %</ja>
 
 %<*en>
-Note that characters \texttt{U+0000}--\texttt{U+007F} are always treated as an
-\textbf{ALchar} (this cannot be customized).
+If you want to enable/disable all insertions of \Param{kanjiskip} and
+\Param{xkanjiskip}, set \Param{autospacing} and \Param{autoxspacing}
+parameters to \texttt{true}/\texttt{false}, respectively.
 %</en>
 %<*ja>
-なお,\texttt{U+0000}--\texttt{U+007F} は常に\textbf{ALchar}として扱われる(利用者が変更す
-ることは出来ない).
+もし全ての\Param{kanjiskip}と\Param{xkanjiskip}の挿入を有効化/無効化
+したければ,それぞれ\Param{autospacing}と\Param{autoxspacing}を
+\texttt{true}/\texttt{false}に設定すればよい.
 %</ja>
 
+%<en>\subsection{Shifting the baseline}
+%<ja>\subsection{ベースラインの移動}
 %<*en>
-\paragraph{Default character ranges}
-\LuaTeX-ja predefines eight character ranges for convenience. They are
-determined from the following data:
+To make a match between a Japanese font and an alphabetic font, sometimes
+shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved
+by setting \cs{ybaselineshift} (or \cs{tbaselineshift}) to a non-zero length (the
+baseline of \textbf{ALchar} is shifted below). However, for documents
+whose main language is not Japanese, it is good to shift the baseline of
+Japanese fonts, but not that of alphabetic fonts.
+Because of this, \LuaTeX-ja can independently set the shifting amount
+of the baseline of alphabetic fonts and that of Japanese fonts.
+\begin{center}
+ \small
+\begin{tabular}{>{\bfseries}lcc}
+\toprule
+&\bfseries Horizontal writing (\emph{yoko} direction) etc.
+&\bfseries Vertical writing(\emph{tate} direction)\\
+\midrule
+Alphabetic fonts&\Param{yalbaselineshift}
+     parameter&\Param{talbaselineshift} parameter\\
+Japanese fonts&\Param{yjabaselineshift}
+     parameter&\Param{tjabaselineshift} parameter\\
+\bottomrule
+\end{tabular}
+\end{center}
 %</en>
 %<*ja>
-\paragraph{文字範囲の初期値}
-\LuaTeX-jaでは8つの文字範囲を予め定義しており,
-これらは以下のデータに基づいて決定している.
+和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が
+必要になる.\pTeX ではこれは \cs{ybaselineshift}(または\cs{tbaselineshift})を設定することで
+なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない
+文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい.
+このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量
+と和文フォントのベースラインのシフト量を独立に設定できるようになっている.
+\begin{center}
+ \small
+\begin{tabular}{>{\bfseries}lcc}
+\toprule
+&\bfseries 横組など&\bfseries 縦組\\
+\midrule
+欧文フォントのシフト量&\Param{yalbaselineshift}
+     parameter&\Param{talbaselineshift} parameter\\
+和文フォントのシフト量&\Param{yjabaselineshift}
+     parameter&\Param{tjabaselineshift} parameter\\
+\bottomrule
+\end{tabular}
+\end{center}
 %</ja>
-\begin{itemize}
-%<en>\item Blocks in Unicode~6.0.
-%<ja>\item Unicode~6.0のブロック.
-%<en>\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode.
-%<ja>\item Adobe-Japan1-6のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}.
-%<en>\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato.
-%<ja>\item 八登崇之氏による\upTeX 用の\Pkg{PXbase}バンドル.
-\end{itemize}
 
 %<*en>
-Now we describe these eight ranges. The superscript ``J'' or ``A'' after the
-number shows whether each character in the range is treated as
-\textbf{JAchar}s or not by default. These settings are similar to the
-\texttt{prefercjk} settings defined in \texttt{PXbase} bundle.
-Any characters equal to or above \texttt{U+0080} which does not belong to
-these eight ranges belongs to the character range~217.
+Here the horizontal line in the below example is the baseline of a line.
 %</en>
 %<*ja>
-以下ではこれら8つの文字範囲について記述する.添字のアルファベット「J」「A」
-は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの初期設定は
-\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものであるが,
-8ビットフォント使用時のトラブルを防ぐために \texttt{U+0080}--\texttt{U+00FF} の文字は全部
-\textbf{ALchar}としている.
-なお,\texttt{U+0080} 以降でこれら8つの文字範囲に属さない文字は,217番の文字範囲に属することになっている.
+下の例において引かれている水平線がベースラインである.
 %</ja>
-\begin{description}
-%<*en>
+\begin{LTXexample}
+\vrule width 150pt height 0.2pt depth 0.2pt \hskip-120pt
+\ltjsetparameter{yjabaselineshift=0pt, yalbaselineshift=0pt}abcあいう
+\ltjsetparameter{yjabaselineshift=5pt, yalbaselineshift=2pt}abcあいう
+\end{LTXexample}
 
-\item[Range~8${}^{\text{A}}$] The intersection of the upper half of ISO~8859-1
-        (Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range
-        consists of the following characters:
+%<*en>
+There is an interesting side-effect: characters in different size can be
+vertically aligned center in a line, by setting two parameters appropriately.
+The following is an example (beware the value is not well tuned):
 %</en>
 %<*ja>
-\item[範囲8${}^{\text{A}}$] ISO~8859-1の上位領域(ラテン1補助)と
-                             JIS~X~0208の共通部分.この文字範囲は
-                             以下の文字で構成される
+この機能には面白い使い方がある:2つのパラメータを適切に設定することで,サイズの
+異なる文字を中心線に揃えることができる.
+以下は一つの例である(値はあまり調整されていないことに注意)
 %</ja>
-\begin{multicols}{2}
+\begin{LTXexample}[width=0.4\textwidth]
+\vrule width 150pt height4.417pt depth-4.217pt%
+\kern-150pt
+\large xyz漢字
+{\scriptsize
+  \ltjsetparameter{yjabaselineshift=-1.757pt,
+    yalbaselineshift=-1.757pt}
+  漢字xyzあいう
+}あいうabc
+\end{LTXexample}
+
+%<*en>
+Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift}
+parameters does not increase the depth of one-letter \emph{syllable} $p$ of \textbf{Alchar}, if
+its left-protrusion~(\cs{lpcode}) and right-protrusion~(\cs{rpcode}) are both non-zero.
+This is because
 \begin{itemize}
-\def\ch#1#2{\item \char"#1\ (\texttt{U+00#1}, #2)}%"
-\ch{A7}{Section Sign}
-\ch{A8}{Diaeresis}
-\ch{B0}{Degree sign}
-\ch{B1}{Plus-minus sign}
-\ch{B4}{Spacing acute}
-\ch{B6}{Paragraph sign}
-\ch{D7}{Multiplication sign}
-\ch{F7}{Division Sign}
+\item These two parameters are implemented by setting \texttt{yoffset} field of a
+glyph node, and this does not increase the depth of the glyph.
+\item To cope with the above situation, \LuaTeX-ja automatically supplies
+a rule in every syllable.
+\item However, we cannot use this ``supplying a rule'' method if a syllable comprises just
+      one letter whose \cs{lpcode}~and~\cs{rpcode} are both non-zero.
 \end{itemize}
-\end{multicols}
 
-%<*en>
-\item[Range~1${}^{\text{A}}$] Latin characters that some of them are included in Adobe-Japan1-6.
-This range consists of the following Unicode ranges, \emph{except characters in the range~8 above}:
+This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift},
+becuse a \emph{JAchar} is encapsulated by a horizontal box if needed.
 %</en>
 %<*ja>
-\item[範囲1${}^{\text{A}}$] ラテン文字のうち,Adobe-Japan1-6との共通部分があるもの.
-                             この範囲は以下のUnicodeのブロックのうち
-                             \emph{範囲8を除いた}部分で構成されている:
-%</ja>
-\begin{multicols}{2}
+なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意.
 \begin{itemize}
-\item \texttt{U+0080}--\texttt{U+00FF}: Latin-1 Supplement
-\item \texttt{U+0100}--\texttt{U+017F}: Latin Extended-A
-\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B
-\item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions
-\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters
-%<en>\par\
-\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks
-\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional
-%<ja>\par\
+ \item \Param{yalbaselineshift},~\Param{talbaselineshift}パラメータが正になっている.
+ \item 「音節」を構成する唯一の文字$p$の
+左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である.
 \end{itemize}
-\end{multicols}
-%<*en>
-\item[Range~2${}^{\text{\kern.1emJ}}$] Greek and Cyrillic letters. JIS~X~0208 (hence most of Japanese
-          fonts) has some of these characters.
-%</en>
-%<*ja>
-\item[範囲2${}^{\text{\kern.1emJ}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの
-                             和文フォント)には,これらの文字の一部が含まれている.
+\emph{JAchar}は必要に応じて1文字ずつボックスにカプセル化されるため,
+\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない.
 %</ja>
-\begin{multicols}{2}
+
+%<*ja>
+\paragraph{数式における挙動:\pTeX との違い}
+\textbf{ALchar}のベースラインを補正する\Param{yalbaselineshift}, \Param{talbaselineshift}パラメータは
+ほぼ\pTeX における \cs{ybaselineshift}, \cs{tbaselineshift} に対応しているものであるが,
+数式中の挙動は異なっているので注意が必要である.
+例えば,\autoref{tab:math_bsa}のように,数式中に明示的に現れた \cs{hbox},~\cs{vbox} は,横組において
 \begin{itemize}
-\item \texttt{U+0370}--\texttt{U+03FF}: Greek and Coptic
-\item \texttt{U+0400}--\texttt{U+04FF}: Cyrillic
-\item \texttt{U+1F00}--\texttt{U+1FFF}: Greek Extended
-\\\
+ \item 2015年以前の\pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので,
+ \autoref{tab:math_bsa}中の``い''のように,ボックス中の和文文字は
+ \ \cs{ybaselineshift} だけシフトされ,一方,``for all''のように,
+ ボックス内の欧文文字は2重にシフトされることになる.
+ \item 一方,\LuaTeX-jaではそのようなことはおこらず,
+ 数式中に明示的に現れた \cs{hbox},~\cs{vbox} はシフトしない.そのため,
+ \autoref{tab:math_bsa}中の``い''も``for all''も,それぞれ本文中に
+ 書かれたときと同じ上下位置に組まれる.
+
+ なお,\TeX~Live~2016以降の\pTeX では改修がなされ,\LuaTeX-jaと
+ 近い挙動になるようにしているが,数式中に直に書かれた``あ''のベースラインについては
+ まだ違いが見られる.
 \end{itemize}
-\end{multicols}
+
+なお,バージョン20170401.0以降の\LuaTeX-jaでは,\cs{vcenter} によるボックスには
+全体が\Param{yalbaselineshift}, \Param{talbaselineshift} パラメータが反映されるようにしている.
+その方が結果が自然であることによる変更なのだが,結果的に\cs{vcenter} については\pTeX と同じ挙動となった.
+
+\begin{table}
+\small\centering
+\caption{数式関係のベースライン補正($\Param{yalbaselineshift}=10\,\textrm{pt}$)}
+\label{tab:math_bsa}
+\newdimen\origbaselineskip
+\origbaselineskip=\baselineskip
+\begin{tabular}{lp{30\zw}}
+\toprule
+\emph{入力}&\vspace*{\dimexpr-\origbaselineskip-\smallskipamount}
+\begin{lstlisting}
+数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
+$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
+\end{lstlisting}\\
+\noalign{\vskip-\origbaselineskip}
+\midrule
+\emph{\pTeX~(--2015)}&
+{\ltjsetparameter{yalbaselineshift=10pt}%
+数式abc: $\lower10pt\hbox{あ}a\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
+$\Phi\vdash F(x)\ \lower10pt\hbox{for all}\ x\in A$
+\par}\\\noalign{\vskip-\origbaselineskip}\midrule
+\emph{\pTeX~(2016--)}&
+{\ltjsetparameter{yalbaselineshift=10pt}%
+数式abc: $\lower10pt\hbox{あ}a\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
+$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
+\par}\\\noalign{\vskip-\origbaselineskip}\midrule
+\emph{\LuaTeX-ja}&
+{\ltjsetparameter{yalbaselineshift=10pt}%
+数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
+$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
+\par}\\
+\noalign{\vskip-\origbaselineskip}
+\bottomrule
+\end{tabular}
+\end{table}
+%</ja>
+
 %<*en>
-\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is
-          indicated in \autoref{tab:rng3}.
+\subsection{\emph{kinsoku} parameters and OpenType features}
+Among parameters which related to Japanese word-wrapping process (\emph{kinsoku shori}),
+\begin{quote}
+ \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
+ \Param{postbreakpenalty}~and~\Param{kcatcode}
+\end{quote}
+are stored by each character codes.
+
+OpenType font features are ignored in these parameters.
+For example, a fullwidth katakana ``ア'' on line~10 in the below input is replaced to
+its halfwidth variant ``ア'', by \verb+hwid+ feature.
+However, the penalty inserted after it is 10 which is the \Param{postbreakpenalty} of
+``ア'', not 20.
 %</en>
 %<*ja>
-\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは\autoref{tab:rng3}%
-                             に示してある.
-%</ja>
-\begin{table}[!tb]
-%<en>\caption{Unicode blocks in predefined character range~3.}\medskip
-%<ja>\caption{文字範囲3に指定されているUnicodeブロック.}
-\label{tab:rng3}
-\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
-\centering\small
-\begin{tabular}{llll}
-"2000--"206F&General Punctuation&
-"2070--"209F&Superscripts and Subscripts\\
-"20A0--"20CF&Currency Symbols&
-"20D0--"20FF&Comb.\ Diacritical Marks for Symbols\\
-"2100--"214F&Letterlike Symbols&
-"2150--"218F&Number Forms\\
-"2190--"21FF&Arrows&
-"2200--"22FF&Mathematical Operators\\
-"2300--"23FF&Miscellaneous Technical&
-"2400--"243F&Control Pictures\\
-"2500--"257F&Box Drawing&
-"2580--"259F&Block Elements\\
-"25A0--"25FF&Geometric Shapes&
-"2600--"26FF&Miscellaneous Symbols\\
-"2700--"27BF&Dingbats&
-"2900--"297F&Supplemental Arrows-B\\
-"2980--"29FF&Misc.\ Mathematical Symbols-B&
-"2B00--"2BFF&Miscellaneous Symbols and Arrows
-\end{tabular}
-\end{table}
-%<*en>
-\item[Range~4${}^{\text{A}}$] Characters usually not in Japanese fonts. This range consists
-          of almost all Unicode blocks which are not in other
-          predefined ranges. Hence, instead of showing the block list,
-          we put the definition of this range itself:
-%</en>
-%<*ja>
-\item[範囲4${}^{\text{A}}$] 通常和文フォントには含まれていない文字.
-                             この範囲は他の範囲にないほとんど全てのUnicodeブロック
-                             で構成されている.したがって,ブロックのリストを示す
-                             代わりに,範囲の定義そのものを示す:
-%</ja>
-\begin{lstlisting}
-\ltjdefcharrange{4}{%
-   "500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
-  "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A82F, "A840-"ABFF, "FB00-"FE0F,
-  "FE20-"FE2F, "FE70-"FEFF, "10000-"1FFFF, "E000-"F8FF} % non-Japanese
-\end{lstlisting}
-%<en>\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
-%<ja>\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域.
-%<en>\item[Range~6${}^{\text{\kern.1emJ}}$] Characters used in Japanese. The block list is indicated in \autoref{tab:rng6}.
-%<ja>\item[範囲6${}^{\text{\kern.1emJ}}$] 日本語で用いられる文字.ブロックのリストは\autoref{tab:rng6}に示す.
-\begin{table}[!tb]
-%<en>\caption{Unicode blocks in predefined character range~6.}\medskip
-%<ja>\caption{文字範囲6に指定されているUnicodeブロック.}
-\label{tab:rng6}
-\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
-\centering\small
-\begin{tabular}{llll}
-"2460--"24FF&Enclosed Alphanumerics&
-"2E80--"2EFF&CJK Radicals Supplement\\
-"3000--"303F&CJK Symbols and Punctuation&
-"3040--"309F&Hiragana\\
-"30A0--"30FF&Katakana&
-"3190--"319F&Kanbun\\
-"31F0--"31FF&Katakana Phonetic Extensions&
-"3200--"32FF&Enclosed CJK Letters and Months\\
-"3300--"33FF&CJK Compatibility&
-"3400--"4DBF&CJK Unified Ideographs Extension A\\
-"4E00--"9FFF&CJK Unified Ideographs&
-"F900--"FAFF&CJK Compatibility Ideographs\\
-"FE10--"FE1F&Vertical Forms&
-"FE30--"FE4F&CJK Compatibility Forms\\
-"FE50--"FE6F&Small Form Variants&
-"{20}000--"{2F}FFF&(Supplementary Ideographic Plane)\\
-"{E0}100--"{E0}1EF&Variation Selectors Supplement
-\end{tabular}
-\end{table}
-%<*en>
-\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in  Adobe-Japan1-6.
-The block list is indicated in \autoref{tab:rng7}.
-%</en>
-%<*ja>
-\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に
-                            含まれていないもの.
-                            ブロックのリストは\autoref{tab:rng7}に示す.
-%</ja>
-\begin{table}[!tb]
-%<en>\caption{Unicode blocks in predefined character range~7.}\medskip
-%<ja>\caption{文字範囲7に指定されているUnicodeブロック.}
-\label{tab:rng7}
-\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
-\centering\small
-\begin{tabular}{llll}
-"1100--"11FF&Hangul Jamo&
-"2F00--"2FDF&Kangxi Radicals\\
-"2FF0--"2FFF&Ideographic Description Characters&
-"3100--"312F&Bopomofo\\
-"3130--"318F&Hangul Compatibility Jamo&
-"31A0--"31BF&Bopomofo Extended\\
-"31C0--"31EF&CJK Strokes&
-"A000--"A48F&Yi Syllables\\
-"A490--"A4CF&Yi Radicals&
-"A830--"A83F&Common Indic Number Forms\\
-"AC00--"D7AF&Hangul Syllables&
-"D7B0--"D7FF&Hangul Jamo Extended-B
-\end{tabular}
-\end{table}
-\end{description}
+\newpage
+\subsection{禁則処理関連パラメータとOpenTypeのfont feature}
+禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち
+\begin{quote}
+ \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
+ \Param{postbreakpenalty}, \Param{kcatcode}
+\end{quote}
+は,文字コードごとに設定する量である.
 
-%<*en>
-\paragraph{Notes on \texttt{U+0080}--\texttt{U+00FF}}
-You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar},
-when you use traditional 8-bit fonts, such as the \Pkg{marvosym} package.
+\Pkg{fontspec}パッケージを使う(\ref{ssec-fontspec}節)場合など,
+各種のOpenType featureを適用することもあると思うが,前段落に述べたパラメータ類は,
+\emph{OpenType featureの適用前の文字コードによって適用される.}
+例えば,以下の例において10行目の「ア」は,\verb+hwid+ featureの適用により半角カタカナの「ア」
+に置き換わる.しかし,その直後に挿入される \Param{postbreakpenalty}は,置換前の「ア」に対する値10である.
+%</ja>
 
-For example, \cs{Frowny} which is provided by the \Pkg{marvosym} package has
-the same codepoint as \S\ (\text{U+00A7}).
-Hence, as previous versions of \LuaTeX-ja, if these characters are treated as
-\text{JAchar}s, then \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font).
+\begin{LTXexample}[width=0.2\textwidth]
+\ltjsetparameter{postbreakpenalty={`ア, 10}}
+\ltjsetparameter{postbreakpenalty={`ア, 20}}
 
-To avoid such situations, the default setting of \LuaTeX-ja is changed in this release
-so that all characters \texttt{U+0080}--\texttt{U+00FF} are treated as \textbf{ALchar}.
+\newcommand\showpostpena[1]{%
+  \leavevmode\setbox0=\hbox{#1\hbox{}}%
+  \unhbox0\setbox0=\lastbox\the\lastpenalty}
 
-If you want to output a character as \textbf{ALchar} and \textbf{JAchar} regardless the range
-setting, you can use \cs{ltjalchar} and \cs{ltjjachar} respectively, as the following example.
-\begin{LTXexample}[width=0.3\textwidth]
-\gtfamily\large % default, ALchar, JAchar
-¶, \ltjalchar`¶, \ltjjachar`¶\\   % default: ALchar
-α, \ltjalchar`α, \ltjjachar`α  % default: JAchar
+\showpostpena{ア},
+\showpostpena{ア},
+{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ア}}
 \end{LTXexample}
-%</en>
-%<*ja>
-\paragraph{\texttt{U+0080}--\texttt{U+00FF}についての注意}
-\LuaTeX-jaで,\Pkg{marvosym}パッケージ等,Unicodeフォントでなく
-伝統的な8ビットフォントを用いる場合には注意が必要である.
-
-例えば,\Pkg{marvosym}パッケージの提供する \cs{Frowny} も,符号位置は167,つまりUnicodeにおける
-\S\ (\text{U+00A7}) と同じ符号位置にある.
-即ち,以前のバージョンのように,「前節の文字範囲8内の文字は\textbf{JAchar}」という設定で
-あったとすると,上記の \cs{Frowny} は和文フォントで「\ltjjachar`§」を出力することになる.
-
-このような事態を避けるために,本バージョンからは \texttt{U+0080}--\texttt{U+00FF} の範囲の
-文字は全て\textbf{ALchar}となるように初期設定を変更している.
 
-なお,文字範囲の設定に関わらず1つの文字を\textbf{ALchar}, \textbf{JAchar}で出力したい場合には,
-以下の例のようにそれぞれ \cs{ltjalchar},~\cs{ltjjachar} に該当文字の文字コードを渡せばよい.
-\begin{LTXexample}[width=0.3\textwidth]
-\gtfamily\large % default, ALchar, JAchar
-¶, \ltjalchar`¶, \ltjjachar`¶\\   % default: ALchar
-α, \ltjalchar`α, \ltjjachar`α  % default: JAchar
-\end{LTXexample}
+\clearpage
+%<en>\part{Reference}
+%<ja>\part{リファレンス}
+\label{part-ref}
+\suppressfloats[t]
+%<*ja>
+\section{\LuaTeX-jaにおける \cs{catcode}}
+\label{sec-catcode}
+\subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}}
+\pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか
+は \cs{kcatcode} の値によって決定されるのであった.
+詳細は\autoref{tab:kcat}を参照されたい.
 %</ja>
-
-
-%<en>\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
-%<ja>\subsection{\Param{kanjiskip}と\Param{xkanjiskip}}
-\label{subs-kskip}
-
-%<en>\textbf{JAglue} is divided into the following three categories:
-%<ja>\textbf{JAglue}は以下の3つのカテゴリに分類される:
-\begin{itemize}
 %<*en>
-\item Glues/kerns specified in JFM. If \cs{inhibitglue} is issued
-      around a \textbf{JAchar}, this glue will not be inserted at the
-      place.
+\section{\cs{catcode} in \LuaTeX-ja}
+\label{sec-catcode}
+\subsection{Preliminaries: \cs{kcatcode} in \pTeX\ and \upTeX}
+In \pTeX~and~\upTeX, the value of \cs{kcatcode} determines
+whether a Japanese character can be used in a control word.
+For the detail, see \autoref{tab:kcat}.
 %</en>
-%<*ja>
-\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が\textbf{JAchar}の周りで
-      発行されていれば,このグルーは挿入されない.
-%</ja>
+
+\begin{table}[t]
+\small
+\caption{\cs{kcatcode} in \upTeX}
+\label{tab:kcat}
+%<en>\medskip
+
+\noindent\hfill
+\begin{tabular}{ccccc}
+\toprule
+\bfseries \cs{kcatcode}&
 %<*en>
-\item The default glue which inserted between two \textbf{JAchar}s (\Param{%
-      kanjiskip}).
+\bfseries meaning&
+\bfseries control word&
+\bfseries widow penalty&
+\bfseries linebreak\\
 %</en>
 %<*ja>
-\item デフォルトで2つの\textbf{JAchar}の間に挿入されるグルー(\Param{kanjiskip}).
+\bfseries 意図&
+\bfseries 制御綴中に使用&
+\bfseries 文字ウィドウ処理&
+\bfseries 直後での改行\\
 %</ja>
-%<*en>
-\item The default glue which inserted between a \textbf{JAchar} and an
-      \textbf{ALchar} (\Param{xkanjiskip}).
-%</en>
+\midrule
+15&non-cjk&\multicolumn{3}{c}{(treated as usual \LaTeX)}\\
+16&kanji&Y&Y&ignored\\
+17&kana&Y&Y&ignored\\
+18&other&N&N&ignored\\
+19&hangul&Y&Y&space\\
+\bottomrule
+\end{tabular}\hfill\null
+
+\medskip
+
 %<*ja>
-\item デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルー(\Param{xkanjiskip}).
+文字ウィドウ処理:「漢字が一文字だけ次の行に行くのを防ぐ」
+\cs{jcharwidowpenalty} が,
+その文字の直前に挿入されうるか否か,を示す.
 %</ja>
-\end{itemize}
+\end{table}
+
 %<*en>
-The value (a skip) of \Param{kanjiskip} or
-\Param{xkanjiskip} can be changed as the following.
-Note that only their values \emph{at the end of a paragraph or a hbox are
-adopted in the whole paragraph or the whole hbox.
+\cs{kcatcode} can be set by a row of JIS~X~0208 in \pTeX,
+and generally by a Unicode block\footnote{%
+  \upTeX\ divides \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)
+  into three subblocks, and \cs{kcatcode} can be set by a subblock.
 }
+in \upTeX. So characters which can be used in a control word
+slightly differ between \pTeX~and~\upTeX.
 %</en>
 %<*ja>
-\Param{kanjiskip}や\Param{xkanjiskip}の値
-は以下のようにして変更可能である.
+\pTeX では \cs{kcatcode} はJIS~X~0208の区単位,
+\upTeX では概ねUnicodeブロック単位\footnote{%
+  \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)は
+  「全角英数字」「半角カナ」「その他」と3つに分割されており,
+  それぞれ別々に \cs{kcatcode} が指定できるようになっている.
+}で設定可能になっている.そのため,\pTeX と\upTeX の初期状態では
+制御綴内で使用可能な文字が微妙に異なっている.
 %</ja>
-\begin{lstlisting}
-\ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt},
-                 xkanjiskip={0.25\zw plus 1pt minus 1pt}}
-\end{lstlisting}
+
 %<*en>
-Here \cs{zw} is a internal dimension
-which stores fullwidth of the current Japanese font.
-This \cs{zw} can be used as the unit \texttt{zw} in \pTeX.
-
-The value of these parameter can be get by \cs{ltjgetparameter}.
-Note that the result by \cs{ltjgetparameter} is \emph{not} the internal quantities,
-but \emph{a string} (hence \cs{the} cannot be prefixed).
+\subsection{Case of \LuaTeX-ja}
+The role of \cs{kcatcode} in \pTeX~and~\upTeX\ can be
+divided into the following four kinds,
+and \LuaTeX-ja can control these four kinds separately:
+\begin{itemize}
+ \item
+\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}}
+is controlled by the character range, see Subsection~\ref{ssec-setrange}.
+ \item
+\emph{Whether the character can be used in a control word}
+is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual.
+ \item
+\emph{Whether \Param{jcharwidowpenalty} can be inserted before the character}
+is controlled by the lowermost bit of the \Param{kcatcode} parameter.
+ \item
+\emph{Linebreak after a \textbf{JAchar}} does not produce a space.
+\end{itemize}
 %</en>
 %<*ja>
-ここで,\cs{zw} は現在の和文フォントの全角幅を表す長さであり,
-\pTeX における長さ単位 \texttt{zw} と同じように使用できる.
-
-これらのパラメータの値は以下のように取得できる.
-戻り値は内部値ではなく\emph{文字列}である(\cs{the} は前置できない)ことに注意してほしい:
+\subsection{\LuaTeX-jaの場合}
+\LuaTeX-jaでは,従来の\pTeX・\upTeX における \cs{kcatcode} の役割を
+分割している:
+\begin{description}
+ \item[欧文/和文の区別 (\upTeX)]
+\cs{ltjdefcharrange} と\textsf{jacharrange}パラメータ(\ref{ssec-setrange}節)
+ \item[制御綴中に使用可か]
+\LuaTeX 自身の \cs{catcode} でよい
+ \item[\Param{jcharwidowpenalty}が挿入可か]
+\Param{kcatcode}パラメータの最下位ビット
+ \item[直後の改行]
+日本語しか想定していないので,\textbf{JAchar}直後の改行で半角スペースが挿入されることはない.
+\end{description}
 %</ja>
-\begin{LTXexample}
-kanjiskip: \ltjgetparameter{kanjiskip},\\
-xkanjiskip: \ltjgetparameter{xkanjiskip}
-\end{LTXexample}
 
 %<*en>
-It may occur that JFM contains the data of ``ideal width of
-\Param{kanjiskip}''
-and/or ``ideal width of \Param{xkanjiskip}''.
-To use these data from JFM, set the value of \Param{kanjiskip} or
-\Param{xkanjiskip} to \cs{maxdimen}
-(these ``ideal width'' cannot be retrived by \cs{ltjgetparameter}).
+Default setting of \cs{catcode} of Unicode characters are located in
+\begin{description}
+ \item[plain \LuaTeX] \texttt{luatex-unicode-letters.tex}, which is based on \texttt{unicode-letters.tex}
+(for \XeTeX).
+ \item[\LuaLaTeX] now included in \LaTeX\ kernel  as~\texttt{unicode-letters.def}.
+\end{description}
+However, the default setting of \cs{catcode} differs
+between \XeTeX\ and \LuaTeX, by the following reasons:
+\begin{itemize}
+ \item (plain format) \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}.
+ \item The latter half of \texttt{unicode-letters.tex}~and~\texttt{unicode-letters.def}
+sets\cs{catcode} of several characters to 11, via setting \cs{XeTeXcharclass}.
+However, this latter half does not exist (plain case), or not executed (\LaTeX~case) in \LuaTeX.
+\end{itemize}
+In other words,
+\begin{description}
+\item[plain \LuaTeX]
+Kanji nor kana characters cannot be used in
+a control word, in the default setting of plain \LuaTeX.
+\item[\LuaLaTeX]
+In recent (2015-10-01 or later) \LuaLaTeX, Kanji and kana characters in a control word is supported (these catcode are 11),
+but not fullwidth alphanumerics and several other characters.
+\end{description}
+
+This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja,
+since several control words containing Kanji or other fullwidth characters, such as
+\verb+\西暦+~or~\verb+\1年目西暦+ are used in \pTeX.
+Hence, \LuaTeX-ja have a counterpart of \texttt{unicode-letters.tex}
+for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.}
 %</en>
 %<*ja>
-JFMは「望ましい\Param{kanjiskip}の値」や
-「望ましい\Param{xkanjiskip}の値」を持っていることがある.
-これらのデータを使うためには,\Param{kanjiskip}や%
-\Param{xkanjiskip}の値を \cs{maxdimen} の値に設定すればよいが,
-\cs{ltjgetparameter} によって取得することはできないので注意が必要である.
+ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では,
+文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode}
+で指定することとなる.plain \XeTeX における \cs{catcode} の初期設定は\
+\texttt{unicode-letters.tex} 中に記述されており,plain \LuaTeX ではそれを
+元にした \texttt{luatex-unicode-letters.tex} を用いている.
+\LaTeX では \cs{catcode} の設定はカーネルに \texttt{unicode-letters.def} として統合され.
+このファイルを\XeLaTeX, \LuaLaTeX の両方が用いている.
+
+だが,\XeTeX における \cs{catcode} の初期設定と
+\LuaTeX におけるそれは一致していない:
+\begin{itemize}
+ \item \texttt{luatex-unicode-letters.tex} の元になった\
+\texttt{unicode-letters.tex} が古い
+ \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では
+\cs{XeTeXcharclass} の設定を行なっており,
+それによって漢字や仮名,および全角英数字の \cs{catcode} が11に設定されている.
+しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が
+まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな
+       い.
+\end{itemize}
+言い換えると,
+\begin{description}
+ \item[plain \LuaTeX]  漢字や仮名を制御綴内に
+使用することはできない.
+ \item[\LuaLaTeX] 最近の(2015-10-01以降の)
+\LuaLaTeX では漢字や仮名を制御綴内に
+使用することが可能になったが,全角英数字は相変わらず使用できない,
+\end{description}
+これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり,
+\LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは
+\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし,
+結果として\textbf{\XeTeX における初期設定と同じになるようにしている.}
 %</ja>
 
-%<en>\subsection{Insertion setting of \Param{xkanjiskip}}
-%<ja>\subsection{\Param{xkanjiskip} の挿入設定}
+\begin{table}
+ \centering\small
+%<en>\caption{Difference of the set of non-kanji JIS~X~0208 characters which can be used in a control word}
+%<ja>\caption{制御綴中に使用出来るJIS~X~0208非漢字の違い}
+%<en>\medskip
+\label{tab:kcat-diff}
+\def\D#1#2#3#4{%
+  {\fboxsep0pt\fcolorbox{cyan}{white}%
+  {\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})} %"
+\leavevmode\hbox to 0pt{\hss\begin{tabular}{cccccc}
+\toprule
+%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
+%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
+\midrule
+%\D 3000&1&1&N&N&Y\\
+\D 30FB&1&6&N&Y&N\\
+\D 309B&1&11&N&Y&N\\
+\D 309C&1&12&N&Y&N\\
+\D FF40&1&14&N&N&Y\\
+\D FF3E&1&16&N&N&Y\\
+\D FFE3&1&17&N&N&Y\\
+\D FF3F&1&18&N&N&Y\\
+%\D 30FD&1&19&N&Y&Y\\
+%\D 30FE&1&20&N&Y&Y\\
+%\D 309D&1&21&N&Y&Y\\
+%\D 309E&1&22&N&Y&Y\\
+\D 3003&1&23&N&N&Y\\
+\D 4EDD&1&24&N&Y&Y\\
+\D 3005&1&25&N&N&Y\\
+\D 3006&1&26&N&N&Y\\
+\D 3007&1&27&N&N&Y\\
+\D 30FC&1&28&N&Y&Y\\
+\D FF0F&1&31&N&N&Y\\
+\D FF3C&1&32&N&N&Y\\
+\bottomrule
+\end{tabular}\qquad
+\begin{tabular}{cccccc}
+\toprule
+%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
+%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
+\midrule
+\D FF5C&1&35&N&N&Y\\
+\D FF0B&1&60&N&N&Y\\
+\D FF1D&1&65&N&N&Y\\
+\D FF1C&1&67&N&N&Y\\
+\D FF1E&1&68&N&N&Y\\
+\D FF03&1&84&N&N&Y\\
+\D FF06&1&85&N&N&Y\\
+\D FF0A&1&86&N&N&Y\\
+\D FF20&1&87&N&N&Y\\
+\D 3012&2&9&N&N&Y\\
+\D 3013&2&14&N&N&Y\\
+\D FFE2&2&44&N&N&Y\\
+\D 212B&2&82&N&N&Y\\
+%<en>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Greek letters (row 6)}&Y&N&Y\\
+%<en>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Cyrillic letters (row 7)}&N&N&Y\\
+%<ja>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}ギリシャ文字(6区)}&Y&N&Y\\
+%<ja>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}キリル文字(7区)}&N&N&Y\\
+\bottomrule
+\end{tabular}\hss}\par
+\end{table}
 
 %<*en>
-It is not desirable that \Param{xkanjiskip} is inserted into every
-boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example,
-\Param{xkanjiskip} should not be inserted after opening parenthesis
-(\textit{e.g.}, compare ``(あ'' and ``(\hskip\ltjgetparameter{xkanjiskip}あ'').
-\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted
-before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and
-\Param{alxspmode} parameters \textbf{ALchar}s respectively.
-%</en>
-%<*ja>
-\Param{xkanjiskip}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に
-挿入されるのは望ましいことではない.例えば,\Param{xkanjiskip}は開き括弧の
-後には挿入されるべきではない(「(あ」と「(\hskip\ltjgetparameter{xkanjiskip}あ」を
-比べてみよ).
-\LuaTeX-jaでは\Param{xkanjiskip}をある文字の前/後に挿入するかどうかを,
-\textbf{JAchar}に対しては\Param{jaxspmode}を,\textbf{ALchar}に対しては
-\Param{alxspmode}をそれぞれ変えることで制御することができる.
-%</ja>
-\begin{LTXexample}
-\ltjsetparameter{jaxspmode={`あ,preonly}, alxspmode={`\!,postonly}}
-pあq い!う
-\end{LTXexample}
+\subsection{Non-kanji characters in a control word}
+Because the engine differ, so non-kanji JIS~X~0208 characters
+which can be used in a control word differ in \pTeX, in \upTeX,~and~in \LuaTeX-ja.
+\autoref{tab:kcat-diff} shows the difference.
+Except for four characters ``・'',~``゛'', ``゜'',~``゠'',
+\LuaTeX-ja admits more characters in a control word than \upTeX.
 
-%<*en>
-The second argument \texttt{preonly} means that the insertion of
-\Param{xkanjiskip} is allowed before this character, but not after.
-the other possible values are \texttt{postonly}, \texttt{allow}, and \texttt{inhibit}.
+Difference becomes larger, if we consider
+non-kanji JIS~X~0213 characters.
+For the detail, see \url{https://github.com/h-kitagawa/kct}.
 %</en>
 %<*ja>
-2つ目の引数の \texttt{preonly}は「\Param{xkanjiskip}の挿入はこの文字の
-前でのみ許され,後では許さない」ことを意味する.他に指定可能な値は
-\texttt{postonly}, \texttt{allow}, \texttt{inhibit}である.
-%</ja>
+\subsection{制御綴中に使用出来るJIS非漢字の違い}
 
-%<*en>
-\Param{jaxspmode} and \Param{alxspmode} use a same table to store the parameters
-on the current version. Therefore, line~1 in the code above can be rewritten
-as follows:
-%</en>
-%<*ja>
-なお,現行の
-仕様では,\Param{jaxspmode}, \Param{alxspmode}はテーブルを共有しており,
-上のコードの1行目を次のように変えても同じことになる:
-%</ja>
-\begin{lstlisting}
-\ltjsetparameter{alxspmode={`あ,preonly}, jaxspmode={`\!,postonly}}
-\end{lstlisting}
-%<*en>
-One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}).
-%</en>
-%<*ja>
-また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param}節を参照).
+エンジンが異なるので,\pTeX, \upTeX, \LuaTeX-ja
+において制御綴中に使用可能なJIS~X~0208の文字は異なる.
+異なっているところだけを載せると,\autoref{tab:kcat-diff}のようになる.
+「・」「゛」「゜」「゠」を除けば,\LuaTeX-jaでは\upTeX より多くの文字が
+制御綴に使用可能になっている.
+
+JIS~X~0213の範囲に広げると,差異はさらに大きくなる.
+詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\
+\texttt{kct-out.pdf} などを参照すること.
 %</ja>
 
+
 %<*en>
-If you want to enable/disable all insertions of \Param{kanjiskip} and
-\Param{xkanjiskip}, set \Param{autospacing} and \Param{autoxspacing}
-parameters to \texttt{true}/\texttt{false}, respectively.
+\section{Directions}
+\LuaTeX\ supports four $\Omega$-style directions: \texttt{TLT},~\texttt{TRT}, \texttt{RTT}
+and \texttt{LTL}.
+However, neither directions are not well-suited for typesetting Japanese vertically, hence we
+implemented vertical writing by rotating \texttt{TLT}-box by 90~degrees.
 %</en>
 %<*ja>
-もし全ての\Param{kanjiskip}と\Param{xkanjiskip}の挿入を有効化/無効化
-したければ,それぞれ\Param{autospacing}と\Param{autoxspacing}を
-\texttt{true}/\texttt{false}に設定すればよい.
+\section{縦組}
+\label{sec-direction}
+\LuaTeX 本体でも,$\Omega$・$\aleph$由来の機能として,複数の組方向をサポートしている.
+しかし,\LuaTeX がサポートするのは \texttt{TLT},~\texttt{TRT}, \texttt{RTT},~\texttt{LTL}\
+のみであり,日本語の縦組に使うのは望ましくない\footnote{%
+和文文字だけならば \texttt{RTT} を使えばなんとかなると思うが,
+欧文文字が入ってきた場合はうまくいかず,\texttt{RTR} という組方向が必要になる.
+}.そのため,\LuaTeX-jaでは横組(\texttt{TLT})で組んだボックスを回転させる方式で
+縦組を実装した.
 %</ja>
 
-%<en>\subsection{Shifting the baseline}
-%<ja>\subsection{ベースラインの移動}
-%<*en>
-To make a match between a Japanese font and an alphabetic font, sometimes
-shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved
-by setting \cs{ybaselineshift} (or \cs{tbaselineshift}) to a non-zero length (the
-baseline of \textbf{ALchar} is shifted below). However, for documents
-whose main language is not Japanese, it is good to shift the baseline of
-Japanese fonts, but not that of alphabetic fonts.
-Because of this, \LuaTeX-ja can independently set the shifting amount
-of the baseline of alphabetic fonts and that of Japanese fonts.
-\begin{center}
- \small
-\begin{tabular}{>{\bfseries}lcc}
+%<ja>\subsection{サポートする組方向}
+\begin{table}[t]
+%<ja>\caption{\LuaTeX-ja のサポートする組方向}
+%<en>\caption{Directions supported by \LuaTeX-ja}
+%<en>\medskip
+\label{tab-dir}
+\centering\small
+\def\obox#1{%
+  \setbox0=\hbox{\yoko\hbox{#1%
+  \large\ltjsetparameter{talbaselineshift=0pt}%
+  \vrule height 25pt width 0.4pt depth 15pt\kern-.2pt%
+  \raise25pt\hbox to 0pt{\hss\composite{*r^@{>>}}\hss}%
+  \raise-15pt\hbox to 0pt{\hss\composite{*l^@{>|}}\hss}\kern.2pt%
+  \vrule height.2pt depth.2pt width 60pt\hbox to 0pt{\hss\composite{*d^@{>}}\hss}\kern-60pt
+  \hbox to 60pt{\,銀は、Ag\hss}}}%
+  \raise\dimexpr 0.5\ltjgetdp0-0.5\ltjgetht0\box0%
+}
+%<*ja>
+\begin{tabular}{>{\bfseries}lcccc}
 \toprule
-&\bfseries Horizontal writing (\emph{yoko} direction) etc.
-&\bfseries Vertical writing(\emph{tate} direction)\\
+&横組&縦組 &「dtou方向」&「utod方向」\\
 \midrule
-Alphabetic fonts&\Param{yalbaselineshift}
-     parameter&\Param{talbaselineshift} parameter\\
-Japanese fonts&\Param{yjabaselineshift}
-     parameter&\Param{tjabaselineshift} parameter\\
+命令&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\
+字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\
+行送り方向&垂直下向き(↓)&水平左向き(←)&水平右向き(→)&水平左向き(←)\\
+使用する和文フォント&横組用(\cs{jfont})&縦組用(\cs{tfont})&
+\multicolumn{2}{c}{%
+  横組用(\cs{jfont})の$90^\circ$回転}\\[\smallskipamount]
+組版例\null $^*$ &\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\
+\noalign{\medskip}
 \bottomrule
 \end{tabular}
-\end{center}
-%</en>
-%<*ja>
-和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が
-必要になる.\pTeX ではこれは \cs{ybaselineshift}(または\cs{tbaselineshift})を設定することで
-なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない
-文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい.
-このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量
-と和文フォントのベースラインのシフト量を独立に設定できるようになっている.
-\begin{center}
- \small
-\begin{tabular}{>{\bfseries}lcc}
+
+\medskip\raggedright
+\def\R#1{%
+  \raise0.38\zw\hbox{%
+    \vrule height.2pt  depth.2pt width2\zw%
+    \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}%
+  }%
+}
+$^*$\ 幅(width),高さ(height),深さ(depth)の増加方向を,
+それぞれ「\R{>}」,「\R{>>}」,「\R{>|}」で表している.
+\raggedright
+%</ja>
+
+%<*en>
+\begin{tabular}{>{\bfseries}lcccc}
 \toprule
-&\bfseries 横組など&\bfseries 縦組\\
+&horizontal (\emph{yoko}~direction)&vertical (\emph{tate}~direction)&%
+  \emph{dtou} direction&\emph{utod} direction\\
 \midrule
-欧文フォントのシフト量&\Param{yalbaselineshift}
-     parameter&\Param{talbaselineshift} parameter\\
-和文フォントのシフト量&\Param{yjabaselineshift}
-     parameter&\Param{tjabaselineshift} parameter\\
+Commands&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\
+Beginning of the page&Top&Right&Left&Right\\
+Beginning of the line&Left&Top&Bottom&Top\\
+Used Japanese font&horizontal (\cs{jfont})&vertical (\cs{tfont})&
+\multicolumn{2}{c}{%
+  horizontal ($90^\circ$ rotated)}\\[\smallskipamount]
+Example&\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\
+\noalign{\medskip}
+(Notation used in $\Omega$)&TLT&RTR, RTT&LBL&RTR\\
 \bottomrule
 \end{tabular}
-\end{center}
-%</ja>
 
-%<*en>
-Here the horizontal line in the below example is the baseline of a line.
+\medskip\raggedright
+\def\R#1{%
+  \raise0.38\zw\hbox{%
+    \vrule height.2pt  depth.2pt width2\zw%
+    \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}%
+  }%
+}
+\raggedright
 %</en>
-%<*ja>
-下の例において引かれている水平線がベースラインである.
-%</ja>
-\begin{LTXexample}
-\vrule width 150pt height 0.2pt depth 0.2pt \hskip-120pt
-\ltjsetparameter{yjabaselineshift=0pt, yalbaselineshift=0pt}abcあいう
-\ltjsetparameter{yjabaselineshift=5pt, yalbaselineshift=2pt}abcあいう
-\end{LTXexample}
+\end{table}
 
 %<*en>
-There is an interesting side-effect: characters in different size can be
-vertically aligned center in a line, by setting two parameters appropriately.
-The following is an example (beware the value is not well tuned):
+\LuaTeX-ja supports four directions, as shown in \autoref{tab-dir}.
+The second column (\emph{yoko} direction) is just horizontal writing,
+and the third column (\emph{tate} direction) is vertical writing.
+The fourth column (\emph{dtou} direction) is actually a hidden feature of \pTeX.
+We implemented this for debugging purpose.
+The fifth column (\emph{utod} direction) corresponds the ``\texttt{tate (math) direction}'' of \pTeX.
+
+Directions can be changed by \cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod},
+only when the current list is null. Also, the direction of a math formula is changed to
+\emph{utod}, when the direction outside the math formula is \emph{tate} (vertical writing).
 %</en>
+
 %<*ja>
-この機能には面白い使い方がある:2つのパラメータを適切に設定することで,サイズの
-異なる文字を中心線に揃えることができる.
-以下は一つの例である(値はあまり調整されていないことに注意):
+\LuaTeX-jaがサポートする組方向は\autoref{tab-dir}に示す4つである.
+4列目の \cs{dtou} は聞き慣れない命令だと思うが,
+実は\pTeX に同名の命令が(ドキュメントには書かれていないが)存在する.
+Down-TO-Upの意味なのだろう.\cs{dtou} を使用する機会はないだろうが,
+\LuaTeX-jaではデバッグ用に実装している.
+5列目の \cs{utod} は,\pTeX で言う「縦数式ディレクション」に相当するものである.
+
+組方向は,\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} をそれぞれ使用することで,
+現在作成中のリストやボックスが空の時にのみ変更可能である.
+また,縦組中の数式内のボックスは\pTeX と同じように組方向が \cs{utod} となる.
 %</ja>
-\begin{LTXexample}[width=0.4\textwidth]
-\vrule width 150pt height4.417pt depth-4.217pt%
-\kern-150pt
-\large xyz漢字
-{\scriptsize
-  \ltjsetparameter{yjabaselineshift=-1.757pt,
-    yalbaselineshift=-1.757pt}
-  漢字xyzあいう
-}あいうabc
-\end{LTXexample}
 
 %<*en>
-Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift}
-parameters does not increase the depth of one-letter \emph{syllable} $p$ of \textbf{Alchar}, if
-its left-protrusion~(\cs{lpcode}) and right-protrusion~(\cs{rpcode}) are both non-zero.
-This is because
-\begin{itemize}
-\item These two parameters are implemented by setting \texttt{yoffset} field of a
-glyph node, and this does not increase the depth of the glyph.
-\item To cope with the above situation, \LuaTeX-ja automatically supplies
-a rule in every syllable.
-\item However, we cannot use this ``supplying a rule'' method if a syllable comprises just
-      one letter whose \cs{lpcode}~and~\cs{rpcode} are both non-zero.
-\end{itemize}
+\subsection{Boxes in different direction}
 
-This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift},
-becuse a \emph{JAchar} is encapsulated by a horizontal box if needed.
-%</en>
-%<*ja>
-なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意.
-\begin{itemize}
- \item \Param{yalbaselineshift},~\Param{talbaselineshift}パラメータが正になっている.
- \item 「音節」を構成する唯一の文字$p$の
-左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である.
-\end{itemize}
-\emph{JAchar}は必要に応じて1文字ずつボックスにカプセル化されるため,
-\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない.
-%</ja>
+As in \pTeX, one can use boxes of different direction in one document.
+The below is an example.
+\begin{LTXexample}
+ここは横組%     yoko
+\hbox{\tate %   tate
+  \hbox{縦組}%  tate
+  の中に
+  \hbox{\yoko 横組の内容}% yoko
+  を挿入する
+}
+また横組に戻る% yoko
+\end{LTXexample}
 
+\autoref{tab-diffdir} shows how a box is arranged when
+the direction  inside the box and that outside the box differ.
+%</en>
 %<*ja>
-\paragraph{数式における挙動:\pTeX との違い}
-\textbf{ALchar}のベースラインを補正する\Param{yalbaselineshift}, \Param{talbaselineshift}パラメータは
-ほぼ\pTeX における \cs{ybaselineshift}, \cs{tbaselineshift} に対応しているものであるが,
-数式中の挙動は異なっているので注意が必要である.
-例えば,\autoref{tab:math_bsa}のように,数式中に明示的に現れた \cs{hbox},~\cs{vbox} は,横組において
-\begin{itemize}
- \item 2015年以前の\pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので,
- \autoref{tab:math_bsa}中の``い''のように,ボックス中の和文文字は
- \ \cs{ybaselineshift} だけシフトされ,一方,``for all''のように,
- ボックス内の欧文文字は2重にシフトされることになる.
- \item 一方,\LuaTeX-jaではそのようなことはおこらず,
- 数式中に明示的に現れた \cs{hbox},~\cs{vbox} はシフトしない.そのため,
- \autoref{tab:math_bsa}中の``い''も``for all''も,それぞれ本文中に
- 書かれたときと同じ上下位置に組まれる.
+\subsection{異方向のボックス}
 
- なお,\TeX~Live~2016以降の\pTeX では改修がなされ,\LuaTeX-jaと
- 近い挙動になるようにしているが,数式中に直に書かれた``あ''のベースラインについては
- まだ違いが見られる.
-\end{itemize}
+縦組の中に「42」などの2桁以上の算用数字を横組で組むなど,
+異なる組方向を混在させることがしばしば行われる.
+組方向の混在も\pTeX と同じようにできる:
+\begin{LTXexample}
+ここは横組%     yoko
+\hbox{\tate %   tate
+  \hbox{縦組}%  tate
+  の中に
+  \hbox{\yoko 横組の内容}% yoko
+  を挿入する
+}
+また横組に戻る% yoko
+\end{LTXexample}
 
-なお,20170401.0版以降の\LuaTeX-jaでは,\cs{vcenter} によるボックスには
-全体が\Param{yalbaselineshift}, \Param{talbaselineshift} パラメータが反映されるようにしている
-その方が結果が自然であることによる変更なのだが,結果的に\cs{vcenter} については\pTeX と同じ挙動となった.
+異なる組方向のボックスを配置した場合にどう組まれるかの仕様も,\pTeX を
+踏襲している.\autoref{tab-diffdir}に示す
+%</ja>
 
-\begin{table}
-\small\centering
-\caption{数式関係のベースライン補正($\Param{yalbaselineshift}=10\,\textrm{pt}$)}
-\label{tab:math_bsa}
-\newdimen\origbaselineskip
-\origbaselineskip=\baselineskip
-\begin{tabular}{lp{30\zw}}
-\toprule
-\emph{入力}&\vspace*{\dimexpr-\origbaselineskip-\smallskipamount}
-\begin{lstlisting}
-数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
-$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
-\end{lstlisting}\\
-\noalign{\vskip-\origbaselineskip}
-\midrule
-\emph{\pTeX~(--2015)}&
-{\ltjsetparameter{yalbaselineshift=10pt}%
-数式abc: $\lower10pt\hbox{あ}a\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
-$\Phi\vdash F(x)\ \lower10pt\hbox{for all}\ x\in A$
-\par}\\\noalign{\vskip-\origbaselineskip}\midrule
-\emph{\pTeX~(2016--)}&
-{\ltjsetparameter{yalbaselineshift=10pt}%
-数式abc: $\lower10pt\hbox{あ}a\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
-$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
-\par}\\\noalign{\vskip-\origbaselineskip}\midrule
-\emph{\LuaTeX-ja}&
-{\ltjsetparameter{yalbaselineshift=10pt}%
-数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
-$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
-\par}\\
-\noalign{\vskip-\origbaselineskip}
+\begin{table}[t]
+%<ja>\caption{異方向のボックスの配置}
+%<en>\caption{Boxes in different direction}
+%<en>\medskip
+\label{tab-diffdir}
+ \centering\small\unitlength3mm
+ \def\TATEeg{%
+   \hbox{\smash{\begin{picture}(0,0)(-2,0)
+     \thicklines
+     \polyline(-2,0)(-2,-7)(5,-7)(5,0)
+     \put(0,0){\circle*{0.3}}
+     \put(2.5,-4){\makebox(0,0){\hbox{\tate\bfseries \emph{tate}/\emph{utod}}}}
+     \put(0,0){\vector(1,0){5}} \put(2.5,-0.2){\makebox(0,0)[t]{$h_{\mathrm{T}}$}}
+     \put(0,0){\vector(-1,0){2}}\put(-1,-0.2){\makebox(0,0)[t]{$d_{\mathrm{T}}$}}
+     \put(0,0){\vector(0,-1){7}}\put(0.2,-3.5){\makebox(0,0)[l]{$w_{\mathrm{T}}$}}
+   \end{picture}}}%
+ }
+ \def\DTOUeg{%
+   \hbox{\smash{\begin{picture}(0,0)(-5,0)
+     \thicklines
+     \polyline(-5,0)(-5,7)(2,7)(2,0)
+     \put(0,0){\circle*{0.3}}
+     \put(-2.5,4){\makebox(0,0){\hbox{\dtou\bfseries \emph{dtou}}}}
+     \put(0,0){\vector(-1,0){5}} \put(-2.5,0.3){\makebox(0,0)[b]{$h_{\mathrm{D}}$}}
+     \put(0,0){\vector(1,0){2}}\put(1,0.3){\makebox(0,0)[b]{$d_{\mathrm{D}}$}}
+     \put(0,0){\vector(0,1){7}}\put(-0.2,3.5){\makebox(0,0)[r]{$w_{\mathrm{D}}$}}
+   \end{picture}}}%
+ }
+ \def\YOKOeg{%
+   \hbox{\smash{\begin{picture}(0,0)
+     \thicklines
+     \polyline(0,5)(7,5)(7,-2)(0,-2)
+     \put(4,2.5){\makebox(0,0){\hbox{\yoko\bfseries \emph{yoko}}}}
+     \put(0,0){\circle*{0.3}}
+     \put(0,0){\vector(0,1){5}} \put(0.3,2.5){\makebox(0,0)[l]{$h_{\mathrm{Y}}$}}
+     \put(0,0){\vector(0,-1){2}}\put(0.3,-1){\makebox(0,0)[l]{$d_{\mathrm{Y}}$}}
+     \put(0,0){\vector(1,0){7}}\put(3.5,0.2){\makebox(0,0)[b]{$w_{\mathrm{Y}}$}}
+   \end{picture}}}%
+ }
+\begin{tabular}{ccc}
+\toprule
+%<ja>\emph{横組中に配置}&\emph{縦組中に配置}&%
+%<ja>\emph{組方向 \cs{dtou} 中に配置}\\
+%<en>\textbf{typeset in \emph{yoko} direction}
+%<en>&\textbf{typeset in \emph{tate} or \emph{utod} direction}
+%<en>&\textbf{typeset in \emph{dtou} direction}\\
+\midrule
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+   \put(0,0){\line(1,0){3.8}}
+   \put(4,7){\TATEeg}
+   \put(11.2,0){\line(1,0){3.8}}
+%
+   \put(2,7){\line(1,0){1.8}}
+   \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}}
+   \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}}
+   \put(3,-2){\vector(0,1){2}}
+   \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}}
+%
+   \put(4,7.2){\line(0,1){1.8}}
+   \put(11,7.2){\line(0,1){1.8}}
+   \put(6,8){\vector(-1,0){2}}
+   \put(9,8){\vector(1,0){2}}
+   \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+   \begin{align*}
+   W_{\mathrm{Y}} &= h_{\mathrm{T}}+d_{\mathrm{T}},\\
+   H_{\mathrm{Y}} &= w_{\mathrm{T}},\\
+   D_{\mathrm{Y}} &=0\,\mathrm{pt}
+   \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+   \put(7.5,-0.2){\line(0,-1){2.8}}
+   \put(4,2){\YOKOeg}
+   \put(7.5, 7.2){\line(0,1){3.8}}
+%
+   \put(2,7){\line(1,0){1.8}}
+   \put(2,0){\line(1,0){1.8}}
+   \put(3,5){\vector(0,1){2}}
+   \put(3,2){\vector(0,-1){2}}
+   \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}}
+%
+   \put(4,7.2){\line(0,1){1.8}}
+   \put(11,7.2){\line(0,1){1.8}}
+   \put(8,8){\vector(-1,0){0.5}\vector(1,0){3}}
+   \put(7,8){\vector(-1,0){3}\vector(1,0){0.5}}
+   \put(9.25,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}}
+   \put(5.75,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+   \begin{align*}
+   W_{\mathrm{T}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\
+   H_{\mathrm{T}} &= w_{\mathrm{Y}}/2,\\
+   D_{\mathrm{T}} &= w_{\mathrm{Y}}/2
+   \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+   \put(11,-0.2){\line(0,-1){2.8}}
+   \put(4,2){\YOKOeg}
+   \put(11, 7.2){\line(0,1){3.8}}
+%
+   \put(2,7){\line(1,0){1.8}}
+   \put(2,0){\line(1,0){1.8}}
+   \put(3,5){\vector(0,1){2}}
+   \put(3,2){\vector(0,-1){2}}
+   \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}}
+%
+   \put(4,7.2){\line(0,1){1.8}}
+   \put(11,7.2){\line(0,1){1.8}}
+   \put(7.5,8){\vector(-1,0){3.5}\vector(1,0){3.5}}
+   \put(13,8){\vector(-1,0){2}}
+   \put(7.5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}}
+   \put(12,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+   \begin{align*}
+   W_{\mathrm{D}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\
+   H_{\mathrm{D}} &= w_{\mathrm{Y}},\\
+   D_{\mathrm{D}} &= 0\,\mathrm{pt}
+   \end{align*}%
+ }%
+\\\midrule
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+   \put(0,0){\line(1,0){3.8}}
+   \put(4,0){\DTOUeg}
+   \put(11.2,0){\line(1,0){3.8}}
+%
+   \put(2,7){\line(1,0){1.8}}
+   \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}}
+   \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}}
+   \put(3,-2){\vector(0,1){2}}
+   \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}}
+%
+   \put(4,7.2){\line(0,1){1.8}}
+   \put(11,7.2){\line(0,1){1.8}}
+   \put(6,8){\vector(-1,0){2}}
+   \put(9,8){\vector(1,0){2}}
+   \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+   \begin{align*}
+   W_{\mathrm{Y}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\
+   H_{\mathrm{Y}} &= w_{\mathrm{D}},\\
+   D_{\mathrm{Y}} &= 0\,\mathrm{pt}
+   \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+   \put(9,-0.2){\line(0,-1){2.8}}
+   \put(4,0){\DTOUeg}
+   \put(9, 7.2){\line(0,1){3.8}}
+%
+   \put(2,7){\line(1,0){1.8}}
+   \put(2,0){\line(1,0){1.8}}
+   \put(3,5){\vector(0,1){2}}
+   \put(3,2){\vector(0,-1){2}}
+   \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}}
+%
+   \put(4,7.2){\line(0,1){1.8}}
+   \put(11,7.2){\line(0,1){1.8}}
+   \put(6.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}}
+   \put(10,8){\vector(-1,0){1}\vector(1,0){1}}
+   \put(10,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}}
+   \put(6.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+   \begin{align*}
+   W_{\mathrm{T}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\
+   H_{\mathrm{T}} &= d_{\mathrm{D}},\\
+   D_{\mathrm{T}} &= h_{\mathrm{D}}
+   \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+   \put(6,-0.2){\line(0,-1){2.8}}
+   \put(4,7){\TATEeg}
+   \put(6, 7.2){\line(0,1){3.8}}
+%
+   \put(2,7){\line(1,0){1.8}}
+   \put(2,0){\line(1,0){1.8}}
+   \put(3,5){\vector(0,1){2}}
+   \put(3,2){\vector(0,-1){2}}
+   \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}}
+%
+   \put(4,7.2){\line(0,1){1.8}}
+   \put(11,7.2){\line(0,1){1.8}}
+   \put(5,8){\vector(-1,0){1}\vector(1,0){1}}
+   \put(8.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}}
+   \put(5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}}
+   \put(8.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+   \begin{align*}
+   W_{\mathrm{D}} &= w_{\mathrm{T}},\\
+   H_{\mathrm{D}} &= d_{\mathrm{T}},\\
+   D_{\mathrm{D}} &= h_{\mathrm{T}}
+   \end{align*}%
+ }\\
 \bottomrule
 \end{tabular}
 \end{table}
-%</ja>
 
-%<*en>
-\subsection{\emph{kinsoku} parameters and OpenType features}
-Among parameters which related to Japanese word-wrapping process (\emph{kinsoku shori}),
-\begin{quote}
- \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
- \Param{postbreakpenalty}~and~\Param{kcatcode}
-\end{quote}
-are stored by each character codes.
 
-OpenType font features are ignored in these parameters.
-For example, a fullwidth katakana ``ア'' on line~10 in the below input is replaced to
-its halfwidth variant ``ア'', by \verb+hwid+ feature.
-However, the penalty inserted after it is 10 which is the \Param{postbreakpenalty} of
-``ア'', not 20.
-%</en>
-%<*ja>
-\newpage
-\subsection{禁則処理関連パラメータとOpenTypeのfont feature}
-禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち
-\begin{quote}
- \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
- \Param{postbreakpenalty}, \Param{kcatcode}
-\end{quote}
-は,文字コードごとに設定する量である.
 
-\Pkg{fontspec}パッケージを使う(\ref{ssec-fontspec}節)場合など,
-各種のOpenType featureを適用することもあると思うが,前段落に述べたパラメータ類は,
-\emph{OpenType featureの適用前の文字コードによって適用される.}
-例えば,以下の例において10行目の「ア」は,\verb+hwid+ featureの適用により半角カタカナの「ア」
-に置き換わる.しかし,その直後に挿入される \Param{postbreakpenalty}は,置換前の「ア」に対する値10である.
-%</ja>
+%<*en>
+\paragraph{\cs{wd} and direction}
+In \pTeX, \cs{wd},~\cs{ht},~\cs{dp} means the dimensions of a box register
+\emph{with respact to the current direction}.
+This means that the value of \cs{wd0} etc.\ might differ when the current direction is
+different, even if \cs{box0} stores the same box.
+However, this no longer applies in \LuaTeX-ja.
 
-\begin{LTXexample}[width=0.2\textwidth]
-\ltjsetparameter{postbreakpenalty={`ア, 10}}
-\ltjsetparameter{postbreakpenalty={`ア, 20}}
+\begin{LTXexample}
+% yoko direction
+\setbox0=\hbox to 20pt{foo}
+\the\wd0,~\hbox{\tate\vrule\the\wd0}
+\wd0=100pt
+\the\wd0,~\hbox{\tate \the\wd0}
+\end{LTXexample}
 
-\newcommand\showpostpena[1]{%
-  \leavevmode\setbox0=\hbox{#1\hbox{}}%
-  \unhbox0\setbox0=\lastbox\the\lastpenalty}
+To access box dimensions \emph{with respect to current direction},
+one have to use the following commands instead of \cs{wd} wtc.
+\begin{cslist}
 
-\showpostpena{ア},
-\showpostpena{ア},
-{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ア}}
+ \item[\cs{ltjgetwd}<num>\textrm{, }\cs{ltjgetht}<num>\textrm{, }%
+  \cs{ltjgetdp}<num>]
+These commands return \emph{an internal dimension} of \cs{box<num>} with respect to
+the current direction. One can use these in \cs{dimexpr} primitive, as the followings.
+\begin{lstlisting}
+\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701
+\end{lstlisting}
+The following is an example.
+\begin{LTXexample}[width=0.3\textwidth]
+\parindent0pt
+\setbox32767=\hbox{\yoko よこぐみ}
+\fboxsep=0mm\fbox{\copy32767}
+\vbox{\hsize=20mm
+\yoko YOKO \the\ltjgetwd32767, \\
+  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
+\vbox{\hsize=20mm\raggedleft
+\tate TATE \the\ltjgetwd32767, \\
+  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
+\vbox{\hsize=20mm\raggedleft
+\dtou DTOU \the\ltjgetwd32767, \\
+  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
 \end{LTXexample}
 
-\clearpage
-%<en>\part{Reference}
-%<ja>\part{リファレンス}
-\label{part-ref}
-\suppressfloats[t]
+ \item[\cs{ltjsetwd}<num>=<dimen>\textrm{, }\cs{ltjsetht}<num>=<dimen>\textrm{, }%
+  \cs{ltjsetdp}<num>=<dimen>]
+These commands set the dimension of \cs{box<num>}. One does not need
+       to group the argument <num>; four calls of \cs{ltjsetwd} below have the same meaning.
+\begin{lstlisting}
+\ltjsetwd42 20pt,  \ltjsetwd42=20pt,  \ltjsetwd=42 20pt,  \ltjsetwd=42=20pt
+\end{lstlisting}
+
+\end{cslist}
+%</en>
 %<*ja>
-\section{\LuaTeX-jaにおける \cs{catcode}}
-\label{sec-catcode}
-\subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}}
-\pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか
-は \cs{kcatcode} の値によって決定されるのであった.
-詳細は\autoref{tab:kcat}を参照されたい.
+\paragraph{\cs{wd} 達と組方向}
+ボックスレジスタ \cs{box}<num> にセットされているボックスの幅・高さ・深さの取得や
+変更にはそれぞれ \cs{wd},~\cs{ht},~\cs{dp} プリミティブを用いるのであった.
+\pTeX ではこれらのプリミティブは,「現在の組方向におけるボックスの寸法」を指すもので,
+同じボックスに対しても現在の組方向によって返る値は異なるもであった.
+
+\LuaTeX-jaにおいては状況が異なり,\cs{wd},~\cs{ht},~\cs{dp} が返す値は
+現在の組方向には依存しない.下の例のように,横組のボックスが格納されていれば
+\cs{wd}等は常に「横組におけるボックスの寸法」を意味する.
+
+\begin{LTXexample}
+% yoko direction
+\setbox0=\hbox to 20pt{foo}
+\the\wd0,~\hbox{\tate\vrule\the\wd0}
+\wd0=100pt
+\the\wd0,~\hbox{\tate \the\wd0}
+\end{LTXexample}
+
+\pTeX のように現在の組方向に応じたボックスの寸法の取得・設定を行うには,
+代わりに次の命令を使用する.
+
+\begin{cslist}
+
+ \item[\cs{ltjgetwd}<num>\textrm{, }\cs{ltjgetht}<num>\textrm{, }%
+  \cs{ltjgetdp}<num>]
+現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため,
+\begin{lstlisting}
+\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701
+\end{lstlisting}
+のように \cs{wd}<num> の代わりとして扱うことができる.
+使用例は以下の通りである.
+\begin{LTXexample}[width=0.3\textwidth]
+\parindent0pt
+\setbox32767=\hbox{\yoko よこぐみ}
+\fboxsep=0mm\fbox{\copy32767}
+\vbox{\hsize=20mm
+\yoko YOKO \the\ltjgetwd32767, \\
+  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
+\vbox{\hsize=20mm\raggedleft
+\tate TATE \the\ltjgetwd32767, \\
+  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
+\vbox{\hsize=20mm\raggedleft
+\dtou DTOU \the\ltjgetwd32767, \\
+  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
+\end{LTXexample}
+
+ \item[\cs{ltjsetwd}<num>=<dimen>\textrm{, }\cs{ltjsetht}<num>=<dimen>\textrm{, }%
+  \cs{ltjsetdp}<num>=<dimen>]
+現在の組方向に応じたボックスの寸法の設定を行う.\cs{afterassignment} を2回利用して
+実装しているので,次の4通りは全て同じ意味である.
+\begin{lstlisting}
+\ltjsetwd42 20pt,  \ltjsetwd42=20pt,  \ltjsetwd=42 20pt,  \ltjsetwd=42=20pt
+\end{lstlisting}
+
+設定値は「横組」「縦組及びutod方向」「dtou方向」
+の3種ごとに独立して記録される.参考として,Gitリポジトリ内の
+             \verb+test/test55-boxdim_diffdir.{tex,pdf}+ を挙げておく.
+
+\end{cslist}
 %</ja>
-%<*en>
-\section{\cs{catcode} in \LuaTeX-ja}
-\label{sec-catcode}
-\subsection{Preliminaries: \cs{kcatcode} in \pTeX\ and \upTeX}
-In \pTeX~and~\upTeX, the value of \cs{kcatcode} determines
-whether a Japanese character can be used in a control word.
-For the detail, see \autoref{tab:kcat}.
-%</en>
 
-\begin{table}[t]
+%<*en>
+\subsection{Getting current direction}
+The \Param{direction} parameter returns the current direction, and
+the \Param{boxdir} parameter (with the argument <num>)
+returns the direction of a box register \cs{box}<num>.
+The returned value of these parameters are a \emph{string}:
+\begin{center}
 \small
-\caption{\cs{kcatcode} in \upTeX}
-\label{tab:kcat}
-%<en>\medskip
-
-\noindent\hfill
-\begin{tabular}{ccccc}
+\begin{tabular}{>{\bfseries}lccccc}
 \toprule
-\bfseries \cs{kcatcode}&
-%<*en>
-\bfseries meaning&
-\bfseries control word&
-\bfseries widow penalty&
-\bfseries linebreak\\
+Direction&\emph{yoko}&\emph{tate}&\emph{dtou}&\emph{utod}&(empty)\\
+\midrule
+Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\
+\bottomrule
+\end{tabular}
+\end{center}
+\begin{LTXexample}[width=0.3\textwidth]
+\leavevmode\def\DIR{\ltjgetparameter{direction}}
+\hbox{\yoko \DIR}, \hbox{\tate\DIR},
+\hbox{\dtou\DIR}, \hbox{\utod\DIR},
+\hbox{\tate$\hbox{tate math: \DIR}$}
+
+\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2}
+\end{LTXexample}
 %</en>
 %<*ja>
-\bfseries 意図&
-\bfseries 制御綴中に使用&
-\bfseries 文字ウィドウ処理&
-\bfseries 直後での改行\\
-%</ja>
+\subsection{組方向の取得}
+「現在の組方向」や「<num>番のボックスの組方向」は,
+\pTeX では \cs{ifydir} や \cs{ifybox}<num> といった条件判断文を使って
+判断することができた.
+しかし,\LuaTeX-jaはあくまでも\TeX マクロとLuaコードで
+記述されており,それでは新たな条件判断命令を作るのは難しい.
+
+\LuaTeX-jaでは,\Param{direction}パラメータで現在の組方向を,
+\Param{boxdir}パラメータ(と追加の引数<num>)によって
+\cs{box}<num>の組方向をそれぞれ取得できるようにした.
+戻り値は文字列である:
+\begin{center}
+\small
+\begin{tabular}{>{\bfseries}lccccc}
+\toprule
+組方向&\emph{横組}&\emph{tate縦組}&\emph{dtou方向}&\emph{utod方向}&(未割り当て)\\
 \midrule
-15&non-cjk&\multicolumn{3}{c}{(treated as usual \LaTeX)}\\
-16&kanji&Y&Y&ignored\\
-17&kana&Y&Y&ignored\\
-18&other&N&N&ignored\\
-19&hangul&Y&Y&space\\
+戻り値&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\
 \bottomrule
-\end{tabular}\hfill\null
+\end{tabular}
+\end{center}
 
-\medskip
+\begin{LTXexample}[width=0.3\textwidth]
+\leavevmode\def\DIR{\ltjgetparameter{direction}}
+\hbox{\yoko\DIR}, \hbox{\tate\DIR},
+\hbox{\dtou\DIR}, \hbox{\utod\DIR},
+\hbox{\tate$\hbox{tate math: \DIR}$}
 
-%<*ja>
-文字ウィドウ処理:「漢字が一文字だけ次の行に行くのを防ぐ」
-\cs{jcharwidowpenalty} が,
-その文字の直前に挿入されうるか否か,を示す.
+\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2}
+\end{LTXexample}
+
+これらを用いれば,例えば
+\pTeX の \cs{ifydir},~\cs{ifybox200} と同等の条件判断を
+\begin{lstlisting}
+\ifnum\ltjgetparameter{direction}=4
+\ifnum\ltjgetparameter{boxdir}{200}=4
+\end{lstlisting}
+のように行うことができる.
+\cs{iftdir} は少々面倒であるが,8で割った余りが3であるか否かを判断すれば良いから
+\begin{lstlisting}
+\ifnum\numexpr
+  \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3
+\end{lstlisting}
+とすればよい.
 %</ja>
-\end{table}
 
 %<*en>
-\cs{kcatcode} can be set by a row of JIS~X~0208 in \pTeX,
-and generally by a Unicode block\footnote{%
-  \upTeX\ divides \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)
-  into three subblocks, and \cs{kcatcode} can be set by a subblock.
-}
-in \upTeX. So characters which can be used in a control word
-slightly differ between \pTeX~and~\upTeX.
+\subsection{Overridden box primitives}
+To cope with multiple directions, the following primitives are
+overridden by \LuaTeX-ja, using~\verb+\protected\def+.
+\begin{cslist}[style=standard]
+ \item[\cs{unhbox}<num>\textrm{, }\cs{unvbox}<num>\textrm{, }\cs{unhcopy}<num>\textrm{, }\cs{unvcopy}<num>]
+ \item[\cs{vadjust}\{<material>\}]
+ \item[\cs{insert}<number>\{<material>\}]
+ \item[\cs{lastbox}]
+ \item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
+ \item[\cs{vcenter}]
+\end{cslist}
 %</en>
 %<*ja>
-\pTeX では \cs{kcatcode} はJIS~X~0208の区単位,
-\upTeX では概ねUnicodeブロック単位\footnote{%
-  \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)は
-  「全角英数字」「半角カナ」「その他」と3つに分割されており,
-  それぞれ別々に \cs{kcatcode} が指定できるようになっている.
-}で設定可能になっている.そのため,\pTeX と\upTeX の初期状態では
-制御綴内で使用可能な文字が微妙に異なっている.
+\subsection{プリミティブの再定義}
+異なる組方向に対応するために,以下に挙げるプリミティブは
+\LuaTeX-jaによる前処理もしくは後処理が行われるように
+\ \verb+\protected\def+ により再定義してある.
+
+\begin{cslist}
+ \item[\cs{unhbox}<num>\textrm{, }\cs{unvbox}<num>\textrm{, }\cs{unhcopy}<num>\textrm{, }\cs{unvcopy}<num>]
+ ボックスの組方向が現在のリストと異なる場合は事前にエラーメッセージを出力する.
+ \pTeX と異なり,エラーを無視して無理矢理 \cs{unhbox}, \cs{unvbox} を
+ 続行させることもできるが,その場合の組版結果は保証しない.
+ \item[\cs{vadjust}\{<material>\}] 一旦プリミティブ本来の挙動を行う.その後,<material>の組方向が
+ 周囲の垂直リストの組方向と一致しない場合にエラーを出力し,
+ 該当の \cs{vadjust} を無効にする.
+ \item[\cs{insert}<number>\{<material>\}]
+ 一旦プリミティブ本来の挙動を行い,その後<material>内の各ボックス・罫線の直前に組方向を示
+             すdirection whatsitを挿入する.
+ \item[\cs{lastbox}] ボックスの「中身」を現在の組方向に合わせるためのノード
+             (\textit{dir\_box}という)を必要ならば除去し,
+ 正しく「中身」のボックスが返されるように前処理をする.
+ \item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
+ 一方,こちらでは必要に応じて\textit{dir\_box}を作成する前処理を追加している.
+\end{cslist}
 %</ja>
 
-%<*en>
-\subsection{Case of \LuaTeX-ja}
-The role of \cs{kcatcode} in \pTeX~and~\upTeX\ can be
-divided into the following four kinds,
-and \LuaTeX-ja can control these four kinds separately:
-\begin{itemize}
- \item
-\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}}
-is controlled by the character range, see Subsection~\ref{ssec-setrange}.
- \item
-\emph{Whether the character can be used in a control word}
-is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual.
- \item
-\emph{Whether \Param{jcharwidowpenalty} can be inserted before the character}
-is controlled by the lowermost bit of the \Param{kcatcode} parameter.
- \item
-\emph{Linebreak after a \textbf{JAchar}} does not produce a space.
-\end{itemize}
-%</en>
-%<*ja>
-\subsection{\LuaTeX-jaの場合}
-\LuaTeX-jaでは,従来の\pTeX・\upTeX における \cs{kcatcode} の役割を
-分割している:
-\begin{description}
- \item[欧文/和文の区別 (\upTeX)]
-\cs{ltjdefcharrange} と\textsf{jacharrange}パラメータ(\ref{ssec-setrange}節)
- \item[制御綴中に使用可か]
-\LuaTeX 自身の \cs{catcode} でよい
- \item[\Param{jcharwidowpenalty}が挿入可か]
-\Param{kcatcode}パラメータの最下位ビット
- \item[直後の改行]
-日本語しか想定していないので,\textbf{JAchar}直後の改行で半角スペースが挿入されることはない.
-\end{description}
-%</ja>
+%<en>\section{Font Metric and Japanese Font}
+%<ja>\section{フォントメトリックと和文フォント}
+%<en>\subsection{\cs{jfont}}
+%<ja>\subsection{\cs{jfont} 命令}
+\label{ssec-jfont}
 
 %<*en>
-Default setting of \cs{catcode} of Unicode characters are located in
-\begin{description}
- \item[plain \LuaTeX] \texttt{luatex-unicode-letters.tex}, which is based on \texttt{unicode-letters.tex}
-(for \XeTeX).
- \item[\LuaLaTeX] now included in \LaTeX\ kernel  as~\texttt{unicode-letters.def}.
-\end{description}
-However, the default setting of \cs{catcode} differs
-between \XeTeX\ and \LuaTeX, by the following reasons:
-\begin{itemize}
- \item (plain format) \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}.
- \item The latter half of \texttt{unicode-letters.tex}~and~\texttt{unicode-letters.def}
-sets\cs{catcode} of several characters to 11, via setting \cs{XeTeXcharclass}.
-However, this latter half does not exist (plain case), or not executed (\LaTeX~case) in \LuaTeX.
-\end{itemize}
-In other words,
-\begin{description}
-\item[plain \LuaTeX]
-Kanji nor kana characters cannot be used in
-a control word, in the default setting of plain \LuaTeX.
-\item[\LuaLaTeX]
-In recent (2015-10-01 or later) \LuaLaTeX, Kanji and kana characters in a control word is supported (these catcode are 11),
-but not fullwidth alphanumerics and several other characters.
-\end{description}
-
-This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja,
-since several control words containing Kanji or other fullwidth characters, such as
-\verb+\西暦+~or~\verb+\1年目西暦+ are used in \pTeX.
-Hence, \LuaTeX-ja have a counterpart of \texttt{unicode-letters.tex}
-for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.}
+To load a font as a Japanese font (for horizontal direction), you must use the
+\cs{jfont} instead of~\cs{font}, while
+\cs{jfont} admits the same syntax used in~\cs{font}.
+\LuaTeX-ja automatically loads \Pkg{luaotfload} package,
+so TrueType/OpenType fonts with features can be used for Japanese fonts:
 %</en>
 %<*ja>
-ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では,
-文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode}
-で指定することとなる.plain \XeTeX における \cs{catcode} の初期設定は\
-\texttt{unicode-letters.tex} 中に記述されており,plain \LuaTeX ではそれを
-元にした \texttt{luatex-unicode-letters.tex} を用いている.
-\LaTeX では \cs{catcode} の設定はカーネルに \texttt{unicode-letters.def} として統合され.
-このファイルを\XeLaTeX, \LuaLaTeX の両方が用いている.
-
-だが,\XeTeX における \cs{catcode} の初期設定と
-\LuaTeX におけるそれは一致していない:
-\begin{itemize}
- \item \texttt{luatex-unicode-letters.tex} の元になった\
-\texttt{unicode-letters.tex} が古い
- \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では
-\cs{XeTeXcharclass} の設定を行なっており,
-それによって漢字や仮名,および全角英数字の \cs{catcode} が11に設定されている.
-しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が
-まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな
-       い.
-\end{itemize}
-言い換えると,
-\begin{description}
- \item[plain \LuaTeX]  漢字や仮名を制御綴内に
-使用することはできない.
- \item[\LuaLaTeX] 最近の(2015-10-01以降の)
-\LuaLaTeX では漢字や仮名を制御綴内に
-使用することが可能になったが,全角英数字は相変わらず使用できない,
-\end{description}
-これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり,
-\LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは
-\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし,
-結果として\textbf{\XeTeX における初期設定と同じになるようにしている.}
+フォントを(横組用)和文フォントとして読み込むためには,\cs{jfont} を
+\ \cs{font} プリミティブの代わりに用いる.
+\cs{jfont} の文法は \cs{font} と同じである.
+\LuaTeX-jaは\Pkg{luaotfload}パッケージを自動的に読み込むので,
+TrueType/OpenTypeフォントにfeatureを指定したものを和文フォントとして用いる
+ことができる:
 %</ja>
-
-\begin{table}
- \centering\small
-%<en>\caption{Difference of the set of non-kanji JIS~X~0208 characters which can be used in a control word}
-%<ja>\caption{制御綴中に使用出来るJIS~X~0208非漢字の違い}
-%<en>\medskip
-\label{tab:kcat-diff}
-\def\D#1#2#3#4{%
-  {\fboxsep0pt\fcolorbox{cyan}{white}%
-  {\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})} %"
-\leavevmode\hbox to 0pt{\hss\begin{tabular}{cccccc}
-\toprule
-%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
-%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
-\midrule
-%\D 3000&1&1&N&N&Y\\
-\D 30FB&1&6&N&Y&N\\
-\D 309B&1&11&N&Y&N\\
-\D 309C&1&12&N&Y&N\\
-\D FF40&1&14&N&N&Y\\
-\D FF3E&1&16&N&N&Y\\
-\D FFE3&1&17&N&N&Y\\
-\D FF3F&1&18&N&N&Y\\
-%\D 30FD&1&19&N&Y&Y\\
-%\D 30FE&1&20&N&Y&Y\\
-%\D 309D&1&21&N&Y&Y\\
-%\D 309E&1&22&N&Y&Y\\
-\D 3003&1&23&N&N&Y\\
-\D 4EDD&1&24&N&Y&Y\\
-\D 3005&1&25&N&N&Y\\
-\D 3006&1&26&N&N&Y\\
-\D 3007&1&27&N&N&Y\\
-\D 30FC&1&28&N&Y&Y\\
-\D FF0F&1&31&N&N&Y\\
-\D FF3C&1&32&N&N&Y\\
-\bottomrule
-\end{tabular}\qquad
-\begin{tabular}{cccccc}
-\toprule
-%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
-%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
-\midrule
-\D FF5C&1&35&N&N&Y\\
-\D FF0B&1&60&N&N&Y\\
-\D FF1D&1&65&N&N&Y\\
-\D FF1C&1&67&N&N&Y\\
-\D FF1E&1&68&N&N&Y\\
-\D FF03&1&84&N&N&Y\\
-\D FF06&1&85&N&N&Y\\
-\D FF0A&1&86&N&N&Y\\
-\D FF20&1&87&N&N&Y\\
-\D 3012&2&9&N&N&Y\\
-\D 3013&2&14&N&N&Y\\
-\D FFE2&2&44&N&N&Y\\
-\D 212B&2&82&N&N&Y\\
-%<en>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Greek letters (row 6)}&Y&N&Y\\
-%<en>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Cyrillic letters (row 7)}&N&N&Y\\
-%<ja>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}ギリシャ文字(6区)}&Y&N&Y\\
-%<ja>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}キリル文字(7区)}&N&N&Y\\
-\bottomrule
-\end{tabular}\hss}\par
-\end{table}
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\tradgt={file:KozMinPr6N-Regular.otf:script=latn;%
+  +trad;-kern;jfm=ujis} at 14pt
+\tradgt 当/体/医/区
+\end{LTXexample}
 
 %<*en>
-\subsection{Non-kanji characters in a control word}
-Because the engine differ, so non-kanji JIS~X~0208 characters
-which can be used in a control word differ in \pTeX, in \upTeX,~and~in \LuaTeX-ja.
-\autoref{tab:kcat-diff} shows the difference.
-Except for four characters ``・'',~``゛'', ``゜'',~``゠'',
-\LuaTeX-ja admits more characters in a control word than \upTeX.
-
-Difference becomes larger, if we consider
-non-kanji JIS~X~0213 characters.
-For the detail, see \url{https://github.com/h-kitagawa/kct}.
+Note that the defined control sequence
+(\cs{tradgt} in the example above) using \cs{jfont} is not a
+\textit{font\_def} token,  but a macro.
+Hence the input like \verb+\fontname\tradgt+
+causes a error.  We denote control sequences which are defined in
+\cs{jfont} by <jfont\_cs>.
 %</en>
 %<*ja>
-\subsection{制御綴中に使用出来るJIS非漢字の違い}
-
-エンジンが異なるので,\pTeX, \upTeX, \LuaTeX-ja
-において制御綴中に使用可能なJIS~X~0208の文字は異なる.
-異なっているところだけを載せると,\autoref{tab:kcat-diff}のようになる.
-「・」「゛」「゜」「゠」を除けば,\LuaTeX-jaでは\upTeX より多くの文字が
-制御綴に使用可能になっている.
-
-JIS~X~0213の範囲に広げると,差異はさらに大きくなる.
-詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\
-\texttt{kct-out.pdf} などを参照すること.
+なお,\cs{jfont} で定義された制御綴(上の例だと \cs{tradgt})
+は\textit{font\_def}トークンではなくマクロである.従って,\verb+\fontname\tradgt+ のような
+入力はエラーとなる.以下では \cs{jfont} で定義された
+制御綴を<jfont\_cs>で表す.
 %</ja>
 
-
+\paragraph{JFM}
 %<*en>
-\section{Directions}
-\LuaTeX\ supports four $\Omega$-style directions: \texttt{TLT},~\texttt{TRT}, \texttt{RTT}
-and \texttt{LTL}.
-However, neither directions are not well-suited for typesetting Japanese vertically, hence we
-implemented vertical writing by rotating \texttt{TLT}-box by 90~degrees.
+a JFM has measurements of characters and
+glues/kerns that are automatically inserted for Japanese
+typesetting. The structure of JFM will be described in the next
+subsection. At the calling of \cs{jfont}, you must specify
+which JFM will be used for this font by the following keys:
 %</en>
 %<*ja>
-\section{縦組}
-\label{sec-direction}
-\LuaTeX 本体でも,$\Omega$・$\aleph$由来の機能として,複数の組方向をサポートしている.
-しかし,\LuaTeX がサポートするのは \texttt{TLT},~\texttt{TRT}, \texttt{RTT},~\texttt{LTL}\
-のみであり,日本語の縦組に使うのは望ましくない\footnote{%
-和文文字だけならば \texttt{RTT} を使えばなんとかなると思うが,
-欧文文字が入ってきた場合はうまくいかず,\texttt{RTR} という組方向が必要になる.
-}.そのため,\LuaTeX-jaでは横組(\texttt{TLT})で組んだボックスを回転させる方式で
-縦組を実装した.
+JFMは文字と和文組版で自動的に挿入される
+グルー/カーンの寸法情報を持っている.JFMの構造は次の節で述べる.
+\cs{jfont} 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで
+指定する必要がある:
 %</ja>
 
-%<ja>\subsection{サポートする組方向}
+
 \begin{table}[t]
-%<ja>\caption{\LuaTeX-ja のサポートする組方向}
-%<en>\caption{Directions supported by \LuaTeX-ja}
+%<en>\caption{Differences between horizontal JFMs shipped with \LuaTeX-ja}
+%<ja>\caption{\LuaTeX-ja に同梱されている横組用JFMの違い}
 %<en>\medskip
-\label{tab-dir}
+\label{tab-difjfm}
+\ltjsetparameter{jacharrange={+3}}
 \centering\small
-\def\obox#1{%
-  \setbox0=\hbox{\yoko\hbox{#1%
-  \large\ltjsetparameter{talbaselineshift=0pt}%
-  \vrule height 25pt width 0.4pt depth 15pt\kern-.2pt%
-  \raise25pt\hbox to 0pt{\hss\composite{*r^@{>>}}\hss}%
-  \raise-15pt\hbox to 0pt{\hss\composite{*l^@{>|}}\hss}\kern.2pt%
-  \vrule height.2pt depth.2pt width 60pt\hbox to 0pt{\hss\composite{*d^@{>}}\hss}\kern-60pt
-  \hbox to 60pt{\,銀は、Ag\hss}}}%
-  \raise\dimexpr 0.5\ltjgetdp0-0.5\ltjgetht0\box0%
-}
-%<*ja>
-\begin{tabular}{>{\bfseries}lcccc}
-\toprule
-&横組&縦組 &「dtou方向」&「utod方向」\\
-\midrule
-命令&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\
-字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\
-行送り方向&垂直下向き(↓)&水平左向き(←)&水平右向き(→)&水平左向き(←)\\
-使用する和文フォント&横組用(\cs{jfont})&縦組用(\cs{tfont})&
-\multicolumn{2}{c}{%
-  横組用(\cs{jfont})の$90^\circ$回転}\\[\smallskipamount]
-組版例\null $^*$ &\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\
-\noalign{\medskip}
-\bottomrule
-\end{tabular}
+\def\r#1#2{%
+  \hbox{\Large\vrule
+  \parbox[b]{7\zw}{%
+    \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+    ◆◆◆◆◆◆◆
+    ある日モモちゃんがお使いで迷子になって泣きました.
+  }\vrule}}
+\def\s#1#2{%
+  \Large
+  \parbox[b]{7\zw}{%
+    \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+    ちょっと!何
+  }}
+\def\t#1#2#3{\hbox to 0pt{\hss%
+  \setbox0=\hbox{\addjfontfeatures{YokoFeatures={JFM=#1}}\huge #3}%
+  \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
+  \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
+  \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+  \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+  \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
+{\Large\tabcolsep0pt
+\begin{tabular}{m{8\zw}m{8\zw}m{8\zw}}
+\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{jis}{black}&
+\leavevmode\hbox to 0pt{\r{jis}{black}\hss}\r{min}{red}&
+\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{min}{red}\\
+\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{jis}{black}&
+\leavevmode\hbox to 0pt{\s{jis}{black}\hss}\s{min}{red}&
+\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{min}{red}\\
+\leavevmode\qquad\t{ujis}{blue}{漢}\t{jis}{black}{漢}\qquad
+           \t{ujis}{blue}{っ}\t{jis}{black}{っ}&
+\leavevmode\qquad\t{jis}{black}{漢}\t{min}{red}{漢}\qquad
+           \t{jis}{black}{っ}\t{min}{red}{っ}&
+\leavevmode\qquad\t{ujis}{blue}{漢}\t{min}{red}{漢}\qquad
+           \t{ujis}{blue}{っ}\t{min}{red}{っ}\\
+\end{tabular}\par}
 
-\medskip\raggedright
-\def\R#1{%
-  \raise0.38\zw\hbox{%
-    \vrule height.2pt  depth.2pt width2\zw%
-    \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}%
-  }%
-}
-$^*$\ 幅(width),高さ(height),深さ(depth)の増加方向を,
-それぞれ「\R{>}」,「\R{>>}」,「\R{>|}」で表している.
-\raggedright
-%</ja>
+(\textcolor{blue}{Blue: \texttt{jfm-ujis.lua}},
+\textcolor{black}{Black: \texttt{jfm-jis.lua}},
+\textcolor{red}{Red: \texttt{jfm-min.lua}})
+\ltjsetparameter{jacharrange={-3}}
+\end{table}
 
+\begin{cslist}
+\item[jfm=<name>]
 %<*en>
-\begin{tabular}{>{\bfseries}lcccc}
-\toprule
-&horizontal (\emph{yoko}~direction)&vertical (\emph{tate}~direction)&%
-  \emph{dtou} direction&\emph{utod} direction\\
-\midrule
-Commands&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\
-Beginning of the page&Top&Right&Left&Right\\
-Beginning of the line&Left&Top&Bottom&Top\\
-Used Japanese font&horizontal (\cs{jfont})&vertical (\cs{tfont})&
-\multicolumn{2}{c}{%
-  horizontal ($90^\circ$ rotated)}\\[\smallskipamount]
-Example&\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\
-\noalign{\medskip}
-(Notation used in $\Omega$)&TLT&RTR, RTT&LBL&RTR\\
-\bottomrule
-\end{tabular}
+Specify the name of (horizontal) JFM.
+If specified JFM has not been loaded, \LuaTeX-ja search and load
+a file named \texttt{jfm-<name>.lua}.
 
-\medskip\raggedright
-\def\R#1{%
-  \raise0.38\zw\hbox{%
-    \vrule height.2pt  depth.2pt width2\zw%
-    \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}%
-  }%
-}
-\raggedright
+The following horizontal JFMs are shipped with \LuaTeX-ja:
 %</en>
-\end{table}
-
+%<*ja>
+用いる(横組用)JFMの名前を指定する.もし以前に指定されたJFMが読み込まれていなければ,
+\texttt{jfm-<name>.lua}を読み込む.以下の横組用JFMが\LuaTeX-jaには同梱されている:
+%</ja>
+\begin{description}
 %<*en>
-\LuaTeX-ja supports four directions, as shown in \autoref{tab-dir}.
-The second column (\emph{yoko} direction) is just horizontal writing,
-and the third column (\emph{tate} direction) is vertical writing.
-The fourth column (\emph{dtou} direction) is actually a hidden feature of \pTeX.
-We implemented this for debugging purpose.
-The fifth column (\emph{utod} direction) corresponds the ``\texttt{tate (math) direction}'' of \pTeX.
-
-Directions can be changed by \cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod},
-only when the current list is null. Also, the direction of a math formula is changed to
-\emph{utod}, when the direction outside the math formula is \emph{tate} (vertical writing).
+\item[\tt jfm-ujis.lua] A standard horizontal JFM in \LuaTeX-ja. This JFM is
+  based on \verb+upnmlminr-h.tfm+, a metric for UTF/OTF package that
+  is used in \upTeX. When you use the \Pkg{luatexja-otf} package, you should use this JFM.
 %</en>
-
 %<*ja>
-\LuaTeX-jaがサポートする組方向は\autoref{tab-dir}に示す4つである.
-4列目の \cs{dtou} は聞き慣れない命令だと思うが,
-実は\pTeX に同名の命令が(ドキュメントには書かれていないが)存在する.
-Down-TO-Upの意味なのだろう.\cs{dtou} を使用する機会はないだろうが,
-\LuaTeX-jaではデバッグ用に実装している.
-5列目の \cs{utod} は,\pTeX で言う「縦数式ディレクション」に相当するものである.
-
-組方向は,\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} をそれぞれ使用することで,
-現在作成中のリストやボックスが空の時にのみ変更可能である.
-また,縦組中の数式内のボックスは\pTeX と同じように組方向が \cs{utod} となる.
+\item[\tt jfm-ujis.lua] \LuaTeX-jaの標準JFMである.このJFMは\upTeX で
+  用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-h.tfm+ を
+  元にしている.\Pkg{luatexja-otf}パッケージを使うときはこのJFMを指定するべきである.
 %</ja>
-
 %<*en>
-\subsection{Boxes in different direction}
+\item[\tt jfm-jis.lua] A counterpart for \verb+jis.tfm+, ``JIS font
+  metric'' which is widely used in \pTeX. A major difference between
+  \texttt{jfm-ujis.lua} and this \texttt{jfm-jis.lua} is that
+  most characters under \texttt{jfm-ujis.lua} are square-shaped,
+  while that under \texttt{jfm-jis.lua} are horizontal
+  rectangles.
+%</en>
+%<*ja>
+\item[\tt jfm-jis.lua] \pTeX で広く用いられている「JISフォントメトリック」
+  \verb+jis.tfm+ に相当するJFMである.\texttt{jfm-ujis.lua} とこの
+  \texttt{jfm-jis.lua} の主な違いは,\texttt{jfm-ujis.lua} ではほとんどの文字が
+  正方形状であるのに対し,\texttt{jfm-jis.lua} では横長の長方形状であることと,
+  \texttt{jfm-ujis.lua} では「?」「!」の直後に半角空白が挿入されることである.
+%</ja>
+%<*en>
+\item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
+  of the default Japanese font metric shipped with \pTeX.
+%</en>
+%<*ja>
+\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM
+(\verb+min10.tfm+)に相当し,行末で文字が揃うようにするために「っ」など一部の文字幅が変わっ
+          ている.\verb+min10.tfm+ については\cite{min10}が詳しい.
+%</ja>
+\end{description}
+%<*en>
+The difference among these three~JFMs is  shown in \autoref{tab-difjfm}.
+%</en>
+%<*ja>
+これら3つのJFMの違いは\autoref{tab-difjfm}に示した.表中の文例の一部には,
+\cite{min10}の図3,~4のものを用いた.
+%</ja>
 
-As in \pTeX, one can use boxes of different direction in one document.
-The below is an example.
-\begin{LTXexample}
-ここは横組%     yoko
-\hbox{\tate %   tate
-  \hbox{縦組}%  tate
-  の中に
-  \hbox{\yoko 横組の内容}% yoko
-  を挿入する
-}
-また横組に戻る% yoko
+\begin{figure}
+\begin{LTXexample}[width=0.3\textwidth]
+\ltjsetparameter{differentjfm=both}
+\jfont\F=file:KozMinPr6N-Regular.otf:jfm=ujis
+\jfont\G=file:KozGoPr6N-Medium.otf:jfm=ujis
+\jfont\H=file:KozGoPr6N-Medium.otf:jfm=ujis;jfmvar=hoge
+\F ){\G 【】}( % halfwidth space
+   ){\H 『』}( % fullwidth space
+
+ほげ,{\G 「ほげ」}(ほげ)\par
+ほげ,{\H 「ほげ」}(ほげ)% pTeX-like
+
+\ltjsetparameter{differentjfm=paverage}
 \end{LTXexample}
+\caption{Example of \texttt{jfmvar} key}
+\label{fig:jfmvar}
+\end{figure}
 
-\autoref{tab-diffdir} shows how a box is arranged when
-the direction  inside the box and that outside the box differ.
+%<*en>
+\item[jfmvar=<string>]
+Sometimes there is a need that \ldots.
 %</en>
 %<*ja>
-\subsection{異方向のボックス}
+\item[jfmvar=<string>]
+標準では,JFMとサイズが同じで,
+  実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
+\autoref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが,
+JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
 
-縦組の中に「42」などの2桁以上の算用数字を横組で組むなど,
-異なる組方向を混在させることがしばしば行われる.
-組方向の混在も\pTeX と同じようにできる:
-\begin{LTXexample}
-ここは横組%     yoko
-\hbox{\tate %   tate
-  \hbox{縦組}%  tate
-  の中に
-  \hbox{\yoko 横組の内容}% yoko
-  を挿入する
-}
-また横組に戻る% yoko
+しかし,JFMとサイズが同じであっても,\texttt{jfmvar} キーの異なる
+2つの和文フォント,例えば\autoref{fig:jfmvar}で言う \cs{F} と \cs{H},
+は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て,
+かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば,
+\pTeX と似た状況で組版されることになる.
+%</ja>
+\end{cslist}
+
+\begin{figure}
+\begin{LTXexample}[pos=t]
+\newcommand\test{\vrule ダイナミックダイクマ\vrule\\}
+\jfont\KMFW = KozMinPr6N-Regular:jfm=prop;-kern at 17pt
+\jfont\KMFK = KozMinPr6N-Regular:jfm=prop at 17pt % kern is activated
+\jfont\KMPW = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;-kern at 17pt
+\jfont\KMPK = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;+kern at 17pt
+\begin{multicols}{2}
+\ltjsetparameter{kanjiskip=0pt}
+{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+
+\ltjsetparameter{kanjiskip=3pt}
+{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+\end{multicols}
 \end{LTXexample}
+\caption{Kerning information and \Param{kanjiskip}}
+\label{fig:kern-jfm}
+\end{figure}
 
-異なる組方向のボックスを配置した場合にどう組まれるかの仕様も,\pTeX を
-踏襲している.\autoref{tab-diffdir}に示す.
-%</ja>
+%<en>\paragraph{Using kerning information in a font}
+%<ja>\paragraph{ペアカーニング情報の使用}
+\label{para-kern}
+%<*en>
+Some fonts have information for inter-glyph spacing.
+\LuaTeX-ja 20140324.0 or later treats kerning spaces like an italic correction;
+any glue and/or kern from the JFM and a kerning space can coexist.
+See \autoref{fig:kern-jfm} for detail.
 
-\begin{table}[t]
-%<ja>\caption{異方向のボックスの配置}
-%<en>\caption{Boxes in different direction}
-%<en>\medskip
-\label{tab-diffdir}
- \centering\small\unitlength3mm
- \def\TATEeg{%
-   \hbox{\smash{\begin{picture}(0,0)(-2,0)
-     \thicklines
-     \polyline(-2,0)(-2,-7)(5,-7)(5,0)
-     \put(0,0){\circle*{0.3}}
-     \put(2.5,-4){\makebox(0,0){\hbox{\tate\bfseries \emph{tate}/\emph{utod}}}}
-     \put(0,0){\vector(1,0){5}} \put(2.5,-0.2){\makebox(0,0)[t]{$h_{\mathrm{T}}$}}
-     \put(0,0){\vector(-1,0){2}}\put(-1,-0.2){\makebox(0,0)[t]{$d_{\mathrm{T}}$}}
-     \put(0,0){\vector(0,-1){7}}\put(0.2,-3.5){\makebox(0,0)[l]{$w_{\mathrm{T}}$}}
-   \end{picture}}}%
- }
- \def\DTOUeg{%
-   \hbox{\smash{\begin{picture}(0,0)(-5,0)
-     \thicklines
-     \polyline(-5,0)(-5,7)(2,7)(2,0)
-     \put(0,0){\circle*{0.3}}
-     \put(-2.5,4){\makebox(0,0){\hbox{\dtou\bfseries \emph{dtou}}}}
-     \put(0,0){\vector(-1,0){5}} \put(-2.5,0.3){\makebox(0,0)[b]{$h_{\mathrm{D}}$}}
-     \put(0,0){\vector(1,0){2}}\put(1,0.3){\makebox(0,0)[b]{$d_{\mathrm{D}}$}}
-     \put(0,0){\vector(0,1){7}}\put(-0.2,3.5){\makebox(0,0)[r]{$w_{\mathrm{D}}$}}
-   \end{picture}}}%
- }
- \def\YOKOeg{%
-   \hbox{\smash{\begin{picture}(0,0)
-     \thicklines
-     \polyline(0,5)(7,5)(7,-2)(0,-2)
-     \put(4,2.5){\makebox(0,0){\hbox{\yoko\bfseries \emph{yoko}}}}
-     \put(0,0){\circle*{0.3}}
-     \put(0,0){\vector(0,1){5}} \put(0.3,2.5){\makebox(0,0)[l]{$h_{\mathrm{Y}}$}}
-     \put(0,0){\vector(0,-1){2}}\put(0.3,-1){\makebox(0,0)[l]{$d_{\mathrm{Y}}$}}
-     \put(0,0){\vector(1,0){7}}\put(3.5,0.2){\makebox(0,0)[b]{$w_{\mathrm{Y}}$}}
-   \end{picture}}}%
- }
-\begin{tabular}{ccc}
-\toprule
-%<ja>\emph{横組中に配置}&\emph{縦組中に配置}&%
-%<ja>\emph{組方向 \cs{dtou} 中に配置}\\
-%<en>\textbf{typeset in \emph{yoko} direction}
-%<en>&\textbf{typeset in \emph{tate} or \emph{utod} direction}
-%<en>&\textbf{typeset in \emph{dtou} direction}\\
-\midrule
- \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
-   \put(0,0){\line(1,0){3.8}}
-   \put(4,7){\TATEeg}
-   \put(11.2,0){\line(1,0){3.8}}
-%
-   \put(2,7){\line(1,0){1.8}}
-   \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}}
-   \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}}
-   \put(3,-2){\vector(0,1){2}}
-   \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}}
-%
-   \put(4,7.2){\line(0,1){1.8}}
-   \put(11,7.2){\line(0,1){1.8}}
-   \put(6,8){\vector(-1,0){2}}
-   \put(9,8){\vector(1,0){2}}
-   \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}}
-%
- \end{picture}\vspace{-\baselineskip}
-   \begin{align*}
-   W_{\mathrm{Y}} &= h_{\mathrm{T}}+d_{\mathrm{T}},\\
-   H_{\mathrm{Y}} &= w_{\mathrm{T}},\\
-   D_{\mathrm{Y}} &=0\,\mathrm{pt}
-   \end{align*}%
- }&
- \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
-   \put(7.5,-0.2){\line(0,-1){2.8}}
-   \put(4,2){\YOKOeg}
-   \put(7.5, 7.2){\line(0,1){3.8}}
-%
-   \put(2,7){\line(1,0){1.8}}
-   \put(2,0){\line(1,0){1.8}}
-   \put(3,5){\vector(0,1){2}}
-   \put(3,2){\vector(0,-1){2}}
-   \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}}
-%
-   \put(4,7.2){\line(0,1){1.8}}
-   \put(11,7.2){\line(0,1){1.8}}
-   \put(8,8){\vector(-1,0){0.5}\vector(1,0){3}}
-   \put(7,8){\vector(-1,0){3}\vector(1,0){0.5}}
-   \put(9.25,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}}
-   \put(5.75,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}}
-%
- \end{picture}\vspace{-\baselineskip}
-   \begin{align*}
-   W_{\mathrm{T}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\
-   H_{\mathrm{T}} &= w_{\mathrm{Y}}/2,\\
-   D_{\mathrm{T}} &= w_{\mathrm{Y}}/2
-   \end{align*}%
- }&
- \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
-   \put(11,-0.2){\line(0,-1){2.8}}
-   \put(4,2){\YOKOeg}
-   \put(11, 7.2){\line(0,1){3.8}}
-%
-   \put(2,7){\line(1,0){1.8}}
-   \put(2,0){\line(1,0){1.8}}
-   \put(3,5){\vector(0,1){2}}
-   \put(3,2){\vector(0,-1){2}}
-   \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}}
-%
-   \put(4,7.2){\line(0,1){1.8}}
-   \put(11,7.2){\line(0,1){1.8}}
-   \put(7.5,8){\vector(-1,0){3.5}\vector(1,0){3.5}}
-   \put(13,8){\vector(-1,0){2}}
-   \put(7.5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}}
-   \put(12,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}}
-%
- \end{picture}\vspace{-\baselineskip}
-   \begin{align*}
-   W_{\mathrm{D}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\
-   H_{\mathrm{D}} &= w_{\mathrm{Y}},\\
-   D_{\mathrm{D}} &= 0\,\mathrm{pt}
-   \end{align*}%
- }%
-\\\midrule
- \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
-   \put(0,0){\line(1,0){3.8}}
-   \put(4,0){\DTOUeg}
-   \put(11.2,0){\line(1,0){3.8}}
-%
-   \put(2,7){\line(1,0){1.8}}
-   \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}}
-   \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}}
-   \put(3,-2){\vector(0,1){2}}
-   \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}}
-%
-   \put(4,7.2){\line(0,1){1.8}}
-   \put(11,7.2){\line(0,1){1.8}}
-   \put(6,8){\vector(-1,0){2}}
-   \put(9,8){\vector(1,0){2}}
-   \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}}
-%
- \end{picture}\vspace{-\baselineskip}
-   \begin{align*}
-   W_{\mathrm{Y}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\
-   H_{\mathrm{Y}} &= w_{\mathrm{D}},\\
-   D_{\mathrm{Y}} &= 0\,\mathrm{pt}
-   \end{align*}%
- }&
- \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
-   \put(9,-0.2){\line(0,-1){2.8}}
-   \put(4,0){\DTOUeg}
-   \put(9, 7.2){\line(0,1){3.8}}
-%
-   \put(2,7){\line(1,0){1.8}}
-   \put(2,0){\line(1,0){1.8}}
-   \put(3,5){\vector(0,1){2}}
-   \put(3,2){\vector(0,-1){2}}
-   \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}}
-%
-   \put(4,7.2){\line(0,1){1.8}}
-   \put(11,7.2){\line(0,1){1.8}}
-   \put(6.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}}
-   \put(10,8){\vector(-1,0){1}\vector(1,0){1}}
-   \put(10,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}}
-   \put(6.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}}
-%
- \end{picture}\vspace{-\baselineskip}
-   \begin{align*}
-   W_{\mathrm{T}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\
-   H_{\mathrm{T}} &= d_{\mathrm{D}},\\
-   D_{\mathrm{T}} &= h_{\mathrm{D}}
-   \end{align*}%
- }&
- \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
-   \put(6,-0.2){\line(0,-1){2.8}}
-   \put(4,7){\TATEeg}
-   \put(6, 7.2){\line(0,1){3.8}}
-%
-   \put(2,7){\line(1,0){1.8}}
-   \put(2,0){\line(1,0){1.8}}
-   \put(3,5){\vector(0,1){2}}
-   \put(3,2){\vector(0,-1){2}}
-   \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}}
-%
-   \put(4,7.2){\line(0,1){1.8}}
-   \put(11,7.2){\line(0,1){1.8}}
-   \put(5,8){\vector(-1,0){1}\vector(1,0){1}}
-   \put(8.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}}
-   \put(5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}}
-   \put(8.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}}
-%
- \end{picture}\vspace{-\baselineskip}
-   \begin{align*}
-   W_{\mathrm{D}} &= w_{\mathrm{T}},\\
-   H_{\mathrm{D}} &= d_{\mathrm{T}},\\
-   D_{\mathrm{D}} &= h_{\mathrm{T}}
-   \end{align*}%
- }\\
-\bottomrule
-\end{tabular}
+Note that in \cs{setmainjfont} etc.\ which are provided by \Pkg{luatexja-fontspec}
+package, kerning option is set \emph{off} (\texttt{Kerning=Off}) by default,
+because of the compatibility with previous versions of \LuaTeX-ja.
+%</en>
+%<*ja>
+いくつかのフォントはグリフ間のスペースについての情報を持っている.
+このカーニング情報は以前の\LuaTeX-ja とはあまり相性が良くなかったが,
+バージョン20140324.0以降ではカーニングによる空白はイタリック補正と同様に扱うことになっている.
+つまり,カーニング由来の空白とJFM由来のグルー・カーンは同時に入りうる.
+\autoref{fig:kern-jfm}を参照.
+\begin{itemize}
+ \item \emph{\cs{jfont} や,
+NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では
+カーニング情報は標準で使用する}ことになっているようである.
+言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
+\begin{lstlisting}
+\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
+\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
+\end{lstlisting}
+のように,\texttt{-kern} という指定を自分で追加しなければいけない.
+ \item
+一方,\emph{\Pkg{luatexja-fontspec} の提供する \cs{setmainjfont}\
+などの命令の標準設定ではカーニング情報は使用しない}(\texttt{Kerning=Off})
+ことになっている.これは以前のバージョンの\LuaTeX-jaとの互換性のためである.
+\end{itemize}
+%</ja>
+
+%<*ja>
+\paragraph{\texttt{extend}と\texttt{slant}}
+OpenType font featureと見かけ上同じような形式で指定できるものに,
+\begin{description}
+\item[\texttt{extend=}<extend>] 横方向に<extend>倍拡大する.
+\item[\texttt{slant=}<slant>] <slant>に指定された割合だけ傾ける.
+\end{description}
+の2つがある.
+\texttt{extend}や\texttt{slant}を指定した場合は,それに応じたJFMを指定すべきである%
+\footnote{\LuaTeX-jaでは,これらに対するJFMを特に提供することはしない予定である.}.
+例えば,次の例では無理やり通常のJFMを使っているために,文字間隔やイタリック補正量が
+正しくない:
+%</ja>
+%<*en>
+\paragraph{\texttt{extend} and \texttt{slant}}
+The following setting can be specified as OpenType font features:
+\begin{cslist}[style=standard]
+\item[\texttt{extend=}<extend>] expand the font horizontally by <extend>.
+\item[\texttt{slant=}<slant>] slant the font.
+\end{cslist}
+Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
+settings; you have to write new JFMs on purpose.
+For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence
+letter-spacing and the width of italic correction are not correct:
+%</en>
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\E=KozMinPr6N-Regular:extend=1.5;jfm=ujis;-kern
+\E あいうえお
+
+\jfont\S=KozMinPr6N-Regular:slant=1;jfm=ujis;-kern
+\S あいう\/ABC
+\end{LTXexample}
+
+%<*ja>
+\paragraph{\texttt{ltjksp} 指定}
+\label{pg:ltjksp}
+\LuaTeX-ja標準では,
+JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって,
+「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が
+同じ場所に挿入される」という状況が起こりうる.
+この機能を無効化し,バージョン20150922.0以前と同じような組版を得るためには
+他のOpenType機能と同じように\ \texttt{-ltjksp}\ 指定を行えば良い.
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+
+\jfont\G=file:KozMinPr6N-Regular.otf%
+  :jfm=ujis;-ltjksp at 9.2487pt
+\G\leavevmode%
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\end{LTXexample}
+なお,
+\begin{lstlisting}
+ \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt
+\end{lstlisting}
+のように \texttt{+ltjksp} 指定を行った場合は,\texttt{kanjiskip\_natural} など
+3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は,
+最後に指定したものが有効となる.
+%</ja>
+
+
+%<en>\subsection{\cs{tfont}}
+%<ja>\subsection{\cs{tfont} 命令}
+
+
+\begin{comment}
+  {\catcode`\<=12\catcode`\>=12
+\begin{table}[t]
+%<en>\caption{Differences between vertical JFMs shipped with \LuaTeX-ja}
+%<ja>\caption{\LuaTeX-ja に同梱されている縦組用 JFM の違い}
+%<en>\medskip
+\label{tab-difjfm-tate}
+\ltjsetparameter{jacharrange={+3}}
+\small
+\def\r#1#2{%
+  \hbox{\tate\Large\vrule
+  \parbox{7\zw}{%
+    \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+    ◆◆◆◆◆◆◆
+    ある日モモちゃんが「お使い」で迷子になって泣きました。
+  }\vrule}}
+\def\s#1#2{%
+  \hbox{\tate\Large
+  \parbox{7\zw}{%
+    \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+    ちょっと!何
+  }}}
+\def\t#1#2#3{\hbox to 0pt{\hss%
+  \setbox0=\hbox{\addjfontfeatures{TateFeatures={JFM=#1}}\huge #3}%
+  \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
+  \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
+  \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+  \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+  \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
+
+\begin{minipage}{.7\textwidth}
+\centering
+\leavevmode\hbox to 0pt{\r{ujisv}{blue}\hss}\r{tmin}{red}\quad
+\leavevmode\hbox to 0pt{\s{ujisv}{blue}\hss}\s{tmin}{red}\quad
+\raise4\zw\hbox{\tate\Large\t{ujisv}{black}{漢}\t{tmin}{red}{漢}\qquad
+           \t{ujisv}{black}{っ}\t{tmin}{red}{っ}}
+\end{minipage}%
+\begin{minipage}{.3\textwidth}
+\textcolor{blue}{Blue: \texttt{jfm-ujisv.lua}}\\
+\textcolor{red}{Red: \texttt{jfm-tmin.lua}}
+\end{minipage}
+\ltjsetparameter{jacharrange={-3}}
 \end{table}
+}
+\end{comment}
 
+%<*en>
+\cs{tfont} loads a font as a Japanese font for vertical direction.
+This command admits the same syntax used in \cs{font}~and~\cs{jfont}.
+A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont}:
+\begin{itemize}
+ \item OpenType Feature~\texttt{vrt2}%
+  \footnote{If the font does not define \texttt{vrt2} feature,
+       use \texttt{vert} instead.} is automatically activated,
+  unless \texttt{vert}~and//or~\texttt{vrt2} are explicitly activated
+  or deactivated (as the second line in the example below).
+\begin{lstlisting}
+\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
+\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\U=file:ipaexm.ttf:jfm=ujisv
+    % vert is automatically activated, since this font does not have vrt2
+\end{lstlisting}
+ \item Sometimes \texttt{vert} and/or \texttt{vrt2} are not activated
+ while one specified activation of these feature.
+ This is because the font does not define these features in current combination of
+ script~tag and language~system~identifier.
+
+ In this situation, \LuaTeX-ja performs all replacements which is defined in~\texttt{vert}
+ feature for \emph{some} scripts for \emph{some} languages.
+ \item Furthermore, a glyph is automatically rotated 90~degrees,
+  if it is not replaced by \texttt{vert} feature for \emph{any} script
+  for \emph{any} language, and if it is marked as `r''~or~``Tr'' in UAX~\#50.
+ \item One have to specify the name of vertical JFM in  \texttt{jfm=<name>}.
+\LuaTeX-ja ships following vertical JFMs:
+\begin{description}
+\item[\tt jfm-ujisv.lua] A standard vertical JFM in \LuaTeX-ja. This JFM is
+  based on \verb+upnmlminr-v.tfm+, a metric for UTF/OTF package that
+  is used in \upTeX.
+\item[\tt jfm-tmin.lua] A counterpart for \verb+tmin10.tfm+, which is one
+  of the default Japanese font metric shipped with \pTeX.
+\end{description}
+\end{itemize}
+%</en>
+%<*ja>
+\cs{tfont} はフォントを縦組用の和文フォントとして読み込む命令であり,
+\cs{tfont} の文法は \cs{jfont} と同じである.
+\cs{tfont} で定義された縦組用和文フォントは,
+以下の点が \cs{jfont} による横組用和文フォントとは異なる:
+\begin{itemize}
+ \item 明示的に \texttt{vert}, \texttt{vrt2}(のいずれか)の
+  有効・無効を指定した場合を除き,自動的に OpenType feature~\texttt{vrt2} の有効化が
+  指定されたものとみなされる
+ \footnote{もしフォントが\texttt{vrt2}を定義していなかった場合,代わりに
+ \texttt{vert}を用いる.}.
+\begin{lstlisting}
+\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
+\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\U=file:ipaexm.ttf:jfm=ujisv
+    % vert is automatically activated, since this font does not have vrt2
+\end{lstlisting}
+ \item \texttt{vert}, \texttt{vrt2} の少なくとも一つの有効を指定した場合にも関わらず,
+  script tagとlanguage system identifierの値の組み合わせによって
+  実際には有効にならなかった場合,\LuaTeX-jaは
+ \begin{quote}
+   どれかのscript,~languageで定義されている\texttt{vert}による
+   (単一グリフから単一グリフへの)置換を全部適用する
+ \end{quote}
+  という挙動を取る\footnote{%
+  例えば,Windows~7に付属しているSimHeiでは,\texttt{vert}はScriptが\texttt{hani},
+  Languageが\texttt{CHN}という状況でのみ定義されている.しかし,\Pkg{luaotfload}では
+  このscript,~languageの組み合わせを指定することはできないので,
+  \Pkg{luaotfload}そのままでは\texttt{vert}を適用させることはできない.
+ }.
+ \item さらに,「いかなるscript,~languageでも\texttt{vert}により置換されない」グリフ
+  のうち,UAX~\#50で``r''もしくは``Tr''と指定されているものは90度自動回転させる.
+ \item \ref{ssec-math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
+ \item \texttt{jfm=<name>}\ の部分には縦組用JFMを指定する.
+以下の縦組用JFMが\LuaTeX-jaには同梱されている.%おり,違いを\autoref{tab-difjfm-tate}に示した.
+\begin{description}
+\item[\tt jfm-ujisv.lua] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で
+  用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-v.tfm+ を
+  元にしている.
+\item[\tt jfm-tmin.lua] \pTeX に同梱されているデフォルトの和文用縦組TFM
+  である \verb+tmin10.tfm+ に相当し,\texttt{min10.tfm} と同様に
+  「っ」など一部の文字幅が狭められている.
+\end{description}
+\end{itemize}
 
+なお,\pTeX では,\cs{font},~\cs{jfont},~\cs{tfont}のどれでも欧文フォント・横組用和文フォン
+ト・縦組用和文フォントの定義が可能であったが,\LuaTeX-jaではそうでないので注意.
+%</ja>
 
+%<en>\subsection{Prefix \texttt{psft}}
+%<ja>\subsection{\texttt{psft}プリフィックス}
+\label{ssec-psft}
 %<*en>
-\paragraph{\cs{wd} and direction}
-In \pTeX, \cs{wd},~\cs{ht},~\cs{dp} means the dimensions of a box register
-\emph{with respact to the current direction}.
-This means that the value of \cs{wd0} etc.\ might differ when the current direction is
-different, even if \cs{box0} stores the same box.
-However, this no longer applies in \LuaTeX-ja.
+Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which
+are introduced in the \Pkg{luaotfload} package,
+\LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \cs{jfont} (and~\cs{font}),
+to specify a ``name-only'' Japanese font which
+will not be embedded to PDF.
+Note that these non-embedded fonts under current \LuaTeX\ has Identity-H encoding,
+and this violates the standard ISO32000-1:2008~(\cite{pdfstd}).
+
+\emph{OpenType font features, such as ``{\tt +jp90}'',
+have no meaning in name-only fonts using ``{\tt psft:}''\ prefix,
+because we can't expect what fonts are actually used by the PDF reader.}
+Note that \texttt{extend}~and~\texttt{slant} settings (see~above) are supported
+with \texttt{psft} prefix, because they are only simple linear transformations.
+%</en>
+%<*ja>
+\Pkg{luaotfload}で使用可能になった
+\texttt{file:}\ と \texttt{name:}\ のプリフィックスに加えて,
+\cs{jfont}(と \cs{font} プリミティブ)では
+\texttt{psft:}プリフィックスを用いることができる.
+このプリフィックスを用いることで,PDFには埋め込まれない「名前だけの」
+和文フォントを指定することができる.
+なお,現行の\LuaTeX で非埋め込みフォントを作成するとPDF内でのエンコーディングが
+Identity-Hとなり,PDFの標準規格ISO32000-1:2008~(\cite{pdfstd})に非準拠になってしまう
+ので注意してほしい.
+
+\emph{\texttt{psft} プリフィックスの下では
+\texttt{+jp90} などのOpenType font featureの効力はない.
+非埋込フォントをPDFに使用すると,実際にどのようなフォントが
+表示に用いられるか予測できないからである.}\
+\texttt{extend} と \texttt{slant} 指定は単なる変形のため
+\texttt{psft} プリフィックスでも使用可能である.
+%</ja>
 
-\begin{LTXexample}
-% yoko direction
-\setbox0=\hbox to 20pt{foo}
-\the\wd0,~\hbox{\tate\vrule\the\wd0}
-\wd0=100pt
-\the\wd0,~\hbox{\tate \the\wd0}
-\end{LTXexample}
+%<en>\paragraph{\texttt{cid} key}
+%<ja>\paragraph{\texttt{cid}キー}
+\label{para-cid}
 
-To access box dimensions \emph{with respect to current direction},
-one have to use the following commands instead of \cs{wd} wtc.
-\begin{cslist}
+%<*en>
+The default font defined by using \texttt{psft:} prefix is for Japanese typesetting;
+it is Adobe-Japan1-6 CID-keyed font.
+One can specify \texttt{cid} key to use other CID-keyed non-embedded fonts
+for Chinese or Korean typesetting.
+%</en>
+%<*ja>
+標準で\texttt{psft:}プリフィックスで定義されるフォントは日本語用のもので
+あり,Adobe-Japan1-6のCIDに対応したものとなる.しかし,\LuaTeX-jaは中国語
+の組版にも威力を発揮することが分かり,日本語フォントでない非埋込フォント
+の対応も必要となった.そのために追加されたのが\texttt{cid}キーである.
 
- \item[\cs{ltjgetwd}<num>\textrm{, }\cs{ltjgetht}<num>\textrm{, }%
-  \cs{ltjgetdp}<num>]
-These commands return \emph{an internal dimension} of \cs{box<num>} with respect to
-the current direction. One can use these in \cs{dimexpr} primitive, as the followings.
-\begin{lstlisting}
-\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701
+\texttt{cid}キーに値を指定すると,そのCIDを持った非埋込フォントを定義することができる:
+%</ja>
+\begin{lstlisting}[numbers=left]
+\jfont\testJ={psft:Ryumin-Light:cid=Adobe-Japan1-6;jfm=jis}     % Japanese
+\jfont\testD={psft:Ryumin-Light:jfm=jis}                        % default value is Adobe-Japan1-6
+\jfont\testC={psft:AdobeMingStd-Light:cid=Adobe-CNS1-6;jfm=jis} % Traditional Chinese
+\jfont\testG={psft:SimSun:cid=Adobe-GB1-5;jfm=jis}              % Simplified Chinese
+\jfont\testK={psft:Batang:cid=Adobe-Korea1-2;jfm=jis}           % Korean
 \end{lstlisting}
-The following is an example.
-\begin{LTXexample}[width=0.3\textwidth]
-\parindent0pt
-\setbox32767=\hbox{\yoko よこぐみ}
-\fboxsep=0mm\fbox{\copy32767}
-\vbox{\hsize=20mm
-\yoko YOKO \the\ltjgetwd32767, \\
-  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
-\vbox{\hsize=20mm\raggedleft
-\tate TATE \the\ltjgetwd32767, \\
-  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
-\vbox{\hsize=20mm\raggedleft
-\dtou DTOU \the\ltjgetwd32767, \\
-  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
-\end{LTXexample}
+%<*en>
+Note that the code above specifies \texttt{jfm-jis.lua}, which is for Japanese fonts,
+as JFM for Chinese and Korean fonts.
+%</en>
+%<*ja>
+上のコードでは中国語・韓国語用フォントに対してもJFMに
+日本語用の\texttt{jfm-jis.lua}を指定しているので注意されたい.
+%</ja>
 
- \item[\cs{ltjsetwd}<num>=<dimen>\textrm{, }\cs{ltjsetht}<num>=<dimen>\textrm{, }%
-  \cs{ltjsetdp}<num>=<dimen>]
-These commands set the dimension of \cs{box<num>}. One does not need
-       to group the argument <num>; four calls of \cs{ltjsetwd} below have the same meaning.
+%<*en>
+At present, \LuaTeX-ja supports only 4 values written in the sample code above.
+Specifying other values, e.g.,
+%</en>
+%<*ja>
+今のところ,\LuaTeX-jaは上のサンプルコード中に書いた4つの値しかサポートしていない.
+%</ja>
 \begin{lstlisting}
-\ltjsetwd42 20pt,  \ltjsetwd42=20pt,  \ltjsetwd=42 20pt,  \ltjsetwd=42=20pt
+\jfont\test={psft:Ryumin-Light:cid=Adobe-Japan2;jfm=jis}
 \end{lstlisting}
-
-\end{cslist}
+%<*en>
+produces the following error:
 %</en>
 %<*ja>
-\paragraph{\cs{wd} 達と組方向}
-ボックスレジスタ \cs{box}<num> にセットされているボックスの幅・高さ・深さの取得や
-変更にはそれぞれ \cs{wd},~\cs{ht},~\cs{dp} プリミティブを用いるのであった.
-\pTeX ではこれらのプリミティブは,「現在の組方向におけるボックスの寸法」を指すもので,
-同じボックスに対しても現在の組方向によって返る値は異なるもであった.
-
-\LuaTeX-jaにおいては状況が異なり,\cs{wd},~\cs{ht},~\cs{dp} が返す値は
-現在の組方向には依存しない.下の例のように,横組のボックスが格納されていれば
-\cs{wd}等は常に「横組におけるボックスの寸法」を意味する.
-
-\begin{LTXexample}
-% yoko direction
-\setbox0=\hbox to 20pt{foo}
-\the\wd0,~\hbox{\tate\vrule\the\wd0}
-\wd0=100pt
-\the\wd0,~\hbox{\tate \the\wd0}
-\end{LTXexample}
-
-\pTeX のように現在の組方向に応じたボックスの寸法の取得・設定を行うには,
-代わりに次の命令を使用する.
+のようにそれら以外の値を指定すると,エラーが発生する:
+%</ja>
+\begin{lstlisting}[numbers=left]
+! Package luatexja Error: bad cid key `Adobe-Japan2'.
 
-\begin{cslist}
+See the luatexja package documentation for explanation.
+Type  H <return>  for immediate help.
+<to be read again>
+                   \par
+l.78
 
- \item[\cs{ltjgetwd}<num>\textrm{, }\cs{ltjgetht}<num>\textrm{, }%
-  \cs{ltjgetdp}<num>]
-現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため,
-\begin{lstlisting}
-\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701
+? h
+I couldn't find any non-embedded font information for the CID
+`Adobe-Japan2'. For now, I'll use `Adobe-Japan1-6'.
+Please contact the LuaTeX-ja project team.
+?
 \end{lstlisting}
-のように \cs{wd}<num> の代わりとして扱うことができる.
-使用例は以下の通りである.
-\begin{LTXexample}[width=0.3\textwidth]
-\parindent0pt
-\setbox32767=\hbox{\yoko よこぐみ}
-\fboxsep=0mm\fbox{\copy32767}
-\vbox{\hsize=20mm
-\yoko YOKO \the\ltjgetwd32767, \\
-  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
-\vbox{\hsize=20mm\raggedleft
-\tate TATE \the\ltjgetwd32767, \\
-  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
-\vbox{\hsize=20mm\raggedleft
-\dtou DTOU \the\ltjgetwd32767, \\
-  \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
-\end{LTXexample}
 
- \item[\cs{ltjsetwd}<num>=<dimen>\textrm{, }\cs{ltjsetht}<num>=<dimen>\textrm{, }%
-  \cs{ltjsetdp}<num>=<dimen>]
-現在の組方向に応じたボックスの寸法の設定を行う.\cs{afterassignment} を2回利用して
-実装しているので,次の4通りは全て同じ意味である.
+%<en>\subsection{Structure of a JFM file}
+%<ja>\subsection{JFMファイルの構造}
+\label{ssec-jfm-str}
+%<en>A JFM file is a Lua script which has only one function call:
+%<ja>JFMファイルはただ一つの関数呼び出しを含むLuaスクリプトである:
 \begin{lstlisting}
-\ltjsetwd42 20pt,  \ltjsetwd42=20pt,  \ltjsetwd=42 20pt,  \ltjsetwd=42=20pt
+luatexja.jfont.define_jfm { ... }
 \end{lstlisting}
+%<*en>
+Real data are stored in the table which indicated above by
+\verb+{ ... }+.  So, the rest of this subsection are devoted to describe the
+structure of this table.  Note that all lengths in a JFM file are
+floating-point numbers in design-size unit.
+%</en>
+%<*ja>
+実際のデータは上で \verb+{ ... }+ で示されたテーブルの中に格納されている.
+以下ではこのテーブルの構造について記す.
+なお,JFMファイル中の長さは全てdesign-sizeを単位とする浮動小数点数であることに
+注意する.
+%</ja>
 
-設定値は「横組」「縦組及びutod方向」「dtou方向」
-の3種ごとに独立して記録される.参考として,Gitリポジトリ内の
-             \verb+test/test55-boxdim_diffdir.{tex,pdf}+ を挙げておく.
+\begin{cslist}[style=standard]
 
-\end{cslist}
-%</ja>
+\item[version=<version>]
+%<en>(optional, default value is~1)
+%<ja>(任意,既定値は1)
 
 %<*en>
-\subsection{Getting current direction}
-The \Param{direction} parameter returns the current direction, and
-the \Param{boxdir} parameter (with the argument <num>)
-returns the direction of a box register \cs{box}<num>.
-The returned value of these parameters are a \emph{string}:
-\begin{center}
-\small
-\begin{tabular}{>{\bfseries}lccccc}
-\toprule
-Direction&\emph{yoko}&\emph{tate}&\emph{dtou}&\emph{utod}&(empty)\\
-\midrule
-Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\
-\bottomrule
-\end{tabular}
-\end{center}
-\begin{LTXexample}[width=0.3\textwidth]
-\leavevmode\def\DIR{\ltjgetparameter{direction}}
-\hbox{\yoko \DIR}, \hbox{\tate\DIR},
-\hbox{\dtou\DIR}, \hbox{\utod\DIR},
-\hbox{\tate$\hbox{tate math: \DIR}$}
+The version JFM. Currently 1,~2,~and,~3 are supported
+%</en>
+%<*ja>
+JFMのバージョン.1,~2,~3がサポートされる.
+%</ja>
+  
+\item[dir=<direction>]
+%<en>(required)
+%<ja>(必須)
 
-\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2}
-\end{LTXexample}
+%<*en>
+The direction of JFM. \texttt{'yoko'}~(horizontal)
+or \texttt{'tate'}~(vertical) are supported.
 %</en>
 %<*ja>
-\subsection{組方向の取得}
-「現在の組方向」や「<num>番のボックスの組方向」は,
-\pTeX では \cs{ifydir} や \cs{ifybox}<num> といった条件判断文を使って
-判断することができた.
-しかし,\LuaTeX-jaはあくまでも\TeX マクロとLuaコードで
-記述されており,それでは新たな条件判断命令を作るのは難しい.
+JFMの書字方向.\texttt{'yoko'}(横組)と \texttt{'tate'}(縦組)がサポートされる.
+%</ja>
 
-\LuaTeX-jaでは,\Param{direction}パラメータで現在の組方向を,
-\Param{boxdir}パラメータ(と追加の引数<num>)によって
-\cs{box}<num>の組方向をそれぞれ取得できるようにした.
-戻り値は文字列である:
-\begin{center}
-\small
-\begin{tabular}{>{\bfseries}lccccc}
-\toprule
-組方向&\emph{横組}&\emph{tate縦組}&\emph{dtou方向}&\emph{utod方向}&(未割り当て)\\
-\midrule
-戻り値&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\
-\bottomrule
-\end{tabular}
-\end{center}
+\item[zw=<length>]
+%<en>(required)
+%<ja>(必須)
 
-\begin{LTXexample}[width=0.3\textwidth]
-\leavevmode\def\DIR{\ltjgetparameter{direction}}
-\hbox{\yoko\DIR}, \hbox{\tate\DIR},
-\hbox{\dtou\DIR}, \hbox{\utod\DIR},
-\hbox{\tate$\hbox{tate math: \DIR}$}
+%<en>The amount of the length of the ``full-width''.
+%<*ja>
+「全角幅」の長さ.この量が \cs{zw} の長さとなる.\pTeX では
+「全角幅」\texttt{1zw} は「文字クラス0の文字」の幅と決められていたが,
+\LuaTeX-jaではここで指定する.
+%</ja>
 
-\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2}
-\end{LTXexample}
+\item[zh=<length>]
+%<en>(required)
+%<ja>(必須)
 
-これらを用いれば,例えば
-\pTeX の \cs{ifydir},~\cs{ifybox200} と同等の条件判断を
-\begin{lstlisting}
-\ifnum\ltjgetparameter{direction}=4
-\ifnum\ltjgetparameter{boxdir}{200}=4
-\end{lstlisting}
-のように行うことができる.
-\cs{iftdir} は少々面倒であるが,8で割った余りが3であるか否かを判断すれば良いから
-\begin{lstlisting}
-\ifnum\numexpr
-  \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3
-\end{lstlisting}
-とすればよい.
+%<en>The amount of the ``full-height'' (height + depth).
+%<*ja>
+「全角高さ」(height + depth)の長さ.通常は全角幅と同じ長さになるだろう.
+\pTeX では 「全角高さ」\texttt{1zh} は「文字クラス0の文字」の高さと深さの和と決められていたが,
+\LuaTeX-jaではここで指定する.
 %</ja>
 
+\item[kanjiskip=\{<natural>, <stretch>, <shrink>\}]
+%<en>(optional)
+%<ja>(任意)
+
 %<*en>
-\subsection{Overridden box primitives}
-To cope with multiple directions, the following primitives are
-overridden by \LuaTeX-ja, using~\verb+\protected\def+.
-\begin{cslist}[style=standard]
- \item[\cs{unhbox}<num>\textrm{, }\cs{unvbox}<num>\textrm{, }\cs{unhcopy}<num>\textrm{, }\cs{unvcopy}<num>]
- \item[\cs{vadjust}\{<material>\}]
- \item[\cs{insert}<number>\{<material>\}]
- \item[\cs{lastbox}]
- \item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
- \item[\cs{vcenter}]
-\end{cslist}
+This field specifies the ``ideal'' amount of \Param{kanjiskip}. As noted
+            in Subsection~\ref{subs-kskip}, if the parameter
+            \Param{kanjiskip} is \cs{maxdimen}, the value specified
+            in this field is actually used (if this field is not specified in
+            JFM, it is regarded as 0\,pt). Note that <stretch> and <shrink>
+            fields are in design-size unit too.
 %</en>
 %<*ja>
-\subsection{プリミティブの再定義}
-異なる組方向に対応するために,以下に挙げるプリミティブは
-\LuaTeX-jaによる前処理もしくは後処理が行われるように
-\ \verb+\protected\def+ により再定義してある.
-
-\begin{cslist}
- \item[\cs{unhbox}<num>\textrm{, }\cs{unvbox}<num>\textrm{, }\cs{unhcopy}<num>\textrm{, }\cs{unvcopy}<num>]
- ボックスの組方向が現在のリストと異なる場合は事前にエラーメッセージを出力する.
- \pTeX と異なり,エラーを無視して無理矢理 \cs{unhbox}, \cs{unvbox} を
- 続行させることもできるが,その場合の組版結果は保証しない.
- \item[\cs{vadjust}\{<material>\}] 一旦プリミティブ本来の挙動を行う.その後,<material>の組方向が
- 周囲の垂直リストの組方向と一致しない場合にエラーを出力し,
- 該当の \cs{vadjust} を無効にする.
- \item[\cs{insert}<number>\{<material>\}]
- 一旦プリミティブ本来の挙動を行い,その後<material>内の各ボックス・罫線の直前に組方向を示
-             すdirection whatsitを挿入する.
- \item[\cs{lastbox}] ボックスの「中身」を現在の組方向に合わせるためのノード
-             (\textit{dir\_box}という)を必要ならば除去し,
- 正しく「中身」のボックスが返されるように前処理をする.
- \item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
- 一方,こちらでは必要に応じて\textit{dir\_box}を作成する前処理を追加している.
-\end{cslist}
+理想的な\Param{kanjiskip}の量を指定する.\ref{subs-kskip}節で述べたように,
+もし\Param{kanjiskip}が \cs{maxdimen} の値ならば,このフィールドで指定された
+値が実際には用いられる(指定なしは0\,ptとして扱われる).<stretch>と<shrink>のフィールドもdesign-size
+が単位であることに注意せよ.
 %</ja>
 
-%<en>\section{Font Metric and Japanese Font}
-%<ja>\section{フォントメトリックと和文フォント}
-%<en>\subsection{\cs{jfont}}
-%<ja>\subsection{\cs{jfont} 命令}
-\label{ssec-jfont}
+\item[xkanjiskip=\{<natural>, <stretch>, <shrink>\}]
+%<en>(optional)
+%<ja>(任意)
 
 %<*en>
-To load a font as a Japanese font (for horizontal direction), you must use the
-\cs{jfont} instead of~\cs{font}, while
-\cs{jfont} admits the same syntax used in~\cs{font}.
-\LuaTeX-ja automatically loads \Pkg{luaotfload} package,
-so TrueType/OpenType fonts with features can be used for Japanese fonts:
+Like the \texttt{kanjiskip} field, this field specifies the ``ideal''
+            amount of \Param{xkanjiskip}.
 %</en>
 %<*ja>
-フォントを(横組用)和文フォントとして読み込むためには,\cs{jfont} を
-\ \cs{font} プリミティブの代わりに用いる.
-\cs{jfont} の文法は \cs{font} と同じである.
-\LuaTeX-jaは\Pkg{luaotfload}パッケージを自動的に読み込むので,
-TrueType/OpenTypeフォントにfeatureを指定したものを和文フォントとして用いる
-ことができる:
+\texttt{kanjiskip}フィールドと同様に,\Param{xkanjiskip}の理想的な量を
+指定する.
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\tradgt={file:KozMinPr6N-Regular.otf:script=latn;%
-  +trad;-kern;jfm=ujis} at 14pt
-\tradgt 当/体/医/区
-\end{LTXexample}
+\end{cslist}
 
 %<*en>
-Note that the defined control sequence
-(\cs{tradgt} in the example above) using \cs{jfont} is not a
-\textit{font\_def} token,  but a macro.
-Hence the input like \verb+\fontname\tradgt+
-causes a error.  We denote control sequences which are defined in
-\cs{jfont} by <jfont\_cs>.
+\paragraph{Character classes}
+Besides from above fields, a JFM file have several sub-tables those
+indices are natural numbers.  The table indexed by~$i\in\omega$ stores
+information of \emph{character class}~$i$. At least, the character class~0 is
+always present, so each JFM file must have a sub-table whose index is
+\texttt{[0]}.  Each sub-table (its numerical index is denoted by $i$) has
+the following fields:
 %</en>
 %<*ja>
-なお,\cs{jfont} で定義された制御綴(上の例だと \cs{tradgt})
-は\textit{font\_def}トークンではなくマクロである.従って,\verb+\fontname\tradgt+ のような
-入力はエラーとなる.以下では \cs{jfont} で定義された
-制御綴を<jfont\_cs>で表す.
+\paragraph{文字クラス}
+上記のフィールドに加えて,JFMファイルはそのインデックスが自然数であるいくつかの
+サブテーブルを持つ.インデックスが$i\in\omega$であるテーブルは\emph{文字クラス}$i$の
+情報を格納する.少なくとも,文字クラス0は常に存在するので,JFMファイルはインデックス
+が\texttt{[0]}のサブテーブルを持たなければならない.それぞれのサブテーブル
+(そのインデックスを$i$で表わす)は以下のフィールドを持つ:
 %</ja>
 
-\paragraph{JFM}
+\begin{cslist}[style=standard]
+\item[chars=\{<character>, ...\}]
+%<en>(required except character class~0)
+%<ja>(文字クラス0を除いて必須)
+
 %<*en>
-a JFM has measurements of characters and
-glues/kerns that are automatically inserted for Japanese
-typesetting. The structure of JFM will be described in the next
-subsection. At the calling of \cs{jfont}, you must specify
-which JFM will be used for this font by the following keys:
+This field is a list of characters which are in this character
+            type~$i$. This field is optional if $i=0$, since all
+            \textbf{JAchar} which do not belong  any character classes other
+            than 0 are in the character class 0
+             (hence, the character class~0 contains most of
+            \textbf{JAchar}s). In the list, character(s) can be specified in the following form:
+\begin{itemize}
+\item a Unicode code point
+\item the character itself (as a Lua string, like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ'+})
+\item a string like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+} (the character followed by an asterisk)
+\item several ``imaginary'' characters (We will describe these later.)
+\end{itemize}
 %</en>
 %<*ja>
-JFMは文字と和文組版で自動的に挿入される
-グルー/カーンの寸法情報を持っている.JFMの構造は次の節で述べる.
-\cs{jfont} 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで
-指定する必要がある:
+このフィールドは文字クラス$i$に属する文字のリストである.このフィールドは$i=0$の
+場合には任意である(文字クラス0には,0以外の文字クラスに属するものを
+除いた全ての\textbf{JAchar}が属するから).このリスト中で文字を指定するには,以下の方法がある:
+\begin{itemize}
+\item Unicode におけるコード番号
+\item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ'+}」のような,文字それ自体
+\item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+}」のような,文字それ自体の後にアスタリスクをつけたもの
+\item いくつかの「仮想的な文字」(後に説明する)
+\end{itemize}
 %</ja>
 
+\item[width=<length>, height=<length>, depth=<length>, italic=<length>]
+%<en>(required)
+%<ja>(必須)
 
+%<*en>
 \begin{table}[t]
-%<en>\caption{Differences between horizontal JFMs shipped with \LuaTeX-ja}
-%<ja>\caption{\LuaTeX-ja に同梱されている横組用JFMの違い}
-%<en>\medskip
-\label{tab-difjfm}
-\ltjsetparameter{jacharrange={+3}}
-\centering\small
-\def\r#1#2{%
-  \hbox{\Large\vrule
-  \parbox[b]{7\zw}{%
-    \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
-    ◆◆◆◆◆◆◆
-    ある日モモちゃんがお使いで迷子になって泣きました.
-  }\vrule}}
-\def\s#1#2{%
-  \Large
-  \parbox[b]{7\zw}{%
-    \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
-    ちょっと!何
-  }}
-\def\t#1#2#3{\hbox to 0pt{\hss%
-  \setbox0=\hbox{\addjfontfeatures{YokoFeatures={JFM=#1}}\huge #3}%
-  \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
-  \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
-  \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
-  \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
-  \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
-{\Large\tabcolsep0pt
-\begin{tabular}{m{8\zw}m{8\zw}m{8\zw}}
-\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{jis}{black}&
-\leavevmode\hbox to 0pt{\r{jis}{black}\hss}\r{min}{red}&
-\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{min}{red}\\
-\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{jis}{black}&
-\leavevmode\hbox to 0pt{\s{jis}{black}\hss}\s{min}{red}&
-\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{min}{red}\\
-\leavevmode\qquad\t{ujis}{blue}{漢}\t{jis}{black}{漢}\qquad
-           \t{ujis}{blue}{っ}\t{jis}{black}{っ}&
-\leavevmode\qquad\t{jis}{black}{漢}\t{min}{red}{漢}\qquad
-           \t{jis}{black}{っ}\t{min}{red}{っ}&
-\leavevmode\qquad\t{ujis}{blue}{漢}\t{min}{red}{漢}\qquad
-           \t{ujis}{blue}{っ}\t{min}{red}{っ}\\
-\end{tabular}\par}
-
-(\textcolor{blue}{Blue: \texttt{jfm-ujis.lua}},
-\textcolor{black}{Black: \texttt{jfm-jis.lua}},
-\textcolor{red}{Red: \texttt{jfm-min.lua}})
-\ltjsetparameter{jacharrange={-3}}
+ \centering
+\begin{tabular}{llr}
+\toprule
+Direction of JFM&\textbf{\texttt{'yoko'} (horizontal)}&\multicolumn{1}{l}{\textbf{\texttt{'tate'} (vertical)}}\\
+\midrule
+\texttt{width} field&\multicolumn{2}{c}{the width of the ``real'' glyph}\\
+\texttt{height} field&the height of the ``real'' glyph&0.0\\
+\texttt{depth} field&the depth of the ``real'' glyph&0.0\\
+\midrule
+\texttt{italic} field&\multicolumn{2}{c}{0.0}\\
+\bottomrule
+\end{tabular}
+\caption{Default values of \texttt{width} field and other fields}
+\label{tab-wid}
+\end{table}
+Specify the width of characters in character class~$i$, the height, the depth and
+the amount of italic correction. All characters in character class~$i$ are regarded that its width, height, and depth are
+as values of these fields. The default values are shown in \autoref{tab-wid}.
+%</en>
+%<*ja>
+\begin{table}[t]
+ \centering
+\begin{tabular}{llr}
+\toprule
+JFM書字方向&\emph{\texttt{'yoko'}(横組)}&\multicolumn{1}{l}{\emph{\texttt{'tate'}(縦組)}}\\
+\midrule
+\texttt{width}&\multicolumn{2}{c}{「実際のグリフ」の幅}\\
+\texttt{height}&「実際のグリフ」の高さ&0.0\\
+\texttt{depth}&「実際のグリフ」の深さ&0.0\\
+\midrule
+\texttt{italic}&\multicolumn{2}{c}{0.0}\\
+\bottomrule
+\end{tabular}
+\caption{\texttt{width} フィールド等の標準値}
+\label{tab-wid}
 \end{table}
+文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する.
+文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
+値であるものとして扱われる.省略時や,数でない値を指定した時には表\nobreak\ref{tab-wid}に
+            示されている値を用いる.例えば,横組用JFMで \texttt{width} フィールドには数値以外の値を指
+            定した場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用
+            すれば,これによってプロポーショナル組を行うことができる.
+%</ja>
+
+\item[left=<length>, down=<length>, align=<align>]\
 
-\begin{cslist}
-\item[jfm=<name>]
 %<*en>
-Specify the name of (horizontal) JFM.
-If specified JFM has not been loaded, \LuaTeX-ja search and load
-a file named \texttt{jfm-<name>.lua}.
+These fields are for adjusting the position of the ``real'' glyph. Legal
+            values of \texttt{align} field are \texttt{'left'},
+            \texttt{'middle'}, and \texttt{'right'}. If one of these
+            3~fields are omitted, \texttt{left} and \texttt{down} are
+            treated as~0, and \texttt{align} field is treated as
+            \texttt{'left'}.
+The effects of these 3~fields are indicated in
+\autoref{fig:pos}~and~\autoref{fig:pos-tate}.
+%</en>
+%<*ja>
+これらのフィールドは実際のグリフの位置を調整するためにある.
+\texttt{align} フィールドに指定できる値は \texttt{'left'}, \texttt{'middle'},
+\texttt{'right'} のいずれかである.もしこれら3つのフィールドのうちの1つが省かれた
+場合,\texttt{left} と \texttt{down} は0,\texttt{align} フィールドは
+\ \texttt{'left'} であるものとして扱われる.
+これら3つのフィールドの意味については\autoref{fig:pos}(横組用和文フォント),
+\autoref{fig:pos-tate}(縦組用和文フォント)で説明する.
+%</ja>
 
-The following JFMs are shipped with \LuaTeX-ja:
+%<*en>
+In most cases, \texttt{left} and \texttt{down} fields are~0, while
+it is not uncommon that the \texttt{align} field is \texttt{'middle'} or \texttt{'right'}.
+For example, setting the \texttt{align} field to \texttt{'right'} is practically needed
+when the current character class is the class for opening delimiters'.
 %</en>
 %<*ja>
-用いる(横組用)JFMの名前を指定する.もし以前に指定されたJFMが読み込まれていなければ,
-\texttt{jfm-<name>.lua}を読み込む.以下の横組用JFMが\LuaTeX-jaには同梱されている:
+多くの場合,\texttt{left}と\texttt{down}は0である一方,
+\texttt{align}フィールドが\texttt{'middle'}や\texttt{'right'}であることは
+珍しいことではない.
+例えば,\texttt{align}フィールドを\texttt{'right'}に指定することは,
+文字クラスが開き括弧類であるときに実際必要である.
 %</ja>
-\begin{description}
+
+\begin{figure}[!tb]
+\begin{minipage}{0.4\textwidth}%
+\begin{center}\unitlength=10pt\small
+\begin{picture}(15,12)(-1,-4)
+\color{b_gray}% jfm
+\put(0,0){\vrule width 12\unitlength height 8\unitlength depth 3\unitlength}
+
+\color{b_pink}% step1
+\put(-1,-1.5){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
+
+\color{red}% real glyph
+\thicklines
+\put(-1,-1.5){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
+\put(5,-1.5){\line(0,1){7}\line(0,-1){2.5}}
+\put(-1,5.5){\line(1,0){6}}
+\put(-1,-4){\line(1,0){6}}
+
+\color{b_green}% real glyph
+\put(3,0){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
+
+\color{black}% jfm
+\thicklines
+\put(0,0){\vector(0,1){8}\line(0,-1){3}\vector(1,0){12}}
+\put(12,0){\line(0,1){8}\vector(0,-1){3}}
+\put(0,8){\line(1,0){12}}
+\put(0,-3){\line(1,0){12}}
+\put(0.2,4){\makebox(0,0)[l]{\texttt{height}}}
+\put(12.2,-1.5){\makebox(0,0)[l]{\texttt{depth}}}
+\put(6,0.2){\makebox(0,0)[b]{\texttt{width}}}
+
+\color{green}% step1
+\thicklines
+\put(3,0){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
+\put(9,0){\line(0,1){7}\line(0,-1){2.5}}
+\put(3,7){\line(1,0){6}}
+\put(3,-2.5){\line(1,0){6}}
+\newsavebox{\eqdist}
+\savebox{\eqdist}(0,0)[b]{%
+  \thinlines
+  \put(-0.08,0.2){\line(0,-1){0.4}}%
+  \put(0.08,0.2){\line(0,-1){0.4}}}
+\put(1.5,0){\usebox{\eqdist}}
+\put(10.5,0){\usebox{\eqdist}}
+
+\color{blue}% shifted
+\thicklines
+\put(3,-1.5){\vector(-1,0){4}}
+\put(1,-1.7){\makebox(0,0)[t]{\texttt{left}}}
+\put(3,0){\vector(0,-1){1.5}}
+\put(3.2,-0.75){\makebox(0,0)[l]{\texttt{down}}}
+\end{picture}
+\end{center}
+\end{minipage}%
+\begin{minipage}{0.6\textwidth}%
 %<*en>
-\item[\tt jfm-ujis.lua] A standard JFM in \LuaTeX-ja. This JFM is
-  based on \verb+upnmlminr-h.tfm+, a metric for UTF/OTF package that
-  is used in \upTeX. When you use the \Pkg{luatexja-otf} package, you should use this JFM.
+Consider a  Japanese character node which belongs to
+a character class whose the \texttt{align}
+field is \texttt{'middle'}.
 %</en>
 %<*ja>
-\item[\tt jfm-ujis.lua] \LuaTeX-jaの標準JFMである.このJFMは\upTeX で
-  用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-h.tfm+ を
-  元にしている.\Pkg{luatexja-otf}パッケージを使うときはこのJFMを指定するべきである.
+\texttt{align}フィールドの値が \texttt{'middle'} であるような文字クラスに属する
+和文文字ノードを考えよう.
 %</ja>
+\begin{itemize}
+\item
 %<*en>
-\item[\tt jfm-jis.lua] A counterpart for \verb+jis.tfm+, ``JIS font
-  metric'' which is widely used in \pTeX. A major difference between
-  \texttt{jfm-ujis.lua} and this \texttt{jfm-jis.lua} is that
-  most characters under \texttt{jfm-ujis.lua} are square-shaped,
-  while that under \texttt{jfm-jis.lua} are horizontal
-  rectangles.
+The black rectangle is the imaginary body of the node.
+Its width, height, and depth are specified by JFM.
 %</en>
 %<*ja>
-\item[\tt jfm-jis.lua] \pTeX で広く用いられている「JISフォントメトリック」
-  \verb+jis.tfm+ に相当するJFMである.\texttt{jfm-ujis.lua} とこの
-  \texttt{jfm-jis.lua} の主な違いは,\texttt{jfm-ujis.lua} ではほとんどの文字が
-  正方形状であるのに対し,\texttt{jfm-jis.lua} では横長の長方形状であることと,
-  \texttt{jfm-ujis.lua} では「?」「!」の直後に半角空白が挿入されることである.
+黒色の長方形はノードの枠であり,
+その幅,高さ,深さはJFMによって指定されている.
 %</ja>
+\item
 %<*en>
-\item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
-  of the default Japanese font metric shipped with \pTeX.
+Since the \texttt{align} field is \texttt{'middle'},
+the ``real'' glyph is centered horizontally (the green rectangle) first.
 %</en>
 %<*ja>
-\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM
-(\verb+min10.tfm+)に相当し,行末で文字が揃うようにするために「っ」など一部の文字幅が変わっ
-          ている.\verb+min10.tfm+ については\cite{min10}が詳しい.
+\texttt{align}フィールドは \texttt{'middle'} なので,
+実際のグリフの位置はまず水平方向に中央揃えしたものとなる(緑色の長方形).
 %</ja>
-\end{description}
+\item
 %<*en>
-The difference among these three~JFMs is  shown in \autoref{tab-difjfm}.
+Furthermore, the glyph is shifted according to values of fields
+      \texttt{left} and \texttt{down}. The ultimate position of the real
+      glyph is indicated by the red rectangle.
 %</en>
 %<*ja>
\81\93ã\82\8cã\82\89\81¤ã\81®JFMã\81®é\81\95ã\81\84ã\81¯\autoref{tab-difjfm}ã\81«ç¤ºã\81\97ã\81\9fï¼\8e表中ã\81®æ\96\87ä¾\8bã\81®ä¸\80é\83¨ã\81«ã\81¯ï¼\8c
-\cite{min10}の図3,~4のものを用いた
\81\95ã\82\89ã\81«ï¼\8cã\82°ã\83ªã\83\95ã\81¯ \texttt{left} ã\81¨ \texttt{down} ã\81®å\80¤ã\81«å¾\93ã\81£ã\81¦ã\82·ã\83\95ã\83\88ã\81\95ã\82\8cã\82\8bï¼\8e
+最終的な実際のグリフの位置は赤色の長方形で示された位置になる
 %</ja>
+\end{itemize}
+\end{minipage}
+\medskip
 
-\begin{figure}
-\begin{LTXexample}[width=0.3\textwidth]
-\ltjsetparameter{differentjfm=both}
-\jfont\F=file:KozMinPr6N-Regular.otf:jfm=ujis
-\jfont\G=file:KozGoPr6N-Medium.otf:jfm=ujis
-\jfont\H=file:KozGoPr6N-Medium.otf:jfm=ujis;jfmvar=hoge
-\F ){\G 【】}( % halfwidth space
-   ){\H 『』}( % fullwidth space
+\caption{%
+%<en>The position of the real glyph (horizontal Japanese fonts)
+%<ja>横組和文フォントにおける「実際の」グリフの位置
+}
+\label{fig:pos}
+\end{figure}
+\begin{figure}[!tb]
+\begin{minipage}{0.4\textwidth}%
+\begin{center}\unitlength=10pt\small
+\begin{picture}(15,12)(-6,0)
+\color{b_gray}% jfm
+\put(-6,0){\vrule width 12\unitlength height 11\unitlength}
 
-ほげ,{\G 「ほげ」}(ほげ)\par
-ほげ,{\H 「ほげ」}(ほげ)% pTeX-like
+\color{b_pink}% real glyph
+\put(-6.5,5.5){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
 
-\ltjsetparameter{differentjfm=paverage}
-\end{LTXexample}
-\caption{Example of \texttt{jfmvar} key}
-\label{fig:jfmvar}
-\end{figure}
+\color{red}% real glyph
+\thicklines
+\put(-6.5,5.5){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
+\put( 1.5,5.5){\line(0,1){6}\line(0,-1){3}}
+\put(-6.5,11.5){\line(1,0){8}}
+\put(-6.5,2.5){\line(1,0){8}}
 
-%<*en>
-\item[jfmvar=<string>]
-Sometimes there is a need that \ldots.
-%</en>
-%<*ja>
-\item[jfmvar=<string>]
-標準では,JFMとサイズが同じで,
-  実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
-\autoref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが,
-JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
+\color{b_green}% step1
+\put(-4,3){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
 
-しかし,JFMとサイズが同じであっても,\texttt{jfmvar} キーの異なる
-2つの和文フォント,例えば\autoref{fig:jfmvar}で言う \cs{F} と \cs{H},
-は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て,
-かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば,
-\pTeX と似た状況で組版されることになる.
-%</ja>
-\end{cslist}
+\color{black}% jfm
+\thicklines
+\put(0,11){\vector(1,0){6}\vector(-1,0){6}\vector(0,-1){11}}
+\put(0,0){\line(1,0){6}\line(-1,0){6}}
+\put(-6,0){\line(0,1){11}}
+\put( 6,0){\line(0,1){11}}
+\put( 3,10.8){\makebox(0,0)[t]{\texttt{height}}}
+\put(-3,10.8){\makebox(0,0)[t]{\texttt{depth}}}
+\put(0.2,5.5){\makebox(0,0)[l]{\texttt{width}}}
 
-\begin{figure}
-\begin{LTXexample}[pos=t]
-\newcommand\test{\vrule ダイナミックダイクマ\vrule\\}
-\jfont\KMFW = KozMinPr6N-Regular:jfm=prop;-kern at 17pt
-\jfont\KMFK = KozMinPr6N-Regular:jfm=prop at 17pt % kern is activated
-\jfont\KMPW = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;-kern at 17pt
-\jfont\KMPK = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;+kern at 17pt
-\begin{multicols}{2}
-\ltjsetparameter{kanjiskip=0pt}
-{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+\color{green}% step1
+\thicklines
+\put(-4,3){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
+\put( 4,3){\line(0,1){6}\line(0,-1){3}}
+\put(-4,9){\line(1,0){8}}
+\put(-4,0){\line(1,0){8}}
+\savebox{\eqdist}(0,0)[b]{%
+  \thinlines
+  \put(-0.08,0.2){\line(0,-1){0.4}}%
+  \put(0.08,0.2){\line(0,-1){0.4}}}
+\put(2,9){\usebox{\eqdist}}
+\put(-2,9){\usebox{\eqdist}}
 
-\ltjsetparameter{kanjiskip=3pt}
-{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
-\end{multicols}
-\end{LTXexample}
-\caption{Kerning information and \Param{kanjiskip}}
-\label{fig:kern-jfm}
-\end{figure}
 
-%<en>\paragraph{Using kerning information in a font}
-%<ja>\paragraph{ペアカーニング情報の使用}
-\label{para-kern}
+\color{blue}% shifted
+\thicklines
+\put(-4,3){\vector(0,1){2.5}}
+\put(-3.8,4.25){\makebox(0,0)[l]{\texttt{left}}}
+\put(-4,5.5){\vector(-1,0){2.5}}
+\put(-5.,5.7){\makebox(0,0)[b]{\texttt{down}}}
+\end{picture}
+\end{center}
+\end{minipage}%
+\begin{minipage}{0.6\textwidth}%
 %<*en>
-Some fonts have information for inter-glyph spacing.
-This version of \LuaTeX-ja treats kerning spaces like an italic correction;
-any glue and/or kern from the JFM and a kerning space can coexist.
-See \autoref{fig:kern-jfm} for detail.
-
-Note that in \cs{setmainjfont} etc.\ which are provided by \Pkg{luatexja-fontspec}
-package, kerning option is set \emph{off} (\texttt{Kerning=Off}) by default,
-because of the compatibility with previous versions of \LuaTeX-ja.
+(\dots)
 %</en>
 %<*ja>
-いくつかのフォントはグリフ間のスペースについての情報を持っている.
-このカーニング情報は以前の\LuaTeX-ja とはあまり相性が良くなかったが,
-本バージョンではカーニングによる空白はイタリック補正と同様に扱うことになっている.
-つまり,カーニング由来の空白とJFM由来のグルー・カーンは同時に入りうる.
-\autoref{fig:kern-jfm}を参照.
+\texttt{align}フィールドの値が \texttt{'right'} であるような文字クラスに属する
+和文文字を考えよう.
 \begin{itemize}
- \item \emph{\cs{jfont} や,
-NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では
-カーニング情報は標準で使用する}ことになっているようである.
-言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
-\begin{lstlisting}
-\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
-\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
-\end{lstlisting}
-のように,\texttt{-kern} という指定を自分で追加しなければいけない.
- \item
-一方,\emph{\Pkg{luatexja-fontspec} の提供する \cs{setmainjfont}\
-などの命令の標準設定ではカーニング情報は使用しない}(\texttt{Kerning=Off})
-ことになっている.これは以前のバージョンの\LuaTeX-jaとの互換性のためである.
+\item
+実際のグリフの「垂直位置」は,まずベースラインが文字の物理的な左右方向の中央を通る
+位置となる.
+\item
+また,この場合 \texttt{align} フィールドは \texttt{'right'} なので,
+「水平位置」は字送り方向に「右寄せ」したものとなる(緑色の長方形).
+\item
+その後さらに \texttt{left} と \texttt{down} の値に従ってシフトされる
+のは横組用和文フォントと変わらない.
 \end{itemize}
 %</ja>
+\end{minipage}
+\medskip
+
+\caption{%
+%<en>The position of the real glyph (vertical Japanese fonts)
+%<ja>縦組和文フォントにおける「実際の」グリフの位置
+}
+\label{fig:pos-tate}
+\end{figure}
 
+\item[kern={\{[$j$]=<kern>, [$j'$]=\{<kern>, [ratio=<ratio>]\}, ...\}}]
+\nopagebreak
+\item[glue={\{[$j$]=\{<width>, <stretch>, <shrink>, [ratio=<ratio>, ...]\}, ...\}}]\leavevmode
 %<*ja>
-\paragraph{\texttt{extend}と\texttt{slant}}
-OpenType font featureと見かけ上同じような形式で指定できるものに,
-\begin{description}
-\item[\texttt{extend=}<extend>] 横方向に<extend>倍拡大する.
-\item[\texttt{slant=}<slant>] <slant>に指定された割合だけ傾ける.
-\end{description}
-の2つがある.
-\texttt{extend}や\texttt{slant}を指定した場合は,それに応じたJFMを指定すべきである%
-\footnote{\LuaTeX-jaでは,これらに対するJFMを特に提供することはしない予定である.}.
-例えば,次の例では無理やり通常のJFMを使っているために,文字間隔やイタリック補正量が
-正しくない:
-%</ja>
-%<*en>
-\paragraph{\texttt{extend} and \texttt{slant}}
-The following setting can be specified as OpenType font features:
-\begin{cslist}[style=standard]
-\item[\texttt{extend=}<extend>] expand the font horizontally by <extend>.
-\item[\texttt{slant=}<slant>] slant the font.
-\end{cslist}
-Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
-settings; you have to write new JFMs on purpose.
-For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence
-letter-spacing and the width of italic correction are not correct:
-%</en>
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\E=KozMinPr6N-Regular:extend=1.5;jfm=ujis;-kern
-\E あいうえお
 
-\jfont\S=KozMinPr6N-Regular:slant=1;jfm=ujis;-kern
-\S あいう\/ABC
-\end{LTXexample}
+文字クラス$i$の文字と$j$の文字の間に挿入されるカーンやグルーの量を指定する.
 
-%<*ja>
-\paragraph{\texttt{ltjksp} 指定}
-\label{pg:ltjksp}
-\LuaTeX-ja標準では,
-JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
-\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって,
-「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が
-同じ場所に挿入される」という状況が起こりうる.
-この機能を無効化し,20150922.0版以前と同じような組版を得るためには
-他のOpenType機能と同じように\ \texttt{-ltjksp}\ 指定を行えば良い.
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+<ratio>は,グルーの自然長のうちどれだけの割合が「後の文字」由来かを示す量で,
+$0$から$+1$の実数値をとる.省略時の値は$0.5$である.
+このフィールドの値は\Param{differentjfm}の値が
+\texttt{pleft},~\texttt{pright},~\texttt{paverage}の値のときのみ実際に用いられる.
 
-\jfont\G=file:KozMinPr6N-Regular.otf%
-  :jfm=ujis;-ltjksp at 9.2487pt
-\G\leavevmode%
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-\end{LTXexample}
-なお,
-\begin{lstlisting}
- \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt
-\end{lstlisting}
-のように \texttt{+ltjksp} 指定を行った場合は,\texttt{kanjiskip\_natural} など
-3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は,
-最後に指定したものが有効となる.
+例えば,\cite{x4051}では,句点と中点の間には,
+句点由来の二分空きと中点由来の四分空きが挿入されるが,この場合には
+\begin{itemize}
+\item <width>には$0.5+0.25=0.75$を指定する.
+\item <ratio>には$0.25/(0.5+0.25)=1/3$を指定する.
+\end{itemize}
 %</ja>
+%<*en>
+\
 
+Specifies the amount of kern or glue which will be inserted
+between characters in character class~$i$ and those in character class~$j$.
 
-%<en>\subsection{\cs{tfont}}
-%<ja>\subsection{\cs{tfont} 命令}
-
+<ratio> specifies how much the glue is originated in the ``right'' character.
+It is a real number between 0 and 1, and treated as 0.5 if omitted. For example,
+The width of a glue between an ideographic full stop ``。''
+and a fullwidth middle dot ``・'' is three-fourth of fullwidth,
+namely halfwidth from the ideographic full stop, and
+quarter-width from the fullwidth middle dot.  In this case,
+we specify <ratio> to $0.25/(0.5+0.25)=1/3$.
+%</en>
 
-{\catcode`\<=12\catcode`\>=12
-\begin{table}[t]
-%<en>\caption{Differences between vertical JFMs shipped with \LuaTeX-ja}
-%<ja>\caption{\LuaTeX-ja に同梱されている縦組用 JFM の違い}
-%<en>\medskip
-\label{tab-difjfm-tate}
-\ltjsetparameter{jacharrange={+3}}
-\small
-\def\r#1#2{%
-  \hbox{\tate\Large\vrule
-  \parbox{7\zw}{%
-    \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
-    ◆◆◆◆◆◆◆
-    ある日モモちゃんが「お使い」で迷子になって泣きました。
-  }\vrule}}
-\def\s#1#2{%
-  \hbox{\tate\Large
-  \parbox{7\zw}{%
-    \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
-    ちょっと!何
-  }}}
-\def\t#1#2#3{\hbox to 0pt{\hss%
-  \setbox0=\hbox{\addjfontfeatures{TateFeatures={JFM=#1}}\huge #3}%
-  \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
-  \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
-  \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
-  \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
-  \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
+%<*ja>
+グルーの指定においては,上記に加えて各 \texttt{[$j$]} の各サブテーブル内に
+次のキーを指定できる,
+\begin{cslist}[style=standard]
+\item[priority=<priority>]
+             \Pkg{luatexja-adjust}による優先順位付き
+            行長調整(\ref{ssec-adj}節)において,このグルーの優先度を指定する.許される値は以下の通り:
+  \begin{description}
+    \item[バージョン1] $-4$から$+3$の間の整数
+    \item[バージョン2以降] $-4$から$+3$の間の整数の2つ組\texttt{\{<stretch>, <shrink>\}}か,
+    または$-4$から$+3$の間の整数.<stretch>, <shrink>はそれぞれこのグルーが伸びるときの優先度,縮むときの
+    優先度であり,単に整数$i$が指定された場合は\texttt{\{$i$, $i$\}}であると解釈される.
+  \end{description}
+  ここで指定する値は,大きい値ほど「先に伸ばされる」「先に縮ませる」ことを意味しており,省略時の値
+             は0である.範囲外の値が指定されたときの動作は未定義である.
+\item[kanjiskip\_natural=<num>\textrm{, }%
+  kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
+  \label{pg:ksp_nat}
 
-\begin{minipage}{.7\textwidth}
-\centering
-\leavevmode\hbox to 0pt{\r{ujisv}{blue}\hss}\r{tmin}{red}\quad
-\leavevmode\hbox to 0pt{\s{ujisv}{blue}\hss}\s{tmin}{red}\quad
-\raise4\zw\hbox{\tate\Large\t{ujisv}{black}{漢}\t{tmin}{red}{漢}\qquad
-           \t{ujisv}{black}{っ}\t{tmin}{red}{っ}}
-\end{minipage}%
-\begin{minipage}{.3\textwidth}
-\textcolor{blue}{Blue: \texttt{jfm-ujisv.lua}}\\
-\textcolor{red}{Red: \texttt{jfm-tmin.lua}}
-\end{minipage}
-\ltjsetparameter{jacharrange={-3}}
-\end{table}
-}
+JFMによって本来挿入されるグルーの他に
+\Param{kanjiskip}分の空白を自然長(\texttt{kanjiskip\_natural}),伸び量(\texttt{kanjiskip\_stretch}),
+縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する\footnote{本来\Param{xkanjiskip}が挿入される場所においては
+            \Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに.追加できる.}%
+ための指定である.いずれも省略された場合のデフォルト値は0(追加しない)である.
 
-%<*en>
-...
-%</en>
-%<*ja>
-\cs{tfont} はフォントを縦組用の和文フォントとして読み込む命令であり,
-\cs{tfont} の文法は \cs{jfont} と同じである.
-\cs{tfont} で定義された縦組用和文フォントは,
-以下の点が \cs{jfont} による横組用和文フォントとは異なる:
+例えば,\LuaTeX-jaの横組標準JFMの \texttt{jfm-ujis.lua} では,
 \begin{itemize}
- \item 自動的に \texttt{vert}, \texttt{vrt2} の両OpenType featureが有効化される.
-但し,以下の例の3行目に示すように,明示的に \texttt{vert}, \texttt{vrt2}(のいずれか)の
-有効・無効を指定した場合は別である.
-\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv
-    % vert and vrt2 are automatically activated
-\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
-\end{lstlisting}
- \item \ref{ssec-math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
- \item \texttt{jfm=<name>}\ の部分には縦組用JFMを指定する.
-以下の縦組用JFMが\LuaTeX-jaには同梱されており,違いを\autoref{tab-difjfm-tate}に示した.
-\begin{description}
-\item[\tt jfm-ujisv.lua] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で
-  用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-v.tfm+ を
-  元にしている.
-\item[\tt jfm-tmin.lua] \pTeX に同梱されているデフォルトの和文用縦組TFM
-  である \verb+tmin10.tfm+ に相当し,\texttt{min10.tfm} と同様に
-  「っ」など一部の文字幅が狭められている.
-\end{description}
+ \item 通常の文字「あ」と開き括弧類の間に入るグルーは,自然長・縮み量半角,伸び量0のグルー
+となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
+       た分だけ伸びることが許される.
+ \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と通常の文字「う」「え」の間にも
+自然長・縮み量半角,伸び量0のグルー
+となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
+       た分だけ伸びることが許される.
 \end{itemize}
+となっている.従って,以下のような組版結果を得る.
 
-なお,\pTeX では,\cs{font},~\cs{jfont},~\cs{tfont}のどれでも欧文フォント・横組用和文フォン
-ト・縦組用和文フォントの定義が可能であったが,\LuaTeX-jaではそうでないので注意.
-%</ja>
+\medskip
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\end{LTXexample}
 
-%<en>\subsection{Prefix \texttt{psft}}
-%<ja>\subsection{\texttt{psft}プリフィックス}
-\label{ssec-psft}
+\end{cslist}
+%</ja>
 %<*en>
-Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which
-are introduced in the \Pkg{luaotfload} package,
-\LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \cs{jfont} (and~\cs{font}),
-to specify a ``name-only'' Japanese font which
-will not be embedded to PDF.
-Note that these non-embedded fonts under current \LuaTeX\ has Identity-H encoding,
-and this violates the standard ISO32000-1:2008~(\cite{pdfstd}).
+In case of glue, one can specify following additional keys in each \texttt{[$j$]}
+            subtable:
+\begin{cslist}[style=standard]
+\item[priority=<priority>]
+An integer in $[-4,3]$ (treated as 0 if omitted), or
+a pair of these integers \texttt{\{<stretch>, <shrink>\}} (version 2~or~later).
+This is
+used only in line adjustment with priority by \Pkg{luatexja-adjust}
+(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to stretch,
+and is also easy to shrink. 
+\item[kanjiskip\_natural=<num>\textrm{, }%
+  kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
 
-\emph{OpenType font features, such as ``{\tt +jp90}'',
-have no meaning in name-only fonts using ``{\tt psft:}''\ prefix,
-because we can't expect what fonts are actually used by the PDF reader.}
-Note that \texttt{extend}~and~\texttt{slant} settings (see~above) are supported
-with \texttt{psft} prefix, because they are only simple linear transformations.
-%</en>
-%<*ja>
-\Pkg{luaotfload}で使用可能になった
-\texttt{file:}\ と \texttt{name:}\ のプリフィックスに加えて,
-\cs{jfont}(と \cs{font} プリミティブ)では
-\texttt{psft:}プリフィックスを用いることができる.
-このプリフィックスを用いることで,PDFには埋め込まれない「名前だけの」
-和文フォントを指定することができる.
-なお,現行の\LuaTeX で非埋め込みフォントを作成するとPDF内でのエンコーディングが
-Identity-Hとなり,PDFの標準規格ISO32000-1:2008~(\cite{pdfstd})に非準拠になってしまう
-ので注意してほしい.
+These keys specifies the amount of the natural width of \Param{kanjiskip}
+(the stretch/shrink part, respectively) which will be inserted
+in addition to the original JFM glue. Default values of them are all 0.
 
-\emph{\texttt{psft} プリフィックスの下では
-\texttt{+jp90} などのOpenType font featureの効力はない.
-非埋込フォントをPDFに使用すると,実際にどのようなフォントが
-表示に用いられるか予測できないからである.}\
-\texttt{extend} と \texttt{slant} 指定は単なる変形のため
-\texttt{psft} プリフィックスでも使用可能である.
-%</ja>
+As an example, in \texttt{jfm-ujis.lua}, the standard JFM in horizontal writing, we have
+\begin{itemize}
+ \item Between an ordinal letter ``あ'' and an ideographic opening bracket, we have
+a glue whose natural part and shrink part are both half-width, while its stretch part is
+       zero. However, this glue also can be stretched
+       as much as the stretch part of \Param{kanjiskip} times the value of
+       \texttt{kanjiskip\_stretch} key (1 in this case).
+ \item Between an ideographic closeing brackets (the ideographic comma ``,''
+       is included) and an ordinal letter, we have the same glue.
+       Again, this glue also can be stretched
+       as much as the stretch part of \Param{kanjiskip} times the value of
+       \texttt{kanjiskip\_stretch} key (1 in this case).
+\end{itemize}
+Hence we have the following result:
 
-%<en>\paragraph{\texttt{cid} key}
-%<ja>\paragraph{\texttt{cid}キー}
-\label{para-cid}
+\medskip
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\end{LTXexample}
 
-%<*en>
-The default font defined by using \texttt{psft:} prefix is for Japanese typesetting;
-it is Adobe-Japan1-6 CID-keyed font.
-One can specify \texttt{cid} key to use other CID-keyed non-embedded fonts
-for Chinese or Korean typesetting.
+\end{cslist}
 %</en>
+
+\item[end\_stretch=<kern>, end\_shrink=<kern>]
 %<*ja>
-標準で\texttt{psft:}プリフィックスで定義されるフォントは日本語用のもので
-あり,Adobe-Japan1-6のCIDに対応したものとなる.しかし,\LuaTeX-jaは中国語
-の組版にも威力を発揮することが分かり,日本語フォントでない非埋込フォント
-の対応も必要となった.そのために追加されたのが\texttt{cid}キーである.
+(任意,バージョン1のみ)
 
-\texttt{cid}キーに値を指定すると,そのCIDを持った非埋込フォントを定義することができる:
+優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が行
+            末に来た時に,行長を詰める調整・伸ばす調整のた
+             めにこの文字と行末の間に挿入可能なカーンの大きさを指定する.
 %</ja>
-\begin{lstlisting}[numbers=left]
-\jfont\testJ={psft:Ryumin-Light:cid=Adobe-Japan1-6;jfm=jis}     % Japanese
-\jfont\testD={psft:Ryumin-Light:jfm=jis}                        % default value is Adobe-Japan1-6
-\jfont\testC={psft:AdobeMingStd-Light:cid=Adobe-CNS1-6;jfm=jis} % Traditional Chinese
-\jfont\testG={psft:SimSun:cid=Adobe-GB1-5;jfm=jis}              % Simplified Chinese
-\jfont\testK={psft:Batang:cid=Adobe-Korea1-2;jfm=jis}           % Korean
-\end{lstlisting}
 %<*en>
-Note that the code above specifies \texttt{jfm-jis.lua}, which is for Japanese fonts,
-as JFM for Chinese and Korean fonts.
+(optional, version~1 only)
 %</en>
+
+  \item[end\_adjust=\{<kern>, <kern>, ...\}]
 %<*ja>
-上のコードでは中国語・韓国語用フォントに対してもJFMに
-日本語用の\texttt{jfm-jis.lua}を指定しているので注意されたい.
-%</ja>
+(任意,バージョン2のみ)
+
+優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が
+  行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが
+  挿入される(\autoref{ssec-adj}参照).
 
+バージョン1における
+\begin{lstlisting}[escapechar=\$]
+    end_stretch = $a$, end_shrink = $b$
+\end{lstlisting}
+という指定は,バージョン2では次の指定と同じになる.
+\begin{lstlisting}[escapechar=\$]
+    end_adjust = {$-b$, 0.0, $a$}
+\end{lstlisting}
+もし真ん中の \texttt{0.0} がない場合は,$a$か$-b$かいずれかのカーンが常に行末に追加される.
+%</ja>
 %<*en>
-At present, \LuaTeX-ja supports only 4 values written in the sample code above.
-Specifying other values, e.g.,
+(optional, version~2 only)
 %</en>
+
+\end{cslist}
+
 %<*ja>
-今のところ,\LuaTeX-jaは上のサンプルコード中に書いた4つの値しかサポートしていない.
+\paragraph{文字クラスの決定}
+文字からその文字の属する文字クラスを算出する過程について,
+次の内容を含んだ \texttt{jfm-test.lua} を用いて説明する.
 %</ja>
-\begin{lstlisting}
-\jfont\test={psft:Ryumin-Light:cid=Adobe-Japan2;jfm=jis}
-\end{lstlisting}
 %<*en>
-produces the following error:
+\paragraph{Character to character classes}
+We explain how the character class of a character is determined,
+using  \texttt{jfm-test.lua} which contains the following:
 %</en>
-%<*ja>
-のようにそれら以外の値を指定すると,エラーが発生する:
-%</ja>
-\begin{lstlisting}[numbers=left]
-! Package luatexja Error: bad cid key `Adobe-Japan2'.
-
-See the luatexja package documentation for explanation.
-Type  H <return>  for immediate help.
-<to be read again>
-                   \par
-l.78
-
-? h
-I couldn't find any non-embedded font information for the CID
-`Adobe-Japan2'. For now, I'll use `Adobe-Japan1-6'.
-Please contact the LuaTeX-ja project team.
-?
-\end{lstlisting}
-
-%<en>\subsection{Structure of a JFM file}
-%<ja>\subsection{JFMファイルの構造}
-\label{ssec-jfm-str}
-%<en>A JFM file is a Lua script which has only one function call:
-%<ja>JFMファイルはただ一つの関数呼び出しを含むLuaスクリプトである:
 \begin{lstlisting}
-luatexja.jfont.define_jfm { ... }
+   [0] = {
+      chars = { '漢' },
+      align = 'left', left = 0.0, down = 0.0,
+      width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
+   },
+   [2000] = {
+      chars = { '。', 'ヒ' },
+      align = 'left', left = 0.0, down = 0.0,
+      width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
+   },
 \end{lstlisting}
+%<ja>ここで,次のような入力とその実行結果を考える:
+%<en>Now consider the following input/output:
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
+\setbox0\hbox{\a ヒ漢}
+\the\wd0
+\end{LTXexample}
 %<*en>
-Real data are stored in the table which indicated above by
-\verb+{ ... }+.  So, the rest of this subsection are devoted to describe the
-structure of this table.  Note that all lengths in a JFM file are
-floating-point numbers in design-size unit.
+Now we look why the above source outputs 15\,pt.
+\begin{enumerate}
+\item The character ``ヒ'' is converted to its half width  form ``ヒ'' by \verb+hwid+ feature.
+\item According to the JFM, the character class of ``ヒ'' is 2000, hence its width is halfwidth.
+\item The character class of ``漢'' is zero,  hence its width is fullwidth.
+\item Hence the width of \cs{hbox} equals to 15\,pt.
+\end{enumerate}
+This example shows that the character class of a character is generally determined \emph{after
+applying font features by \Pkg{luaotfload}}.
 %</en>
 %<*ja>
-実際のデータは上で \verb+{ ... }+ で示されたテーブルの中に格納されている.
-以下ではこのテーブルの構造について記す.
-なお,JFMファイル中の長さは全てdesign-sizeを単位とする浮動小数点数であることに
-注意する.
+上記の出力結果が,15\,ptとなっているのは理由によるものである:
+\begin{enumerate}
+\item \verb+hwid+ featureによって「ヒ」が半角幅のグリフ「ヒ」と置き換わる(\Pkg{luaotfload} による処理).
+\item JFMによれば,この「ヒ」のグリフの文字クラスは2000である.
+\item 以上により文字クラス2000とみなされるため,結果として「ヒ」の幅は半角だと認識される.
+\end{enumerate}
+この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の結果に基づく}ことを
+示している.
 %</ja>
 
-\begin{cslist}[style=standard]
-
-\item[version=$1\mathrel{\textrm{or}}2$]
-%<en>(optional, default value is~1)
-%<ja>(任意,既定値は1)
-
 %<*en>
-The version JFM. Currently 1~and~2 are supported
+However, if the class determined by the glyph after application of features is zero,
+\LuaTeX-ja adopts the class determined by the glyph \emph{before} application of features.
+The following input is an example.
 %</en>
 %<*ja>
-JFMのバージョン.1または2がサポートされる.
+但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,置換前の文字クラスを採用する.
 %</ja>
-  
-\item[dir=<direction>]
-%<en>(required)
-%<ja>(必須)
-
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
+\a 漢。\inhibitglue 漢
+\end{LTXexample}
 %<*en>
-The direction of JFM. \texttt{'yoko'}~(horizontal)
-or \texttt{'tate'}~(vertical) are supported.
+Here, the character class of the ideographic full stop ``。''~(\texttt{U+3002}) is determined
+as follows:
+\begin{enumerate}
+\item As the case of ``ヒ'', the ideographic full stop ``。'' is converted to its vertical
+      form ``\char"FE12''~(\texttt{U+FE12}) by \verb+vert+ feature.%"
+\item The character class of ``\char"FE12'', according to the JFM  is \emph{zero}.
+\item However, \LuaTeX-ja remembers that this ``\char"FE12'' is obtained from ``。'' by
+      font features. The character class of ``。'' is \emph{non-zero value}, namely, 2000.
+\item Hence the ideographic full stop ``。'' in above belongs the character class~2000.
+\end{enumerate}
 %</en>
 %<*ja>
-JFMの書字方向.\texttt{'yoko'}(横組)と \texttt{'tate'}(縦組)がサポートされる.
+ここで,句点「。」(\texttt{U+3002})の文字クラスは,以下のようにして決まる.
+\begin{enumerate}
+\item \Pkg{luaotfload} によって縦組用句点のグリフに置き換わる.
+\item 置換後のグリフは \texttt{U+FE12} であり,JFMに従えば文字クラスは\emph{0}と判定される.
+\item この場合,置換前の横組用句点のグリフによって文字クラスを判定する.
+\item 結果として,上の出力例中の句点の文字クラスは2000となる.
+\end{enumerate}
 %</ja>
 
-\item[zw=<length>]
-%<en>(required)
-%<ja>(必須)
 
-%<en>The amount of the length of the ``full-width''.
+%<ja>\paragraph{仮想的な文字}
+%<en>\paragraph{Imaginary characters}
+%<*en>
+As described before, you can specify several \emph{imaginary characters} in
+\texttt{chars} field. The most of these characters are regarded as the
+characters of class 0 in \pTeX.
+As a result, \LuaTeX-ja can control typesetting finer than \pTeX.
+The following is the list of imaginary characters:
+%</en>
 %<*ja>
-「全角幅」の長さ.この量が \cs{zw} の長さとなる.\pTeX では
-「全角幅」\texttt{1zw} は「文字クラス0の文字」の幅と決められていたが,
-\LuaTeX-jaではここで指定する.
+上で説明した通り,\texttt{chars}フィールド中にはいくつかの「特殊文字」も
+指定可能である.これらは,大半が\pTeX のJFMグルーの挿入処理ではみな「文字
+クラス0の文字」として扱われていた文字であり,その結果として\pTeX より細か
+い組版調整ができるようになっている.以下でその一覧を述べる:
 %</ja>
 
-\item[zh=<length>]
-%<en>(required)
-%<ja>(必須)
+\begin{cslist}
+%%\item['diffmet']
+%%<en>Used at a boundary between two \textbf{JAchar}s whose JFM or size is different.
+%%<ja>JFMやサイズが異なる2つの\textbf{JAchar}の間の境界として用いられる.
 
-%<en>The amount of the ``full-height'' (height + depth).
-%<*ja>
-「全角高さ」(height + depth)の長さ.通常は全角幅と同じ長さになるだろう.
-\pTeX では 「全角高さ」\texttt{1zh} は「文字クラス0の文字」の高さと深さの和と決められていたが,
-\LuaTeX-jaではここで指定する.
-%</ja>
+\item['boxbdd']
+%<en>The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \cs{noindent}) paragraph.
+%<ja>hboxの先頭と末尾,及びインデントされていない(\cs{noindent} で開始された)段落の先頭を表す.
 
-\item[kanjiskip=\{<natural>, <stretch>, <shrink>\}]
-%<en>(optional)
-%<ja>(任意)
+\item['parbdd']
+%<en>The beginning of an (indented) paragraph.
+%<ja>通常の(\cs{noindent} で開始されていない)段落の先頭.
 
-%<*en>
-This field specifies the ``ideal'' amount of \Param{kanjiskip}. As noted
-            in Subsection~\ref{subs-kskip}, if the parameter
-            \Param{kanjiskip} is \cs{maxdimen}, the value specified
-            in this field is actually used (if this field is not specified in
-            JFM, it is regarded as 0\,pt). Note that <stretch> and <shrink>
-            fields are in design-size unit too.
-%</en>
+\item['jcharbdd']
+%<en>A boundary between \textbf{JAchar} and anything else.
 %<*ja>
-理想的な\Param{kanjiskip}の量を指定する.\ref{subs-kskip}節で述べたように,
-もし\Param{kanjiskip}が \cs{maxdimen} の値ならば,このフィールドで指定された
-値が実際には用いられる(指定なしは0\,ptとして扱われる).<stretch>と<shrink>のフィールドもdesign-size
-が単位であることに注意せよ.
-%</ja>
-
-\item[xkanjiskip=\{<natural>, <stretch>, <shrink>\}]
-%<en>(optional)
-%<ja>(任意)
+\textbf{JAchar}と「その他のもの」との境界.
 
-%<*en>
-Like the \texttt{kanjiskip} field, this field specifies the ``ideal''
-            amount of \Param{xkanjiskip}.
-%</en>
-%<*ja>
-\texttt{kanjiskip}フィールドと同様に,\Param{xkanjiskip}の理想的な量を
-指定する.
+バージョン2以前では\textbf{ALchar},箱,罫線(rule),glue,~kernなどいろいろなものと\textbf{JAchar}の境界に対して
+本特殊文字が用いられていたが,
+バージョン3以降では\ \texttt{'jcharbdd'}, \texttt{'alchar'}, \texttt{'nox\_alchar'},
+\texttt{'glue'} と細分化され,
+\texttt{'jcharbdd'} は主に\textbf{JAchar}とボックスや罫線(rule)との境界に使われるようになった.
 %</ja>
-\end{cslist}
-
+  
+\item['alchar', 'nox\_alchar']
 %<*en>
-\paragraph{Character classes}
-Besides from above fields, a JFM file have several sub-tables those
-indices are natural numbers.  The table indexed by~$i\in\omega$ stores
-information of \emph{character class}~$i$. At least, the character class~0 is
-always present, so each JFM file must have a sub-table whose index is
-\texttt{[0]}.  Each sub-table (its numerical index is denoted by $i$) has
-the following fields:
+(version 3~or~later) A boundary between \textbf{JAchar} and \textbf{ALchar}.
 %</en>
 %<*ja>
-\paragraph{文字クラス}
-上記のフィールドに加えて,JFMファイルはそのインデックスが自然数であるいくつかの
-サブテーブルを持つ.インデックスが$i\in\omega$であるテーブルは\emph{文字クラス}$i$の
-情報を格納する.少なくとも,文字クラス0は常に存在するので,JFMファイルはインデックス
-が\texttt{[0]}のサブテーブルを持たなければならない.それぞれのサブテーブル
-(そのインデックスを$i$で表わす)は以下のフィールドを持つ:
+(バージョン3以降)\textbf{JAchar}と\textbf{ALchar}との境界.
+\textbf{JAchar}と\textbf{ALchar}の間に\Param{xkanjiskip}が入ることが可能な場合は
+\ \texttt{'alchar'}\ が,そうでない場合は\ \texttt{'nox\_alchar'}\ が用いられる
+(この区別は\textbf{ALchar}側の\Param{alxspmode}の値によってのみ行われる).
 %</ja>
 
-\begin{cslist}[style=standard]
-\item[chars=\{<character>, ...\}]
-%<en>(required except character class~0)
-%<ja>(文字クラス0を除いて必須)
+\item['glue']
+%<en>(version 3~or~later) A boundary between \textbf{JAchar}, and, a glue or kern.
+%<ja>(バージョン3以降))\textbf{JAchar}とglue,kernとの境界.
+
+\item[$-1$]
+%<en>The left/right boundary of an inline math formula.
+%<ja>行中数式と地の文との境界.
+\end{cslist}
+
+%<en>\paragraph{Porting JFM from \pTeX}
+%<ja>\paragraph{\pTeX 用和文用TFMの移植}
+
+% ToDo: English version.
 
 %<*en>
-This field is a list of characters which are in this character
-            type~$i$. This field is optional if $i=0$, since all
-            \textbf{JAchar} which do not belong  any character classes other
-            than 0 are in the character class 0
-             (hence, the character class~0 contains most of
-            \textbf{JAchar}s). In the list, character(s) can be specified in the following form:
-\begin{itemize}
-\item a Unicode code point
-\item the character itself (as a Lua string, like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ'+})
-\item a string like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+} (the character followed by an asterisk)
-\item several ``imaginary'' characters (We will describe these later.)
-\end{itemize}
+See Japanese version of this manual.
 %</en>
+
 %<*ja>
-このフィールドは文字クラス$i$に属する文字のリストである.このフィールドは$i=0$の
-場合には任意である(文字クラス0には,0以外の文字クラスに属するものを
-除いた全ての\textbf{JAchar}が属するから).このリスト中で文字を指定するには,以下の方法がある:
+以下に,\pTeX 用に作られた和文用TFMを\LuaTeX-ja用に移植する場合の注意点を挙げておく.
 \begin{itemize}
-\item Unicode におけるコード番号
-\item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ'+}」のような,文字それ自体
-\item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+}」のような,文字それ自体の後にアスタリスクをつけたもの
-\item いくつかの「仮想的な文字」(後に説明する)
+\item 実際に出力される和文フォントのサイズがdesign sizeとなる.
+このため,例えば$1\,\textrm{zw}$がdesign sizeの0.962216倍であるJISフォン
+      トメトリック等を移植する場合は,次のようにするべきである:
+\begin{itemize}
+\item JFM中の全ての数値を$1/0.962216$倍しておく.
+\item \TeX ソース中で使用するところで,サイズ指定を0.962216倍にする.
+      \LaTeX でのフォント宣言なら,例えば次のように:
+\begin{lstlisting}
+\DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[0.962216] psft:Ryumin-Light:jfm=jis}{}
+\end{lstlisting}
 \end{itemize}
-%</ja>
+\item 上に述べた特殊文字は,\texttt{'boxbdd'}を除き文字クラスを全部0とする
+      (JFM中に単に書かなければよい).
+\item \texttt{'boxbdd'}については,それのみで一つの文字クラスを形成し,その
+      文字クラスに関してはグルー/カーンの設定はしない.
 
-\item[width=<length>, height=<length>, depth=<length>, italic=<length>]
-%<en>(required)
-%<ja>(必須)
+これは,\pTeX では,
+      hboxの先頭・末尾とインデントされていない(\cs{noindent} で開始さ
+      れた)段落の先頭にはJFMグルーは入らないという仕様を実現させるためである.
+\item \pTeX の組版を再現させようというのが目的であれば以上の注意を守れば十分である.
 
-%<*en>
-\begin{table}[t]
- \centering
-\begin{tabular}{llr}
-\toprule
-Direction of JFM&\textbf{\texttt{'yoko'} (horizontal)}&\multicolumn{1}{l}{\textbf{\texttt{'tate'} (vertical)}}\\
-\midrule
-\texttt{width} field&\multicolumn{2}{c}{the width of the ``real'' glyph}\\
-\texttt{height} field&the height of the ``real'' glyph&0.0\\
-\texttt{depth} field&the depth of the ``real'' glyph&0.0\\
-\midrule
-\texttt{italic} field&\multicolumn{2}{c}{0.0}\\
-\bottomrule
-\end{tabular}
-\caption{Default values of \texttt{width} field and other fields}
-\label{tab-wid}
-\end{table}
-Specify the width of characters in character class~$i$, the height, the depth and
-the amount of italic correction. All characters in character class~$i$ are regarded that its width, height, and depth are
-as values of these fields. The default values are shown in \autoref{tab-wid}.
-%</en>
-%<*ja>
-\begin{table}[t]
- \centering
-\begin{tabular}{llr}
-\toprule
-JFM書字方向&\emph{\texttt{'yoko'}(横組)}&\multicolumn{1}{l}{\emph{\texttt{'tate'}(縦組)}}\\
-\midrule
-\texttt{width}&\multicolumn{2}{c}{「実際のグリフ」の幅}\\
-\texttt{height}&「実際のグリフ」の高さ&0.0\\
-\texttt{depth}&「実際のグリフ」の深さ&0.0\\
-\midrule
-\texttt{italic}&\multicolumn{2}{c}{0.0}\\
-\bottomrule
-\end{tabular}
-\caption{\texttt{width} フィールド等の標準値}
-\label{tab-wid}
-\end{table}
-文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する.
-文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
-値であるものとして扱われる.省略時や,数でない値を指定した時には表\nobreak\ref{tab-wid}に
-            示されている値を用いる.例えば,横組用JFMで \texttt{width} フィールドには数値以外の値を指
-            定した場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用
-            すれば,これによってプロポーショナル組を行うことができる.
+ところで,\pTeX では通常の段落の先頭にJFMグルーが残るという仕様があるので,
+      段落先頭の開き括弧は全角二分下がりになる.全角下がりを実現させるに
+      は,段落の最初に手動で \cs{inhibitglue} を追加するか,あるいは
+      \ \cs{everypar} のハックを行い,それを自動化させるしかなかった.
+
+一方,\LuaTeX-jaでは,\texttt{'parbdd'}によって,それがJFM側で調整できるよ
+うになった.例えば,\LuaTeX-ja同梱のJFMのように,\texttt{'boxbdd'}と同じ文字クラスに
+\texttt{'parbdd'}を入れれば全角下がりとなる.
+
+\begin{LTXexample}[width=0.4\textwidth]
+\jfont\g=KozMinPr6N-Regular:jfm=test \g
+\parindent1\zw\noindent{}◆◆◆◆◆
+\par 「◆◆←二分下がり
+\par 【◆◆←全角下がり
+\par 〔◆◆←全角二分下がり
+\end{LTXexample}
+\end{itemize}
+
+但し,\cs{everypar} を利用している場合にはこの仕組みは正しく動かない.
+そのような例としては箇条書き中の \cs{item} で始まる段落があり,\Pkg{ltjsclasses}では
+人工的に「\texttt{'parbdd'}の意味を持つ」whatsitノードを作ることによって対処している%
+\footnote{\texttt{ltjsclasses.dtx} を参照されたい.
+JFM側で一部の対処ができることにより,\Pkg{jsclasses}のようにif文の判定はしていない.}.
 %</ja>
 
-\item[left=<length>, down=<length>, align=<align>]\
+
+%<en>\subsection{Math font family}
+%<ja>\subsection{数式フォントファミリ}
+\label{ssec-math}
 
 %<*en>
-These fields are for adjusting the position of the ``real'' glyph. Legal
-            values of \texttt{align} field are \texttt{'left'},
-            \texttt{'middle'}, and \texttt{'right'}. If one of these
-            3~fields are omitted, \texttt{left} and \texttt{down} are
-            treated as~0, and \texttt{align} field is treated as
-            \texttt{'left'}.
-The effects of these 3~fields are indicated in
-\autoref{fig:pos}~and~\autoref{fig:pos-tate}.
+\TeX\ handles fonts in math formulas by 16~font families\footnote{Omega,
+Aleph, \LuaTeX~and $\varepsilon$-\kern-.125em(u)\pTeX\ can handles 256~families, but
+an external package is needed to support this in plain \TeX\ and
+\LaTeX.}, and each family has three fonts:
+\cs{textfont}, \cs{scriptfont} and \cs{scriptscriptfont}.
 %</en>
 %<*ja>
-これらのフィールドは実際のグリフの位置を調整するためにある.
-\texttt{align} フィールドに指定できる値は \texttt{'left'}, \texttt{'middle'},
-\texttt{'right'} のいずれかである.もしこれら3つのフィールドのうちの1つが省かれた
-場合,\texttt{left} と \texttt{down} は0,\texttt{align} フィールドは
-\ \texttt{'left'} であるものとして扱われる.
-これら3つのフィールドの意味については\autoref{fig:pos}(横組用和文フォント),
-\autoref{fig:pos-tate}(縦組用和文フォント)で説明する.
+\TeX\ は数式フォントを16のファミリ\footnote{Omega, Aleph, \LuaTeX,そして
+  $\varepsilon$-\kern-.125em(u)\pTeX\ では256の数式ファミリを扱うことができるが,
+  これをサポートするためにplain \TeX と\LaTeX では外部パッケージを読み込む必要が
+  ある.}で管理し,それぞれのファミリは3つのフォントを持っている:
+\cs{textfont}, \cs{scriptfont} そして \cs{scriptscriptfont} である.
 %</ja>
 
 %<*en>
-In most cases, \texttt{left} and \texttt{down} fields are~0, while
-it is not uncommon that the \texttt{align} field is \texttt{'middle'} or \texttt{'right'}.
-For example, setting the \texttt{align} field to \texttt{'right'} is practically needed
-when the current character class is the class for opening delimiters'.
+\LuaTeX-ja's handling of Japanese fonts in math formulas is similar;
+\autoref{tab-math} shows counterparts to \TeX's primitives for math
+font families. There is no relation between the value of
+\cs{fam} and that of \cs{jfam}; with appropriate settings,
+you can set both \cs{fam} and \cs{jfam} to the same value.
+Here <jfont\_cs> in the argument of \Param{jatextfont} etc.\ is
+a control sequence which is defined by \cs{jfont}, i.e.,
+a \emph{horizontal} Japanese font.
 %</en>
 %<*ja>
-多くの場合,\texttt{left}と\texttt{down}は0である一方,
-\texttt{align}フィールドが\texttt{'middle'}や\texttt{'right'}であることは
-珍しいことではない.
-例えば,\texttt{align}フィールドを\texttt{'right'}に指定することは,
-文字クラスが開き括弧類であるときに実際必要である.
+\LuaTeX-jaの数式中での和文フォントの扱いも同様である.
+\autoref{tab-math}は数式フォントファミリに対する \TeX のプリミティブと対応する
+ものを示している.\cs{fam} と \cs{jfam} の値の間には関係はなく,
+適切な設定の下では \cs{fam} と \cs{jfam} の両方に同じ値を設定することができる.
+\Param{jatextfont} 他の第2引数<jfont\_cs>は,\cs{jfont} で定義された
+\emph{横組用}和文フォントである.\cs{tfont} で定義された
+\emph{縦組用}和文フォントを指定することは想定していない.
 %</ja>
 
-\begin{figure}[!tb]
-\begin{minipage}{0.4\textwidth}%
-\begin{center}\unitlength=10pt\small
-\begin{picture}(15,12)(-1,-4)
-\color{b_gray}% jfm
-\put(0,0){\vrule width 12\unitlength height 8\unitlength depth 3\unitlength}
-
-\color{b_pink}% step1
-\put(-1,-1.5){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
-
-\color{red}% real glyph
-\thicklines
-\put(-1,-1.5){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
-\put(5,-1.5){\line(0,1){7}\line(0,-1){2.5}}
-\put(-1,5.5){\line(1,0){6}}
-\put(-1,-4){\line(1,0){6}}
-
-\color{b_green}% real glyph
-\put(3,0){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
-
-\color{black}% jfm
-\thicklines
-\put(0,0){\vector(0,1){8}\line(0,-1){3}\vector(1,0){12}}
-\put(12,0){\line(0,1){8}\vector(0,-1){3}}
-\put(0,8){\line(1,0){12}}
-\put(0,-3){\line(1,0){12}}
-\put(0.2,4){\makebox(0,0)[l]{\texttt{height}}}
-\put(12.2,-1.5){\makebox(0,0)[l]{\texttt{depth}}}
-\put(6,0.2){\makebox(0,0)[b]{\texttt{width}}}
-
-\color{green}% step1
-\thicklines
-\put(3,0){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
-\put(9,0){\line(0,1){7}\line(0,-1){2.5}}
-\put(3,7){\line(1,0){6}}
-\put(3,-2.5){\line(1,0){6}}
-\newsavebox{\eqdist}
-\savebox{\eqdist}(0,0)[b]{%
-  \thinlines
-  \put(-0.08,0.2){\line(0,-1){0.4}}%
-  \put(0.08,0.2){\line(0,-1){0.4}}}
-\put(1.5,0){\usebox{\eqdist}}
-\put(10.5,0){\usebox{\eqdist}}
-
-\color{blue}% shifted
-\thicklines
-\put(3,-1.5){\vector(-1,0){4}}
-\put(1,-1.7){\makebox(0,0)[t]{\texttt{left}}}
-\put(3,0){\vector(0,-1){1.5}}
-\put(3.2,-0.75){\makebox(0,0)[l]{\texttt{down}}}
-\end{picture}
-\end{center}
-\end{minipage}%
-\begin{minipage}{0.6\textwidth}%
+\begin{table}[!tb]
+%<en>\caption{Commands for Japanese math fonts}
+%<ja>\caption{和文数式フォントに対する命令}
+\label{tab-math}
+%<en>\medskip
+\centering
+\def\{{\char`\{}\def\}{\char`\}}\small
+\begin{tabular}{ll}
+\toprule
+%<en>\bf Japanese fonts&\bf alphabetic fonts\\
+%<ja>\bf 和文フォント&\bf 欧文フォント\\
+\midrule
+\cs{jfam}${}\in [0,256)$&\cs{fam}\\
+\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{textfont}<fam>=<font\_cs>\\
+\tt\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptfont}<fam>=<font\_cs>\\
+\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptscriptfont}<fam>=<font\_cs>\\
+\bottomrule
+\end{tabular}
+\end{table}
+
+%<en>\subsection{Callbacks}
+%<ja>\subsection{コールバック}
+
 %<*en>
-Consider a  Japanese character node which belongs to
-a character class whose the \texttt{align}
-field is \texttt{'middle'}.
+\LuaTeX-ja also has several callbacks. These callbacks can
+be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks.
 %</en>
 %<*ja>
-\texttt{align}フィールドの値が \texttt{'middle'} であるような文字クラスに属する
-和文文字ノードを考えよう.
+\LuaTeX 自体のものに加えて,\LuaTeX-jaもコールバックを持っている.
+これらのコールバックには,他のコールバックと同様に \verb+luatexbase.add_to_callback+
+関数などを用いることでアクセスすることができる.
 %</ja>
-\begin{itemize}
-\item
+\begin{description}[font=\bfseries, style=nextline]
+%<en>\item[\texttt{luatexja.load\_jfm} callback]
+%<ja>\item[\texttt{luatexja.load\_jfm}コールバック]
 %<*en>
-The black rectangle is the imaginary body of the node.
-Its width, height, and depth are specified by JFM.
+With this callback you can overwrite JFMs.
+This callback is called when a new JFM is loaded.
 %</en>
 %<*ja>
-黒色の長方形はノードの枠であり,
\81\9dã\81®å¹\85ï¼\8cé«\98ã\81\95ï¼\8cæ·±ã\81\95ã\81¯JFMã\81«ã\82\88ã\81£ã\81¦æ\8c\87å®\9aã\81\95ã\82\8cã\81¦ã\81\84る.
+このコールバックを用いることでJFMを上書きすることができる.
\81\93ã\81®ã\82³ã\83¼ã\83«ã\83\90ã\83\83ã\82¯ã\81¯æ\96°ã\81\97ã\81\84JFMã\81\8c読ã\81¿è¾¼ã\81¾ã\82\8cã\82\8bã\81¨ã\81\8dã\81«å\91¼ã\81³å\87ºã\81\95ã\82\8cる.
 %</ja>
-\item
+
+\begin{lstlisting}[numbers=left]
+function (<table> jfm_info, <string> jfm_name)
+  return <table> new_jfm_info
+end
+\end{lstlisting}
+
 %<*en>
-Since the \texttt{align} field is \texttt{'middle'},
-the ``real'' glyph is centered horizontally (the green rectangle) first.
+The argument \verb+jfm_info+ contains a table similar to the table in a JFM file, except
+this argument has \texttt{chars} field which contains character codes
+            whose character class is not~0.
 %</en>
 %<*ja>
-\texttt{align}フィールドは \texttt{'middle'} なので
-実際のグリフの位置はまず水平方向に中央揃えしたものとなる(緑色の長方形)
+引数 \verb+jfm_info+ はJFMファイルのテーブルと似たものが格納されるが
+クラス0を除いた文字のコードを含んだ\texttt{chars}フィールドを持つ点が異なる
 %</ja>
-\item
+
 %<*en>
-Furthermore, the glyph is shifted according to values of fields
-      \texttt{left} and \texttt{down}. The ultimate position of the real
-      glyph is indicated by the red rectangle.
+An example of this callback is the \texttt{ltjarticle} class, with
+            forcefully assigning character class~0 to \texttt{'parbdd'}
+            in the JFM \texttt{jfm-min.lua}.
 %</en>
 %<*ja>
\81\95ã\82\89ã\81«ï¼\8cã\82°ã\83ªã\83\95ã\81¯ \texttt{left} ã\81¨ \texttt{down} ã\81®å\80¤ã\81«å¾\93ã\81£ã\81¦ã\82·ã\83\95ã\83\88ã\81\95ã\82\8cã\82\8bï¼\8e
-最終的な実際のグリフの位置は赤色の長方形で示された位置になる.
\81\93ã\81®ã\82³ã\83¼ã\83«ã\83\90ã\83\83ã\82¯ã\81®ä½¿ç\94¨ä¾\8bã\81¯\texttt{ltjarticle}ã\82¯ã\83©ã\82¹ã\81«ã\81\82ã\82\8aï¼\8c
+\texttt{jfm-min.lua}中の\texttt{'parbdd'}を強制的にクラス0に割り当てている.
 %</ja>
-\end{itemize}
-\end{minipage}
-\medskip
-
-\caption{%
-%<en>The position of the real glyph (horizontal Japanese fonts)
-%<ja>横組和文フォントにおける「実際の」グリフの位置
-}
-\label{fig:pos}
-\end{figure}
-\begin{figure}[!tb]
-\begin{minipage}{0.4\textwidth}%
-\begin{center}\unitlength=10pt\small
-\begin{picture}(15,12)(-6,0)
-\color{b_gray}% jfm
-\put(-6,0){\vrule width 12\unitlength height 11\unitlength}
-
-\color{b_pink}% real glyph
-\put(-6.5,5.5){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
-
-\color{red}% real glyph
-\thicklines
-\put(-6.5,5.5){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
-\put( 1.5,5.5){\line(0,1){6}\line(0,-1){3}}
-\put(-6.5,11.5){\line(1,0){8}}
-\put(-6.5,2.5){\line(1,0){8}}
-
-\color{b_green}% step1
-\put(-4,3){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
-
-\color{black}% jfm
-\thicklines
-\put(0,11){\vector(1,0){6}\vector(-1,0){6}\vector(0,-1){11}}
-\put(0,0){\line(1,0){6}\line(-1,0){6}}
-\put(-6,0){\line(0,1){11}}
-\put( 6,0){\line(0,1){11}}
-\put( 3,10.8){\makebox(0,0)[t]{\texttt{height}}}
-\put(-3,10.8){\makebox(0,0)[t]{\texttt{depth}}}
-\put(0.2,5.5){\makebox(0,0)[l]{\texttt{width}}}
-
-\color{green}% step1
-\thicklines
-\put(-4,3){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
-\put( 4,3){\line(0,1){6}\line(0,-1){3}}
-\put(-4,9){\line(1,0){8}}
-\put(-4,0){\line(1,0){8}}
-\savebox{\eqdist}(0,0)[b]{%
-  \thinlines
-  \put(-0.08,0.2){\line(0,-1){0.4}}%
-  \put(0.08,0.2){\line(0,-1){0.4}}}
-\put(2,9){\usebox{\eqdist}}
-\put(-2,9){\usebox{\eqdist}}
 
-
-\color{blue}% shifted
-\thicklines
-\put(-4,3){\vector(0,1){2.5}}
-\put(-3.8,4.25){\makebox(0,0)[l]{\texttt{left}}}
-\put(-4,5.5){\vector(-1,0){2.5}}
-\put(-5.,5.7){\makebox(0,0)[b]{\texttt{down}}}
-\end{picture}
-\end{center}
-\end{minipage}%
-\begin{minipage}{0.6\textwidth}%
+%<en>\item[\texttt{luatexja.define\_jfont} callback]
+%<ja>\item[\texttt{luatexja.define\_jfont}コールバック]
 %<*en>
-(\dots)
+This callback and the next callback form a pair, and you can assign characters
+ which do not have fixed code points in Unicode to non-zero character classes.
+This \texttt{luatexja.define\_font} callback is called just when new Japanese font is loaded.
 %</en>
 %<*ja>
-\texttt{align}フィールドの値が \texttt{'right'} であるような文字クラスに属する
-和文文字を考えよう.
-\begin{itemize}
-\item
-実際のグリフの「垂直位置」は,まずベースラインが文字の物理的な左右方向の中央を通る
-位置となる.
-\item
-また,この場合 \texttt{align} フィールドは \texttt{'right'} なので,
-「水平位置」は字送り方向に「右寄せ」したものとなる(緑色の長方形).
-\item
-その後さらに \texttt{left} と \texttt{down} の値に従ってシフトされる
-のは横組用和文フォントと変わらない.
-\end{itemize}
+このコールバックと次のコールバックは組をなしており,Unicode中に固定された文字コード
+番号を持たない文字を非零の文字クラスに割り当てることができる.
+このコールバックは新しい和文フォントが読み込まれたときに呼び出される.
 %</ja>
-\end{minipage}
-\medskip
-
-\caption{%
-%<en>The position of the real glyph (vertical Japanese fonts)
-%<ja>縦組和文フォントにおける「実際の」グリフの位置
-}
-\label{fig:pos-tate}
-\end{figure}
-
-\item[kern={\{[$j$]=<kern>, [$j'$]=\{<kern>, [ratio=<ratio>]\}, ...\}}]
-\nopagebreak
-\item[glue={\{[$j$]=\{<width>, <stretch>, <shrink>, [ratio=<ratio>, ...]\}, ...\}}]\leavevmode
-%<*ja>
-
-文字クラス$i$の文字と$j$の文字の間に挿入されるカーンやグルーの量を指定する.
-
-<ratio>は,グルーの自然長のうちどれだけの割合が「後の文字」由来かを示す量で,
-$0$から$+1$の実数値をとる.省略時の値は$0.5$である.
-このフィールドの値は\Param{differentjfm}の値が
-\texttt{pleft},~\texttt{pright},~\texttt{paverage}の値のときのみ実際に用いられる.
 
-例えば,\cite{x4051}では,句点と中点の間には,
-句点由来の二分空きと中点由来の四分空きが挿入されるが,この場合には
+\begin{lstlisting}[numbers=left]
+function (<table> jfont_info, <number> font_number)
+  return <table> new_jfont_info
+end
+\end{lstlisting}
+%<*en>
+\verb+jfont_info+ has the following fields,
+\emph{which may not overwritten by a user}:
+\begin{description}
+\item[\texttt{size}]
+The font size specified at \cs{jfont} in scaled points ($1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$).
+\item[\texttt{zw}, \texttt{zh}, \texttt{kanjiskip}, \texttt{xkanjiskip}]
+These are scaled value of those specified by the JFM, by the font size.
+\item[\texttt{jfm}]
+The internal number of the JFM.
+\item[\texttt{var}]
+The value of \texttt{jfmvar}~key, which is specified at \cs{jfont}.
+The default value is the empty string.
+\item[\texttt{chars}]
+The mapping table from character codes to its character classes.\\
+The specification \texttt{[i].chars=\{<character>, ...\}} in the JFM will be  stored in this
+          field as \texttt{chars=\{[<character>]=\,$i$, ...\}}.
+\item[\texttt{char\_type}]
+For $i\in\omega$, \texttt{char\_type[$i$]} is information of characters whose class is
+          $i$, and has the following fields:
 \begin{itemize}
-\item <width>には$0.5+0.25=0.75$を指定する.
-\item <ratio>には$0.25/(0.5+0.25)=1/3$を指定する.
+ \item \texttt{width},~\texttt{height}, \texttt{depth},
+  \texttt{italic}, \texttt{down},~\texttt{left}\ are just
+       scaled value of those specified by the JFM, by the font size.
+ \item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM:
+\[
+ \begin{cases}
+  0&\text{\texttt{'left'} (default)}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
+ \end{cases}
+\]
 \end{itemize}
-%</ja>
-%<*en>
-\
-
-Specifies the amount of kern or glue which will be inserted
-between characters in character class~$i$ and those in character class~$j$.
-
-<ratio> specifies how much the glue is originated in the ``right'' character.
-It is a real number between 0 and 1, and treated as 0.5 if omitted. For example,
-The width of a glue between an ideographic full stop ``。''
-and a fullwidth middle dot ``・'' is three-fourth of fullwidth,
-namely halfwidth from the ideographic full stop, and
-quarter-width from the fullwidth middle dot.  In this case,
-we specify <ratio> to $0.25/(0.5+0.25)=1/3$.
+For $i$,~$j\in \omega$, \texttt{char\_type[$i$][$j$]} stores a kern or a glue which will be inserted
+between character class~$i$ and class~$j$.
+\end{description}
 %</en>
-
 %<*ja>
-グルーの指定においては,上記に加えて各 \texttt{[$j$]} の各サブテーブル内に
-次のキーを指定できる,
-\begin{cslist}[style=standard]
-\item[priority=<priority>]
-             \Pkg{luatexja-adjust}による優先順位付き
-            行長調整(\ref{ssec-adj}節)において,このグルーの優先度を指定する.許される値は以下の通り:
+\verb+jfont_info+ は最低限以下のフィールドを持つが,これらを書き換えてはならない:
+\begin{cslist}
+\item[size]
+実際に使われるフォントサイズ(sp単位).$1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$.
+\item[zw\textrm{, }zh\textrm{, }kanjiskip\textrm{, }xkanjiskip]
+JFMファイルで指定されているそれぞれの値をフォントサイズに合わせてスケーリングしたものを
+sp単位で格納している.
+\item[jfm]
+利用されているJFMを識別するための番号.
+\item[var]
+\cs{jfont},~\cs{tfont} で指定された \texttt{jfmvar} キーの値(未指定のときは空文字列).
+\item[chars]
+文字コードから文字クラスへの対応が記述されたテーブル.\\
+JFM内の \texttt{[i].chars=\{<character>, ...\}} という指定は\
+\texttt{chars=\{[<character>]=\,$i$, ...\}} という形式に変換されている.
+\item[char\_type]
+$i\in\omega$に対して,\texttt{char\_type[$i$]} は文字クラス$i$の文字の寸法を格納しており,
+以下のフィールドを持つ.
+\begin{itemize}
+ \item \texttt{width},~\texttt{height}, \texttt{depth},
+  \texttt{italic}, \texttt{down},~\texttt{left}\ は
+JFMで指定されているそれぞれの値をスケーリングしたものである.
+ \item \texttt{align} はJFMで指定されている値によって,
+\[
+ \begin{cases}
+  0&\text{\texttt{'left'}や省略時}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
+ \end{cases}
+\]
+のいずれかの値をとる.
+\end{itemize}
+$i$,~$j\in \omega$に対して,\texttt{char\_type[$i$][$j$]} は
+文字クラス$i$の文字と$j$の文字の間に挿入されるグルーやカーンを格納している.
+\begin{itemize}
+  \item 間に入るものがカーンであれば,この値は\
+\texttt{[$j$]=\{[1]=<kern\_node>, ratio=<ratio>\}} であり,
+<kern\_node>はカーンを表すノードそのものである\footnote{%
+バージョン20150420.0以降ではノードのアクセス手法にdirect access
+      modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし
+      か見えないことに注意.
+}.
+  \item グルーであれば,この値は以下のキーを持つテーブルである.
   \begin{description}
-    \item[バージョン1のとき] $-4$から$+3$の間の整数
-    \item[バージョン2のとき] $-4$から$+3$の間の整数の2つ組\texttt{\{<stretch>, <shrink>\}}か,
-    または$-4$から$+3$の間の整数.<stretch>, <shrink>はそれぞれこのグルーが伸びるときの優先度,縮むときの
-    優先度であり,単に整数$i$が指定された場合は\texttt{\{$i$, $i$\}}であると解釈される.
+    \item[\texttt{width}, \texttt{stretch}, \texttt{shrink}]
+    グルーのそれぞれ自然長,伸び量,縮み量をsp単位で表したもの.
+    \item[\texttt{priority}] バ(ージョン2以降の)JFMでの指定 \texttt{\{<stretch>,<shrink>\}} を
+    \[
+      (\text{<stretch>}+4)\cdot 8+\text{<shrink>}+4
+    \]
+    として0--63の整数にパックしたもの.
+    \item[\texttt{ratio}, \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch}, \texttt{kanjiskip\_shrink}]
+    JFM中の同名のフィールドの値がそのまま使われている.
   \end{description}
-  ここで指定する値は,大きい値ほど「先に伸ばされる」「先に縮ませる」ことを意味しており,省略時の値
-             は0である.範囲外の値が指定されたときの動作は未定義である.
-\item[kanjiskip\_natural=<num>\textrm{, }%
-  kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
-  \label{pg:ksp_nat}
-
-JFMによって本来挿入されるグルーの他に
-\Param{kanjiskip}分の空白を自然長(\texttt{kanjiskip\_natural}),伸び量(\texttt{kanjiskip\_stretch}),
-縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する\footnote{本来\Param{xkanjiskip}が挿入される場所においては
-            \Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに.追加できる.}%
-ための指定である.いずれも省略された場合のデフォルト値は0(追加しない)である.
-
-例えば,\LuaTeX-jaの横組標準JFMの \texttt{jfm-ujis.lua} では,
-\begin{itemize}
- \item 通常の文字「あ」と開き括弧類の間に入るグルーは,自然長・縮み量半角,伸び量0のグルー
-となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
-       た分だけ伸びることが許される.
- \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と通常の文字「う」「え」の間にも
-自然長・縮み量半角,伸び量0のグルー
-となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
-       た分だけ伸びることが許される.
 \end{itemize}
-となっている.従って,以下のような組版結果を得る.
-
-\medskip
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-\end{LTXexample}
-
+\item[ascent\textrm{, }descent]
+……
+\item[chars\_cbcache]
+文字クラス決定の処理で.キャッシュとして使われる.
 \end{cslist}
 %</ja>
-%<*en>
-In case of glue, one can specify following additional keys in each \texttt{[$j$]}
-            subtable:
-\begin{cslist}[style=standard]
-\item[priority=<priority>]
-An integer in $[-4,3]$ (treated as 0 if omitted), or
-a pair of these integers \texttt{\{<stretch>, <shrink>\}} (version~2 only).
-This is
-used only in line adjustment with priority by \Pkg{luatexja-adjust}
-(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to stretch,
-and is also easy to shrink. 
-\item[kanjiskip\_natural=<num>\textrm{, }%
-  kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
-
-These keys specifies the amount of the natural width of \Param{kanjiskip}
-(the stretch/shrink part, respectively) which will be inserted
-in addition to the original JFM glue. Default values of them are all 0.
-
-As an example, in \texttt{jfm-ujis.lua}, the standard JFM in horizontal writing, we have
-\begin{itemize}
- \item Between an ordinal letter ``あ'' and an ideographic opening bracket, we have
-a glue whose natural part and shrink part are both half-width, while its stretch part is
-       zero. However, this glue also can be stretched
-       as much as the stretch part of \Param{kanjiskip} times the value of
-       \texttt{kanjiskip\_stretch} key (1 in this case).
- \item Between an ideographic closeing brackets (the ideographic comma ``,''
-       is included) and an ordinal letter, we have the same glue.
-       Again, this glue also can be stretched
-       as much as the stretch part of \Param{kanjiskip} times the value of
-       \texttt{kanjiskip\_stretch} key (1 in this case).
-\end{itemize}
-Hence we have the following result:
-
-\medskip
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-\end{LTXexample}
 
-\end{cslist}
+%<*en>
+The returned table \verb+new_jfont_info+ also should include these fields, but
+you are free to add more fields (to use them in the \texttt{luatexja.find\_char\_class} callback).
+The \verb+font_number+ is a font number.
 %</en>
-
-\item[end\_stretch=<kern>, end\_shrink=<kern>]
 %<*ja>
-(任意,バージョン1のみ)
-
-優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が行
-            末に来た時に,行長を詰める調整・伸ばす調整のた
-             めにこの文字と行末の間に挿入可能なカーンの大きさを指定する.
+戻り値の \verb+new_jfont_info+ テーブルも上に述べたフィールドをそのまま含まなければならないが,
+それ以外にユーザが勝手にフィールドを付け加えることは自由である.
+\verb+font_number+ はフォント番号である.
 %</ja>
+
 %<*en>
-(optional, version~1 only)
+A good example of this and the next callbacks is the \Pkg{luatexja-otf}
+            package, supporting \verb+"AJ1-xxx"+ form for Adobe-Japan1
+            CID characters in a JFM. This callback doesn't replace any
+            code of \LuaTeX-ja.
 %</en>
-
-  \item[end\_adjust=\{<kern>, <kern>, ...\}]
 %<*ja>
-(任意,バージョン2のみ)
-
-優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が
-  行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが
-  挿入される(\autoref{ssec-adj}参照).
+これと次のコールバックの良い使用例は\Pkg{luatexja-otf}パッケージであり,
+JFM中でAdobe-Japan1 CIDの文字を \verb+"AJ1-xxx"+ の形で指定するために
+用いられている.
+%</ja>
 
-バージョン1における
-\begin{lstlisting}[escapechar=\$]
-    end_stretch = $a$, end_shrink = $b$
-\end{lstlisting}
-という指定は,バージョン2では次の指定と同じになる.
-\begin{lstlisting}[escapechar=\$]
-    end_adjust = {$-b$, 0.0, $a$}
-\end{lstlisting}
-もし真ん中の \texttt{0.0} がない場合は,$a$か$-b$かいずれかのカーンが常に行末に追加される.
+%<en>\item[\texttt{luatexja.find\_char\_class} callback]
+%<ja>\item[\texttt{luatexja.find\_char\_class}コールバック]
+%<*en>
+This callback is called just when \LuaTeX-ja is trying to determine which
+            character class a character \verb+chr_code+ belongs.
+A function used in this callback should be in the following form:
+%</en>
+%<*ja>
+このコールバックは\LuaTeX-jaが \verb+chr_code+ の文字がどの文字クラスに
+属するかを決定しようとする際に呼び出される.
+このコールバックで呼び出される関数は次の形をしていなければならない:
 %</ja>
+\begin{lstlisting}[numbers=left]
+function (<number> char_class, <table> jfont_info, <number> chr_code)
+  if char_class~=0 then return char_class
+  else
+    ....
+    return (<number> new_char_class or 0)
+  end
+end
+\end{lstlisting}
+
 %<*en>
-(optional, version~2 only)
+The argument \verb+char_class+ is the result of \LuaTeX-ja's default
+            routine or previous function calls in this callback, hence
+            this argument may not be 0. Moreover, the returned
+            \verb+new_char_class+ should be as same as \verb+char_class+ when \verb+char_class+
+            is not~0, otherwise you will overwrite the \LuaTeX-ja's
+            default routine.
 %</en>
+%<*ja>
+引数 \verb+char_class+ は\LuaTeX-jaのデフォルトルーチンか,このコールバックの
+直前の関数呼び出しの結果を含んでおり,したがってこの値は0ではないかもしれない.
+さらに,戻り値の \verb+new_char_class+ は \verb+char_class+ が非零のときには
+\verb+char_class+ の値と同じであるべきで,そうでないときは\LuaTeX-jaの
+デフォルトルーチンを書き換えることになる.
+%</ja>
 
-\end{cslist}
+%<en>\item[\texttt{luatexja.set\_width} callback]
+%<ja>\item[\texttt{luatexja.set\_width}コールバック]
+%<*en>
+This callback is called when \LuaTeX-ja is trying to encapsule a
+            \textbf{JAchar} \textit{glyph\_node}, to adjust its
+            dimension and position.
+%</en>
+%<*ja>
+このコールバックは\LuaTeX-jaが\textbf{JAchar}の寸法と位置を調節するために
+その\textit{glyph\_node}をカプセル化しようとする際に呼び出される.
+%</ja>
+\begin{lstlisting}[numbers=left]
+function (<table> shift_info, <table> jfont_info, <table> char_type)
+  return <table> new_shift_info
+end
+\end{lstlisting}
 
+%<*en>
+The argument \verb+shift_info+ and the returned \verb+new_shift_info+ have
+\texttt{down} and \texttt{left} fields, which are the amount of shifting
+            down/left the character in a scaled point.
+%</en>
 %<*ja>
-\paragraph{文字クラスの決定}
-文字からその文字の属する文字クラスを算出する過程について,
¬¡ã\81®å\86\85容ã\82\92å\90«ã\82\93ã\81  \texttt{jfm-test.lua} ã\82\92ç\94¨ã\81\84ã\81¦èª¬æ\98\8eã\81\99る.
+引数 \verb+shift_info+ と戻り値の \verb+new_shift_info+ は
+\texttt{down}と\texttt{left}のフィールドを持ち,これらの値は
\96\87å­\97ã\81®ä¸\8bï¼\8få·¦ã\81¸ã\81®ã\82·ã\83\95ã\83\88é\87\8fï¼\88spå\8d\98ä½\8dï¼\89ã\81§ã\81\82る.
 %</ja>
+
 %<*en>
-\paragraph{Character to character classes}
-We explain how the character class of a character is determined,
-using  \texttt{jfm-test.lua} which contains the following:
+A good example is \Pkg{test/valign.lua}.
+After loading this file, the vertical position of glyphs is automatically
+adjusted; the ratio $(\hbox{height}:\hbox{depth})$ of glyphs is adjusted
+to be that of letters in the character class~0. For example, suppose that
+\begin{itemize}
+\item The setting of the JFM: $(\hbox{height})=88x$, $(\hbox{depth})=12x$
+  (the standard values of Japanese OpenType fonts);
+\item The value of the real font: $(\hbox{height})=28y$, $(\hbox{depth})=5y$
+  (the standard values of Japanese TrueType fonts).
+\end{itemize}
+Then, the position of glyphs is shifted up by
 %</en>
-\begin{lstlisting}
-   [0] = {
-      chars = { '漢' },
-      align = 'left', left = 0.0, down = 0.0,
-      width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
-   },
-   [2000] = {
-      chars = { '。', 'ヒ' },
-      align = 'left', left = 0.0, down = 0.0,
-      width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
-   },
-\end{lstlisting}
-%<ja>ここで,次のような入力とその実行結果を考える:
-%<en>Now consider the following input/output:
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
-\setbox0\hbox{\a ヒ漢}
-\the\wd0
-\end{LTXexample}
+%<*ja>
+良い例が\Pkg{test/valign.lua}である.このファイルが読み込まれた状態では,
+            JFM内で規定された文字クラス0の文字における$(\hbox{高
+            さ}):(\hbox{深さ})$の比になるように,実際のフォントの出力上
+            下位置が自動調整される.例えば,
+\begin{itemize}
+\item JFM側の設定:$(\hbox{高さ})=88x$, $(\hbox{深さ})=12x$%
+(和文OpenTypeフォントの標準値)
+\item 実フォント側の数値:$(\hbox{高さ})=28y$, $(\hbox{深さ})=5y$(和文TrueTypeフォントの標準値)
+\end{itemize}
+となっていたとする.すると,実際の文字の出力位置は,以下の量だけ上にずらされることとなる:
+%</ja>
+\[
+ \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
+\]
+\end{description}
+
+
+
+%<en>\section{Parameters}
+%<ja>\section{パラメータ}
+\subsection{\cs{ltjsetparameter}}
+\label{ssec-param}
+
 %<*en>
-Now we look why the above source outputs 15\,pt.
-\begin{enumerate}
-\item The character ``ヒ'' is converted to its half width  form ``ヒ'' by \verb+hwid+ feature.
-\item According to the JFM, the character class of ``ヒ'' is 2000, hence its width is halfwidth.
-\item The character class of ``漢'' is zero,  hence its width is fullwidth.
-\item Hence the width of \cs{hbox} equals to 15\,pt.
-\end{enumerate}
-This example shows that the character class of a character is generally determined \emph{after
-applying font features by \Pkg{luaotfload}}.
+As described before, \cs{ltjsetparameter} and \cs{ltjgetparameter} are
+commands for accessing most parameters of \LuaTeX-ja. One of the main
+reason that \LuaTeX-ja didn't adopted the syntax similar to that of \pTeX\
+(\textit{e.g.},~\verb+\prebreakpenalty`)=10000+)
+is the position of \verb+hpack_filter+ callback in the source
+of \LuaTeX, see Section~\ref{sec-para}.
+%</en>
+%<*ja>
+先に述べたように,\LuaTeX-jaの内部パラメータにアクセスするには
+\cs{ltjsetparameter}(または \cs{ltjglobalsetparameter})と \cs{ltjgetparameter} を用いる.
+\LuaTeX-jaが\pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
+採用しない理由の一つは,\LuaTeX のソースにおける \verb+hpack_filter+
+コールバックの位置にある.\ref{sec-para}章を参照.
+%</ja>
+
+%<*en>
+\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands
+for assigning parameters. These take one argument which is a
+\texttt{<key>=<value>} list.
+The difference between these two commands is the
+scope of assignment;
+\cs{ltjsetparameter} does a local assignment and
+\cs{ltjglobalsetparameter} does a global one.
+They also obey the value of \cs{globaldefs}, like other assignments.
 %</en>
 %<*ja>
-上記の出力結果が,15\,ptとなっているのは理由によるものである:
-\begin{enumerate}
-\item \verb+hwid+ featureによって「ヒ」が半角幅のグリフ「ヒ」と置き換わる(\Pkg{luaotfload} による処理).
-\item JFMによれば,この「ヒ」のグリフの文字クラスは2000である.
-\item 以上により文字クラス2000とみなされるため,結果として「ヒ」の幅は半角だと認識される.
-\end{enumerate}
-この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の結果に基づく}ことを
-示している.
+\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} はパラメータを
+指定するための命令で,\texttt{<key>=<value>}のリストを
+引数としてとる.両者の違いはスコープであり,
+\cs{ltjsetparameter} はローカルな設定を行うのに対し,
+\cs{ltjglobalsetparameter} はグローバルな設定を行う.
+また,他のパラメータ指定と同様に \cs{globaldefs} の値にも従う.
 %</ja>
 
 %<*en>
-However, if the class determined by the glyph after application of features is zero,
-\LuaTeX-ja adopts the class determined by the glyph \emph{before} application of features.
-The following input is an example.
+The following is the list of parameters which can be specified by the
+\cs{ltjsetparameter} command. [\cs{cs}] indicates the counterpart
+in \pTeX, and symbols beside each parameter has the following meaning:
 %</en>
 %<*ja>
-但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,置換前の文字クラスを採用する.
+以下は \cs{ltjsetparameter} に指定することができるパラメータの一覧である.
+[\cs{cs}]は\pTeX における対応物を示す.
+また,それぞれのパラメータの右上の記号には次の意味がある:
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
-\a 漢。\inhibitglue 漢
-\end{LTXexample}
+\begin{itemize}
 %<*en>
-Here, the character class of the ideographic full stop ``。''~(\texttt{U+3002}) is determined
-as follows:
-\begin{enumerate}
-\item As the case of ``ヒ'', the ideographic full stop ``。'' is converted to its vertical
-      form ``\char"FE12''~(\texttt{U+FE12}) by \verb+vert+ feature.%"
-\item The character class of ``\char"FE12'', according to the JFM  is \emph{zero}.
-\item However, \LuaTeX-ja remembers that this ``\char"FE12'' is obtained from ``。'' by
-      font features. The character class of ``。'' is \emph{non-zero value}, namely, 2000.
-\item Hence the ideographic full stop ``。'' in above belongs the character class~2000.
-\end{enumerate}
+\item ``$\ast$'' : values at the end of a paragraph or a hbox are
+adopted in the whole paragraph or the whole hbox.
 %</en>
 %<*ja>
-ここで,句点「。」(\texttt{U+3002})の文字クラスは,以下のようにして決まる.
-\begin{enumerate}
-\item \Pkg{luaotfload} によって縦組用句点のグリフに置き換わる.
-\item 置換後のグリフは \texttt{U+FE12} であり,JFMに従えば文字クラスは\emph{0}と判定される.
-\item この場合,置換前の横組用句点のグリフによって文字クラスを判定する.
-\item 結果として,上の出力例中の句点の文字クラスは2000となる.
-\end{enumerate}
+\item ``$\ast$'':段落やhboxの終端での値がその段落/hbox全体で用いられる.
 %</ja>
-
-
-%<ja>\paragraph{仮想的な文字}
-%<en>\paragraph{Imaginary characters}
 %<*en>
-As described before, you can specify several \emph{imaginary characters} in
-\texttt{chars} field. The most of these characters are regarded as the
-characters of class 0 in \pTeX.
-As a result, \LuaTeX-ja can control typesetting finer than \pTeX.
-The following is the list of imaginary characters:
+\item ``\dagger'': assignments are always global.
 %</en>
 %<*ja>
-上で説明した通り,\texttt{chars}フィールド中にはいくつかの「特殊文字」も
-指定可能である.これらは,大半が\pTeX のJFMグルーの挿入処理ではみな「文字
-クラス0の文字」として扱われていた文字であり,その結果として\pTeX より細か
-い組版調整ができるようになっている.以下でその一覧を述べる:
+\item ``\dagger'':指定は常にグローバルになる.
 %</ja>
+\end{itemize}
 
-\begin{cslist}
-%%\item['diffmet']
-%%<en>Used at a boundary between two \textbf{JAchar}s whose JFM or size is different.
-%%<ja>JFMやサイズが異なる2つの\textbf{JAchar}の間の境界として用いられる.
-
-\item['boxbdd']
-%<en>The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \cs{noindent}) paragraph.
-%<ja>hboxの先頭と末尾,及びインデントされていない(\cs{noindent} で開始された)段落の先頭を表す.
-
-\item['parbdd']
-%<en>The beginning of an (indented) paragraph.
-%<ja>通常の(\cs{noindent} で開始されていない)段落の先頭.
-
-\item['jcharbdd']
-%<en>A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue,\,\ldots).
-%<ja>\textbf{JAchar}と「その他のもの」(欧文文字,glue,kern等)との境界.
-
-\item[$-1$]
-%<en>The left/right boundary of an inline math formula.
-%<ja>行中数式と地の文との境界.
-\end{cslist}
+\begin{cslist}[style=standard]
+\item[\DParam{jcharwidowpenalty}\,=<penalty>$^\ast$] [\cs{jcharwidowpenalty}]\
 
-%<en>\paragraph{Porting JFM from \pTeX}
-%<ja>\paragraph{\pTeX 用和文用TFMの移植}
+%<*en>
+Penalty value for suppressing orphans. This penalty is inserted just
+            after the last \textbf{JAchar} which is not regarded as a
+            (Japanese) punctuation mark.
+%</en>
+%<*ja>
+パラグラフの最後の字が孤立して改行されるのを防ぐためのペナルティの値.
+このペナルティは(日本語の)句読点として扱われない最後の\textbf{JAchar}の直後に
+挿入される.
+%</ja>
 
-% ToDo: English version.
+\item[\DParam{kcatcode}\,=\{<chr\_code>,<natural number>\}$^\ast$]\
 
 %<*en>
-See Japanese version of this manual.
+An additional attributes which each character whose character code is <chr\_code> has.
+At version~20120506.0 or later, the lowermost bit of <natural number> indicates
+            whether the character is considered as a punctuation mark
+            (see the description of \Param{jcharwidowpenalty} above).
 %</en>
-
 %<*ja>
-以下に,\pTeX 用に作られた和文用TFMを\LuaTeX-ja用に移植する場合の注意点を挙げておく.
-\begin{itemize}
-\item 実際に出力される和文フォントのサイズがdesign sizeとなる.
-このため,例えば$1\,\textrm{zw}$がdesign sizeの0.962216倍であるJISフォン
-      トメトリック等を移植する場合は,次のようにするべきである:
-\begin{itemize}
-\item JFM中の全ての数値を$1/0.962216$倍しておく.
-\item \TeX ソース中で使用するところで,サイズ指定を0.962216倍にする.
-      \LaTeX でのフォント宣言なら,例えば次のように:
-\begin{lstlisting}
-\DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[0.962216] psft:Ryumin-Light:jfm=jis}{}
-\end{lstlisting}
-\end{itemize}
-\item 上に述べた特殊文字は,\texttt{'boxbdd'}を除き文字クラスを全部0とする
-      (JFM中に単に書かなければよい).
-\item \texttt{'boxbdd'}については,それのみで一つの文字クラスを形成し,その
-      文字クラスに関してはグルー/カーンの設定はしない.
+文字コードが<chr\_code>の文字が持つ付加的な属性値.
+バージョン20120506.0以降では,<natural number>の最下位ビットが,その文字が句読点と
+みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照).
+%</ja>
 
-これは,\pTeX では,
-      hboxの先頭・末尾とインデントされていない(\cs{noindent} で開始さ
-      れた)段落の先頭にはJFMグルーは入らないという仕様を実現させるためである.
-\item \pTeX の組版を再現させようというのが目的であれば以上の注意を守れば十分である.
+\item[\DParam{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}$^\ast$] [\cs{prebreakpenalty}]\
 
-ところで,\pTeX では通常の段落の先頭にJFMグルーが残るという仕様があるので,
-      段落先頭の開き括弧は全角二分下がりになる.全角下がりを実現させるに
-      は,段落の最初に手動で \cs{inhibitglue} を追加するか,あるいは
-      \ \cs{everypar} のハックを行い,それを自動化させるしかなかった.
+%<*ja>
+文字コード<chr\_code>の\textbf{JAchar}が行頭にくることを抑止するために,
+            この文字の前に挿入/追加されるペナルティの量を指定する.
 
-一方,\LuaTeX-jaでは,\texttt{'parbdd'}によって,それがJFM側で調整できるよ
-うになった.例えば,\LuaTeX-ja同梱のJFMのように,\texttt{'boxbdd'}と同じ文字クラスに
-\texttt{'parbdd'}を入れれば全角下がりとなる.
+例えば閉じ括弧「〗」は絶対に行頭にきてはならないので,
+\begin{lstlisting}
+\ltjsetparameter{prebreakpenalty={`〙,10000}}
+\end{lstlisting}
+と,最大値の10000が標準で指定されている.他にも,小書きのカナなど,絶対禁止とい
+            うわけではないができれば行頭にはきて欲しくない場合に,0と
+            10000の間の値を指定するのも有用であろう.
 
-\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=KozMinPr6N-Regular:jfm=test \g
-\parindent1\zw\noindent{}◆◆◆◆◆
-\par 「◆◆←二分下がり
-\par 【◆◆←全角下がり
-\par 〔◆◆←全角二分下がり
-\end{LTXexample}
+\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において,
+\begin{itemize}
+\item 一つの文字に対して,pre, postどちらか一つしか指定することができない%
+  \footnote{後から指定した方で上書きされる.}
+\item pre, post合わせて256文字分の情報を格納することしかできない
 \end{itemize}
-
-但し,\cs{everypar} を利用している場合にはこの仕組みは正しく動かない.
-そのような例としては箇条書き中の \cs{item} で始まる段落があり,\Pkg{ltjsclasses}では
-人工的に「\texttt{'parbdd'}の意味を持つ」whatsitノードを作ることによって対処している%
-\footnote{\texttt{ltjsclasses.dtx} を参照されたい.
-JFM側で一部の対処ができることにより,\Pkg{jsclasses}のようにif文の判定はしていない.}.
+という制限があったが,\LuaTeX-jaではこれらの制限は解消されている.
 %</ja>
+%<*en>
+Set a penalty which is inserted automatically before the character <chr\_code>,
+to prevent a line starts from this character. For example, a line cannot started
+with one of closing brackets ``〗'', so \LuaTeX-ja sets
+\begin{lstlisting}
+\ltjsetparameter{prebreakpenalty={`〙,10000}}
+\end{lstlisting}
+by default.
 
+\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty},
+but they don't exist in \LuaTeX-ja:
+\begin{itemize}
+ \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set
+for the same character.
+ \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters.
+\end{itemize}
+%</en>
 
-%<en>\subsection{Math font family}
-%<ja>\subsection{数式フォントファミリ}
-\label{ssec-math}
+\item[\DParam{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}$^\ast$]
+          [\cs{postbreakpenalty}]\
 
-%<*en>
-\TeX\ handles fonts in math formulas by 16~font families\footnote{Omega,
-Aleph, \LuaTeX~and $\varepsilon$-\kern-.125em(u)\pTeX\ can handles 256~families, but
-an external package is needed to support this in plain \TeX\ and
-\LaTeX.}, and each family has three fonts:
-\cs{textfont}, \cs{scriptfont} and \cs{scriptscriptfont}.
-%</en>
 %<*ja>
-\TeX\ は数式フォントを16のファミリ\footnote{Omega, Aleph, \LuaTeX,そして
-  $\varepsilon$-\kern-.125em(u)\pTeX\ では256の数式ファミリを扱うことができるが,
-  これをサポートするためにplain \TeX と\LaTeX では外部パッケージを読み込む必要が
-  ある.}で管理し,それぞれのファミリは3つのフォントを持っている:
-\cs{textfont}, \cs{scriptfont} そして \cs{scriptscriptfont} である.
+文字コード<chr\_code>の\textbf{JAchar}が行末にくることを抑止するために,
+            この文字の後に挿入/追加されるペナルティの量を指定する.
 %</ja>
-
 %<*en>
-\LuaTeX-ja's handling of Japanese fonts in math formulas is similar;
-\autoref{tab-math} shows counterparts to \TeX's primitives for math
-font families. There is no relation between the value of
-\cs{fam} and that of \cs{jfam}; with appropriate settings,
-you can set both \cs{fam} and \cs{jfam} to the same value.
-Here <jfont\_cs> in the argument of \Param{jatextfont} etc.\ is
-a control sequence which is defined by \cs{jfont}, i.e.,
-a \emph{horizontal} Japanese font.
+Set a penalty which is inserted automatically after the character <chr\_code>,
+to prevent a line ends with this character.
 %</en>
-%<*ja>
-\LuaTeX-jaの数式中での和文フォントの扱いも同様である.
-\autoref{tab-math}は数式フォントファミリに対する \TeX のプリミティブと対応する
-ものを示している.\cs{fam} と \cs{jfam} の値の間には関係はなく,
-適切な設定の下では \cs{fam} と \cs{jfam} の両方に同じ値を設定することができる.
-\Param{jatextfont} 他の第2引数<jfont\_cs>は,\cs{jfont} で定義された
-\emph{横組用}和文フォントである.\cs{tfont} で定義された
-\emph{縦組用}和文フォントを指定することは想定していない.
-%</ja>
-
-\begin{table}[!tb]
-%<en>\caption{Commands for Japanese math fonts}
-%<ja>\caption{和文数式フォントに対する命令}
-\label{tab-math}
-%<en>\medskip
-\centering
-\def\{{\char`\{}\def\}{\char`\}}\small
-\begin{tabular}{ll}
-\toprule
-%<en>\bf Japanese fonts&\bf alphabetic fonts\\
-%<ja>\bf 和文フォント&\bf 欧文フォント\\
-\midrule
-\cs{jfam}${}\in [0,256)$&\cs{fam}\\
-\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{textfont}<fam>=<font\_cs>\\
-\tt\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptfont}<fam>=<font\_cs>\\
-\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptscriptfont}<fam>=<font\_cs>\\
-\bottomrule
-\end{tabular}
-\end{table}
 
-%<en>\subsection{Callbacks}
-%<ja>\subsection{コールバック}
+\item[\DParam{jatextfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
+%<en>[\cs{textfont} in \TeX]
+%<ja>[\TeX の \cs{textfont}]
+\item[\DParam{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
+%<en>[\cs{scriptfont} in \TeX]
+%<ja>[\TeX の \cs{scriptfont}]
+\item[\DParam{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
+%<en>[\cs{scriptscriptfont} in \TeX]
+%<ja>[\TeX の \cs{scriptscriptfont}]
+\item[\DParam{yjabaselineshift}\,=<dimen>]\
+\item[\DParam{yalbaselineshift}\,=<dimen>] [\cs{ybaselineshift}]
+\item[\DParam{tjabaselineshift}\,=<dimen>]\
+\item[\DParam{talbaselineshift}\,=<dimen>] [\cs{tbaselineshift}]
+
+\item[\DParam{jaxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$]\
 
 %<*en>
-\LuaTeX-ja also has several callbacks. These callbacks can
-be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks.
+Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
+The followings are allowed for <mode>:
 %</en>
 %<*ja>
-\LuaTeX 自体のものに加えて,\LuaTeX-jaもコールバックを持っている.
-これらのコールバックには,他のコールバックと同様に \verb+luatexbase.add_to_callback+
-関数などを用いることでアクセスすることができる.
+文字コードが<chr\_code>の\textbf{JAchar}の前/後ろに\Param{xkanjiskip}の
+挿入を許すかどうかの設定.
+以下の<mode>が許される:
 %</ja>
-\begin{description}[font=\bfseries, style=nextline]
-%<en>\item[\texttt{luatexja.load\_jfm} callback]
-%<ja>\item[\texttt{luatexja.load\_jfm}コールバック]
+\begin{description}
+%<en>\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character.
+%<ja>\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される.
+%<en>\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after.
+%<ja>\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない.
+%<en>\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before.
+%<ja>\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない.
+%<en>\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed both before the character and after the character. This is the default value.
+%<ja>\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
+\end{description}
 %<*en>
-With this callback you can overwrite JFMs.
-This callback is called when a new JFM is loaded.
+This parameter is similar to the \cs{inhibitxspcode} primitive of \pTeX, but not compatible with \cs{inhibitxspcode}.
 %</en>
 %<*ja>
\81\93ã\81®ã\82³ã\83¼ã\83«ã\83\90ã\83\83ã\82¯ã\82\92ç\94¨ã\81\84ã\82\8bã\81\93ã\81¨ã\81§JFMã\82\92ä¸\8aæ\9b¸ã\81\8dã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bï¼\8e
-このコールバックは新しいJFMが読み込まれるときに呼び出される
\81\93ã\81®ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81¯\pTeX ã\81® \cs{inhibitxspcode} ã\83\97ã\83ªã\83\9fã\83\86ã\82£ã\83\96ã\81¨ä¼¼ã\81¦ã\81\84ã\82\8bã\81\8cï¼\8c
+互換性はない
 %</ja>
-
-\begin{lstlisting}[numbers=left]
-function (<table> jfm_info, <string> jfm_name)
-  return <table> new_jfm_info
-end
-\end{lstlisting}
+\item[\DParam{alxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$] [\cs{xspcode}]\
 
 %<*en>
-The argument \verb+jfm_info+ contains a table similar to the table in a JFM file, except
-this argument has \texttt{chars} field which contains character codes
-            whose character class is not~0.
+Set whether inserting \Param{xkanjiskip} is allowed before/after a
+            \textbf{ALchar} whose character code is <chr\_code>.
+             The followings are allowed for <mode>:
 %</en>
 %<*ja>
-引数 \verb+jfm_info+ はJFMファイルのテーブルと似たものが格納されるが,
-クラス0を除いた文字のコードを含んだ\texttt{chars}フィールドを持つ点が異なる.
+文字コードが<chr\_code>の\textbf{ALchar}の前/後ろに\Param{xkanjiskip}の
+挿入を許すかどうかの設定.
+以下の<mode>が許される:
 %</ja>
-
+\begin{description}
+%<en>\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character.
+%<ja>\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される.
+%<en>\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after.
+%<ja>\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない.
+%<en>\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before.
+%<ja>\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない.
+%<en>\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed before the character and after the character. This is the default value.
+%<ja>\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
+\end{description}
 %<*en>
-An example of this callback is the \texttt{ltjarticle} class, with
-            forcefully assigning character class~0 to \texttt{'parbdd'}
-            in the JFM \texttt{jfm-min.lua}.
+Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common table, hence these two parameters are synonyms of each other.
 %</en>
 %<*ja>
-このコールバックの使用例は\texttt{ltjarticle}クラスにあり
-\texttt{jfm-min.lua}中の\texttt{'parbdd'}を強制的にクラス0に割り当てている.
+\Param{jaxspmode}と\Param{alxspmode}は共通のテーブルを用いているため
+これら2つのパラメータは互いの別名となっていることに注意する.
 %</ja>
 
-%<en>\item[\texttt{luatexja.define\_jfont} callback]
-%<ja>\item[\texttt{luatexja.define\_jfont}コールバック]
+\item[\DParam{autospacing}\,=<bool>] [\cs{autospacing}]
+\item[\DParam{autoxspacing}\,=<bool>] [\cs{autoxspacing}]
+\item[\DParam{kanjiskip}\,=<skip>$^\ast$] [\cs{kanjiskip}]\
+
+%<*ja>
+デフォルトで2つの\textbf{JAchar}の間に挿入されるグルーである.
+通常では,\pTeX と同じようにフォントサイズに比例して変わることはない.
+しかし,自然長が \cs{maxdimen} の場合は,例外的に和文フォントのJFM側で指定されている
+値を採用(こちらはフォントサイズに比例)することになっている.
+%</ja>
 %<*en>
-This callback and the next callback form a pair, and you can assign characters
- which do not have fixed code points in Unicode to non-zero character classes.
-This \texttt{luatexja.define\_font} callback is called just when new Japanese font is loaded.
+The default glue which inserted between two \textbf{JAchar}s.
+Changing current Japanese font does not alter this parameter, as \pTeX.
+
+If the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses
+the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}).
 %</en>
+
+\item[\DParam{xkanjiskip}\,=<skip>$^\ast$] [\cs{xkanjiskip}]\
+
 %<*ja>
\81\93ã\81®ã\82³ã\83¼ã\83«ã\83\90ã\83\83ã\82¯ã\81¨æ¬¡ã\81®ã\82³ã\83¼ã\83«ã\83\90ã\83\83ã\82¯ã\81¯çµ\84ã\82\92ã\81ªã\81\97ã\81¦ã\81\8aã\82\8aï¼\8cUnicode中ã\81«å\9bºå®\9aã\81\95ã\82\8cã\81\9fæ\96\87å­\97ã\82³ã\83¼ã\83\89
-番号を持たない文字を非零の文字クラスに割り当てることができる.
-このコールバックは新しい和文フォントが読み込まれたときに呼び出される.
\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§\textbf{JAchar}ã\81¨\textbf{ALchar}ã\81®é\96\93ã\81«æ\8c¿å\85¥ã\81\95ã\82\8cã\82\8bã\82°ã\83«ã\83¼ã\81§ã\81\82ã\82\8bï¼\8e
+\Param{kanjiskip}と同じように,通常ではフォントサイズに比例して変わることはないが,
+自然長が \cs{maxdimen} の場合が例外である.
 %</ja>
-
-\begin{lstlisting}[numbers=left]
-function (<table> jfont_info, <number> font_number)
-  return <table> new_jfont_info
-end
-\end{lstlisting}
 %<*en>
-\verb+jfont_info+ has the following fields,
-\emph{which may not overwritten by a user}:
-\begin{description}
-\item[\texttt{size}]
-The font size specified at \cs{jfont} in scaled points ($1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$).
-\item[\texttt{zw}, \texttt{zh}, \texttt{kanjiskip}, \texttt{xkanjiskip}]
-These are scaled value of those specified by the JFM, by the font size.
-\item[\texttt{jfm}]
-The internal number of the JFM.
-\item[\texttt{var}]
-The value of \texttt{jfmvar}~key, which is specified at \cs{jfont}.
-The default value is the empty string.
-\item[\texttt{chars}]
-The mapping table from character codes to its character classes.\\
-The specification \texttt{[i].chars=\{<character>, ...\}} in the JFM will be  stored in this
-          field as \texttt{chars=\{[<character>]=\,$i$, ...\}}.
-\item[\texttt{char\_type}]
-For $i\in\omega$, \texttt{char\_type[$i$]} is information of characters whose class is
-          $i$, and has the following fields:
-\begin{itemize}
- \item \texttt{width},~\texttt{height}, \texttt{depth},
-  \texttt{italic}, \texttt{down},~\texttt{left}\ are just
-       scaled value of those specified by the JFM, by the font size.
- \item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM:
-\[
- \begin{cases}
-  0&\text{\texttt{'left'} (default)}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
- \end{cases}
-\]
-\item For $j\in \omega$, \texttt{[$j$]} stores a kern or a glue which will be inserted
-between character class~$i$ and class~$j$.
+The default glue which inserted between a \textbf{JAchar} and an
+      \textbf{ALchar}.
+Changing current font does not alter this parameter, as \pTeX.
 
-If a kern will be inserted, the value of this field is \texttt{[$j$]=\{false, <kern\_node>, <ratio>\}},
-where <kern\_node> is a node\footnote{%
- This version of \LuaTeX-ja uses ``direct access
-      model'' for accessing nodes, if possible. }.
-If a glue will be inserted, we have \texttt{[$j$]=\{false, <spec\_node>, <ratio>, <icflag>\}},
-where <spec\_node> is also a node, and $\text{<icflag>}=\textit{from\_jfm}+\text{<priority>}$.
-\end{itemize}
-\end{description}
+As \Param{kanjiskip}, if the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses
+the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}).
+%</en>
+
+
+\item[\DParam{differentjfm}\,=<mode>$^\dagger$]\
+
+%<*en>
+Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different.
+The allowed arguments are the followings:
 %</en>
 %<*ja>
-\verb+jfont_info+ は最低限以下のフィールドを持つが,これらを書き換えてはならない:
-\begin{cslist}
-\item[size]
-実際に使われるフォントサイズ(sp単位).$1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$.
-\item[zw\textrm{, }zh\textrm{, }kanjiskip\textrm{, }xkanjiskip]
-JFMファイルで指定されているそれぞれの値をフォントサイズに合わせてスケーリングしたものを
-sp単位で格納している.
-\item[jfm]
-利用されているJFMを識別するための番号.
-\item[var]
-\cs{jfont},~\cs{tfont} で指定された \texttt{jfmvar} キーの値(未指定のときは空文字列).
-\item[chars]
-文字コードから文字クラスへの対応が記述されたテーブル.\\
-JFM内の \texttt{[i].chars=\{<character>, ...\}} という指定は\
-\texttt{chars=\{[<character>]=\,$i$, ...\}} という形式に変換されている.
-\item[char\_type]
-$i\in\omega$に対して,\texttt{char\_type[$i$]} は文字クラス$i$の文字の寸法を格納しており,
-以下のフィールドを持つ.
-\begin{itemize}
- \item \texttt{width},~\texttt{height}, \texttt{depth},
-  \texttt{italic}, \texttt{down},~\texttt{left}\ は
-JFMで指定されているそれぞれの値をスケーリングしたものである.
- \item \texttt{align} はJFMで指定されている値によって,
-\[
- \begin{cases}
-  0&\text{\texttt{'left'}や省略時}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
- \end{cases}
-\]
-のいずれかの値をとる.
-\item $j\in \omega$に対して,\texttt{[$j$]} は文字クラス$i$の文字と$j$の文字の間に挿入されるkern
-      やglueを格納している.
-間に入るものがkernであれば,このフィールドの値は\
-\texttt{[$j$]=\{false, <kern\_node>, <ratio>\}} である.
-<kern\_node>はkernを表すノードそのものである\footnote{%
-本バージョンではノードのアクセス手法にdirect access
-      modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし
-      か見えないことに注意.
-}.
-glueであれば,\texttt{[$j$]=\{false, <spec\_node>, <ratio>, <icflag>\}} である.
-<spec\_node>はglueの長さを表すノードそのものであり,
-      $\text{<icflag>}=\textit{from\_jfm}+\text{<priority>}$である.
-\end{itemize}
-\item[ascent\textrm{, }descent]
-……
-\item[chars\_cbcache]
-……
-\end{cslist}
+JFM(もしくはサイズ)が異なる2つの\textbf{JAchar}の間にグルー/カーンをどのように
+入れるかを指定する.
+許される値は以下の通り:
+%</ja>
+\begin{quote}
+\texttt{average},
+\texttt{both},
+\texttt{large},
+\texttt{small},
+\texttt{pleft},
+\texttt{pright},
+\texttt{paverage}
+\end{quote}
+%<*en>
+The default value is \texttt{paverage}. \dots
+%</en>
+%<*ja>
+デフォルト値は \texttt{paverage} である.
+各々の値による差異の詳細は\ref{ssec-cluster-wa}節の「『右空白』の算出」を参照してほしい.
 %</ja>
 
+\item[\DParam{jacharrange}\,=<ranges>]
+\item[\DParam{kansujichar}\,=\{<digit>, <chr\_code>\}$^\ast$] [\cs{kansujichar}]
+
+\item[\DParam{direction}\,=<dir>\ \hbox{\rm (always local)}]\
+
 %<*en>
-The returned table \verb+new_jfont_info+ also should include these fields, but
-you are free to add more fields (to use them in the \texttt{luatexja.find\_char\_class} callback).
-The \verb+font_number+ is a font number.
+Assigning to this parameter has the same effect as
+\cs{yoko}~(if $\hbox{<dir>}=4$), \cs{tate}~(if $\hbox{<dir>}=3$),
+\cs{dtou}~(if $\hbox{<dir>}=1$) or \cs{utod}~(if $\hbox{<dir>}=11$).
+If the argument <dir> is not one of 4,~3, 1~nor~11,
+the behavior of this assignment is undefined.
 %</en>
 %<*ja>
-戻り値の \verb+new_jfont_info+ テーブルも上に述べたフィールドをそのまま含まなければならないが,
-それ以外にユーザが勝手にフィールドを付け加えることは自由である.
-\verb+font_number+ はフォント番号である.
+組方向を変更する \cs{yoko}~(if $\hbox{<dir>}=4$), \cs{tate}~(if $\hbox{<dir>}=3$),
+\cs{dtou}~(if $\hbox{<dir>}=1$), \cs{utod}~(if $\hbox{<dir>}=11$) と同じ役割を持つ.
+利用可能な状況もこれら4命令と同一である.引数<dir>が4,~3, 1,~11のいずれでも無いときの
+動作は未定義である.
 %</ja>
 
+\end{cslist}
+
+
+\subsection{\cs{ltjgetparameter}}
+\label{ssec-getpar}
 %<*en>
-A good example of this and the next callbacks is the \Pkg{luatexja-otf}
-            package, supporting \verb+"AJ1-xxx"+ form for Adobe-Japan1
-            CID characters in a JFM. This callback doesn't replace any
-            code of \LuaTeX-ja.
+\cs{ltjgetparameter} is a control sequence for acquiring parameters. It
+always takes a parameter name as first argument.
 %</en>
 %<*ja>
-これと次のコールバックの良い使用例は\Pkg{luatexja-otf}パッケージであり,
-JFM中でAdobe-Japan1 CIDの文字を \verb+"AJ1-xxx"+ の形で指定するために
-用いられている.
+\cs{ltjgetparameter} はパラメータの値を取得するための命令であり,
+常にパラメータの名前を第一引数にとる.
 %</ja>
+\begin{LTXexample}
+\ltjgetparameter{differentjfm},
+\ltjgetparameter{autospacing},
+\ltjgetparameter{kanjiskip},
+\ltjgetparameter{prebreakpenalty}{`)}.
+\end{LTXexample}
 
-%<en>\item[\texttt{luatexja.find\_char\_class} callback]
-%<ja>\item[\texttt{luatexja.find\_char\_class}コールバック]
 %<*en>
-This callback is called just when \LuaTeX-ja is trying to determine which
-            character class a character \verb+chr_code+ belongs.
-A function used in this callback should be in the following form:
+\emph{The return value of\/ \cs{ltjgetparameter} is
+always a string}, which is outputted by \texttt{tex.write()}.
+Hence any character other than space~``\texttt{\char32}''~(\texttt{U+0020}) has the category code
+12~(other), while the space has 10~(space).
 %</en>
 %<*ja>
-このコールバックは\LuaTeX-jaが \verb+chr_code+ の文字がどの文字クラスに
-属するかを決定しようとする際に呼び出される.
-このコールバックで呼び出される関数は次の形をしていなければならない:
+\emph{\cs{ltjgetparameter} の戻り値は常に文字列である.}
+これは\texttt{tex.write()}によって出力しているためで,空白「\texttt{\char32}」
+(\texttt{U+0020})を除いた文字のカテゴリーコードは全て12~(other)となる.
+一方,空白のカテゴリーコードは10~(space)である.
 %</ja>
-\begin{lstlisting}[numbers=left]
-function (<number> char_class, <table> jfont_info, <number> chr_code)
-  if char_class~=0 then return char_class
-  else
-    ....
-    return (<number> new_char_class or 0)
-  end
-end
-\end{lstlisting}
 
+\begin{itemize}
+\item
 %<*en>
-The argument \verb+char_class+ is the result of \LuaTeX-ja's default
-            routine or previous function calls in this callback, hence
-            this argument may not be 0. Moreover, the returned
-            \verb+new_char_class+ should be as same as \verb+char_class+ when \verb+char_class+
-            is not~0, otherwise you will overwrite the \LuaTeX-ja's
-            default routine.
+If first argument is one of the
+following, no  additional argument is needed.
 %</en>
 %<*ja>
-引数 \verb+char_class+ は\LuaTeX-jaのデフォルトルーチンか,このコールバックの
-直前の関数呼び出しの結果を含んでおり,したがってこの値は0ではないかもしれない.
-さらに,戻り値の \verb+new_char_class+ は \verb+char_class+ が非零のときには
-\verb+char_class+ の値と同じであるべきで,そうでないときは\LuaTeX-jaの
-デフォルトルーチンを書き換えることになる.
+第1引数が次のいずれかの場合には,追加の引数は必要ない.
 %</ja>
-
-%<en>\item[\texttt{luatexja.set\_width} callback]
-%<ja>\item[\texttt{luatexja.set\_width}コールバック]
+\begin{quote}
+\sffamily
+jcharwidowpenalty, yjabaselineshift, yalbaselineshift, autospacing, autoxspacing,\\
+kanjiskip, xkanjiskip, differentjfm, direction
+\end{quote}
 %<*en>
-This callback is called when \LuaTeX-ja is trying to encapsule a
-            \textbf{JAchar} \textit{glyph\_node}, to adjust its
-            dimension and position.
+Note that \verb+\ltjgetparameter{autospacing}+~and~\verb+\ltjgetparameter{autoxspacing}+
+returns 1 or 0, not
+\texttt{true}~nor~\texttt{false}.
 %</en>
 %<*ja>
-このコールバックは\LuaTeX-jaが\textbf{JAchar}の寸法と位置を調節するために
-その\textit{glyph\_node}をカプセル化しようとする際に呼び出される.
+\verb+\ltjgetparameter{autospacing}+ と \verb+\ltjgetparameter{autoxspacing}+ は,
+\texttt{true}や\texttt{false}を返すの\emph{ではなく},
+1か0のいずれかを返すことに注意,
 %</ja>
-\begin{lstlisting}[numbers=left]
-function (<table> shift_info, <table> jfont_info, <table> char_type)
-  return <table> new_shift_info
-end
-\end{lstlisting}
 
+\item
 %<*en>
-The argument \verb+shift_info+ and the returned \verb+new_shift_info+ have
-\texttt{down} and \texttt{left} fields, which are the amount of shifting
-            down/left the character in a scaled point.
+If first argument is one of the
+following, an additional argument---a character code, for example---is needed.
 %</en>
 %<*ja>
-引数 \verb+shift_info+ と戻り値の \verb+new_shift_info+ は
-\texttt{down}と\texttt{left}のフィールドを持ち,これらの値は
-文字の下/左へのシフト量(sp単位)である.
+第1引数が次のいずれかの場合には,さらに文字コードを第2引数としてとる.
 %</ja>
-
+\begin{quote}
+\sffamily
+kcatcode, prebreakpenalty, postbreakpenalty, jaxspmode, alxspmode
+\end{quote}
 %<*en>
-A good example is \Pkg{test/valign.lua}.
-After loading this file, the vertical position of glyphs is automatically
-adjusted; the ratio $(\hbox{height}:\hbox{depth})$ of glyphs is adjusted
-to be that of letters in the character class~0. For example, suppose that
-\begin{itemize}
-\item The setting of the JFM: $(\hbox{height})=88x$, $(\hbox{depth})=12x$
-  (the standard values of Japanese OpenType fonts);
-\item The value of the real font: $(\hbox{height})=28y$, $(\hbox{depth})=5y$
-  (the standard values of Japanese TrueType fonts).
-\end{itemize}
-Then, the position of glyphs is shifted up by
+\verb+\ltjgetparameter{jaxspmode}{...}+~and~\verb+\ltjgetparameter{alxspmode}{...}+
+returns 0,~1, 2,~or~3, instead of \texttt{preonly} etc.
 %</en>
 %<*ja>
-良い例が\Pkg{test/valign.lua}である.このファイルが読み込まれた状態では,
-            JFM内で規定された文字クラス0の文字における$(\hbox{高
-            さ}):(\hbox{深さ})$の比になるように,実際のフォントの出力上
-            下位置が自動調整される.例えば,
-\begin{itemize}
-\item JFM側の設定:$(\hbox{高さ})=88x$, $(\hbox{深さ})=12x$%
-(和文OpenTypeフォントの標準値)
-\item 実フォント側の数値:$(\hbox{高さ})=28y$, $(\hbox{深さ})=5y$(和文TrueTypeフォントの標準値)
-\end{itemize}
-となっていたとする.すると,実際の文字の出力位置は,以下の量だけ上にずらされることとなる:
+\verb+\ltjgetparameter{jaxspmode}{...}+ や \verb+\ltjgetparameter{alxspmode}{...}+\
+は,\texttt{preonly} などといった文字列ではなく,0から3までの値を返す.
 %</ja>
-\[
- \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
-\]
-\end{description}
-
-
-
-%<en>\section{Parameters}
-%<ja>\section{パラメータ}
-\subsection{\cs{ltjsetparameter}}
-\label{ssec-param}
 
+\item
 %<*en>
-As described before, \cs{ltjsetparameter} and \cs{ltjgetparameter} are
-commands for accessing most parameters of \LuaTeX-ja. One of the main
-reason that \LuaTeX-ja didn't adopted the syntax similar to that of \pTeX\
-(\textit{e.g.},~\verb+\prebreakpenalty`)=10000+)
-is the position of \verb+hpack_filter+ callback in the source
-of \LuaTeX, see Section~\ref{sec-para}.
+\verb+\ltjgetparameter{jacharrange}{+<range>\verb+}+ returns \texttt{0}
+if ``characters which belong to the character range~<range> are \textbf{JAchar}'',
+\texttt{1} if ``\dots~are \textbf{ALchar}''.
+Although there is no character range~$-1$, specifying $-1$ to <range> does not cause an
+      error (returns 1).
 %</en>
 %<*ja>
-先に述べたように,\LuaTeX-jaの内部パラメータにアクセスするには
-\cs{ltjsetparameter}(または \cs{ltjglobalsetparameter})と \cs{ltjgetparameter} を用いる.
-\LuaTeX-jaが\pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
-採用しない理由の一つは,\LuaTeX のソースにおける \verb+hpack_filter+
-コールバックの位置にある.\ref{sec-para}章を参照.
+\verb+\ltjgetparameter{jacharrange}{+<range>\verb+}+ は,<range>が\textbf{JAchar}達の
+範囲ならば0を,そうでなければ1を返す.「$-1$番の文字範囲」は存在しないが,<range>に$-1$を
+指定してもエラーは発生しない(1を返す).
 %</ja>
 
+\item
 %<*en>
-\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands
-for assigning parameters. These take one argument which is a
-\texttt{<key>=<value>} list.
-The difference between these two commands is the
-scope of assignment;
-\cs{ltjsetparameter} does a local assignment and
-\cs{ltjglobalsetparameter} does a global one.
-They also obey the value of \cs{globaldefs}, like other assignments.
+For an integer~<digit> between 0~and~9,
+     \verb+\ltjgetparameter{kansujichar}{+<digit>\verb+}+ returns the character code
+of the result of \cs{kansuji}<digit>.
 %</en>
 %<*ja>
-\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} はパラメータを
-指定するための命令で,\texttt{<key>=<value>}のリストを
-引数としてとる.両者の違いはスコープであり,
-\cs{ltjsetparameter} はローカルな設定を行うのに対し,
-\cs{ltjglobalsetparameter} はグローバルな設定を行う.
-また,他のパラメータ指定と同様に \cs{globaldefs} の値にも従う.
+0--9の数<digit>に対して,
+\verb+\ltjgetparameter{kansujichar}{+<digit>\verb+}+ は,\cs{kansuji}<digit>で出力され
+     る文字の文字コードを返す.
 %</ja>
 
+\item
 %<*en>
-The following is the list of parameters which can be specified by the
-\cs{ltjsetparameter} command. [\cs{cs}] indicates the counterpart
-in \pTeX, and symbols beside each parameter has the following meaning:
+\verb+\ltjgetparameter{adjustdir}+ returns a integer which represents
+the direction of the surrounding vertical list.
+As \Param{direction}, the return value 1 means \emph{down-to-up} direction,
+3 means \emph{tate} direction (vertical typesetting),
+and 4 means \emph{yoko} direction (horizontal typesetting).
 %</en>
 %<*ja>
-以下は \cs{ltjsetparameter} に指定することができるパラメータの一覧である.
-[\cs{cs}]は\pTeX における対応物を示す.
-また,それぞれのパラメータの右上の記号には次の意味がある:
+\verb+\ltjgetparameter{adjustdir}+ は,周囲のvboxの組方向(言い換えれば,
+\cs{vadjust} で用いられる組方向)を表す数値を返す.
+\Param{direction}と同様に,1は \cs{dtou} 方向を,
+3は縦組みを,4は横組みを表す.
 %</ja>
-\begin{itemize}
+
+\item
 %<*en>
-\item ``$\ast$'' : values at the end of a paragraph or a hbox are
-adopted in the whole paragraph or the whole hbox.
+For an integer~<reg\_num> between 0~and~65535,
+\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ returns the direction of
+\cs{box}<reg\_num>. If this box register is void, the returned value is zero.
 %</en>
 %<*ja>
-\item ``$\ast$'':段落やhboxの終端での値がその段落/hbox全体で用いられる.
+0--65535の数<reg\_num>に対して,
+\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ は,\cs{box}<reg\_num>に
+格納されているボックスの組方向を表す.もしこのレジスタが空の場合は,0が返される.
 %</ja>
+
+\item
 %<*en>
-\item ``\dagger'': assignments are always global.
+The following parameter names \emph{cannot be specified} in \cs{ltjgetparameter}.
 %</en>
 %<*ja>
-\item ``\dagger'':指定は常にグローバルになる
+次のパラメータ名を \cs{ltjgetparameter} に指定することはできない
 %</ja>
-\end{itemize}
-
-\begin{cslist}[style=standard]
-\item[\DParam{jcharwidowpenalty}\,=<penalty>$^\ast$] [\cs{jcharwidowpenalty}]\
+\begin{quote}
+\sffamily
+jatextfont, jascriptfont, jascriptscriptfont, jacharrange
+\end{quote}
 
+\item
 %<*en>
-Penalty value for suppressing orphans. This penalty is inserted just
-            after the last \textbf{JAchar} which is not regarded as a
-            (Japanese) punctuation mark.
+\verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+ returns
+the range number which <chr\_code> belongs to
+(although there is no parameter named ``chartorange'').
+
+If <chr\_code> is between 0 and 127, this <chr\_code> does not belong to
+any character range. In this case,
+      \verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+
+returns $-1$.
+
+Hence, one can know whether <chr\_code> is \textbf{JAchar} or not
+by the following:
 %</en>
 %<*ja>
-パラグラフの最後の字が孤立して改行されるのを防ぐためのペナルティの値.
-このペナルティは(日本語の)句読点として扱われない最後の\textbf{JAchar}の直後に
-挿入される.
-%</ja>
+\verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+ によって
+<chr\_code>の属する文字範囲の番号を知ることができる.
 
-\item[\DParam{kcatcode}\,=\{<chr\_code>,<natural number>\}$^\ast$]\
+<chr\_code>に0--127の値を指定した場合(このとき,<chr\_code>が属する
+文字範囲は存在しない)は$-1$が返る.
+
+そのため,<chr\_code>が\textbf{JAchar}か\textbf{ALchar}かは
+次で知ることができる:
+%</ja>
+\begin{quote}
+\ttfamily \verb+\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{+%
+  <chr\_code>\verb+}}+\\\null\hfill\verb+% 0 if JAchar, 1 if ALchar+
+\end{quote}
 
 %<*en>
-An additional attributes which each character whose character code is <chr\_code> has.
-At the present version, the lowermost bit of <natural number> indicates
-            whether the character is considered as a punctuation mark
-            (see the description of \Param{jcharwidowpenalty} above).
+\item Because the returned value is string, the following conditionals do not work
+if \Param{kanjiskip} (or~\Param{xkanjiskip}) has the stretch part or the shrink part.
+\begin{lstlisting}
+\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi
+\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi
+\end{lstlisting}
+The correct way is using a temporary register.
+\begin{lstlisting}
+\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi
+\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi
+\end{lstlisting}
 %</en>
 %<*ja>
-文字コードが<chr\_code>の文字が持つ付加的な属性値.
-現在のバージョンでは,<natural number>の最下位ビットが,その文字が句読点と
-みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照).
+\item 返り値が文字列であることから,\Param{kanjiskip}や\Param{xkanjiskip}を直接
+\ \cs{ifdim} を使って比較することは望ましくない.伸び量や縮み量を持っている時には,
+次はエラーを発生させる:
+\begin{lstlisting}
+\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi
+\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi
+\end{lstlisting}
+レジスタに一旦代入するのが良い:
+\begin{lstlisting}
+\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi
+\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi
+\end{lstlisting}
 %</ja>
 
-\item[\DParam{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}$^\ast$] [\cs{prebreakpenalty}]\
+\end{itemize}
 
 %<*ja>
-文字コード<chr\_code>の\textbf{JAchar}が行頭にくることを抑止するために,
-            この文字の前に挿入/追加されるペナルティの量を指定する.
+\subsection{\cs{ltjsetparameter} の代替}
+原則として各種内部パラメータの設定には \cs{ltjsetparameter} もしくは
+\ \cs{ltjglobalsetparameter}\ を用いることになるが,
+\cs{ltjsetparameter} の実行には時間がかかるという難点があり,
+\LuaTeX-ja の内部ではより高速に実行できる別の形式を用いている.
+\emph{本節は一般利用者むけの内容ではない.}
 
-例えば閉じ括弧「〗」は絶対に行頭にきてはならないので,
+\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} の設定}
+\pLaTeXe 新ドキュメントクラスでは,
 \begin{lstlisting}
-\ltjsetparameter{prebreakpenalty={`〙,10000}}
+\def\@setfontsize#1#2#3{%
+  ...
+  \kanjiskip=0zw plus .1zw minus .01zw
+  \ifdim\xkanjiskip>\z@
+    \if@slide \xkanjiskip=0.1em \else
+      \xkanjiskip=0.25em plus 0.15em minus 0.06em
+    \fi
+  \fi}
 \end{lstlisting}
-と,最大値の10000が標準で指定されている.他にも,小書きのカナなど,絶対禁止とい
-            うわけではないができれば行頭にはきて欲しくない場合に,0と
-            10000の間の値を指定するのも有用であろう.
-
-\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において,
+と,フォントサイズを変更するごとに \cs{kanjiskip}, \cs{xkanjiskip} を変更している.
+この \cs{@setfontsize} は文書の中で多数回実行されるので.
+\LuaTeX-ja 用に素直に書き換えた
+\begin{lstlisting}
+  \ltjsetparameter{kanjiskip=0\zw plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetparameter{xkanjiskip=0.1em}
+    \else
+      \ltjsetparameter{xkanjiskip=0.25em plus 0.15em minus 0.06em}
+    \fi
+  \fi
+\end{lstlisting}
+としたのではタイプセットが遅くなってしまう.
+そこで,\cs{ltjsetparameter} の中で
 \begin{itemize}
-\item 一つの文字に対して,pre, postどちらか一つしか指定することができない%
-  \footnote{後から指定した方で上書きされる.}
-\item pre, post合わせて256文字分の情報を格納することしかできない
+\item \cs{globaldefs} の値を読み取る \cs{ltj@setpar@global}
+\item \Param{kanjiskip} の設定を行う \cs{ltjsetkanjiskip}
+\item \Param{xkanjiskip} の設定を行う \cs{ltjsetxkanjiskip}
 \end{itemize}
-という制限があったが,\LuaTeX-jaではこれらの制限は解消されている.
-%</ja>
-%<*en>
-Set a penalty which is inserted automatically before the character <chr\_code>,
-to prevent a line starts from this character. For example, a line cannot started
-with one of closing brackets ``〗'', so \LuaTeX-ja sets
+を独立させ,\Pkg{ltjsclasses}では,
 \begin{lstlisting}
-\ltjsetparameter{prebreakpenalty={`〙,10000}}
+  \ltj@setpar@global
+  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetxkanjiskip.1em
+    \else
+      \ltjsetxkanjiskip.25em plus .15em minus .06em
+    \fi
+  \fi
 \end{lstlisting}
-by default.
+としている.
+\cs{ltj@setpar@global}を直前に実行せず,単独で
+\cs{ltjsetkanjiskip}, \cs{ltjsetxkanjiskip}を実行することは想定されていないので注意.
 
-\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty},
-but they don't exist in \LuaTeX-ja:
-\begin{itemize}
- \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set
-for the same character.
- \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters.
-\end{itemize}
-%</en>
 
-\item[\DParam{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}$^\ast$]
-          [\cs{postbreakpenalty}]\
 
-%<*ja>
-文字コード<chr\_code>の\textbf{JAchar}が行末にくることを抑止するために,
-            この文字の後に挿入/追加されるペナルティの量を指定する.
+\paragraph{ベースライン補正量の設定}
+\pLaTeX の\Pkg{ascmac}パッケージでは,縦組の欧文ベースライン補正量の一時待避・復帰処理に
+\ \cs{@saveybaselineshift}\ という寸法レジスタを用い
+\begin{lstlisting}
+\@savetbaselineshift\tbaselineshift\tbaselineshift\z@
+...
+\tbaselineshift\@savetbaselineshift
+\end{lstlisting}
+という処理を行っている.
+
+これを\LuaTeX-ja 用に \cs{ltjsetparameter} を使って書き直すと,
+\begin{lstlisting}
+\@savetbaselineshift\ltjgetparameter{talbaselineshift}
+\ltjsetparameter{talbaselineshift=\z@}
+...
+\ltjsetparameter{talbaselineshift=\@savetbaselineshift}
+\end{lstlisting}
+となる.
+
+さて,縦組の欧文ベースライン補正量\Param{talbaselineshift}は,
+実際には \cs{ltj@tablshift} という属性レジスタに格納されている
+(\ref{sec-para}\nobreak 節参照).属性レジスタは長さではなく整数値を格納する\footnote{%
+  従って,\texttt{\textbackslash @savetbaselineshift=\textbackslash ltj@tablshift}\
+  のように記述することはできない.属性レジスタを \cs{tbaselineshift} という名称にしなかっ
+  たのはそのためである.
+}ものであり,\cs{ltj@tablshift} は補正量を sp 単位で保持することから,
+上記のコードと同じ内容をより速い以下のコードで実現することができる.
+\begin{lstlisting}
+\@savetbaselineshift\ltj@tablshift sp%
+\ltj@tablshift\z@
+...
+\ltj@tablshift\@savetbaselineshift
+\end{lstlisting}
+この手法は \Pkg{ascmac} パッケージの\LuaTeX-ja対応パッチ \Pkg{lltjp-tascmac.sty} で
+実際に用いられている.\Pkg{lltjp-tascmac.sty} は自動的に読み込まれるので,
+ユーザは何も気にせず普通に \Pkg{ascmac} パッケージを \cs{usepackage} で読みこめば良い.
 %</ja>
-%<*en>
-Set a penalty which is inserted automatically after the character <chr\_code>,
-to prevent a line ends with this character.
-%</en>
 
-\item[\DParam{jatextfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
-%<en>[\cs{textfont} in \TeX]
-%<ja>[\TeX の \cs{textfont}]
-\item[\DParam{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
-%<en>[\cs{scriptfont} in \TeX]
-%<ja>[\TeX の \cs{scriptfont}]
-\item[\DParam{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
-%<en>[\cs{scriptscriptfont} in \TeX]
-%<ja>[\TeX の \cs{scriptscriptfont}]
-\item[\DParam{yjabaselineshift}\,=<dimen>]\
-\item[\DParam{yalbaselineshift}\,=<dimen>] [\cs{ybaselineshift}]
-\item[\DParam{tjabaselineshift}\,=<dimen>]\
-\item[\DParam{talbaselineshift}\,=<dimen>] [\cs{tbaselineshift}]
 
-\item[\DParam{jaxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$]\
+%<en>\section{Other Commands for plain \TeX\ and \LaTeXe}
+%<ja>\section{plainでも\LaTeX でも利用可能なその他の命令}
+%<en>\subsection{Commands for compatibility with \pTeX}
+%<ja>\subsection{\pTeX 互換用命令}
 
 %<*en>
-Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
-The followings are allowed for <mode>:
+The following commands are implemented for compatibility with \pTeX.
+Note that the former five commands don't support JIS~X~0213, but only JIS~X~0208.
+The last \cs{kansuji} converts an integer into its Chinese numerals.
 %</en>
 %<*ja>
-文字コードが<chr\_code>の\textbf{JAchar}の前/後ろに\Param{xkanjiskip}の
-挿入を許すかどうかの設定.
-以下の<mode>が許される:
+以下の命令は\pTeX との互換性のために実装されている.そのため,JIS~X~0213には対応せず,
+\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない.
 %</ja>
-\begin{description}
-%<en>\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character.
-%<ja>\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される.
-%<en>\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after.
-%<ja>\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない.
-%<en>\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before.
-%<ja>\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない.
-%<en>\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed both before the character and after the character. This is the default value.
-%<ja>\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
-\end{description}
+\begin{center}
+\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{ucs}, \cs{kansuji}
+\end{center}
 %<*en>
-This parameter is similar to the \cs{inhibitxspcode} primitive of \pTeX, but not compatible with \cs{inhibitxspcode}.
+These six commands takes an internal integer, and returns a \emph{string}.
 %</en>
 %<*ja>
-このパラメータは\pTeX の \cs{inhibitxspcode} プリミティブと似ているが,
-互換性はない.
+これら6命令は内部整数を引数とするが,実行結果は\textbf{文字列}であることに注意.
 %</ja>
-\item[\DParam{alxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$] [\cs{xspcode}]\
+\begin{LTXexample}
+\newcount\hoge
+\hoge="2423 %"
+\the\hoge, \kansuji\hoge\\
+\jis\hoge, \char\jis\hoge\\
+\kansuji1701
+\end{LTXexample}
 
 %<*en>
-Set whether inserting \Param{xkanjiskip} is allowed before/after a
-            \textbf{ALchar} whose character code is <chr\_code>.
-             The followings are allowed for <mode>:
-%</en>
-%<*ja>
-文字コードが<chr\_code>の\textbf{ALchar}の前/後ろに\Param{xkanjiskip}の
-挿入を許すかどうかの設定.
-以下の<mode>が許される:
-%</ja>
-\begin{description}
-%<en>\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character.
-%<ja>\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される.
-%<en>\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after.
-%<ja>\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない.
-%<en>\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before.
-%<ja>\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない.
-%<en>\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed before the character and after the character. This is the default value.
-%<ja>\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
-\end{description}
-%<*en>
-Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common table, hence these two parameters are synonyms of each other.
+To change characters of Chinese numerals for each digit, set \Param{kansujichar} parameter:
+\begin{LTXexample}
+\ltjsetparameter{kansujichar={1,`壹}}
+\ltjsetparameter{kansujichar={7,`漆}}
+\ltjsetparameter{kansujichar={0,`零}}
+\kansuji1701
+\end{LTXexample}
 %</en>
-%<*ja>
-\Param{jaxspmode}と\Param{alxspmode}は共通のテーブルを用いているため,
-これら2つのパラメータは互いの別名となっていることに注意する.
-%</ja>
 
-\item[\DParam{autospacing}\,=<bool>] [\cs{autospacing}]
-\item[\DParam{autoxspacing}\,=<bool>] [\cs{autoxspacing}]
-\item[\DParam{kanjiskip}\,=<skip>$^\ast$] [\cs{kanjiskip}]\
 
-%<*ja>
-デフォルトで2つの\textbf{JAchar}の間に挿入されるグルーである.
-通常では,\pTeX と同じようにフォントサイズに比例して変わることはない.
-しかし,自然長が \cs{maxdimen} の場合は,例外的に和文フォントのJFM側で指定されている
-値を採用(こちらはフォントサイズに比例)することになっている.
-%</ja>
+\subsection{\cs{inhibitglue}}
 %<*en>
-The default glue which inserted between two \textbf{JAchar}s.
-Changing current Japanese font does not alter this parameter, as \pTeX.
-
-If the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses
-the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}).
+\cs{inhibitglue} suppresses the insertion of \textbf{JAglue}.
+The following is an example, using a special JFM that there will be a glue between
+the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''.
 %</en>
-
-\item[\DParam{xkanjiskip}\,=<skip>$^\ast$] [\cs{xkanjiskip}]\
-
 %<*ja>
-デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルーである.
-\Param{kanjiskip}と同じように,通常ではフォントサイズに比例して変わることはないが,
-自然長が \cs{maxdimen} の場合が例外である.
-%</ja>
-%<*en>
-The default glue which inserted between a \textbf{JAchar} and an
-      \textbf{ALchar}.
-Changing current font does not alter this parameter, as \pTeX.
-
-As \Param{kanjiskip}, if the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses
-the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}).
-%</en>
-
+\cs{inhibitglue} は\textbf{JAglue}の挿入を抑制する.
+以下は,ボックスの始めと「あ」の間,「あ」「ウ」の間にグルーが入る特別なJFMを用いた例で
+ある.
+%</ja>
 
-\item[\DParam{differentjfm}\,=<mode>$^\dagger$]\
+\begin{LTXexample}[width=0.4\textwidth]
+\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
+\fbox{\hbox{あウあ\inhibitglue ウ}}
+\inhibitglue\par\noindent あ1
+\par\inhibitglue\noindent あ2
+\par\noindent\inhibitglue あ3
+\par\hrule\noindent あoff\inhibitglue ice
+\end{LTXexample}
 
 %<*en>
-Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different.
-The allowed arguments are the followings:
+With the help of this example, we remark the specification of \cs{inhibitglue}:
 %</en>
 %<*ja>
-JFM(もしくはサイズ)が異なる2つの\textbf{JAchar}の間にグルー/カーンをどのように
-入れるかを指定する.
-許される値は以下の通り:
+この例を援用して,\cs{inhibitglue} の仕様について述べる.
 %</ja>
-\begin{quote}
-\texttt{average},
-\texttt{both},
-\texttt{large},
-\texttt{small},
-\texttt{pleft},
-\texttt{pright},
-\texttt{paverage}
-\end{quote}
+\begin{itemize}
 %<*en>
-The default value is \texttt{paverage}. \dots
+\item The call of \cs{inhibitglue} in the (internal) vertical mode is
+      simply ignored.
 %</en>
 %<*ja>
-デフォルト値は \texttt{paverage} である.
-各々の値による差異の詳細は\ref{ssec-cluster-wa}節の「『右空白』の算出」を参照してほしい.
+\item \emph{\cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない}\footnote{%
+  この点は\TeX~Live~2014での\pTeX における \cs{inhibitglue} の仕様変更と同じである.
+}.
+4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり,
+\cs{noindent} の時点で水平モードになるからである.
 %</ja>
 
-\item[\DParam{jacharrange}\,=<ranges>]
-\item[\DParam{kansujichar}\,=\{<digit>, <chr\_code>\}$^\ast$] [\cs{kansujichar}]
-
-\item[\DParam{direction}\,=<dir>\ \hbox{\rm (always local)}]\
+%<*en>
+\item The call of \cs{inhibitglue} in the (restricted) horizontal
+      mode is only effective on the spot; does not get over boundary of
+      paragraphs. Moreover, \cs{inhibitglue} cancels ligatures and
+      kernings, as shown in the last line of above example.
+%</en>
+%<*ja>
+\item \cs{inhibitglue} の(制限された)水平モード中での呼び出しはその場でのみ
+  有効であり,段落の境界を乗り越えない.
+  さらに,\cs{inhibitglue} は上の例の最終行のように(欧文における)リガチャとカーニングを
+  打ち消す.これは,\cs{inhibitglue} が内部的には「現在のリスト中にwhatsitノードを
+  追加する」ことを行なっているからである.
+%</ja>
 
 %<*en>
-Assigning to this parameter has the same effect as
-\cs{yoko}~(if $\hbox{<dir>}=4$), \cs{tate}~(if $\hbox{<dir>}=3$),
-\cs{dtou}~(if $\hbox{<dir>}=1$) or \cs{utod}~(if $\hbox{<dir>}=11$).
-If the argument <dir> is not one of 4,~3, 1~nor~11,
-the behavior of this assignment is undefined.
+\item The call of \cs{inhibitglue} in math mode is just ignored.
 %</en>
 %<*ja>
-組方向を変更する \cs{yoko}~(if $\hbox{<dir>}=4$), \cs{tate}~(if $\hbox{<dir>}=3$),
-\cs{dtou}~(if $\hbox{<dir>}=1$), \cs{utod}~(if $\hbox{<dir>}=11$) と同じ役割を持つ.
-利用可能な状況もこれら4命令と同一である.引数<dir>が4,~3, 1,~11のいずれでも無いときの
-動作は未定義である.
+\item \cs{inhibitglue} を数式モード中で呼び出した場合はただ無視される.
 %</ja>
 
-\end{cslist}
+%<*ja>
+\item \LaTeX で\LuaTeX-ja を使用する場合は,
+\cs{inhibitglue} の代わりとして \verb+\<+ を使うことができる.
+既に \verb+\<+ が定義されていた場合は,\LuaTeX-ja の読み込みで強制的に上書きされるので
+注意すること.
+%</ja>
+\end{itemize}
 
 
-\subsection{\cs{ltjgetparameter}}
-\label{ssec-getpar}
+\subsection{\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}}
 %<*en>
-\cs{ltjgetparameter} is a control sequence for acquiring parameters. It
-always takes a parameter name as first argument.
+Sometimes \texttt{'parbdd'}~and~\texttt{'boxbdd'} specifications~look like ``fail'',
+especially in paragraphs inside list environments.
+This is because \cs{everypar} inserts some nodes such as boxes and kerns, so
+the ``first letter'' in a paragraph is in fact not the first letter.
 %</en>
 %<*ja>
-\cs{ltjgetparameter} はパラメータの値を取得するための命令であり,
-常にパラメータの名前を第一引数にとる.
+リスト環境内での\cs{item}で始まる各項目などでは,
+「段落最初の鍵括弧が余計に半角字下げされる」など,
+JFMにある\texttt{'parbdd'}, \texttt{'boxbdd'}の指定が見かけ上破綻していることがある.
+
+これは\TeX が\cs{everypar}を用いて段落開始時に記号類や空白などを挿入してしまっているため,
+段落最初の鍵括弧が実際には段落最初のノードではないことに起因する.以下に例を示した.
 %</ja>
-\begin{LTXexample}
-\ltjgetparameter{differentjfm},
-\ltjgetparameter{autospacing},
-\ltjgetparameter{kanjiskip},
-\ltjgetparameter{prebreakpenalty}{`)}.
-\end{LTXexample}
+\begin{LTXexample}[width=0.3\textwidth]
+\parindent1\zw
+\noindent ああああああああ\par % for comparison
+「ああああああ \par            % normal paragraph
 
+\everypar{\null}
+「ああああああ \par            % ???
+\end{LTXexample}
 %<*en>
-\emph{The return value of\/ \cs{ltjgetparameter} is
-always a string}, which is outputted by \texttt{tex.write()}.
-Hence any character other than space~``\texttt{\char32}''~(\texttt{U+0020}) has the category code
-12~(other), while the space has 10~(space).
+\cs{ltjfakeboxbdd}~and~\cs{ltjfakeparbegin} primitives resolve this situation.
+\begin{itemize}
+  \item \cs{ltjfakeparbegin} creates a node which indicates
+  ``beginning of an indented paragraph'' to the insertion process of \textbf{JAglue}.
+ \item \cs{ltjfakeboxbdd} creates a node which indicates
+  ``beginning/ending of a box'' to the insertion process of \textbf{JAglue}.
+\end{itemize}
+As an example, the example above can be improved as follows:
 %</en>
 %<*ja>
-\emph{\cs{ltjgetparameter} の戻り値は常に文字列である.}
-これは\texttt{tex.write()}によって出力しているためで,空白「\texttt{\char32}」
-(\texttt{U+0020})を除いた文字のカテゴリーコードは全て12~(other)となる.
-一方,空白のカテゴリーコードは10~(space)である.
+\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}はこの状況を改善する命令である.
+実際には\cs{everypar}の末尾にこれらを追加するという使い方がほとんどになるだろう.
+\begin{itemize}
+  \item \cs{ltjfakeparbegin}は,実行された箇所が「インデントあり段落の開始」であると\LuaTeX-jaの
+  和文処理グルー挿入処理に認識させる.この命令の直前に\textbf{JAchar}があった場合,
+  この文字の後ろに入るグルー等の処理については未定義である
+  \footnote{%
+    この命令と同等の内容は,\cs{dirrctlua}の形で\Pkg{ltjsclasses}内で以前から使われていた.
+    一般ユーザでも利用しやすくするため,バージョン20170505.0で新たに命令として定義した.
+  }.
+  \item \cs{ltjfakeboxbdd}は,実行された箇所が「ボックスの先頭と末尾」であると\LuaTeX-jaの
+  和文処理グルー挿入処理に認識させる.
+\end{itemize}
+例えば,先ほどの例に対して適用すると,次のようになる.
 %</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+\parindent1\zw
+\noindent ああああああああ\par % for comparison
+「ああああああ \par            % normal paragraph
 
-\begin{itemize}
-\item
+\everypar{\null\ltjfakeparbegin}
+「ああああああ \par
+\end{LTXexample}
+
+
+\subsection{\cs{ltjdeclarealtfont}}
+\label{ssec-altfont}
 %<*en>
-If first argument is one of the
-following, no  additional argument is needed.
+Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts.
+This \cs{ltjdeclarealtfont} uses in the following form:
+\begin{quote}
+\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>\{<range>\}
+\end{quote}
+where  <base\_font\_cs>~and~<alt\_font\_cs> are defined by \cs{jfont}.
+Its meaning is
+\begin{quote}
+If the current Japanese font is <base\_font\_cs>, characters which belong to <range>
+is typeset by another Japanese font <alt\_font\_cs>, instead of <base\_font\_cs>.
+\end{quote}
+Here <range> is a comma-separated list of character codes, but also accepts negative integers:
+$-n$~($n≥1$) means that all characters of character classes~$n$, with respect to JFM used
+by <base\_font\_cs>. Note that characters which do not exist in <alt\_font\_cs> are
+ignored.
+
+For example, if \cs{hoge} uses \texttt{jfm-ujis.lua}, the standard JFM of \LuaTeX-ja,
+then
+\begin{lstlisting}
+\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
+\end{lstlisting}
+does
+\begin{quote}
+If the current Japanese font is \cs{hoge}, \texttt{U+3000}--\texttt{U+30FF}
+and characters in class~1 (ideographic opening brackets)
+are typeset by \cs{piyo}.
+\end{quote}
 %</en>
 %<*ja>
-第1引数が次のいずれかの場合には,追加の引数は必要ない.
-%</ja>
+\cs{jfont} の書式を見ればわかるように,基本的には\LuaTeX-jaにおける1つの和文フォントに
+使用出来る「実際のフォント」は1つである.
+しかし,\cs{ltjdeclarealtfont} を用いると,この原則から外れることができる.
+
+\cs{ltjdeclarealtfont} は以下の書式で使用する:
 \begin{quote}
-\sffamily
-jcharwidowpenalty, yjabaselineshift, yalbaselineshift, autospacing, autoxspacing,\\
-kanjiskip, xkanjiskip, differentjfm, direction
+\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>\{<range>\}
 \end{quote}
+これは「現在の和文フォント」が<base\_font\_cs>であるとき,
+<range>に属する文字は<alt\_font\_cs>を用いて組版される,という意味である.
+\begin{itemize}
+ \item <base\_font\_cs>, <alt\_font\_cs>は
+\cs{jfont} によって定義された和文フォントである.
+ \item <range>は文字コードの範囲を表すコンマ区切りのリストであるが,
+   例外として負数$-n$は「<base\_font\_cs>のJFMの文字クラス$n$に属する全ての文字」
+   を意味する.
+
+<range>中に<alt\_font\_cs>中に実際には存在しない文字が指定された場合は,
+その文字に対する設定は無視される.
+\end{itemize}
+
+例えば,\cs{hoge} のJFMが\LuaTeX-ja標準の
+\ \texttt{jfm-ujis.lua} であった場合,
+\begin{lstlisting}
+\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
+\end{lstlisting}
+は「\cs{hoge} を利用しているとき,
+\texttt{U+3000}--\texttt{U+30FF}と
+文字クラス1(開き括弧類)中の文字だけは \cs{piyo} を用いる」
+ことを設定する.\verb+{-1}-{-1}+ という変わった指定の仕方をしているのは,
+普通に \texttt{-1} と指定したのでは正しく$-1$と読み取られないという
+マクロの都合による.
+%</ja>
+
+%<*ja>
+\subsection{\cs{ltjalchar} と \cs{ltjjachar}}
+文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を
+\ \cs{char} プリミティブを使い \cs{char}<chr\_code> として出力させると,
+その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって
+\textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され
+るかが決まる.
+
+文字範囲の設定を無視し,文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を強制的に
+\textbf{ALchar}, \textbf{JAchar}で出力する命令がそれぞれ
+\ \cs{ltjalchar},~\cs{ltjjachar} である.使用方法は \cs{char} と同じく
+\ \cs{ltjalchar}<chr\_code>, \cs{ltjjachar}<chr\_code>とすればよい.
+<chr\_code>が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること
+に注意.
+
+以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである.
+\begin{LTXexample}[width=0.25\textwidth]
+\gtfamily\large % default, ALchar, JAchar
+¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\    % default: ALchar
+α, \char`α, \ltjalchar`α, \ltjjachar`α  % default: JAchar
+\end{LTXexample}
+%</ja>
+
+%<en>\section{Commands for \LaTeXe}
+%<ja>\section{\LaTeXe 用の命令}
+
+%<en>\subsection{Patch for NFSS2}
+%<ja>\subsection{NFSS2へのパッチ}
+\label{ssec-nfsspat}
+
 %<*en>
-Note that \verb+\ltjgetparameter{autospacing}+~and~\verb+\ltjgetparameter{autoxspacing}+
-returns 1 or 0, not
-\texttt{true}~nor~\texttt{false}.
+Japanese patch for NFSS2 in \LuaTeX-ja
+is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe.
+We will describe
+commands which are not described in Subsection~\ref{ssec-chgfnt}.
 %</en>
 %<*ja>
-\verb+\ltjgetparameter{autospacing}+ と \verb+\ltjgetparameter{autoxspacing}+ は,
-\texttt{true}や\texttt{false}を返すの\emph{ではなく},
-1か0のいずれかを返すことに注意,
+\LuaTeX-jaのNFSS2への日本語パッチは
+\pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに,
+和文エンコーディングの管理等をLuaで書きなおしたものである.
+ここでは\ref{ssec-chgfnt}節で述べていなかった命令について
+記述しておく.
 %</ja>
 
-\item
+\begin{cslist}%
+\item[\normalfont\bfseries %
+%<ja>追加の長さ変数達
+%<en>additonal dimensions
+]
 %<*en>
-If first argument is one of the
-following, an additional argument---a character code, for example---is needed.
+Like \pLaTeXe, \LuaTeX-ja defines the following dimensions
+for information of current Japanese font:
 %</en>
 %<*ja>
-第1引数が次のいずれかの場合には,さらに文字コードを第2引数としてとる.
+\pLaTeXe と同様に,\LuaTeX-jaは「現在の和文フォントの情報」を格納する長さ変数
 %</ja>
 \begin{quote}
-\sffamily
-kcatcode, prebreakpenalty, postbreakpenalty, jaxspmode, alxspmode
+ \cs{cht}~(height), \cs{cdp}~(depth), \cs{cHT}~(sum of former two),\\
+ \cs{cwd}~(width), \cs{cvs}~(lineskip), \cs{chs}~(equals to \cs{cwd})
+\end{quote}
+%<en>and its \cs{normalsize} version:
+%<ja>と,その \cs{normalsize} 版である
+\begin{quote}
+ \cs{Cht}~(height), \cs{Cdp}~(depth),
+ \cs{Cwd}~(width), \\\cs{Cvs}~(equals to \cs{baselineskip}),
+ \cs{Chs}~(equals to \cs{cwd})%
+%<en>.
 \end{quote}
-%<*en>
-\verb+\ltjgetparameter{jaxspmode}{...}+~and~\verb+\ltjgetparameter{alxspmode}{...}+
-returns 0,~1, 2,~or~3, instead of \texttt{preonly} etc.
-%</en>
 %<*ja>
-\verb+\ltjgetparameter{jaxspmode}{...}+ や \verb+\ltjgetparameter{alxspmode}{...}+\
-は,\texttt{preonly} などといった文字列ではなく,0から3までの値を返す.
+を定義している.なお,\cs{cwd} と \cs{zw},また
+\cs{cHT} と \cs{zh} は一致しない可能性がある.なぜなら,
+\cs{cwd},~\cs{cHT} は「あ」の寸法から決定されるのに対し,
+\cs{zw} と \cs{zh} はJFMに指定された値に過ぎないからである.
 %</ja>
-
-\item
 %<*en>
-\verb+\ltjgetparameter{jacharrange}{+<range>\verb+}+ returns \texttt{0}
-if ``characters which belong to the character range~<range> are \textbf{JAchar}'',
-\texttt{1} if ``\dots~are \textbf{ALchar}''.
-Although there is no character range~$-1$, specifying $-1$ to <range> does not cause an
-      error (returns 1).
+Note that \cs{cwd}~and~\cs{cHT} may  differ from \cs{zw}~and~\cs{zh}
+respectively.
+On the one hand the former dimensions are determined from the character ``あ'',
+but on the other hand \cs{zw}~and~\cs{zh} are specified by JFM.
 %</en>
-%<*ja>
-\verb+\ltjgetparameter{jacharrange}{+<range>\verb+}+ は,<range>が\textbf{JAchar}達の
-範囲ならば0を,そうでなければ1を返す.「$-1$番の文字範囲」は存在しないが,<range>に$-1$を
-指定してもエラーは発生しない(1を返す).
-%</ja>
 
-\item
-%<*en>
-For an integer~<digit> between 0~and~9,
-     \verb+\ltjgetparameter{kansujichar}{+<digit>\verb+}+ returns the character code
-of the result of \cs{kansuji}<digit>.
-%</en>
-%<*ja>
-0--9の数<digit>に対して,
-\verb+\ltjgetparameter{kansujichar}{+<digit>\verb+}+ は,\cs{kansuji}<digit>で出力され
-     る文字の文字コードを返す.
-%</ja>
 
-\item
-%<*en>
-\verb+\ltjgetparameter{adjustdir}+ returns a integer which represents
-the direction of the surrounding vertical list.
-As \Param{direction}, the return value 1 means \emph{down-to-up} direction,
-3 means \emph{tate} direction (vertical typesetting),
-and 4 means \emph{yoko} direction (horizontal typesetting).
-%</en>
-%<*ja>
-\verb+\ltjgetparameter{adjustdir}+ は,周囲のvboxの組方向(言い換えれば,
-\cs{vadjust} で用いられる組方向)を表す数値を返す.
-\Param{direction}と同様に,1は \cs{dtou} 方向を,
-3は縦組みを,4は横組みを表す.
-%</ja>
+\item[\cs{DeclareYokoKanjiEncoding}\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+\item[\cs{DeclareTateKanjiEncoding}\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
 
-\item
 %<*en>
-For an integer~<reg\_num> between 0~and~65535,
-\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ returns the direction of
-\cs{box}<reg\_num>. If this box register is void, the returned value is zero.
+In NFSS2 under \LuaTeX-ja, distinction between alphabetic fonts
+            and Japanese fonts are only made by their
+            encodings. For example, encodings OT1 and T1 are encodings for
+            alphabetic fonts, and Japanese fonts cannot
+            have these encodings. These command define a new encoding
+            scheme for Japanese font families.
 %</en>
 %<*ja>
-0--65535の数<reg\_num>に対して,
-\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ は,\cs{box}<reg\_num>に
-格納されているボックスの組方向を表す.もしこのレジスタが空の場合は,0が返される.
+\LuaTeX-jaのNFSS2においては,欧文フォントと和文フォントは
+そのエンコーディングによってのみ区別される.
+例えば,OT1とT1のエンコーディングは欧文フォントのエンコーディングであり,
+和文フォントはこれらのエンコーディングを持つことはできない.
+これらコマンドは横組用・縦組用和文フォントのための新しいエンコーディングを
+それぞれ定義する.
 %</ja>
 
-\item
+\item[\cs{DeclareKanjiEncodingDefaults}\{<text-settings>\}\{<math-settings>\}]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+\item[\cs{DeclareKanjiSubstitution}\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+\item[\cs{DeclareErrorKanjiFont}\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}\{<size>\}]
+
 %<*en>
-The following parameter names \emph{cannot be specified} in \cs{ltjgetparameter}.
+The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaults} and~others.
 %</en>
 %<*ja>
-次のパラメータ名を \cs{ltjgetparameter} に指定することはできない
+上記3つのコマンドはちょうどNFSS2 の \cs{DeclareFontEncodingDefaults} などに対応するものである
 %</ja>
-\begin{quote}
-\sffamily
-jatextfont, jascriptfont, jascriptscriptfont, jacharrange
-\end{quote}
-
-\item
-%<*en>
-\verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+ returns
-the range number which <chr\_code> belongs to
-(although there is no parameter named ``chartorange'').
 
-If <chr\_code> is between 0 and 127, this <chr\_code> does not belong to
-any character range. In this case,
-      \verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+
-returns $-1$.
+\item[\cs{reDeclareMathAlphabet}\{<unified-cmd>\}\{<al-cmd>\}\{<ja-cmd>\}]
 
-Hence, one can know whether <chr\_code> is \textbf{JAchar} or not
-by the following:
-%</en>
+% ToDo: en
 %<*ja>
-\verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+ によって
-<chr\_code>の属する文字範囲の番号を知ることができる.
-
-<chr\_code>に0--127の値を指定した場合(このとき,<chr\_code>が属する
-文字範囲は存在しない)は$-1$が返る.
+和文・欧文の数式用フォントファミリを一度に変更する命令を作成する.
+具体的には,欧文数式用フォントファミリ変更の命令<al-cmd>(\cs{mathrm} 等)と,和文数式用フォ
+            ントファミリ変更の命令<ja-cmd>(\cs{mathmc} 等)の2つを同時に行う命令として
+            <unified-cmd>を(再)定義する.実際の使用では<unified-cmd>と
+            <al-cmd>に同じものを指定する,すなわち,<al-cmd>で和文側も変
+            更させるようにするのが一般的と思われる.
 
-そのため,<chr\_code>が\textbf{JAchar}か\textbf{ALchar}かは
-次で知ることができる:
+本命令は
+\begin{center}\tt
+<unified-cmd>\{<arg>\}\quad$\longrightarrow$\quad
+(<al-cmd>の1段展開結果)\{<ja-cmd>の1段展開結果)\{<arg>\}\}
+\end{center}
+と定義を行うので,使用には注意が必要である:
+%<en>\vspace{-\medskipamount}
+\begin{itemize}
+\item <al-cmd>,~<ja-cmd>は既に定義されていなければならない.
+      \cs{reDeclareMathAlphabet}\\の後に
+両命令の内容を再定義しても,<unified-cmd>の内容にそれは反映されない.
+\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない.
+\end{itemize}
 %</ja>
-\begin{quote}
-\ttfamily \verb+\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{+%
-  <chr\_code>\verb+}}+\\\null\hfill\verb+% 0 if JAchar, 1 if ALchar+
-\end{quote}
 
+\item[\cs{DeclareRelationFont}\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\*
+  \null\hfill\{<al-encoding>\}\{<al-family>\}\{<al-series>\}\{<al-shape>\}]
 %<*en>
-\item Because the returned value is string, the following conditionals do not work
-if \Param{kanjiskip} (or~\Param{xkanjiskip}) has the stretch part or the shrink part.
-\begin{lstlisting}
-\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi
-\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi
-\end{lstlisting}
-The correct way is using a temporary register.
-\begin{lstlisting}
-\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi
-\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi
-\end{lstlisting}
+This command sets the ``accompanied'' alphabetic font (given by the latter 4~arguments)
+with respect to a Japanese font given by the former 4~arguments.
 %</en>
 %<*ja>
-\item 返り値が文字列であることから,\Param{kanjiskip}や\Param{xkanjiskip}を直接
-\ \cs{ifdim} を使って比較することは望ましくない.伸び量や縮み量を持っている時には,
-次はエラーを発生させる:
-\begin{lstlisting}
-\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi
-\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi
-\end{lstlisting}
-レジスタに一旦代入するのが良い:
-\begin{lstlisting}
-\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi
-\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi
-\end{lstlisting}
+いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントに対して,
+そのフォントに対応する「従属欧文」のフォントを後半の4引数により与える.
 %</ja>
-
-\end{itemize}
-
+\item[\cs{SetRelationFont}]
+%<*en>
+This command is almost same as \cs{DeclareRelationFont}, except that this command does a local
+assignment, where \cs{DeclareRelationFont} does a global assignment.
+%</en>
 %<*ja>
-\subsection{\cs{ltjsetparameter} の代替}
-原則として各種内部パラメータの設定には \cs{ltjsetparameter} もしくは
-\ \cs{ltjglobalsetparameter}\ を用いることになるが,
-\cs{ltjsetparameter} の実行には時間がかかるという難点があり,
-\LuaTeX-ja の内部ではより高速に実行できる別の形式を用いている.
-\emph{本節は一般利用者むけの内容ではない.}
-
-\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} の設定}
-\pLaTeXe 新ドキュメントクラスでは,
-\begin{lstlisting}
-\def\@setfontsize#1#2#3{%
-  ...
-  \kanjiskip=0zw plus .1zw minus .01zw
-  \ifdim\xkanjiskip>\z@
-    \if@slide \xkanjiskip=0.1em \else
-      \xkanjiskip=0.25em plus 0.15em minus 0.06em
-    \fi
-  \fi}
-\end{lstlisting}
-と,フォントサイズを変更するごとに \cs{kanjiskip}, \cs{xkanjiskip} を変更している.
-この \cs{@setfontsize} は文書の中で多数回実行されるので.
-\LuaTeX-ja 用に素直に書き換えた
-\begin{lstlisting}
-  \ltjsetparameter{kanjiskip=0\zw plus .1\zw minus .01\zw}
-  \@tempskipa=\ltjgetparameter{xkanjiskip}
-  \ifdim\@tempskipa>\z@
-    \if@slide
-      \ltjsetparameter{xkanjiskip=0.1em}
-    \else
-      \ltjsetparameter{xkanjiskip=0.25em plus 0.15em minus 0.06em}
-    \fi
-  \fi
-\end{lstlisting}
-としたのではタイプセットが遅くなってしまう.
-そこで,\cs{ltjsetparameter} の中で
-\begin{itemize}
-\item \cs{globaldefs} の値を読み取る \cs{ltj@setpar@global}
-\item \Param{kanjiskip} の設定を行う \cs{ltjsetkanjiskip}
-\item \Param{xkanjiskip} の設定を行う \cs{ltjsetxkanjiskip}
-\end{itemize}
-を独立させ,\Pkg{ltjsclasses}では,
-\begin{lstlisting}
-  \ltj@setpar@global
-  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
-  \@tempskipa=\ltjgetparameter{xkanjiskip}
-  \ifdim\@tempskipa>\z@
-    \if@slide
-      \ltjsetxkanjiskip.1em
-    \else
-      \ltjsetxkanjiskip.25em plus .15em minus .06em
-    \fi
-  \fi
-\end{lstlisting}
-としている.
-\cs{ltj@setpar@global}を直前に実行せず,単独で
-\cs{ltjsetkanjiskip}, \cs{ltjsetxkanjiskip}を実行することは想定されていないので注意.
+このコマンドは \cs{DeclareRelationFont} とローカルな指定であることを除いて
+ほとんど同じである(\cs{DeclareRelationFont} はグローバル).
+%</ja>
 
+\item[\cs{userelfont}]
+%<*en>
+Change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic
+            font family with respect to current Japanese font family,
+            which was set by
+            \cs{DeclareRelationFont} or \cs{SetRelationFont}.
+Like \cs{fontfamily}, \cs{selectfont} is required to take an effect.
+%</en>
+%<*ja>
+現在の欧文フォントのエンコーディング/ファミリ/…… を,
+\cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された
+現在の和文フォントに対応する「従属欧文」フォントに変更する.
+\cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である.
+%</ja>
 
+\item[\cs{adjustbaseline}]
+%<*en>
+In \pLaTeXe, \cs{adjustbaseline} sets \cs{tbaselineshift}
+to match the vertical center of ``M'' and that of ``あ''  in vertical typesetting:
+\[
+\text{\cs{tbaselineshift}} \leftarrow
+\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
+  + d_{\text{あ}} - d_{\text{M}},
+\]
+where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively.
+In \LuaTeX-ja, this \cs{adjustbaseline} does similar task, namely setting the
+            \Param{talbaselineshift} parameter.
+If the \LaTeX\ is 2015/10/01 release or later, \LuaTeX-ja use a Japanese
+character whose character class is zero,  instead of `あ'.
+%</en>
+%<*ja>
+\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために,
+\cs{tbaselineshift} を設定する役割を持っていた:
+\[
+\text{\cs{tbaselineshift}} \leftarrow
+\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
+  + d_{\text{あ}} - d_{\text{M}},
+\]
+ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す.
+\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処
+            理を行っている.
 
-\paragraph{ベースライン補正量の設定}
-\pLaTeX の\Pkg{ascmac}パッケージでは,縦組の欧文ベースライン補正量の一時待避・復帰処理に
-\ \cs{@saveybaselineshift}\ という寸法レジスタを用い
-\begin{lstlisting}
-\@savetbaselineshift\tbaselineshift\tbaselineshift\z@
-...
-\tbaselineshift\@savetbaselineshift
-\end{lstlisting}
-という処理を行っている.
+同時に,これも\pLaTeXe の \cs{adjustbaseline} で同様の処理が行われていたが,
+「漢」の寸法を元に(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd}
+といった長さ変数を設定する.
 
-これを\LuaTeX-ja 用に \cs{ltjsetparameter} を使って書き直すと,
-\begin{lstlisting}
-\@savetbaselineshift\ltjgetparameter{talbaselineshift}
-\ltjsetparameter{talbaselineshift=\z@}
-...
-\ltjsetparameter{talbaselineshift=\@savetbaselineshift}
-\end{lstlisting}
-となる.
+なお,\LaTeX が2015/10/01版以降の場合は,「あ」「漢」の代わりに
+「文字クラス0の和文文字」を用いる.
+%</ja>
 
-さて,縦組の欧文ベースライン補正量\Param{talbaselineshift}は,
-実際には \cs{ltj@tablshift} という属性レジスタに格納されている
-(\ref{sec-para}\nobreak 節参照).属性レジスタは長さではなく整数値を格納する\footnote{%
-  従って,\texttt{\textbackslash @savetbaselineshift=\textbackslash ltj@tablshift}\
-  のように記述することはできない.属性レジスタを \cs{tbaselineshift} という名称にしなかっ
-  たのはそのためである.
-}ものであり,\cs{ltj@tablshift} は補正量を sp 単位で保持することから,
-上記のコードと同じ内容をより速い以下のコードで実現することができる.
-\begin{lstlisting}
-\@savetbaselineshift\ltj@tablshift sp%
-\ltj@tablshift\z@
-...
-\ltj@tablshift\@savetbaselineshift
-\end{lstlisting}
-この手法は \Pkg{ascmac} パッケージの\LuaTeX-ja対応パッチ \Pkg{lltjp-tascmac.sty} で
-実際に用いられている.\Pkg{lltjp-tascmac.sty} は自動的に読み込まれるので,
-ユーザは何も気にせず普通に \Pkg{ascmac} パッケージを \cs{usepackage} で読みこめば良い.
+\item[\cs{fontfamily}\{<family>\}]
+%<*en>
+As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both})
+to <family>. See Subsection~\ref{ssec-fontfamilycmd} for detail.
+%</en>
+%<*ja>
+元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文,
+和文,\emph{もしくは両方})を<family>に変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること.
 %</ja>
 
 
-%<en>\section{Other Commands for plain \TeX\ and \LaTeXe}
-%<ja>\section{plainでも\LaTeX でも利用可能なその他の命令}
-%<en>\subsection{Commands for compatibility with \pTeX}
-%<ja>\subsection{\pTeX 互換用命令}
+\begin{figure}[!tb]
+\begin{LTXexample}[pos=b]
+\DeclareKanjiFamily{JY3}{edm}{}
+\DeclareFontShape{JY3}{edm}{m}{n}    {<-> s*KozMinPr6N-Regular:jfm=ujis;}{}
+\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;color=007F00}{}
+\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;color=0000FF}{}
+\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}}
+\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF}
+{\kanjifamily{edm}\selectfont
+日本国民は、正当に選挙された国会における代表者を通じて行動し、……}
+\end{LTXexample}
+%<ja>\caption{\cs{DeclareAlternateKanjiFont} の使用例}
+%<en>\caption{An example of \cs{DeclareAlternateKanjiFont}}
+\label{fig:altkanji}
+\end{figure}
 
-%<*en>
-The following commands are implemented for compatibility with \pTeX.
-Note that the former five commands don't support JIS~X~0213, but only JIS~X~0208.
-The last \cs{kansuji} converts an integer into its Chinese numerals.
-%</en>
+\item[\cs{DeclareAlternateKanjiFont}\{<base-encoding>\}\{<base-family>\}\{<base-series>\}\{<base-shape>\}\\
+  \null\hfill\{<alt-encoding>\}\{<alt-family>\}\{<alt-series>\}\{<alt-shape>\}\{<range>\}]
 %<*ja>
-以下の命令は\pTeX との互換性のために実装されている.そのため,JIS~X~0213には対応せず,
-\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない.
+\ref{ssec-altfont}節の\
+\cs{ltjdeclarealtfont} と同様に,前半の4引数の
+和文フォント(基底フォント)のうち<range>中の文字を
+第5から第8引数の和文フォントを使って組むように指示する.
+使用例を図\nobreak\ref{fig:altkanji}に載せた.
+
+\begin{itemize}
+ \item
+\cs{ltjdeclarealtfont} では基底フォント・置き換え先和文フォントはあらかじめ定義されてい
+            ないといけない(その代わり即時発効)であったが,
+\cs{DeclareAlternateKanjiFont} の設定が
+実際に効力が発揮するのは,書体変更やサイズ変更を行った時,
+あるいは(これらを含むが)\cs{selectfont} が実行された時である.
+ \item
+段落やhboxの最後での設定値が段落/hbox全体にわたって通用する点や,
+<range>に負数$-n$を指定した場合,それが「基底フォントの文字クラス$n$に属する文字全体」
+と解釈されるのは \cs{ltjdeclarealtfont} と同じである.
+\end{itemize}%
 %</ja>
-\begin{center}
-\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{ucs}, \cs{kansuji}
-\end{center}
 %<*en>
-These six commands takes an internal integer, and returns a \emph{string}.
+As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}),
+characters in <range> of the Japanese font (we say the \emph{base font})
+which specified by first 4 arguments are typeset
+by the Japanese font which specified by fifth to eighth arguments
+(we say the \emph{alternate font}).
+An example is shown in \autoref{fig:altkanji}.
+
+\begin{itemize}
+ \item
+In \cs{ltjdeclarealtfont}, the base font and the alternate font must be already defined.
+But this \cs{DeclareAlternateKanjiFont} is not so.
+In other words, \cs{DeclareAlternateKanjiFont} is effective only after
+current Japanese font is changed, or only after \cs{selectfont} is executed.
+ \item \dots
+\end{itemize}%
+\vspace{-\medskipamount}
+%</en>
+\end{cslist}
+
+%<*en>
+As closing this subsection, we shall introduce an example of
+\cs{SetRelationFont} and \cs{userelfont}:
 %</en>
 %<*ja>
-これら6命令は内部整数を引数とするが,実行結果は\textbf{文字列}であることに注意.
+この節の終わりに,\cs{SetRelationFont} と \cs{userelfont} の例を
+紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが
+Avant Garde (OT1/pag/m/n) に変わっていることがわかる.
 %</ja>
-\begin{LTXexample}
-\newcount\hoge
-\hoge="2423 %"
-\the\hoge, \kansuji\hoge\\
-\jis\hoge, \char\jis\hoge\\
-\kansuji1701
+\begin{LTXexample}[width=0.3\textwidth]
+\makeatletter
+\SetRelationFont{JY3}{\k@family}{m}{n}{OT1}{pag}{m}{n}
+  % \k@family: current Japanese font family
+\userelfont\selectfont あいうabc
 \end{LTXexample}
 
+%<en>\subsection{Detail of \cs{fontfamily} command}
+%<ja>\subsection{\cs{fontfamily}コマンドの詳細}
+\label{ssec-fontfamilycmd}
 %<*en>
-To change characters of Chinese numerals for each digit, set \Param{kansujichar} parameter:
-\begin{LTXexample}
-\ltjsetparameter{kansujichar={1,`壹}}
-\ltjsetparameter{kansujichar={7,`漆}}
-\ltjsetparameter{kansujichar={0,`零}}
-\kansuji1701
-\end{LTXexample}
-%</en>
+In this subsection, we describe when \cs{fontfamily}<family> changes current
+Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to
+<family> if it is recognized as a Japanese font family, and similar with alphabetic font
+family. There is a case that current Japanese/alphabetic font family are both changed to
+<family>, and another case that <family> isn't recognized as a Japanese/alphabetic font
+family either.
 
+\paragraph{Recognition as Japanese font family}
+First, Whether Japanese font family will be changed is determined in following order.
+This order is very similar to \cs{fontfamily} in \pLaTeXe, but we re-implemented in Lua.
+We use an auxiliary list~$N_{\mathrm{J}}$.
+%</en>
+%<*ja>
+本節では,\cs{fontfamily}<family> がいつ和文/欧文フォントファミリを変更するかについて解説
+する.基本的には,<family>が和文フォントファミリだと認識されれば和文側が,欧文フォントファ
+ミリだと認識されれば欧文側が変更される.どちらとも認識されれば和文・欧文の両方が変わるこ
+とになるし,当然どちらとも認識されないこともある.
 
-\subsection{\cs{inhibitglue}}
+\paragraph{和文フォントファミリとしての認識}
+まず,<family>が和文フォントファミリとして認識されるかは以下の順序で決定される.
+これは\pLaTeXe の \cs{fontfamily} にとても似ているが,ここではLuaによって実装している.
+補助的に「和文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{J}}$を用いる.
+%</ja>
+\begin{enumerate}
 %<*en>
-\cs{inhibitglue} suppresses the insertion of \textbf{JAglue}.
-The following is an example, using a special JFM that there will be a glue between
-the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''.
+\item If the family~<family> has been defined already by \cs{DeclareKanjiFamily},
+      <family> is recognized as a  Japanese font family.
+      Note that <family> need not be defined under \emph{current} Japanese font encoding.
 %</en>
 %<*ja>
-\cs{inhibitglue} は\textbf{JAglue}の挿入を抑制する.
-以下は,ボックスの始めと「あ」の間,「あ」「ウ」の間にグルーが入る特別なJFMを用いた例で
-ある.
+\item ファミリ<family>が既に \cs{DeclareKanjiFamily} によって定義されている場合,
+      <family>は和文フォントファミリであると認識される.
+      ここで,<family>は現在の和文フォントエンコーディングで定義されていなくてもよい.
+%</ja>
+%<*en>
+\item If the family~<family> has been listed in a list~$N_{\mathrm{J}}$, this means
+      that <family> is not a Japanese font family.
+%</en>
+%<*ja>
+\item ファミリ<family>がリスト$N_{\mathrm{J}}$に既に含まれていれば,それは
+      <family>が和文フォントファミリではないことを意味する.
 %</ja>
+%<*en>
+\item If the \Pkg{luatexja-fontspec} package is loaded, we stop here, and <family> is not
+      recognized as a Japanese font family.
 
-\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
-\fbox{\hbox{あウあ\inhibitglue ウ}}
-\inhibitglue\par\noindent あ1
-\par\inhibitglue\noindent あ2
-\par\noindent\inhibitglue あ3
-\par\hrule\noindent あoff\inhibitglue ice
-\end{LTXexample}
+      If the \Pkg{luatexja-fontspec} package is \emph{not} loaded,
+now \LuaTeX-ja looks whether there exists a Japanese font encoding~<enc> such that
+      a font definition named \texttt{<enc><family>.fd} (the file name is
+      all lowercase) exists. If so, <family> is recognized as a  Japanese font family (the font definition file won't be loaded here).
+      If not, <family> is not a Japanese font family, and
+      <family> is appended to the list~$N_{\mathrm{J}}$.
+%</en>
+%<*ja>
+\item もし\Pkg{luatexja-fontspec}パッケージが読み込まれていれば,ここで終了であり,
+<family>は和文フォントファミリとして認識されないことになる.
+
+もし\Pkg{luatexja-fontspec}パッケージが読み込まれていなければ,和文エンコーディング<enc>で
+フォント定義ファイル\texttt{<enc><family>.fd}(ファイル名は全て小文字)が存在するようなも
+      のがあるかどうかを調べる.
+存在すれば,<family>は和文フォントファミリと認識される(フォント定義ファイルは読み込まれな
+      い).
+存在しなければ,<family>は和文フォントファミリでないと認識され,リスト$N_{\mathrm{J}}$に<family>を追加することでそれを記憶する.
+
+%</ja>
+\end{enumerate}
 
 %<*en>
-With the help of this example, we remark the specification of \cs{inhibitglue}:
+\paragraph{Recognition as alphabetic font family}
+Next, whether alphabetic font family will be changed is determined in following order.
+We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$,
 %</en>
 %<*ja>
-この例を援用して,\cs{inhibitglue} の仕様について述べる.
+\paragraph{欧文フォントファミリとしての認識}
+同様に,<family>が和文フォントファミリとして認識されるかは以下の順序で決定される.
+補助的に「欧文フォントファミリと既に認識された」ファミリのリスト$F_{\textrm{A}}$と,
+「欧文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{A}}$を用いる.
 %</ja>
-\begin{itemize}
+
+\begin{enumerate}
 %<*en>
-\item The call of \cs{inhibitglue} in the (internal) vertical mode is
-      simply ignored.
+\item If the family~<family> has been listed in a list~$F_{\mathrm{A}}$,
+      <family> is recognized as an alphabetic font family.
 %</en>
 %<*ja>
-\item \emph{\cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない}\footnote{%
-  この点は\TeX~Live~2014での\pTeX における \cs{inhibitglue} の仕様変更と同じである.
-}.
-4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり,
-\cs{noindent} の時点で水平モードになるからである.
+\item ファミリ<family>がリスト$F_{\mathrm{A}}$に既に含まれていれば,
+      <family>は欧文フォントファミリと認識される.
 %</ja>
-
 %<*en>
-\item The call of \cs{inhibitglue} in the (restricted) horizontal
-      mode is only effective on the spot; does not get over boundary of
-      paragraphs. Moreover, \cs{inhibitglue} cancels ligatures and
-      kernings, as shown in the last line of above example.
+\item If the family~<family> has been listed in a list~$N_{\mathrm{A}}$, this means
+      that <family> is not  an alphabetic font family.
 %</en>
 %<*ja>
-\item \cs{inhibitglue} の(制限された)水平モード中での呼び出しはその場でのみ
-  有効であり,段落の境界を乗り越えない.
-  さらに,\cs{inhibitglue} は上の例の最終行のように(欧文における)リガチャとカーニングを
-  打ち消す.これは,\cs{inhibitglue} が内部的には「現在のリスト中にwhatsitノードを
-  追加する」ことを行なっているからである.
+\item ファミリ<family>がリスト$N_{\mathrm{A}}$に既に含まれていれば,それは
+      <family>が欧文フォントファミリではないことを意味する.
 %</ja>
-
 %<*en>
-\item The call of \cs{inhibitglue} in math mode is just ignored.
+\item If there exists an alphabetic font encoding such that the family~<family> has been
+      defined under it, <family> is recognized as an alphabetic font family, and
+      to memorize this, <family> is appended to the list~$F_{\mathrm{A}}$.
 %</en>
 %<*ja>
-\item \cs{inhibitglue} を数式モード中で呼び出した場合はただ無視される.
+\item ある欧文フォントエンコーディング下でファミリ<family>が定義されていれば,
+      <family>は欧文フォントファミリと認識され,リスト$F_{\mathrm{A}}$に<family>を追加することでこのことを記憶する.
 %</ja>
-
+%<*en>
+\item Now \LuaTeX-ja looks whether there exists an alphabetic font encoding~<enc> such that
+      a font definition named \texttt{<enc><family>.fd} (the file name is
+      all lowercase) exists. If so, current alphabetic font family will be changed to
+      <family>~(the font definition file won't be loaded here).
+      If not, current alphabetic font family won't be changed, and
+      <family> is appended to the list~$N_{\mathrm{A}}$.
+%</en>
 %<*ja>
-\item \LaTeX で\LuaTeX-ja を使用する場合は,
-\cs{inhibitglue} の代わりとして \verb+\<+ を使うことができる.
-既に \verb+\<+ が定義されていた場合は,\LuaTeX-ja の読み込みで強制的に上書きされるので
-注意すること.
+\item 最終段階では,欧文エンコーディング<enc>で
+フォント定義ファイル\texttt{<enc><family>.fd}(ファイル名は全て小文字)が存在するようなも
+      のがあるかどうかを調べる.
+存在すれば,<family>は欧文フォントファミリと認識される(フォント定義ファイルは読み込まれない).
+存在しなければ,<family>は欧文フォントファミリと認識されないので,リスト$N_{\mathrm{A}}$に
+      <family>を追加してそのことを記憶する.
 %</ja>
-\end{itemize}
-
+\end{enumerate}
 
-\subsection{\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}}
 %<*en>
-Sometimes \texttt{'parbdd'}~and~\texttt{'boxbdd'} specifications~look like ``fail'',
-especially in paragraphs inside list environments.
-This is because \cs{everypar} inserts some nodes such as boxes and kerns, so
-the ``first letter'' in a paragraph is in fact not the first letter.
+Also, each call of \cs{DeclareFontFamily} \emph{after} loading of \LuaTeX-ja makes
+the second argument (family) is appended to the list~$F_{\mathrm{A}}$.
 %</en>
 %<*ja>
-リスト環境内での\cs{item}で始まる各項目などでは,
-「段落最初の鍵括弧が余計に半角字下げされる」など,
-JFMにある\texttt{'parbdd'}, \texttt{'boxbdd'}の指定が見かけ上破綻していることがある.
-
-これは\TeX が\cs{everypar}を用いて段落開始時に記号類や空白などを挿入してしまっているため,
-段落最初の鍵括弧が実際には段落最初のノードではないことに起因する.以下に例を示した.
+また,\cs{DeclareFontFamily}が\LuaTeX-jaの読み込み後に実行された場合は,
+第2引数(ファミリ名)が自動的に$F_{\mathrm{A}}$に追加される.
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\parindent1\zw
-\noindent ああああああああ\par % for comparison
-「ああああああ \par            % normal paragraph
 
-\everypar{\null}
-「ああああああ \par            % ???
-\end{LTXexample}
 %<*en>
-\cs{ltjfakeboxbdd}~and~\cs{ltjfakeparbegin} primitives resolve this situation.
-\begin{itemize}
-  \item \cs{ltjfakeparbegin} creates a node which indicates
-  ``beginning of an indented paragraph'' to the insertion process of \textbf{JAglue}.
- \item \cs{ltjfakeboxbdd} creates a node which indicates
-  ``beginning/ending of a box'' to the insertion process of \textbf{JAglue}.
-\end{itemize}
-As an example, the example above can be improved as follows:
+The above order is very similar to \cs{fontfamily} in \pLaTeXe, but more complicated (clause~3.).
+This is because  \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not,
+hence \LuaTeX-ja does not know calls of \cs{DeclareFontFamily} \emph{before} itself is
+loaded.
 %</en>
 %<*ja>
-\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}はこの状況を改善する命令である.
-実際には\cs{everypar}の末尾にこれらを追加するという使い方がほとんどになるだろう.
-\begin{itemize}
-  \item \cs{ltjfakeparbegin}は,実行された箇所が「インデントあり段落の開始」であると\LuaTeX-jaの
-  和文処理グルー挿入処理に認識させる.この命令の直前に\textbf{JAchar}があった場合,
-  この文字の後ろに入るグルー等の処理については未定義である
-  \footnote{%
-    この命令と同等の内容は,\cs{dirrctlua}の形で\Pkg{ltjsclasses}内で以前から使われていた.
-    一般ユーザでも利用しやすくするため,20170505.0版では新たに命令として定義した.
-  }.
-  \item \cs{ltjfakeboxbdd}は,実行された箇所が「ボックスの先頭と末尾」であると\LuaTeX-jaの
-  和文処理グルー挿入処理に認識させる.
-\end{itemize}
-例えば,先ほどの例に対して適用すると,次のようになる.
+以上の方針は\pLaTeXe における \cs{fontfamily} にやはり類似しているが,3.が加わり若干複雑になっている.
+それは\pLaTeXe がフォーマットであるのに対し\LuaTeX-jaはそうでないため,
+\LuaTeX-jaは自身が読み込まれる前にどういう\cs{DeclareFontFamily}の呼び出しがあったか
+把握できないからである.
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\parindent1\zw
-\noindent ああああああああ\par % for comparison
-「ああああああ \par            % normal paragraph
-
-\everypar{\null\ltjfakeparbegin}
-「ああああああ \par
-\end{LTXexample}
 
-
-\subsection{\cs{ltjdeclarealtfont}}
-\label{ssec-altfont}
+%<en>\paragraph{Remarks}
+%<ja>\paragraph{注意}
 %<*en>
-Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts.
-This \cs{ltjdeclarealtfont} uses in the following form:
-\begin{quote}
-\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>\{<range>\}
-\end{quote}
-where  <base\_font\_cs>~and~<alt\_font\_cs> are defined by \cs{jfont}.
-Its meaning is
-\begin{quote}
-If the current Japanese font is <base\_font\_cs>, characters which belong to <range>
-is typeset by another Japanese font <alt\_font\_cs>, instead of <base\_font\_cs>.
-\end{quote}
-Here <range> is a comma-separated list of character codes, but also accepts negative integers:
-$-n$~($n≥1$) means that all characters of character classes~$n$, with respect to JFM used
-by <base\_font\_cs>. Note that characters which do not exist in <alt\_font\_cs> are
-ignored.
-
-For example, if \cs{hoge} uses \texttt{jfm-ujis.lua}, the standard JFM of \LuaTeX-ja,
-then
-\begin{lstlisting}
-\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
-\end{lstlisting}
-does
-\begin{quote}
-If the current Japanese font is \cs{hoge}, \texttt{U+3000}--\texttt{U+30FF}
-and characters in class~1 (ideographic opening brackets)
-are typeset by \cs{piyo}.
-\end{quote}
+Of course, there is a case that <family> is not recognized as a Japanese font family,  nor
+an alphabetic font family.
+In this case, \LuaTeX-ja treats ``the argument <family> is wrong'', so
+set both current alphabetic and Japanese font family to <family>,
+to use the default family for font substitution.
 %</en>
 %<*ja>
-\cs{jfont} の書式を見ればわかるように,基本的には\LuaTeX-jaにおける1つの和文フォントに
-使用出来る「実際のフォント」は1つである.
-しかし,\cs{ltjdeclarealtfont} を用いると,この原則から外れることができる.
-
-\cs{ltjdeclarealtfont} は以下の書式で使用する:
-\begin{quote}
-\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>\{<range>\}
-\end{quote}
-これは「現在の和文フォント」が<base\_font\_cs>であるとき,
-<range>に属する文字は<alt\_font\_cs>を用いて組版される,という意味である.
-\begin{itemize}
- \item <base\_font\_cs>, <alt\_font\_cs>は
-\cs{jfont} によって定義された和文フォントである.
- \item <range>は文字コードの範囲を表すコンマ区切りのリストであるが,
-   例外として負数$-n$は「<base\_font\_cs>のJFMの文字クラス$n$に属する全ての文字」
-   を意味する.
-
-<range>中に<alt\_font\_cs>中に実際には存在しない文字が指定された場合は,
-その文字に対する設定は無視される.
-\end{itemize}
-
-例えば,\cs{hoge} のJFMが\LuaTeX-ja標準の
-\ \texttt{jfm-ujis.lua} であった場合,
-\begin{lstlisting}
-\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
-\end{lstlisting}
-は「\cs{hoge} を利用しているとき,
-\texttt{U+3000}--\texttt{U+30FF}と
-文字クラス1(開き括弧類)中の文字だけは \cs{piyo} を用いる」
-ことを設定する.\verb+{-1}-{-1}+ という変わった指定の仕方をしているのは,
-普通に \texttt{-1} と指定したのでは正しく$-1$と読み取られないという
-マクロの都合による.
+さて,引数によっては,「和文フォントファミリとも欧文フォントファミリも認識されなかった」
+という事態もあり得る.
+  この場合,引数<family>は不正だった,ということになるので,
+和文・欧文の両方のフォントファミリを<family>に設定し,代用フォントが使われるに任せることにする.
 %</ja>
 
-%<*ja>
-\subsection{\cs{ltjalchar} と \cs{ltjjachar}}
-文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を
-\ \cs{char} プリミティブを使い \cs{char}<chr\_code> として出力させると,
-その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって
-\textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され
-るかが決まる.
+%<*en>
+\subsection{Notes on \cs{DeclareTextSymbol}}
+From \LaTeX~2017/01/01, the standard encoding of \LuaLaTeX\ is changed to the \texttt{TU}
+encoding. This menas that symbols defined by \texttt{T1}~and~\texttt{TS1} encodings can be used
+without loading any package. To produces these symbols in alphabetic fonts in \LuaTeX-ja,
+\LuaTeX-ja patches \cs{DeclareTextSymbol}, and reloads \texttt{tuenc.def}.
 
-文字範囲の設定を無視し,文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を強制的に
-\textbf{ALchar}, \textbf{JAchar}で出力する命令がそれぞれ
-\ \cs{ltjalchar},~\cs{ltjjachar} である.使用方法は \cs{char} と同じく
-\ \cs{ltjalchar}<chr\_code>, \cs{ltjjachar}<chr\_code>とすればよい.
-<chr\_code>が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること
-に注意.
+Under original definition of \cs{DeclareTextSymbol},
+internal commands which is defined by \cs{DeclareTextSymbol} (such as \cs{T1\cs{textquotedblleft}})
+are \textit{chardef} tokens. However, this no longer holds in \LuaTeX-ja;
+for example, the meaning of \cs{TU\cs{textquotedblleft}} is \cs{ltjalchar8220\ltjalchar"2423 }.
+%</en>
+%<*ja>
+\subsection{\cs{DeclareTextSymbol}使用時の注意}
+\LaTeX~(2017/01/01)以降では,\texttt{TU}エンコーディングが標準となり,特に何もしなくても
+\texttt{T1},~\texttt{TS1}エンコーディングで定義されていた記号類が
+使えるようになった.\LuaTeX-jaではこれらの命令によって記号が欧文フォントで出力されるようにするため,
+\cs{DeclareTextSymbol}命令を改変し,そして\texttt{TU}エンコーディングの定義である
+\texttt{tuenc.def}を再読込している.
 
-以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである.
-\begin{LTXexample}[width=0.25\textwidth]
-\gtfamily\large % default, ALchar, JAchar
-¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\    % default: ALchar
-α, \char`α, \ltjalchar`α, \ltjjachar`α  % default: JAchar
-\end{LTXexample}
+従来は \cs{DeclareTextSymbol} で内部的に定義された\cs{T1\cs{textquotedblleft}}といった命令は
+\textit{chardef}トークンであった.しかし前段落で述べた改変によりもはやそうではなくなっており,例えば
+\cs{TU\cs{textquotedblleft}}は \cs{ltjalchar8220\ltjalchar"2423 } という定義になっている.%"
 %</ja>
 
-%<en>\section{Commands for \LaTeXe}
-%<ja>\section{\LaTeXe 用の命令}
-
-%<en>\subsection{Patch for NFSS2}
-%<ja>\subsection{NFSS2へのパッチ}
-\label{ssec-nfsspat}
-
+\begin{table}[t]
+  \centering\small
+  \caption{strut}\label{tab:strutbox}
+  \begin{tabular}{llcccl}
+    \toprule
+    \textbf{box}&\textbf{direction}&\textbf{width}&\textbf{height}&\textbf{depth}
+    &\textbf{user command}\\
+    \midrule
+  \cs{ystrutbox}&yoko&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{ystrut}\\\midrule
+  \cs{tstrutbox}&tate, utod&0&0.5\cs{baselineskip}&0.5\cs{baselineskip}&\cs{tstrut}\\\midrule
+  \cs{dstrutbox}&dtou&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{dstrut}\\\midrule
+  \cs{zstrutbox}&---&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{zstrut}\\\bottomrule
+  \end{tabular}
+\end{table}
 %<*en>
-Japanese patch for NFSS2 in \LuaTeX-ja
-is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe.
-We will describe
-commands which are not described in Subsection~\ref{ssec-chgfnt}.
+\subsection{\cs{strutbox}}
+As \pLaTeX~(2017/04/08 or later), \cs{strutbox} is \emph{a macro} which is expanded to one of
+\cs{ystrutbox},~\cs{tstrutbox},~and~\cs{dstrutbox}
+(all of them are shown in \autoref{tab:strutbox}), according to the current direction.
+Similarly, \cs{strut} now uses one of these boxes.
 %</en>
 %<*ja>
-\LuaTeX-jaのNFSS2への日本語パッチは
-\pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに,
-和文エンコーディングの管理等をLuaで書きなおしたものである.
-ここでは\ref{ssec-chgfnt}節で述べていなかった命令について
-記述しておく.
+\subsection{\cs{strutbox}}
+\pLaTeX~2017/04/08以降と同じように,
+\cs{strutbox}は現在の組方向によって\cs{ystrutbox}, \cs{tstrutbox}, \cs{dstrutbox}の
+いずれかに展開される\emph{マクロ}となっている(これらについては\autoref{tab:strutbox}参照).
+同様に\cs{strut}もこの3\nobreak ボックスのいずれかを組方向によって使い分けるようになっている.
+
+\cs{zstrutbox}はutod方向(\pTeX でいう縦数式ディレクション)で使われる支柱ボックスであるが,
+実際に使われるのは\cs{zstrut}が明示的に発行された時,そして
+\Pkg{lltjext}パッケージで追加される組方向指定で \texttt{<u>} を指定した時,および
+周囲が縦組の状況で \texttt{<z>} を指定した時に限られている.
 %</ja>
 
-\begin{cslist}%
-\item[\normalfont\bfseries %
-%<ja>追加の長さ変数達
-%<en>additonal dimensions
-]
 %<*en>
-Like \pLaTeXe, \LuaTeX-ja defines the following dimensions
-for information of current Japanese font:
+\section{Addon packages}
+\LuaTeX-ja has several addon packages.
+These addons are written as \LaTeX\ packages, but
+\Pkg{luatexja-otf} and~\Pkg{luatexja-adjust} can be loaded in plain \LuaTeX\
+by \cs{input}.
 %</en>
 %<*ja>
-\pLaTeXe と同様に,\LuaTeX-jaは「現在の和文フォントの情報」を格納する長さ変数
-%</ja>
-\begin{quote}
- \cs{cht}~(height), \cs{cdp}~(depth), \cs{cHT}~(sum of former two),\\
- \cs{cwd}~(width), \cs{cvs}~(lineskip), \cs{chs}~(equals to \cs{cwd})
-\end{quote}
-%<en>and its \cs{normalsize} version:
-%<ja>と,その \cs{normalsize} 版である
-\begin{quote}
- \cs{Cht}~(height), \cs{Cdp}~(depth),
- \cs{Cwd}~(width), \\\cs{Cvs}~(equals to \cs{baselineskip}),
- \cs{Chs}~(equals to \cs{cwd})%
-%<en>.
-\end{quote}
-%<*ja>
-を定義している.なお,\cs{cwd} と \cs{zw},また
-\cs{cHT} と \cs{zh} は一致しない可能性がある.なぜなら,
-\cs{cwd},~\cs{cHT} は「あ」の寸法から決定されるのに対し,
-\cs{zw} と \cs{zh} はJFMに指定された値に過ぎないからである.
+\section{拡張パッケージ}
+\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している.
+これらは\LaTeX のパッケージとして制作しているが,
+\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\
+\cs{input} で読み込み可能である.
 %</ja>
+\subsection{\Pkg{luatexja-fontspec}}
+\label{ssec-fontspec2}
 %<*en>
-Note that \cs{cwd}~and~\cs{cHT} may  differ from \cs{zw}~and~\cs{zh}
-respectively.
-On the one hand the former dimensions are determined from the character ``あ'',
-but on the other hand \cs{zw}~and~\cs{zh} are specified by JFM.
+As described in Subsection~\ref{ssec-fontspec}, this optional package
+provides the counterparts for several commands defined in the
+\Pkg{fontspec} package (requires \Pkg{fontspec}~v2.4).
+In addition to OpenType font features in the original \Pkg{fontspec},
+the following ``font features'' specifications are allowed for
+the commands of Japanese version:
 %</en>
+%<*ja>
+\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}%
+パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する.
 
+\Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには
+以下の「フォント機能」を指定することができる:
+%</ja>
 
-\item[\cs{DeclareYokoKanjiEncoding}\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
-%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
-%<ja>\ \\[\dimexpr-2\baselineskip\relax]
-\item[\cs{DeclareTateKanjiEncoding}\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
+
+\begin{cslist}
+\item[CID=<name>\textrm{, }JFM=<name>\textrm{, }JFM-var=<name>]
 
 %<*en>
-In NFSS2 under \LuaTeX-ja, distinction between alphabetic fonts
-            and Japanese fonts are only made by their
-            encodings. For example, encodings OT1 and T1 are encodings for
-            alphabetic fonts, and Japanese fonts cannot
-            have these encodings. These command define a new encoding
-            scheme for Japanese font families.
+These 3 keys correspond to \texttt{cid}, \texttt{jfm} and
+\texttt{jfmvar} keys for \cs{jfont}~and~\cs{tfont} respectively.
+See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details
+ of \texttt{cid}, \texttt{jfm} and
+\texttt{jfmvar} keys.
+
+The \texttt{CID} key is effective only when with \texttt{NoEmbed}
+described below. The same JFM cannot be used in both horizontal Japanese fonts and
+            vertical Japanese fonts, hence the \texttt{JFM} key
+will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} keys.
 %</en>
 %<*ja>
-\LuaTeX-jaのNFSS2においては,欧文フォントと和文フォントは
-そのエンコーディングによってのみ区別される.
-例えば,OT1とT1のエンコーディングは欧文フォントのエンコーディングであり,
-和文フォントはこれらのエンコーディングを持つことはできない.
-これらコマンドは横組用・縦組用和文フォントのための新しいエンコーディングを
-それぞれ定義する.
-%</ja>
+これら3つのキーはそれぞれ \cs{jfont},~\cs{tfont}に対する
+\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する.
+\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節
+            と\ref{ssec-psft}節を参照.
 
-\item[\cs{DeclareKanjiEncodingDefaults}\{<text-settings>\}\{<math-settings>\}]
-%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
-%<ja>\ \\[\dimexpr-2\baselineskip\relax]
-\item[\cs{DeclareKanjiSubstitution}\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}]
-%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
-%<ja>\ \\[\dimexpr-2\baselineskip\relax]
-\item[\cs{DeclareErrorKanjiFont}\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}\{<size>\}]
+\texttt{CID} キーは下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である.
+また,横組用JFMと縦組用JFMは共用できないため,実際に \texttt{JFM} キーを用いる際は
+後に述べる\ \texttt{YokoFeatures} キーや \texttt{TateFeatures}\ の中で用いる
+ことになる.
+%</ja>
 
+\item[NoEmbed]
 %<*en>
-The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaults} and~others.
+By specifying this key, one can use ``name-only'' Japanese font which
+will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}.
 %</en>
 %<*ja>
-上記3つのコマンドはちょうどNFSS2 の \cs{DeclareFontEncodingDefaults} などに対応するものである.
+これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが
+できる.\ref{ssec-psft}節を参照.
 %</ja>
 
-\item[\cs{reDeclareMathAlphabet}\{<unified-cmd>\}\{<al-cmd>\}\{<ja-cmd>\}]
+\begin{figure}[!tb]
+\begin{LTXexample}[width=0.25\textwidth]
+\jfontspec[
+  YokoFeatures={Color=007F00}, TateFeatures={Color=00007F},
+  TateFont=KozGoPr6N-Regular
+]{KozMinPr6N-Regular}
+\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト}
+\addjfontfeatures{Color=FF0000}
+\hbox{\yoko 横組}\hbox{\tate 縦組}
+\end{LTXexample}
+%<ja>\caption{\texttt{TateFeatures} 等の使用例}
+%<en>\caption{An example of \texttt{TateFeatures} etc.}
+\label{fig:yokotate-fontspec}
+\end{figure}
 
-% ToDo: en
+\item[Kanjiskip=<bool>]
 %<*ja>
-和文・欧文の数式用フォントファミリを一度に変更する命令を作成する.
-具体的には,欧文数式用フォントファミリ変更の命令<al-cmd>(\cs{mathrm} 等)と,和文数式用フォ
-            ントファミリ変更の命令<ja-cmd>(\cs{mathmc} 等)の2つを同時に行う命令として
-            <unified-cmd>を(再)定義する.実際の使用では<unified-cmd>と
-            <al-cmd>に同じものを指定する,すなわち,<al-cmd>で和文側も変
-            更させるようにするのが一般的と思われる.
-
-本命令は
-\begin{center}\tt
-<unified-cmd>\{<arg>\}\quad$\longrightarrow$\quad
-(<al-cmd>の1段展開結果)\{<ja-cmd>の1段展開結果)\{<arg>\}\}
-\end{center}
-と定義を行うので,使用には注意が必要である:
-%<en>\vspace{-\medskipamount}
-\begin{itemize}
-\item <al-cmd>,~<ja-cmd>は既に定義されていなければならない.
-      \cs{reDeclareMathAlphabet}\\の後に
-両命令の内容を再定義しても,<unified-cmd>の内容にそれは反映されない.
-\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない.
-\end{itemize}
+\pageref{pg:ltjksp}ページで説明した \verb+\jfont+ 中での \texttt{ltjksp} 指定と
+同一の効力を持ち,
+JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の有効/無効を切り替える.
+標準値は \texttt{true} である.
 %</ja>
 
-\item[\cs{DeclareRelationFont}\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\*
-  \null\hfill\{<al-encoding>\}\{<al-family>\}\{<al-series>\}\{<al-shape>\}]
+\item[TateFeatures=\{<features>\}\textrm{, }TateFont=<font>]
 %<*en>
-This command sets the ``accompanied'' alphabetic font (given by the latter 4~arguments)
-with respect to a Japanese font given by the former 4~arguments.
+The \texttt{TateFeatures} key specifies font features which are only turned~on in
+vertical writing, such as \texttt{Style=VerticalKana}~(\texttt{vkna} feature).
+Similarly, the \texttt{TateFont} key specifies the Japanese font which will be used only
+            in vertical writing.
+A demonstrarion is shown in \autoref{fig:yokotate-fontspec}.
 %</en>
 %<*ja>
-いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントに対して,
-そのフォントに対応する「従属欧文」のフォントを後半の4引数により与える
+縦組において使用されるフォントや,縦組においてのみ適用されるフォント機能達を
+指定する.使用例は\autoref{fig:yokotate-fontspec}参照
 %</ja>
-\item[\cs{SetRelationFont}]
+
+\item[YokoFeatures=\{<features>\}]
 %<*en>
-This command is almost same as \cs{DeclareRelationFont}, except that this command does a local
-assignment, where \cs{DeclareRelationFont} does a global assignment.
+The \texttt{YokoFeatures} key specifies font features which are only turned~on in
+horizontal writing,.
+A demonstrarion is shown in \autoref{fig:yokotate-fontspec}.
 %</en>
 %<*ja>
-このコマンドは \cs{DeclareRelationFont} とローカルな指定であることを除いて
-ほとんど同じである(\cs{DeclareRelationFont} はグローバル)
+同様に,横組においてのみ適用されるフォント機能達を
+指定する.使用例は\autoref{fig:yokotate-fontspec}参照
 %</ja>
 
-\item[\cs{userelfont}]
+
+\begin{figure}[!tb]
+\begin{LTXexample}[pos=b]
+\jfontspec[
+  AltFont={
+    {Range="4E00-"67FF, Color=007F00},
+    {Range="6800-"9EFF, Color=0000FF},
+    {Range="3040-"306F, Font=KozGoPr6N-Regular},
+  }
+]{KozMinPr6N-Regular}
+日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、
+諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、……
+\end{LTXexample}
+%<ja>\caption{\texttt{AltFont} の使用例}
+%<en>\caption{An example of \texttt{AltFont}}
+\label{fig:altkanji-fontspec}
+\end{figure}
+
+\item[AltFont]
+
 %<*en>
-Change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic
-            font family with respect to current Japanese font family,
-            which was set by
-            \cs{DeclareRelationFont} or \cs{SetRelationFont}.
-Like \cs{fontfamily}, \cs{selectfont} is required to take an effect.
+As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}) and
+\cs{DeclareAlternateKanjiFont}~(Subsection~\ref{ssec-nfsspat}),
+with this key, one can typeset some Japanese characters
+by a different font and/or using different features.
+The \texttt{AltFont} feature takes a comma-separated list of comma-separated lists,
+as the following:
+%</en>
+%<*ja>
+\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や,
+\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に,
+このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる.
+\texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである:
+%</ja>
+\begin{lstlisting}[escapechar=\#]
+AltFont = {
+  ...
+  { Range=#\LARG range>#, #\LARG features>#},
+  { Range=#\LARG range>#, Font=#\LARG font~name>#, #\LARG features># },
+  { Range=#\LARG range>#, Font=#\LARG font~name># },
+  ...
+}
+\end{lstlisting}
+%<*en>
+Each sublist should have the \texttt{Range} key
+(sublist which does not contain \texttt{Range} key is simply ignored).
+A demonstrarion is shown in \autoref{fig:altkanji-fontspec}.
 %</en>
 %<*ja>
-現在の欧文フォントのエンコーディング/ファミリ/…… を,
-\cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された
-現在の和文フォントに対応する「従属欧文」フォントに変更する.
-\cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である.
+各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは
+単純に無視される).指定例は\autoref{fig:altkanji-fontspec}に示した.
 %</ja>
+\end{cslist}
 
-\item[\cs{adjustbaseline}]
-%<*en>
-In \pLaTeXe, \cs{adjustbaseline} sets \cs{tbaselineshift}
-to match the vertical center of ``M'' and that of ``あ''  in vertical typesetting:
-\[
-\text{\cs{tbaselineshift}} \leftarrow
-\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
-  + d_{\text{あ}} - d_{\text{M}},
-\]
-where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively.
-In \LuaTeX-ja, this \cs{adjustbaseline} does similar task, namely setting the
-            \Param{talbaselineshift} parameter.
-If the \LaTeX\ is 2015/10/01 release or later, \LuaTeX-ja use a Japanese
-character whose character class is zero,  instead of `あ'.
-%</en>
 %<*ja>
-\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために,
-\cs{tbaselineshift} を設定する役割を持っていた:
-\[
-\text{\cs{tbaselineshift}} \leftarrow
-\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
-  + d_{\text{あ}} - d_{\text{M}},
-\]
-ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す.
-\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処
-            理を行っている.
-
-同時に,これも\pLaTeXe の \cs{adjustbaseline} で同様の処理が行われていたが,
-「漢」の寸法を元に(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd}
-といった長さ変数を設定する.
-
-なお,\LaTeX が2015/10/01 版以降の場合は,「あ」「漢」の代わりに
-「文字クラス0の和文文字」を用いる.
+なお,\Pkg{luatexja-fontspec} 読み込み時には和文フォント定義ファイル%
+\texttt{<ja-enc><family>.fd}は全く参照されなくなる.
 %</ja>
 
-\item[\cs{fontfamily}\{<family>\}]
+
 %<*en>
-As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both})
-to <family>. See Subsection~\ref{ssec-fontfamilycmd} for detail.
+\paragraph{Remark on \texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} keys}
+\leavevmode\par
+In \texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures} keys,
+one cannot specify per-shape settings such as \texttt{BoldFeatures}.
+For example,
+\begin{lstlisting}
+AltFont = {
+  { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
+    Range="3000-"30FF, BoldFeatures={Color=007F00} }
+}
+\end{lstlisting}
+does \emph{not} work. Instead, one have to write
+\begin{lstlisting}
+UprightFeatures = {
+  AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } },
+},
+BoldFeatures = {
+  AltFont =  { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } },
+}
+\end{lstlisting}
+
+On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and  \texttt{TateFont}
+keys can be specified in each list in the \texttt{AltFont} key. Also,
+one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}.
+
+Note that features which are specified in \texttt{YokoFeatures}~and~\texttt{TateFeatures}
+are always interpreted \emph{after} other ``direction-independent'' features.
+This explains why \cs{addjfontfeatures} at~line~6 in~\autoref{fig:yokotate-fontspec}
+has no effect, because a color specification is already done in
+\texttt{YokoFeatures}~and~\texttt{TateFeatures} keys.
 %</en>
 %<*ja>
-元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文,
-和文,\emph{もしくは両方})を<family>に変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること.
-%</ja>
-
+\paragraph{\texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} 等の制限}
+\texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures}の各キーは
+シェイプ別に指定されるべきものであり,
+内部では \texttt{BoldFeatures} などのシェイプ別の指定は行うことが出来ない.
+例えば.
+\begin{lstlisting}
+AltFont = {
+  { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
+    Range="3000-"30FF, BoldFeatures={Color=007F00} }
+}
+\end{lstlisting}
+のように指定することは出来ず,
+\begin{lstlisting}
+UprightFeatures = {
+  AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } },
+},
+BoldFeatures = {
+  AltFont =  { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } },
+}
+\end{lstlisting}
+のように指定しなければならない.
 
-\begin{figure}[!tb]
-\begin{LTXexample}[pos=b]
-\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n}    {<-> s*KozMinPr6N-Regular:jfm=ujis;}{}
-\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;color=007F00}{}
-\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;color=0000FF}{}
-\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}}
-\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF}
-{\kanjifamily{edm}\selectfont
-日本国民は、正当に選挙された国会における代表者を通じて行動し、……}
-\end{LTXexample}
-%<ja>\caption{\cs{DeclareAlternateKanjiFont} の使用例}
-%<en>\caption{An example of \cs{DeclareAlternateKanjiFont}}
-\label{fig:altkanji}
-\end{figure}
+一方,\texttt{AltFont} キー内の各リストでは
+\ \texttt{YokoFeatures},~\texttt{TateFeatures} 及び \texttt{TateFont} キーを
+指定することは可能であり.また\ \texttt{YokoFeatures},~\texttt{TateFeatures} キーの
+中身に \texttt{AltFont} を指定することができる.
 
-\item[\cs{DeclareAlternateKanjiFont}\{<base-encoding>\}\{<base-family>\}\{<base-series>\}\{<base-shape>\}\\
-  \null\hfill\{<alt-encoding>\}\{<alt-family>\}\{<alt-series>\}\{<alt-shape>\}\{<range>\}]
-%<*ja>
-\ref{ssec-altfont}節の\
-\cs{ltjdeclarealtfont} と同様に,前半の4引数の
-和文フォント(基底フォント)のうち<range>中の文字を
-第5から第8引数の和文フォントを使って組むように指示する.
-使用例を図\nobreak\ref{fig:altkanji}に載せた.
+また,\autoref{fig:yokotate-fontspec}後半部では6行目の色の指定が効かず,
+2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による色の指定が有効になっ
+たままである.これは\emph{\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による
+OpenType機能指定は
+組方向に依存しないOpenType機能の指定より後に解釈される}からである.
 
-\begin{itemize}
- \item
-\cs{ltjdeclarealtfont} では基底フォント・置き換え先和文フォントはあらかじめ定義されてい
-            ないといけない(その代わり即時発効)であったが,
-\cs{DeclareAlternateKanjiFont} の設定が
-実際に効力が発揮するのは,書体変更やサイズ変更を行った時,
-あるいは(これらを含むが)\cs{selectfont} が実行された時である.
- \item
-段落やhboxの最後での設定値が段落/hbox全体にわたって通用する点や,
-<range>に負数$-n$を指定した場合,それが「基底フォントの文字クラス$n$に属する文字全体」
-と解釈されるのは \cs{ltjdeclarealtfont} と同じである.
-\end{itemize}%
 %</ja>
-%<*en>
-As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}),
-characters in <range> of the Japanese font (we say the \emph{base font})
-which specified by first 4 arguments are typeset
-by the Japanese font which specified by fifth to eighth arguments
-(we say the \emph{alternate font}).
-An example is shown in \autoref{fig:altkanji}.
 
-\begin{itemize}
- \item
-In \cs{ltjdeclarealtfont}, the base font and the alternate font must be already defined.
-But this \cs{DeclareAlternateKanjiFont} is not so.
-In other words, \cs{DeclareAlternateKanjiFont} is effective only after
-current Japanese font is changed, or only after \cs{selectfont} is executed.
- \item \dots
-\end{itemize}%
-\vspace{-\medskipamount}
-%</en>
-\end{cslist}
 
+\subsection{\Pkg{luatexja-otf}}
+\label{ssec-ltjotf}
 %<*en>
-As closing this subsection, we shall introduce an example of
-\cs{SetRelationFont} and \cs{userelfont}:
+This optional package supports typesetting glyphs
+by specifying a CID number.
+The package \Pkg{luatexja-otf} offers the following 2~low-level
+commands:
 %</en>
 %<*ja>
-この節の終わりに,\cs{SetRelationFont} と \cs{userelfont} の例を
-紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが
-Avant Garde (OT1/pag/m/n) に変わっていることがわかる.
+この追加パッケージはCID番号による文字の出力をサポートする.
+\Pkg{luatexja-otf}は以下の2つの低レベルコマンドを提供する:
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\makeatletter
-\SetRelationFont{JY3}{\k@family}{m}{n}{OT1}{pag}{m}{n}
-  % \k@family: current Japanese font family
-\userelfont\selectfont あいうabc
-\end{LTXexample}
-
-%<en>\subsection{Detail of \cs{fontfamily} command}
-%<ja>\subsection{\cs{fontfamily}コマンドの詳細}
-\label{ssec-fontfamilycmd}
+\begin{cslist}
+\item[\cs{CID}\{<number>\}]
 %<*en>
-In this subsection, we describe when \cs{fontfamily}<family> changes current
-Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to
-<family> if it is recognized as a Japanese font family, and similar with alphabetic font
-family. There is a case that current Japanese/alphabetic font family are both changed to
-<family>, and another case that <family> isn't recognized as a Japanese/alphabetic font
-family either.
-
-\paragraph{Recognition as Japanese font family}
-First, Whether Japanese font family will be changed is determined in following order.
-This order is very similar to \cs{fontfamily} in \pLaTeXe, but we re-implemented in Lua.
-We use an auxiliary list~$N_{\mathrm{J}}$.
+Typeset a glyph whose CID number is <number>.
+If the Japanese font is neither Adobe-Japan1,~Adobe-GB1, Adobe-CNS1,~nor~Adobe-Korea1 CID-keyed font,
+\LuaTeX-ja treats that <number> is a CID number of Adobe-Japan1 character collection,
+and tries to typeset a ``most suitable glyph''.
 %</en>
 %<*ja>
-本節では,\cs{fontfamily}<family> がいつ和文/欧文フォントファミリを変更するかについて解説
-する.基本的には,<family>が和文フォントファミリだと認識されれば和文側が,欧文フォントファ
-ミリだと認識されれば欧文側が変更される.どちらとも認識されれば和文・欧文の両方が変わるこ
-とになるし,当然どちらとも認識されないこともある.
-
-\paragraph{和文フォントファミリとしての認識}
-まず,<family>が和文フォントファミリとして認識されるかは以下の順序で決定される.
-これは\pLaTeXe の \cs{fontfamily} にとても似ているが,ここではLuaによって実装している.
-補助的に「和文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{J}}$を用いる.
+CID番号が<number>の文字を出力する.
+もし現在の和文フォントがAdobe-Japan1,~Adobe-GB1, Adobe-CNS1,~Adobe-Korea1の
+  いずれのCID-keyed fontでもない場合,<number>はAdobe-Japan1のCID番号であると解釈し
+  「適切なグリフ」\footnote{%
+  例えばフォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて
+  グリフを選択する.
+}を出力する.
 %</ja>
-\begin{enumerate}
+
+\item[\cs{UTF}\{<hex\_number>\}]
 %<*en>
-\item If the family~<family> has been defined already by \cs{DeclareKanjiFamily},
-      <family> is recognized as a  Japanese font family.
-      Note that <family> need not be defined under \emph{current} Japanese font encoding.
+Typeset a character whose character code is <hex\_number> (in hexadecimal).
+This command is similar to \verb+\char"+<hex\_number>,\ %"
+but please remind remarks below.
 %</en>
 %<*ja>
-\item ファミリ<family>が既に \cs{DeclareKanjiFamily} によって定義されている場合,
-      <family>は和文フォントファミリであると認識される.
-      ここで,<family>は現在の和文フォントエンコーディングで定義されていなくてもよい.
+文字コードが(16進で)<hex\_number>の文字を出力する.
+このコマンドは \verb+\char"+<hex\_number>と似ているが,下の注意を参照すること.%"
+%</ja>
+\end{cslist}
+
+%<*ja>
+このパッケージは,マクロ集 \texttt{luatexja-ajmacros.sty}\footnote{\Pkg{otf}パッケージ付属の井上浩一氏によるマクロ集
+\texttt{ajmacros.sty} に対して
+漢字コードをUTF-8にしたり,plain \LuaTeX でも利用可能にするという
+修正を加えたものである.}\ も自動的に読み込む.
+\texttt{luatexja-ajmacros.sty} は,
+そのため,\Pkg{luatexja-otf} を読みこめば \texttt{ajmacros.sty} マクロ集にある \cs{aj半角} などのマクロもそのまま使うことができる.
 %</ja>
 %<*en>
-\item If the family~<family> has been listed in a list~$N_{\mathrm{J}}$, this means
-      that <family> is not a Japanese font family.
+This package automatically loads \texttt{luatexja-ajmacros.sty}, which is slightly
+modified version of \texttt{ajmacros.sty}\footnote{Useful macros by iNOUE Koich!, for the
+\Pkg{japanese-otf} package.}.
+Hence one can use macros which sre defined in \texttt{ajmacros.sty}, such as~\cs{aj半角}.
+%</en>
+
+%<en>\paragraph{Remarks}
+%<ja>\paragraph{注意}
+%<*en>
+Characters by \cs{CID} and \cs{UTF} commands are different from
+ordinary characters in the following points:
 %</en>
 %<*ja>
-\item ファミリ<family>がリスト$N_{\mathrm{J}}$に既に含まれていれば,それ
-      <family>が和文フォントファミリではないことを意味する.
+\cs{CID} と \cs{UTF} コマンドによって出力される文字
+以下の点で通常の文字と異なる:
 %</ja>
+\begin{itemize}
 %<*en>
-\item If the \Pkg{luatexja-fontspec} package is loaded, we stop here, and <family> is not
-      recognized as a Japanese font family.
-
-      If the \Pkg{luatexja-fontspec} package is \emph{not} loaded,
-now \LuaTeX-ja looks whether there exists a Japanese font encoding~<enc> such that
-      a font definition named \texttt{<enc><family>.fd} (the file name is
-      all lowercase) exists. If so, <family> is recognized as a  Japanese font family (the font definition file won't be loaded here).
-      If not, <family> is not a Japanese font family, and
-      <family> is appended to the list~$N_{\mathrm{J}}$.
+\item Always treated as \textbf{JAchar}s.
 %</en>
 %<*ja>
-\item もし\Pkg{luatexja-fontspec}パッケージが読み込まれていれば,ここで終了であり,
-<family>は和文フォントファミリとして認識されないことになる.
-
-もし\Pkg{luatexja-fontspec}パッケージが読み込まれていなければ,和文エンコーディング<enc>で
-フォント定義ファイル\texttt{<enc><family>.fd}(ファイル名は全て小文字)が存在するようなも
-      のがあるかどうかを調べる.
-存在すれば,<family>は和文フォントファミリと認識される(フォント定義ファイルは読み込まれな
-      い).
-存在しなければ,<family>は和文フォントファミリでないと認識され,リスト$N_{\mathrm{J}}$に<family>を追加することでそれを記憶する.
-
+\item 常に\textbf{JAchar}として扱われる.
 %</ja>
-\end{enumerate}
-
 %<*en>
-\paragraph{Recognition as alphabetic font family}
-Next, whether alphabetic font family will be changed is determined in following order.
-We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$,
+\item Processing codes for supporting OpenType features (\textit{e.g.},
+      glyph replacement and kerning) by the \Pkg{luaotfload} package
+      is not performed to these characters.
 %</en>
 %<*ja>
-\paragraph{欧文フォントファミリとしての認識}
-同様に,<family>が和文フォントファミリとして認識されるかは以下の順序で決定される.
-補助的に「欧文フォントファミリと既に認識された」ファミリのリスト$F_{\textrm{A}}$と,
-「欧文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{A}}$を用いる.
+\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための
+  \Pkg{luaotfload}パッケージのコードはこれらの文字には働かない.
 %</ja>
+\end{itemize}
+
+%<en>\paragraph{Additional syntax of JFM}
+%<ja>\paragraph{JFMへの記法の追加}
 
-\begin{enumerate}
 %<*en>
-\item If the family~<family> has been listed in a list~$F_{\mathrm{A}}$,
-      <family> is recognized as an alphabetic font family.
+The package \Pkg{luatexja-otf} extends the syntax of JFM; the entries of \texttt{
+chars} table in JFM now allows a string in the form
+\verb+'AJ1-xxx'+, which stands for the character
+whose CID number in Adobe-Japan1 is \verb+xxx+.
+
+This extended notation is used in the standard JFM \texttt{jfm-ujis.lua}
+to typeset halfwidth Hiragana glyphs (CID~516--598) in halfwidth.
 %</en>
 %<*ja>
-\item ファミリ<family>がリスト$F_{\mathrm{A}}$に既に含まれていれば,
-      <family>は欧文フォントファミリと認識される.
+\Pkg{luatexja-otf}パッケージを読み込むと,
+JFMの\texttt{chars}テーブルのエントリとして \verb+'AJ1-xxx'+ の形の文字列が
+使えるようになる.これはAdobe-Japan1におけるCID番号が \verb+xxx+ の文字を表す.
+
+この拡張記法は,標準JFM~\texttt{jfm-ujis.lua}で,半角ひらがなのグリフ(CID~516--598)を
+正しく半角幅で組むために利用されている.
 %</ja>
+
+\subsection{\Pkg{luatexja-adjust}}
+\label{ssec-adj}
+\begin{figure}[t]
+\def\sq{%
+  \hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{%
+   \hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw%
+  \hskip\dimexpr.5\zw-.2pt\relax}\hss}}
+\def\sb{\hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{%
+  ■\hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw%
+  \hskip\dimexpr.5\zw-.2pt\relax}\hss}}
+\newbox\gridbox
+\def\outbox#1{{\Large%
+  \ltjsetparameter{kanjiskip=0pt plus .2\zw minus .2\zw}%
+  \setbox\gridbox=\hbox to 20\zw{\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb}%
+  \hbox{\textcolor{cyan}{\copy\gridbox}\hskip-20\zw%
+  \vbox{\hsize=20\zw\noindent\leftskip0pt\rightskip0pt\parfillskip0pt#1}\vrule}%
+}}
+
+{\centering
+\begin{tabular}{lc}
+\toprule
+no adjustment&\outbox{以上の原理は,「包除原理」とよく呼ばれるが\hskip-.5\zw\null}\\
+without priority&%
+\ltjdisableadjust
+\outbox{以上の原理は,「包除原理」とよく呼ばれるが}%
+\ltjenableadjust\\
+with priority&%
+\outbox{以上の原理は,「包除原理」とよく呼ばれるが}
+%<en>\ltjdisableadjust
+\\
+\bottomrule
+\end{tabular}\par}
+\smallskip
+
+Note: the value of
+\Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure,
+for making the difference obvious.
+%<ja>\caption{行長調整}\label{fig:adj}
+%<en>\caption{Line adjustment}\label{fig:adj}
+\end{figure}
+
+
 %<*en>
-\item If the family~<family> has been listed in a list~$N_{\mathrm{A}}$, this means
-      that <family> is not  an alphabetic font family.
+(see Japanese version of this manual)
 %</en>
 %<*ja>
-\item ファミリ<family>がリスト$N_{\mathrm{A}}$に既に含まれていれば,それは
-      <family>が欧文フォントファミリではないことを意味する.
+この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい.
+\begin{description}
+\item[行末文字の位置調整]
+  \pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように
+  行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった.
+  和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず,
+  前の文に書いたことを実現するには
+\begin{lstlisting}
+\def\。{%
+  \penalty10000 % 禁則ペナルティ
+  \hbox to0pt{。\hss}\penalty0 % ぶら下げの場合
+  \kern.5\zw\penalty0 % 二分取りの場合
+  \kern.5\zw\penalty0 % 全角取りの場合
+}
+\end{lstlisting}
+  のような命令を定義し,文中の全ての句点を \lstinline+\。+ で書くことが必要だった.
+
+\Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を
+2通り以上から自動的に選択する機能を提供する.
+\pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と
+  「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした(
+\Pkg{luatexja-adjust}パッケージの既定では前者).
+  
+\item[優先順位付きの行長調整]
+\pTeX では,行長調整において優先度の概念が存在しなかったため,図
+\ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵
+括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し
+かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
+ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
+文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている.
+\Pkg{luatexja-adjust}パッケージの提供する第2の機能は,
+\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き
+の行長調整である.
+\begin{itemize}
+ \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである.
+そのため,行分割の位置は変化することはない.
+
+\verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である.
+ \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は
+一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を
+行う場合には注意が必要である.
+\end{itemize}
+\end{description}
+
+\Pkg{luatexja-adjust}パッケージは,上記で述べた2機能を有効化/無効化するための
+以下の命令を提供する.これらはすべてグローバルに効力を発揮する.
+
+\begin{cslist}
+\item[\cs{ltjenableadjust[...]}]
+\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」を有効化/無効化する.
+指定できるキーは以下の通り.
+\begin{description}
+  \item[\texttt{lineend=[false,true,extended]}]
+  行末文字の位置調整の機能を無効化(\texttt{false}),「行分割後に調整」の形で有効化(\texttt{true}),
+  「行分割の仮定で考慮」(\texttt{extended})する.
+  \item[\texttt{priority=[false,true]}]
+  優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true})する.
+\end{description}
+両キーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる.
+
+互換性の為,オプション無しでただ\cs{ltjenableadjust}が呼び出された場合は,
+\begin{lstlisting}
+\ltjenableadjust[lineend=true,priority=true]
+\end{lstlisting}
+と扱われる.
+  
+\item[\cs{ltjdisableadjust}]
+\Pkg{luatexja-adjust}パッケージの機能を無効化する.
+\begin{lstlisting}
+\ltjenableadjust[lineend=false,priority=false]
+\end{lstlisting}
+と同義.
+\end{cslist}
+
+また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で
+追加される.両パラメータともグローバルに効力を発揮する.
+\begin{cslist}[style=standard]
+\item[\DParam{stretch\_priority}\,=\{<list>\}]
+\Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を,
+「行を自然長より伸ばす」場合の調整に用いる優先度を指定する.
+
+指定方法は,<list>の中にkey-value listの形で
+\begin{lstlisting}
+stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50}
+\end{lstlisting}
+のようにして行う.キー名\texttt{kanjiskip},~\texttt{xkanjiskip}については
+そのままの意味であり,
+\texttt{others}キーが「\textbf{JAglue}以外のグルー」を表す.
+各キーの値は,JFMグルーにおける「優先度$i$」を$10i$に対応させた整数値であり,
+  大きい方が先に伸ばされることを意味している.
+
+\item[\DParam{shrink\_priority}\,=\{<list>\}]
+同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する.
+それ以外は\Param{stretch\_priority}と指定の形式は変わらない.
+\end{cslist}
+初期値は\Param{stretch\_priority}, \Param{shrink\_priority}とも
+\begin{lstlisting}
+{kanjiskip=-35,xkanjiskip=-25,others=50}
+\end{lstlisting}
+であり,「優先度$-4$」と指定されているJFMグルーが最も伸び(縮み)にくいようになっている.
 %</ja>
+
+\subsection{\Pkg{luatexja-ruby}}
 %<*en>
-\item If there exists an alphabetic font encoding such that the family~<family> has been
-      defined under it, <family> is recognized as an alphabetic font family, and
-      to memorize this, <family> is appended to the list~$F_{\mathrm{A}}$.
+This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations
+using callbacks of \LuaTeX-ja.
+There is no detailed manual of \Pkg{luatexja-ruby.sty} in English.
+(Japanese manual is another PDF file, \url{luatexja-ruby.pdf}.)
 %</en>
 %<*ja>
-\item ある欧文フォントエンコーディング下でファミリ<family>が定義されていれば,
-      <family>は欧文フォントファミリと認識され,リスト$F_{\mathrm{A}}$に<family>を追加することでこのことを記憶する.
+この追加パッケージは,\LuaTeX-jaの機能を利用したルビ(振り仮名)の組版機能を提供する.
+前後の文字種に応じた前後への自動進入や,
+行頭形・行中形・行末形の自動的な使い分けが特徴である.
+
+ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は
+使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている.
+この節では簡単な使用方法のみ述べる.
 %</ja>
+
+\begin{description}
 %<*en>
-\item Now \LuaTeX-ja looks whether there exists an alphabetic font encoding~<enc> such that
-      a font definition named \texttt{<enc><family>.fd} (the file name is
-      all lowercase) exists. If so, current alphabetic font family will be changed to
-      <family>~(the font definition file won't be loaded here).
-      If not, current alphabetic font family won't be changed, and
-      <family> is appended to the list~$N_{\mathrm{A}}$.
+ \item[Group-ruby]
+By default, ruby characters (the second argument of \cs{ruby})
+are attached to base characters (the first argument), as one object.
+This type of ruby is called \emph{group-ruby}.
 %</en>
 %<*ja>
-\item 最終段階では,欧文エンコーディング<enc>で
-フォント定義ファイル\texttt{<enc><family>.fd}(ファイル名は全て小文字)が存在するようなも
-      のがあるかどうかを調べる.
-存在すれば,<family>は欧文フォントファミリと認識される(フォント定義ファイルは読み込まれない).
-存在しなければ,<family>は欧文フォントファミリと認識されないので,リスト$N_{\mathrm{A}}$に
-      <family>を追加してそのことを記憶する.
+ \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字,
+第2引数にルビを記述する.
 %</ja>
-\end{enumerate}
-
+\begin{LTXexample}[width=0.3\textwidth]
+東西線\ruby{妙典}{みようでん}駅は……\\
+東西線の\ruby{妙典}{みようでん}駅は……\\
+東西線の\ruby{妙典}{みようでん}という駅……\\
+東西線\ruby{葛西}{かさい}駅は……
+\end{LTXexample}
 %<*en>
-Also, each call of \cs{DeclareFontFamily} \emph{after} loading of \LuaTeX-ja makes
-the second argument (family) is appended to the list~$F_{\mathrm{A}}$.
+As the above example, ruby hangover is allowed on the Hiragana before/after
+its base characters.
 %</en>
-%<*ja>
-また,\cs{DeclareFontFamily}が\LuaTeX-jaの読み込み後に実行された場合は,
-第2引数(ファミリ名)が自動的に$F_{\mathrm{A}}$に追加される.
-%</ja>
+%<ja> この例のように,標準では前後の平仮名にルビ全角までかかるようになっている.
 
 %<*en>
-The above order is very similar to \cs{fontfamily} in \pLaTeXe, but more complicated (clause~3.).
-This is because  \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not,
-hence \LuaTeX-ja does not know calls of \cs{DeclareFontFamily} \emph{before} itself is
-loaded.
+\item[Mono-ruby]
+To attach ruby characters to each base characters (\emph{mono-ruby}),
+one should use \cs{ruby} multiple times:
 %</en>
 %<*ja>
-以上の方針は\pLaTeXe における \cs{fontfamily} にやはり類似しているが,3.が加わり若干複雑になっている.
-それは\pLaTeXe がフォーマットであるのに対し\LuaTeX-jaはそうでないため,
-\LuaTeX-jaは自身が読み込まれる前にどういう\cs{DeclareFontFamily}の呼び出しがあったか
-把握できないからである.
+ \item[モノルビ] 親文字を1文字にするとモノルビとなる.
+2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも
+その数だけ \cs{ruby} を書く必要がある.
 %</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は……
+\end{LTXexample}
 
-%<en>\paragraph{Remarks}
-%<ja>\paragraph{注意}
 %<*en>
-Of course, there is a case that <family> is not recognized as a Japanese font family,  nor
-an alphabetic font family.
-In this case, \LuaTeX-ja treats ``the argument <family> is wrong'', so
-set both current alphabetic and Japanese font family to <family>,
-to use the default family for font substitution.
+ \item[Jukugo-ruby]
+Vertical bar~\verb+|+ denotes a boundary of \emph{groups}.
 %</en>
 %<*ja>
-さて,引数によっては,「和文フォントファミリとも欧文フォントファミリも認識されなかった」
-という事態もあり得る.
-  この場合,引数<family>は不正だった,ということになるので,
-和文・欧文の両方のフォントファミリを<family>に設定し,代用フォントが使われるに任せることにする.
+ \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し,
+複数グループのルビは熟語ルビとして組まれる.
+\cite{x4051}にあるように,
+どのグループでも「親文字」が対応するルビ以上の長さの場合は
+各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる.
+\cite{jlreq}で規定されている組み方とは異なるので注意.
 %</ja>
-
+\begin{LTXexample}
+\ruby{妙|典}{みよう|でん}\
+\ruby{葛|西}{か|さい}\
+\ruby{神楽|坂}{かぐら|ざか}
+\end{LTXexample}
 %<*en>
-\subsection{Notes on \cs{DeclareTextSymbol}}
-From \LaTeX~2017/01/01, the standard encoding of \LuaLaTeX\ is changed to the \texttt{TU}
-encoding. This menas that symbols defined by \texttt{T1}~and~\texttt{TS1} encodings can be used
-without loading any package. To produces these symbols in alphabetic fonts in \LuaTeX-ja,
-\LuaTeX-ja patches \cs{DeclareTextSymbol}, and reloads \texttt{tuenc.def}.
-
-Under original definition of \cs{DeclareTextSymbol},
-internal commands which is defined by \cs{DeclareTextSymbol} (such as \cs{T1\cs{textquotedblleft}})
-are \textit{chardef} tokens. However, this no longer holds in \LuaTeX-ja;
-for example, the meaning of \cs{TU\cs{textquotedblleft}} is \cs{ltjalchar8220\ltjalchar"2423 }.
+If there are multiple groups in one \cs{ruby} call,
+A linebreak between two groups is allowed.
 %</en>
-%<*ja>
-\subsection{\cs{DeclareTextSymbol}使用時の注意}
-\LaTeX~(2017/01/01)以降では,\texttt{TU}エンコーディングが標準となり,特に何もしなくても
-\texttt{T1},~\texttt{TS1}エンコーディングで定義されていた記号類が
-使えるようになった.\LuaTeX-jaではこれらの命令によって記号が欧文フォントで出力されるようにするため,
-\cs{DeclareTextSymbol}命令を改変し,そして\texttt{TU}エンコーディングの定義である
-\texttt{tuenc.def}を再読込している.
-
-従来は \cs{DeclareTextSymbol} で内部的に定義された\cs{T1\cs{textquotedblleft}}といった命令は
-\textit{chardef}トークンであった.しかし前段落で述べた改変によりもはやそうではなくなっており,例えば
-\cs{TU\cs{textquotedblleft}}は \cs{ltjalchar8220\ltjalchar"2423 } という定義になっている.%"
-%</ja>
+%<ja> 複数ルビではグループとグループの間で改行が可能である.
+\begin{LTXexample}[width=0.3\textwidth]
+\vbox{\hsize=6\zw\noindent
+  \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
+  \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
+  \hbox to   3\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
+}
+\end{LTXexample}
+\end{description}
 
-\begin{table}[t]
-  \centering\small
-  \caption{strut}\label{tab:strutbox}
-  \begin{tabular}{llcccl}
-    \toprule
-    \textbf{box}&\textbf{direction}&\textbf{width}&\textbf{height}&\textbf{depth}
-    &\textbf{user command}\\
-    \midrule
-  \cs{ystrutbox}&yoko&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{ystrut}\\\midrule
-  \cs{tstrutbox}&tate, utod&0&0.5\cs{baselineskip}&0.5\cs{baselineskip}&\cs{tstrut}\\\midrule
-  \cs{dstrutbox}&dtou&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{dstrut}\\\midrule
-  \cs{zstrutbox}&---&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{zstrut}\\\bottomrule
-  \end{tabular}
-\end{table}
 %<*en>
-\subsection{\cs{strutbox}}
-As \pLaTeX~(2017/04/08 or later), \cs{strutbox} is \emph{a macro} which is expanded to one of
-\cs{ystrutbox},~\cs{tstrutbox},~and~\cs{dstrutbox}
-(all of them are shown in \autoref{tab:strutbox}), according to the current direction.
-Similarly, \cs{strut} now uses one of these boxes.
+If the width of ruby characters are longer than that of base characters,
+\cs{ruby} automatically selects the appropriate form
+among the line-head form, the line-middle form, and the line-end form.
 %</en>
 %<*ja>
-\subsection{\cs{strutbox}}
-\pLaTeX~2017/04/08以降と同じように,
-\cs{strutbox}は現在の組方向によって\cs{ystrutbox}, \cs{tstrutbox}, \cs{dstrutbox}の
-いずれかに展開される\emph{マクロ}となっている(これらについては\autoref{tab:strutbox}参照).
-同様に\cs{strut}もこの3\nobreak ボックスのいずれかを組方向によって使い分けるようになっている.
-
-\cs{zstrutbox}はutod方向(\pTeX でいう縦数式ディレクション)で使われる支柱ボックスであるが,
-実際に使われるのは\cs{zstrut}が明示的に発行された時,そして
-\Pkg{lltjext}パッケージで追加される組方向指定で \texttt{<u>} を指定した時,および
-周囲が縦組の状況で \texttt{<z>} を指定した時に限られている.
+また,ルビ文字のほうが親文字よりも長い場合は,自動的に
+行頭形・行中形・行末形のいずれか適切なものを選択する.
 %</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+\vbox{\hsize=8\zw\noindent
+\null\kern3\zw ……を\ruby{承}{うけたまわ}る
+     \kern1\zw ……を\ruby{承}{うけたまわ}る\\
+\null\kern5\zw ……を\ruby{承}{うけたまわ}る
+}
+\end{LTXexample}
+
 
-%<*en>
-\section{Addon packages}
-\LuaTeX-ja has several addon packages.
-These addons are written as \LaTeX\ packages, but
-\Pkg{luatexja-otf} and~\Pkg{luatexja-adjust} can be loaded in plain \LuaTeX\
-by \cs{input}.
-%</en>
 %<*ja>
-\section{拡張パッケージ}
-\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している.
-これらは\LaTeX のパッケージとして制作しているが,
-\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\
-\cs{input} で読み込み可能である.
+\subsection{\Pkg{lltjext}}
+\pLaTeX では縦組用の拡張として \Pkg{plext} パッケージが用意されていたが,
+それを\LuaTeX-ja用に書きなおしたものが本追加パッケージ \Pkg{lltjext} である.
+
+従来の \Pkg{plext} パッケージとの違いは,
+{\catcode`\<=12
+\begin{itemize}
+ \item 組方向オプション \texttt{<y>}(横組),\texttt{<t>}(縦組),
+\texttt{<z>}\ の他に\ \texttt{<d>}(dtou方向),\texttt{<u>}(utod方向)を追加した.
+\texttt{<z>} と \texttt{<u>} の違いは,\texttt{<z>} が(\Pkg{plext} パッケージと同様に)
+周囲の組方向が縦組のときにしか意味を持たない
+  \footnote{%
+    周囲の組方向が縦組以外のときは,\texttt{<z>} を指定しても中身の組方向は周囲の組方向と変わらない.
+  }%
+のに対し,\texttt{<u>} にはそのような制限がないことである.
+ \item 連数字用命令 \cs{rensuji} における位置合わせオプション \texttt{[l]}, \texttt{[c]},
+       \texttt{[r]} の挙動を若干変更した.
+\end{itemize}
+}
+
 %</ja>
-\subsection{\Pkg{luatexja-fontspec}}
-\label{ssec-fontspec2}
 %<*en>
-As described in Subsection~\ref{ssec-fontspec}, this optional package
-provides the counterparts for several commands defined in the
-\Pkg{fontspec} package (requires \Pkg{fontspec}~v2.4).
-In addition to OpenType font features in the original \Pkg{fontspec},
-the following ``font features'' specifications are allowed for
-the commands of Japanese version:
+\subsection{\texttt{lltjext.sty}}
+\pLaTeX\ supplies additional macros for vertical writing in the \Pkg{plext} package.
+The \Pkg{lltjext} package which we want to describe here is the \LuaTeX-ja
+counterpart of the \Pkg{plext} package.
 %</en>
+
 %<*ja>
-\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}%
-パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する.
+念の為,本 \Pkg{lltjext} パッケージで追加・変更している命令の一覧を載せておく.
+\begin{cslist}
+\item[tabular\textrm{, }array\textrm{, }minipage環境]
+これらの環境は,
+\begin{lstlisting}
+\begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
+\begin{array}<dir>[pos]{table spec}   ... \end{array}
+\begin{minipage}<dir>[pos]{width}     ... \end{minipage}
+\end{lstlisting}
+のように,組方向オプション \texttt{\<dir\>} が拡張されている.
+既に述べたように,組方向オプションに指定できる値は以下の5つであり,
+それ以外を指定した時や無指定時は周囲の組方向と同じ組方向になる.
+\begin{description}
+ \item[y] 横組(\cs{yoko})
+ \item[t] 縦組(\cs{tate})
+ \item[z] 周囲が縦組の時はutod方向,それ以外はそのまま
+ \item[d] dtou方向
+ \item[u] utod方向
+\end{description}
+\item[\cs{parbox}\<<dir>\>{[<pos>]}\{<width>\}\{<contents>\}]
+\cs{parbox} 命令も同様に,組方向の指定ができるように拡張されている.
 
-\Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには
-以下の「フォント機能」を指定することができる:
-%</ja>
+\item[\cs{pbox}\<<dir>\>{[<width>][<pos>]}\{<contents>\}]
+組方向<dir>で<contents>の中身をLRモードで組む命令である.
+<width>が正の値であるときは,ボックス全体の幅がその値となる.
+その際,中身は<pos>の値に従い,左寄せ(\texttt{l}),右揃え(\texttt{r}),
+中央揃え(それ以外)される.
+\item[picture環境]
+図表作成に用いる\texttt{picture}環境も,
+\begin{lstlisting}
+\begin{picture}<dir>(x_size, y_size)(x_offset,y_offset)
+  ...
+\end{picture}
+\end{lstlisting}
+と組方向が指定できるように拡張されている.
+$x$成分の増加方向は字送り方向,$y$成分の増加方向は行送り方向の\emph{反対方向}となる.
+\Pkg{plext} パッケージと同様に
+内部ではベースライン補正(\Param{yalbaselineshift}パラメータなど)の影響を受けないように,
+\cs{put},~\cs{line}, \cs{vector}, \cs{dashbox}, \cs{oval},~\cs{circle}も
+ベースライン補正を受けないように再定義されている.
 
+\item[\cs{rensuji}{[<pos>]}\{<contents>\}\textrm{, }\cs{rensujiskip}]
 
-\begin{cslist}
-\item[CID=<name>\textrm{, }JFM=<name>\textrm{, }JFM-var=<name>]
+\item[\cs{Kanji}\{<counter\_name>\}]
 
-%<*en>
-These 3 keys correspond to \texttt{cid}, \texttt{jfm} and
-\texttt{jfmvar} keys for \cs{jfont}~and~\cs{tfont} respectively.
-See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details
- of \texttt{cid}, \texttt{jfm} and
-\texttt{jfmvar} keys.
+\item[\cs{kasen}\{<contents>\}\textrm{, }\cs{bou}\{<contents>\}\textrm{,
+                    }\cs{boutenchar}]
 
-The \texttt{CID} key is effective only when with \texttt{NoEmbed}
-described below. The same JFM cannot be used in both horizontal Japanese fonts and
-            vertical Japanese fonts, hence the \texttt{JFM} key
-will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} keys.
-%</en>
-%<*ja>
-これら3つのキーはそれぞれ \cs{jfont},~\cs{tfont}に対する
-\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する.
-\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節
-            と\ref{ssec-psft}節を参照.
+\item[参照番号]
+\end{cslist}
+%</ja>
+%<*en>
+\begin{cslist}
+\item[tabular\textrm{, }array\textrm{, }minipage\textrm{ environments}]
+These environments are extended by \texttt{\<dir\>}, which specifies the direction,
+as follows:
+\begin{lstlisting}
+\begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
+\begin{array}<dir>[pos]{table spec}   ... \end{array}
+\begin{minipage}<dir>[pos]{width}     ... \end{minipage}
+\end{lstlisting}
+This option permits one of the following five values. If none of them is specified,
+the direction inside the environment is same as that outside the enviromnent.
+\begin{description}
+ \item[y] \emph{yoko} direction (horizontal writing)
+ \item[t] \emph{tate} direction (vertical writing)
+ \item[z] \emph{utod} direction if direction outside the env.\ is \emph{tate}.
+ \item[d] \emph{dtou} direction
+ \item[u] \emph{utod} direction
+\end{description}
+\item[\cs{parbox}\<<dir>\>{[<pos>]}\{<width>\}\{<contents>\}]
+\cs{parbox} command is also extended by \texttt{\<<dir>\>}.
 
-\texttt{CID} キーは下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である.
-また,横組用JFMと縦組用JFMは共用できないため,実際に \texttt{JFM} キーを用いる際は
-後に述べる\ \texttt{YokoFeatures} キーや \texttt{TateFeatures}\ の中で用いる
-ことになる.
-%</ja>
+\item[\cs{pbox}\<<dir>\>{[<width>][<pos>]}\{<contents>\}]
+This commands typeset <contents> in LR-mode, in <dir> direction.
+If <width> is positive, the width of the box becomes this <width>.
+In this case, <contents> will be aligned to left (when <pos> is \texttt{l}),
+center (\texttt{c}), or~right (\texttt{r}).
+  
+\item[picture\textrm{\ environment}]
+\texttt{picture} environment also extended by \texttt{\<<dir>\>}, as follows:
+\begin{lstlisting}
+\begin{picture}<dir>(x_size, y_size)(x_offset,y_offset)
+  ...
+\end{picture}
+\end{lstlisting}
 
-\item[NoEmbed]
-%<*en>
-By specifying this key, one can use ``name-only'' Japanese font which
-will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}.
-%</en>
-%<*ja>
-これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが
-できる.\ref{ssec-psft}節を参照.
-%</ja>
+\item[\cs{rensuji}{[<pos>]}\{<contents>\}\textrm{, }\cs{rensujiskip}]
 
-\begin{figure}[!tb]
-\begin{LTXexample}[width=0.25\textwidth]
-\jfontspec[
-  YokoFeatures={Color=007F00}, TateFeatures={Color=00007F},
-  TateFont=KozGoPr6N-Regular
-]{KozMinPr6N-Regular}
-\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト}
-\addjfontfeatures{Color=FF0000}
-\hbox{\yoko 横組}\hbox{\tate 縦組}
-\end{LTXexample}
-%<ja>\caption{\texttt{TateFeatures} 等の使用例}
-%<en>\caption{An example of \texttt{TateFeatures} etc.}
-\label{fig:yokotate-fontspec}
-\end{figure}
+\item[\cs{Kanji}\{<counter\_name>\}]
 
-\item[Kanjiskip=<bool>]
-%<*ja>
-\pageref{pg:ltjksp}ページで説明した \verb+\jfont+ 中での \texttt{ltjksp} 指定と
-同一の効力を持ち,
-JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
-\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の有効/無効を切り替える.
-標準値は \texttt{true} である.
-%</ja>
+\item[\cs{kasen}\{<contents>\}\textrm{, }\cs{bou}\{<contents>\}\textrm{,
+                    }\cs{boutenchar}]
 
-\item[TateFeatures=\{<features>\}\textrm{, }TateFont=<font>]
-%<*en>
-The \texttt{TateFeatures} key specifies font features which are only turned~on in
-vertical writing, such as \texttt{Style=VerticalKana}~(\texttt{vkna} feature).
-Similarly, the \texttt{TateFont} key specifies the Japanese font which will be used only
-            in vertical writing.
-A demonstrarion is shown in \autoref{fig:yokotate-fontspec}.
+\item[参照番号]
+\end{cslist}
 %</en>
-%<*ja>
-縦組において使用されるフォントや,縦組においてのみ適用されるフォント機能達を
-指定する.使用例は\autoref{fig:yokotate-fontspec}参照.
-%</ja>
 
-\item[YokoFeatures=\{<features>\}]
-%<*en>
-The \texttt{YokoFeatures} key specifies font features which are only turned~on in
-horizontal writing,.
-A demonstrarion is shown in \autoref{fig:yokotate-fontspec}.
-%</en>
 %<*ja>
-同様に,横組においてのみ適用されるフォント機能達を
-指定する.使用例は\autoref{fig:yokotate-fontspec}参照.
-%</ja>
+\paragraph{表組他の揃え位置}
+表組(\texttt{array}, \texttt{tabular}環境),\cs{parbox}命令,\cs{minipage}環境の
+揃え位置については\autoref{tab:lltjext_dir}を参照.\pLaTeX~2017-07-29と
+できるだけ同じ挙動になるようにしている.\autoref{tab:lltjext_dir}中のA--Dの意味は次の通り.
 
+\begin{table}
+  \caption{\Pkg{lltjext}パッケージにおける表組・\cs{parbox}命令他の揃え位置}
+  \label{tab:lltjext_dir}
+  {\centering
+    \begin{tabular}{lcccc}
+      \toprule
+      ↓中身\周囲→&\cs{yoko}&\cs{tate}&\cs{utod}&\cs{dtou}\\
+      \midrule
+      \cs{yoko}&A&B&B&B\\
+      \cs{tate}&B&A&D&C\\
+      \cs{utod}&B&D&A&C\\
+      \cs{dtou}&B&C&C&A\\
+      \bottomrule
+    \end{tabular}\par}
+\end{table}
 
-\begin{figure}[!tb]
-\begin{LTXexample}[pos=b]
-\jfontspec[
-  AltFont={
-    {Range="4E00-"67FF, Color=007F00},
-    {Range="6800-"9EFF, Color=0000FF},
-    {Range="3040-"306F, Font=KozGoPr6N-Regular},
-  }
-]{KozMinPr6N-Regular}
-日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、
-諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、……
-\end{LTXexample}
-%<ja>\caption{\texttt{AltFont} の使用例}
-%<en>\caption{An example of \texttt{AltFont}}
-\label{fig:altkanji-fontspec}
-\end{figure}
+\begin{description}
+ \item[A] 周囲の組方向と中身の組方向が同じ場合.
+  \begin{itemize}
+   \item \texttt{[t]}指定のとき:
+    中身の先頭行のベースラインが周囲のベースラインと一致する.
+    表組で先頭行の上に罫線があった場合は,それがベースラインの位置
+    \footnote{\LuaTeX-jaでは和文側のベースラインの位置も上下移動できることに注意.
+      そのため「和文ベースライン」の位置に来るとは限らない.}となる.
+   \item \texttt{[c]}指定のとき:
+    中身の上下の中心が周囲の数式の軸を通る.
+   \item \texttt{[b]}指定のとき:
+    中身の最終行のベースラインが周囲のベースラインと一致する.
+    表組で最終行の下に罫線があった場合は,それがベースラインの位置となる.
+  \end{itemize}
+ \item[B] 周囲の組方向と中身の組方向が90度ずれている場合.
+  \begin{itemize}
+   \item \texttt{[t]}指定のとき:
+    表組においては,上端が周囲のベースラインと一致する.
+    \cs{parbox}や\cs{minipage}環境においては,上端が周囲の和文文字の上端と一致する.
+   \item \texttt{[c]}指定のとき:
+    中身の上下の中心が周囲の数式の軸を通る.
+   \item \texttt{[b]}指定のとき:
+    表組においては,下端が周囲のベースラインと一致する.
+    \cs{parbox}や\cs{minipage}環境においては,下端が周囲の和文文字の下端と一致する.
+  \end{itemize}
+ \item[C] 周囲の組方向と中身の組方向が180度ずれている場合.
+  \cs{parbox}や\cs{minipage}環境においては,上のBの場合と同じ挙動である.表組においては,
+  Aで\texttt{[t]}と\texttt{[b]}を入れ替えた
+  \begin{itemize}
+   \item \texttt{[t]}指定のとき:
+    中身の最終行のベースラインが周囲のベースラインと一致する.
+    最終行の下に罫線があった場合は,それがベースラインの位置となる.
+   \item \texttt{[c]}指定のとき:
+    中身の上下の中心が周囲の数式の軸を通る.
+   \item \texttt{[b]}指定のとき:
+    中身の先頭行のベースラインが周囲のベースラインと一致する.
+    表組で先頭行の上に罫線があった場合は,それがベースラインの位置となる.
+  \end{itemize}
+ \item[D] 通常の縦組(\cs{tate})と「縦数式ディレクション」に相当する\cs{utod}方向が絡んだ場合.
+  \cs{parbox}や\cs{minipage}環境においては,上のBの場合と同じ挙動である.表組においては,
+  \begin{itemize}
+   \item \texttt{[t]}指定のとき:
+    中身の先頭行の欧文ベースラインが周囲の欧文ベースラインと一致する.
+   \item \texttt{[c]}指定のとき:
+    中身の上下の中心が周囲の数式の軸を通る.
+   \item \texttt{[b]}指定のとき:
+    中身の最終行の欧文ベースラインが周囲の欧文ベースラインと一致する.
+  \end{itemize}
+\end{description}
+%</ja>
 
-\item[AltFont]
+\subsection{\Pkg{luatexja-preset}}
+\label{ssec:preset}
 
 %<*en>
-As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}) and
-\cs{DeclareAlternateKanjiFont}~(Subsection~\ref{ssec-nfsspat}),
-with this key, one can typeset some Japanese characters
-by a different font and/or using different features.
-The \texttt{AltFont} feature takes a comma-separated list of comma-separated lists,
-as the following:
+As described in Subsection~\ref{ssec:preset-abst},
+One can load the \Pkg{luatexja-preset}
+package to use several ``presets'' of Japanese fonts.
+This package provides functions in a part of \Pkg{japanese-otf} package (changing fonts)
+and a part of \Pkg{PXchfon} package (presets) by Takayuki Yato.
+
+Options which are given in \cs{usepackage} but not described in this~subsection
+are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is
+\emph{not} specified; in this case these options are simply ignored.}.
+For example, the line~5 in below example is equivalent to lines 1--3.
 %</en>
 %<*ja>
-\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や,
-\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に,
-このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる.
-\texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである:
+\ref{ssec:preset-abst}節で述べたように,よく使われている和文フォント設定を一行で指定できるようにしたのが
+\Pkg{luatexja-preset}パッケージである.このパッケージは,
+\Pkg{otf}パッケージの一部(多書体化)と八登崇之氏による\Pkg{PXchfon}パッケージの一部(プリセット指定)
+とを合わせたような格好をしている.
+
+パッケージ読み込み時に渡されたオプションのうち,
+本節にないものを指定した場合,それらはそのまま
+\Pkg{luatexja-fontspec}パッケージに渡される\footnote{\texttt{nfssonly} オプションが
+指定されていた場合は,\Pkg{luatexja-fontspec}パッケージは読み込まれないので単純に無視され
+る.}.例えば,下の1--3行目は5行目のように一行にまとめることができる.
 %</ja>
-\begin{lstlisting}[escapechar=\#]
-AltFont = {
-  ...
-  { Range=#\LARG range>#, #\LARG features>#},
-  { Range=#\LARG range>#, Font=#\LARG font~name>#, #\LARG features># },
-  { Range=#\LARG range>#, Font=#\LARG font~name># },
-  ...
-}
+\begin{lstlisting}
+\usepackage[no-math]{fontspec}
+\usepackage[match]{luatexja-fontspec}
+\usepackage[kozuka-pr6n]{luatexja-preset}
+%%--------
+\usepackage[no-math,match,kozuka-pr6n]{luatexja-preset}
 \end{lstlisting}
+
+%<en>\subsubsection{General Options}
+%<ja>\subsubsection{一般的なオプション}
+\label{sssec:ltjpreset-general}
+
+\begin{cslist}[before*=]
+\item[fontspec%
+%<en>\textrm{~(enabled by default)}
+%<ja>\emph{\gtfamily (既定)}
+]
 %<*en>
-Each sublist should have the \texttt{Range} key
-(sublist which does not contain \texttt{Range} key is simply ignored).
-A demonstrarion is shown in \autoref{fig:altkanji-fontspec}.
+With this option, Japanese fonts are selected using functionality of
+the \Pkg{luatexja-fontspec} package. This means that the \Pkg{fontspec} package is
+            automatically loaded by this package.
+
+If you need to pass some options to \Pkg{fontspec}, you can load \Pkg{fontspec} manually
+before \Pkg{luatexja-preset}:
 %</en>
 %<*ja>
-各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは
-単純に無視される).指定例は\autoref{fig:altkanji-fontspec}に示した.
-%</ja>
-\end{cslist}
+\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する.
+これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する.
 
-%<*ja>
-なお,\Pkg{luatexja-fontspec} 読み込み時には和文フォント定義ファイル%
-\texttt{<ja-enc><family>.fd}は全く参照されなくなる.
+もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある
+\footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の
+斜体大文字が出なくなる,など.}場合は,
+次のように\Pkg{luatexja-preset}の前に\Pkg{fontspec}を手動で読みこめば良い:
 %</ja>
-
-
-%<*en>
-\paragraph{Remark on \texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} keys}
-In \texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures} keys,
-one cannot specify per-shape settings such as \texttt{BoldFeatures}.
-For example,
-\begin{lstlisting}
-AltFont = {
-  { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
-    Range="3000-"30FF, BoldFeatures={Color=007F00} }
-}
-\end{lstlisting}
-does \emph{not} work. Instead, one have to write
 \begin{lstlisting}
-UprightFeatures = {
-  AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } },
-},
-BoldFeatures = {
-  AltFont =  { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } },
-}
+\usepackage[no-math]{fontspec}
+\usepackage[...]{luatexja-preset}
 \end{lstlisting}
 
-On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and  \texttt{TateFont}
-keys can be specified in each list in the \texttt{AltFont} key. Also,
-one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}.
+\item[nfssonly]
+%<*en>
+With this option, selecting Japanese fonts won't be performed using the functionality of
+            the \Pkg{fontspec} package, but only standard NFSS2 (hence without
+            \cs{addjfontfeatures} etc.).
+This option is ignored when \Pkg{luatexja-fontspec} package is loaded.
 
-Note that features which are specified in \texttt{YokoFeatures}~and~\texttt{TateFeatures}
-are always interpreted \emph{after} other ``direction-independent'' features.
-This explains why \cs{addjfontfeatures} at~line~6 in~\autoref{fig:yokotate-fontspec}
-has no effect, because a color specification is already done in
-\texttt{YokoFeatures}~and~\texttt{TateFeatures} keys.
-%</en>
-%<*ja>
-\paragraph{\texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} 等の制限}
-\texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures}の各キーは
-シェイプ別に指定されるべきものであり,
-内部では \texttt{BoldFeatures} などのシェイプ別の指定は行うことが出来ない.
-例えば.
+When this option is specified, \Pkg{fontspec}~and~\Pkg{luatexja-fontspec} are
+\emph{not} loaded by default. Nevertheless,
+the package\Pkg{fontspec} can coexist with the option, as the following:
 \begin{lstlisting}
-AltFont = {
-  { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
-    Range="3000-"30FF, BoldFeatures={Color=007F00} }
-}
+\usepackage{fontspec}
+\usepackage[hiragino-pron,nfssonly]{luatexja-preset}
 \end{lstlisting}
-のように指定することは出来ず,
+In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fonts.
+%</en>
+%<*ja>
+\LaTeX 標準のフォント選択機構(NFSS2)を用いて
+\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ
+            ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という
+3つの和文フォントファミリを定義し,これらを用いる.
+
+本オプション指定時には\Pkg{fontspec}・\Pkg{luatexja-fontspec}パッケージは
+自動では読み込まれない,しかし,
 \begin{lstlisting}
-UprightFeatures = {
-  AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } },
-},
-BoldFeatures = {
-  AltFont =  { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } },
-}
+\usepackage{fontspec}
+\usepackage[hiragino-pron,nfssonly]{luatexja-preset}
 \end{lstlisting}
-のように指定しなければならない.
-
-一方,\texttt{AltFont} キー内の各リストでは
-\ \texttt{YokoFeatures},~\texttt{TateFeatures} 及び \texttt{TateFont} キーを
-指定することは可能であり.また\ \texttt{YokoFeatures},~\texttt{TateFeatures} キーの
-中身に \texttt{AltFont} を指定することができる.
+のようにすれば,このオプションを指定すれば
+欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる.
+一方,
+パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて
+            いる場合は \texttt{nfssonly} オプションは無視される.
+%</ja>
 
-また,\autoref{fig:yokotate-fontspec}後半部では6行目の色の指定が効かず,
-2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による色の指定が有効になっ
-たままである.これは\emph{\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による
-OpenType機能指定は
-組方向に依存しないOpenType機能の指定より後に解釈される}からである.
+\item[match]
+%<*en>
+If this option is specified, usual family-changing commands such as
+\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
+This option is passed to \Pkg{luatexja-fontspec}, if \texttt{fontspec}
+option is specifed.
+%</en>
 
+%<*ja>
+このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
+\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
+欧文フォントだけでなく和文フォントも変更するようになる.
+\ \texttt{fontspec}\
+オプションが有効になっている場合は,このオプションは \Pkg{luatexja-fontspec} パッケージへと渡される.
 %</ja>
 
 
-\subsection{\Pkg{luatexja-otf}}
-\label{ssec-ltjotf}
+\item[nodeluxe%
+%<en>\textrm{~(enabled by default)}
+%<ja>\emph{\gtfamily (既定)}
+]
 %<*en>
-This optional package supports typesetting glyphs
-by specifying a CID number.
-The package \Pkg{luatexja-otf} offers the following 2~low-level
-commands:
+The nagation of \texttt{deluxe} option.
+Use one-weighted \textit{mincho} and \textit{gothic} font families.
+This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and
+\verb+\gtfamily\mdseries+ use the same font.
 %</en>
 %<*ja>
-この追加パッケージはCID番号による文字の出力をサポートする.
-\Pkg{luatexja-otf}は以下の2つの低レベルコマンドを提供する:
+\texttt{deluxe}オプションの否定.
+\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する.
+より具体的に言うと,この設定の下では
+\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+,
+\verb+\gtfamily\mdseries+はみな同じフォントとなる.
 %</ja>
-\begin{cslist}
-\item[\cs{CID}\{<number>\}]
+\item[deluxe]
 %<*en>
-Typeset a glyph whose CID number is <number>.
-If the Japanese font is neither Adobe-Japan1,~Adobe-GB1, Adobe-CNS1,~nor~Adobe-Korea1 CID-keyed font,
-\LuaTeX-ja treats that <number> is a CID number of Adobe-Japan1 character collection,
-and tries to typeset a ``most suitable glyph''.
-%</en>
-%<*ja>
-CID番号が<number>の文字を出力する.
-もし現在の和文フォントがAdobe-Japan1,~Adobe-GB1, Adobe-CNS1,~Adobe-Korea1の
-  いずれのCID-keyed fontでもない場合,<number>はAdobe-Japan1のCID番号であると解釈し
-  「適切なグリフ」\footnote{%
-  例えばフォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて
-  グリフを選択する.
-}を出力する.
-%</ja>
+Use the mincho family with three weights (light, medium, and~bold),
+the gothic family with three weights (medium, bold, and extra~bold), and \textit{rounded gothic}%
+\footnote{Provided by \cs{mgfamily} and \cs{textmg},
+because ``rounded gothic'' is called \textit{maru gothic} (丸ゴシック) in Japanese.}.
+Mincho light and gothic extra~bold can be by
+\cs{mcfamily}\cs{ltseries}~and~\cs{gtfamily}\cs{ebseries}, respectively.
 
-\item[\cs{UTF}\{<hex\_number>\}]
-%<*en>
-Typeset a character whose character code is <hex\_number> (in hexadecimal).
-This command is similar to \verb+\char"+<hex\_number>,\ %"
-but please remind remarks below.
+\begin{itemize}
+ \item Some presets do not have the light weight of mincho.
+  In this case, we substitute the medium weight for the light weight.
+ \item \Pkg{luatexja-preset} does not produce an error (only produces a warning), even if
+  (one of) fonts for \cs{mcfamily}\cs{ltseries}, \cs{gtfamily}\cs{ebseries}, \cs{mgfamily}
+  do not exist.
+\end{itemize}
 %</en>
 %<*ja>
-文字コードが(16進で)<hex\_number>の文字を出力する.
-このコマンドは \verb+\char"+<hex\_number>と似ているが,下の注意を参照すること.%"
-%</ja>
-\end{cslist}
+明朝体・ゴシック体各3ウェイトと,
+丸ゴシック体 (\cs{mgfamily}, \verb+\textmg{...}+) を利用可能にする.
+明朝体は細字・中字・太字の3ウェイトがあり,
+明朝体の細字は \cs{mcfamily}\cs{ltseries} で利用できる.
+また,ゴシック体は中字・太字・極太の3ウェイトがあり,
+ゴシック体の極太は \cs{gtfamily}\cs{ebseries} で利用できる%
+\footnote{過去との互換性のため,\cs{gtebfamily}, \cs{textgteb\{...\}} も
+ 依然として利用可能である.}.
 
-%<*ja>
-このパッケージは,マクロ集 \texttt{luatexja-ajmacros.sty}\footnote{\Pkg{otf}パッケージ付属の井上浩一氏によるマクロ集
-\texttt{ajmacros.sty} に対して
-漢字コードをUTF-8にしたり,plain \LuaTeX でも利用可能にするという
-修正を加えたものである.}\ も自動的に読み込む.
-\texttt{luatexja-ajmacros.sty} は,
-そのため,\Pkg{luatexja-otf} を読みこめば \texttt{ajmacros.sty} マクロ集にある \cs{aj半角} などのマクロもそのまま使うことができる.
+\begin{itemize}
+  \item プリセット設定によっては明朝体細字が用意されていないものもある.その場合は
+  明朝体中字が代用される.
+  \item 明朝体細字,ゴシック体極太,丸ゴシック体の3フォントについては
+  実際にフォントをロードする前に存在するかチェックを行う.
+  存在しなかったものについては警告を発し,
+  それぞれ明朝体中字.ゴシック体太字,ゴシック体太字で代用する.
+\end{itemize}
 %</ja>
+\item[expert]
 %<*en>
-This package automatically loads \texttt{luatexja-ajmacros.sty}, which is slightly
-modified version of \texttt{ajmacros.sty}\footnote{Useful macros by iNOUE Koich!, for the
-\Pkg{japanese-otf} package.}.
-Hence one can use macros which sre defined in \texttt{ajmacros.sty}, such as~\cs{aj半角}.
+Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana
+characters designed for ruby.
 %</en>
-
-%<en>\paragraph{Remarks}
-%<ja>\paragraph{注意}
+%<*ja>
+横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{%
+  \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では
+  font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え).
+}.
+%</ja>
+\item[bold]
 %<*en>
-Characters by \cs{CID} and \cs{UTF} commands are different from
-ordinary characters in the following points:
+Substitute bold series of gothic for  bold series of mincho.
+If \texttt{nodeluxe} option is enabled, medium series of gothic is also changed,
+since we use same font for both series of gothic.
 %</en>
 %<*ja>
-\cs{CID} と \cs{UTF} コマンドによって出力される文字は
-以下の点で通常の文字と異なる:
+「明朝の太字」をゴシック体の太字によって代替する.
+もし\texttt{nodeluxe}オプションが指定されている場合は,ゴシック体は1ウェイトしか使用されな
+          いため,
+「ゴシック体の中字」も同時に変更されることになる.
 %</ja>
-\begin{itemize}
+\item[90jis]
+%<en>Use 90JIS glyph variants if possible.
+%<ja>出来る限り90JISの字形を使う.
+\item[jis2004]
+%<en>Use JIS2004 glyph variants if possible.
+%<ja>出来る限りJIS2004の字形を使う.
+\item[jfm\_yoko=<jfm>]
 %<*en>
-\item Always treated as \textbf{JAchar}s.
+Use the JFM \texttt{jfm-<jfm>.lua} for horizontal direction, instead of \texttt{jfm-ujis.lua}~(default JFM).
 %</en>
 %<*ja>
-\item 常に\textbf{JAchar}として扱われる.
+横組用和文フォントで用いるJFMを\texttt{jfm-<jfm>.lua}にする.このオプションがない時は
+\LuaTeX\nobreakdash -ja標準の\texttt{jfm-ujis.lua}が用いられる.
 %</ja>
+\item[jfm\_tate=<jfm>]
 %<*en>
-\item Processing codes for supporting OpenType features (\textit{e.g.},
-      glyph replacement and kerning) by the \Pkg{luaotfload} package
-      is not performed to these characters.
+Use the JFM \texttt{jfm-<jfm>.lua} for vertical direction, instead of \texttt{jfm-ujisv.lua}~(default JFM).
 %</en>
 %<*ja>
-\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための
-  \Pkg{luaotfload}パッケージのコードはこれらの文字には働かない
+縦用和文フォントで用いるJFMを\texttt{jfm-<jfm>.lua}にする.このオプションがない時は
+\LuaTeX-ja標準の\texttt{jfm-ujisv.lua}が用いられる
 %</ja>
-\end{itemize}
 
-%<en>\paragraph{Additional syntax of JFM}
-%<ja>\paragraph{JFMへの記法の追加}
+\item[jis]
+%<en>Same as \texttt{jfm\_yoko=jis}.
+%<ja>\texttt{jfm\_yoko=jis}と同じ.ここで用いるJFM\texttt{jfm-jis.lua}はJISフォントメトリックを元にしたものである.
 
+\end{cslist}
 %<*en>
-The package \Pkg{luatexja-otf} extends the syntax of JFM; the entries of \texttt{
-chars} table in JFM now allows a string in the form
-\verb+'AJ1-xxx'+, which stands for the character
-whose CID number in Adobe-Japan1 is \verb+xxx+.
-
-This extended notation is used in the standard JFM \texttt{jfm-ujis.lua}
-to typeset halfwidth Hiragana glyphs (CID~516--598) in halfwidth.
+Note that \texttt{90jis} and \texttt{jis2004} only affect with mincho,
+gothic (and, possibly rounded gothic) families defined by this package.
+We didn't taken account of  when both \texttt{90jis} and \texttt{jis2004} are specified.
 %</en>
 %<*ja>
-\Pkg{luatexja-otf}パッケージを読み込むと,
-JFMの\texttt{chars}テーブルのエントリとして \verb+'AJ1-xxx'+ の形の文字列が
-使えるようになる.これはAdobe-Japan1におけるCID番号が \verb+xxx+ の文字を表す.
-
-この拡張記法は,標準JFM~\texttt{jfm-ujis.lua}で,半角ひらがなのグリフ(CID~516--598)を
-正しく半角幅で組むために利用されている.
+\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された
+明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.
+両オプションが同時に指定された場合の動作については全く考慮していない.
 %</ja>
 
-\subsection{\Pkg{luatexja-adjust}}
-\label{ssec-adj}
-\begin{figure}[t]
-\def\sq{%
-  \hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{%
-   \hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw%
-  \hskip\dimexpr.5\zw-.2pt\relax}\hss}}
-\def\sb{\hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{%
-  ■\hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw%
-  \hskip\dimexpr.5\zw-.2pt\relax}\hss}}
-\newbox\gridbox
-\def\outbox#1{{\Large%
-  \ltjsetparameter{kanjiskip=0pt plus .2\zw minus .2\zw}%
-  \setbox\gridbox=\hbox to 20\zw{\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb}%
-  \hbox{\textcolor{cyan}{\copy\gridbox}\hskip-20\zw%
-  \vbox{\hsize=20\zw\noindent\leftskip0pt\rightskip0pt\parfillskip0pt#1}\vrule}%
-}}
-
-{\centering
-\begin{tabular}{lc}
-\toprule
-no adjustment&\outbox{以上の原理は,「包除原理」とよく呼ばれるが\hskip-.5\zw\null}\\
-without priority&%
-\ltjdisableadjust
-\outbox{以上の原理は,「包除原理」とよく呼ばれるが}%
-\ltjenableadjust\\
-with priority&%
-\outbox{以上の原理は,「包除原理」とよく呼ばれるが}
-%<en>\ltjdisableadjust
-\\
-\bottomrule
-\end{tabular}\par}
-\smallskip
-
-Note: the value of
-\Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure,
-for making the difference obvious.
-%<ja>\caption{行長調整}\label{fig:adj}
-%<en>\caption{Line adjustment}\label{fig:adj}
-\end{figure}
-
+%<en>\subsubsection{Presets which support multi weights}
+%<ja>\subsubsection{多ウェイト用プリセットの一覧}
+\label{sssec:ltjpreset-multi}
 
 %<*en>
-(see Japanese version of this manual)
+Besides \texttt{morisawa-pro}~and~\texttt{morisawa-pr6n} presets,
+fonts are specified by font name, not by file name.
+In following tables, starred fonts (e.g.~KozGo\dots-Regular) are used for medium series of \textit{gothic},
+\emph{if and only if \texttt{deluxe} option is specified}.
 %</en>
 %<*ja>
-この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい.
-\begin{description}
-\item[行末文字の位置調整]
-  \pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように
-  行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった.
-  和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず,
-  前の文に書いたことを実現するには
-\begin{lstlisting}
-\def\。{%
-  \penalty10000 % 禁則ペナルティ
-  \hbox to0pt{。\hss}\penalty0 % ぶら下げの場合
-  \kern.5\zw\penalty0 % 二分取りの場合
-  \kern.5\zw\penalty0 % 全角取りの場合
-}
-\end{lstlisting}
-  のような命令を定義し,文中の全ての句点を \lstinline+\。+ で書くことが必要だった.
+\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は
+(ファイル名でなく)フォント名で行われる.
+以下の表において,*\,つきのフォント(e.g.,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に}
+ゴシック体中字として用いられるものを示している.
+%</ja>
+\begin{cslist}[style=standard]
+ \item[kozuka-pro] Kozuka Pro (Adobe-Japan1-4) fonts.
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[kozuka-pr6] Kozuka Pr6 (Adobe-Japan1-6)  fonts.
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[kozuka-pr6n] Kozuka Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts.
 
-\Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を
-2通り以上から自動的に選択する機能を提供する.
-\pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と
-  「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした(
-\Pkg{luatexja-adjust}パッケージの既定では前者).
-  
-\item[優先順位付きの行長調整]
-\pTeX では,行長調整において優先度の概念が存在しなかったため,図
-\ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵
-括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し
-かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
-ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
-文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている.
-\Pkg{luatexja-adjust}パッケージの提供する第2の機能は,
-\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き
-の行長調整である.
-\begin{itemize}
- \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである.
-そのため,行分割の位置は変化することはない.
+%<*en>
+Kozuka Pro/Pr6N fonts are bundled with Adobe's software, such as Adobe~InDesign.
+There is not rounded gothic family in Kozuka fonts.
+%</en>
+%<*ja>
+小塚Pro書体・Pr6N書体はAdobe InDesign等のAdobe製品にバンドルされている.
+「小塚丸ゴシック」は存在しないので,便宜的に小塚ゴシックHによって代用している.
+%</ja>
+\begin{center}\small
+\begin{tabular}{lllll}
+\toprule
+\bfseries family&\bfseries series&\ttfamily kozuka-pro&\ttfamily kozuka-pr6&\ttfamily kozuka-pr6n\\
+\midrule
+ &light&KozMinPro-Light&KozMinProVI-Light&KozMinPr6N-Light\\
+%<en>\textit{mincho}%
+%<ja>\textgt{明朝}%
+ &medium&KozMinPro-Regular&KozMinProVI-Regular&KozMinPr6N-Regular\\
+ &bold&KozMinPro-Bold&KozMinProVI-Bold&KozMinPr6N-Bold\\
+\midrule
+ &&KozGoPro-Regular*&KozGoProVI-Regular*&KozGoPr6N-Regular*\\
+ &\smash{\raisebox{1.5ex}{medium}}
+ &KozGoPro-Medium&KozGoProVI-Medium&KozGoPr6N-Medium\\
+\cmidrule(l){2-5}
+%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
+%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+ &bold&KozGoPro-Bold&KozGoProVI-Bold&KozGoPr6N-Bold\\
+ &extra bold&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\
+\bottomrule
+\end{tabular}
+\end{center}
 
-\verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である.
- \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は
-一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を
-行う場合には注意が必要である.
-\end{itemize}
-\end{description}
+%<en>\newpage
+ \item[hiragino-pro]  Hiragino Pro (Adobe-Japan1-5) fonts.
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts.
 
-\Pkg{luatexja-adjust}パッケージは,上記で述べた2機能を有効化/無効化するための
-以下の命令を提供する.これらはすべてグローバルに効力を発揮する.
+%<*en>
+Hiragino fonts (except Hiragino~Mincho~W2) are bundled with Mac OS~X 10.5 or later.
+Some editions of a Japanese word-processor ``一太郎2012'' includes Hiragino ProN fonts.
+Note that fonts for gothic extra~bold (HiraKakuStd[N]-W8) only contains characters in
+Adobe-Japan1-3 character collection, while others contains those in
+Adobe-Japan1-5 character collection.
+%</en>
+%<*ja>
+ヒラギノフォントは,Mac OS~X以外にも,一太郎2012の上位エディションにもバンドルされている.
+極太ゴシック体として用いるヒラギノ角ゴW8は,Adobe-Japan1-3の範囲しかカバーしていない
+Std/StdNフォントであり,その他はAdobe-Japan1-5対応である.
 
-\begin{cslist}
-\item[\cs{ltjenableadjust[...]}]
-\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」を有効化/無効化する.
-指定できるキーは以下の通り.
-\begin{description}
-  \item[\texttt{lineend=[false,true,extended]}]
-  行末文字の位置調整の機能を無効化(\texttt{false}),「行分割後に調整」の形で有効化(\texttt{true}),
-  「行分割の仮定で考慮」(\texttt{extended})する.
-  \item[\texttt{priority=[false,true]}]
-  優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true})する.
-\end{description}
-両キーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる.
+なお,明朝体細字として用いるヒラギノ明朝体W2はOS~Xや一太郎にはバンドルされておらず,
+別途購入する必要がある.
+%</ja>
+\begin{center}\small
+\begin{tabular}{llll}
+\toprule
+\bf family&\bf series&\tt hiragino-pro&\tt hiragino-pron\\
+\midrule
+ &light&Hiragino~Mincho~Pro~W2&Hiragino~Mincho~ProN~W2\\
+%<en>\textit{mincho}%
+%<ja>\textgt{明朝}%
+ &medium&Hiragino~Mincho~Pro~W3&Hiragino~Mincho~ProN~W3\\
+ &bold&Hiragino~Mincho~Pro~W6&Hiragino~Mincho~ProN~W6\\
+\midrule
+ &&Hiragino~Kaku~Gothic~Pro~W3*&Hiragino~Kaku~Gothic~ProN~W3*\\
+ &\smash{\raisebox{1.5ex}{medium}}
+ &Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\
+\cmidrule(l){2-4}
+%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
+%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+ &bold&Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\
+ &extra bold&Hiragino~Kaku~Gothic~Std~W8&Hiragino~Kaku~Gothic~StdN~W8\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&Hiragino~Maru~Gothic~Pro~W4&Hiragino~Maru~Gothic~ProN~W4\\
+\bottomrule
+\end{tabular}
+\end{center}
 
-互換性の為,オプション無しでただ\cs{ltjenableadjust}が呼び出された場合は,
-\begin{lstlisting}
-\ltjenableadjust[lineend=true,priority=true]
-\end{lstlisting}
-と扱われる.
-  
-\item[\cs{ltjdisableadjust}]
-\Pkg{luatexja-adjust}パッケージの機能を無効化する.
-\begin{lstlisting}
-\ltjenableadjust[lineend=false,priority=false]
-\end{lstlisting}
-と同義.
-\end{cslist}
+ \item[morisawa-pro]  Morisawa Pro (Adobe-Japan1-4) fonts.
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[morisawa-pr6n]  Morisawa Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts.
+\begin{center}\footnotesize
+\begin{tabular}{ll>{\tt}l>{\tt}l}
+\toprule
+\bf family&\bf series&morisawa-pro&morisawa-pr6n\\
+\midrule
+ &medium&A-OTF-RyuminPro-Light.otf&A-OTF-RyuminPr6N-Light.otf\\
+%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
+%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
+ &bold&A-OTF-FutoMinA101Pro-Bold.otf&A-OTF-FutoMinA101Pr6N-Bold.otf\\
+\midrule
+ &medium
+ &A-OTF-GothicBBBPro-Medium.otf&A-OTF-GothicBBBPr6N-Medium.otf\\
+%<en>\textit{gothic}%
+%<ja>\gt ゴシック
+ &bold&A-OTF-FutoGoB101Pro-Bold.otf&A-OTF-FutoGoB101Pr6N-Bold.otf\\
+ &extra bold&A-OTF-MidashiGoPro-MB31.otf&A-OTF-MidashiGoPr6N-MB31.otf\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&A-OTF-Jun101Pro-Light.otf&A-OTF-ShinMGoPr6N-Light.otf\\
+\bottomrule
+\end{tabular}
+\end{center}
 
-また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で
-追加される.両パラメータともグローバルに効力を発揮する.
-\begin{cslist}[style=standard]
-\item[\DParam{stretch\_priority}\,=\{<list>\}]
-\Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を,
-「行を自然長より伸ばす」場合の調整に用いる優先度を指定する.
 
-指定方法は,<list>の中にkey-value listの形で
-\begin{lstlisting}
-stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50}
-\end{lstlisting}
-のようにして行う.キー名\texttt{kanjiskip},~\texttt{xkanjiskip}については
-そのままの意味であり,
-\texttt{others}キーが「\textbf{JAglue}以外のグルー」を表す.
-各キーの値は,JFMグルーにおける「優先度$i$」を$10i$に対応させた整数値であり,
-  大きい方が先に伸ばされることを意味している.
+ \item[yu-win]  Yu fonts bundled with Windows~8.1.
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[yu-win10]  Yu fonts bundled with Windows~10.
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[yu-osx]  Yu fonts bundled with OSX~Mavericks.
+\begin{center}\small
+\begin{tabular}{lllll}
+\toprule
+\bf family&\bf series&\texttt{yu-win}&\texttt{yu-win10}&\texttt{yu-osx}\\
+\midrule
+ &light&YuMincho-Light&YuMincho-Light&(YuMincho~Medium)\\
+%<en>\textit{mincho}%
+%<ja>\textgt{明朝}%
+ &medium&YuMincho-Regular&YuMincho-Regular&YuMincho~Medium\\
+ &bold&YuMincho-Demibold&YuMincho-Demibold&YuMincho~Demibold\\
+\midrule
+ &&YuGothic-Regular*&YuGothic-Regular*&YuGothic~Medium*\\
+ &\smash{\raisebox{1.5ex}{medium}}%
+        &YuGothic-Regular&YuGothic-Medium&YuGothic~Medium\\
+\cmidrule(l){2-5}
+%<en>\textit{gothic}%
+%<ja>\gt ゴシック
+ &bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
+ &extra bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
+\bottomrule
+\end{tabular}
+\end{center}
 
-\item[\DParam{shrink\_priority}\,=\{<list>\}]
-同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する.
-それ以外は\Param{stretch\_priority}と指定の形式は変わらない.
-\end{cslist}
-初期値は\Param{stretch\_priority}, \Param{shrink\_priority}とも
-\begin{lstlisting}
-{kanjiskip=-35,xkanjiskip=-25,others=50}
-\end{lstlisting}
-であり,「優先度$-4$」と指定されているJFMグルーが最も伸び(縮み)にくいようになっている.
-%</ja>
+\item[moga-mobo]  MogaMincho, MogaGothic, and MoboGothic.
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+\item[moga-mobo-ex]  MogaExMincho, MogaExGothic, and MoboExGothic.
+%<en>\par These fonts can be downloaded from \url{http://yozvox.web.fc2.com/}.
+%<ja>これらのフォントは \url{http://yozvox.web.fc2.com/} からダウンロードできる.
+\begin{center}\small
+\begin{tabular}{llll}
+\toprule
+\bf family&\bf series&\bf default, \texttt{90jis}~option&\bf \texttt{jis2004} option\\
+\midrule
+ &medium&Moga90Mincho&MogaMincho\\
+%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
+%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
+ &bold&Moga90Mincho Bold&MogaMincho Bold\\
+\midrule
+ &medium&Moga90Gothic&MogaGothic\\
+%<en>\textit{gothic}%
+%<ja>\gt ゴシック
+ &bold&Moga90Gothic Bold&MogaGothic Bold\\
+ &extra bold&Moga90Gothic Bold&MogaGothic Bold\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&Mobo90Gothic&MoboGothic\\
+\bottomrule
+\end{tabular}
+\end{center}
+%<en>When \texttt{moga-mobo-ex} is specified, the font ``MogaEx90Mincho'' etc.\ are used.
+%<ja>\texttt{moga-mobo-ex}オプション指定時にはMogaEx90MinchoなどのExが名前についたフォントが使われる.
 
-\subsection{\Pkg{luatexja-ruby}}
-%<*en>
-This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations
-using callbacks of \LuaTeX-ja.
-There is no detailed manual of \Pkg{luatexja-ruby.sty} in English.
-(Japanese manual is another PDF file, \url{luatexja-ruby.pdf}.)
-%</en>
-%<*ja>
-この追加パッケージは,\LuaTeX-jaの機能を利用したルビ(振り仮名)の組版機能を提供する.
-前後の文字種に応じた前後への自動進入や,
-行頭形・行中形・行末形の自動的な使い分けが特徴である.
+\item[ume]  Ume Mincho and Ume Gothic.
+%<en>\par These fonts can be downloaded from\\\hfill \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage}.
+%<ja>これらのフォントは \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage} からダウンロードできる.
+\begin{center}\small
+\begin{tabular}{lll}
+\toprule
+\bf family&\bf series&\bf default\\
+\midrule
+ &medium&Ume Mincho\\
+%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
+%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
+ &bold&Ume Mincho\\
+\midrule
+ &&Ume Gothic*\\
+ &\smash{\raisebox{1.5ex}{medium}}&Ume Gothic O5\\
+\cmidrule(l){2-3}
+%<en>\textit{gothic}%
+%<ja>\gt ゴシック
+ &bold&Ume Gothic O5\\
+ &extra bold&Ume Gothic O5\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&Ume Gothic O5\\
+\bottomrule
+\end{tabular}
+\end{center}
+
+ \item[sourcehan]  Source Han Serif and Source Han Sans fonts (Language-specific OTF \textit{or} OTC)
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[sourcehan-jp]  Source Han Serif JP and Source Han Sans JP fonts (Region-specific Subset OTF)
+\begin{center}\small
+\def\AD#1#2{Source Han #1 #2&Source Han #1 JP #2}%
+\begin{tabular}{lllll}
+\toprule
+\bf family&\bf series&\texttt{sourcehan}&\texttt{sourcehan-jp}\\
+\midrule
+ &light&\AD{Serif}{Light}\\
+%<en>\textit{mincho}%
+%<ja>\textgt{明朝}%
+ &medium&\AD{Serif}{Regular}\\
+ &bold&\AD{Serif}{Bold}\\
+\midrule
+ &&\AD{Sans}{Regular*}\\
+ &\smash{\raisebox{1.5ex}{medium}}
+ &\AD{Sans}{Medium}\\
+\cmidrule(l){2-4}
+%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
+%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+ &bold&\AD{Sans}{Bold}\\
+ &extra bold&\AD{Sans}{Heavy}\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&\AD{Sans}{Heavy}\\
+\bottomrule
+\end{tabular}
+\end{center}
+
+
+ \item[noto-otc]  Noto Serif CJK and Noto Sans CJK fonts (OTC)
+%<en>    \\*[-\dimexpr\medskipamount+\baselineskip\relax]
+ \item[noto-otf]  Noto Serif CJK and Noto Sans CJK fonts (Language-specific OTF)
+\begin{center}\small
+\def\AD#1#2{Noto #1 CJK #2&Noto #1 CJK JP #2}%
+\begin{tabular}{lllll}
+\toprule
+\bf family&\bf series&\texttt{noto-otc}&\texttt{noto-otf}\\
+\midrule
+ &light&\AD{Serif}{Light}\\
+%<en>\textit{mincho}%
+%<ja>\textgt{明朝}%
+ &medium&\AD{Serif}{Regular}\\
+ &bold&\AD{Serif}{Bold}\\
+\midrule
+ &&\AD{Sans}{Regular*}\\
+ &\smash{\raisebox{1.5ex}{medium}}
+ &\AD{Sans}{Medium}\\
+\cmidrule(l){2-4}
+%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
+%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+ &bold&\AD{Sans}{Bold}\\
+ &extra bold&\AD{Sans}{Black}\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&\AD{Sans}{Black}\\
+\bottomrule
+\end{tabular}
+\end{center}
 
-ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は
-使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている.
-この節では簡単な使用方法のみ述べる.
-%</ja>
+\end{cslist}
+%<en>\subsubsection{Presets which do not support multi weights}
+%<ja>\subsubsection{単ウェイト用プリセット一覧}
+\label{sssec:ltjpreset-single}
 
-\begin{description}
 %<*en>
- \item[Group-ruby]
-By default, ruby characters (the second argument of \cs{ruby})
-are attached to base characters (the first argument), as one object.
-This type of ruby is called \emph{group-ruby}.
+Next, we describe settings for using only single weight.
 %</en>
 %<*ja>
- \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字,
-第2引数にルビを記述する.
+次に,単ウェイト用の設定を述べる.この4設定では
+明朝体太字・丸ゴシック体はゴシック体と同じフォントが用いられる.
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-東西線\ruby{妙典}{みようでん}駅は……\\
-東西線の\ruby{妙典}{みようでん}駅は……\\
-東西線の\ruby{妙典}{みようでん}という駅……\\
-東西線\ruby{葛西}{かさい}駅は……
-\end{LTXexample}
-%<*en>
-As the above example, ruby hangover is allowed on the Hiragana before/after
-its base characters.
-%</en>
-%<ja> この例のように,標準では前後の平仮名にルビ全角までかかるようになっている.
-
+\par\nobreak\medskip
+{\centering\small
+\begin{tabular}{lllll}
+\toprule
+&\tt noembed&\tt ipa&\tt ipaex&\tt ms\\
+\midrule
 %<*en>
-\item[Mono-ruby]
-To attach ruby characters to each base characters (\emph{mono-ruby}),
-one should use \cs{ruby} multiple times:
+\it mincho&Ryumin-Light (non-embedded)
+&IPA Mincho&IPAex Mincho&MS Mincho\\
+\it gothic&GothicBBB-Medium (non-embedded)
+&IPA Gothic&IPAex Gothic&MS Gothic\\
 %</en>
 %<*ja>
- \item[モノルビ] 親文字を1文字にするとモノルビとなる.
-2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも
-その数だけ \cs{ruby} を書く必要がある.
+\gtfamily 明朝&Ryumin-Light(非埋込)
+&IPA明朝&IPAex明朝&MS明朝\\
+\gtfamily ゴシック&GothicBBB-Medium(非埋込)
+&IPAゴシック&IPAexゴシック&MSゴシック\\
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は……
-\end{LTXexample}
+\bottomrule
+\end{tabular}\par\medskip}
 
+%<en>\subsubsection{Presets which use HG fonts}
+%<ja>\subsubsection{HGフォントを使うプリセット}
+\label{sssec:ltjpreset-hg}
 %<*en>
- \item[Jukugo-ruby]
-Vertical bar~\verb+|+ denotes a boundary of \emph{groups}.
+We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights.
+In the table below, starred fonts (e.g., IPA~Gothic*) are used
+only if \texttt{jis2004} or \texttt{nodeluxe} option is spefified.
 %</en>
 %<*ja>
- \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し,
-複数グループのルビは熟語ルビとして組まれる.
-\cite{x4051}にあるように,
-どのグループでも「親文字」が対応するルビ以上の長さの場合は
-各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる.
-\cite{jlreq}で規定されている組み方とは異なるので注意.
+すぐ前に書いた単ウェイト用設定を,Microsoft Office等に付属するHGフォントを使って
+多ウェイト化した設定もある.以下の表では,*~付きのフォント(例:IPAゴシック*)は
+\texttt{jis2004}と\texttt{nodeluxe}のいずれかのオプションが有効になっているときに使われる.
 %</ja>
-\begin{LTXexample}
-\ruby{妙|典}{みよう|でん}\
-\ruby{葛|西}{か|さい}\
-\ruby{神楽|坂}{かぐら|ざか}
-\end{LTXexample}
+\par\nobreak\medskip
+{\centering\small
+\begin{tabular}{lllll}
+\toprule
+\textbf{family}&\textbf{series}&\tt ipa-hg&\tt ipaex-hg&\tt ms-hg\\
+\midrule
 %<*en>
-If there are multiple groups in one \cs{ruby} call,
-A linebreak between two groups is allowed.
-%</en>
-%<ja> 複数ルビではグループとグループの間で改行が可能である.
-\begin{LTXexample}[width=0.3\textwidth]
-\vbox{\hsize=6\zw\noindent
-  \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
-  \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
-  \hbox to   3\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
-}
-\end{LTXexample}
-\end{description}
+&medium&IPA Mincho&IPAex Mincho&MS Mincho\\
+\smash{\raisebox{1.5ex}{\textit{mincho}}}%
+&bold&HG Mincho E&HG Mincho E&HG Mincho E\\\midrule
+&&IPA Gothic*&IPAex Gothic*&MS Gothic*\\
+&\smash{\raisebox{1.5ex}{medium}}%
+&HG Gothic M&HG Gothic M&HG Gothic M\\\cmidrule{2-5}
+\textit{gothic}&bold&HG Gothic E&HG Gothic E&HG Gothic E\\\cmidrule{2-5}
+&extra bold&HG Soei Kaku Gothic UB&HG Soei Kaku Gothic UB&HG Soei Kaku Gothic UB\\\midrule
+\textit{rounded gothic}&&
+HG MaruGothic M PRO&HG MaruGothic M PRO&HG MaruGothic M PRO\\
+%</en>
+%<*ja>
+&medium&IPA明朝&IPAex明朝&MS明朝\\
+\smash{\raisebox{1.5ex}{\textgt{明朝}}}%
+&bold&HG明朝E&HG明朝E&HG明朝E\\\midrule
+&&IPAゴシック*&IPAexゴシック*&MSゴシック*\\
+&\smash{\raisebox{1.5ex}{medium}}%
+&HGゴシックM&HGゴシックM&HGゴシックM\\\cmidrule{2-5}
+\textgt{ゴシック}&bold&HGゴシックE&HGゴシックE&HGゴシックE\\\cmidrule{2-5}
+&extra bold&HG創英角ゴシックUB&HG創英角ゴシックUB&HG創英角ゴシックUB\\\midrule
+\textgt{丸ゴシック}&&
+HG丸ゴシックM-PRO&HG丸ゴシックM-PRO&HG丸ゴシックM-PRO\\
+%</ja>
+\bottomrule
+\end{tabular}\par\medskip}
 
 %<*en>
-If the width of ruby characters are longer than that of base characters,
-\cs{ruby} automatically selects the appropriate form
-among the line-head form, the line-middle form, and the line-end form.
+Note that HG~Mincho~E, HG~Gothic~E, HG Soei Kaku Gothic UB, and HG Maru Gothic PRO
+are internally specified by:
+\begin{description}
+\item[default] by font name (\texttt{HGMinchoE}, etc.).
+\item[{\tt 90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}).
+\item[{\tt jis2004}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}).
+\end{description}
 %</en>
 %<*ja>
-また,ルビ文字のほうが親文字よりも長い場合は,自動的に
-行頭形・行中形・行末形のいずれか適切なものを選択する.
+なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で
+\begin{description}
+\item[標準] フォント名(\texttt{HGMinchoE} など)
+\item[{\tt 90jis}指定時] ファイル名 (%
+\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf})
+\item[{\tt jis2004}指定時] ファイル名 (%
+\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf})
+\end{description}
+として指定を行っているので注意すること.
 %</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\vbox{\hsize=8\zw\noindent
-\null\kern3\zw ……を\ruby{承}{うけたまわ}る
-     \kern1\zw ……を\ruby{承}{うけたまわ}る\\
-\null\kern5\zw ……を\ruby{承}{うけたまわ}る
-}
-\end{LTXexample}
 
+%<en>\subsubsection{Define/Use Custom Presets}
+%<ja>\subsubsection{新たなプリセットの定義}
 
 %<*ja>
-\subsection{\Pkg{lltjext}}
-\pLaTeX では縦組用の拡張として \Pkg{plext} パッケージが用意されていたが,
-それを\LuaTeX-ja用に書きなおしたものが本追加パッケージ \Pkg{lltjext} である.
-
-従来の \Pkg{plext} パッケージとの違いは,
-{\catcode`\<=12
-\begin{itemize}
- \item 組方向オプション \texttt{<y>}(横組),\texttt{<t>}(縦組),
-\texttt{<z>}\ の他に\ \texttt{<d>}(dtou方向),\texttt{<u>}(utod方向)を追加した.
-\texttt{<z>} と \texttt{<u>} の違いは,\texttt{<z>} が(\Pkg{plext} パッケージと同様に)
-周囲の組方向が縦組のときにしか意味を持たない
-       のに対し,\texttt{<u>} にはそのような制限がないことである.
-
- \item \Pkg{plext} パッケージでは,表組(\texttt{tabular} 環境,\texttt{align} 環境等)や
-\texttt{minipage} 環境,\cs{parbox} 命令において,
-垂直位置指定 \texttt{[t]},~\texttt{[b]} の挙動が非読み込み時と微妙に変わることがあった.
-
-\Pkg{lltjext} パッケージでは,垂直位置指定が\LaTeXe と同様の挙動(以下に示す)に
-なるように修正した.
-\begin{itemize}
- \item \texttt{[t]} オプション指定時は,ボックスのベースラインが中身の1行目のベースライン
-       (1行目の上に罫線などが来た時は,ボックスの上端)に一致するように配置する.
- \item \texttt{[b]} オプション指定時は,ボックスのベースラインが中身の最終行のベースライン
-       (中身の最後が罫線などの時は,ボックスの下端)に一致するように配置する.
- \item それ以外のときは,ボックスの中央が「数式の軸」に一致するように配置する.
-\end{itemize}
-
- \item 連数字用命令 \cs{rensuji} における位置合わせオプション \texttt{[l]}, \texttt{[c]},
-       \texttt{[r]} の挙動を若干変更した.
-
-\end{itemize}
-}
+バージョン********.0以降では,自分で新たなプリセットを定義することが出来るようになった.
+以下に説明する2命令はプリアンブルでしか実行できない.
 %</ja>
 %<*en>
-\subsection{\texttt{lltjext.sty}}
-\pLaTeX\ supplies additional macros for vertical writing in the \Pkg{plext} package.
-The \Pkg{lltjext} package which we want to describe here is the \LuaTeX-ja
-counterpart of the \Pkg{plext} package.
+From version~********.0, one can define new presets using \cs{ltjnewpreset},
+and use them by \cs{ltjapplypreset}. These two commands can only be used in the preamble.
 %</en>
+\begin{cslist}
+ \item[\cs{ltjnewpreset}\{<name>\}\{<specification>\}]
+%<*ja>
+  新たに<name>という名称のプリセットを定義する.この名称は,
+  すでに定義されているプリセット名や,
+  \ref{sssec:ltjpreset-general}で定義されているオプション,さらに
+  次の9つと重複してはならない.
+  \begin{quote}
+       \ttfamily
+       mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+  \end{quote}
+
+  <specification>は,プリセット名や以下のキー達のコンマ区切りリストを指定する:
+  \begin{description}
+   \item[\ttfamily mc-l=<font>] 明朝体細字(\cs{mcfamily}\cs{ltseries})
+   \item[\ttfamily mc-m=<font>] 明朝体中字(\cs{mcfamily}\cs{mdseries})
+   \item[\ttfamily mc-bx=<font>] 明朝体太字(\cs{mcfamily}\cs{bfseries})
+   \item[\ttfamily gt-m=<font>] ゴシック体中字(\cs{gtfamily}\cs{mdseries})
+   \item[\ttfamily gt-bx=<font>] ゴシック体太字(\cs{gtfamily}\cs{bfseries})
+   \item[\ttfamily gt-eb=<font>] ゴシック体太字(\cs{gtfamily}\cs{ebseries})
+   \item[\ttfamily mg-m=<font>] 丸ゴシック体(\cs{mgfamily})
+   \item[\ttfamily mc=<font>] 明朝体の細字・中字・太字全部を設定.
+       以下を指定したことと同じである:
+       \begin{quote}
+         \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+       \end{quote}
+   \item[\ttfamily gt=<font>] ゴシック体の中字・太字・極太全部を設定.
+       以下を指定したことと同じである:
+       \begin{quote}
+         \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+       \end{quote}
+  \end{description}
+  なお,パッケージ読み込み時に \texttt{deluxe} が有効でない場合は,
+  上記9キーのうち\texttt{mc}, \texttt{gt}しか実質的に意味を持たない.  
+%</ja>
+%<*en>
+  Define new preset~<name>. This <name> cannot be same as other presets,
+  options described in Subsubsection~\ref{sssec:ltjpreset-general}, nor
+  following nine strings:
+  \begin{quote}
+       \ttfamily
+       mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+  \end{quote}
 
+  <specification> is a comma-separated list which consists of
+  other presets and/or the following keys:
+  \begin{description}
+   \item[\ttfamily mc-l=<font>] mincho light
+   \item[\ttfamily mc-m=<font>] mincho medium
+   \item[\ttfamily mc-bx=<font>] mincho bold
+   \item[\ttfamily gt-m=<font>] gothic medium
+   \item[\ttfamily gt-bx=<font>] gothic bold
+   \item[\ttfamily gt-eb=<font>] gothic extra~bold
+   \item[\ttfamily mg-m=<font>] rounded gothic
+   \item[\ttfamily mc=<font>] Same as
+       \begin{quote}
+         \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+       \end{quote}
+   \item[\ttfamily gt=<font>] Same as
+       \begin{quote}
+         \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+       \end{quote}
+  \end{description}
+  If \texttt{deluxe} is not specified at loading the package,
+  only \texttt{mc}~and~\texttt{gt} keys (among above 9~keys) have a meaning.
+%</en>
+ \item[\cs{ltjnewpreset}*\{<name>\}\{<specification>\}]
 %<*ja>
-念の為,本 \Pkg{lltjext} パッケージで追加・変更している命令の一覧を載せておく.
-\begin{cslist}
-\item[tabular\textrm{, }array\textrm{, }minipage環境]
-これらの環境は,
-\begin{lstlisting}
-\begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
-\begin{array}<dir>[pos]{table spec}   ... \end{array}
-\begin{minipage}<dir>[pos]{width}     ... \end{minipage}
-\end{lstlisting}
-のように,組方向オプション \texttt{\<dir\>} が拡張されている.
-既に述べたように,組方向オプションに指定できる値は以下の5つであり,
-それ以外を指定した時や無指定時は周囲の組方向と同じ組方向になる.
-\begin{description}
- \item[y] 横組(\cs{yoko})
- \item[t] 縦組(\cs{tate})
- \item[z] 周囲が縦組の時はutod方向,それ以外はそのまま
- \item[d] dtou方向
- \item[u] utod方向
-\end{description}
-\item[\cs{parbox}\<<dir>\>{[<pos>]}\{<width>\}\{<contents>\}]
-\cs{parbox} 命令も同様に,組方向の指定ができるように拡張されている.
+  \cs{ltjnewpreset}とほぼ同じであるが,こちらはすでに定義されているプリセット名
+  を<name>に指定した場合にはエラーを出さずに定義を置き換える.
+%</ja>
+%<*en>
+  Almost same as \cs{ltjnewpreset}. However, if <name> matches a preset which already defined,
+  this command simply overwrite it.
+%</en>
+ \item[\cs{ltjapplypreset}\{<name>\}]
+%<ja> <name>で指定されたプリセットを使って和文フォントを設定する.
+%<en> Set Japanese font families using preset~<name>.
+\end{cslist}
 
-\item[\cs{pbox}\<<dir>\>{[<width>][<pos>]}\{<contents>\}]
-組方向<dir>で<contents>の中身をLRモードで組む命令である.
-<width>が正の値であるときは,ボックス全体の幅がその値となる.
-その際,中身は<pos>の値に従い,左寄せ(\texttt{l}),右揃え(\texttt{r}),
-中央揃え(それ以外)される.
-\item[picture環境]
-図表作成に用いる \texttt{picture} 環境も,
+%<*ja>
+なお,\cs{ltjnewpreset}の第二引数<specification>に含まれる
+プリセット名は\cs{ltjnewpreset}の時点で定義されている必要はなく,
+\cs{ltjapplypreset}で実際に使うときに定義されていれば良い.
+そのため,次のような記述も可能である:
 \begin{lstlisting}
-\begin{picture}<dir>(x_size, y_size)(x_offset,y_offset)
-  ...
-\end{picture}
+  \ltjnewpreset{hoge}{piyo,mc-bx=HiraMinProN-W6}
+  \ltjnewpreset{piyo}{mg-m=HiraMaruProN-W4}
+  \ltjapplypreset{hoge}
 \end{lstlisting}
-と組方向が指定できるように拡張されている.
-$x$成分の増加方向は字送り方向,$y$成分の増加方向は行送り方向の\emph{反対方向}となる.
-\Pkg{plext} パッケージと同様に
-内部ではベースライン補正(\Param{yalbaselineshift}パラメータなど)の影響を受けないように,
-\cs{put},~\cs{line}, \cs{vector}, \cs{dashbox}, \cs{oval},~\cs{circle}も
-ベースライン補正を受けないように再定義されている.
-
-\item[\cs{rensuji}{[<pos>]}\{<contents>\}\textrm{, }\cs{rensujiskip}]
-
-\item[\cs{Kanji}\{<counter\_name>\}]
-
-\item[\cs{kasen}\{<contents>\}\textrm{, }\cs{bou}\{<contents>\}\textrm{,
-                    }\cs{boutenchar}]
 
-\item[参照番号]
-\end{cslist}
+\paragraph{注意}
+\cs{ltjnewpreset}で定義したプリセットには以下の制限がある.
+\begin{itemize}
+  \item 非埋め込みのフォントを指定することはできない.
+  \item \texttt{ipa-hg}などのいくつかのプリセットでは
+  「\texttt{90jis}, \texttt{jis2004}が指定されているか否かでフォントの指定を変える」処理が
+  行われていたが,\cs{ltjnewpreset}で定義したプリセットではこの処理は働かない.
+  HGフォントやモガ明朝などを使うプリセットを定義する場合には注意すること.
+\end{itemize}
 %</ja>
 %<*en>
-\begin{cslist}
-\item[tabular\textrm{, }array\textrm{, }minipage\textrm{ environments}]
-These environments are extended by \texttt{\<dir\>}, which specifies the direction,
-as follows:
+Note that \cs{ltjnewpreset} does not ``expand'' the definition to define a preset.
+This means that one can write as the following:
 \begin{lstlisting}
-\begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
-\begin{array}<dir>[pos]{table spec}   ... \end{array}
-\begin{minipage}<dir>[pos]{width}     ... \end{minipage}
+  \ltjnewpreset{hoge}{piyo,mc-bx=HiraMinProN-W6}
+  \ltjnewpreset{piyo}{mg-m=HiraMaruProN-W4}
+  \ltjapplypreset{hoge}
 \end{lstlisting}
-This option permits one of the following five values. If none of them is specified,
-the direction inside the environment is same as that outside the enviromnent.
-\begin{description}
- \item[y] \emph{yoko} direction (horizontal writing)
- \item[t] \emph{tate} direction (vertical writing)
- \item[z] \emph{utod} direction if direction outside the env.\ is \emph{tate}.
- \item[d] \emph{dtou} direction
- \item[u] \emph{utod} direction
-\end{description}
-\item[\cs{parbox}\<<dir>\>{[<pos>]}\{<width>\}\{<contents>\}]
-\cs{parbox} command is also extended by \texttt{\<dir\>}.
-
-\item[\cs{pbox}\<<dir>\>{[<width>][<pos>]}\{<contents>\}]
-This commands typeset <contents> in LR-mode, in <dir> direction.
-If <width> is positive, the width of the box becomes this <width>.
-In this case, <contents> will be aligned \dots
-
-\item[picture\textrm{\ environment}]
-
-\item[\cs{rensuji}{[<pos>]}\{<contents>\}\textrm{, }\cs{rensujiskip}]
-
-\item[\cs{Kanji}\{<counter\_name>\}]
-
-\item[\cs{kasen}\{<contents>\}\textrm{, }\cs{bou}\{<contents>\}\textrm{,
-                    }\cs{boutenchar}]
 
-\item[参照番号]
-\end{cslist}
+\paragraph{Restrictions}
+Presets which are defined by \cs{ltjnewpreset} have following restrictions:
+\begin{itemize}
+  \item One cannot specify non-embedded fonts (such as Ryumin-Light).
+  \item Some presets, such as \texttt{ipa-hg}, have a feature that
+  fonts are changed according to whether \texttt{90jis}~or~\texttt{jis2004} is speified.
+  This feature is not usable in presets which are defined by \cs{ltjnewpreset}.
+\end{itemize}
 %</en>
 
 
-
+\clearpage
 %<en>\part{Implementations}
 %<ja>\part{実装}
 \label{part-imp}
@@ -7833,7 +8158,7 @@ for its label before the actual contents. So \dots
 %</en>
 %<*ja>
 「段落の開始」を意味するノード.
-list環境,itemize環境などにおいて,\cs{item} で始まる各項目は……
+\texttt{list}環境,\texttt{itemize}環境などにおいて,\cs{item} で始まる各項目は……
 %</ja>
 
 \item[\textit{direction}]
@@ -7849,7 +8174,7 @@ These whatsits will be removed during the process of inserting \textbf{JAglue}s.
 
 %<en>\subsection{Stack system of \LuaTeX-ja}
 %<ja>\subsection{\LuaTeX-jaのスタックシステム}
-\label{ssec-stack}
+\label{ssec:stack}
 
 %<en>\paragraph{Background}
 %<ja>\paragraph{背景}
@@ -7873,7 +8198,7 @@ source:
 \end{LTXexample}
 
 %<*en>
-As described in Subsection~\ref{ssec-param}, the only effective value of
+As described in Subsection~\ref{ssec:param}, the only effective value of
 \Param{kanjiskip} in an hbox is the latest value, so the value of
 \Param{kanjiskip} which applied in the entire hbox should be 5\,pt.
 However, by the implementation method of \LuaTeX, this ``5\,pt'' cannot be
@@ -7881,7 +8206,7 @@ known from any callbacks.  In the \texttt{tex/packaging.w}, which is a
 file in the source of \LuaTeX, there are the following codes:
 %</en>
 %<*ja>
-\ref{ssec-param}節で述べたように,あるhboxの中で効力を持つ
+\ref{ssec:param}節で述べたように,あるhboxの中で効力を持つ
 \Param{kanjiskip}の値は最後に現れた値のみであり,したがってボックス全体に適用される
 \Param{kanjiskip}は5\,ptであるべきである.しかし,\LuaTeX の実
 装を観察すると,この5\,ptという長さはどのコールバックからも知ることはできないことがわかる.
@@ -8178,7 +8503,7 @@ function luatexja.unary_pars.hoge (t)
 end
 \end{lstlisting}
 Here the argument of \verb+luatexja.unary_pars.hoge+ is
-the stack level of \LuaTeX-ja's stack system (see Subsection~\ref{ssec-stack}).
+the stack level of \LuaTeX-ja's stack system (see Subsection~\ref{ssec:stack}).
 
 On the other hand, for parameters that need an additional argument
 (this must be an integer), one have to define a function in
@@ -8209,7 +8534,7 @@ function luatexja.unary_pars.hoge (t)
 end
 \end{lstlisting}
 を実行すると,\verb+\ltjgetparameter{hoge}+ は \texttt{42} という\emph{文字列}を返す.
-関数 \verb+luatexja.unary_pars.hoge+ の引数$t$は,\ref{ssec-stack}節で述べた
+関数 \verb+luatexja.unary_pars.hoge+ の引数$t$は,\ref{ssec:stack}節で述べた
 \LuaTeX-jaのスタックシステムにおけるスタックレベルである.
 戻り値はいかなる値であっても,最終的には文字列として出力されることに注意.
 
@@ -8521,6 +8846,8 @@ u
 
 \def\OA{$\text{\sf O}_{\text{\sf A}}$}
 \def\OB{$\text{\sf O}_{\text{\sf B}}$}
+\def\NA{$\text{\sf N}_{\text{\sf A}}$}
+\def\NB{$\text{\sf N}_{\text{\sf B}}$}
 \begin{defn}
 %<*en>
 A \emph{cluster} is consecutive nodes in one of the following forms,
@@ -8715,7 +9042,7 @@ JFMグルーの挿入が行われない(\Param{xkanjiskip},~\Param{kanjiskip}
 \item[欧文] リスト中に直接/hboxの中身として出現している「\textbf{JAchar}以外の文字」.次の3つの場合が該当:
 \begin{itemize}
 \item \textit{id}が\textit{id\_glyph}である.
-\item \textit{id}が\textit{id\_math}である.
+\item \textit{id}ã\81\8c\textit{id\_math}ã\81§ã\81\82ã\82\8bï¼\88ã\81¤ã\81¾ã\82\8aã\81\93ã\81®ã\82¯ã\83©ã\82¹ã\82¿ã\81¯1ã\81¤ã\81®æ\96\87中æ\95°å¼\8fã\82\92ã\81ªã\81\99ï¼\89ï¼\8e
 \item \textit{id}が\textit{id\_pbox}か\textit{id\_hlist}か\textit{id\_disc}であって,$\mathit{Np}.\mathit{head}$が\textbf{ALchar}.
 \end{itemize}
 \item[箱] box,またはそれに類似するもの.次の2つが該当:
@@ -8771,7 +9098,7 @@ $g$は「文字コード \texttt{'boxbdd'} の文字」と\textit{Np}の間に
 \Param{kcatcode}の最下位ビットはこの\Param{jcharwidowpenalty}用にのみ利用される.}.
 
 \subsection{概観と典型例:2つの「和文A」の場合}
-\label{ssec-cluster-wa}
+\label{ssec:cluster-wa}
 先に述べたように,2つの隣り合ったクラスタ,\textit{Nq}と\textit{Np}の間には,
 ペナルティ,\cs{vadjust},whatsitなど,行組版には関係しないものがある.模式的に表すと,
 \[
@@ -8937,7 +9264,7 @@ $a$は禁則処理用に\textit{Nq}と\textit{Np}の間に加えられるべき
 \sf 和文A&
 \gkf{E}{M→K}{PN}&
 \gkf{---}{\OA →K}{PN}&
-\gkf{---}{\OA →X}{PN}&
+\gkf{---}{\NA →X}{PN}&
 \gkf{---}{\OA}{PA}&
 \gkf{---}{\OA}{PN}&
 \gkf{---}{\OA}{PS}\\
@@ -8946,7 +9273,7 @@ $a$は禁則処理用に\textit{Nq}と\textit{Np}の間に加えられるべき
 \gkf{---}{K}{PS}&
 \gkf{---}{X}{PS}\\
 \sf 欧文&
-\gkf{E}{\OB →X}{PA}&
+\gkf{E}{\NB →X}{PA}&
 \gkf{---}{X}{PS}\cr
 \sf 箱&\gkf{E}{\OB}{PA}\\
 \sf glue&\gkf{E}{\OB}{PN}\\
@@ -8997,21 +9324,29 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K]
 \paragraph{和文Aと欧文の間}
 \textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{欧文}の場合,JFMグルー挿入処理は次のようにして行われる.
 \begin{itemize}
-\item 「右空白」については,まず以下に述べる\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる.
+\item 「右空白」については,まず以下に述べる\textsf{欧文境界B~[\NB]}により空白を決定しようと試みる.
 それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
 %\item 「左空白」については,既に述べた\textsf{line-end~[E]}をそのまま採用する.それに伴う「右空白」の補正も%同じ.
 \item 禁則用ペナルティも,以前述べた\textsf{P-normal~[PN]}と同じである.
 \end{itemize}
 \begin{description}
-\item[Boundary-B~{[\OB]}] \textbf{JAchar}と「\textbf{JAchar}でないもの」との間に入る空白を以下によって求め,
-未定義でなければそれを「右空白」として採用する.
-\textsf{JFM-origin~[M]}の変種と考えて良い.
-これによって定まる空白の典型例は,和文の閉じ括弧と欧文文字の間に入る半角アキである.
+\item[欧文境界B~{[\NB]}] 以下で求めた量を「右空白」として採用する.
+この処理は\textsf{JFM-origin~[M]}の変種と考えて良く,
+典型例は「和文の閉じ括弧と欧文文字の間に入る半角アキ」である.
 \begin{enumerate}
 \item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合%
-(証としてwhatsitノードが自動挿入される),「右空白」は未定義.
+(証としてwhatsitノードが自動挿入される),未定義.
 \item そうでなければ,
-\textit{Nq}と「文字コードが {\tt'jcharbdd'} の文字」との間に入るグルー/カーンとして定まる.
+\textit{Nq}と「文字コードが$x$の文字」との間に入るグルー/カーンとする.
+この$x$は次の場合分けによる:
+  \begin{itemize}
+    \item $\mathit{Np}.\mathit{id}$が\textit{id\_math}のとき(つまりクラスタ\textit{Np}が文中数式を表す)
+    ときは,$x=-1$.
+    \item \textit{Np}の中身の中身の文字コードについて,「直前への\Param{xkanjiskip}の挿入」が禁止されている
+(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが偶数)ときは,
+    $x=\text{\texttt{'nox\_alchar'}}$.
+    \item 以上のいずれでもないときは,$x=\text{\texttt{'alchar'}}$.
+  \end{itemize}
 \end{enumerate}
 \item[\Param{xkanjiskip}~{[X]}]
 この段階では,\textsf{\Param{kanjiskip}~[K]}のときと同じように,
@@ -9035,22 +9370,29 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K]
 
 \paragraph{欧文と和文Aの間}
 \textit{Nq}が\textsf{欧文}で,\textit{Np}が\textsf{和文A}の場合,JFMグルー挿入処理は上の場合とほぼ同じである.
-\textsf{和文A}のクラスタが逆になるので,\textsf{Boundary-A~[\OA]}の部分が変わるだけ
+\textsf{和文A}のクラスタが逆になるので,\textsf{欧文境界B~[\NB]}の部分が変わるだけである
 \begin{itemize}
-\item 「右空白」については,まず以下に述べる\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる.
+\item 「右空白」については,まず以下に述べる\textsf{欧文境界A~[\OA]}により空白を決定しようと試みる.
 それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
 %\item \textit{Nq}が和文でないので,「左空白」は算出されない.
 \item 禁則用ペナルティは,以前述べた\textsf{P-normal~[PN]}と同じである.
 \end{itemize}
 \begin{description}
-\item[Boundary-A~{[\OA]}] 「\textbf{JAchar}でないもの」と\textbf{JAchar}との間に入る空白を以下によって求め,
-未定義でなければそれを「右空白」として採用する.
-\textsf{JFM-origin~[M]}の変種と考えて良い.
-これによって定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである.
+\item[欧文境界A~{[\NA]}] これは\textsf{欧文境界B~[\NB]}で\textit{Np}と\textit{Nq}の役割が
+  交換されたものと思えば良い.
+  この処理で定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである.
 \begin{enumerate}
-\item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合(証としてwhatsitノードが自動挿入される),次へ.
+\item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合(証としてwhatsitノードが自動挿入される),
+  未定義.
 \item そうでなければ,
-「文字コードが {\tt'jcharbdd'} の文字」と\textit{Np}との間に入るグルー/カーンとして定まる.
+「文字コードが$x$の文字」と\textit{Np}との間に入るグルー/カーンと定める.
+$x$は\textit{Nq}から\textsf{欧文境界B~[\NB]}におけるそれと同じ方法で定めるが,
+\texttt{'nox\_alchar'}か\texttt{'alchar'}は
+\begin{quote}
+  \textit{Nq}の中身の文字コードについて,「直後への\Param{xkanjiskip}の挿入」が禁止されている
+(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが2以上).
+\end{quote}
+  か否かで判断する.
 \end{enumerate}
 \end{description}
 
@@ -9058,9 +9400,8 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K]
 \textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{箱}・グルー・カーンのいずれかであった場合,
 両者の間に挿入されるJFMグルーについては同じ処理である.しかし,そこでの行分割に対する仕様が異なるので,
 ペナルティの挿入処理は若干異なったものとなっている.
-
 \begin{itemize}
-\item 「右空白」については,既に述べた\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる.
+\item 「右空白」については,以下に述べる\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる.
 それが失敗した場合は,「右空白」は挿入されない.
 %\item 「左空白」については,既に述べた\textsf{line-end~[E]}の算出方法をそのまま採用する.それに伴う「右空白」の補正も同じ.
 \item 禁則用ペナルティの処理は,後ろのクラスタ\textit{Np}の種類によって異なる.
@@ -9083,6 +9424,12 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K]
 \end{itemize}
 
 \begin{description}
+\item[Boundary-B~{[\OB]}] この処理は\textsf{欧文境界B~[\NB]}と同様であり,
+  $x$が次によって決まることのみが異なる:
+  \begin{itemize}
+    \item \textit{Np}がグルーやカーンのときは,$x=\text{\texttt{'glue'}}$.
+    \item そうでない(\textit{Np}が\textsf{箱})ときは,$x=\text{\texttt{'jcharbdd'}}$.
+  \end{itemize}
 \item[P-allow~{[PA]}]
 \textit{Nq}と\textit{Np}の間の(a)部分にペナルティがあれば,\textsf{P-normal~[PN]}と同様に,
 それらの各ノードにおいてペナルティ値を$a$だけ増加させる.
@@ -9111,7 +9458,7 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K]
 すぐ上の(\textit{Nq}と\textit{Np}の順序が逆になっている)場合と同じである.
 %が,「左空白」がなくなることにのみ注意.
 \begin{itemize}
-\item 「右空白」については,既に述べた\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる.
+\item 「右空白」については,以下に述べる\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる.
 それが失敗した場合は,「右空白」は挿入されない.
 %\item \textit{Nq}が和文でないので,「左空白」は算出されない.
 \item 禁則用ペナルティの処理は,\textit{Nq}の種類によって異なる.
@@ -9126,12 +9473,21 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので,
 \end{description}
 \end{itemize}
 
+\begin{description}
+\item[Boundary-A~{[\OA]}] この処理は\textsf{欧文境界A~[\NA]}と同様であり,
+  $x$が次によって決まることのみが異なる:
+  \begin{itemize}
+    \item \textit{Nq}がグルーやカーンのときは,$x=\text{\texttt{'glue'}}$.
+    \item そうでない(\textit{Nq}が\textsf{箱})ときは,$x=\text{\texttt{'jcharbdd'}}$.
+  \end{itemize}
+\end{description}
+
 \paragraph{和文Aと和文Bの違い}
 先に述べたように,\textsf{和文B}はhboxの中身の先頭(or 末尾)として出現している
 \textbf{JAchar}である.リスト内に直接ノードとして現れている\textbf{JAchar}(\textsf{和文A})との違いは,
 \begin{itemize}
 \item \textsf{和文B}に対しては,JFMの文字クラス指定から定まる空白
-\textsf{JFM-origin~[M]},\textsf{Boundary-A~[\OA]},\textsf{Boundary-B~[\OB]})の挿入は行われない.
+(\textsf{JFM由来[M]},\textsf{Boundary-A~[\OA]}など)の挿入は行われない.
 %「左空白」の算出も行われない.
 例えば,
 \begin{itemize}
@@ -9154,12 +9510,12 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので,
 あ.A
 \end{LTXexample}
 \begin{itemize}
-\item 1行目の\cs{inhibitglue}は\textsf{Boundary-B~[\OB]}の処理のみを抑止するので,ピリオドと「A」の間には
+\item 1行目の\cs{inhibitglue}は\textsf{欧文境界B~[\NB]}の処理のみを抑止するので,ピリオドと「A」の間には
 \Param{xkanjiskip}(四分アキ)が入ることに注意.
 \item 2行目のピリオドと「A」の間においては,前者が\textsf{和文B}となる(hboxの中身の末尾として登場しているから)ので,
-そもそも\textsf{Boundary-B~[\OB]}の処理は行われない.よって,\Param{xkanjiskip}が入ることとなる.
+そもそも\textsf{欧文境界B~[\NB]}の処理は行われない.よって,\Param{xkanjiskip}が入ることとなる.
 \item 3行目では,ピリオドの属するクラスタは\textsf{和文A}である.これによって,
-ピリオドと「A」の間には\textsf{Boundary-B~[\OB]}由来の半角アキが入ることになる.
+ピリオドと「A」の間には\textsf{欧文境界B~[\NB]}由来の半角アキが入ることになる.
 \end{itemize}
 %</ja>
 
@@ -9341,7 +9697,7 @@ variation selectors are ``combined'' with the previous character.
 \texttt{vsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
 \begin{itemize}
  \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
-もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は,
+もしもIVSサポート(\ref{ssec:ltjotf}節)が有効になっていた場合は,
 以下の例(左側は入力,右側はその出力)のようになる.
 %</ja>
 \begin{LTXexample}
@@ -9626,7 +9982,7 @@ the \texttt{lstlisting} environment or other environments/commands.
 \begin{itemize}
 \item \textbf{JAglue}ではないグルー
 \item JFMグルー(優先度\footnote{%
-  \ref{ssec-jfm-str}節にあるように,
+  \ref{ssec:jfm-str}節にあるように,
   各JFMグルーには$-4$から3までの優先度がついている.場合によっては
   伸びと縮みで異なる優先度が付いているかもしれない.}%
 別にまとめられる)