X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=doc%2Fluatexja.dtx;h=ed343fefb84d78727519ec40731c93ff7280f25d;hb=ad5ab423c468a7b55785fc540c1b5e09766aed4f;hp=366d8ede1cbecf01f8ec65364bf788f7c56899d1;hpb=7098bdc2e3608c04ea4142085f3b7feaa04ae452;p=luatex-ja%2Fluatexja.git diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 366d8ed..ed343fe 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -47,7 +47,7 @@ % \usepackage{amsmath,array,tikz,pict2e,multienum,float} -\usepackage{booktabs,multicol} +\usepackage{booktabs,multicol,luatexja-ruby} %%%%%%%% listings @@ -108,7 +108,9 @@ \usepackage{luatexja-otf} %\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} @@ -121,11 +123,6 @@ \setmathfont{xits-math.otf} \frenchspacing % -\DeclareRobustCommand\ttfamily - {\not@math@alphabet\ttfamily\mathtt - \romanfamily\ttdefault\ttjfam\selectfont} -\newjfontfamily\ttjfam{KozGoPr6N-Regular.otf} - %%%%%%%% logo \usepackage{metalogo} @@ -183,6 +180,7 @@ \catcode`\<=13 \def<#1>{{\normalfont\rm\itshape$\langle$#1\/$\rangle$}} +\let\LARG=< \maketitle \tableofcontents @@ -468,10 +466,11 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. パッケージやクラスを表す. % %<*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. % %<*ja> -\item 本ドキュメントでは,自然数は0から始まる. +\item 本ドキュメントでは,自然数は0から始まる.自然数全体の集合は$\omega$と表記する. % \end{itemize} @@ -546,7 +545,7 @@ since \LuaTeX\ binary and \Pkg{luaotfload} is updated in Now \LuaTeX-ja is available from the following archive and distributions: \begin{itemize} \item CTAN (in the \texttt{macros/luatex/generic/luatexja} directory) - \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}) + \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection \item \TeX\ Live (in \texttt{texmf-dist/tex/luatex/luatexja}) \item W32\TeX\ (in \texttt{luatexja.tar.xz}) \end{itemize} @@ -677,14 +676,37 @@ Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not need % \end{enumerate} +%\subsection{Cautions} +%\subsection{注意点} + +\begin{itemize} +%<*en> +\item The encoding of your source file must be UTF-8. No other + encodings, such as EUC-JP or Shift-JIS, are not supported. +% +%<*ja> +\item 原稿のソースファイルの文字コードはUTF-8固定である. + 従来日本語の文字コードとして用いられてきたEUC-JPやShift-JISは使用できない. +% %<*en> -\paragraph{Note for MiK\TeX\ users} +\item \LuaTeX-ja is very slower than \pTeX. +Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja +about 30\% faster than \LuaTeX, but not always. +% +%<*ja> +\item \LuaTeX-jaは動作が\pTeX に比べて非常に遅い. +コードを調整して徐々に速くしているが,まだ満足できる速度ではない. +LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが, +IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある. +% +\item% +%<*en> +\textbf{Note for MiK\TeX\ users}\quad \LuaTeX-ja requires that several CMap files% \footnote{\texttt{UniJIS2004-UTF32-H} and \texttt{Adobe-Japan1-UCS2}.} must be found from \LuaTeX. Strictly speaking, those CMaps are needed only in the first run of \LuaTeX-ja after installing or updating. - But it seems that MiK\TeX\ does not satisfy this condition, so you will encounter an error like the following: % @@ -713,29 +735,6 @@ run \LuaTeX-ja in this directory, and finally delete the temporaly directory. コピーし,その中で\LuaTeX-ja の初回起動を行い,作業用ディレクトリを消す作業をしている. % -%\subsection{Cautions} -%\subsection{注意点} - -\begin{itemize} -%<*en> -\item The encoding of your source file must be UTF-8. No other - encodings, such as EUC-JP or Shift-JIS, are not supported. -% -%<*ja> -\item 原稿のソースファイルの文字コードはUTF-8固定である. - 従来日本語の文字コードとして用いられてきたEUC-JPやShift-JISは使用できない. -% -%<*en> -\item \LuaTeX-ja is very slower than \pTeX. -Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja -about 30\% faster than \LuaTeX, but not always. -% -%<*ja> -\item \LuaTeX-jaは動作が\pTeX に比べて非常に遅い. -コードを調整して徐々に速くしているが,まだ満足できる速度ではない. -LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが, -IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある. -% \end{itemize} %\subsection{Using in plain \TeX} @@ -931,7 +930,7 @@ Okumura), namely, \Pkg{ltjclasses} and \Pkg{ltjsclasses}. 日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった 欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい. 現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses} -(奥村晴彦氏によるクラスファイル)に対応するものとして,\Pkg{ltjclasses}, +(奥村晴彦氏による「\pLaTeXe 新ドキュメントクラス」)に対応するものとして,\Pkg{ltjclasses}, \Pkg{ltjsclasses}がそれぞれ用意されている. % @@ -939,7 +938,7 @@ Okumura), namely, \Pkg{ltjclasses} and \Pkg{ltjsclasses}. %\section{フォントの変更} \subsection{plain \TeX~and~\LaTeXe} -\label{ssub-chgfnt} +\label{ssec-chgfnt} \paragraph{plain \TeX} %<*en> @@ -1013,7 +1012,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\ 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}. % %<*ja> ここで,\verb+\fontencoding{+\verb+}+ は,引数により和文側か欧文 @@ -1022,7 +1021,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\ \texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を \texttt{T1}へと変更する.\verb+\fontfamily+ も引数により和文側,欧文 側,\emph{あるいは両方}のフォントファミリを変更する.詳細は - \ref{ssub-nfsspat}節を参照すること. + \ref{ssec-nfsspat}節を参照すること. % %<*en> @@ -1039,13 +1038,13 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\ \item 和文フォントのシェイプを定義するには,通常の \verb+\DeclareFontShape+ を使えば良い: % \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}節)を参照せよ. % \end{itemize} @@ -1113,13 +1112,21 @@ this chapter. For the method, please see Subsection~\ref{ssec-math}. \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[]\{luatexja-fontspec\} +\end{quote} +This \Pkg{luatexja-fontspec} package +automatically loads \Pkg{luatexja} and \Pkg{fontspec} package, if needed. % %<*ja> -\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いるためには, -\Pkg{luatexja-fontspec}パッケージをプリアンブルで読み込む必要がある.このパッケージ +\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合, +\Pkg{luatexja-fontspec}パッケージを読み込む: +\begin{quote} +\ttfamily \textbackslash usepackage[]\{luatexja-fontspec\} +\end{quote} +このパッケージ は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む. % @@ -1131,20 +1138,21 @@ counterparts of original commands in the \Pkg{fontspec} package: \Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec} パッケージの元のコマンドに対応するものとして定義している: % - %<*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} @@ -1171,6 +1179,45 @@ alphabetic fonts \end{tabular} \end{center} % +%<*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=] +Specify options 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}). +% +%<*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=] +\Pkg{fontspec} パッケージに渡すオプション を指定する. +\end{list} +標準で \verb+\setmonojfont+ コマンドが定義されないのは, +和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる. +また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない, +言い換えれば \texttt{kern} featureは標準では無効化となっている. +これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照). +% + \begin{LTXexample}[width=0.4\textwidth] \fontspec[Numbers=OldStyle]{LMSans10-Regular} \jfontspec[CJKShape=NLC]{KozMinPr6N-Regular} @@ -1180,20 +1227,6 @@ JIS~X~0213:2004→辻 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}). -% -%<*ja> -和文フォントについては全ての和文文字のグリフがほぼ等幅であるのが普通であるため, -\verb+\setmonojfont+ コマンドは存在しないことに注意.また,これらの和文用の7つのコマ -ンドではKerning featureはデフォルトではoffとなっている.これはこの -featureが\textbf{JAglue}と衝突するためである(\ref{para-kern}節を参照). -% - %\subsection{Presets} %\subsection{プリセット設定} \label{ssec-preset} @@ -1201,7 +1234,7 @@ featureが\textbf{JAglue}と衝突するためである(\ref{para-kern}節を %<*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 @@ -1422,7 +1455,7 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \midrule %\textit{rounded gothic} %\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} @@ -1572,11 +1605,11 @@ are internally specified by: %<*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. % %<*ja> @@ -1612,7 +1645,7 @@ If you want to use these functions, load \Pkg{luatexja-otf} package. これら3オプションについては, \Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか, -あるいは対応する内容を\ref{ssub-chgfnt}節 (NFSS2) や +あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や \ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある. % @@ -1690,8 +1723,9 @@ it sets \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}''. % %<*ja> \textsf{jacharrange}パラメータの引数は非零の整数のリストである. @@ -1956,8 +1990,11 @@ adopted in the whole paragraph or the whole hbox. \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}}''. @@ -1965,6 +2002,9 @@ To use these data from JFM, set the value of \Param{\hyperlink{fld:kanjiskip}{ka \Param{\hyperlink{fld:xks}{xkanjiskip}} to \verb+\maxdimen+. % %<*ja> +ここで,\verb+\zw+ は現在の和文フォントの全角幅を表す長さであり, +\pTeX における長さ単位 \texttt{zw} と同じように使用できる. + JFMは「望ましい\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の値」や 「望ましい\Param{\hyperlink{fld:xks}{xkanjiskip}}の値」を持っていることがある. これらのデータを使うためには,\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}や% @@ -2166,7 +2206,7 @@ For the detail, see Table~\ref{table-kcat}. \small \caption{\texttt{\textbackslash kcatcode} in \upTeX} \label{table-kcat} -\medskip +%\medskip \noindent\hfill \begin{tabular}{ccccc} @@ -2228,7 +2268,7 @@ 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}} +\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} @@ -2313,13 +2353,14 @@ for \LuaTeX, \emph{to match the \texttt{\textbackslash catcode} setting with tha \centering\small %\caption{Difference of the set of non-kanji JIS~X~0208 characters which can be used in a control word} %\caption{制御綴中に使用出来るJIS~X~0208非漢字の違い} +%\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 -%&\bf row&\bf column&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ +%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ %&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ \midrule \D 3000&1&1&N&N&Y\\ @@ -2344,7 +2385,7 @@ for \LuaTeX, \emph{to match the \texttt{\textbackslash catcode} setting with tha \end{tabular}\qquad \begin{tabular}{cccccc} \toprule -%&\bf row&\bf column&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ +%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ %&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ \midrule \D FF0F&1&31&N&N&Y\\ @@ -2459,6 +2500,44 @@ which JFM will be used for this font by the following keys: 指定する必要がある: % + +\begin{table}[t] +%\caption{Differences between JFMs shipped with \LuaTeX-ja} +%\caption{\LuaTeX-ja に同梱されている JFM の違い} +%\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 +%Example~1\cite{min10} +%例1\cite{min10} +&\r{ujis}&\r{jis}&\r{min}\\ +%Example~2 +%例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=] %<*en> @@ -2492,122 +2571,116 @@ JFMの名前を指定する.もし以前に指定されたJFMが読み込ま % %<*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} では「?」「!」の直後に半角空白が挿入されることである. % %<*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. % -%<*ja> +%<*ja> \item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM - である \verb+min10.tfm+ に相当するJFMである.このJFMと他の2つのJFMの間には - 表\ref{tab-difjfm}に示すような特筆すべき違いがある. + である \verb+min10.tfm+ に相当する. % \end{description} - %<*en> -\item[jfmvar=] Sometimes there is a need that \ldots. +The difference among these three~JFMs is shown in Table~\ref{tab-difjfm}. % %<*ja> -\item[jfmvar=] 標準では,JFMとサイズが同じで, - 実フォントだけが異なる2つの和文フォントは「区別されない」.例えば -下の例において,最初の「)」と「【」の実フォントは異なるが, -JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる. - -しかし,時には…… - +これら3つのJFMの違いは表\ref{tab-difjfm}に示した. % + +\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] -%\caption{Differences between JFMs shipped with \LuaTeX-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 -%Example~1\cite{min10} -%例1\cite{min10} -&\r{ujis}&\r{jis}&\r{min}\\ -%Example~2 -%例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} -%\paragraph{Note: \texttt{kern} feature} -%\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. -% -%<*ja> -いくつかのフォントはグリフ間のスペースについての情報を持っている.しかし, -この情報は\LuaTeX-ja とはあまり相性がよくない.具体的には,この情報に基づいて挿入 -されるカーニングスペースは\textbf{JAglue}の挿入過程の\textbf{前に}挿入され, -JFMに基づくグルー/カーンも挿入される場合には2文字間の意図しないスペースの原因と -なる. -% -\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=] Sometimes there is a need that \ldots. % %<*ja> -\item \texttt{script=...}といったfeatureを使いたい場合には,\verb+\jfont+ - に\texttt{-kern}を指定するべきである. +\item[jfmvar=] 標準では,JFMとサイズが同じで, + 実フォントだけが異なる2つの和文フォントは「区別されない」.例えば +図\ref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが, +JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる. + +しかし,JFMとサイズが同じであっても,\texttt{jfmvar} キーの異なる +2つの和文フォント,例えば図\ref{fig:jfmvar}で言う \verb+\F+ と \verb+\H+, +は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て, +かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば, +\pTeX と似た状況で組版されることになる. % +\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} + +%\paragraph{Using kerning information in a font} +%\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. % %<*ja> -\item もしプロポーショナル幅の和文フォントをそのフォントの情報に基づいて使いたい - ならば,\texttt{jfm-prop.lua}をJFMとして指定し,…… -% -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> \paragraph{\texttt{extend}と\texttt{slant}} @@ -2635,14 +2708,13 @@ For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, letter-spacing and the width of italic correction are not correct: % \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} - %\subsection{Prefix \texttt{psft}} %\subsection{\texttt{psft}プリフィックス} \label{ssec-psft} @@ -2656,8 +2728,8 @@ standard, non-embedded Japanese fonts, namely, ``Ryumin-Light'' and ``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. % @@ -2878,14 +2950,18 @@ This field is a list of characters which are in this character 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. % %<*ja> 文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する. 文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した 値であるものとして扱われる. -しかし,例外が一つある:もし \texttt{'prop'} が \texttt{width} フィールドに -指定された場合,文字の幅はその「実際の」グリフの幅となる. + +例外として,\emph{\texttt{width} フィールドには数値以外に \texttt{'prop'} が指定可能である}. +この場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用 + すれば,これによってプロポーショナル組を行うことができる. % \item[left=, down=, align=]\ @@ -3018,8 +3094,8 @@ Furthermore, the glyph is shifted according to values of fields \medskip \caption{% -%The position of the real glyph. -%「実際の」グリフの位置. +%The position of the real glyph +%「実際の」グリフの位置 } \label{fig-pos} \end{figure} @@ -3058,6 +3134,8 @@ Furthermore, the glyph is shifted according to values of fields \end{itemize} % %<*en> +\ + Specifies the width of kern or glue which will be inserted between characters in character class~$i$ and those in character class~$j$. @@ -3066,7 +3144,15 @@ used only in line adjustment with priority by \Pkg{luatexja-adjust} (see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to shretch, and is also easy to shrink. - is \dots + 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 to +\[ + -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13. +\] % @@ -3225,7 +3311,7 @@ The following is the list of imaginary characters: % ToDo: English version. %<*en> -\ldots +See Japanese version of this manual. % %<*ja> @@ -3315,6 +3401,7 @@ you can set both \verb+\fam+ and \verb+\jfam+ to the same value. %\caption{Commands for Japanese math fonts} %\caption{和文数式フォントに対する命令} \label{tab-math} +%\medskip \centering \def\{{\char`\{}\def\}{\char`\}}\small \begin{tabular}{ll} @@ -3334,7 +3421,7 @@ you can set both \verb+\fam+ and \verb+\jfam+ to the same value. %\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. % %<*ja> @@ -3381,11 +3468,11 @@ An example of this callback is the \texttt{ltjarticle} class, with \texttt{jfm-min.lua}中の\texttt{'parbdd'}を強制的にクラス0に割り当てている. % -%\item[\texttt{luatexja.define\_font} callback] -%\item[\texttt{luatexja.define\_font}コールバック] +%\item[\texttt{luatexja.define\_jfont} callback] +%\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 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. % %<*ja> @@ -3399,54 +3486,101 @@ function ( jfont_info, font_number) return
new_jfont_info end \end{lstlisting} - %<*en> -You may assume that \verb+jfont_info+ has the following fields: -% -%<*ja> -\verb+jfont_info+ は以下の2フィールドを持つ: -% +\verb+jfont_info+ has the following fields, +\emph{which may not overwritten by a user}: \begin{description} -\item[\tt size\_cache] -%<*ja> -使用されているJFMの情報が格納されているテーブルで, -\emph{このテーブルを書き換えてはならない}. -中身はほぼJFMファイルに書かれている唯一のテーブルであるが,次のように若干変わっている: +\item[\texttt{size}] +The font size specified at \verb+\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 \verb+\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=\{, ...\}} in the JFM will be stored in this + field as \texttt{chars=\{[]=\,$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 各文字クラス$i$に属する文字達のテーブル\ -\texttt{[$i$].chars=\{, ...\}} は,トップレベルにまとめられ, -\texttt{chars=\{[]=\,$i$, ...\}} という形になっている. -\item \texttt{zw},~\texttt{zh}, \texttt{kanjiskip},~\texttt{xkanjiskip} の各フィールドの値は, -実際に使われるフォントサイズに合わせたsp ($1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$)単位の長さに変わっている. -\item 各文字クラス$i$の情報を格納したテーブルも,\texttt{char\_type} フィールドの下にまとめられている. -例えば,文字クラス1に属する文字の高さは \texttt{char\_type[1].height} で参照できる. -\item \texttt{dir} フィールドはこのテーブルにはない. + \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'} and the default value}\\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$. + +If a kern will be inserted, the value of this field is \texttt{[$j$]=\{false, , \}}, +where 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, , , \}}, +where is also a node, and $\text{}=\textit{from\_jfm}+\text{}$. \end{itemize} -% -%<*en> -A table which contains the information of a JFM, and \emph{this table must not be changed}. -The contents of this table are similar to that which is written is the JFM file, but -the following differ: +\end{description} +% +%<*ja> +\verb+jfont_info+ は最低限以下のフィールドを持つが,これらを書き換えてはならない: +\begin{description} +\item[\texttt{size}] +実際に使われるフォントサイズ(sp単位).$1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$. +\item[\texttt{zw}, \texttt{zh}, \texttt{kanjiskip}, \texttt{xkanjiskip}] +JFMファイルで指定されているそれぞれの値をフォントサイズに合わせてスケーリングしたものを +sp単位で格納している. +\item[\texttt{jfm}] +利用されているJFMを識別するための番号. +\item[\texttt{var}] +\verb+\jfont+で指定された \texttt{jfmvar} キーの値(未指定のときは空文字列). +\item[\texttt{chars}] +文字コードから文字クラスへの対応が記述されたテーブル.\\ +JFM内の \texttt{[i].chars=\{, ...\}} という指定は\ +\texttt{chars=\{[]=\,$i$, ...\}} という形式に変換されている. +\item[\texttt{char\_type}] +$i\in\omega$に対して,\texttt{char\_type[$i$]} は文字クラス$i$の文字の寸法を格納しており, +以下のフィールドを持つ. \begin{itemize} -\item There is a \texttt{chars} table, \dots -\item The value in \texttt{zw},~\texttt{zh}, \texttt{kanjiskip},~\texttt{xkanjiskip} fields are -now scaled by real font size, and in scaled-pont unit. -\item ... -\item There is no \texttt{dir} field in this table. + \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を表すノードそのものである\footnote{% +本バージョンでは利用可能ならばノードのアクセス手法にdirect access + modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし + か見えないことに注意. +}. +glueであれば,\texttt{[$j$]=\{false, , , \}} である. +はglueの長さを表すノードそのものであり, + $\text{}=\textit{from\_jfm}+\text{}$である. \end{itemize} -% - -\item[\tt var] -%The value specified in \texttt{jfmvar=...} at a call of \verb+\jfont+. -%\verb+\jfont+ の呼び出しの際に\texttt{jfmvar=...}で指定された値. \end{description} +% %<*en> -The returned table \verb+new_jfont_info+ also should include these two fields. +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. % %<*ja> -戻り値の \verb+new_jfont_info+ テーブルもこれら2つのフィールドを含まなければならないが, +戻り値の \verb+new_jfont_info+ テーブルも上に述べたフィールドをそのまま含まなければならないが, それ以外にユーザが勝手にフィールドを付け加えることは自由である. \verb+font_number+ はフォント番号である. % @@ -3521,12 +3655,12 @@ end %<*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. % %<*ja> 引数 \verb+shift_info+ と戻り値の \verb+new_shift_info+ は \texttt{down}と\texttt{left}のフィールドを持ち,これらの値は -文字の下/左へのシフト量(スケールド・ポイント単位)である. +文字の下/左へのシフト量(sp単位)である. % %<*en> @@ -3700,7 +3834,11 @@ Set a penalty which is inserted automatically after the character , 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} % \item[\Param{jatextfont}\,=\{,\}$^\ast$] @@ -4027,7 +4165,7 @@ the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''. ある. % -\begin{LTXexample} +\begin{LTXexample}[width=0.4\textwidth] \jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g \fbox{\hbox{あウあ\inhibitglue ウ}} \inhibitglue\par\noindent あ1 @@ -4110,7 +4248,7 @@ then \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} @@ -4143,7 +4281,7 @@ are typeset by \verb+\piyo+. \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$と読み取られないという @@ -4157,30 +4295,19 @@ are typeset by \verb+\piyo+. %\subsection{Patch for NFSS2} %\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} %\caption{\texttt{\textbackslash DeclareAlternateKanjiFont} の使用例} %\caption{An example of \texttt{\textbackslash DeclareAlternateKanjiFont}} \label{fig:altkanji} @@ -4190,17 +4317,57 @@ are typeset by \verb+\piyo+. 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}. % %<*ja> \LuaTeX-jaのNFSS2への日本語パッチは \pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに, 和文エンコーディングの管理等をLuaで書きなおしたものである. -ここでは\ref{ssub-chgfnt}節で述べていなかった命令について +ここでは\ref{ssec-chgfnt}節で述べていなかった命令について 記述しておく. % \begin{cslist}% +\par\smallskip\par\hskip-\leftskip{\bfseries% +%追加の長さ変数達 +%additonal dimensions +}\par + +%<*en> +Like \pLaTeXe, \LuaTeX-ja defines the following dimensions +for information of current Japanese font: +% +%<*ja> +\pLaTeXe と同様に,\LuaTeX-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}} +%and its \verb+\normalsize+ version: +%と,その \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+)% +%. +\end{quote}} +%<*ja> +を定義している.なお,\verb+\cwd+ と \verb+\zw+,また +\verb+\cHT+ と \verb+\zh+ は一致しない可能性がある.なぜなら, +\verb+\cwd+,~\verb+\cHT+ は「あ」の寸法から決定されるのに対し, +\verb+\zw+ と \verb+\zh+ はJFMに指定された値に過ぎないからである. +% +%<*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. +% + + \item[DeclareYokoKanjiEncoding\{\}\{\}\{\}] %<*en> @@ -4228,7 +4395,7 @@ In NFSS2 under \LuaTeX-ja, distinction between alphabetic font families The above 3~commands are just the counterparts for \verb+\DeclareFontEncodingDefaults+ and~others. % %<*ja> -上記3つのコマンドはちょうど \verb+DeclareFontEncodingDefaults+ などに対応するものである. +上記3つのコマンドはちょうど \verb+\DeclareFontEncodingDefaults+ などに対応するものである. % \item[reDeclareMathAlphabet\{\}\{\}\{\}] @@ -4256,11 +4423,11 @@ The above 3~commands are just the counterparts for \verb+\DeclareFontEncodingDef \item ,~は既に定義されていなければならない. \verb+\reDeclareMathAlphabet+\\の後に 両命令の内容を再定義しても,の内容にそれは反映されない. -\item ,~に\verb+\@mathrm+などと\texttt{@}をつけた命令を指定した時の動作は保証できない. +\item ,~に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない. \end{itemize}} % -\item[DeclareRelationFont\{\}\{\}\{\}\{\}\\ +\item[DeclareRelationFont\{\}\{\}\{\}\{\}\\* \null\hfill\{\}\{\}\{\}\{\}] %<*en> This command sets the ``accompanied'' alphabetic font family (given by the latter 4~arguments) @@ -4289,14 +4456,39 @@ Change current alphabetic font encoding/family/\dots\ to the `accompanied' alpha Like \verb+\fontfamily+, \verb+\selectfont+ is required to take an effect. % %<*ja> -現在の欧文フォントエンコーディング/ファミリ/…… を, +現在の欧文フォントのエンコーディング/ファミリ/…… を, \verb+\DeclareRelationFont+ か \verb+\SetRelationFont+ で指定された 現在の和文フォントファミリに対応する「従属欧文」フォントファミリに変更する. \verb+\fontfamily+ のように,有効にするためには \verb+\selectfont+ が必要である. % \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. +% +%<*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+ は +ほとんど何もしていない. +% \item[fontfamily\{\}] %<*en> @@ -4369,7 +4561,7 @@ In this case, the default family for font substitution is used for \item[DeclareAlternateKanjiFont\{\}\{\}\{\}\{\}\\ \null\hfill\{\}\{\}\{\}\{\}\{\}] %<*ja> -\ref{ssec-altfont}節の +\ref{ssec-altfont}節の\ \verb+\ltjdeclarealtfont+ と同様に,前半の4引数の和文フォント(基底フォント)のうち中の文字を 第5--第8引数の和文フォントを使って組むように指示する.使用例を図\ref{fig:altkanji}に載せた. @@ -4432,10 +4624,22 @@ Avant Garde (OT1/pag/m/n) に変わっていることがわかる. \userelfont\selectfont あいうabc \end{LTXexample} -%\section{Extensions} -%\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+. +% +%<*ja> +\section{拡張} +\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している. +これらは\LaTeX のパッケージとして制作しているが, +\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\ +\verb+\input+ で読み込み可能である. +% \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 @@ -4458,7 +4662,7 @@ the commands of Japanese version: \item[JFM-var=] \ %<*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. @@ -4475,13 +4679,67 @@ See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details. \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}. % %<*ja> これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが できる.\ref{ssec-psft}節を参照. % + + +\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} +%\caption{\texttt{AltFont} の使用例} +%\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: +% +%<*ja> +\ref{ssec-altfont}節の \verb+\ltjdeclarealtfont+ や, +\ref{ssec-nfsspat}節の \verb+\DeclareAlternateKanjiFont+ と同様に, +このキーを用いると一部の文字を異なったフォントやfont featureを使って組むことができる. +\texttt{AltFont} に指定する値は,次のように二重のコンマ区切りリストである: +% +\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}. +% +%<*ja> +各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは +単純に無視される). +指定例は図\ref{fig:altkanji-fontspec}に示した. +% \end{list} %<*ja> @@ -4490,16 +4748,18 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}. % - \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: % %<*ja> -この追加パッケージはAdobe-Japan1の文字の出力をサポートする. +この追加パッケージはAdobe-Japan1(フォント自身が持っていれば, +別のCID文字セットでも可)の文字の出力をサポートする. \Pkg{luatexja-otf}は以下の2つの低レベルコマンドを提供する: % \begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw} @@ -4523,6 +4783,13 @@ but please remind remarks below. % \end{list} +%<*ja> +このパッケージは,\texttt{ajmacros.sty}(\Pkg{otf}パッケージ付属のマクロ集,井上浩一氏作)から +漢字コードをUTF8にしたり,plain \LuaTeX でも利用可能するという +修正を加えた \texttt{luatexja-ajmacros.sty} も自動的に読み込む. +そのため,マクロ集にある \verb+\aj半角+ などのマクロもそのまま使用可能である. +% + %\paragraph{Remarks} %\paragraph{注意} %<*en> @@ -4551,7 +4818,6 @@ ordinary characters in the following points: % \end{itemize} - %\paragraph{Additional syntax of JFM} %\paragraph{JFMへの記法の追加} @@ -4692,7 +4958,7 @@ for making the difference obvious. %<*en> -... +(see Japanese version of this manual) % %<*ja> \pTeX では,行長調整において優先度の概念が存在しなかったため,図 @@ -4723,18 +4989,116 @@ for making the difference obvious. \item[\textbackslash ltjenableadjust] 優先順位付きの行長調整を有効化する. -\item[\textsf{adjust}=] \verb+\ltjsetparameter+ で指定可能な追加パラメータであり, +\item[\textsf{adjust}\,=] \verb+\ltjsetparameter+ で指定可能な追加パラメータであり, が\textit{true}なら \verb+\ltjenableadjust+ を, そうでなければ \verb+\ltjdisableadjust+ を実行する. - - \end{list} +% +\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}.) +% +%<*ja> +この追加パッケージは,\LuaTeX-jaの機能を利用したルビ(振り仮名)の組版機能を提供する. +前後の文字種に応じた前後への自動進入や, +行頭形・行中形・行末形の自動的な使い分けが特徴である. +ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は +使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている. +この節では簡単な使用方法のみ述べる. +% +\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}. +% +%<*ja> + \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字, +第2引数にルビを記述する. +% +\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> +\item[Mono-ruby] +To attach ruby characters to each base characters (\emph{mono-ruby}), +one should use \verb+\ruby+ multiple times: +% +%<*ja> + \item[モノルビ] 親文字を1文字にするとモノルビとなる. +2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも +その数だけ \verb+\ruby+ を書く必要がある. +% +\begin{LTXexample}[width=0.3\textwidth] +東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は…… +\end{LTXexample} +%<*en> + \item[Jukugo-ruby] +Vertical bar~\verb+|+ denotes a boundary of \emph{groups}. +% +%<*ja> + \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し, +複数グループのルビは熟語ルビとして組まれる. +\cite{x4051}にあるように, +どのグループでも「親文字」が対応するルビ以上の長さの場合は +各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる. +\cite{jlreq}で規定されている組み方とは異なるので注意. +% +\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. +% +% 複数ルビではグループとグループの間で改行が可能である. +\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. +% +%<*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} + + + @@ -4787,17 +5151,25 @@ This \verb+\jH+ is the same \verb+\dimen+ register as \verb+\jQ+. \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. % %<*ja> 現在の和文フォントの「全角幅」を保持する一時レジスタ. +\verb+\zw+ 命令は,このレジスタを適切な値に設定した後, +「このレジスタ自体を返す」. % \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. % %<*ja> 現在の和文フォントの「全角高さ」(通常,高さと深さの和)を保持する一時レジスタ. +\verb+\zh+ 命令は,このレジスタを適切な値に設定した後, +「このレジスタ自体を返す」. % \attr{jfam} @@ -4867,15 +5239,15 @@ assigned to this attribute: \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+. % %<*ja> -イタリック補正(\verb+\/+)によるグルー.このグルーの由来の区別(\verb+\kern+ か -\hskip\ltjgetparameter{xkanjiskip} -\verb+\/+ か)は\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入過程において必要になる. +イタリック補正(\verb+\/+)によるカーン, +または \Pkg{luaotfload} によって挿入されたフォントのカーニング情報由来のカーン. +これらのカーンは通常の \verb+\kern+ とは異なり, +\textbf{JAglue}の挿入処理においては透過する. % \item[\textit{packed} (2)] @@ -4885,7 +5257,7 @@ Glues from an italic correction Penalties inserted for the word-wrapping process (\emph{kinsoku shori}) of Japanese characters. % %禁則処理のために挿入されたペナルティ. -\item[$(\textit{from\_jfm}-2)$--$(\textit{from\_jfm}+2)$~(4--8)] +\item[\mathversion{bold}$(\textit{from\_jfm}-2)$--$(\textit{from\_jfm}+2)$~(4--8)] %Glues/kerns from JFM. %JFM由来のグルー/カーン. \item[\textit{kanji\_skip}~(9), \textit{kanji\_skip\_jfm}~(10)] @@ -5970,9 +6342,9 @@ x+y&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{both}; 例えば, \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フォントを考え, \[ @@ -6040,6 +6412,7 @@ $a$は禁則処理用に\textit{Nq}と\textit{Np}の間に加えられるべき %\caption{Summary of JFM glues} %\caption{JFM グルーの概要} \label{tab-jfmglue} +%\medskip \begin{center} \small \begin{tabular}{c|cccccc} @@ -6365,7 +6738,7 @@ Consider the following input: 例えば次のような入力を考えよう: % \begin{verbatim*} -\begin{lstlisting}[escapechar=`\#] +\begin{lstlisting}[escapechar=\#] #\ほげ xぴよ# \end{lstlisting} \end{verbatim*} @@ -6396,7 +6769,7 @@ instead of ``\verb+\ほげ+''. しかし,\Pkg{lltjp-listings} が実際にロードされるのは \verb+\begin{document}+\ のところであるので,プリアンブル内ではこれらの追加キーは使用できない. -\texttt{ivsraw}は,ブール値の値をとるキーであり,標準ではfalseである. +\texttt{vsraw}は,ブール値の値をとるキーであり,標準ではfalseである. \begin{itemize} \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される. もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は, @@ -6428,7 +6801,9 @@ instead of ``\verb+\ほげ+''. }}} \lstset{vscmd=\IVSB} \end{lstlisting} -\end{itemize} +\end{itemize} +既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\ +とすれば良い. % %\subsection{Class of Characters} @@ -6729,7 +7104,7 @@ JFM中にある文字クラス$n$の定義の % %<*ja> -\section{IVS対応(未完)} +\section{IVS対応} \verb+luatexja.otf.enable_ivs()+ を実行し,IVS対応を有効にした状態では, \verb+pre_linebreak_filter+ や \verb+hpack_filter+ コールバックには 次の4つが順に実行される状態となっている: @@ -6773,6 +7148,7 @@ OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されて %%% to_table を使わなくしたことで,メモリ使用量は減った IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している. + \section{複数フォントの「合成」(未完)} \section{\LuaTeX-jaにおけるキャッシュ} @@ -6925,7 +7301,7 @@ are created or updated. \item[save\_cache\_luc(, {[, ]})]\ Same as \texttt{save\_cache}, except that only the binary cache is updated. -The third argument is not usually given. +The third argument is not usually given. But if this is given, it is treated as a string representation of . \item[load\_cache(, )] @@ -6943,6 +7319,40 @@ Hence, the return value of \texttt{load\_cache} is non-nil, if and only if the updated cache is found. \end{list} % +%<*ja> +\subsection{内部命令} +\LuaTeX-jaにおけるキャッシュ管理は,\texttt{luatexja.base}~(\texttt{ltj-base.lua})に +実装しており,以下の3関数が公開されている. +ここで,は保存するキャッシュのファイル名を\emph{拡張子なしで}指定する. +\begin{list}{}% +{\def\makelabel#1{\ttfamily#1}} +\item[save\_cache(, )] +nilでないをキャッシュに保存する. +テキスト形式の\texttt{.lua}のみならず, +そのバイナリ版も作成/更新される. + +\item[save\_cache\_luc(, {[, ]})]\ + +\texttt{save\_cache}と同様だが,バイナリキャッシュのみが更新される. +第3引数が与えられた場合,それを +の文字列化表現として使用する. +そのため,は普通は指定しないことになるだろう. + +\item[load\_cache(, )] +キャッシュを読み込む. +は1引数(キャッシュの中身)をとる関数であり, +その戻り値は「キャッシュの更新が必要」かどうかを示すブール値でないといけない. + +\texttt{load\_cache}は,まずバイナリキャッシュ\texttt{.\{luc|lub\}}を +読みこむ.もしその内容が「新しい」,つまりの評価結果が \texttt{false} なら +\texttt{load\_cache}はこのバイナリキャッシュの中身を返す. +もしバイナリキャッシュが見つからなかったか,「古すぎる」ならばテキスト版 + \texttt{.lua}を読み込み,その値を返す. + +以上より,\texttt{load\_cache}自体がnilでない値を返すのは,ちょうど「新しい」キャッシュが +見つかった場合である. +\end{list} +% \begin{thebibliography}{99} \addcontentsline{toc}{section}{\refname}