%<*!showexpl>
%#! lualatex -shell-escape
-
-% To typeset this manual, you need following two fonts:
-% - KozMinPr6N-Regular.otf
-% - KozGoPr6N-Medium.otf
-% - KozGoPr6N-Regular.otf
+%% KozMinPr6N-Regular.otf is needed to typeset this document.
%%%%% section ==> 章
%%%%% subsection => 節
\usepackage{luatexja-otf}
\usepackage[no-math]{fontspec}
\setmainfont[Ligatures=TeX,RawFeature=-notdef]{Linux Libertine O}
-\setmonofont[RawFeature=-notdef, Ligatures=CommonOff, CharacterVariant={31,45,61,36},
+\setmonofont[RawFeature=-notdef, Ligatures=CommonOff, %CharacterVariant={31,45,61,36},
%<en> Scale=0.8132073118633364, FakeStretch=1.183236,
%<ja> Scale=MatchLowercase, FakeStretch=1.137121,
- ItalicFont=iosevka-slab-oblique,
- BoldFont=iosevka-slab-bold, BoldItalicFont=iosevka-slab-bolditalic,
-%<en> ]{iosevka-slab-regular}
-%<ja> ]{iosevka-slab-light}
+ Contextuals=AlternateOff,
+ ItalicFont=Iosevka Term Slab Oblique,
+ BoldFont=Iosevka Term Slab Bold, BoldItalicFont=Iosevka Term Slab Bold Oblique,
+]{Iosevka Term Slab}
\setsansfont[Scale=MatchLowercase,Ligatures=TeX,RawFeature=-notdef]{Linux Biolinum O}
\usepackage[match]{luatexja-fontspec}
-\usepackage[kozuka-pr6n]{luatexja-preset}
+\usepackage[haranoaji]{luatexja-preset}
\usepackage{unicode-math}
-\setmonojfont{KozGoPr6N-Regular.otf}
+\setmonojfont{HaranoAjiGothic-Regular.otf}
\setmathfont[Scale=MatchLowercase]{XITSMath}
+\newjfontface\KOZM{KozMinPr6N-Regular.otf}
\setLaTeXa{\scshape a}
%<*ja>
basicstyle=\ttfamily\small, pos=r, breaklines=true,
numbers=none, rframe={}, basewidth=0.5em, numberstyle=\tiny, numbersep=0.5em,
explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed},
- morecomment=[l]{\%}, commentstyle=\color{green},
+ morecomment=[l]{\%}, commentstyle=\color{green}
}
% Suppress output from showexpl to stdout.
\makeatletter
\theoremstyle{definition}
%<en>\newtheorem{defn}{Definition}
%<ja>\newtheorem{defn}{定義}
+\DeclareMathOperator\nint{nint}
%%%%%%%% logo
\usepackage{metalogo}
%%%%%%%% other macros
\newlist{cslist}{description}{2}
\setlist[cslist]{%
- style=nextline,font=\bfseries\ttfamily,
+ style=nextline,font=\mdseries\ttfamily,
before*=\def\<{\char`\<}\def\>{\char`\>}\def\{{\char`\{}\def\}{\char`\}},
topsep=\medskipamount,
%<ja> leftmargin=2\zw,
#1\mathstrut\cr\noalign{\vskip1pt\hrule height.4pt\vskip1pt}%
width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr
}}}}}\,}
-
+\protected\def\+{\insertxkanjiskip late}
\makeatletter
\def\Param#1{\texorpdfstring{\@Param{#1}}{#1}} % parameter name
\protected\def\@Param#1{\eghostguarded{\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}}}
\end{lstlisting}
%<*en>
Note that \pTeX\ adds new two useful units, namely \texttt{zw}~and~\texttt{zh}.
-As shown above, they are changed by \cs{zw}~and~\cs{zh} respectively, in \LuaTeX-ja.
+As shown above, \emph{they are changed to \cs{zw}~and~\cs{zh} respectively} in \LuaTeX-ja.%
+\footnote{\LuaTeX-ja 20200127.0 introduces \cs{ltj@zw}~and~\cs{ltj@zh}, which are copy of
+ \cs{zw}~and~\cs{zh}.}
%</en>
%<*ja>
-特に注意してほしいのは,\pTeX で追加された \texttt{zw} と \texttt{zh} という単位は
-\LuaTeX-ja では使用できず,\cs{zw}, \cs{zh} と制御綴の形にしないといけないという点である.
+特に注意してほしいのは,\pTeX で追加された\texttt{zw}と\texttt{zh}という単位は
+\LuaTeX-ja では使用できず,\emph{\cs{zw}, \cs{zh} と制御綴の形にしないといけない}という点である
+\footnote{%
+ 別のパッケージやユーザが\cs{zw},~\cs{zh}を書き換えてしまうことに対応するため,
+ \LuaTeX-ja 20200127.0以降では,\cs{ltj@zw},~\cs{ltj@zh}がそれぞれ\cs{zw},~\cs{zh}の
+ コピーとして定義されている.
+}.
%</ja>
%<*en>
From version~20150906.0, characters which belongs both ISO~8859-1 and JIS~X~0208,
such as \P~and~\S, are now typeset in alphabetic fonts.
-If you are using \LaTeXe\ prior to 2017/01/01, these characters are not typeset correctly
-without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package.
%</en>
%<*ja>
\paragraph{ギリシャ文字・キリル文字とISO~8859-1の記号}
また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は
バージョン20150906.0から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では
標準でTUエンコーディングのLatin Modernフォントが使われるので,
-特に何もせずソース中にそのまま記述してもこれらの文字が出力される
-\footnote{\LaTeXe\ 2017/01/01より前では,ソース中に直接記述しても
- \Pkg{fontspec}パッケージ(および\Pkg{luatexja-fontspec}パッケージ)非読み込みの状態では出力されない.}.
+特に何もせずソース中にそのまま記述してもこれらの文字が出力される.
和文扱いで出力するには \verb+\ltjjachar`§+ のように \cs{ltjjachar} 命令
を使えばよい.
%</ja>
%<en>The following packages are needed for the \LuaTeX-ja\ package.
%<ja>\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である.
\begin{itemize}
-\item \href{http://www.luatex.org/}{\LuaTeX}\ 1.0.0 (or later)
+\item \href{http://www.luatex.org/}{\LuaTeX}\ 1.10.0 (or later)
+%<en> (DVI output (\cs{outputmode=0} is not supported.)
+%<ja> (DVI出力(\cs{outputmode=0})は対応していない.)
\item recent \href{https://github.com/latex3/luaotfload}{\Pkg{luaotfload}} (v3.1 or later recommended)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
+\item \LaTeX\ 2020-02-02 patch level 5 or later
+%<en> (if you want to use \LuaTeX-ja with \LaTeXe)
+%<ja> (\LaTeXe 下で\LuaTeX-jaを使う場合)
\item \href{https://github.com/josephwright/etoolbox/}{\Pkg{etoolbox}},
- \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
-\item \Pkg{ltxcmds}, \Pkg{pdftexcmds}, \Pkg{filehook}, \Pkg{atbegshi}
+ \Pkg{everysel}
+%<en> (if you want to use \LuaTeX-ja with \LaTeXe)
+%<ja> (\LaTeXe 下で\LuaTeX-jaを使う場合)
+\item \Pkg{ltxcmds}, \Pkg{pdftexcmds}
+\item \Pkg{filehook}, \Pkg{atbegshi}
+%<en> (not needed if you want to use \LuaTeX-ja with \LaTeXe~2020-10-01 or later)
+%<ja> (\LaTeXe 2020-10-01以降で\LuaTeX-jaを使う場合はどちらも不要)
\item \href{https://github.com/wspr/fontspec/}{\Pkg{fontspec}} v2.7c (or later)
-%<en>\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/})
-%<ja>\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})}
+%<*en>
+\item \emph{Harano Aji fonts} (\url{https://github.com/trueroad/HaranoAjiFonts})\\
+ More specifically, HaranoAjiMincho-Regular~and~HaranoAjiGothic-Medium.
+%</en>
+%<*ja>
+\item \emph{原ノ味フォント(\url{https://github.com/trueroad/HaranoAjiFonts})}\\
+\LuaTeX-jaの最低限の動作には原ノ味明朝Regular~(HaranoAjiMincho-Regular)と
+原ノ味角ゴシックMedium~(HaranoAjiGothic-Medium)があれば十分である.
+%</ja>
\end{itemize}
-
%<*en>
Now \LuaTeX-ja is available from
CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and
the following distributions:
\begin{itemize}
- \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection
- \item \href{https://www.tug.org/texlive/}{\TeX\ Live} (in \texttt{texmf-dist/tex/luatex/luatexja})
+ \item \href{https://www.tug.org/texlive/}{\TeX~Live} (in \texttt{texmf-dist/tex/luatex/luatexja})
\item \href{http://w32tex.org/}{W32\TeX}\ (in \texttt{luatexja.tar.xz})
+ \item MiK\TeX\ (in \texttt{luatexja.tar.xz})
\end{itemize}
-IPAex fonts are also available in these distributions.
+Harano Aji fonts are also available in these distributions
+(\texttt{haranoaji} in \TeX~Live and MiK\TeX, and \texttt{luatexja.tar.xz} in W32\TeX).
%</en>
%<*ja>
現在,\LuaTeX-jaはCTAN (\texttt{macros/luatex/generic/luatexja})に収録されている他,
以下のディストリビューションにも収録されている:
\begin{itemize}
\item MiK\TeX\ (\texttt{luatexja.tar.lzma})
- \item \TeX\ Live (\texttt{texmf-dist/tex/luatex/luatexja})
+ \item \TeX~Live (\texttt{texmf-dist/tex/luatex/luatexja})
\item W32\TeX\ (\texttt{luatexja.tar.xz})
\end{itemize}
-これらのディストリビューションはIPAexフォントも収録している.
-W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある.
+これらのディストリビューションは原ノ味フォントも収録している
+(\TeX~Live, MiK\TeX では\texttt{haranoaji},W32\TeX では\texttt{luatexja.tar.xz}).
%</ja>
%<*en>
-\paragraph{Using \LuaTeX-ja with LuaHB\TeX}
+\paragraph{HarfBuzz~and~\LuaTeX-ja}
Using \LuaTeX-ja with LuaHB\TeX (\LuaTeX\ integrated with
\href{https://github.com/harfbuzz/harfbuzz}{HarfBuzz}) is not well tested.
Maybe documents can typeset without an error,
by specifying \texttt{Renderer=Harfbuzz}~etc.\ (\Pkg{fontspec}) or~{mode=harf} (otherwise).
%</en>
%<*ja>
-\paragraph{LuaHB\TeX 下での\LuaTeX-jaの使用}
-現時点では,LuaHB\TeX 下での\LuaTeX-jaの使用は十分にテストされていない.
+\paragraph{HarfBuzzと\LuaTeX-ja}
+現時点では,HarfBuzzの機能を用いたときの\LuaTeX-jaの使用は十分にテストされていない.
エラーが発生せずにタイプセットできるかもしれないが,特に縦組時や
\cs{CID}などで意図しない結果となりうる可能性が大きい.
-
-特に,\texttt{Renderer=Harfbuzz}等(\Pkg{fontspec})や\texttt{mode=harf}指定(それ以外)を用いて
-\emph{和文フォントに対してHarfBuzzを用いることは推奨しない}.
+特に,\emph{\texttt{Renderer=Harfbuzz}等(\Pkg{fontspec})や\texttt{mode=harf}指定(それ以外)を通じて
+ 和文フォントに対してHarfBuzzを用いることは推奨しない}.
%</ja>
%<en>\paragraph{Manual installation}
%<*en>
\item If you downloaded this package from CTAN, you have to run following commands
- to generate classes
- and \texttt{ltj-kinsoku.lua} (the file which stores default ``\textit{kinsoku}'' parameters):
+ to generate classes:
%</en>
%<*ja>
-\item もしCTANから本パッケージを取得したのであれば,日本語用クラスファイルや
-標準の禁則処理用パラメータを
-格納した \texttt{ltj-kinsoku.lua} を生成するために,
+\item もしCTANから本パッケージを取得したのであれば,日本語用クラスファイルを生成するために,
以下を実行する必要がある:
%</ja>
\begin{lstlisting}
$ lualatex ltjclasses.ins
$ lualatex ltjsclasses.ins
$ lualatex ltjltxdoc.ins
-$ luatex ltj-kinsoku_make.tex
\end{lstlisting}
-%<*en>
-\emph{Do not forget processing \texttt{ltj-kinsoku\_make.tex}}.
-\texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} used here are not needed in regular use.
-%</en>
-%<*ja>
-\emph{最後の \texttt{ltj-kinsoku\_make.tex} の実行を忘れないように注意}.
-ここで使用した \texttt{*.\{dtx,ins\}} と \texttt{ltj-kinsoku\_make.tex} は
-通常の使用にあたっては必要ない.
-%</ja>
-
-
%<*en>
\item Copy all the contents of \texttt{src/} into one of your \texttt{TEXMF} tree.
コピーし,その中で\LuaTeX-jaの初回起動を行い,作業用ディレクトリを消す作業をしている.
%</ja>
+\item
+%<*en>
+Note that when \LuaTeX-ja is loaded in plain \LuaTeX,
+we cannot use color specification on font loading, such as
+\begin{lstlisting}
+ \font\hoge=lmroman10-regular.otf:color=FF0000 % \font primitive
+\end{lstlisting}
+This is because codes for shifting baseline in math mode (\LuaTeX-ja) collide with and prevents loading
+codes for font color (\Pkg{luaotfload}) in these environments.
+\emph{We recommend to use \LaTeX\ 2020-02-02 (or later)}, since we can avoid this collision in there.
+%</en>
+%<*ja>
+なお,\LuaTeX-jaをplain~\LuaTeX で用いる場合,
+以下のような\emph{フォント読み込み時の色指定}(\cs{textcolor}命令ではなく!)\emph{は利用できない}.
+\begin{lstlisting}
+ \font\hoge=lmroman10-regular.otf:color=FF0000 % \font primitive
+\end{lstlisting}
+これは,\LuaTeX-jaによる数式内のベースライン補正(\ref{ssec:baseline}節)のコードが
+\Pkg{luaotfload}パッケージのフォント色処理のコードと衝突するためである.
+\LaTeX\ 2020-02-02以降では衝突回避のための仕組みが備わっているので.\emph{\LaTeX\ 2020-02-02以降での使用を勧める}.
+%</ja>
\end{itemize}
%<en>\subsection{Using in plain \TeX}
\textbf{direction}&
\textbf{classification}&\textbf{font name}&\bfseries ``10\,pt''&\bfseries ``7\,pt''&\bfseries ``5\,pt''\\\midrule
\smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}&
-\emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
-&\emph{gothic}&IPAex Gothic&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
+\emph{mincho}&HaranoAjiMincho-Regular&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
+&\emph{gothic}&HaranoAjiGothic-Medium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
\midrule
\smash{\raisebox{-1ex}{\emph{tate} (vertical)}}&
-\emph{mincho}&IPAex Mincho&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
-&\emph{gothic}&IPAex Gothic&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
+\emph{mincho}&HaranoAjiMincho-Regular&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
+&\emph{gothic}&HaranoAjiGothic-Medium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
\bottomrule
\end{tabular}
\end{center}
\toprule
\emph{組方向}&\emph{字体}&\emph{フォント名}&\bfseries``10\,pt''&\bfseries``7\,pt''&\bfseries``5\,pt''\\\midrule
\smash{\raisebox{-0.7\zh}{横組}}&
-明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
-&\textgt{ゴシック体}&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
+明朝体&原ノ味明朝Regular&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
+&\textgt{ゴシック体}&原ノ味角ゴシックMedium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
\midrule
\smash{\raisebox{-0.7\zh}{縦組}}&
-明朝体&IPAex明朝&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
-&\textgt{ゴシック体}&IPAexゴシック&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
+明朝体&原ノ味明朝Regular&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
+&\textgt{ゴシック体}&原ノ味角ゴシックMedium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
\bottomrule
\end{tabular}
\end{center}
one inputs \texttt{luatexja.sty} (Subsection~\ref{ssec:cfg}).
%</en>
%<*ja>
-\item 標準和文フォントやJFMをIPAexフォントから別のものに置き換えるには,
+\item 標準和文フォントやJFMを原ノ味フォントから別のものに置き換えるには,
\cs{ltj@stdmcfont}等を\texttt{luatexja.sty}読み込み\emph{前}に定義すればよい.
\ref{ssec:cfg}節を参照.
%</ja>
\begin{center}\small
\begin{tabular}{lllc}
\toprule
-\textbf{classification}&&&\textbf{commands}\\\midrule
+\textbf{classification}&\textbf{commands}&&\textbf{family}\\\midrule
\emph{mincho} (明朝体)&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
\emph{gothic} (\textgt{ゴシック体})&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\
+(Japanese counterpart for typewriter font)&---&---&\cs{jttdefault}\\
\bottomrule
\end{tabular}
\end{center}
+ Here \cs{jttdefault} specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim}
+ environment, and its default value is \cs{mcdefault} (mincho family).%
+ \footnote{%
+ When \Pkg{ltjsclasses} classes are used, or
+ \Pkg{luatexja-fontspec} (or \Pkg{luatexja-preset}) is loaded with \texttt{match} option,
+ \cs{ttfamily} changes the current Japanese font amily to \cs{jttdefault}.
+ These classes and packages also redefine \cs{jttdefault} to
+ \cs{gtdefault} (\emph{gothic}~family).
+ } \LuaTeX-ja does not define commands to only switch current Japanese font family to
+ \cs{jttdefault}.
+
\item
By default, the following fonts are used for these two families.
\begin{center}\small
\begin{tabular}{lllll}
\toprule
\textbf{classification}&\textbf{family}&\textbf{\cs{mdseries}}&\textbf{\cs{bfseries}}&\textbf{scale}\\\midrule
-\emph{mincho} (明朝体)&\texttt{mc}&IPAexMincho&IPAexGothic&0.962216\\
-\emph{gothic} (\textgt{ゴシック体})&\texttt{gt}&IPAexGothic&IPAexGothic&0.962216\\
+\emph{mincho} (明朝体)&\texttt{mc}&HaranoAjiMincho-Regular&HaranoAjiGothic-Medium&0.962216\\
+\emph{gothic} (\textgt{ゴシック体})&\texttt{gt}&HaranoAjiGothic-Medium&HaranoAjiGothic-Medium&0.962216\\
\bottomrule
\end{tabular}
\end{center}
There is no italic nor slanted shape for these \texttt{mc}~and~\texttt{gt}.
%</en>
%<*ja>
-\item \pLaTeX ã\81¨å\90\8cæ§\98ã\81«ï¼\8cæ¨\99æº\96ã\81§ã\81¯ã\80\8cæ\98\8eæ\9c\9dä½\93ã\80\8dã\80\8cã\82´ã\82·ã\83\83ã\82¯ä½\93ã\80\8dã\81®2種é¡\9eã\82\92ç\94¨ã\81\84ã\82\8bï¼\9a
+\item \pLaTeX ã\81¨å\90\8cæ§\98ã\81«ï¼\8cæ¨\99æº\96ã\81§ã\81¯ã\80\8cæ\98\8eæ\9c\9dä½\93ã\80\8dã\80\8cã\82´ã\82·ã\83\83ã\82¯ä½\93ã\80\8dã\81®2種é¡\9eã\82\92ç\94¨ã\81\84ã\82\8bï¼\8e
\begin{center}\small
\begin{tabular}{llll}
\toprule
-\emph{字体}&&&\emph{ファミリ名}\\\midrule
+\emph{字体}&\emph{命令}&&\emph{ファミリ名}\\\midrule
明朝体&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
\textgt{ゴシック体}&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\
+(タイプライタ体と合わせる和文)&---&&\cs{jttdefault}\\
\bottomrule
\end{tabular}
\end{center}
- \newpage
+ \cs{jttdefault}は\cs{verb}や\texttt{verbatim}環境中の和文文字に使われる和文フォントファミリであり,
+ 標準値は\cs{mcdefault},つまり明朝体である
+ \footnote{%
+ \Pkg{ltjsclasses}を使用したり,また\Pkg{luatexja-fontspec}や\Pkg{luatexja-preset}パッケージを
+ \texttt{match}オプションを指定して読み込んだときは,単なる\cs{ttfamily}によっても和文フォントが
+ \cs{jttdefault}に変更される.また,これらのクラスファイルやパッケージは
+ \cs{jttdefault}を \cs{gtdefault}(ゴシック体)に再定義する.
+ }.和文フォントファミリ(のみ)を\cs{jttdefault}に切り替える命令は準備していない.
+
\item 標準では,次のフォントが用いられる:
\begin{center}\small
\begin{tabular}{lllll}
\toprule
\emph{字体}&\emph{ファミリ}&\textbf{\cs{mdseries}}&\textbf{\cs{bfseries}}&\emph{スケール}\\\midrule
-明朝体&\texttt{mc}&IPAex明朝&IPAexゴシック&0.962216\\
-\textgt{ゴシック体}&\texttt{gt}&IPAexゴシック&IPAexゴシック&0.962216\\
+明朝体&\texttt{mc}&原ノ味明朝Regular&原ノ味角ゴシックMedium&0.962216\\
+\textgt{ゴシック体}&\texttt{gt}&原ノ味角ゴシックMedium&原ノ味角ゴシックMedium&0.962216\\
\bottomrule
\end{tabular}
\end{center}
直に書くことができる(但し\autoref{para:jachar_in_math}ページの記述も参照).
その際には明朝体(\texttt{mc})で出力される.
%</ja>
-%<*en>
- \item \cs{jttdefault}%
- \footnote{%
- When \Pkg{ltjsclasses} classes are used, or
- \Pkg{luatexja-fontspec} (or \Pkg{luatexja-preset}) is loaded with \texttt{match} option,
- \cs{ttfamily} changes the current Japanese font amily to \cs{jttdefault}.
- These classes and packages also redefine \cs{jttdefault} to
- \cs{gtdefault} (\emph{gothic}~family).
- } specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim} environment.
- The default value of \cs{jttdefault} is \cs{mcdefault}, so the mincho family is used.
-%</en>
-%<*ja>
- \item \cs{verb} や \texttt{verbatim} 環境中の和文文字に使われる和文フォントファミリは
- \ \cs{jttdefault} で指定する%
- \footnote{%
- \Pkg{ltjsclasses}を使用したり,あるいは \texttt{match} オプションを指定して\Pkg{luatexja-fontspec}%
- や\Pkg{luatexja-preset}パッケージを読み込んだときは,単なる \cs{ttfamily} によっても和文フォントが
- \ \cs{jttdefault}\ に変更される.また,これらのクラスファイルやパッケージは
- \ \cs{jttdefault}\ を \cs{gtdefault}(ゴシック体)に再定義する.
- }.標準値は \cs{mcdefault},つまり明朝体として用いるのと
- 同じフォントファミリである.
-%</ja>
%<*en>
\item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif
フォントを変更する命令)の前で実行することにより使うことができる.
\pLaTeX では標準の欧文フォントはOT1エンコーディングのComputer Modern Roman (\texttt{cmr})%
- であったが,2017年以降の\LuaLaTeX ではTUエンコーディングのlatin Modern Roman (\texttt{lmr})%
+ であったが,2017年以降の\LuaLaTeX ではTUエンコーディングのLatin Modern Roman (\texttt{lmr})%
に変更されている.そのため,前段落で述べた「従属欧文」も,Latin Modern Romanに設定している.
%</ja>
%<*ja>
\LaTeX で用いる際には,\pLaTeXe\ (\texttt{plfonts.dtx})用のフォント選択機構の大部分を流用している.
%</ja>
-\begin{itemize}
-%<*en>
-\item Commands \cs{fontfamily}, \cs{fontseries}, and \cs{fontshape} can be used to change
- attributes of Japanese fonts.
-%</en>
-%<*ja>
-\item 和文フォントの属性を変更するには,\cs{fontfamily}, \cs{fontseries}, \cs{fontshape} を使用する.
- もちろん,それらを実際に反映させるには手動で \cs{selectfont} を実行する必要がある.
-%</ja>
%<*en>
\begin{center}\small
Japanese fonts
&\cs{kanjiencoding}&\cs{kanjifamily}&\cs{kanjiseries}&\cs{kanjishape}
&\cs{usekanji}\\
-both&---&--&\cs{fontseries}&\cs{fontshape}&---\\
+both&---&--&\cs{fontseries}&\cs{fontshape}$^*$&---\\
auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
\bottomrule
\end{tabular}
\begin{center}\small
\begin{tabular}{llllll}
\toprule
-&\emph{ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°}&\emph{ã\83\95ã\82¡ã\83\9fã\83ª}&\emph{ã\82·ã\83ªã\83¼ã\82º}&\emph{ã\82·ã\82§ã\83¼プ}&\emph{選択}\\\midrule
+&\emph{ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°}&\emph{ã\83\95ã\82¡ã\83\9fã\83ª}&\emph{ã\82·ã\83ªã\83¼ã\82º}&\emph{ã\82·ã\82§ã\82¤プ}&\emph{選択}\\\midrule
\emph{欧文}
&\cs{romanencoding}&\cs{romanfamily}&\cs{romanseries}&\cs{romanshape}
&\cs{useroman}\\
\emph{和文}
&\cs{kanjiencoding}&\cs{kanjifamily}&\cs{kanjiseries}&\cs{kanjishape}
&\cs{usekanji}\\
-\emph{両方}&---&--&\cs{fontseries}&\cs{fontshape}&---\\
+\emph{両方}&---&--&\cs{fontseries}&\cs{fontshape}$^*$&---\\
\emph{自動選択}&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
\bottomrule
\end{tabular}
\end{center}
%</ja>
+\begin{itemize}
+%<*en>
+\item \cs{fontfamily}, \cs{fontseries}, and~\cs{fontshape} try to change
+ attributes of Japanese fonts, as well as those of alphabetic fonts.
+ Of course, \cs{selectfont} is needed to select current text fonts.
+
+ Note that \cs{fontshape} always changes current alphabetic font shape,
+ but it does \emph{not} change current Japanese font shape if
+ the target shape is unavailable for current Japanese encoding/family/series.
+ For the detail, see Subsection~\ref{ssec:nfsspat}.
+%</en>
+%<*ja>
+\item \cs{fontfamily}, \cs{fontseries}, \cs{fontshape} は欧文・和文フォント両方の属性を変更しようとする.
+ もちろん,それらを実際に反映させるには手動で \cs{selectfont} を実行する必要がある.
+
+ なお,\cs{fontshape\{<shape>\}}は常に欧文フォントのシェイプを設定するが,
+ もしも現在の和文フォントファミリ・シリーズで要求されたシェイプが利用不能だった場合には,和文フォントのシェイプは変更しない.
+ 詳細は\ref{ssec:nfsspat}節を参照すること.
+%</ja>
+
%<*en>
- \verb+\fontencoding{+<encoding>\verb+}+ changes the encoding of alphabetic fonts
+\item \verb+\fontencoding{+<encoding>\verb+}+ changes the encoding of alphabetic fonts
or Japanese fonts depending on the argument. For example,
\verb+\fontencoding{JY3}+ changes the encoding of Japanese fonts to
\texttt{JY3}, and \verb+\fontencoding{T1}+ changes the encoding of
For the detail, see Subsection~\ref{ssec:nfsspat}.
%</en>
%<*ja>
- ここで,\verb+\fontencoding{+<encoding>\verb+}+ は,引数により和文側か欧文
+\item ここで,\cs{fontencoding\{<encoding>\}}は,引数により和文側か欧文
側かのどちらかのエンコーディングを変更する.例えば,
\verb+\fontencoding{JY3}+ は和文フォントのエンコーディングを
\texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を
\item 和文フォントのシェイプを定義するには,通常の \cs{DeclareFontShape} を使えば良い:
%</ja>
\begin{lstlisting}
-\DeclareFontShape{JY3}{mc}{bx}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis;-kern}{}
- % Kozuka Mincho Pr6N Bold
+\DeclareFontShape{JY3}{mc}{b}{n}{<-> s*HaranoAjiMincho--Bold:jfm=ujis;-kern}{}
+ % Harano Aji Mincho Bold
\end{lstlisting}
%<*ja>
仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は
\begin{tabular}{>{\bfseries}lllll}
\toprule
Japanese fonts
-&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
+&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}\\
Alphabetic fonts
&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
\midrule
Japanese fonts
-&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\
+&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}\\
Alphabetic fonts
-&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\
+&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}\\
\midrule
Japanese fonts
&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
\bottomrule
\end{tabular}\par}
-\medskip
-\fakefn{$^*$}{%
- \cs{setmonojfont} is defined if and only if \texttt{match} option is specified.}
-\fakefn{$^{**}$}{%
- \cs{renewfontfamily}~and~\cs{setfontfamily} are new commands
- in \Pkg{fontspec}~v2.6h (2018/7/30).
- Hence, \Pkg{luatexja-fontspec} define \cs{renewjfontfamily}~and~\cs{setjfontfamily}
- only when \Pkg{fontspec}~v2.6h (or later) is used.
-}
\end{table}
%</en>
%<*ja>
\begin{tabular}{lllll}
\toprule
\emph{和文}
-&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
+&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}\\
\emph{欧文}
&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
\midrule
\emph{和文}
-&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\
+&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}\\
\emph{欧文}
-&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\
+&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}\\
\midrule
\emph{和文}
&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
\bottomrule
\end{tabular}\par}
-
-\medskip
-\fakefn{$^*$}{\cs{setmonojfont} は \texttt{match} オプションが
-指定された時のみ定義される.}
-\fakefn{$^{**}$}{%
- \cs{renewfontfamily} と \cs{setfontfamily} は
- \Pkg{fontspec}~v2.6h (2018/7/30)で新たに追加された命令である.
- そのため,\Pkg{luatexja-fontspec}が \cs{renewjfontfamily} と \cs{setjfontfamily} を
- 定義するのはv2.6h以降の\Pkg{fontspec}を使用した時のみになっている.
-}
-
\end{table}
%</ja>
%<*en>
If this option is specified, usual family-changing commands such as
\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
-
-Note that \emph{\cs{setmonojfont} is defined
-if and only if this \texttt{\textup{match}} option is specified}.
%</en>
%<*ja>
このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
欧文フォントだけでなく和文フォントも変更するようになる.
-
-\emph{なお,\cs{setmonojfont} はこの \texttt{match} オプションが
-指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する.
%</ja>
\item[pass=<opts>]
\usepackage[no-math]{fontspec}\usepackage{luatexja-fontspec}
\usepackage[no-math]{luatexja-fontspec}
\end{lstlisting}
-
-
%<*en>
-The reason that \cs{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
+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}).
Below is an example of \cs{jfontspec}.
%</en>
%<*ja>
-標準で \cs{setmonojfont} コマンドが定義されないのは,
-和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる.
-また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
+これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
言い換えれば \texttt{kern} featureは標準では無効化となっている.
これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照).
%</ja>
\begin{LTXexample}[width=0.4\textwidth]
-\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular}
-JIS~X~0213:2004→辻\par
-\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular}
-JIS~X~0208:1990→辻
+\jfontspec[CJKShape=NLC]{HaranoAjiMincho-Regular}
+JIS~X~0213:2004→辻鯵\par
+\jfontspec[CJKShape=JIS1990]{HaranoAjiMincho-Regular}
+JIS~X~0208-1990→辻鯵\par
+\jfontspec[CJKShape=JIS1978]{HaranoAjiMincho-Regular}
+JIS~C~6226-1978→辻鯵
\end{LTXexample}
%<en>\subsection{Presets of Japanese fonts}
%<ja> 例えば,本ドキュメントでは\Pkg{luatexja-preset}パッケージを
%<en> For example, this document loads \Pkg{luatexja-preset} package by
\begin{lstlisting}
-\usepackage[kozuka-pr6n]{luatexja-preset}
+\usepackage[haranoaji]{luatexja-preset}
\end{lstlisting}
-%<ja>ã\81¨ã\81\97ã\81¦èªã\81¿è¾¼ã\81¿ï¼\8cå°\8få¡\9aæ\9b¸ä½\93(Pr6N)を使うことを指定している.
-%<en> which means that Kozuka~Pr6N fonts will be used in this document.
+%<ja>ã\81¨ã\81\97ã\81¦èªã\81¿è¾¼ã\81¿ï¼\8cå\8e\9fã\83\8eå\91³ã\83\95ã\82©ã\83³ã\83\88を使うことを指定している.
+%<en> which means that Harano Aji fonts will be used in this document.
%<*en>
一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した.
%</ja>
-\begin{LTXexample}
-\jfontspec{KozMinPr6N-Regular.otf}
-森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。
-
+\begin{LTXexample}[width=0.4\textwidth]
+森\UTF{9DD7}外と\CID{13966}田百\UTF{9592}とが
+\UTF{9AD9}島屋に\\
\CID{7652}飾区の\CID{13706}野家,
-\CID{1481}城市,葛西駅,
-高崎と\CID{8705}\UTF{FA11}
-
-\aj半角{はんかくカタカナ}
+\CID{1481}城市,葛西駅,\\
+高崎と\CID{8705}\UTF{FA11},濱と\ajMayuHama\\
+\aj半角{カタカナ}\ajKakko3\ajMaruYobi{2}%
+\ajLig{令和}\ajLig{○問}\ajJIS
\end{LTXexample}
%<*ja>
%<en>\item Blocks in Unicode~12.0.0.
%<ja>\item Unicode~12.0のブロック.
%<en>\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1- and Unicode.
-%<ja>\item Adobe-Japan1-7のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}7.
+%<ja>\item Adobe-Japan1-7のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}.
%<en>\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato.
%<ja>\item 八登崇之氏による\upTeX 用の\Pkg{PXbase}バンドル.
\end{itemize}
\centering\footnotesize
\def\ch#1{%
{\fboxsep0pt\fcolorbox{cyan}{white}%
- {\normalsize\char"20#1}}\ (\texttt{U+20#1})} %"
+ {\normalsize\KOZM\UTF{20#1}}}\ (\texttt{U+20#1})} %"
% 13: JIS X0213, AJ, Adobe-Japan-1 only
\begin{tabular}{ll>{\color{white}}lll>{\color{white}}l}
\ch{02}&{En space}&AJ&
で構成されている.したがって,ブロックのリストを示す
代わりに,範囲の定義そのものを示す.
%</ja>
-\begin{lstlisting}
+\begin{lstlisting}[escapechar=\!]
\ltjdefcharrange{4}{%
"500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
"2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A95F, "A980-"ABFF, "E000-"F8FF,
"FB00-"FE0F, "FE20-"FE2F, "FE70-"FEFF, "10000-"1AFFF, "1B170-"1F0FF,
- "1F300-"1FFFF, ... (characters in "2000-"206F which are not in range 9)
+ "1F300-"1FFFF, ... !\rmfamily (and characters in \texttt{U+2000}--\texttt{U+206F} which are not in range 9)!
} % non-Japanese
\end{lstlisting}
%<en>\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
"{1F}100--"{1F}1FF&Enclosed Alphanumeric Supp.&
"{1F}200--"{1F}2FF&Enclosed Ideographic Supp.\\
"{20}000--"{2F}FFF&(Supp. Ideographic Plane)&
+"{30}000--"{3F}FFF&(Tert. Ideographic Plane)\\
"{E0}100--"{E0}1EF&Variation Selectors Supp.
\end{tabular}
\end{table}
It is not desirable that \Param{xkanjiskip} is inserted into every
boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example,
\Param{xkanjiskip} should not be inserted after opening parenthesis
-(\textit{e.g.}, compare ``(あ'' and ``(\hskip\ltjgetparameter{xkanjiskip}あ'').
+(\textit{e.g.}, compare ``(あ'' and ``(\+あ'').
\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted
before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and
\Param{alxspmode} parameters \textbf{ALchar}s respectively.
%<*ja>
\Param{xkanjiskip}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に
挿入されるのは望ましいことではない.例えば,\Param{xkanjiskip}は開き括弧の
-後には挿入されるべきではない(「(あ」と「(\hskip\ltjgetparameter{xkanjiskip}あ」を
+後には挿入されるべきではない(「(あ」と「(\+あ」を
比べてみよ).
\LuaTeX-jaでは\Param{xkanjiskip}をある文字の前/後に挿入するかどうかを,
\textbf{JAchar}に対しては\Param{jaxspmode}を,\textbf{ALchar}に対しては
%<en>\subsection{Shifting the baseline}
%<ja>\subsection{ベースラインの移動}
+\label{ssec:baseline}
%<*en>
To make a match between a Japanese font and an alphabetic font, sometimes
shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved
\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt
\end{lstlisting}
-設定値は「横組」「縦組及びutod方向」「dtou方向」
+設定値は「横組」「縦組またはutod方向」「dtou方向」
の3種ごとに独立して記録される.参考として,Gitリポジトリ内の
\verb+test/test55-boxdim_diffdir.{tex,pdf}+ を挙げておく.
TrueType/OpenTypeフォントにfeatureを指定したものを和文フォントとして用いる
ことができる:
%</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\tradgt={file:KozMinPr6N-Regular.otf:script=latn;%
+\begin{LTXexample}[width=0.25\textwidth]
+\jfont\tradmc={IPAexMincho:script=latn;%
+trad;-kern;jfm=ujis} at 14pt
-\tradgt 当/体/医/区
+\tradmc 当/体/医/区
\end{LTXexample}
%<*en>
+It is required to specify a (horizontal) \emph{JFM} in at each calling of \cs{jfont}.
+A JFM is a Lua script which contains
+measurements of characters and glues/kerns that are automatically
+inserted for Japanese typesetting.
+The structure of JFM will be described in the next subsection.
+%</en>
+%<*ja>
+\cs{jfont}命令の実行ごとにどの(横組用)JFMを用いるのかを指定する必要がある.
+JFMは文字の寸法情報と和文組版で自動的に挿入される
+グルー/カーンの寸法情報を持っているLuaスクリプトで,その構造は次の節で述べる.
+%</ja>
+
+%<*en>
Note that the defined control sequence
-(\cs{tradgt} in the example above) using \cs{jfont} is not a
+(\cs{tradmc} in the example above) using \cs{jfont} is not a
\textit{font\_def} token, but a macro.
-Hence the input like \verb+\fontname\tradgt+
+Hence the input like \verb+\fontname\tradmc+
causes a error. We denote control sequences which are defined in
\cs{jfont} by <jfont\_cs>.
%</en>
%<*ja>
-なお,\cs{jfont} で定義された制御綴(上の例だと \cs{tradgt})
-は\textit{font\_def}トークンではなくマクロである.従って,\verb+\fontname\tradgt+ のような
+なお,\cs{jfont} で定義された制御綴(上の例だと \cs{tradmc})
+は\textit{font\_def}トークンではなくマクロである.従って,\verb+\fontname\tradmc+のような
入力はエラーとなる.以下では \cs{jfont} で定義された
制御綴を<jfont\_cs>で表す.
%</ja>
-\paragraph{JFM}
+%<en>\paragraph{Specifying JFM}
+%<ja>\paragraph{JFMの指定}
+%<en> The general scheme for specifying a JFM is the following:
+%<ja> JFMの一般的な指定は次のようになっている:
+\begin{quote}
+ \cs{jfont}<jfont\_cs>\texttt{=...;jfm=}<JFM name>[\texttt{/\{}<JFM features>\texttt{\}}]%
+ \texttt{;...;}[\texttt{jfmvar=}<identifier>]\texttt{;...}
+\end{quote}
+
+\begin{figure}
+\begin{LTXexample}[width=0.3\textwidth]
+\ltjsetparameter{differentjfm=both}
+\jfont\F=HaranoAjiMincho-Regular:jfm=ujis
+\jfont\G=HaranoAjiGothic-Medium:jfm=ujis
+\jfont\H=HaranoAjiGothic-Medium:jfm=ujis;jfmvar=hoge
+\F ){\G 【】}( % halfwidth space
+ ){\H 『』}( % fullwidth space
+
+ほげ,{\G 「ほげ」}(ほげ)\par
+ほげ,{\H 「ほげ」}(ほげ)% pTeX-like
+
+\ltjsetparameter{differentjfm=paverage}
+\end{LTXexample}
+\caption{Example of \texttt{jfmvar} key}
+\label{fig:jfmvar}
+\end{figure}
+
%<*en>
-a JFM has measurements of characters and
-glues/kerns that are automatically inserted for Japanese
-typesetting. The structure of JFM will be described in the next
-subsection. At the calling of \cs{jfont}, you must specify
-which JFM will be used for this font by the following keys:
+\begin{description}
+\item[<JFM name>]
+ The name of a (horizontal) JFM. \LuaTeX-ja searches and loads \texttt{jfm-<JFM name>.lua}.
+\item[<JFM features>]
+ An optional comma-separated list of JFM options.
+ Enclosing braces (\verb+{}+) are optional, but this does not escape any characters.
+ The contents of this list can be accessed by a table \texttt{luatexja.jfont.jfm\_feature}
+ from a JFM, at its loading. See \autoref{fig:jfmfeat} for an example.
+
+ Note that any JFM files which is shipped with \LuaTeX-ja does not use this feature.
+\item[<identifier>]
+ An optional string.
+\end{description}
+
+LuaTeX-ja ``does not distinguish'' two Japanese fonts which uses same JFM and are the same size.
+Here ``uses same JFM'' means that all~of <JFM name>, <JFM features>~and~<identifier> of two fonts
+agree.
+
+For example, The first ``)'' and ``【'' in \autoref{fig:jfmvar} are typeset in different real fonts.
+However, because they use the same JFMs and their size are same,
+\LuaTeX-ja inserts penalties, glues and kerns as if these two character are typeset in a same font.
+Namely, the glue between these characters is halfwidth, as in ``)\nobreak【''.
+However, this does not applies with \cs{F}~and~\cs{H} in \autoref{fig:jfmvar},
+because their <identifier> are different.
%</en>
%<*ja>
-JFMは文字と和文組版で自動的に挿入される
-グルー/カーンの寸法情報を持っている.JFMの構造は次の節で述べる.
-\cs{jfont} 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで
-指定する必要がある:
+\begin{description}
+\item[<JFM name>]
+ (横組用)JFMの名称.\LuaTeX-jaは\texttt{jfm-<JFM name>.lua}というファイルを探索して読み込む.
+\item[<JFM features>]
+ 省略可能なコンマ区切りリスト.全体を囲む \verb+{}+ は省略可能であるが,
+ 囲ったからといって<JFM features>の中で使用可能な文字が増えるわけではない.
+ <JFM features>で指定された内容は,テーブル\texttt{luatexja.jfont.jfm\_feature}として
+ JFM読み込み時に(JFMから)アクセス可能である.\autoref{fig:jfmfeat}に使用例を載せた.
+
+ なお,\LuaTeX-jaが標準で提供するJFMではこの機能は用いられていない.
+\item[<identifier>]
+ 省略可能な文字列.
+\end{description}
+
+\LuaTeX-jaはJFMとサイズが同じで,
+ 実フォントだけが異なる2つの和文フォントは「区別されない」.
+ここで「JFMが同じ」とは,両フォントの<JFM name>, <JFM features>, <identifier>が
+全て一致することである.
+
+例えば\autoref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが,
+JFMもサイズも同じなので,普通に「)\nobreak【」と入力した時と同じように組まれる,つまり両文字の間は半角空きとなる.
+
+しかし,JFMとサイズが同じであっても,\texttt{jfmvar}キーの値<identifier>の異なる
+2つの和文フォント,例えば\autoref{fig:jfmvar}で言う \cs{F} と \cs{H},
+は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て,
+かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば,
+\pTeX と似た状況で組版されることになる.
%</ja>
+\def\T#1{\texttt{#1}}
+\def\printjfmfeat#1{%
+ \relax\texttt{\string#1}:
+ \directlua{%
+ if myjfm then
+ for i,v in pairs(myjfm) do
+ tex.sprint('[\string\\T{' .. i .. '}]${}={}$')
+ if type(v)=='string' then
+ tex.sprint('``\string\\T{' .. tostring(v) .. "}'', ")
+ else
+ tex.sprint(tostring(v) ..', ')
+ end
+ end
+ else tex.sprint('(nil)')
+ end
+ }\par
+}
+\begin{figure}
+\begin{LTXexample}[pos=t]
+\small\ltjsetparameter{differentjfm=both}\tabcolsep=.5\zw
+ % \printjfmfeat is defined in the source of this document
+\jfont\A=HaranoAjiMincho-Regular:jfm=testf at 9pt \printjfmfeat\A
+\jfont\B=HaranoAjiMincho-Bold:jfm=testf/kern=0.5,-ps,+kana at 9pt \printjfmfeat\B
+\jfont\C=HaranoAjiGothic-Regular:jfm=testf/kern=0.5,down=0.2 at 9pt \printjfmfeat\C
+\jfont\D=HaranoAjiGothic-Bold:jfm=testf/down=0.2,kern=0.5 at 9pt \printjfmfeat\D
+\def\TEST#1{\string#1&{#1あ漢}{\A イ字}&{#1あ漢}{\B イ字}&{#1あ漢}{\C イ字}&{#1あ漢}{\D イ字}}
+\vspace{-4\baselineskip}\hfill\ttfamily
+\begin{tabular}{lllll}
+ &\string\A&\string\B&\string\C&\string\D\\\TEST\A\\\TEST\B\\\TEST\C\\\TEST\D\\
+\end{tabular}
+ % No space between ``漢'' and ``イ'' iff two Japanese fonts uses same JFM
+\ltjsetparameter{differentjfm=paverage}
+\end{LTXexample}
+
+\caption{Example of JFM features}
+\label{fig:jfmfeat}
+\end{figure}
+%<en>\paragraph{Default horizontal JFMs}
+%<ja>\paragraph{標準の横組用JFM}
\begin{table}[t]
%<en>\caption{Differences between horizontal JFMs shipped with \LuaTeX-ja}
%<ja>\caption{\LuaTeX-ja に同梱されている横組用JFMの違い}
\hbox{\Large\vrule
\parbox[b]{7\zw}{%
\addjfontfeatures{YokoFeatures={JFM=#1}}\noindent
- \color{#2}\transparent{0.5}
+ \color{#2}\transparent{0.5}%
◆◆◆◆◆◆◆
ある日モモちゃんがお使いで迷子になって泣きました.
}\vrule}}
\ltjsetparameter{jacharrange={-3}}
\end{table}
-\begin{cslist}
-\item[jfm=<name>]
-%<*en>
-Specify the name of (horizontal) JFM.
-If specified JFM has not been loaded, \LuaTeX-ja search and load
-a file named \texttt{jfm-<name>.lua}.
-
-The following horizontal JFMs are shipped with \LuaTeX-ja:
-%</en>
-%<*ja>
-用いる(横組用)JFMの名前を指定する.もし以前に指定されたJFMが読み込まれていなければ,
-\texttt{jfm-<name>.lua}を読み込む.以下の横組用JFMが\LuaTeX-jaには同梱されている:
-%</ja>
+%<en> The following horizontal JFMs are shipped with \LuaTeX-ja.
+%<ja> 以下の横組用JFMが\LuaTeX-jaには同梱されている:
\begin{description}
%<*en>
-\item[\texttt{jfm-ujis.lua}] A standard horizontal JFM in \LuaTeX-ja. This JFM is
+\item[\texttt{jfm-ujis.lua}] A standard horizontal JFM of \LuaTeX-ja. This file is
based on \verb+upnmlminr-h.tfm+, a metric for UTF/OTF package that
- is used in \upTeX. When you use the \Pkg{luatexja-otf} package, you should use this JFM.
+ is used in \upTeX. When you are going to use the \Pkg{luatexja-otf} package, you should use this JFM.
%</en>
%<*ja>
-\item[\texttt{jfm-ujis.lua}] \LuaTeX-jaã\81®æ¨\99æº\96JFMã\81§ã\81\82ã\82\8bï¼\8eこのJFMは\upTeX で
+\item[\texttt{jfm-ujis.lua}] \LuaTeX-jaã\81®æ¨\99æº\96JFMã\83\95ã\82¡ã\82¤ã\83«ã\81§ã\81\82ã\82\8aï¼\8cこのJFMは\upTeX で
用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-h.tfm+ を
元にしている.\Pkg{luatexja-otf}パッケージを使うときはこのJFMを指定するべきである.
%</ja>
\cite{min10}の図3,~4のものを用いた.
%</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}
-\caption{Example of \texttt{jfmvar} key}
-\label{fig:jfmvar}
-\end{figure}
-
+%<*ja>
+また,プロポーショナル組用に\texttt{jfm-prop.lua}と\texttt{jfm-propw.lua}も用意されている.
+どちらのJFMも文字幅の情報と自動挿入されるグルー・カーンの情報は持たない(つまりグリフの文字幅をそのまま採用する).
+\texttt{jfm-prop.lua}と\texttt{jfm-propw.lua}の差は,前者が
+文字の高さ・深さ情報も持たないのに対し,後者は持っている点である
+\footnote{プロポーショナル組の状況でルビをつけたい,などという状況では\texttt{jfm-propw.lua}が有用かもしれない.}.
+%</ja>
%<*en>
-\item[jfmvar=<string>]
-Sometimes there is a need that \ldots.
+Furthermore, \LuaTeX-ja also ship two JFMs, namely \texttt{jfm-prop.lua}~and~\texttt{jfm-propw.lua},
+ for ``proportional typesetting''.
+Both JFMs don't have any character width information, nor glues/kerns information.
+\texttt{jfm-prop.lua} also also not have character height and depth information, while \texttt{jfm-propw.lua} has them.
%</en>
-%<*ja>
-\item[jfmvar=<string>]
-標準では,JFMとサイズが同じで,
- 実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
-\autoref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが,
-JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
-しかし,JFMとサイズが同じであっても,\texttt{jfmvar} キーの異なる
-2つの和文フォント,例えば\autoref{fig:jfmvar}で言う \cs{F} と \cs{H},
-は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て,
-かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば,
-\pTeX と似た状況で組版されることになる.
-%</ja>
-\end{cslist}
+
\begin{figure}
\begin{LTXexample}[pos=t]
\newcommand\test{\vrule ダイナミックダイクマ\vrule\\}
-\jfont\KMFW = KozMinPr6N-Regular:jfm=prop;-kern at 17pt
-\jfont\KMFK = KozMinPr6N-Regular:jfm=prop at 17pt % kern is activated
-\jfont\KMPW = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;-kern at 17pt
-\jfont\KMPK = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;+kern at 17pt
+\jfont\KMFW = HaranoAjiMincho-Regular:jfm=prop;-kern at 17.28pt
+\jfont\KMFK = HaranoAjiMincho-Regular:jfm=prop at 17.28pt % kern is activated
+\jfont\KMPW = HaranoAjiMincho-Regular:jfm=prop;script=dflt;+palt;-kern at 17.28pt
+\jfont\KMPK = HaranoAjiMincho-Regular:jfm=prop;script=dflt;+palt;+kern at 17.28pt
\begin{multicols}{2}
\ltjsetparameter{kanjiskip=0pt}
{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
カーニング情報は標準で使用する}ことになっているようである.
言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
\begin{lstlisting}
-\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
-\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
+\jfont\hoge=HaranoAjiMincho-Regular:jfm=ujis;-kern at 3.5mm
+\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*HaranoAjiMincho-Regular:jfm=ujis;-kern}{}
\end{lstlisting}
のように,\texttt{-kern} という指定を自分で追加しなければいけない.
\item
\item[\texttt{slant=}<slant>] slant the font.
\end{cslist}
Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
-settings; you have to write new JFMs on purpose.
+settings; one have to write new JFMs on purpose.
For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence
-letter-spacing and the width of italic correction are not correct:
+the letterspacing and the width of italic corrections are not correct:
%</en>
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\E=KozMinPr6N-Regular:extend=1.5;jfm=ujis;-kern
-\E あいうえお
-
-\jfont\S=KozMinPr6N-Regular:slant=1;jfm=ujis;-kern
-\S あいう\/ABC
+\jfont\E=HaranoAjiMincho-Regular:extend=1.5;jfm=ujis;-kern
+\jfont\S=HaranoAjiMincho-Regular:slant=1;jfm=ujis;-kern
+\E あいうえお \S あいう\/ABC
\end{LTXexample}
%<*ja>
-\paragraph{\texttt{ltjksp} 指定}
+\paragraph{\texttt{ltjksp}「機能」}
\label{pg:ltjksp}
\LuaTeX-ja標準では,
-JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+JFM中における\texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって,
「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が
同じ場所に挿入される」という状況が起こりうる.
この機能を無効化し,バージョン20150922.0以前と同じような組版を得るためには
-他のOpenType機能と同じように\ \texttt{-ltjksp}\ 指定を行えば良い.
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-
-\jfont\G=file:KozMinPr6N-Regular.otf%
- :jfm=ujis;-ltjksp at 9.2487pt
-\G\leavevmode%
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-\end{LTXexample}
+他のOpenType機能と同じように\texttt{-ltjksp}指定を行えば良い(\autoref{fig:ltjksp}参照).
なお,
\begin{lstlisting}
- \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt
+ \jfont\G=HaranoAjiMincho-Regular:jfm=ujis;-ltjksp;+ltjksp at \zw
\end{lstlisting}
-のように \texttt{+ltjksp} 指定を行った場合は,\texttt{kanjiskip\_natural} など
-3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は,
+のように\texttt{+ltjksp}指定を行った場合は,\texttt{kanjiskip\_natural}など
+3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp}を複数回指定した場合は,
最後に指定したものが有効となる.
%</ja>
%<*en>
-\paragraph{\texttt{ltjksp}}
+\paragraph{\texttt{ltjksp} ``feature''}
\label{pg:ltjksp}
\texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
\texttt{kanjiskip\_shrink} keys (Page~\pageref{pg:ksp_nat}) makes tha
\LuaTeX-ja inserts not only a glue which is specified by a JFM, and also
the natural width/stretch part/shrink part of \Param{kanjiskip}.
-
-This functionality is disabled by \texttt{-ltjksp} specification.
+This functionality is disabled by \texttt{-ltjksp} specification,
+as shown in~\autoref{fig:ltjksp}.
+%</en>
+\begin{figure}
\begin{LTXexample}[width=16\zw]
\leavevmode
\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
-
-\jfont\G=file:KozMinPr6N-Regular.otf%
- :jfm=ujis;-ltjksp at 9.2487pt
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule\\
+\jfont\G=HaranoAjiMincho-Regular%
+ :jfm=ujis;-ltjksp at \zw
\G\leavevmode%
\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
\end{LTXexample}
-%</en>
-
-
-
+\caption{\texttt{ltjksp} `feature''}
+\label{fig:ltjksp}
+\end{figure}
%<en>\subsection{\cs{tfont}}
%<ja>\subsection{\cs{tfont} 命令}
%<*en>
\cs{tfont} loads a font as a Japanese font for vertical direction.
-This command admits the same syntax used in \cs{font}~and~\cs{jfont}.
+This command admits the same syntax as in \cs{font}~and~\cs{jfont}.
A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont}:
\begin{itemize}
\item OpenType Feature~\texttt{vrt2}%
- \footnote{If the font does not define \texttt{vrt2} feature,
- use \texttt{vert} instead.} is automatically activated,
- unless \texttt{vert}~and//or~\texttt{vrt2} are explicitly activated
+ \footnote{If the font does not define the \texttt{vrt2} feature,
+ \texttt{vert} is used instead.} is automatically activated,
+ unless \texttt{vert}~and//or~\texttt{vrt2} features are explicitly activated
or deactivated (as the second line in the example below).
\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
-\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\S=HaranoAjiMincho-Regular:jfm=ujisv % vrt2 is automatically activated
+\tfont\T=HaranoAjiMincho-Regular:jfm=ujisv;-vert % vert and vrt2 are not activated
\tfont\U=file:ipaexm.ttf:jfm=ujisv
% vert is automatically activated, since this font does not have vrt2
\end{lstlisting}
\item Furthermore, a glyph is automatically rotated 90~degrees,
if it is not replaced by \texttt{vert} feature for \emph{any} script
for \emph{any} language, and if it is marked as `r''~or~``Tr'' in UAX~\#50.
- \item One have to specify the name of vertical JFM in \texttt{jfm=<name>}.
+ \item \cs{tfont} uses a vertical JFM instead of a horizontal JFM.
\LuaTeX-ja ships following vertical JFMs:
\begin{description}
\item[\texttt{jfm-ujisv.lua}] A standard vertical JFM in \LuaTeX-ja. This JFM is
\end{description}
\begin{figure}[!tb]
\begin{LTXexample}[pos=b]
-\jfont\X=[KozMinPr6N-Regular.otf]:jfm=ujis
-\tfont\U=[KozMinPr6N-Regular.otf]:jfm=ujisv
-\tfont\V=[KozMinPr6N-Regular.otf]:jfm=ujisv;jpotf
+\jfont\X=[HaranoAjiMincho-Regular.otf]:jfm=ujis
+\tfont\U=[HaranoAjiMincho-Regular.otf]:jfm=ujisv
+\tfont\V=[HaranoAjiMincho-Regular.otf]:jfm=ujisv;jpotf
\def\TEST#1#2{\leavevmode\hbox{#1#2\string#2 “引用,と句読点.”}}
\ttfamily\centering\TEST\yoko\X \quad \TEST\tate\U \quad \TEST\tate\V
\end{LTXexample}
By default, it substitutes ideographic comma/period for fullwidth comma/period,
and double prime quotation marks for double quotation marks
(See~\autoref{fig:jpotf}).
+ One can customize substitutions by lua~function \verb+luatexja.jfont.register_vert_replace+\ %
+ (see Japanese version of this manual).
\end{itemize}
%</en>
%<*ja>
\cs{tfont} はフォントを縦組用の和文フォントとして読み込む命令であり,
-\cs{tfont} ã\81®æ\96\87æ³\95ã\81¯ \cs{jfont} ã\81¨å\90\8cã\81\98ã\81§ã\81\82ã\82\8bï¼\8e
-\cs{tfont} で定義された縦組用和文フォントは,
-以下の点が \cs{jfont} による横組用和文フォントとは異なる:
+\cs{tfont}ã\81®æ§\8bæ\96\87ã\81¯\cs{jfont}ã\81¨å\90\8cæ§\98ã\81§ã\81\82ã\82\8bï¼\8e
+\cs{tfont}で定義された縦組用和文フォントは,
+以下の点が\cs{jfont}による横組用和文フォントとは異なる:
\begin{itemize}
- \item 明示的に \texttt{vert}, \texttt{vrt2}(のいずれか)の
- 有効・無効を指定した場合を除き,自動的に OpenType機能 \texttt{vrt2} の有効化が
+ \item 明示的にOpenType機能\texttt{vert}, \texttt{vrt2}(のいずれか)の
+ 有効・無効を指定した場合を除き,自動的にOpenType機能\texttt{vrt2}の有効化が
指定されたものとみなされる
\footnote{もしフォントが\texttt{vrt2}を定義していなかった場合,代わりに
\texttt{vert}を用いる.}.
\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
-\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\S=HaranoAjiMincho-Regular:jfm=ujisv % vrt2 is automatically activated
+\tfont\T=HaranoAjiMincho-Regular:jfm=ujisv;-vert % vert and vrt2 are not activated
\tfont\U=file:ipaexm.ttf:jfm=ujisv
% vert is automatically activated, since this font does not have vrt2
\end{lstlisting}
- \item \texttt{vert}, \texttt{vrt2} の少なくとも一つの有効を指定した場合にも関わらず,
+ \item \texttt{vert}, \texttt{vrt2}の少なくとも一つの有効を指定した場合にも関わらず,
script tagとlanguage system identifierの値の組み合わせによって
実際には有効にならなかった場合,\LuaTeX-jaは
\begin{quote}
\item さらに,「いかなるscript,~languageでも\texttt{vert}により置換されない」グリフ
のうち,UAX~\#50で``r''もしくは``Tr''と指定されているものは90度自動回転させる.
\item \ref{ssec:math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
- \item \texttt{jfm=<name>}\ の部分には縦組用JFMを指定する.
+ \item <JFM name>には縦組用JFMを指定する.
以下の縦組用JFMが\LuaTeX-jaには同梱されている.%おり,違いを\autoref{tab-difjfm-tate}に示した.
\begin{description}
\item[\texttt{jfm-ujisv.lua}] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で
\begin{figure}[!tb]
\begin{LTXexample}[pos=r,width=.4\textwidth]
-\jfont\X=[KozMinPr6N-Regular.otf]:jfm=ujis
-\tfont\U=[KozMinPr6N-Regular.otf]:jfm=ujisv
-\tfont\V=[KozMinPr6N-Regular.otf]:jfm=ujisv;jpotf
+\jfont\X=[HaranoAjiMincho-Regular.otf]:jfm=ujis
+\tfont\U=[HaranoAjiMincho-Regular.otf]:jfm=ujisv
+\tfont\V=[HaranoAjiMincho-Regular.otf]:jfm=ujisv;jpotf
\def\TEST#1#2{\leavevmode
\hbox{#1#2\string#2 “引用,と句読点.”}}
\ttfamily\centering
\def\ltj@stdgtfont{IPAGothic}
\end{lstlisting}
makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of
-IPAex~Mincho and IPAex~Gothic.
+Harano Aji fonts.
+%IPAex~Mincho and IPAex~Gothic.
This feature is intended for classes which use special JFMs
\footnote{This is because commands has \texttt{@} in their names.}.
(optional, version~2 or~later)
%</en>
+ \item[round\_threshold=<float>]
+%<*ja>
+(任意,バージョン3以降,文字クラス0のみ)
+
+「実際のグリフの幅に合わせて文字幅を整数倍する」際のしきい値を指定する.
+より正確に述べると,次のようになる.このフィールドに正の数$r$が指定されていたとし,
+JFM中で「文字クラス0の文字幅」と指定されている値が$w$,文字クラス0に属する文字のあるグリフの実際の幅が$w'$であったとする.
+$n=\nint(w'/w)$とした
+\footnote{ここで,$\nint(a)=\lfloor a+0.5\rfloor$は$a$に「もっとも近い整数」を表す.}
+とき,もし$w'>w$かつ$\lvert w'/w-n\rvert \char`<r$であれば,JFMで文字幅$nw$が指定されたものとして扱う.
+
+この機能は,ほとんど源ノ明朝・源ノ角ゴシックにおける2倍角・3倍角ダッシュの合字のために実装されたと
+言ってもよい(この場合$w'=2$,~$3$である).これらのグリフは\LuaTeX 内部ではUnicodeの私用領域に割り当てられるので,
+JFM側で番号を指定することができない.
+%</ja>
+%<*en>
+(optional, version~3 or~later, only available in character class~0)
+%</en>
+
+
\end{cslist}
%<*ja>
%<ja>ここで,次のような入力とその実行結果を考える:
%<en>Now consider the following input/output:
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
-\setbox0\hbox{\a ヒ漢}
-\the\wd0
+\jfont\a=IPAexMincho:jfm=test;+hwid
+\setbox0\hbox{\a ヒ漢}\the\wd0
\end{LTXexample}
%<*en>
Now we look why the above source outputs 15\,pt.
但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,置換前の文字クラスを採用する.
%</ja>
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
+\jfont\a=HaranoAjiMincho-Regular:jfm=test;+vert
\a 漢。\inhibitglue 漢
\end{LTXexample}
%<*en>
%<ja>\paragraph{仮想的な文字}
%<en>\paragraph{Imaginary characters}
%<*en>
-As described before, you can specify several ``imaginary characters'' in
+As described before, one can specify several ``imaginary characters'' in
\texttt{chars} field. The most of these characters are regarded as the
characters of class 0 in \pTeX.
As a result, \LuaTeX-ja can control typesetting finer than \pTeX.
\texttt{'parbdd'}を入れれば全角下がりとなる.
\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=KozMinPr6N-Regular:jfm=test \g
+\jfont\g=HaranoAjiMincho-Regular:jfm=test \g
\parindent1\zw\noindent{}◆◆◆◆◆
\par 「◆◆←二分下がり
\par 【◆◆←全角下がり
\autoref{tab-math} shows counterparts to \TeX's primitives for math
font families. There is no relation between the value of
\cs{fam} and that of \cs{jfam}; with appropriate settings,
-you can set both \cs{fam} and \cs{jfam} to the same value.
+one can set both \cs{fam} and \cs{jfam} to the same value.
Here <jfont\_cs> in the argument of \Param{jatextfont} etc.\ is
a control sequence which is defined by \cs{jfont}, i.e.,
a \emph{horizontal} Japanese font.
%<en>\item[\texttt{luatexja.load\_jfm} callback]
%<ja>\item[\texttt{luatexja.load\_jfm}コールバック]
%<*en>
-With this callback you can overwrite JFMs.
+With this callback, one can overwrite JFMs.
This callback is called when a new JFM is loaded.
%</en>
%<*ja>
\end{itemize}
$i$,~$j\in \omega$に対して,\texttt{char\_type[$i$][$j$]} は
文字クラス$i$の文字と$j$の文字の間に挿入されるグルーやカーンを格納している.
-\begin{itemize}
- \item 間に入るものがカーンであれば,この値は\
-\texttt{[$j$]=\{[1]=<kern\_node>, ratio=<ratio>\}} であり,
+
+間に入るものがカーンであれば,この値は%
+\texttt{[$j$]=\{[1]=<kern\_node>, ratio=<ratio>\}}であり,
<kern\_node>はカーンを表すノードである\footnote{%
バージョン20150420.0以降ではノードのアクセス手法にdirect access
modelを用いているため,ノードそのものを表すユーザーデータではなく,
内部で参照のために使われる添字(整数)である.
}.
- \item グルーであれば,この値は以下のキーを持つテーブルである.
- \begin{description}
- \item[\texttt{width}, \texttt{stretch}, \texttt{shrink}]
- グルーのそれぞれ自然長,伸び量,縮み量をsp単位で表したもの.
- \item[\texttt{priority}] バ(ージョン2以降の)JFMでの指定 \texttt{\{<stretch>,<shrink>\}} を
- \[
- (\text{<stretch>}+4)\cdot 8+\text{<shrink>}+4
- \]
- として0--63の整数にパックしたもの.
- \item[\texttt{ratio}, \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch}, \texttt{kanjiskip\_shrink}]
- JFM中の同名のフィールドの値がそのまま使われている.
- \end{description}
-\end{itemize}
+
+グルーであれば,この値は以下のキーを持つテーブルである.
+\begin{description}
+ \item[\texttt{width}, \texttt{stretch}, \texttt{shrink}]
+ グルーのそれぞれ自然長,伸び量,縮み量をsp単位で表したもの.
+ \item[\texttt{priority}] (バージョン2以降の)JFMでの指定 \texttt{\{<stretch>,<shrink>\}} を
+ \[
+ (\text{<stretch>}+4)\cdot 8+\text{<shrink>}+4
+ \]
+ として0--63の整数にパックしたもの.
+ \item[\texttt{ratio}, \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch}, \texttt{kanjiskip\_shrink}]
+ JFM中の同名のフィールドの値がそのまま使われている.
+\end{description}
\item[chars\_cbcache]
文字クラス決定の処理で.キャッシュとして使われる.
\end{cslist}
%<*en>
\verb+\ltjgetparameter{adjustdir}+ returns a integer which represents
the direction of the surrounding vertical list.
-As \Param{direction}, the return value 1 means \emph{down-to-up} direction,
+As \Param{direction}, the return value 1 means \emph{dtou} direction,
3 means \emph{tate} direction (vertical typesetting),
and 4 means \emph{yoko} direction (horizontal typesetting).
%</en>
\item
%<*en>
For an integer~<reg\_num> between 0~and~65535,
-\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ returns the direction of
+\verb+\ltjgetparameter{boxdir}{+<reg\_num>\verb+}+ returns the direction of
\cs{box}<reg\_num>. If this box register is void, the returned value is zero.
%</en>
%<*ja>
0--65535の数<reg\_num>に対して,
-\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ は,\cs{box}<reg\_num>に
+\verb+\ltjgetparameter{boxdir}{+<reg\_num>\verb+}+ は,\cs{box}<reg\_num>に
格納されているボックスの組方向を表す.もしこのレジスタが空の場合は,0が返される.
%</ja>
%</en>
-\subsection{\cs{inhibitglue}}
+\subsection{\cs{inhibitglue}, \cs{disinhibitglue}}
%<*en>
-\cs{inhibitglue} suppresses the insertion of \textbf{JAglue}.
+\cs{inhibitglue} suppresses the insertion of a glue/kern soecified in JFM at the place.
The following is an example, using a special JFM that there will be a glue between
the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''.
%</en>
%<*ja>
-\cs{inhibitglue} は\textbf{JAglue}の挿入を抑制する.
+\cs{inhibitglue} は発行箇所でのJFM由来グルー/カーンの挿入を抑制する.
以下は,ボックスの始めと「あ」の間,「あ」「ウ」の間にグルーが入る特別なJFMを用いた例で
ある.
%</ja>
\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
+\jfont\g=HaranoAjiMincho-Regular:jfm=test \g
\fbox{\hbox{あウあ\inhibitglue ウ}}
\inhibitglue\par\noindent あ1
\par\inhibitglue\noindent あ2
\par\noindent\inhibitglue あ3
+\par )4)\inhibitglue 5
\par\hrule\noindent あoff\inhibitglue ice
\end{LTXexample}
%</ja>
%<*en>
+\item \cs{inhibitglue} does \emph{not} suppress \Param{kanjiskip} or \cs{xkanjiskip}.
+%</en>
+%<*ja>
+\item \cs{inhibitglue}は\Param{kanjiskip}, \Param{xkanjiskip}の挿入は抑制しない.
+ 例えば上の例の6行目では,「)」と「5」の間には本来はJFM由来の半角空きが挿入されるはずだが,
+ それが\cs{inhibitglue}で無効になったため,\Param{xkanjiskip}が代わりに挿入されている.
+%</ja>
+
+%<*en>
\item The call of \cs{inhibitglue} in the (restricted) horizontal
mode is only effective on the spot; does not get over boundary of
paragraphs. Moreover, \cs{inhibitglue} cancels ligatures and
kernings, as shown in the last line of above example.
-%</en>
+%</en>i
%<*ja>
\item \cs{inhibitglue} の(制限された)水平モード中での呼び出しはその場でのみ
有効であり,段落の境界を乗り越えない.
%</ja>
\end{itemize}
+%<*en>
+\cs{disinhibitglue} suppresses the effect of \cs{inhbitglue}.
+In other words, \cs{disinhibitglue} allows the insertion of a glue/kern specified by JFM.
+If \cs{inhibitglue}~and~\cs{disinhibitglue} both specified at the same time,
+the latest one is effective.
+This commans is added in the version 2020****.0.
+
+Note that \cs{disinhibitglue} also cancels ligatures and kernings.
+%</en>
+%<*ja>
+\cs{disinhibitglue}は\cs{inhibitglue}の効果を無効化する.
+言い換えれば,(\cs{inhibitglue}で抑制されたはずの))JFM由来グルー/カーンの挿入を許可する.
+同じ箇所に\cs{inhibitglue}と\cs{disinhibitglue}が両方ある場合は,後ろの指定が有効になる.
+この命令はバージョン2020****.0で追加された.
+
+なお,\cs{disinhibitglue}もリガチャやカーニングを打ち消すことに注意されたい.これは
+(\cs{inhibitglue}と同様に)whatsitノードを使って実装されていることによる.
+%</ja>
\subsection{\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}}
%<*en>
\end{LTXexample}
+\subsection{\cs{insertxkanjiskip}, \cs{insertkanjiskip}}
+%<*en>
+There are some situations which one wants to insert \Param{xkanjiskip} manually.
+A simple approach is to use \cs{hskip}\cs{ltjgetparamter\{xkanjiskip\}}, but this approach has
+several weak points. To cope with these weak points, \LuaTeX-ja defines a command \cs{insertxkanjiskip} which
+inserts \Param{xkanjiskip} glue manually, from the version 2020****.0.
+\begin{itemize}
+ \item ``\cs{insertxkanjiskip}'' (without any keyword) uses the value of \Param{xkanjiskip} at the place.
+ \item ``\cs{insertxkanjiskip late}'' (with ``\texttt{late}''~keyword) uses the value of \Param{xkanjiskip}
+ at the end of a paragraph/hbox.
+\end{itemize}
+See the example below.
+%</en>
+%<*ja>
+\TeX で日本語の文章を作成していると,
+しばしば「手動で和欧文間空白\Param{xkanjiskip}を挿入したい」という状況に遭遇する.
+このような場合,\cs{hskip}\cs{ltjgetparamter\{xkanjiskip\}}\+とするのがよくある対応であったが,これらには
+次のような難点がある:
+\begin{itemize}
+ \item \cs{xkanjiskip}は「段落やhboxでの終端での値がその段落/hbox全体で用いられる」となっているため,
+ \cs{hskip}\cs{ltjgetparamter\{xkanjiskip\}}\+以降に\Param{xkanjiskip}の値が変わる場合に対応できない.
+ \item \LuaTeX-jaでは,\cs{xkanjiskip}の自然長が$\cs{maxdimen}=(2^{30}-1)\,\mbox{sp}$であった場合,
+ JFMで指定された値を実際に利用することになっているが,それに対応できていない.
+ \item \Pkg{luatexja-adjust}(\ref{ssec:adj}節)による優先度行長調整では,
+ \cs{hskip}\cs{ltjgetparamter\{xkanjiskip\}}\+は手動で挿入したグルーであるから,
+ 自動で挿入された\Param{xkanjiskip}とは
+ 伸縮の優先順序が異なってしまう.
+\end{itemize}
+
+これらの難点に対処した,\Param{xkanjiskip}をグルーとして手動挿入する命令が\cs{insertxkanjiskip}である.
+これはバージョン2020****.0で追加された.
+以下の実行例に示すように,
+\begin{itemize}
+ \item 単独で\cs{insertxkanjiskip}とした場合は,その時点での\Param{xkanjiskip}の値を使用する
+ \item 「\cs{insertxkanjiskip~late}」と\texttt{late}キーワードを後置した場合は,
+ 段落/hbox終了時にそのときの\Param{xkanjiskip}の値に自動設定される
+ (段落/hbox途中での値は未定義)
+ \item どちらであっても,実行箇所に本来なら自動挿入されるはずのJFM由来グルー/カーンは挿入されない
+\end{itemize}
+となっている.
+%</ja>
+\begin{LTXexample}[width=0.3333\textwidth]
+\ltjsetparameter{xkanjiskip=0.25\zw}
+あ(% 0.5\zw (from JFM)
+あ\insertxkanjiskip (% 0.25\zw (xkanjiskip at here)
+あ\insertxkanjiskip late (% 0.25\zw (xkanjiskip at EOP)
+あa% 1.25\zw (xkanjiskip at EOP)
+\\%
+\ltjsetparameter{xkanjiskip=1.25\zw}
+あ\insertxkanjiskip (% 1.25\zw (xkanjiskip at here)
+あa% 1.25\zw (xkanjiskip at EOP)
+%% At the end of the paragraph (EOP), xkanjiskip is 1.25\zw.
+\end{LTXexample}
+
+%<*en>
+There is a similar command \cs{insertkanjiskip} (\Param{kanjiskip} instead~of \Param{xkanjiskip}) is also defined.
+Note that any shorthand form of \cs{insert}[\texttt{x}]\texttt{kanjiskip} are not defined by \LuaTeX-ja.
+%</en>
+%<*ja>
+\cs{insertxkanjiskip}(または\texttt{late}つき)の短縮形
+\footnote{ちょうど\cs{inhibitglue}の短縮形\cs{\ltjalchar`\<}\+に対応するもの.}は
+\LuaTeX-jaでは定義していない.短縮形を使いたい人は,面倒でも各自で
+\begin{lstlisting}
+ \protected\def\+{\insertxkanjiskip late}
+\end{lstlisting}
+などと定義してほしい.
+
+最後になるが,以上の説明の\Param{xkanjiskip}をすべて標準の和文間空白\Param{kanjiskip}に置き換えた
+\cs{insertkanjiskip}命令も準備されている.
+%</ja>
+
\subsection{\cs{ltjdeclarealtfont}}
\label{ssec:altfont}
%<*en>
%<*en>
\subsection{Loading Japanese fonts in \LaTeXe}
\label{ssec:ltx-jfm}
-From versoin~20190107,
+From version~20190107,
\emph{\LuaTeX-ja does not load Japanese fonts for horizontal direction and
that for vertical direction at same time},
to reduce the number of loaded fonts.
This will save time for typesetting and memory consumption of Lua side (\cite{tc18ltja}).
\begin{itemize}
- \item \cs{selectfont} loads (and chooses) only the Japanese font for current direction,
+ \item \cs{selectfont} loads (and chooses) only the Japanese font for the current direction,
and does not load the Japanese font for other direction
(\LuaTeX-ja only detects its size and JFM, to calculate the amount of shifting the baseline).
和文,\emph{もしくは両方})を<family>に変更する.詳細は\ref{ssec:fontfamilycmd}節を参照すること.
%</ja>
+\item[\cs{fontshape}\{<shape>\}\textrm{, }\cs{fontshapeforce}\{<shape>\}]
+%<*en>
+As in \LaTeXe, this command changes current alphabetic font shape
+according to shape change rules.
+
+Traditionally, \cs{fontshape} changes also current Japanese font shape always.
+However, this leads a lot of \LaTeX\ font warning like
+\begin{verbatim}
+ Font shape `JY3/mc/m/it' undefined
+ using `JY3/mc/m/n' instead on ....
+\end{verbatim}
+when \cs{itshape} is called,
+because almost all Japanese fonts only have shape ``\texttt{n}'', and \cs{itshape} calls \cs{fontshape}.
+
+\LuaTeX-ja~20200323.0 change the behavior. Namely,
+\cs{fontshape\{<shape>\}}~and~\cs{fontshapeforce\{<shape>\}} change current Japanese font shape, only if
+the required shape (according to shape changing rules) or <shape> is avaliable in current Japanese font family/series.
+When this is not the case, an info such as
+\begin{verbatim}
+ Kanji font shape JY3/mc/m/it' undefined
+ No change on ...
+\end{verbatim}
+is issued instead of a warning.
+%</en>
+%<*ja>
+元々の\LaTeXe におけるものと同様に,このコマンドは現在の欧文フォントシェイプを
+\cs{DeclareFontShapeChangeRule}によるシェイプ更新規則によって変更する.
+
+伝統的には,\cs{fontshape}は無条件に和文フォントシェイプも変更した.しかし,例えば多くの和文フォントは
+シェイプが``\texttt{n}''しか持たないことと\cs{itshape}が\cs{fontshape}を呼び出すことから,
+\begin{verbatim}
+ Font shape `JY3/mc/m/it' undefined
+ using `JY3/mc/m/n' instead on ....
+\end{verbatim}
+といった警告をもたらしてしまっていた.
+
+一方,\LuaTeX-ja 20200323.0以降では,
+\cs{fontshape\{<shape>\}}, \cs{fontshapeforce\{<shape>\}}が和文フォントシェイプを更新するのは,
+シェイプ更新規則に基づいた値や<shape>の少なくとも一つが現在の和文フォントファミリ・シリーズで利用可能なときに限られる.
+どちらでもなく,和文フォントシェイプが変更されなかった場合には
+\begin{verbatim}
+ Kanji font shape JY3/mc/m/it' undefined
+ No change on ...
+\end{verbatim}
+というinfo(警告でなく)を出力する.
+%</ja>
+
+\item[\cs{kanjishape}\{<shape>\}\textrm{, }\cs{kanjishapeforce}\{<shape>\}]
+%<*en>
+\cs{kanjishape\{<shape>\}} changes current Japanese font shape according to shape change rules, and
+\cs{kanjishapeforce\{<shape>\}} changes current Japanese font shape to <shape>, regardless of the rules.
+Hence \cs{kanjishape\{it\}} produces a warning
+\begin{verbatim}
+ Font shape `JY3/mc/m/it' undefined
+ using `JY3/mc/m/n' instead on ....
+\end{verbatim}
+which is not produced by \cs{fontshape\{it\}}.
+%</en>
+%<*ja>
+ ...
+%</ja>
+
\begin{figure}[!tb]
\begin{LTXexample}[pos=b]
\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;}{}
-\DeclareFontShape{JY3}{edm}{m}{fb} {<-> s*KozGoPr6N-Regular:jfm=ujis}{}
-\DeclareFontShape{JY3}{edm}{m}{fb2} {<-> s*KozGoPr6N-Medium:jfm=ujis}{}
+\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*HaranoAjiMincho-Regular:jfm=ujis}{}
+\DeclareFontShape{JY3}{edm}{m}{fb} {<-> s*HaranoAjiGothic-Regular:jfm=ujis;color=003FFF}{}
+\DeclareFontShape{JY3}{edm}{m}{fb2} {<-> s*HaranoAjiGothic-Regular:jfm=ujis;color=FF1900}{}
\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{fb}{ "4E00-"67FF,{-2}-{-2}}
\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{fb2}{"6800-"9FFF}
{\kanjifamily{edm}\selectfont
%</ja>
%<*en>
+\section{expl3 interface}
+This section describes expl3 interfaces provided by \LuaTeX-ja.
+All of them belong to te \texttt{platex} module, since they are provided for compatibility with Japanese \pLaTeX.
+Note that commands which are marked with dagger (``\dagger'') are additions by \LuaTeX-ja.
+%</en>
+%<*ja>
+\section{expl3形式の命令}
+expl3の文法に沿った組方向変更命令や組方向による条件判断文である.
+これらは\pLaTeX との互換性の為に用意されているので,\texttt{platex}モジュールとして定義されている.
+なお,``\dagger''がついている命令は\LuaTeX-ja独自のものである.
+%</ja>
+\begin{cslist}
+ \item[\cs{platex\_direction\_yoko:}\textrm{, }\cs{platex\_direction\_tate:}\textrm{, }\cs{platex\_direction\_dtou:}]
+%<ja> それぞれ\cs{yoko},~\cs{tate},~\cs{dtou}と同義.
+%<en> Synonyms for \cs{yoko},~\cs{tate}~and~\cs{dtou}, respectively.
+ \item[\cs{platex\_if\_direction\_yoko\_p:}]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_direction\_yoko:\underline{\textsl{TF}}} \{<true code>\} \{<false code>\}]
+%<ja> 現在の組方向が横組であるか否かをテストする.
+%<en> Tests if the current direction is \emph{yoko} (horizontal writing).
+ \item[\cs{platex\_if\_direction\_tate\_nomath\_p:}$^\dagger$]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_direction\_tate\_nomath:\underline{\textsl{TF}}}$^\dagger$ \{<true code>\} \{<false code>\}]
+%<ja> 現在の組方向が縦組であるか否かをテストする.
+%<en> Tests if the current direction is \emph{tate} (vertical writing).
+ \item[\cs{platex\_if\_direction\_tate\_math\_p:}$^\dagger$]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_direction\_tate\_math:\underline{\textsl{TF}}}$^\dagger$ \{<true code>\} \{<false code>\}]
+%<ja> 現在の組方向がutod方向(\pTeX でいう「縦数式ディレクション」)であるか否かをテストする.
+%<en> Tests if the current direction is \emph{utod}.
+ \item[\cs{platex\_if\_direction\_tate\_p:}]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_direction\_tate:\underline{\textsl{TF}}} \{<true code>\} \{<false code>\}]
+%<ja> 現在の組方向が縦組またはutod方向であるか否かをテストする.
+%<en> Tests if the current direction is \emph{tate}~or~\emph{utod}.
+ \item[\cs{platex\_if\_direction\_dtou\_p:}]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_direction\_dtou:\underline{\textsl{TF}}} \{<true code>\} \{<false code>\}]
+%<ja> 現在の組方向がdtou方向であるか否かをテストする.
+%<en> Tests if the current direction is \emph{dtou}.
+ \item[\cs{platex\_if\_box\_yoko\_p:N} <box>]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_box\_yoko:N\underline{\textsl{TF}}} <box> \{<true code>\} \{<false code>\}]
+%<ja> ボックス<box>の組方向が横組であるか否かをテストする.
+%<en> Tests if the direction of <box> is \emph{yoko}.
+ \item[\cs{platex\_if\_box\_tate\_nomath\_p:N}$^\dagger$ <box>]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_box\_tate\_nomath:N\underline{\textsl{TF}}}$^\dagger$ <box> \{<true code>\} \{<false code>\}]
+%<ja> ボックス<box>の組方向が縦組であるか否かをテストする.
+%<en> Tests if the direction of <box> is \emph{tate}.
+ \item[\cs{platex\_if\_box\_tate\_math\_p:N}$^\dagger$ <box>]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_box\_tate\_math:N\underline{\textsl{TF}}}$^\dagger$ <box> \{<true code>\} \{<false code>\}]
+%<ja> ボックス<box>の組方向がutod方向であるか否かをテストする.
+%<en> Tests if the direction of <box> is \emph{utod}.
+ \item[\cs{platex\_if\_box\_tate\_p:N} <box>]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+ \item[\cs{platex\_if\_box\_tate:N\underline{\textsl{TF}}} <box> \{<true code>\} \{<false code>\}]
+%<ja> ボックス<box>の組方向が縦組またはutod方向であるか否かをテストする.
+%<en> Tests if the direction of <box> is \emph{tate}~or~\emph{utod}.
+ \item[\cs{platex\_if\_box\_dtou\_p:N} <box>]
+%<en>\ \\[\dimexpr-\medskipamount-2\baselineskip\relax]
+%<ja>\ \\[\dimexpr-2\baselineskip\relax]
+\item[\cs{platex\_if\_box\_dtou:N\underline{\textsl{TF}}} <box> \{<true code>\} \{<false code>\}]
+%<ja> ボックス<box>の組方向がdtou方向であるか否かをテストする.
+%<en> Tests if the direction of <box> is \emph{dtou}.
+\end{cslist}
+
+
+%<*en>
\section{Addon packages}
\LuaTeX-ja has several addon packages.
These addons are written as \LaTeX\ packages, but
\begin{figure}[!tb]
\begin{LTXexample}[width=0.25\textwidth]
\jfontspec[
- YokoFeatures={FakeBold=3}, TateFeatures={FakeBold=6},
- TateFont=KozGoPr6N-Regular
-]{KozMinPr6N-Regular}
+ YokoFeatures={Color=FF1900}, TateFeatures={Color=003FFF},
+ TateFont=HaranoAjiGothic-Regular
+]{HaranoAjiMincho-Regular}
\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト}
-\addjfontfeatures{FakeBold=0}
+\addjfontfeatures{Color=00AF00}
\hbox{\yoko 横組}\hbox{\tate 縦組}
\end{LTXexample}
%<ja>\caption{\texttt{TateFeatures} 等の使用例}
\begin{LTXexample}[pos=b]
\jfontspec[
AltFont={
- {Range="4E00-"67FF, Font=KozGoPr6N-Medium},
- {Range="6800-"9EFF, FakeBold=4},
- {Range="3040-"306F, Font=KozGoPr6N-Regular},
+ {Range="4E00-"67FF, Font=HaranoAjiGothic-Regular, Color=003FFF},
+ {Range="6800-"9EFF, Color=FF1900},
+ {Range="3040-"306F, Font=HaranoAjiGothic-Regular, Color=35A16B},
}
-]{KozMinPr6N-Regular}
+]{HaranoAjiMincho-Regular}
日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、
諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、……
\end{LTXexample}
\begin{lstlisting}
AltFont = {
{ Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
- Range="3000-"30FF, BoldFeatures={FakeBold=1} }
+ Range="3000-"30FF, BoldFeatures={Color=FF1900} }
}
\end{lstlisting}
does \emph{not} work. Instead, one have to write
AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } },
},
BoldFeatures = {
- AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, FakeBold=1 } },
+ AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=FF1900 } },
}
\end{lstlisting}
\begin{lstlisting}
AltFont = {
{ Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
- Range="3000-"30FF, BoldFeatures={FakeBold=1} }
+ Range="3000-"30FF, BoldFeatures={Color=FF1900} }
}
\end{lstlisting}
のように指定することは出来ず,
AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } },
},
BoldFeatures = {
- AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, FakeBold=1 } },
+ AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=FF1900 } },
}
\end{lstlisting}
のように指定しなければならない.
Adobe-Korea1,~nor~Adobe-KR CID-keyed font,
\LuaTeX-ja treats that <number> is a CID number of Adobe-Japan1 character collection,
and tries to typeset a ``most suitable glyph''.
+
+Note that if the Japanese font is loaded using the HarfBuzz library, this \cs{CID}
+command does not work.
%</en>
%<*ja>
CID番号が<number>の文字を出力する.
特に縦組用グリフのCID番号を指定した場合は(LuaTeX-ja 20190504.0以降では若干改良されているが)
意図しない結果になる可能性が高い.
なお,バージョン20190708.0以降では,CIDからグリフへの選択にグリフ名の情報を使用していない.
- また,フォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて
+ また,フォントにAdobe-Japan1のIVSが含まれていれば,その情報を用いて
グリフを選択する.
}を出力する.
+
+なお,現在の和文フォントがHarfBuzzを用いて読み込まれた場合には,\cs{CID}は正しく動作しない.
%</ja>
\item[\cs{UTF}\{<hex\_number>\}]
%<*en>
Hiragino fonts (except Hiragino~Mincho~W2) are bundled with Mac OS~X 10.5 or later.
-Some editions of a Japanese word-processor ``一太郎2012'' includes Hiragino ProN fonts.
Note that fonts for gothic extra~bold (HiraKakuStd[N]-W8) only contains characters in
Adobe-Japan1-3 character collection, while others contains those in
Adobe-Japan1-5 character collection.
%</en>
%<*ja>
-ヒラギノフォントは,Mac OS~X以外にも,一太郎2012の上位エディションにもバンドルされている.
極太ゴシック体として用いるヒラギノ角ゴW8は,Adobe-Japan1-3の範囲しかカバーしていない
Std/StdNフォントであり,その他はAdobe-Japan1-5対応である.
-ã\81ªã\81\8aï¼\8cæ\98\8eæ\9c\9dä½\93ç´°å\97ã\81¨ã\81\97ã\81¦ç\94¨ã\81\84ã\82\8bã\83\92ã\83©ã\82®ã\83\8eæ\98\8eæ\9c\9dä½\93W2ã\81¯OS~Xã\82\84ä¸\80太é\83\8eã\81«ã\81¯ã\83\90ã\83³ã\83\89ã\83«ã\81\95ã\82\8cã\81¦ã\81\8aã\82\89ã\81\9aï¼\8c
+なお,明朝体細字として用いるヒラギノ明朝体W2はOS~Xにはバンドルされておらず,
別途購入する必要がある.
%</ja>
\begin{center}\small
\midrule
%<en>\textit{rounded gothic}
%<ja>\textgt{丸ゴシック}
-&&\AD{Sans}{Heavy}\\
+&&\AD{Sans}{Medium}\\
\bottomrule
\end{tabular}
\end{center}
\midrule
%<en>\textit{rounded gothic}
%<ja>\textgt{丸ゴシック}
-&&\AD{Sans}{Black}\\
+&&\AD{Sans}{Medium}\\
\bottomrule
\end{tabular}
\end{center}
\midrule
%<en>\textit{rounded gothic}
%<ja>\textgt{丸ゴシック}
-&&HaranoAjiGothic-Heavy.otf\\
+&&HaranoAjiGothic-Medium.otf\\
\bottomrule
\end{tabular}
\end{center}
新たに<name>という名称のプリセットを定義する.この名称は,
すでに定義されているプリセット名や,
\ref{sssec:ltjpreset-general}で定義されているオプション,さらに
- 次の9つと重複してはならない.
+ 次の11個と重複してはならない.
\begin{quote}
\ttfamily
- mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+ mc mc-l mc-m mc-b mc-bx gt gt-m gt-b gt-bx gt-eb mg-m
\end{quote}
<specification>は,プリセット名や以下のキー達のコンマ区切りリストを指定する:
\begin{description}
\item[\ttfamily mc-l=<font>] 明朝体細字(\cs{mcfamily}\cs{ltseries})
\item[\ttfamily mc-m=<font>] 明朝体中字(\cs{mcfamily}\cs{mdseries})
- \item[\ttfamily mc-bx=<font>] 明朝体太字(\cs{mcfamily}\cs{bfseries})
+ \item[\ttfamily mc-b=<font>] 明朝体太字(\cs{mcfamily}\cs{bfseries})
+ \item[\ttfamily mc-bx=<font>] \texttt{mc-b=<font>}と同義.
\item[\ttfamily gt-m=<font>] ゴシック体中字(\cs{gtfamily}\cs{mdseries})
- \item[\ttfamily gt-bx=<font>] ゴシック体太字(\cs{gtfamily}\cs{bfseries})
+ \item[\ttfamily gt-b=<font>] ゴシック体太字(\cs{gtfamily}\cs{bfseries})
+ \item[\ttfamily gt-bx=<font>] \texttt{gt-b=<font>}と同義.
\item[\ttfamily gt-eb=<font>] ゴシック体太字(\cs{gtfamily}\cs{ebseries})
\item[\ttfamily mg-m=<font>] 丸ゴシック体(\cs{mgfamily})
\item[\ttfamily mc=<font>] 明朝体の細字・中字・太字全部を設定.
以下を指定したことと同じである:
\begin{quote}
- \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+ \ttfamily mc-l=<font>, mc-m=<font>, mc-b=<font>
\end{quote}
\item[\ttfamily gt=<font>] ゴシック体の中字・太字・極太全部を設定.
以下を指定したことと同じである:
\begin{quote}
- \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+ \ttfamily gt-m=<font>, gt-b=<font>, gt-eb=<font>
\end{quote}
\end{description}
なお,パッケージ読み込み時に \texttt{deluxe} が有効でない場合は,
- 上記9キーのうち\texttt{mc}, \texttt{gt}しか実質的に意味を持たない.
+ 上記11キーのうち\texttt{mc}, \texttt{gt}しか実質的に意味を持たない.
%</ja>
%<*en>
Define new preset~<name>. This <name> cannot be same as other presets,
options described in Subsubsection~\ref{sssec:ltjpreset-general}, nor
- following nine strings:
+ following 11~strings:
\begin{quote}
- \ttfamily
- mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+ \ttfamily
+ mc mc-l mc-m mc-b mc-bx gt gt-m gt-b gt-bx gt-eb mg-m
\end{quote}
<specification> is a comma-separated list which consists of
\begin{description}
\item[\ttfamily mc-l=<font>] mincho light
\item[\ttfamily mc-m=<font>] mincho medium
- \item[\ttfamily mc-bx=<font>] mincho bold
+ \item[\ttfamily mc-b=<font>] mincho bold
+ \item[\ttfamily mc-bx=<font>] synonym for \texttt{mc-b=<font>}
\item[\ttfamily gt-m=<font>] gothic medium
- \item[\ttfamily gt-bx=<font>] gothic bold
+ \item[\ttfamily gt-b=<font>] gothic bold
+ \item[\ttfamily gt-bx=<font>] synonym for \texttt{gt-b=<font>}
\item[\ttfamily gt-eb=<font>] gothic extra~bold
\item[\ttfamily mg-m=<font>] rounded gothic
\item[\ttfamily mc=<font>] Same as
\begin{quote}
- \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+ \ttfamily mc-l=<font>, mc-m=<font>, mc-b=<font>
\end{quote}
\item[\ttfamily gt=<font>] Same as
\begin{quote}
- \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+ \ttfamily gt-m=<font>, gt-b=<font>, gt-eb=<font>
\end{quote}
\end{description}
If \texttt{deluxe} is not specified at loading the package,
- only \texttt{mc}~and~\texttt{gt} keys (among above 9~keys) have a meaning.
+ only \texttt{mc}~and~\texttt{gt} keys (among above 11~keys) have a meaning.
%</en>
\item[\cs{ltjnewpreset}*\{<name>\}\{<specification>\}]
%<*ja>
\cs{ltjapplypreset}で実際に使うときに定義されていれば良い.
そのため,次のような記述も可能である:
\begin{lstlisting}
- \ltjnewpreset{hoge}{piyo,mc-bx=HiraMinProN-W6}
+ \ltjnewpreset{hoge}{piyo,mc-b=HiraMinProN-W6}
\ltjnewpreset{piyo}{mg-m=HiraMaruProN-W4}
\ltjapplypreset{hoge}
\end{lstlisting}
Note that \cs{ltjnewpreset} does not ``expand'' the definition to define a preset.
This means that one can write as the following:
\begin{lstlisting}
- \ltjnewpreset{hoge}{piyo,mc-bx=HiraMinProN-W6}
+ \ltjnewpreset{hoge}{piyo,mc-b=HiraMinProN-W6}
\ltjnewpreset{piyo}{mg-m=HiraMaruProN-W4}
\ltjapplypreset{hoge}
\end{lstlisting}
\item[\textit{boxbdd} (75)]
%<en>Glues/kerns that inserted just the beginning or the ending of an hbox or a paragraph.
%<ja>hboxか段落の最初か最後に挿入されたグルー/カーン.
+\item[\textit{special\_jaglue} (76)]
+%<en>Glues from \cs{insert}[\texttt{x}]\texttt{kanjiskip}.
+%<ja>\cs{insert}[\texttt{x}]\texttt{kanjiskip}由来のグルー.
\end{description}
%<*ja>
という3ノードを考える(それぞれ単独でクラスタをなす).
この場合,$p$と$q$の間は,実フォントが異なるにもかかわらず2.の状況となる一方で,
$q$と$r$の間は(実フォントが同じなのに)\texttt{jfmvar} キーの内容が異なるので3.の状況となる.
+
+ なお,JFMで\texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink}キーが指定されていた場合は,……
+
\item[\Param{kanjiskip}~{[K]}] 上の[M]において空白が定まらなかった場合,
以下で定めた量「右空白」として採用する.
この段階においては,\cs{inhibitglue} は効力を持たないため,
結果として,2つの\textbf{JAchar}間には常に何らかのグルー/カーンが挿入されることとなる.
\begin{enumerate}
\item 両クラスタ(厳密には$\mathit{Nq}.\mathit{tail}$,$\mathit{Np}.\mathit{head}$)の中身の文字コードに対する
-\Param{autospacing}パラメタが両方ともfalseだった場合は,長さ0のglueとする.
-\item ã\83¦ã\83¼ã\82¶å\81´ã\81\8bã\82\89è¦\8bã\81\9f\Param{kanjiskip}ã\83\91ã\83©ã\83¡ã\82¿ã\81®è\87ªç\84¶é\95·ã\81\8c$\cs{maxdimen}=(2^{30}-1)\,{\rm sp}$で
-なければ,\Param{kanjiskip}パラメタの値を持つglueを採用する.
+\Param{autospacing}ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81\8c両æ\96¹ã\81¨ã\82\82falseã\81 ã\81£ã\81\9få ´å\90\88ã\81¯ï¼\8cé\95·ã\81\950ã\81®glueã\81¨ã\81\99ã\82\8bï¼\8e
+\item ã\83¦ã\83¼ã\82¶å\81´ã\81\8bã\82\89è¦\8bã\81\9f\Param{kanjiskip}ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81®è\87ªç\84¶é\95·ã\81\8c$\cs{maxdimen}=(2^{30}-1)\,\mbox{sp}$で
+ã\81ªã\81\91ã\82\8cã\81°ï¼\8c\Param{kanjiskip}ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81®å\80¤ã\82\92æ\8c\81ã\81¤glueã\82\92æ\8e¡ç\94¨ã\81\99ã\82\8bï¼\8e
\item 2.でない場合は,\textit{Nq}, \textit{Np}で使われているJFMに指定されている\Param{kanjiskip}の値を用いる.
どちらか片方のクラスタだけが\textbf{JAchar}(\textsf{和文A}・\textsf{和文B})のときは,そちらのクラスタで使われている
JFM由来の値だけを用いる.もし両者で使われているJFMが異なった場合は,上の[M]~3.と同様の方法を用いて調整する.
\item $\mathit{Np}.\mathit{id}$が\textit{id\_math}のとき(つまりクラスタ\textit{Np}が文中数式を表す)
ときは,$x=-1$.
\item \textit{Np}の中身の中身の文字コードについて,「直前への\Param{xkanjiskip}の挿入」が禁止されている
-(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが偶数)ときは,
+ï¼\88ã\81¤ã\81¾ã\82\8aï¼\8c\Param{jaxspmode}~(or \Param{alxspmode})ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81\8cå\81¶æ\95°ï¼\89ã\81¨ã\81\8dã\81¯ï¼\8c
$x=\text{\texttt{'nox\_alchar'}}$.
\item 以上のいずれでもないときは,$x=\text{\texttt{'alchar'}}$.
\end{itemize}
\begin{enumerate}
\item 以下のいずれかの場合は,\Param{xkanjiskip}の挿入は抑止される.しかし,実際には行分割を許容するために,長さ0のglueを採用する:
\begin{itemize}
-\item 両クラスタにおいて,それらの中身の文字コードに対する\Param{autoxspacing}パラメタが共にfalseである.
+\item 両ã\82¯ã\83©ã\82¹ã\82¿ã\81«ã\81\8aã\81\84ã\81¦ï¼\8cã\81\9dã\82\8cã\82\89ã\81®ä¸èº«ã\81®æ\96\87å\97ã\82³ã\83¼ã\83\89ã\81«å¯¾ã\81\99ã\82\8b\Param{autoxspacing}ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81\8cå\85±ã\81«falseã\81§ã\81\82ã\82\8bï¼\8e
\item \textit{Nq}の中身の文字コードについて,「直後への\Param{xkanjiskip}の挿入」が禁止されている
-(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが2以上).
+ï¼\88ã\81¤ã\81¾ã\82\8aï¼\8c\Param{jaxspmode}~(or \Param{alxspmode})ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81\8c2以ä¸\8aï¼\89ï¼\8e
\item \textit{Np}の中身の文字コードについて,「直前への\Param{xkanjiskip}の挿入」が禁止されている
-(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが偶数).
+ï¼\88ã\81¤ã\81¾ã\82\8aï¼\8c\Param{jaxspmode}~(or \Param{alxspmode})ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81\8cå\81¶æ\95°ï¼\89ï¼\8e
\end{itemize}
-\item ユーザ側から見た\Param{xkanjiskip}パラメタの自然長が$\cs{maxdimen}=(2^{30}-1)\,{\rm sp}$で
-なければ,\Param{xkanjiskip}パラメタの値を持つglueを採用する.
+\item ã\83¦ã\83¼ã\82¶å\81´ã\81\8bã\82\89è¦\8bã\81\9f\Param{xkanjiskip}ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81®è\87ªç\84¶é\95·ã\81\8c$\cs{maxdimen}=(2^{30}-1)\,{\rm sp}$ã\81§
+ã\81ªã\81\91ã\82\8cã\81°ï¼\8c\Param{xkanjiskip}ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81®å\80¤ã\82\92æ\8c\81ã\81¤glueã\82\92æ\8e¡ç\94¨ã\81\99ã\82\8bï¼\8e
\item 2.でない場合は,\textit{Nq}, \textit{Np}(\textsf{和文A}/\textsf{和文B}なのは片方だけ)
で使われているJFMに指定されている\Param{xkanjiskip}の値を用いる.
\end{enumerate}
\texttt{'nox\_alchar'}か\texttt{'alchar'}は
\begin{quote}
\textit{Nq}の中身の文字コードについて,「直後への\Param{xkanjiskip}の挿入」が禁止されている
-(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが2以上).
+ï¼\88ã\81¤ã\81¾ã\82\8aï¼\8c\Param{jaxspmode}~(or \Param{alxspmode})ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81\8c2以ä¸\8aï¼\89ï¼\8e
\end{quote}
か否かで判断する.
\end{enumerate}
\item trueの場合は,異体字セレクタは「直前の文字に続けて」出力されるため,
例えば以下の例(左側は入力,右側はその出力)のようになる.
%</ja>
-\begin{LTXexample}
+%%%% [preset=...]: workaround for lstlisting inside LTXexample
+\begin{LTXexample}[preset=\expandafter\def\csname @captype\endcsname{lstlisting}]
\begin{lstlisting}[vsraw=true]
葛󠄀城市,葛󠄁飾区,葛西
\end{lstlisting}
どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり,
\Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される.
%</ja>
-\begin{LTXexample}
+\begin{LTXexample}[preset=\expandafter\def\csname @captype\endcsname{lstlisting}]
\begin{lstlisting}[vsraw=false,
vscmd=\ltjlistingsvsstdcmd]
葛󠄀城市,葛󠄁飾区,葛西
キャッシュとして保存しているのと同様の方法で,
\LuaTeX-jaもいくつかのキャッシュファイルを作成するようになった.
\begin{itemize}
- \item 通常,キャッシュは\texttt{\$TEXMFVAR/luatexja/}以下に保存され,
+ \item 通常,キャッシュは \texttt{\$TEXMFVAR/luatexja/} 以下に保存され,
そこから読み込みが行われる.
- \item 「通常の」テキスト形式のキャッシュ(拡張子は \texttt{.lua})以外にも,
+ \item 「通常の」テキスト形式のキャッシュ(拡張子は \texttt{.lua.gz},gzip圧縮されているため)以外にも,
それをバイナリ形式(バイトコード)に変換したものもサポートしている.
\begin{itemize}
\item キャッシュを読み込む時,同名のバイナリキャッシュがあれば,
同時に更新される.
また,(バイナリ版が見つからず)テキスト形式のキャッシュ側が読み込まれたときは,
\LuaTeX-jaはバイナリキャッシュを作成する.
+未圧縮のテキスト形式のキャッシュ(\texttt{hoge.lua})は20200802.0以降では利用しない.
\end{itemize}
\end{itemize}
%</ja>
\begin{itemize}
\item Cache files are usually stored in (and loaded from)
\texttt{\$TEXMFVAR/luatexja/}.
- \item In addition to caches of the text form (the extension is ``\texttt{.lua}''),
-caches of the \emph{binary}, precompiled form are supported.
+ \item In addition to caches of the text form (the extension is ``\texttt{.lua.gz}'',
+because they are compressed by gzip),
+caches of the \emph{binary}~(bytecode) form are supported.
\begin{itemize}
\item In loading a cache, the binary cache precedes
the text form.
- \item When \LuaTeX-ja updates a cache \texttt{hoge.lua},
+ \item When \LuaTeX-ja updates a compressed text cache \texttt{hoge.lua.gz},
its binary version is also updated.
\end{itemize}
\end{itemize}
%<*ja>
\subsection{キャッシュの使用箇所}
-\LuaTeX-ja では以下の3種類のキャッシュを使用している:
+\LuaTeX-ja では以下のキャッシュを使用している:
\begin{cslist}
-\item[ltj-cid-auto-adobe-japan1.lua]
+\item[ltj-cid-auto-adobe-japan1.\{lua.gz,luc\}]
Ryumin-Lightのような非埋め込みフォントの情報を格納しており,
(それらが\LuaTeX-jaの標準和文フォントなので)\LuaTeX-jaの読み込み時に自動で読まれる.
生成には\texttt{UniJIS2004-UTF32-\{H,V\}}, \texttt{Adobe-Japan1-UCS2}という3つの
\LuaTeX-ja uses the following cache:
\begin{cslist}
-\item[ltj-cid-auto-adobe-japan1.lua]
+\item[ltj-cid-auto-adobe-japan1.\{lua.gz,luc\}]
The font table of a CID-keyed non-embedded Japanese font.
This is loaded in every run.
It is created from three CMaps, \texttt{UniJIS2004-UTF32-\{H,V\}} and
\bf \texttt{cid} key&\bf name of the cache &
\multicolumn{2}{c}{\bf used CMaps}\\
\midrule
-Adobe-Japan1-*<j-cid-auto-adobe-japan1.lua&UniJIS2004-UTF32-*&Adobe-Japan1-UCS2\\
-Adobe-Korea1-*<j-cid-auto-adobe-korea1.lua&UniKS-UTF32-*&Adobe-Korea1-UCS2\\
-Adobe-KR-*<j-cid-auto-adobe-kr.lua&UniAKR-UTF32-*&Adobe-KR-UCS2\\
-Adobe-GB1-*<j-cid-auto-adobe-gb1.lua&UniGB-UTF32-*&Adobe-GB1-UCS2\\
-Adobe-CNS1-*<j-cid-auto-adobe-cns1.lua&UniCNS-UTF32-*&Adobe-CNS1-UCS2\\
+Adobe-Japan1-*<j-cid-auto-adobe-japan1.\{lua.gz,luc\}&UniJIS2004-UTF32-*&Adobe-Japan1-UCS2\\
+Adobe-Korea1-*<j-cid-auto-adobe-korea1.\{lua.gz,luc\}&UniKS-UTF32-*&Adobe-Korea1-UCS2\\
+Adobe-KR-*<j-cid-auto-adobe-kr.\{lua.gz,luc\}&UniAKR-UTF32-*&Adobe-KR-UCS2\\
+Adobe-GB1-*<j-cid-auto-adobe-gb1.\{lua.gz,luc\}&UniGB-UTF32-*&Adobe-GB1-UCS2\\
+Adobe-CNS1-*<j-cid-auto-adobe-cns1.\{lua.gz,luc\}&UniCNS-UTF32-*&Adobe-CNS1-UCS2\\
\bottomrule
\end{tabular}
\end{table}
%<*ja>
+\item[ltj-kinsoku\_default.\{lua.gz,luc\}]
+禁則処理,\Param{kansujichar}などの標準設定が格納されたファイルである.
+%</ja>
+%<*en>
+\item[ltj-kinsoku.luc]
+The bytecode cache which default \textit{kinsoku} parameters are stored.
+%</en>
+
+%<*ja>
\item[ltj-jisx0208.luc]
\LuaTeX-ja配布中の\texttt{ltj-jisx0208.lua}をバイトコード化したものである.
これはJIS~X~0208とUnicodeとの変換テーブルであり,
\pTeX との互換目的の文字コード変換命令で用いられる.
%</ja>
%<*en>
-\item[ltj-jisx0208.\{luc|lub\}]
+\item[ltj-jisx0208.luc]
The bytecode version of \texttt{ltj-jisx0208.lua}.
This is the conversion table between JIS~X~0208 and Unicode
which is used in Kanji-code conversion commands for compatibility with \pTeX.
%</en>
+
+%<*ja>
+\item[ltj-ivd\_aj1.luc]
+\LuaTeX-ja配布中の\texttt{ltj-ivd\_aj1.lua}をバイトコード化したものである.
+これはUnicodeの漢字異体字データベースのAdobe-Japan1コレクションの内容を
+ 格納したテーブルであり,\Pkg{luatexja-otf}パッケージの\cs{CID}命令で使われることがある.
+%</ja>
+%<*en>
+\item[ltj-ivd\_aj1.luc]
+The bytecode version of \texttt{ltj-ivd\_aj1.lua}.
+%</en>
+
+%<*ja>
+\item[extra\_***.\{lua.gz,luc\}]
+フォント``\texttt{***}''における,グリフ番号からUnicode値への変換テーブル,縦組時のグリフ回転の有無を格納したテーブル,
+及び縦組時におけるグリフの原点位置・高さのテーブルを格納している.
+%</ja>
+%<*en>
+\item[extra\_***.\{lua.gz,luc\}]
+This file conains some information (especially for vertical typesetting) about the font `\texttt{***}''.
+%</en>
\end{cslist}
%<*en>
\subsection{Internal}
Cache management system of \LuaTeX-ja is stored in \texttt{luatexja.base}
(\texttt{ltj-base.lua}).
-There are three public functions for cache management in \texttt{luatexja.base},
+There are four public functions for cache management in \texttt{luatexja.base},
where <filename> stands for the file name \emph{without suffix}:
\begin{cslist}
\item[save\_cache(<filename>, <data>)]
Save a non-nil table <data> into a cache <filename>.
-Both the text form <filename>\texttt{.lua} and its binary version
+Both the compressed text form <filename>\texttt{.lua.gz} and its binary version
are created or updated.
\item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})]
and its return value is whether the cache is outdated.
\texttt{load\_cache} first tries to
-read the binary cache <filename>\texttt{.\{luc|lub\}}.
+read the binary cache <filename>\texttt{.luc}.
If its contents is up-to-date, \texttt{load\_cache} returns the contents.
If the binary cache is not found or
its contents is outdated, \texttt{load\_cache} tries to
-read the text form <filename>\texttt{.lua}.
+read the compressed text form <filename>\texttt{.lua.gz}.
Hence, the return value of \texttt{load\_cache} is non-nil,
if and only if the updated cache is found.
+
+\item[remove\_cache(<filename>)]
+Remove the cahce <filename>.
\end{cslist}
%</en>
%<*ja>
\subsection{内部命令}
\LuaTeX-jaにおけるキャッシュ管理は,\texttt{luatexja.base}~(\texttt{ltj-base.lua})に
-実装しており,以下の3関数が公開されている.
+実装しており,以下の関数が公開されている.
ここで,<filename>は保存するキャッシュのファイル名を\emph{拡張子なしで}指定する.
\begin{cslist}
\item[save\_cache(<filename>, <data>)]
nilでない<data>をキャッシュ<filename>に保存する.
-テキスト形式の<filename>\texttt{.lua}のみならず,
-そのバイナリ版も作成/更新される.
+テキスト形式の<filename>\texttt{.lua.gz}\footnote{拡張子からわかる通り,実際にはgzip圧縮される.}のみならず,
+そのバイナリ形式も作成・更新される.
\item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})]
<outdate>は1引数(キャッシュの中身)をとる関数であり,
その戻り値は「キャッシュの更新が必要」かどうかを示すブール値でないといけない.
-\texttt{load\_cache}は,まずバイナリキャッシュ<filename>\texttt{.\{luc|lub\}}を
+\texttt{load\_cache}は,まずバイナリキャッシュ<filename>\texttt{.luc}を
読みこむ.もしその内容が「新しい」,つまり<outdate>の評価結果が \texttt{false} なら
\texttt{load\_cache}はこのバイナリキャッシュの中身を返す.
-もしバイナリキャッシュが見つからなかったか,「古すぎる」ならばテキスト版
- <filename>\texttt{.lua}を読み込み,その値を返す.
+もしバイナリキャッシュが見つからなかったか,「古すぎる」ならば(gzip圧縮された)テキスト形式の
+ <filename>\texttt{.lua.gz}を読み込み,<outdate>で再度評価する.
以上より,\texttt{load\_cache}自体がnilでない値を返すのは,ちょうど「新しい」キャッシュが
見つかった場合である.
+
+\item[remove\_cache(<filename>)]
+キャッシュ<filename>を削除する.テキスト形式(gzip圧縮されているか否かを問わず)も
+バイナリ形式もまとめて削除する.
\end{cslist}
%</ja>
縦組時には,「\hbox to \zw{、}」(\texttt{U+3001})から「\ltjjachar"FE11」(\texttt{U+FE11})%"
のように縦組用字形への置き換えに関係する処理は,以下のようになっている.
+
\begin{table}[t]
\def\D#1#2#3#4{%
{\fboxsep0pt\fcolorbox{cyan}{white}%
- {\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})%"
+ {\large\KOZM\ltjjachar"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})%"
}
\caption{\LuaTeX-ja標準で行われる縦組形への置換}
\label{tab:vert_replace}\small\centering