%</ja>
\usepackage{amsmath,array,tikz,pict2e,multienum,float}
-\usepackage{booktabs,multicol}
+\usepackage{booktabs,multicol,luatexja-ruby}
%%%%%%%% listings
\usepackage{luatexja-otf}
%<ja>\usepackage{lmodern}
\directlua{luatexja.otf.enable_ivs()}
+\usepackage[match]{luatexja-fontspec}
\usepackage[kozuka-pr6n]{luatexja-preset}
+\setmonojfont{KozGoPr6N-Regular.otf}
%<*ja>
\def\emph#1{\textbf{\textgt{#1}}}
\def\headfont{\normalfont\bfseries\gtfamily}
\setmathfont{xits-math.otf}
\frenchspacing
%</en>
-\DeclareRobustCommand\ttfamily
- {\not@math@alphabet\ttfamily\mathtt
- \romanfamily\ttdefault\ttjfam\selectfont}
-\newjfontfamily\ttjfam{KozGoPr6N-Regular.otf}
-
%%%%%%%% logo
\usepackage{metalogo}
\parindent=0pt\def\makelabel##1{{\tt\textbackslash ##1}}
\def\{{\char`\{}\def\}{\char`\}}
\let\origitem=\item
- \def\item[##1]{\par\smallskip\par\hskip-\leftskip\makelabel{##1}\par}
+ \def\item[##1]{\par\smallskip\par\hskip-\leftskip\makelabel{##1}\par\nobreak}
\@totalleftmargin\leftskip
}{\par%
%<en>\medskip
\catcode`\<=13
\def<#1>{{\normalfont\rm\itshape$\langle$#1\/$\rangle$}}
+\let\LARG=<
\maketitle
\tableofcontents
パッケージやクラスを表す.
%</ja>
%<*en>
-\item In this document, natural numbers start from~0.
+\item In this document, natural numbers start from~zero.
+ $\omega$ denotes the set of all natural numbers.
%</en>
%<*ja>
-\item 本ドキュメントでは,自然数は0から始まる.
+\item 本ドキュメントでは,自然数は0から始まる.自然数全体の集合は$\omega$と表記する.
%</ja>
\end{itemize}
%<en>\subsection{Installation}
%<ja>\subsection{インストール}
-%<en>To install the \LuaTeX-ja\ package, you will need:
+%<en>To install the \LuaTeX-ja\ package, you will need the following engine and packages:
%<ja>\LuaTeX-jaパッケージのインストールには,次のものが必要である.
\begin{itemize}
\item \LuaTeX\ beta-0.74.0 (or later)
\item \Pkg{luaotfload} v2.2 (or later)
-\item \Pkg{luatexbase} v0.6
+\item \Pkg{luatexbase} v0.6 (or later)
+\item \Pkg{everysel} v1.2 (or later)
\item \Pkg{xunicode} v0.981~(2011/09/09)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
\end{itemize}
\item W32\TeX\ (in \texttt{luatexja.tar.xz})
\end{itemize}
-If you are using \TeX~Live~2013, you can install \LuaTeX-ja
+If you are using \TeX~Live~2014, you can install \LuaTeX-ja
from \TeX~Live manager (\texttt{tlmgr}):
\begin{verbatim}
$ tlmgr install luatexja
\item W32\TeX\ (\texttt{luatexja.tar.xz})
\end{itemize}
-例えば\TeX~Live~2013を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
+例えば\TeX~Live~2014を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
使ってインストールすることができる.
\begin{verbatim}
$ tlmgr install luatexja
日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった
欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい.
現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses}
-ï¼\88奥æ\9d\91æ\99´å½¦æ°\8fã\81«ã\82\88ã\82\8bã\82¯ã\83©ã\82¹ã\83\95ã\82¡ã\82¤ã\83«)に対応するものとして,\Pkg{ltjclasses},
+ï¼\88奥æ\9d\91æ\99´å½¦æ°\8fã\81«ã\82\88ã\82\8bã\80\8c\pLaTeXe æ\96°ã\83\89ã\82ã\83¥ã\83¡ã\83³ã\83\88ã\82¯ã\83©ã\82¹ã\80\8d)に対応するものとして,\Pkg{ltjclasses},
\Pkg{ltjsclasses}がそれぞれ用意されている.
%</ja>
%<ja>\section{フォントの変更}
\subsection{plain \TeX~and~\LaTeXe}
-\label{ssub-chgfnt}
+\label{ssec-chgfnt}
\paragraph{plain \TeX}
%<*en>
alphabetic fonts to \texttt{T1}.
\verb+\fontfamily+ also changes the current Japanese font family,
the current alphabetic font family, \emph{or both}.
- For the detail, see Subsection~\ref{ssub-nfsspat}.
+ For the detail, see Subsection~\ref{ssec-nfsspat}.
%</en>
%<*ja>
ここで,\verb+\fontencoding{+<encoding>\verb+}+ は,引数により和文側か欧文
\texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を
\texttt{T1}へと変更する.\verb+\fontfamily+ も引数により和文側,欧文
側,\emph{あるいは両方}のフォントファミリを変更する.詳細は
- \ref{ssub-nfsspat}節を参照すること.
+ \ref{ssec-nfsspat}節を参照すること.
%</ja>
%<*en>
\item 和文フォントのシェイプを定義するには,通常の \verb+\DeclareFontShape+ を使えば良い:
%</ja>
\begin{verbatim}
-\DeclareFontShape{JY3}{mc}{bx}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis}{}
+\DeclareFontShape{JY3}{mc}{bx}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis;-kern}{}
% Kozuka Mincho Pr6N Bold
\end{verbatim}
%<*ja>
仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は
\ref{ssec-altfont}節の \verb+\ltjdeclarealtfont+ と,その\LaTeX 版の\
-\verb+\DeclareAlternateKanjiFont+(\ref{ssub-nfsspat}節)を参照せよ.
+\verb+\DeclareAlternateKanjiFont+(\ref{ssec-nfsspat}節)を参照せよ.
%</ja>
\end{itemize}
\label{ssec-fontspec}
%<*en>
To coexist with the \Pkg{fontspec} package, it is needed to load
-\Pkg{luatexja-fontspec} package in the preamble. This additional
-package automatically loads \Pkg{luatexja} and \Pkg{fontspec}
+\Pkg{luatexja-fontspec} package in the preamble, as follows:
+\begin{quote}
+\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
+\end{quote}
+This \Pkg{luatexja-fontspec} package
+automatically loads \Pkg{luatexja} and \Pkg{fontspec}
package, if needed.
%</en>
%<*ja>
-\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いるためには,
-\Pkg{luatexja-fontspec}パッケージをプリアンブルで読み込む必要がある.このパッケージ
+\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合,
+\Pkg{luatexja-fontspec}パッケージを読み込む:
+\begin{quote}
+\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
+\end{quote}
+このパッケージ
は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む.
%</ja>
\Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec}
パッケージの元のコマンドに対応するものとして定義している:
%</ja>
-
%<*en>
\begin{center}\small
\begin{tabular}{ccccc}
\toprule
Japanese fonts
-&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\
+&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\setmonojfont+$^*$\\
alphabetic fonts
-&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\
+&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\setmonofont+\\
\midrule
Japanese fonts
-&\verb+\newjfontface+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
+&\verb+\newjfontfamily+&\verb+\newjfontface+
+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
alphabetic fonts
-&\verb+\newfontface+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
+&\verb+\newfontfamily+&\verb+\newfontface+
+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
\bottomrule
\end{tabular}
\end{center}
\end{tabular}
\end{center}
%</ja>
+%<*en>
+The package option of \Pkg{luatexja-fontspec} are the followings:
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+ \item[match] If this option is specified, usual family-changing commands such as
+\verb+\rmfamily+,~\verb+\textrm+, \verb+\sffamily+,~\dots\ also change Japanese font family.
+
+Note that \emph{\texttt{\textup{\textbackslash setmonojfont}} is defined
+if and only if this \texttt{\textup{match}} option is specified}.
+
+ \item[pass=<opts>]
+Specify options <opts> which will be passed to the \Pkg{fontspec} package.
+\end{list}
+The reason that \verb+\setmonojfont+ is not defined by default is that
+it is popular for Japanese fonts that nearly all Japanese glyphs have same
+widths. Also note that kerning information in a font is not used
+(that is, \texttt{kern} feature is set off) by default in these seven (or~eight) commands.
+This is because of the compatibility with previous versions of \LuaTeX-ja
+(see \ref{para-kern}).
+%</en>
+%<*ja>
+\Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである:
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+ \item[match] このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
+\verb+\rmfamily+, \verb+\textrm{...}+, \verb+\sffamily+ 等が
+欧文フォントだけでなく和文フォントも変更するようになる.
+
+\emph{なお,{\tt \textbackslash setmonojfont} はこの \texttt{match} オプションが
+指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する.
+
+ \item[pass=<opts>]
+\Pkg{fontspec} パッケージに渡すオプション <opts> を指定する.
+\end{list}
+標準で \verb+\setmonojfont+ コマンドが定義されないのは,
+和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる.
+また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
+言い換えれば \texttt{kern} featureは標準では無効化となっている.
+これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照).
+%</ja>
+
\begin{LTXexample}[width=0.4\textwidth]
\fontspec[Numbers=OldStyle]{LMSans10-Regular}
\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular}
JIS~X~0208:1990→辻
\end{LTXexample}
-%<*en>
-Note that there is no command named \verb+\setmonojfont+, since it is
-popular for Japanese fonts that nearly all Japanese glyphs have same
-widths. Also note that the kerning feature is set off by default in
-these seven commands, since this feature and \textbf{JAglue} will clash (see
-\ref{para-kern}).
-%</en>
-%<*ja>
-和文フォントについては全ての和文文字のグリフがほぼ等幅であるのが普通であるため,
-\verb+\setmonojfont+ コマンドは存在しないことに注意.また,これらの和文用の7つのコマ
-ンドではKerning featureはデフォルトではoffとなっている.これはこの
-featureが\textbf{JAglue}と衝突するためである(\ref{para-kern}節を参照).
-%</ja>
-
%<en>\subsection{Presets}
%<ja>\subsection{プリセット設定}
\label{ssec-preset}
%<*en>
To use standard Japanese font settings easily, one can load \Pkg{luatexja-preset}
package with several options. This package provides functions in a part of
-\Pkg{otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato,
+\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato,
and loads \Pkg{luatexja-fontspec}, hence \Pkg{fontspec} internally.
If you need to pass some options to \Pkg{fontspec}, load \Pkg{fontspec} manually
\midrule
%<en>\textit{rounded gothic}
%<ja>\gt 丸ゴシック
-&&A-OTF-Jun101Pro-Light.otf&A-OTF-Jun101Pr6N-Light.otf\\
+&&A-OTF-Jun101Pro-Light.otf&A-OTF-ShinMGoPr6N-Light.otf\\
\bottomrule
\end{tabular}
\end{center}
%<*en>
-\subsection{\texttt{\textbackslash CID}, \texttt{\textbackslash UTF}, and macros in \Pkg{otf} package}
-Under \pLaTeX, \Pkg{otf} package (developed by Shuzaburo Saito) is
+\subsection{\texttt{\textbackslash CID}, \texttt{\textbackslash 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 \Pkg{otf} package.
+supports some of functions in \Pkg{japanese-otf} package.
If you want to use these functions, load \Pkg{luatexja-otf} package.
%</en>
%<*ja>
これら3オプションについては,
\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか,
-あるいは対応する内容を\ref{ssub-chgfnt}節 (NFSS2) や
+あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や
\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
%</ja>
\end{verbatim}
%<*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 a \textbf{ALchar}'', and positive integer $+n$ means
-that ``\dots\ is a \textbf{JAchar}''.
+Negative integer $-n$ in the list means that ``each character in the range~$n$ is an
+\textbf{ALchar}'',
+and positive integer $+n$ meansthat ``\dots\ is a \textbf{JAchar}''.
%</en>
%<*ja>
\textsf{jacharrange}パラメータの引数は非零の整数のリストである.
\ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt},
xkanjiskip={0.25\zw plus 1pt minus 1pt}}
\end{lstlisting}
-
%<*en>
+Here \verb+\zw+ is a internal dimension
+which stores fullwidth of the current Japanese font.
+This \verb+\zw+ can be used as the unit \texttt{zw} in \pTeX.
+
It may occur that JFM contains the data of ``ideal width of
\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}''
and/or ``ideal width of \Param{\hyperlink{fld:xks}{xkanjiskip}}''.
\Param{\hyperlink{fld:xks}{xkanjiskip}} to \verb+\maxdimen+.
%</en>
%<*ja>
+ここで,\verb+\zw+ は現在の和文フォントの全角幅を表す長さであり,
+\pTeX における長さ単位 \texttt{zw} と同じように使用できる.
+
JFMは「望ましい\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の値」や
「望ましい\Param{\hyperlink{fld:xks}{xkanjiskip}}の値」を持っていることがある.
これらのデータを使うためには,\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}や%
%<*en>
There is an interesting side-effect: characters in different size can be
-vertically aligned center in a line, by setting two parameters appropriately.
+``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>
この機能には面白い使い方がある:2つのパラメータを適切に設定することで,サイズの
-異なる文字を中心線に揃えることができる.
+異なる文字を「中心線」に揃えることができる.
以下は一つの例である(値はあまり調整されていないことに注意):
%</ja>
\begin{LTXexample}
}abcかな
\end{LTXexample}
+%<*en>
+Note that setting a positive value to \Param{yalbaselineshift} does not
+increase the depth of \textbf{ALchar}, as shown below.
+This is because \Param{yalbaselineshift} is implemented by setting \verb+xoffset+
+field of a glyph node, and this does not increase the depth of the glyph.
+This problem does not apply for \Param{yjabaselineshift}, since
+\Param{yjabaselineshift} uses a different implementation method.
+%</en>
+%<*ja>
+なお,\Param{yalbaselineshift}パラメータに正の値を指定しても,
+下の例のように\textbf{ALchar}の深さは増加しないことに注意.
+\Param{yjabaselineshift}パラメータは別の方法を使って実装しているので,
+このような問題は起こらない.
+%</ja>
+\begin{LTXexample}[width=.3\textwidth]
+\leavevmode\fboxsep=0pt
+ \ltjsetparameter{yjabaselineshift=0pt,
+ yalbaselineshift=0pt}
+\vrule width 105pt height 0.4pt depth 0pt \hskip-95pt
+\fbox{\ltjsetparameter{yalbaselineshift=10pt}あいうxyz}
+\fbox{\ltjsetparameter{yalbaselineshift=-10pt}あいうxyz}\\
+\vrule width 105pt height 0.4pt depth 0pt \hskip-95pt
+\fbox{\ltjsetparameter{yjabaselineshift=10pt}あいうxyz}
+\fbox{\ltjsetparameter{yjabaselineshift=-10pt}あいうxyz}
+\end{LTXexample}
+
+
%<*ja>
\paragraph{数式における挙動:\pTeX との違い}
\small
\caption{\texttt{\textbackslash kcatcode} in \upTeX}
\label{table-kcat}
-\medskip
+%<en>\medskip
\noindent\hfill
\begin{tabular}{ccccc}
and \LuaTeX-ja can control these four kinds separately:
\begin{itemize}
\item
-\emph{Distinction between\textbf{JAchar} or \textbf{ALchar}}
+\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}}
is controlled by using the character range, see Subsection~\ref{ssec-setrange}.
\item
\emph{Whether the character can be used in a control word}
\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{table-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 column&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
+%<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\\
\end{tabular}\qquad
\begin{tabular}{cccccc}
\toprule
-%<en>&\bf row&\bf column&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
+%<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 FF0F&1&31&N&N&Y\\
指定する必要がある:
%</ja>
+
+\begin{table}[t]
+%<en>\caption{Differences between JFMs shipped with \LuaTeX-ja}
+%<ja>\caption{\LuaTeX-ja に同梱されている JFM の違い}
+%<en>\medskip
+\label{tab-difjfm}
+\ltjsetparameter{jacharrange={+3}}
+\centering\small
+\def\r#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
+\setbox0=\vtop{\hsize=7\zw\noindent ◆◆◆◆◆◆◆
+ある日モモちゃんがお使いで迷子になって泣きました.}\copy0
+\vrule height 0pt depth \dp0}}
+\def\s#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
+\setbox0=\vtop{\hsize=7\zw\noindent ちょっと!何}\copy0}}
+\def\t#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 19.24432pt \g
+\setbox0=\hbox{漢}%
+\vrule width 0.4pt height\ht0 depth\dp0\kern-.2pt\copy0
+\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}}
+\begin{tabular}{rccc}
+\toprule
+&\tt jfm-ujis.lua&\tt jfm-jis.lua&\tt jfm-min.lua\\
+\midrule
+%<en>Example~1\cite{min10}
+%<ja>例1\cite{min10}
+&\r{ujis}&\r{jis}&\r{min}\\
+%<en>Example~2
+%<ja>例2
+&\s{ujis}&\s{jis}&\s{min}\\
+Bounding Box&\t{ujis}&\t{jis}&\t{min}\\
+\bottomrule
+\end{tabular}
+\ltjsetparameter{jacharrange={-3}}
+\end{table}
+
+
\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
\item[jfm=<name>]
%<*en>
%</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}では横長の長方形状である.
+ \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. There
- are notable difference between this JFM and other 2~JFMs, as
- shown in Table~\ref{tab-difjfm}.
+ of the default Japanese font metric shipped with \pTeX.
%</en>
-%<*ja>
+%<*ja>
\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM
- である \verb+min10.tfm+ に相当するJFMである.このJFMと他の2つのJFMの間には
- 表\ref{tab-difjfm}に示すような特筆すべき違いがある.
+ である \verb+min10.tfm+ に相当する.
%</ja>
\end{description}
-
%<*en>
-\item[jfmvar=<string>] Sometimes there is a need that \ldots.
+The difference among these three~JFMs is shown in Table~\ref{tab-difjfm}.
%</en>
%<*ja>
-\item[jfmvar=<string>] 標準では,JFMとサイズが同じで,
- 実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
-下の例において,最初の「)」と「【」の実フォントは異なるが,
-JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
-
-しかし,時には……
-
+これら3つのJFMの違いは表\ref{tab-difjfm}に示した.
%</ja>
+
+\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}
-\end{list}
-
-\begin{table}[t]
-%<en>\caption{Differences between JFMs shipped with \LuaTeX-ja}
-%<ja>\caption{\LuaTeX-ja に同梱されている JFM の違い}
-\label{tab-difjfm}
-\ltjsetparameter{jacharrange={+3}}
-\centering\small
-\def\r#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
-\setbox0=\vtop{\hsize=7\zw\noindent ◆◆◆◆◆◆◆
-ある日モモちゃんがお使いで迷子になって泣きました.}\copy0
-\vrule height 0pt depth \dp0}}
-\def\s#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
-\setbox0=\vtop{\hsize=7\zw\noindent ちょっと!何}\copy0}}
-\def\t#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 19.24432pt \g
-\setbox0=\hbox{漢}%
-\vrule width 0.4pt height\ht0 depth\dp0\kern-.2pt\copy0
-\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}}
-\begin{tabular}{rccc}
-\toprule
-&\tt jfm-ujis.lua&\tt jfm-jis.lua&\tt jfm-min.lua\\
-\midrule
-%<en>Example~1\cite{min10}
-%<ja>例1\cite{min10}
-&\r{ujis}&\r{jis}&\r{min}\\
-%<en>Example~2
-%<ja>例2
-&\s{ujis}&\s{jis}&\s{min}\\
-Bounding Box&\t{ujis}&\t{jis}&\t{min}\\
-\bottomrule
-\end{tabular}
-\ltjsetparameter{jacharrange={-3}}
-\end{table}
+\caption{Example of \texttt{jfmvar} key}
+\label{fig:jfmvar}
+\end{figure}
-%<en>\paragraph{Note: \texttt{kern} feature}
-%<ja>\paragraph{注意:\texttt{kern} feature}
-\label{para-kern}
%<*en>
-Some fonts have information for inter-glyph spacing. However, this
-information is not well-compatible with \LuaTeX-ja. More concretely,
-this kerning space from this information are inserted \emph{before} the
-insertion process of \textbf{JAglue}, and this causes incorrect spacing
-between two characters when both a glue/kern from the data in the font
-and it from JFM are present.
-%</en>
-%<*ja>
-いくつかのフォントはグリフ間のスペースについての情報を持っている.しかし,
-この情報は\LuaTeX-ja とはあまり相性がよくない.具体的には,この情報に基づいて挿入
-されるカーニングスペースは\textbf{JAglue}の挿入過程の\textbf{前に}挿入され,
-JFMに基づくグルー/カーンも挿入される場合には2文字間の意図しないスペースの原因と
-なる.
-%</ja>
-\begin{itemize}
-%<*en>
-\item You should specify \texttt{-kern} in
- \verb+jfont+ when you want to use other font features,
- such as \texttt{script=...}\,.
+\item[jfmvar=<string>] Sometimes there is a need that \ldots.
%</en>
%<*ja>
-\item \texttt{script=...}といったfeatureを使いたい場合には,\verb+\jfont+
- に\texttt{-kern}を指定するべきである.
+\item[jfmvar=<string>] 標準では,JFMとサイズが同じで,
+ 実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
+図\ref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが,
+JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
+
+しかし,JFMとサイズが同じであっても,\texttt{jfmvar} キーの異なる
+2つの和文フォント,例えば図\ref{fig:jfmvar}で言う \verb+\F+ と \verb+\H+,
+は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て,
+かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば,
+\pTeX と似た状況で組版されることになる.
%</ja>
+\end{list}
+
+\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}
+
+%<en>\paragraph{Using kerning information in a font}
+%<ja>\paragraph{ペアカーニング情報の使用}
+\label{para-kern}
%<*en>
-\item If you want to use Japanese fonts in proportional width, and use
- information from this font, use \texttt{jfm-prop.lua} for its JFM, and\,\ldots.
+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 Figure~\ref{fig:kern-jfm} for detail.
+
+Note that in \verb+\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>
-\item もしプロポーショナル幅の和文フォントをそのフォントの情報に基づいて使いたい
- ならば,\texttt{jfm-prop.lua}をJFMとして指定し,……
-%</ja>
-TODO: kanjiskip?
+いくつかのフォントはグリフ間のスペースについての情報を持っている.
+このカーニング情報は以前の\LuaTeX-ja とはあまり相性が良くなかったが,
+本バージョンではカーニングによる空白はイタリック補正と同様に扱うことになっている.
+つまり,カーニング由来の空白とJFM由来のグルー・カーンは同時に入りうる.
+図\ref{fig:kern-jfm}を参照.
+\begin{itemize}
+ \item \emph{\texttt{\textbackslash jfont} や,
+NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では
+カーニング情報は標準で使用する}ことになっているようである.
+言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
+\begin{verbatim}
+\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
+\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
+\end{verbatim}
+のように,\texttt{-kern} という指定を自分で追架しなければいけない.
+ \item
+一方,\emph{\Pkg{luatexja-fontspec} の提供する \texttt{\textbackslash setmainjfont}\
+などの命令の標準設定ではカーニング情報は使用しない}(\texttt{Kerning=Off})
+ことになっている.これは以前のバージョンの\LuaTeX-jaとの互換性のためである.
\end{itemize}
-
+%</ja>
%<*ja>
\paragraph{\texttt{extend}と\texttt{slant}}
letter-spacing and the width of italic correction are not correct:
%</en>
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\E=file:KozMinPr6N-Regular.otf:extend=1.5;jfm=ujis
+\jfont\E=file:KozMinPr6N-Regular.otf:extend=1.5;jfm=ujis;-kern
\E あいうえお
-\jfont\S=file:KozMinPr6N-Regular.otf:slant=1;jfm=ujis
+\jfont\S=file:KozMinPr6N-Regular.otf:slant=1;jfm=ujis;-kern
\S あいう\/ABC
\end{LTXexample}
-
%<en>\subsection{Prefix \texttt{psft}}
%<ja>\subsection{\texttt{psft}プリフィックス}
\label{ssec-psft}
``GothicBBB-Medium''.
\emph{OpenType font features, such as ``{\tt +jp90}'',
-have no meaning in name-only fonts using this ``{\tt psft:}''\ prefix.
-This is because we can't expect what fonts are actually used by the PDF reader.}
+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>
Specifythe 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.
-But there is one exception: if \texttt{'prop'} is specified in \texttt{width} field, width of a character becomes that of its ``real'' glyph.
+
+But there is one exception: \texttt{width} field can be \texttt{'prop'}.
+This means that width of a character becomes that of its ``real'' glyph.
%</en>
%<*ja>
文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する.
文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
値であるものとして扱われる.
-しかし,例外が一つある:もし \texttt{'prop'} が \texttt{width} フィールドに
-指定された場合,文字の幅はその「実際の」グリフの幅となる.
+
+例外として,\emph{\texttt{width} フィールドには数値以外に \texttt{'prop'} が指定可能である}.
+この場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用
+ すれば,これによってプロポーショナル組を行うことができる.
%</ja>
\item[left=<length>, down=<length>, align=<align>]\
\medskip
\caption{%
-%<en>The position of the real glyph.
-%<ja>「実際の」グリフの位置.
+%<en>The position of the real glyph
+%<ja>「実際の」グリフの位置
}
\label{fig-pos}
\end{figure}
\end{itemize}
%</ja>
%<*en>
+\
+
Specifies the width of kern or glue which will be inserted
between characters in character class~$i$ and those in character class~$j$.
(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to shretch,
and is also easy to shrink.
-<ratio> is \dots
+<ratio> is also an optional value between $-1$ and 1. For example,
+Thw 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
+\[
+ -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13.
+\]
%</en>
% ToDo: English version.
%<*en>
-\ldots
+See Japanese version of this manual.
%</en>
%<*ja>
%<en>\caption{Commands for Japanese math fonts}
%<ja>\caption{和文数式フォントに対する命令}
\label{tab-math}
+%<en>\medskip
\centering
\def\{{\char`\{}\def\}{\char`\}}\small
\begin{tabular}{ll}
%<ja>\subsection{コールバック}
%<*en>
-Like \LuaTeX\ itself, \LuaTeX-ja also has callbacks. These callbacks can
+\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>
%<en>\item[\texttt{luatexja.define\_jfont} callback]
%<ja>\item[\texttt{luatexja.define\_jfont}コールバック]
%<*en>
-This callback and the next callback form a pair, and you can assign letters which don't 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.
+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\_jfont} callback is called just when new Japanese font is loaded.
%</en>
%<*ja>
このコールバックと次のコールバックは組をなしており,Unicode中に固定された文字コード
%<*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.
+ down/left the character in a scaled point.
%</en>
%<*ja>
引数 \verb+shift_info+ と戻り値の \verb+new_shift_info+ は
\texttt{down}と\texttt{left}のフィールドを持ち,これらの値は
-文字の下/左へのシフト量(スケールド・ポイント単位)である.
+文字の下/左へのシフト量(sp単位)である.
%</ja>
%<*en>
to prevent a line ends with this character.
\pTeX\ has following restrictions on \verb+\prebreakpenalty+ and \verb+\postbreakpenalty+,
but they don't exist in \LuaTeX-ja:
-\dots
+\begin{itemize}
+ \item Both \verb+\prebreakpenalty+ and \verb+\postbreakpenalty+ cannot be set
+for the same character.
+ \item We can set \verb+\prebreakpenalty+ and \verb+\postbreakpenalty+ up to 256~characters.
+\end{itemize}
%</en>
\item[\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
\end{itemize}
+\subsection{\texttt{\textbackslash ltjsetkanjiskip}, \texttt{\textbackslash ltjsetxkanjiskip}}
+%<*ja>
+\verb+\ltjsetparameter+ と \verb+\ltjglobalsetparameter+ は,引数が常にkey-valueリストであ
+るため,一回の実行に時間がかかるという難点がある.特にクラス \Pkg{ltjsclasses} においては,
+フォントサイズの設定(\verb+\@setfontsize+)ごとに毎回
+\Param{kanjiskip}と\Param{xkanjiskip}が設定されるため,
+それによる速度低下が顕著なものとなっていた.
+
+これを解決するため,より内部に近い命令として\
+\verb+\ltjsetkanjiskip{+<skip>\verb+}+ と\\
+\verb+\ltjsetxkanjiskip{+<skip>\verb+}+\ を
+用意した.これらの実行の前には,\TeX の \verb+\globaldefs+ の値を反映させるために\
+\verb+\ltj@setpar@global+\ の実行を必要とし,
+\begin{lstlisting}
+\ltj@setpar@global
+\ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
+\ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+\end{lstlisting}
+と
+\begin{lstlisting}
+\ltjsetparemeter{%
+ kanjiskip=0pt plus .1\zw minus .01\zw,
+ xkanjiskip=0.25em plus 0.15em minus 0.06em}
+\end{lstlisting}
+は同じ意味を持つ.
+%</ja>
+%<*en>
+\verb+\ltjsetparameter+ and \verb+\ltjglobalsetparameter+ are slow,
+since their argument is a key-value list.
+This can be a problem in \Pkg{ltjsclasses}, because
+\Param{kanjiskip} and \Param{xkanjiskip} are set in every font resizing commands
+(\verb+\@setfontsize+). To overcome this problem,
+this version of \LuaTeX-ja provides two more internal commands, namely
+\verb+\ltjsetkanjiskip{+<skip>\verb+}+ and \verb+\ltjsetxkanjiskip{+<skip>\verb+}+.
+
+Note that \verb+\ltj@setpar@global+ command is needed before these two commands
+to reflect \TeX's internal parameter \verb+\globaldefs+.
+\begin{lstlisting}
+\ltj@setpar@global
+\ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
+\ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+\end{lstlisting}
+and
+\begin{lstlisting}
+\ltjsetparemeter{%
+ kanjiskip=0pt plus .1\zw minus .01\zw,
+ xkanjiskip=0.25em plus 0.15em minus 0.06em}
+\end{lstlisting}
+have the same meaning.
+%</en>
ある.
%</ja>
-\begin{LTXexample}
+\begin{LTXexample}[width=0.4\textwidth]
\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
\fbox{\hbox{あウあ\inhibitglue ウ}}
\inhibitglue\par\noindent あ1
\end{verbatim}
does
\begin{quote}
-If the current Japanese font is \verb+\hoge+, \texttt{U+3000}-\texttt{U+30FF}
+If the current Japanese font is \verb+\hoge+, \texttt{U+3000}--\texttt{U+30FF}
and characters in class~1 (ideographic opening brackets)
are typeset by \verb+\piyo+.
\end{quote}
\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
\end{verbatim}
は「\verb+\hoge+ を利用しているとき,
-\texttt{U+3000}-\texttt{U+30FF}と
+\texttt{U+3000}--\texttt{U+30FF}と
文字クラス1(開き括弧類)中の文字だけは \verb+\piyo+ を用いる」
ことを設定する.\verb+{-1}-{-1}+ という変わった指定の仕方をしているのは,
普通に \texttt{-1} と指定したのでは正しく$-1$と読み取られないという
%<en>\subsection{Patch for NFSS2}
%<ja>\subsection{NFSS2へのパッチ}
-\label{ssub-nfsspat}
+\label{ssec-nfsspat}
\begin{figure}[!tb]
-\begin{lstlisting}[numberstyle=\tiny, numbers=left, numbersep=1em]
-\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*IPAexMincho:jfm=ujis}{}
-\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*IPAexMincho:jfm=ujis;color=007F00}{}
-\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*IPAexMincho: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{lstlisting}
-\begin{quote}
+\begin{LTXexample}[pos=b]
\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis}{}
+\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{quote}
+\end{LTXexample}
%<ja>\caption{\texttt{\textbackslash DeclareAlternateKanjiFont} の使用例}
%<en>\caption{An example of \texttt{\textbackslash DeclareAlternateKanjiFont}}
\label{fig:altkanji}
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{ssub-chgfnt}.
+commands which are not described in Subsection~\ref{ssec-chgfnt}.
%</en>
%<*ja>
\LuaTeX-jaのNFSS2への日本語パッチは
\pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに,
和文エンコーディングの管理等をLuaで書きなおしたものである.
-ここでは\ref{ssub-chgfnt}節で述べていなかった命令について
+ここでは\ref{ssec-chgfnt}節で述べていなかった命令について
記述しておく.
%</ja>
\begin{cslist}%
+\par\smallskip\par\hskip-\leftskip{\bfseries%
+%<ja>追加の長さ変数達
+%<en>additonal dimensions
+}\par\nobreak
+
+%<*en>
+Like \pLaTeXe, \LuaTeX-ja defines the following dimensions
+for information of current Japanese font:
+%</en>
+%<*ja>
+\pLaTeXe と同様に,\LuaTeX-jaは「現在の和文フォントの情報」を格納する長さ変数
+%</ja>
+{\let\item=\origitem
+\begin{quote}
+ \verb+\cht+~(height), \verb+\cdp+~(depth), \verb+\cHT+~(sum of former two),\\
+ \verb+\cwd+~(width), \verb+\cvs+~(lineskip), \verb+\chs+~(equals to \verb+\cwd+)
+\end{quote}}
+%<en>and its \verb+\normalsize+ version:
+%<ja>と,その \verb+\normalsize+ 版である
+{\let\item=\origitem
+\begin{quote}
+ \verb+\Cht+~(height), \verb+\Cdp+~(depth),
+ \verb+\Cwd+~(width), \\\verb+\Cvs+~(equals to \verb+\baselineskip+),
+ \verb+\Chs+~(equals to \verb+\cwd+)%
+%<en>.
+\end{quote}}
+%<*ja>
+を定義している.なお,\verb+\cwd+ と \verb+\zw+,また
+\verb+\cHT+ と \verb+\zh+ は一致しない可能性がある.なぜなら,
+\verb+\cwd+,~\verb+\cHT+ は「あ」の寸法から決定されるのに対し,
+\verb+\zw+ と \verb+\zh+ はJFMに指定された値に過ぎないからである.
+%</ja>
+%<*en>
+Note that \verb+\cwd+~and~\verb+\cHT+ may differ from \verb+\zw+~and~\verb+\zh+
+respectively.
+On the one hand the former dimensions are determined from the character ``あ'',
+but on the other hand \verb+\zw+~and~\verb+\zh+ are specified by JFM.
+%</en>
+
+
\item[DeclareYokoKanjiEncoding\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
%<*en>
The above 3~commands are just the counterparts for \verb+\DeclareFontEncodingDefaults+ and~others.
%</en>
%<*ja>
-上記3つのコマンドはちょうど \verb+DeclareFontEncodingDefaults+ などに対応するものである.
+上記3つのコマンドはちょうど \verb+\DeclareFontEncodingDefaults+ などに対応するものである.
%</ja>
\item[reDeclareMathAlphabet\{<unified-cmd>\}\{<al-cmd>\}\{<ja-cmd>\}]
\item <al-cmd>,~<ja-cmd>は既に定義されていなければならない.
\verb+\reDeclareMathAlphabet+\\の後に
両命令の内容を再定義しても,<unified-cmd>の内容にそれは反映されない.
-\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと\texttt{@}をつけた命令を指定した時の動作は保証できない.
+\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない.
\end{itemize}}
%</ja>
-\item[DeclareRelationFont\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\
+\item[DeclareRelationFont\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\*
\null\hfill\{<al-encoding>\}\{<al-family>\}\{<al-series>\}\{<al-shape>\}]
%<*en>
This command sets the ``accompanied'' alphabetic font family (given by the latter 4~arguments)
Like \verb+\fontfamily+, \verb+\selectfont+ is required to take an effect.
%</en>
%<*ja>
-現在の欧文フォントエンコーディング/ファミリ/…… を,
+ç\8f¾å\9c¨ã\81®æ¬§æ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81®ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°ï¼\8fã\83\95ã\82¡ã\83\9fã\83ªï¼\8fâ\80¦â\80¦ ã\82\92ï¼\8c
\verb+\DeclareRelationFont+ か \verb+\SetRelationFont+ で指定された
現在の和文フォントファミリに対応する「従属欧文」フォントファミリに変更する.
\verb+\fontfamily+ のように,有効にするためには \verb+\selectfont+ が必要である.
%</ja>
\item[adjustbaseline]
-\ldots
+%<*en>
+In \pLaTeXe, \verb+\adjustbaseline+ sets \verb+\tbaselineshift+
+to match the vertical center of ``M'' and that of ``あ'' in vertical typesetting:
+\[
+\text{\ttfamily \textbackslash 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.
+
+Current \LuaTeX-ja does not support vertical typesetting, so
+this \verb+\adjustbaseline+ has almost no effect.
+%</en>
+%<*ja>
+\pLaTeXe では,\verb+\adjustbaseline+ は縦書時に「M」と「あ」の中心線を一致させるために,
+\verb+\tbaselineshift+ を設定する役割を持っていた:
+\[
+\text{\ttfamily \textbackslash 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は縦書きをサポートしていないので,この \verb+\adjustbaseline+ は
+ほとんど何もしていない.
+%</ja>
\item[fontfamily\{<family>\}]
%<*en>
\item[DeclareAlternateKanjiFont\{<base-encoding>\}\{<base-family>\}\{<base-series>\}\{<base-shape>\}\\
\null\hfill\{<alt-encoding>\}\{<alt-family>\}\{<alt-series>\}\{<alt-shape>\}\{<range>\}]
%<*ja>
-\ref{ssec-altfont}節の
+\ref{ssec-altfont}節の\
\verb+\ltjdeclarealtfont+ と同様に,前半の4引数の和文フォント(基底フォント)のうち<range>中の文字を
第5--第8引数の和文フォントを使って組むように指示する.使用例を図\ref{fig:altkanji}に載せた.
\userelfont\selectfont あいうabc
\end{LTXexample}
-%<en>\section{Extensions}
-%<ja>\section{拡張}
+%<*en>
+\section{Addons}
+\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 \verb+\input+.
+%</en>
+%<*ja>
+\section{拡張}
+\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している.
+これらは\LaTeX のパッケージとして制作しているが,
+\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\
+\verb+\input+ で読み込み可能である.
+%</ja>
\subsection{\texttt{luatexja-fontspec.sty}}
-
+\label{ssec-fontspec2}
%<*en>
As described in Subsection~\ref{ssec-fontspec}, this optional package
provides the counterparts for several commands defined in the
\item[JFM-var=<name>] \
%<*en>
-These 3 font features correspond to \texttt{cid}, \texttt{jfm} and
+These 3 keys correspond to \texttt{cid}, \texttt{jfm} and
\texttt{jfmvar} keys for \verb+\jfont+ respectively.
\texttt{CID} is effective only when with \texttt{NoEmbed}
described below.
\item[NoEmbed]
%<*en>
-By specifying this font feature, one can use ``name-only'' Japanese font which
+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>
+
+
+\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>
+As \verb+\ltjdeclarealtfont+~(Subsection~\ref{ssec-altfont}) and
+\verb+\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}節の \verb+\ltjdeclarealtfont+ や,
+\ref{ssec-nfsspat}節の \verb+\DeclareAlternateKanjiFont+ と同様に,
+このキーを用いると一部の文字を異なったフォントやfont featureを使って組むことができる.
+\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 demonstrartion is shown in Figure~\ref{fig:altkanji-fontspec}.
+%</en>
+%<*ja>
+各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは
+単純に無視される).
+指定例は図\ref{fig:altkanji-fontspec}に示した.
+%</ja>
\end{list}
%<*ja>
%</ja>
-
\subsection{\texttt{luatexja-otf.sty}}
\label{ssec-ltjotf}
%<*en>
This optional package supports typesetting characters in
-Adobe-Japan1. the package \Pkg{luatexja-otf} offers the following 2~low-level
+Adobe-Japan1 character collection
+(or other CID character collecton, if the font is supported).
+The package \Pkg{luatexja-otf} offers the following 2~low-level
commands:
%</en>
%<*ja>
-この追加パッケージはAdobe-Japan1の文字の出力をサポートする.
+この追加パッケージはAdobe-Japan1(フォント自身が持っていれば,
+別のCID文字セットでも可)の文字の出力をサポートする.
\Pkg{luatexja-otf}は以下の2つの低レベルコマンドを提供する:
%</ja>
\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
%</ja>
\end{list}
+%<*ja>
+このパッケージは,\texttt{ajmacros.sty}(\Pkg{otf}パッケージ付属のマクロ集,井上浩一氏作)から
+漢字コードをUTF8にしたり,plain \LuaTeX でも利用可能するという
+修正を加えた \texttt{luatexja-ajmacros.sty} も自動的に読み込む.
+そのため,マクロ集にある \verb+\aj半角+ などのマクロもそのまま使用可能である.
+%</ja>
+
%<en>\paragraph{Remarks}
%<ja>\paragraph{注意}
%<*en>
%</ja>
\end{itemize}
-
%<en>\paragraph{Additional syntax of JFM}
%<ja>\paragraph{JFMへの記法の追加}
%<*en>
-...
+(see Japanese version of this manual)
%</en>
%<*ja>
\pTeX では,行長調整において優先度の概念が存在しなかったため,図
\item[\textbackslash ltjenableadjust]
優先順位付きの行長調整を有効化する.
-\item[\textsf{adjust}=<bool>] \verb+\ltjsetparameter+ で指定可能な追加パラメータであり,
+\item[\textsf{adjust}\,=<bool>] \verb+\ltjsetparameter+ で指定可能な追加パラメータであり,
<bool>が\textit{true}なら \verb+\ltjenableadjust+ を,
そうでなければ \verb+\ltjdisableadjust+ を実行する.
-
-
\end{list}
+%</ja>
+\subsection{\texttt{luatexja-ruby.sty}}
+%<*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の機能を利用したルビ(振り仮名)の組版機能を提供する.
+前後の文字種に応じた前後への自動進入や,
+行頭形・行中形・行末形の自動的な使い分けが特徴である.
+ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は
+使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている.
+この節では簡単な使用方法のみ述べる.
+%</ja>
+\begin{description}
+%<*en>
+ \item[Group-ruby]
+By default, ruby characters (the second argument of \verb+\ruby+)
+are attached to base characters (the first argument), as one object.
+This type of ruby is called \emph{group-ruby}.
+%</en>
+%<*ja>
+ \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字,
+第2引数にルビを記述する.
+%</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> この例のように,標準では前後の平仮名にルビ全角までかかるようになっている.
+%<*en>
+\item[Mono-ruby]
+To attach ruby characters to each base characters (\emph{mono-ruby}),
+one should use \verb+\ruby+ multiple times:
+%</en>
+%<*ja>
+ \item[モノルビ] 親文字を1文字にするとモノルビとなる.
+2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも
+その数だけ \verb+\ruby+ を書く必要がある.
+%</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は……
+\end{LTXexample}
+%<*en>
+ \item[Jukugo-ruby]
+Vertical bar~\verb+|+ denotes a boundary of \emph{groups}.
+%</en>
+%<*ja>
+ \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し,
+複数グループのルビは熟語ルビとして組まれる.
+\cite{x4051}にあるように,
+どのグループでも「親文字」が対応するルビ以上の長さの場合は
+各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる.
+\cite{jlreq}で規定されている組み方とは異なるので注意.
+%</ja>
+\begin{LTXexample}
+\ruby{妙|典}{みよう|でん}\
+\ruby{葛|西}{か|さい}\
+\ruby{神楽|坂}{かぐら|ざか}
+\end{LTXexample}
+%<*en>
+If there are multiple groups in one \verb+\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}
+
+%<*en>
+If the width of ruby characters are longer than that of base characters,
+\verb+\ruby+ automatically selects the appropriate form
+among the line-head form, the line-middle form, and the line-end form.
+%</en>
+%<*ja>
+また,ルビ文字のほうが親文字よりも長い場合は,自動的に
+行頭形・行中形・行末形のいずれか適切なものを選択する.
%</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}
+
+
+
\dim{ltj@zw}
%<*en>
A temporal register for the ``full-width'' of current Japanese font.
+The command \verb+\zw+ sets this register to the correct value, and
+``return'' this register itself.
%</en>
%<*ja>
現在の和文フォントの「全角幅」を保持する一時レジスタ.
+\verb+\zw+ 命令は,このレジスタを適切な値に設定した後,
+「このレジスタ自体を返す」.
%</ja>
\dim{ltj@zh}
%<*en>
A temporal register for the ``full-height'' (usually the sum of height of imaginary body and its depth) of current Japanese font.
+The command \verb+\zh+ sets this register to the correct value, and
+``return'' this register itself.
%</en>
%<*ja>
現在の和文フォントの「全角高さ」(通常,高さと深さの和)を保持する一時レジスタ.
+\verb+\zh+ 命令は,このレジスタを適切な値に設定した後,
+「このレジスタ自体を返す」.
%</ja>
\attr{jfam}
\begin{description}
\item[\textit{italic} (1)]
%<*en>
-Glues from an italic correction
- (\verb+\/+). This distinction of origins of glues
- (from explicit \verb+\kern+, or from \verb+\/+)
- is needed in the insertion process of \Param{\hyperlink{fld:xks}{xkanjiskip}}.
+Kerns from italic correction (\verb+\/+), or from kerning information of a Japanese font.
+These kerns are ``ignored'' in the insertion process of \textbf{JAglue},
+unlike explicit \verb+\kern+.
%</en>
%<*ja>
-イタリック補正(\verb+\/+)によるグルー.このグルーの由来の区別(\verb+\kern+ か
-\hskip\ltjgetparameter{xkanjiskip}
-\verb+\/+ か)は\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入過程において必要になる.
+イタリック補正(\verb+\/+)によるカーン,
+または \Pkg{luaotfload} によって挿入されたフォントのカーニング情報由来のカーン.
+これらのカーンは通常の \verb+\kern+ とは異なり,
+\textbf{JAglue}の挿入処理においては透過する.
%</ja>
\item[\textit{packed} (2)]
Penalties inserted for the word-wrapping process (\emph{kinsoku shori}) of Japanese characters.
%</en>
%<ja>禁則処理のために挿入されたペナルティ.
-\item[$(\textit{from\_jfm}-2)$--$(\textit{from\_jfm}+2)$~(4--8)]
+\item[\mathversion{bold}$(\textit{from\_jfm}-2)$--$(\textit{from\_jfm}+2)$~(4--8)]
%<en>Glues/kerns from JFM.
%<ja>JFM由来のグルー/カーン.
\item[\textit{kanji\_skip}~(9), \textit{kanji\_skip\_jfm}~(10)]
例えば,
\begin{verbatim}
-\jfont\foo=psft:Ryumin-Light:jfm=ujis
-\jfont\bar=psft:GothicBBB-Medium:jfm=ujis
-\jfont\baz=psft:GothicBBB-Medium:jfm=ujis;jfmvar=piyo
+\jfont\foo=psft:Ryumin-Light:jfm=ujis;-kern
+\jfont\bar=psft:GothicBBB-Medium:jfm=ujis;-kern
+\jfont\baz=psft:GothicBBB-Medium:jfm=ujis;jfmvar=piyo;-kern
\end{verbatim}
という3フォントを考え,
\[
%<en>\caption{Summary of JFM glues}
%<ja>\caption{JFM グルーの概要}
\label{tab-jfmglue}
+%<en>\medskip
\begin{center}
\small
\begin{tabular}{c|cccccc}
(a)部分にペナルティが存在していない場合,
\LuaTeX-ja は\textit{Nq}と\textit{Np}の間の行分割を可能にしようとする.
-そのために,以下の場合に$a$をもつ\textit{penalty\_node}を作って
+そのために,以下のいずれかの場合に$a$をもつ\textit{penalty\_node}を作って
「右空白」の(もし未定義なら\textit{Np}の)直前に挿入する:
\begin{itemize}
\item 「右空白」がグルーでない(カーンか未定義)であるとき.
-%\item 「左空白」がカーンとしてきっちり定義されている時.
+\item $a\neq 0$のときは,「右空白」がグルーであっても\textit{penalty\_node}を作る.
\end{itemize}
\item[P-suppress~{[PS]}]
例えば次のような入力を考えよう:
%</ja>
\begin{verbatim*}
-\begin{lstlisting}[escapechar=`\#]
+\begin{lstlisting}[escapechar=\#]
#\ほげ xぴよ#
\end{lstlisting}
\end{verbatim*}
しかし,\Pkg{lltjp-listings} が実際にロードされるのは \verb+\begin{document}+\
のところであるので,プリアンブル内ではこれらの追加キーは使用できない.
-\texttt{ivsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
+\texttt{vsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
\begin{itemize}
\item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は,
}}}
\lstset{vscmd=\IVSB}
\end{lstlisting}
-\end{itemize}
+\end{itemize}
+既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\
+とすれば良い.
%</ja>
%<en>\subsection{Class of Characters}
%</ja>
%<*ja>
-\section{IVS対応(未完)}
+\section{IVS対応}
\verb+luatexja.otf.enable_ivs()+ を実行し,IVS対応を有効にした状態では,
\verb+pre_linebreak_filter+ や \verb+hpack_filter+ コールバックには
次の4つが順に実行される状態となっている:
%%% to_table を使わなくしたことで,メモリ使用量は減った
IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
+
\section{複数フォントの「合成」(未完)}
\section{\LuaTeX-jaにおけるキャッシュ}
\item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})]\
Same as \texttt{save\_cache}, except that only the binary cache is updated.
-The third argument <serialized data> is not usually given.
+The third argument <serialized\_data> is not usually given.
But if this is given, it is treated as a string representation of <data>.
\item[load\_cache(<filename>, <outdate>)]
if and only if the updated cache is found.
\end{list}
%</en>
+%<*ja>
+\subsection{内部命令}
+\LuaTeX-jaにおけるキャッシュ管理は,\texttt{luatexja.base}~(\texttt{ltj-base.lua})に
+実装しており,以下の3関数が公開されている.
+ここで,<filename>は保存するキャッシュのファイル名を\emph{拡張子なしで}指定する.
+\begin{list}{}%
+{\def\makelabel#1{\ttfamily#1}}
+\item[save\_cache(<filename>, <data>)]
+nilでない<data>をキャッシュ<filename>に保存する.
+テキスト形式の<filename>\texttt{.lua}のみならず,
+そのバイナリ版も作成/更新される.
+
+\item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})]\
+
+\texttt{save\_cache}と同様だが,バイナリキャッシュのみが更新される.
+第3引数<serialized\_data>が与えられた場合,それを
+<data>の文字列化表現として使用する.
+そのため,<serialized\_data>は普通は指定しないことになるだろう.
+
+\item[load\_cache(<filename>, <outdate>)]
+キャッシュ<filename>を読み込む.
+<outdate>は1引数(キャッシュの中身)をとる関数であり,
+その戻り値は「キャッシュの更新が必要」かどうかを示すブール値でないといけない.
+
+\texttt{load\_cache}は,まずバイナリキャッシュ<filename>\texttt{.\{luc|lub\}}を
+読みこむ.もしその内容が「新しい」,つまり<outdate>の評価結果が \texttt{false} なら
+\texttt{load\_cache}はこのバイナリキャッシュの中身を返す.
+もしバイナリキャッシュが見つからなかったか,「古すぎる」ならばテキスト版
+ <filename>\texttt{.lua}を読み込み,その値を返す.
+
+以上より,\texttt{load\_cache}自体がnilでない値を返すのは,ちょうど「新しい」キャッシュが
+見つかった場合である.
+\end{list}
+%</ja>
\begin{thebibliography}{99}
\addcontentsline{toc}{section}{\refname}