\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
%<en>\documentclass[a4paper,titlepage]{article}
-%<ja>\documentclass[a4paper,titlepage]{ltjsarticle}
+%<ja>\documentclass[a4paper,10ptj,titlepage]{ltjsarticle}
%%%%%%%%
\makeatletter
%%%%%%%%
\def\pgfsysdriver{pgfsys-pdftex.def}
-\directlua{if jit then jit.on() end}
-\usepackage{metalogo,amsmath,array,tikz,pict2e,multienum,float}
+\usepackage{metalogo,amsmath,array,tikz,pict2e,multienum,float,mathtools}
\usepackage{booktabs,multicol,luatexja-ruby}
\usepackage[all]{xy}
\usepackage{lltjext,alltt,comment}
-%%%%%%%% Lua GC
-\patchcmd\@outputpage{\stepcounter{page}}{%
- \directlua{%
- if jit then
- local k = collectgarbage("count")
- if k>900000 then
- collectgarbage("collect")
- texio.write_nl("term and log", "GC: ", math.floor(k), math.floor(collectgarbage("count")))
- end
- end
- }%
- \stepcounter{page}%
-}{}{}
-
%%%%%%%% fonts
\usepackage{luatexja-otf}
\usepackage[no-math]{fontspec}
-\setmainfont[Ligatures=TeX]{Linux Libertine O}
-\setmonofont[Scale=MatchLowercase, ItalicFont=lmmono10-italic.otf,
- BoldFont=lmmonolt10-bold.otf, BoldItalicFont=lmmonolt10-boldoblique.otf
-]{lmmono10-regular.otf}
-\setsansfont[Scale=MatchLowercase,Ligatures=TeX]{Linux Biolinum O}
+\setmainfont[Ligatures=TeX,RawFeature=-notdef]{Linux Libertine O}
+\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}
+\setsansfont[Scale=MatchLowercase,Ligatures=TeX,RawFeature=-notdef]{Linux Biolinum O}
\usepackage[match]{luatexja-fontspec}
\usepackage[kozuka-pr6n]{luatexja-preset}
\usepackage{unicode-math}
\setmonojfont{KozGoPr6N-Regular.otf}
-\setmathfont[Scale=MatchLowercase]{xits-math.otf}
+\setmathfont[Scale=MatchLowercase]{XITSMath}
\setLaTeXa{\scshape a}
%<*ja>
{\normalfont\normalsize\bfseries\raisebox{.2ex}{$\mdlgblksquare\mkern1mu$}}}
%</en>
%<*ja>
-\usepackage[textwidth=45\zw, lines=45, footskip=6mm]{geometry}
+\usepackage[textwidth=44\zw, lines=41, footskip=6mm]{geometry}
\usepackage{luatexja-adjust}%\ltjdisableadjust
-\advance\leftmargini-1\zw\advance\leftmarginii-1\zw
+\advance\leftmargini-1\zw
+%</ja>
+%<en>\long\def\fakefn#1#2{\par\noindent{\footnotesize\hbox to1.8em{\hss#1}#2\par}}
+%<*ja>
+\long\def\fakefn#1#2{%
+ \par{\footnotesize\advance\leftskip 3\zw\parindent1\zw\noindent
+ \llap{#1\hskip.3\zw}#2\par}}
%</ja>
-
%%%%%%%% listings
%%%%%%%% IVS
\def\IVS#1{\char\numexpr "E0100+#1\relax}%"
\def\IVSA#1#2#3#4#5{%
- \textcolor{blue}{\raisebox{3.5pt}{\tt%
- \fboxsep=0.5pt\fbox{\tiny \oalign{0#1#2\crcr#3#4#5\crcr}}}}%
+ \hbox to1em{\hss\textcolor{blue}{\raisebox{3.5pt}{\normalfont\ttfamily%
+ \fboxsep=0.5pt\fbox{\hbox to0.75em{\hss\tiny \oalign{0#1#2\crcr#3#4#5\crcr}\hss}}}}\hss}%
}
{\catcode`\%=11
\gdef\IVSB#1{\expandafter\IVSA\directlua{
local cat_str = luatexbase.catcodetables['string']
tex.sprint(cat_str, string.format('%X', 0xE00EF+#1))
}}}
+\def\UCSA#1#2#3#4{%
+ \hbox to1em{\hss\textcolor{blue}{\raisebox{3.5pt}{\normalfont\ttfamily%
+ \fboxsep=0.5pt\fbox{\hbox to0.75em{\hss\tiny \oalign{#1#2\crcr#3#4\crcr}\hss}}}}\hss}%
+}
+\def\UCSB#1#2{%
+ \hbox to1em{\hss\textcolor{red}{\raisebox{3.5pt}{\normalfont\ttfamily%
+ \fboxsep=0.5pt\fbox{\hbox to0.75em{\hss\tiny \oalign{\hss#1\hss\crcr\hss#2\hss\crcr}\hss}}}}\hss}%
+}
\usepackage{listings,showexpl,enumitem}
\lstset{
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}
+ explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed},
+ morecomment=[l]{\%}, commentstyle=\color{green},
}
% Suppress output from showexpl to stdout.
\makeatletter
pdftitle={LuaTeX-jaパッケージ}
%</ja>
}
+\usepackage{bxghost}
%<*ja>
\def\HyRef@autoref#1#2{%
\begingroup
\Hy@safe@activestrue
\expandafter\HyRef@autosetref\csname r@#2\endcsname{#2}{#1}%
- \endgroup\ltjalchar"200C %" 欧文ゴースト
+ \endgroup\eghostguarded{}%" 欧文ゴースト
}
\def\figureautorefname{図}
\def\tableautorefname{表}
%%%%%%%% other macros
\newlist{cslist}{description}{2}
\setlist[cslist]{%
- style=nextline,font=\mdseries\ttfamily,
+ style=nextline,font=\bfseries\ttfamily,
before*=\def\<{\char`\<}\def\>{\char`\>}\def\{{\char`\{}\def\}{\char`\}},
topsep=\medskipamount,
%<ja> leftmargin=2\zw,
\def\_{\leavevmode \kern .06em\vbox {\hrule \@width .333em}}
\def\cs#1{\texttt{\upshape
- \texorpdfstring{\textbackslash\hbox{\ltjsetparameter{autoxspacing=false}#1}}{\textbackslash#1}}}
+ \texorpdfstring{\hbox{\ltjsetparameter{autoxspacing=false}\textbackslash#1}}{\textbackslash#1}}}
\ltjsetparameter{alxspmode={`\\,allow}}
+\def\text@#1{%
+ \ifnum\mathstyle<\scriptstyle
+ \mbox{#1}
+ \else\ifnum\mathstyle<\scriptscriptstyle
+ \mbox{\let\f@size\sf@size\selectfont#1}
+ \else
+ \mbox{\let\f@size\ssf@size\selectfont#1}
+ \fi\fi
+}
%%%%%%%%
\makeatother
%%%%%%%%
width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr
}}}}}\,}
-\def\myghost{\ifmmode\else\ltjalchar"200C \fi}
-\protected\def\Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name
-\protected\def\DParam#1{\myghost\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name (definition)
-\protected\def\Pkg#1{\textsf{#1}} % packages/classes
-\ltjsetparameter{alxspmode={"200C,allow}}
+\makeatletter
+\def\Param#1{\texorpdfstring{\@Param{#1}}{#1}} % parameter name
+\protected\def\@Param#1{\eghostguarded{\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}}}
+\protected\def\DParam#1{\eghostguarded{\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}}} % parameter name (definition)
+\def\Pkg#1{\texorpdfstring{\textsf{#1}}{#1}} % packages/classes
\begin{document}
\lstset{
外部UTF-8入力が利用可能となり,さらにUnicode化を推進し,\pTeX の内部処理
までUnicode化した\upTeX も開発されている.また,\pTeX に\eTeX 拡張をマー
ジした\epTeX も登場し,\TeX\ Live\ 2011では\pLaTeX が\epTeX の上で動作す
-るようになった.だが,\pdfTeX 拡張(PDF直接出力やmicro-typesetting)を
+るようになった.だが,\pdfTeX 拡張の主要部分(PDF直接出力やmicro-typesetting)を
\pTeX に対応させようという動きはなく,海外とのgapは未だにあるのが現状であ
る.
%</ja>
%<*ja>
\paragraph{命令の名称} 例えば\pTeX で追加された次のようなプリミティブ
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
\kanjiskip=10pt \dimen0=kanjiskip
\tbaselineshift=0.1zw
\dimen0=\tbaselineshift
\prebreakpenalty`ぁ=100
\ifydir ... \fi
-\end{verbatim}
+\end{lstlisting}
%<en> However, we cannot use them under \LuaTeX-ja.
%<en> Instead of them, we have to write as the following.
%<ja> は\LuaTeX-jaには存在しない.\LuaTeX-jaでは以下のように記述することになる.
-\begin{verbatim}
+\begin{lstlisting}
\ltjsetparameter{kanjiskip=10pt} \dimen0=\ltjgetparameter{kanjiskip}
\ltjsetparameter{talbaselineshift=0.1\zw}
\dimen0=\ltjgetparameter{talbaselineshift}
\ltjsetparameter{prebreakpenalty={`ぁ,100}}
\ifnum\ltjgetparemeter{direction}=4 ... \fi
-\end{verbatim}
+\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.
By default, \LuaTeX-ja uses Japanese fonts to typeset Greek and Cyrillic letters,
To change this behavior,
put \verb!\ltjsetparameter{jacharrange={-2,-3}}! in the preamble.
- For the detailed description, see Subsection~\ref{ssec-setrange}.
+ For the detailed description, see Subsection~\ref{ssec:setrange}.
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.
\end{lstlisting}
を入れると
上記種類の文字は欧文フォントを用いて組まれるようになる.
- 詳しい説明は\ref{ssec-setrange}節を参照してほしい.
+ 詳しい説明は\ref{ssec:setrange}節を参照してほしい.
また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は
バージョン20150906.0から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では
%<*en>
\item Characters are classified into following two types.
Note that the classification can be customized by a user
- (see Subsection~\ref{ssec-setrange}).
+ (see Subsection~\ref{ssec:setrange}).
%</en>
%<*ja>
\item 文字は次の2種類に分けられる.この類別は固定されているものではなく,ユーザが後から変更可能である
- (\ref{ssec-setrange}節を参照).
+ (\ref{ssec:setrange}節を参照).
%</ja>
\begin{itemize}
%<*en>
%<ja>本プロジェクトはOSDNのサービスを用いて運営されている.
%<en>\paragraph{Members}\
-%<ja>\paragraph{開発メンバー}\
+%<ja>\clearpage\paragraph{開発メンバー}\
%<*en>
\begin{multienumerate}
% \paragraph{Acknowledgments} -- 挿入するならここ
-\clearpage
+%<en>\clearpage
%<en>\section{Getting Started}
%<ja>\section{使い方}
%<en>\subsection{Installation}
%<ja>\subsection{インストール}
-
+\label{ssec:install}
%<en>The following packages are needed for the \LuaTeX-ja\ package.
%<ja>\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である.
\begin{itemize}
-\item \LuaTeX\ beta-0.85.0 (or later)
-\item \Pkg{luaotfload} v2.6 (or later)
+\item \href{http://www.luatex.org/}{\LuaTeX}\ 1.0.0 (or later)
+\item recent \href{https://github.com/latex3/luaotfload}{\Pkg{luaotfload}} (v3.1 or later recommended)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
-\item \Pkg{etoolbox}, \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
+\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}
-\item \Pkg{fontspec} v2.4 (or later)
+\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/})}
\end{itemize}
-%<en>In summary, \LuaTeX-ja version 20160404.0 (or~later) no longer supports \TeX~Live~2015.
-%<*ja>
-要約すると,バージョン20160404.0以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{%
- もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である.
-}.
-%</ja>
+
%<*en>
Now \LuaTeX-ja is available from
the following distributions:
\begin{itemize}
\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})
+ \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})
\end{itemize}
IPAex fonts are also available in these distributions.
%</en>
W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある.
%</ja>
-% %<*ja>
-% 例えば\TeX~Live~2015を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
-% 使ってインストールすることができる.
-% \begin{lstlisting}
-% $ tlmgr install luatexja
-% \end{lstlisting}
-% %</ja>
-% %<*en>
-% If you are using \TeX~Live~2015, you can install \LuaTeX-ja
-% from \TeX~Live manager (\texttt{tlmgr}):
-% \begin{lstlisting}
-% $ tlmgr install luatexja
-% \end{lstlisting}
-% %</en>
+%<*en>
+\paragraph{Using \LuaTeX-ja with LuaHB\TeX}
+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,
+but with unwanted results (especially, vertical typesetting and \cs{CID}).
+
+Especially,
+\emph{We don't recommend defining a Japanese font with HarfBuzz},
+by specifying \texttt{Renderer=Harfbuzz}~etc.\ (\Pkg{fontspec}) or~{mode=harf} (otherwise).
+%</en>
+%<*ja>
+\paragraph{LuaHB\TeX 下での\LuaTeX-jaの使用}
+現時点では,LuaHB\TeX 下での\LuaTeX-jaの使用は十分にテストされていない.
+エラーが発生せずにタイプセットできるかもしれないが,特に縦組時や
+\cs{CID}などで意図しない結果となりうる可能性が大きい.
+
+特に,\texttt{Renderer=Harfbuzz}等(\Pkg{fontspec})や\texttt{mode=harf}指定(それ以外)を用いて
+\emph{和文フォントに対してHarfBuzzを用いることは推奨しない}.
+%</ja>
%<en>\paragraph{Manual installation}
%<ja>\paragraph{手動インストール方法}
At the present, \LuaTeX-ja has no \emph{stable} release.
\begin{itemize}
-\item Clone the Git repository:
+\item Clone the Git repository by
\begin{lstlisting}
$ git clone git://git.osdn.jp/gitroot/luatex-ja/luatexja.git
\end{lstlisting}
開発版であって,安定版でないことに注意.
\begin{itemize}
-\item Gitリポジトリをクローンする:
+\item Gitリポジトリを次のコマンドでクローンする:
\begin{lstlisting}
$ git clone git://git.osdn.jp/gitroot/luatex-ja/luatexja.git
\end{lstlisting}
-\item \texttt{master} ã\83\96ã\83©ã\83³ã\83\81ã\81®ã\82¹ã\83\8aã\83\83ã\83\97ã\82·ã\83§ã\83\83ã\83\88ï¼\88\texttt{tar.gz} å½¢å¼\8fï¼\89ã\82\92ã\83\80ã\82¦ã\83³ã\83ã\83¼ã\83\89ã\81\99ã\82\8bï¼\8e
+\item \texttt{master} ã\83\96ã\83©ã\83³ã\83\81ã\81®ã\82¹ã\83\8aã\83\83ã\83\97ã\82·ã\83§ã\83\83ã\83\88ï¼\88\texttt{tar.gz} å½¢å¼\8fï¼\89ã\82\92ã\83\80ã\82¦ã\83³ã\83ã\83¼ã\83\89ã\81\99ã\82\8bï¼\9a
\begin{flushleft}
\url{http://git.osdn.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
\end{flushleft}
$ luatex ltj-kinsoku_make.tex
\end{lstlisting}
%<*en>
-\emph{Do not forget The last line (processing \texttt{ltj-kinsoku\_make.tex})}.
+\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>
従来日本語の文字コードとして用いられてきたEUC-JPやShift-JISは使用できない.
%</ja>
%<*en>
-\item \LuaTeX-ja is very slower than \pTeX.
- Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja
- about 30\% faster than \LuaTeX, but not always%
- \footnote{%
- LuaJIT has the 1\,GB~(or~2\,GB) memory limitation. So typesetting a large source by LuaJIT\TeX\
- may cause an ``out of memory'' error.
- }.
+\item \LuaTeX-ja is very slower than \pTeX, and uses a lot of memory.
%</en>
%<*ja>
\item \LuaTeX-jaは動作が\pTeX に比べて非常に遅い.
-コードを調整して徐々に速くしているが,まだ満足できる速度ではない.
-LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが,
-IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある
- \footnote{%
- LuaJITは1\,GB(あるいは2\,GB)のメモリ制限があることが知られている.そのため,
- 大きいソースファイルをLuaJIT\TeX でタイプセットするとLuaの側で``out of memory''エラーが発生してしまう.
- 本ドキュメントのように,「各ページごとにLuaで使っているメモリ容量をチェックし,
- 必要なら\texttt{collectgarbage("collect")}でガベージコレクタを実行」すると
- 状況が多少改善されるかもしれない.
- }.
+ コードを調整して徐々に速くしているが,まだ満足できる速度ではない.
+ また,和文フォントを読み込むために多量のメモリを消費することにも注意が必要である.
%</ja>
\item%
%<en>\subsection{Using in plain \TeX}
%<ja>\subsection{plain \TeX で使う}
-\label{ssec-plain}
+\label{ssec:plain}
%<en>To use \LuaTeX-ja in plain \TeX, simply put the following at the beginning of the document:
%<ja>\LuaTeX-jaを plain \TeX で使うためには,単に次の行をソースファイルの冒頭に追加すればよい:
%<*en>
\item The following 12~Japanese fonts are preloaded:
\begin{center}\small
-\begin{tabular}{cccccc}
+\begin{tabular}{llllll}
\toprule
\textbf{direction}&
\textbf{classification}&\textbf{font name}&\bfseries ``10\,pt''&\bfseries ``7\,pt''&\bfseries ``5\,pt''\\\midrule
%<*ja>
\item 以下の12個の和文フォントが定義される:
\begin{center}\small
-\begin{tabular}{cccccc}
+\begin{tabular}{llllll}
\toprule
\emph{組方向}&\emph{字体}&\emph{フォント名}&\bfseries``10\,pt''&\bfseries``7\,pt''&\bfseries``5\,pt''\\\midrule
-\smash{\raisebox{-1ex}{横組}}&
+\smash{\raisebox{-0.7\zh}{横組}}&
明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
-&ゴシック体&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
+&\textgt{ゴシック体}&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
\midrule
-\smash{\raisebox{-1ex}{縦組}}&
+\smash{\raisebox{-0.7\zh}{縦組}}&
明朝体&IPAex明朝&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
-&ゴシック体&IPAexゴシック&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
+&\textgt{ゴシック体}&IPAexゴシック&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
\bottomrule
\end{tabular}
\end{center}
%</ja>
\begin{itemize}
%<*en>
-\item With \texttt{luatexja.cfg}, one can use other fonts
-as ``default'' Japanese fonts (Subsection~\ref{ssec-cfg}).
+\item The ``default'' Japanese fonts (and~JFMs for them) can be
+ modified by defining \cs{ltj@stdmcfont} etc.\ \emph{before}
+ one inputs \texttt{luatexja.sty} (Subsection~\ref{ssec:cfg}).
%</en>
%<*ja>
-\item \texttt{luatexja.cfg} を用いることによって,標準和文フォントを
-IPAexフォントから別のフォントに置き換えることができる.\ref{ssec-cfg}節を参照.
+\item 標準和文フォントやJFMをIPAexフォントから別のものに置き換えるには,
+ \cs{ltj@stdmcfont}等を\texttt{luatexja.sty}読み込み\emph{前}に定義すればよい.
+ \ref{ssec:cfg}節を参照.
%</ja>
%<*en>
%<en>\subsection{Using in \LaTeX}
%<ja>\subsection{\LaTeX で使う}
-\label{ssec-ltx}
+\label{ssec:ltx}
%<*en>
Using in \LaTeXe\ is basically same. To set up the minimal environment
\end{lstlisting}
%<*en>
It also does minimal settings (counterparts in \pLaTeX\ are \texttt{%
-plfonts.dtx} and \texttt{pldefs.ltx}):
+plfonts.dtx} and \texttt{pldefs.ltx}).
%</en>
%<*ja>
これで\pLaTeX の\texttt{plfonts.dtx}と\texttt{pldefs.ltx}に相当する最低限の設定が
-ã\81ªã\81\95ã\82\8cã\82\8bï¼\9a
+ã\81ªã\81\95ã\82\8cã\82\8bï¼\8e
%</ja>
\begin{itemize}
\item
By default, the following fonts are used for these two families.
\begin{center}\small
-\begin{tabular}{ccccc}
+\begin{tabular}{lllll}
\toprule
-\textbf{classification}&\textbf{family}&\cs{mdseries}&\cs{bfseries}&\textbf{scale}\\\midrule
-\emph{mincho} (明朝体)&\tt mc&IPAex Mincho&IPAex Gothic&0.962216\\
-\emph{gothic} (\textgt{ゴシック体})&\tt gt&IPAex Gothic&IPAex Gothic&0.962216\\
+\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\\
\bottomrule
\end{tabular}
\end{center}
-Note that the bold series in both family are same as the medium series of gothic
- family. There is no italic nor slanted shape for
- these \texttt{mc}~and~\texttt{gt}.
+\item Note that the bold series (series \texttt{bx}~or~\texttt{b}) in both family
+ are same as the medium series of gothic family.
+ There is no italic nor slanted shape for these \texttt{mc}~and~\texttt{gt}.
%</en>
%<*ja>
\item \pLaTeX と同様に,標準では「明朝体」「ゴシック体」の2種類を用いる:
\begin{center}\small
-\begin{tabular}{cllc}
+\begin{tabular}{llll}
\toprule
\emph{字体}&&&\emph{ファミリ名}\\\midrule
明朝体&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
\bottomrule
\end{tabular}
\end{center}
+ \newpage
\item 標準では,次のフォントが用いられる:
\begin{center}\small
-\begin{tabular}{ccccc}
+\begin{tabular}{lllll}
\toprule
-\emph{字体}&\emph{ファミリ}&\cs{mdseries}&\cs{bfseries}&\emph{スケール}\\\midrule
-明朝体&\tt mc&IPAex明朝&IPAexゴシック&0.962216\\
-ゴシック体&\tt gt&IPAexゴシック&IPAexゴシック&0.962216\\
+\emph{字体}&\emph{ファミリ}&\textbf{\cs{mdseries}}&\textbf{\cs{bfseries}}&\emph{スケール}\\\midrule
+明朝体&\texttt{mc}&IPAex明朝&IPAexゴシック&0.962216\\
+\textgt{ゴシック体}&\texttt{gt}&IPAexゴシック&IPAexゴシック&0.962216\\
\bottomrule
\end{tabular}
\end{center}
-どちらのファミリにおいても,太字(\cs{bfseries})のフォントは
+
+明朝・ゴシックどちらのファミリにおいても,太字(\cs{bfseries})のフォントは
ゴシック体中字(\cs{gtfamily}\cs{mdseries})で使われるフォントと同じであることに注意.
また,どちらのファミリでもイタリック体・スラント体は定義されない.
+
+ \item 和文の太字を表すシリーズ名は,(元々のComputer Modernが
+ 太字に\texttt{bx}を用いていたことから)伝統的に\texttt{bx}~(Bold Extended)が使われてきた.
+ しかし,太字にシリーズ\texttt{b}を使うフォントも増えてきたため,
+ バージョン20180616.0以降では和文の太字として\texttt{bx},~\texttt{b}の両方を扱えるようにした.
%</ja>
-%<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
-%<ja>\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される.
+%<*en>
+ \item From version~20181102.0, one can specifies \texttt{disablejfam} option at
+ loading \LuaTeX-ja. This option prevents loading a patch for \LaTeX, which are
+ needed to support Japanese characters in math mode.
+
+ Without \texttt{disablejfam} option, one can typeset Japanese characters in
+ math mode as~\verb+$あ$+ (see Page~\pageref{para:jachar_in_math}) as before.
+ Japanese characters in math mode are typeset by the font family \texttt{mc}.
+%</en>
+%<*ja>
+ \item バージョン20181102.0以降では,\texttt{disablejfam}オプションを\LuaTeX-ja読み込み時に
+ 指定できるようになった.このオプションは,数式モード中に直に和文文字を書けるようにするための
+ \LaTeX へのパッチを読み込まない.
+
+ \texttt{disablejfam}のない状況では,以前と同様に和文文字を数式モード中に
+ 直に書くことができる(但し\autoref{para:jachar_in_math}ページの記述も参照).
+ その際には明朝体(\texttt{mc})で出力される.
+%</ja>
%<*en>
\item \cs{jttdefault}%
\footnote{%
\renewcommand{\kanjifamilydefault}{\gtdefault}
\end{lstlisting}
+%<*ja>
+\item \pLaTeX と同様に,\texttt{mc},~\texttt{gt}両ファミリには「従属欧文」書体が定義されている.
+ これらは\cs{userelfont}を\cs{selectfont}(や,その他の「実際に」
+ フォントを変更する命令)の前で実行することにより使うことができる.
+
+ \pLaTeX では標準の欧文フォントはOT1エンコーディングのComputer Modern Roman (\texttt{cmr})%
+ であったが,2017年以降の\LuaLaTeX ではTUエンコーディングのlatin Modern Roman (\texttt{lmr})%
+ に変更されている.そのため,前段落で述べた「従属欧文」も,Latin Modern Romanに設定している.
+%</ja>
\end{itemize}
However, above settings are not sufficient for Japanese-based
documents. To typeset Japanese-based documents, you are better to use
class files other than \texttt{article.cls}, \texttt{book.cls}, and so on. At
-the present, we have the counterparts of \Pkg{jclasses} (standard
+the present, \LuaTeX-ja has the counterparts of \Pkg{jclasses} (standard
classes in \pLaTeX) and \Pkg{jsclasses} (classes by Haruhiko
Okumura), namely, \Pkg{ltjclasses}\footnote{%
\texttt{ltjarticle.cls},~\texttt{ltjbook.cls}, \texttt{ltjreport.cls},
\texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls}, \texttt{ltjsreport.cls},~\texttt{ltjskiyou.cls}.}.
Original \Pkg{jsclasses} use \cs{mag}~primitive to set the main document font size.
-However, \LuaTeX\ beta-0.87.0~or~later does not support \cs{mag} in PDF~output,
-so \Pkg{ltjsclasses} use different method%
-\footnote{Similar to \texttt{magstyle=xreal} in the \Pkg{BXjscls} classes (by Takayuki Yato).}
-to set the main document font size.
+However, \LuaTeX\ does not support \cs{mag} in PDF~output,
+so \Pkg{ltjsclasses} uses the \texttt{nomag*} option\footnote{Same effect as
+ the \Pkg{BXjscls} classes (by Takayuki Yato) and \Pkg{jsclasses}.
+ However, these classes uses only \TeX\ code, but \Pkg{ltjsclasses} uses Lua code.}
+ by default to set the main font size. If this causes some unexpected behavior, specify
+\texttt{nomag} option in \cs{documentclass}.
%</en>
%<*ja>
しかしながら,上記の設定は日本語の文書にとって十分とは言えない.
},
\Pkg{ltjsclasses}\footnote{%
\texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls}, \texttt{ltjsreport.cls},~\texttt{ltjskiyou.cls}.}%
-がそれぞれ用意されている.
+がそれぞれ\LuaTeX-ja標準で用意されている.
-元々の\Pkg{ltjsclasses}ではフォントサイズを指定するのに\cs{mag}プリミティブが使われていたが,
-\LuaTeX~beta-0.87.0以降ではPDF出力時の\cs{mag}のサポートが廃止された.
-そのため,\Pkg{ltjsclasses}では別の方法
-\footnote{八登崇之氏による\Pkg{BXjscls}クラスにおける\texttt{magstyle=xreal}指定時と類似している.}で
-フォントサイズを指定することにしている.
+元々の\Pkg{jsclasses}では本文のフォントサイズを設定するのに\cs{mag}プリミティブが使われていたが,
+\LuaTeX ではPDF出力時の\cs{mag}のサポートが廃止された.
+そのため,\Pkg{ltjsclasses}では\texttt{nomag*}オプション
+\footnote{\Pkg{jsclasses}や,八登崇之氏による\Pkg{BXjscls}クラスにおける同名のオプションと
+ 同じ.上記クラスは\TeX コードのみで実装しているが,\Pkg{ltjsclasses}ではLuaコードも用いている.}が標準で
+有効になっており,これを使って本文フォントサイズの設定を行っている.
+しかし,この\texttt{nomag*}オプションでは(バージョン20180121.0より前で\Pkg{unicode-math}パッケージ使用時に起きたように)予想外の意図しない現象に遭遇する危険がある.そのような場合は
+\cs{documentclass}において\texttt{nomag}オプションを指定してほしい.
%</ja>
%<*ja>
%<ja>\section{フォントの変更}
\subsection{plain \TeX~and~\LaTeXe}
-\label{ssec-chgfnt}
+\label{ssec:chgfnt}
\paragraph{plain \TeX}
%<*en>
To change Japanese fonts in plain \TeX, you must use the command
-\cs{jfont}~and~\cs{tfont}. So please see Subsection~\ref{ssec-jfont}.
+\cs{jfont}~and~\cs{tfont}. So please see Subsection~\ref{ssec:jfont}.
%</en>
%<*ja>
plain \TeX で和文フォントを変更するためには,
\pTeX のように \cs{jfont} 命令や \cs{tfont} 命令を直接用いる.
-\ref{ssec-jfont}節を参照.
+\ref{ssec:jfont}節を参照.
%</ja>
\paragraph{\LaTeXe\ (NFSS2)}
%<*en>
\begin{center}\small
-\begin{tabular}{cccccc}
+\begin{tabular}{>{\bfseries}llllll}
\toprule
&\textbf{encoding}&\textbf{family}&\textbf{series}&\textbf{shape}&\textbf{selection}\\\midrule
-alphabetic fonts
+Alphabetic fonts
&\cs{romanencoding}&\cs{romanfamily}&\cs{romanseries}&\cs{romanshape}
&\cs{useroman}\\
Japanese fonts
%</en>
%<*ja>
\begin{center}\small
-\begin{tabular}{cccccc}
+\begin{tabular}{llllll}
\toprule
&\emph{エンコーディング}&\emph{ファミリ}&\emph{シリーズ}&\emph{シェープ}&\emph{選択}\\\midrule
-欧文
+\emph{欧文}
&\cs{romanencoding}&\cs{romanfamily}&\cs{romanseries}&\cs{romanshape}
&\cs{useroman}\\
-和文
+\emph{和文}
&\cs{kanjiencoding}&\cs{kanjifamily}&\cs{kanjiseries}&\cs{kanjishape}
&\cs{usekanji}\\
-両方&---&--&\cs{fontseries}&\cs{fontshape}&---\\
-自動選択&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
+\emph{両方}&---&--&\cs{fontseries}&\cs{fontshape}&---\\
+\emph{自動選択}&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
\bottomrule
\end{tabular}
\end{center}
alphabetic fonts to \texttt{T1}.
\cs{fontfamily} also changes the current Japanese font family,
the current alphabetic font family, \emph{or both}.
- For the detail, see Subsection~\ref{ssec-nfsspat}.
+ For the detail, see Subsection~\ref{ssec:nfsspat}.
%</en>
%<*ja>
ここで,\verb+\fontencoding{+<encoding>\verb+}+ は,引数により和文側か欧文
\texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を
\texttt{T1}へと変更する.\cs{fontfamily} も引数により和文側,欧文
側,\emph{あるいは両方}のフォントファミリを変更する.詳細は
- \ref{ssec-nfsspat}節を参照すること.
+ \ref{ssec:nfsspat}節を参照すること.
%</ja>
%<*en>
\end{lstlisting}
%<*ja>
仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は
-\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
-\cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ.
+\ref{ssec:altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
+\cs{DeclareAlternateKanjiFont}(\ref{ssec:nfsspat}節)を参照せよ.
%</ja>
\end{itemize}
%<*en>
-\paragraph{Remark: Japanese characters in math mode}
+\paragraph{Japanese characters in math mode}
+\label{para:jachar_in_math}
+
Since \pTeX\ supports Japanese characters in math mode, there are
sources like the following:
%</en>
%<*ja>
-\paragraph{注意:数式モード中の和文文字}
+\paragraph{数式モード中の和文文字}
+\label{para:jachar_in_math}
+
\pTeX では,特に何もしないでも数式中に和文文字を記述することができた.そのため,
以下のようなソースが見られた:
%</ja>
$f_{\text{高温}}$~%
($f_{\text{high temperature}}$).
\[ y=(x-1)^2+2\quad
- \mathrel{\text{よって}}\quad y>0 \]
+ \mathrel{\mbox{よって}}\quad y>0 \]
$5\in 素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
\end{LTXexample}
+
%<*en>
We also believe that using Japanese characters as identifiers is rare,
hence we don't describe how to change Japanese fonts in math mode in
-this chapter. For the method, please see Subsection~\ref{ssec-math}.
+this chapter. For the method, please see Subsection~\ref{ssec:math}.
+
+{\emshape When \LuaTeX-ja is loaded with \texttt{disablejfam}~option,
+ one cannot write Japanese characters in math mode as~\verb+$素$+.
+ At that case, one have to use \cs{mbox} (or~\cs{text} in the \Pkg{amsmath} package).
+}
%</en>
%<*ja>
-ã\81¾ã\81\9f\LuaTeX-jaプロジェクトでは,和文文字が識別子として用いられることはほとんどない
+ã\81ªã\81\8a\LuaTeX-jaプロジェクトでは,和文文字が識別子として用いられることはほとんどない
と考えており,したがってこの節では数式モード中の和文フォントを変更する方法については
-記述しない.この方法については\ref{ssec-math}節を参照のこと.
+記述しない.この方法については\ref{ssec:math}節を参照のこと.
+
+{\gtfamily\bfseries
+ 既に記述した通り,\texttt{disablejfam}オプションを指定して\LuaTeX-jaを読み込んだ場合は,
+ \verb+$素$+ のように直接和文文字を数式モード中に記述することはできなくなる.
+ \cs{mbox},あるいは\Pkg{amsmath}パッケージの提供する\cs{text}命令などを使うことになる.
+}
%</ja>
+
+
%<en>\subsection{\Pkg{luatexja-fontspec} package}
%<ja>\subsection{\Pkg{luatexja-fontspec}パッケージ}
-\label{ssec-fontspec}
+\label{ssec:fontspec}
%<*en>
To use the functionality of the \Pkg{fontspec} package to Japanese fonts,
it is needed to load the \Pkg{luatexja-fontspec} package in the preamble, as follows:
%</ja>
%<*en>
-In the \Pkg{luatexja-fontspec} package, the following seven~commands are defined as
-counterparts of original commands in the \Pkg{fontspec} package:
+In the \Pkg{luatexja-fontspec} package, several commands are defined as
+counterparts of original commands in the \Pkg{fontspec} package
+(see \autoref{tab:ltj_fntspc}):
%</en>
%<*ja>
-\Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec}
-パッケージの元のコマンドに対応するものとして定義している:
+\Pkg{luatexja-fontspec}パッケージでは,\autoref{tab:ltj_fntspc}の
+「和文」行に示した命令を\Pkg{fontspec}パッケージの元のコマンド(「欧文」行)
+に対応するものとして定義している:
%</ja>
%<*en>
-\begin{center}\small
-\begin{tabular}{ccccc}
+\begin{table}
+\caption{Commands of \Pkg{luatexja-fontspec}}\label{tab:ltj_fntspc}
+\medskip
+{\centering\small
+\begin{tabular}{>{\bfseries}lllll}
\toprule
Japanese fonts
&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
-alphabetic fonts
+Alphabetic fonts
&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
\midrule
Japanese fonts
-&\cs{newjfontfamily}&\cs{newjfontface}
-&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
-alphabetic fonts
-&\cs{newfontfamily}&\cs{newfontface}
-&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
+&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\
+Alphabetic fonts
+&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\
+\midrule
+Japanese fonts
+&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
+Alphabetic fonts
+&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
\bottomrule
-\end{tabular}
-\end{center}
+\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{center}\small
-\begin{tabular}{ccccc}
+\begin{table}
+\caption{\Pkg{luatexja-fontspec}で定義される命令}\label{tab:ltj_fntspc}
+\medskip
+{\centering\small
+\begin{tabular}{lllll}
\toprule
-和文
+\emph{和文}
&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
-欧文
+\emph{欧文}
&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
\midrule
-和文
-&\cs{newjfontfamily}&\cs{newjfontface}
-&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
-欧文
-&\cs{newfontfamily}&\cs{newfontface}
-&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
+\emph{和文}
+&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\
+\emph{欧文}
+&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\
+\midrule
+\emph{和文}
+&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
+\emph{欧文}
+&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
\bottomrule
-\end{tabular}
-\end{center}
+\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> The package option of \Pkg{luatexja-fontspec} are the followings:
\item[scale=<float>]
%<*en>
Override the ratio of the font size of Japanese fonts to that of alphabetic fonts.
-The default value is calculated automatically (for~example, about~0.924865 when
- the \Pkg{ltjsarticle} class is used).
+The default value is determined as follows:
+ \begin{itemize}
+ \item The value of \cs{Cjascale} is used, if this control sequence is already defined.
+ \item It is calculated automatically from the current Japanese font at the loading of the
+ package, if \cs{Cjascale} is not defined.
+ \end{itemize}
+\cs{Cjascale} is defined in \Pkg{ltjclasses} and \Pkg{ltjsclasses}.
%</en>
%<*ja>
-欧文に対する和文の比率は,標準では \Pkg{luatexja-fontspec}読み込み時の和欧文比率から
-自動計算される(例えば,\Pkg{ltjsarticle}クラス使用時には和文は欧文の約0.924865倍となる)が,
-それを手動で上書きするときに使用する.
+欧文に対する和文の比率を手動で上書きするときに使用する.
+標準では
+\begin{itemize}
+ \item \cs{Cjascale}が定義されている場合
+ \footnote{\LuaTeX-ja が用意しているクラスファイル(\Pkg{ltjclasses},~\Pkg{ltjsclasses})を
+ 使う場合はこちらに当てはまる.}は,それを用いる.
+ \item \cs{Cjascale}が未定義の場合は,\Pkg{luatexja-fontspec}読み込み時の和文フォントから自動計算される.
+\end{itemize}
%</ja>
\end{cslist}
\begin{quote}
\ttfamily
\hyphenchar\font=-1 \exhyphenchar=-1
- hiragino-pro, hiragino-pron, ipa, ipa-hg, ipaex, ipaex-hg,
+ haranoaji, hiragino-pro, hiragino-pron, ipa, ipa-hg, ipaex, ipaex-hg,
kozuka-pr6, kozuka-pr6n, kozuka-pro, moga-mobo, moga-mobo-ex,
- morisawa-pr6n, morisawa-pro, ms, ms-hg, noembed, noto-otc, noto-otf,
+ bizud, morisawa-pr6n, morisawa-pro, ms, ms-hg, noembed, noto-otc, noto-otf,
sourcehan, sourcehan-jp, ume, yu-osx, yu-win, yu-win10
\end{quote}
%<ja>として読み込み,小塚書体(Pr6N)を使うことを指定している.
%<en> which means that Kozuka~Pr6N fonts will be used in this document.
-%<*ja>
-上記のプリセット以外の和文フォント設定を使いたい場合,本来は
-\Pkg{luatexja-fontspec}パッケージの提供する
-\cs{setmainjfont}, \cs{setsansjfont}を使って自分で指定するべきである.
-\texttt{custom}オプションを使うことで,\Pkg{luatexja-preset}パッケージの内部に直接アクセスして
-\begin{lstlisting}
-\usepackage[kozuka-pr6n, % kozuka-pr6n プリセットを基礎にして,
- custom={
- mc=SourceHanSerif-Regular, % 明朝体(全ウェイト)
- mc-l=SourceHanSerif-Bold, % 明朝体細字
- mc-m=KozMinPr6N-Regular, % 明朝体中字
- % mc-bx=KozMinPr6N-Bold, % 明朝体太字
- % gt=HirakakuProN-W3, % ゴシック体(全ウェイト)
- % gt-m=SourceHanSans-Regular, % ゴシック体中字(deluxe オプション指定時)
- % gt-bx=HiraKakuProN-W6,ular, % ゴシック体太字
- % gt-eb=HiraKakuProN-W6,ular, % ゴシック体極太
- mg-m=HG Maru Gothic PRO, % 丸ゴシック体
- },
- deluxe,expert,jis2004,match,nfssonly
-]{luatexja-preset}
-\end{lstlisting}
-のようにすることもできるが,\texttt{custom}オプションの書式は予告なく変更されることがある
-上,\texttt{90jis}や\texttt{JIS2004}オプションとの相性があまり良くないので推奨はしない.
-%</ja>
-%<*en>
-To use a Japanese font setting which does not match with any presets,
-the legitimate method is to use \cs{setmainjfont}~and~\cs{setsansjfont}
-which are provided by the \Pkg{luatexja-fontspec} package.
-
-One can use the \texttt{custom} option, such as
-\begin{lstlisting}
-\usepackage[kozuka-pr6n, % based on the kozuka-pr6n preset (Kozuka Pr6N),
- custom={
- mc=SourceHanSerif-Regular, % mincho family (all weights)
- mc-l=SourceHanSerif-Bold, % mincho light
- mc-m=KozMinPr6N-Regular, % mincho medium
- % mc-bx=KozMinPr6N-Bold, % mincho bold
- % gt=HirakakuProN-W3, % gothic family (all weights)
- % gt-m=SourceHanSans-Regular, % gothic medium (with deluxe option)
- % gt-bx=HiraKakuProN-W6,ular, % gothic bold
- % gt-eb=HiraKakuProN-W6,ular, % gothic extra bold
- mg-m=HG Maru Gothic PRO, % rounded gothic
- },
- deluxe,expert,jis2004,match,nfssonly
-]{luatexja-preset}
-\end{lstlisting}
-However, we do not recommend this \cs{custom} option;
-the format might change, and this \cs{custom} option is not well-compatible with
-\texttt{90jis}~nor~\cs{jis2004} options.
-%</en>
%<*en>
\subsection{\cs{CID}, \cs{UTF}, and macros in \Pkg{japanese-otf} package}
これら3オプションについては,
\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか,
-あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や
-\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
+あるいは対応する内容を\ref{ssec:chgfnt}節,\ref{ssec:nfsspat}節 (NFSS2) や
+\ref{ssec:fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
%</ja>
-%<en>\subsection{Changing default Japanese fonts}
-%<ja>\subsection{標準和文フォントの変更}
-\label{ssec-cfg}
-%<*en>
-If \texttt{luatexja.cfg} can be seen from \LuaTeX, \LuaTeX-ja automatically reads it.
-The main use of \texttt{luatexja.cfg} is for changing default Japanese fonts,
-when IPAex fonts cannot be installed in \TeX~system.
-One should not overuse this \texttt{luatexja.cfg}; fonts which will be used in
-a document should be specified in its source.
-
-For example,
-\begin{lstlisting}
-\def\ltj@stdmcfont{IPAMincho}
-\def\ltj@stdgtfont{IPAGothic}
-\end{lstlisting}
-makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of
-IPAex~Mincho and IPAex~Gothic.
-
-For another example, the following two lines makes that
-non-embedded fonts Ryumin-Light~and~GothicBBB-Medium as default Japanese fonts
-(as the earlier version of \LuaTeX-ja):
-\begin{lstlisting}
-\def\ltj@stdmcfont{psft:Ryumin-Light}
-\def\ltj@stdgtfont{psft:GothicBBB-Medium}
-\end{lstlisting}
-%</en>
-%<*ja>
-\LuaTeX から見える位置に \texttt{luatexja.cfg} があれば,\LuaTeX-jaはそれを読み込む.
-このファイルを用いるとplain~\TeX, \LaTeXe における標準和文フォントを
-IPAex明朝・IPAexゴシックから変更することができる.
-しかし,基本的には\emph{文章中で用いるフォントは(例えば \Pkg{luatexja-preset} などで)
-文書ソース内で指定するべき}であり,この \texttt{luatexja.cfg} は,
-「IPAexフォントがインストールできない」など,IPAexフォントが使用できない場合にのみ
-応急処置的に用いるべきである.
-
-例えば
-\begin{lstlisting}
-\def\ltj@stdmcfont{IPAMincho}
-\def\ltj@stdgtfont{IPAGothic}
-\end{lstlisting}
-と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変
-更される.
-
-
-なお,20140906.0以前のバージョンのように,
-Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用いる場合は
-\begin{lstlisting}
-\def\ltj@stdmcfont{psft:Ryumin-Light}
-\def\ltj@stdgtfont{psft:GothicBBB-Medium}
-\end{lstlisting}
-と記述すればよい.
-%</ja>
-
-
%<en>\section{Changing Internal Parameters}
%<ja>\section{パラメータの変更}
%<en>\subsection{Range of \textbf{JAchar}s}
%<ja>\subsection{\textbf{JAchar}の範囲}
-\label{ssec-setrange}
+\label{ssec:setrange}
%<*en>
\LuaTeX-ja divides the Unicode codespace \texttt{U+0080}--\texttt{U+10FFFF}
it sets
\begin{itemize}
\item a character which belongs character ranges 1,~4, 5, and~8 is \textbf{ALchar},
- \item a character which belongs character ranges 2,~3, 6, and~7 is \textbf{JAchar}.
+ \item a character which belongs character ranges 2,~3, 6, 7,~and~9 is \textbf{JAchar}.
\end{itemize}
%</en>
%<*ja>
例えば,以下は\LuaTeX-jaの初期設定であり,次の内容を設定している:
\begin{itemize}
\item 1番,4番,5番,8番の文字範囲に属する文字は\textbf{ALchar}.
- \item 2番,3番,6番,7番の文字範囲に属する文字は\textbf{JAchar}.
+ \item 2番,3番,6番,7番,9番の文字範囲に属する文字は\textbf{JAchar}.
\end{itemize}
%</ja>
\begin{lstlisting}
-\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}}
+\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8, +9}}
\end{lstlisting}
%<*en>
The argument to \textsf{jacharrange} parameter is a list of non-zero integer.
%<*en>
\paragraph{Default character ranges}
-\LuaTeX-ja predefines eight character ranges for convenience. They are
+\LuaTeX-ja predefines nine character ranges for convenience. They are
determined from the following data:
%</en>
%<*ja>
\paragraph{文字範囲の初期値}
-\LuaTeX-jaでは8つの文字範囲を予め定義しており,
+\LuaTeX-jaでは9つの文字範囲を予め定義しており,
これらは以下のデータに基づいて決定している.
%</ja>
\begin{itemize}
-%<en>\item Blocks in Unicode~6.0.
-%<ja>\item Unicode~6.0のブロック.
-%<en>\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode.
-%<ja>\item Adobe-Japan1-6のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}.
+%<en>\item 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.
%<en>\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato.
%<ja>\item 八登崇之氏による\upTeX 用の\Pkg{PXbase}バンドル.
\end{itemize}
%<*en>
-Now we describe these eight ranges. The superscript ``J'' or ``A'' after the
+Now we describe these nine ranges. The superscript ``J'' or ``A'' after the
number shows whether each character in the range is treated as
\textbf{JAchar}s or not by default. These settings are similar to the
\texttt{prefercjk} settings defined in \texttt{PXbase} bundle.
these eight ranges belongs to the character range~217.
%</en>
%<*ja>
-以下ではこれら8つの文字範囲について記述する.添字のアルファベット「J」「A」
+以下ではこれら9つの文字範囲について記述する.添字のアルファベット「J」「A」
は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの初期設定は
\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものであるが,
8ビットフォント使用時のトラブルを防ぐために \texttt{U+0080}--\texttt{U+00FF} の文字は全部
\textbf{ALchar}としている.
-なお,\texttt{U+0080} 以降でこれら8つの文字範囲に属さない文字は,217番の文字範囲に属することになっている.
+なお,\texttt{U+0080} 以降でこれら9つの文字範囲に属さない文字は,217番の文字範囲に属することになっている.
%</ja>
\begin{description}
%<*en>
-
\item[Range~8${}^{\text{A}}$] The intersection of the upper half of ISO~8859-1
- (Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range
- consists of the following characters:
+ (Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese).
+ The character list is indicated in \autoref{tab:rng8}.
%</en>
%<*ja>
\item[範囲8${}^{\text{A}}$] ISO~8859-1の上位領域(ラテン1補助)と
- JIS~X~0208の共通部分.この文字範囲は
- 以下の文字で構成される:
+ JIS~X~0208の共通部分.文字のリストは\autoref{tab:rng8}を参照.
%</ja>
-\begin{multicols}{2}
-\begin{itemize}
-\def\ch#1#2{\item \char"#1\ (\texttt{U+00#1}, #2)}%"
-\ch{A7}{Section Sign}
-\ch{A8}{Diaeresis}
-\ch{B0}{Degree sign}
-\ch{B1}{Plus-minus sign}
-\ch{B4}{Spacing acute}
-\ch{B6}{Paragraph sign}
-\ch{D7}{Multiplication sign}
-\ch{F7}{Division Sign}
-\end{itemize}
-\end{multicols}
+\begin{table}[!tb]
+%<en>\caption{Characters in predefined character range~8.}\medskip
+%<ja>\caption{文字範囲8に指定されている文字.}
+\label{tab:rng8}
+\centering\footnotesize
+\def\ch#1{\char"#1~(\texttt{U+00#1})}%"
+\begin{tabular}{llll}
+\ch{A7}&{Section Sign}&
+\ch{A8}&{Diaeresis}\\
+\ch{B0}&{Degree sign}&
+\ch{B1}&{Plus-minus sign}\\
+\ch{B4}&{Spacing acute}&
+\ch{B6}&{Paragraph sign}\\
+\ch{D7}&{Multiplication sign}&
+\ch{F7}&{Division Sign}
+\end{tabular}
+\end{table}
%<*en>
-\item[Range~1${}^{\text{A}}$] Latin characters that some of them are included in Adobe-Japan1-6.
-This range consists of the following Unicode ranges, \emph{except characters in the range~8 above}:
+\item[Range~1${}^{\text{A}}$] Latin characters that some of them are included in Adobe-Japan1-7.
+ This range consists of the Unicode ranges indicated in \autoref{tab:rng1},
+ \emph{except characters in the range~8 above}.
%</en>
%<*ja>
-\item[範囲1${}^{\text{A}}$] ラテン文字のうち,Adobe-Japan1-6との共通部分があるもの.
- この範囲は以下のUnicodeのブロックのうち
- \emph{ç¯\84å\9b²8ã\82\92é\99¤ã\81\84ã\81\9f}é\83¨å\88\86ã\81§æ§\8bæ\88\90ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bï¼\9a
+\item[範囲1${}^{\text{A}}$] ラテン文字のうち,Adobe-Japan1-7との共通部分があるもの.
+ この範囲は\autoref{tab:rng1}で示したUnicodeのブロックのうち
+ \emph{ç¯\84å\9b²8ã\82\92é\99¤ã\81\84ã\81\9f}é\83¨å\88\86ã\81§æ§\8bæ\88\90ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bï¼\8e
%</ja>
-\begin{multicols}{2}
-\begin{itemize}
-\item \texttt{U+0080}--\texttt{U+00FF}: Latin-1 Supplement
-\item \texttt{U+0100}--\texttt{U+017F}: Latin Extended-A
-\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B
-\item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions
-\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters
-%<en>\par\
-\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks
-\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional
-%<ja>\par\
-\end{itemize}
-\end{multicols}
+\begin{table}[!tb]
+%<en>\caption{Unicode blocks in predefined character range~1.}\medskip
+%<ja>\caption{文字範囲1に指定されているUnicodeブロック.}
+\label{tab:rng1}
+\centering\footnotesize
+\begin{tabular}{llll}
+ \texttt{U+0080}--\texttt{U+00FF}&Latin-1 Supplement&
+ \texttt{U+0100}--\texttt{U+017F}&Latin Extended-A\\
+ \texttt{U+0180}--\texttt{U+024F}& Latin Extended-B&
+ \texttt{U+0250}--\texttt{U+02AF}& IPA Extensions\\
+ \texttt{U+02B0}--\texttt{U+02FF}& Spacing Modifier Letters&
+ \texttt{U+0300}--\texttt{U+036F}& Combining Diacritical Marks\\
+ \texttt{U+1E00}--\texttt{U+1EFF}&Latin Extended Additional
+\end{tabular}
+\end{table}
%<*en>
\item[Range~2${}^{\text{\kern.1emJ}}$] Greek and Cyrillic letters. JIS~X~0208 (hence most of Japanese
fonts) has some of these characters.
\end{itemize}
\end{multicols}
%<*en>
-\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is
+\item[Range~3${}^{\text{\kern.1emJ}}$] Miscellaneous symbols. The block list is
indicated in \autoref{tab:rng3}.
%</en>
%<*ja>
-\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは\autoref{tab:rng3}%
+\item[範囲3${}^{\text{\kern.1emJ}}$] 記号類.ブロックのリストは\autoref{tab:rng3}%
に示してある.
%</ja>
\begin{table}[!tb]
%<ja>\caption{文字範囲3に指定されているUnicodeブロック.}
\label{tab:rng3}
\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
-\centering\small
+\centering\footnotesize
\begin{tabular}{llll}
-"2000--"206F&General Punctuation&
"2070--"209F&Superscripts and Subscripts\\
"20A0--"20CF&Currency Symbols&
"20D0--"20FF&Comb.\ Diacritical Marks for Symbols\\
"2600--"26FF&Miscellaneous Symbols\\
"2700--"27BF&Dingbats&
"2900--"297F&Supplemental Arrows-B\\
-"2980--"29FF&Misc.\ Mathematical Symbols-B&
-"2B00--"2BFF&Miscellaneous Symbols and Arrows
+"2980--"29FF&Misc.\ Math Symbols-B&
+"2B00--"2BFF&Misc.\ Symbols and Arrows
+\end{tabular}
+\end{table}
+%<*en>
+\item[Range~9${}^{\text{J}}$] The intersection of the ``General Punctuation'' block
+ (\texttt{U+2000}--\texttt{U+206F})
+ and Adobe-Japan1-7 character collection.
+ This character range characters in \autoref{tab:rng9}.
+%</en>
+%<*ja>
+\item[範囲9${}^{\text{J}}$] Unicodeの「一般句読点」ブロック(\texttt{U+2000}--\texttt{U+206F})と
+ Adobe-Japan1-7の共通部分.
+ この文字範囲は\autoref{tab:rng9}に示した文字で構成される.
+%</ja>
+\begin{table}[!tb]
+%<en>\caption{Characters in predefined character range~9.}\medskip
+%<ja>\caption{文字範囲9に指定されている文字.}
+\label{tab:rng9}
+\centering\footnotesize
+\def\ch#1{%
+ {\fboxsep0pt\fcolorbox{cyan}{white}%
+ {\normalsize\char"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&
+ \ch{10}&{Hyphen}&\\
+ \ch{11}&{Non-breaking hyphen}&AJ&
+ \ch{13}&{En dash}&13\\
+ \ch{14}&{Em dash}&&
+ \ch{15}&{Horizontal bar}&\\
+ \ch{16}&{Double vertical line}&&
+ \ch{18}&{Left single quotation mark}&\\
+ \ch{19}&{Right single quotation mark}&&
+ \ch{1A}&{Single low-9 quotation mark}&AJ\\
+ \ch{1C}&{Left double quotation mark}&&
+ \ch{1D}&{Right double quotation mark}&\\
+ \ch{1E}&{Double low-9 quotation mark}&AJ&
+ \ch{20}&{Dagger}&\\
+ \ch{21}&{Double dagger}&&
+ \ch{22}&{Bullet}&13\\
+ \ch{25}&{Two dot leader}&&
+ \ch{26}&{Horizontal ellipsis}&\\
+ \ch{30}&{Per mille sign}&&
+ \ch{32}&{Prime}&\\
+ \ch{33}&{Double prime}&&
+ \ch{39}&{Single left-pointing angle quot.}&AJ\\
+ \ch{3A}&{Single right-pointing angle quot.}&AJ&
+ \ch{3B}&{Reference mark}&\\
+ \ch{3C}&{Double exclamation mark}&13&
+ \ch{3E}&{Overline}&\\
+ \ch{3F}&{Undertie}&13&
+ \ch{42}&{Asterism}&13\\
+ \ch{44}&{Fraction slash}&AJ&
+ \ch{47}&{Double question mark}&13\\
+ \ch{48}&{Question exclamation mark}&13&
+ \ch{49}&{Exclamation question mark}&13\\
+ \ch{51}&{Two asterisks aligned vertically}&13
\end{tabular}
\end{table}
%<*en>
\item[Range~4${}^{\text{A}}$] Characters usually not in Japanese fonts. This range consists
of almost all Unicode blocks which are not in other
predefined ranges. Hence, instead of showing the block list,
- we put the definition of this range itself:
+ we put the definition of this range itself.
%</en>
%<*ja>
\item[範囲4${}^{\text{A}}$] 通常和文フォントには含まれていない文字.
この範囲は他の範囲にないほとんど全てのUnicodeブロック
で構成されている.したがって,ブロックのリストを示す
- 代ã\82\8fã\82\8aã\81«ï¼\8cç¯\84å\9b²ã\81®å®\9a義ã\81\9dã\81®ã\82\82ã\81®ã\82\92示ã\81\99ï¼\9a
+ 代ã\82\8fã\82\8aã\81«ï¼\8cç¯\84å\9b²ã\81®å®\9a義ã\81\9dã\81®ã\82\82ã\81®ã\82\92示ã\81\99ï¼\8e
%</ja>
\begin{lstlisting}
\ltjdefcharrange{4}{%
"500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
- "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A82F, "A840-"ABFF, "FB00-"FE0F,
- "FE20-"FE2F, "FE70-"FEFF, "10000-"1FFFF, "E000-"F8FF} % non-Japanese
+ "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)
+} % non-Japanese
\end{lstlisting}
%<en>\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
%<ja>\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域.
%<ja>\caption{文字範囲6に指定されているUnicodeブロック.}
\label{tab:rng6}
\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
-\centering\small
+\centering\footnotesize
\begin{tabular}{llll}
"2460--"24FF&Enclosed Alphanumerics&
"2E80--"2EFF&CJK Radicals Supplement\\
"31F0--"31FF&Katakana Phonetic Extensions&
"3200--"32FF&Enclosed CJK Letters and Months\\
"3300--"33FF&CJK Compatibility&
-"3400--"4DBF&CJK Unified Ideographs Extension A\\
+"3400--"4DBF&CJK Unified Ideographs Ext-A\\
"4E00--"9FFF&CJK Unified Ideographs&
"F900--"FAFF&CJK Compatibility Ideographs\\
"FE10--"FE1F&Vertical Forms&
"FE30--"FE4F&CJK Compatibility Forms\\
"FE50--"FE6F&Small Form Variants&
-"{20}000--"{2F}FFF&(Supplementary Ideographic Plane)\\
-"{E0}100--"{E0}1EF&Variation Selectors Supplement
+"FF00--"FFEF&Halfwidth and Fullwidth Forms\\
+"{1B}000--"{1B}0FF&Kana Supplement&
+"{1B}100--"{1B}12F&Kana Extended-A\\
+%"{1B}130--"{1B}16F&Small Kana Extension
+"{1F}100--"{1F}1FF&Enclosed Alphanumeric Supp.&
+"{1F}200--"{1F}2FF&Enclosed Ideographic Supp.\\
+"{20}000--"{2F}FFF&(Supp. Ideographic Plane)&
+"{E0}100--"{E0}1EF&Variation Selectors Supp.
\end{tabular}
\end{table}
%<*en>
-\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in Adobe-Japan1-6.
+\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in Adobe-Japan1-7.
The block list is indicated in \autoref{tab:rng7}.
%</en>
%<*ja>
-\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に
+\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-7に
含まれていないもの.
ブロックのリストは\autoref{tab:rng7}に示す.
%</ja>
"31C0--"31EF&CJK Strokes&
"A000--"A48F&Yi Syllables\\
"A490--"A4CF&Yi Radicals&
-"A830--"A83F&Common Indic Number Forms\\
+"A960--"A97F&Hangul Jamo Extended-A\\
"AC00--"D7AF&Hangul Syllables&
"D7B0--"D7FF&Hangul Jamo Extended-B
\end{tabular}
\end{LTXexample}
%</ja>
+%<*ja>
+\paragraph{絵文字など,複数コードポイントの列で表現される字形をを利用する場合の注意}
+(\Pkg{luaotfload}による)OpenType機能や合字等の処理は,\LuaTeX-jaが
+段落・水平ボックスの中身全体に対して「この文字は\textbf{JAchar}だから和文フォントで組む」と
+フォントを置き換えた後に適用される.
+そのため,異体字セレクタや絵文字といった複数のコードポイントの列で表現される文字を
+組む場合には,列全体で\textbf{JAchar}の範囲か\textbf{ALchar}の範囲かが
+統一されていないといけない.
+
+例えば,CJK統合漢字(とその拡張達)と
+IVS用の異体字セレクタ(\texttt{U+E0100}--\texttt{U+E01EF})は標準では
+どちらも同じ文字範囲6であるため,(フォントがサポートしていれば)IVSは正しく機能する.
+しかし,下の例のように異体字セレクタを\textbf{ALchar}の文字範囲(4)に移動させると,
+IVSは機能しなくなる:
+\ltjdefcharrange{4}{"E0100-"E01EF}
+\begin{LTXexample}
+\ltjdefcharrange{4}{"E0100-"E01EF}
+葛󠄀城市,葛󠄁飾区,葛西
+\end{LTXexample}
+\ltjdefcharrange{6}{"E0100-"E01EF}
+
+また,標準では絵文字として使われる可能性が大きい一部の文字が\textbf{JAchar}となっている
+\footnote{同じUnicodeブロック内にAdobe-Japan1-6の文字があったため.}.
+絵文字を用いる場合にはこの点に留意する必要がある.
+
+\begin{center}
+ \begin{minipage}{.5\textwidth}\small\ttfamily
+\verb!\ltjsetparameter{jacharrange={+3}}!\\
+\verb!\font\nce=NotoColorEmoji.ttf:mode=harf\nce!\\
+\IVSA 1F469\UCSB{ZW}{J}\UCSA 2764\UCSB{VS}{16}\UCSB{ZW}J\IVSA 1F48B\UCSB{ZW}J\IVSA 1F468\
+ \textcolor{green}{\% U+2764: JAchar}\\
+\verb!\ltjsetparameter{jacharrange={-3}}!\\
+\IVSA 1F469\UCSB{ZW}{J}\UCSA 2764\UCSB{VS}{16}\UCSB{ZW}J\IVSA 1F48B\UCSB{ZW}J\IVSA 1F468\
+ \textcolor{green}{\% U+2764: ALchar}
+ \end{minipage}%
+ \begin{minipage}{.5\textwidth}
+\ltjsetparameter{jacharrange={+3}}
+\font\nce=NotoColorEmoji.ttf:mode=harf\nce
+👩❤️💋👨
+\ltjsetparameter{jacharrange={-3}}
+👩❤️💋👨
+ \end{minipage}
+\end{center}
+\ltjsetparameter{jacharrange={+3}}
+%</ja>
+
%<en>\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
%<ja>\subsection{\Param{kanjiskip}と\Param{xkanjiskip}}
\ltjsetparameter{alxspmode={`あ,preonly}, jaxspmode={`\!,postonly}}
\end{lstlisting}
%<*en>
-One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}).
+One can use also numbers to specify these two parameters (see Subsection~\ref{ssec:param}).
%</en>
%<*ja>
-また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param}節を参照).
+また,これら2パラメータには数値で値を指定することもできる(\ref{ssec:param}節を参照).
%</ja>
%<*en>
``ア'', not 20.
%</en>
%<*ja>
-\newpage
-\subsection{禁則処理関連パラメータとOpenTypeのfont feature}
+\subsection{禁則処理関連パラメータとOpenType機能}
禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち
\begin{quote}
\Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
\end{quote}
は,文字コードごとに設定する量である.
-\Pkg{fontspec}パッケージを使う(\ref{ssec-fontspec}節)場合など,
-各種のOpenType featureを適用することもあると思うが,前段落に述べたパラメータ類は,
-\emph{OpenType featureの適用前の文字コードによって適用される.}
+\Pkg{fontspec}パッケージを使う(\ref{ssec:fontspec}節)場合など,
+各種のOpenType機能を適用することもあると思うが,前段落に述べたパラメータ類は,
+\emph{OpenType機能の適用前の文字コードによって適用される.}
例えば,以下の例において10行目の「ア」は,\verb+hwid+ featureの適用により半角カタカナの「ア」
に置き換わる.しかし,その直後に挿入される \Param{postbreakpenalty}は,置換前の「ア」に対する値10である.
%</ja>
%<en>\medskip
\noindent\hfill
-\begin{tabular}{ccccc}
+\begin{tabular}{llccc}
\toprule
\bfseries \cs{kcatcode}&
%<*en>
\begin{itemize}
\item
\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}}
-is controlled by the character range, see Subsection~\ref{ssec-setrange}.
+is controlled by the character range, see Subsection~\ref{ssec:setrange}.
\item
\emph{Whether the character can be used in a control word}
is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual.
分割している:
\begin{description}
\item[欧文/和文の区別 (\upTeX)]
-\cs{ltjdefcharrange} と\textsf{jacharrange}パラメータ(\ref{ssec-setrange}節)
+\cs{ltjdefcharrange} と\textsf{jacharrange}パラメータ(\ref{ssec:setrange}節)
\item[制御綴中に使用可か]
\LuaTeX 自身の \cs{catcode} でよい
\item[\Param{jcharwidowpenalty}が挿入可か]
This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja,
since several control words containing Kanji or other fullwidth characters, such as
-\verb+\西暦+~or~\verb+\1年目西暦+ are used in \pTeX.
+\cs{西暦}~or~\cs{1年目西暦} are used in \pTeX.
Hence, \LuaTeX-ja have a counterpart of \texttt{unicode-letters.tex}
for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.}
%</en>
%<*ja>
ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では,
-文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode}
-で指定することとなる.plain \XeTeX における \cs{catcode} の初期設定は\
-\texttt{unicode-letters.tex} 中に記述されており,plain \LuaTeX ではそれを
-元にした \texttt{luatex-unicode-letters.tex} を用いている.
-\LaTeX では \cs{catcode} の設定はカーネルに \texttt{unicode-letters.def} として統合され.
+文字が制御綴内で使用できるかは通常の欧文文字と同じく\cs{catcode}%
+で指定することとなる.plain \XeTeX における\cs{catcode}の初期設定は%
+\texttt{unicode-letters.tex}中に記述されており,plain \LuaTeX ではそれを
+元にした\texttt{luatex-unicode-letters.tex}を用いている.
+\LaTeX では\cs{catcode}の設定はカーネルに\texttt{unicode-letters.def}として統合され.
このファイルを\XeLaTeX, \LuaLaTeX の両方が用いている.
-だが,\XeTeX における \cs{catcode} の初期設定と
+だが,\XeTeX における\cs{catcode}の初期設定と
\LuaTeX におけるそれは一致していない:
\begin{itemize}
- \item \texttt{luatex-unicode-letters.tex} の元になった\
-\texttt{unicode-letters.tex} が古い
- \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では
-\cs{XeTeXcharclass} の設定を行なっており,
-それによって漢字や仮名,および全角英数字の \cs{catcode} が11に設定されている.
-しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が
-まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな
+ \item \texttt{luatex-unicode-letters.tex} の元になった
+ \texttt{unicode-letters.tex}が古い
+ \item \texttt{unicode-letters.tex} 後半部や\texttt{unicode-letters.def}後半部では
+\cs{XeTeXcharclass}の設定を行なっており,
+それによって漢字や仮名,および全角英数字の\cs{catcode}が11に設定されている.
+しかし,\texttt{luatex-unicode-letters.tex}ではこの「後半部」が
+まるごと省略されており,また\LuaLaTeX でも\texttt{unicode-letters.def}後半部は実行されな
い.
\end{itemize}
言い換えると,
\LuaLaTeX では漢字や仮名を制御綴内に
使用することが可能になったが,全角英数字は相変わらず使用できない,
\end{description}
-これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり,
+これでは\pTeX で使用できた\cs{1年目西暦}\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり,
\LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは
-\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし,
-結果として\textbf{\XeTeX における初期設定と同じになるようにしている.}
+\texttt{unicode-letters.tex}の後半部にあたる内容を自前でパッチし,
+結果として\emph{\XeTeX における初期設定と同じになるようにしている.}
%</ja>
\begin{table}
{\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})} %"
\leavevmode\hbox to 0pt{\hss\begin{tabular}{cccccc}
\toprule
-%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
-%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
+%<en>&\textbf{row}&\textbf{col.}&\textbf{\pTeX}&\textbf{\upTeX}&\textbf{\LuaTeX-ja}\\
+%<ja>&\emph{区}&\emph{点}&\emph{\pTeX}&\emph{\upTeX}&\emph{\LuaTeX-ja}\\
\midrule
%\D 3000&1&1&N&N&Y\\
\D 30FB&1&6&N&Y&N\\
\end{tabular}\qquad
\begin{tabular}{cccccc}
\toprule
-%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
-%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
+%<en>&\textbf{row}&\textbf{col.}&\textbf{\pTeX}&\textbf{\upTeX}&\textbf{\LuaTeX-ja}\\
+%<ja>&\emph{区}&\emph{点}&\emph{\pTeX}&\emph{\upTeX}&\emph{\LuaTeX-ja}\\
\midrule
\D FF5C&1&35&N&N&Y\\
\D FF0B&1&60&N&N&Y\\
The fifth column (\emph{utod} direction) corresponds the ``\texttt{tate (math) direction}'' of \pTeX.
Directions can be changed by \cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod},
-only when the current list is null. Also, the direction of a math formula is changed to
+only when the current list is null.
+These commands cannot be executed in unrestricted horizontal modes, nor math modes.
+The direction of a math formula is changed to
\emph{utod}, when the direction outside the math formula is \emph{tate} (vertical writing).
%</en>
組方向は,\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} をそれぞれ使用することで,
現在作成中のリストやボックスが空の時にのみ変更可能である.
+ただし,現在のモードが非制限水平モードや(文中,別行立て問わず)数式モードであるときには
+組方向を変更することは出来ない.
また,縦組中の数式内のボックスは\pTeX と同じように組方向が \cs{utod} となる.
+
+なお,\LaTeX の下で\LuaTeX-jaを使用する場合,組方向変更命令には
+「新たな組方向下での和文フォントを必要なら読み込み(・選択する)」という
+処理が付け加えられている(\ref{ssec:ltx-jfm}節参照).
%</ja>
%<*en>
ボックスレジスタ \cs{box}<num> にセットされているボックスの幅・高さ・深さの取得や
変更にはそれぞれ \cs{wd},~\cs{ht},~\cs{dp} プリミティブを用いるのであった.
\pTeX ではこれらのプリミティブは,「現在の組方向におけるボックスの寸法」を指すもので,
-同じボックスに対しても現在の組方向によって返る値は異なるもであった.
+å\90\8cã\81\98ã\83\9cã\83\83ã\82¯ã\82¹ã\81«å¯¾ã\81\97ã\81¦ã\82\82ç\8f¾å\9c¨ã\81®çµ\84æ\96¹å\90\91ã\81«ã\82\88ã\81£ã\81¦è¿\94ã\82\8bå\80¤ã\81¯ç\95°ã\81ªã\82\8bã\82\82ã\81®ã\81§ã\81\82ã\81£ã\81\9fï¼\8e
\LuaTeX-jaにおいては状況が異なり,\cs{wd},~\cs{ht},~\cs{dp} が返す値は
現在の組方向には依存しない.下の例のように,横組のボックスが格納されていれば
%<ja>\section{フォントメトリックと和文フォント}
%<en>\subsection{\cs{jfont}}
%<ja>\subsection{\cs{jfont} 命令}
-\label{ssec-jfont}
+\label{ssec:jfont}
%<*en>
To load a font as a Japanese font (for horizontal direction), you must use the
\def\r#1#2{%
\hbox{\Large\vrule
\parbox[b]{7\zw}{%
- \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ \addjfontfeatures{YokoFeatures={JFM=#1}}\noindent
+ \color{#2}\transparent{0.5}
◆◆◆◆◆◆◆
ある日モモちゃんがお使いで迷子になって泣きました.
}\vrule}}
\def\s#1#2{%
\Large
\parbox[b]{7\zw}{%
- \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ \addjfontfeatures{YokoFeatures={JFM=#1}}\noindent
+ \color{#2}\transparent{0.5}
ちょっと!何
}}
\def\t#1#2#3{\hbox to 0pt{\hss%
%</ja>
\begin{description}
%<*en>
-\item[\tt jfm-ujis.lua] A standard horizontal JFM in \LuaTeX-ja. This JFM is
+\item[\texttt{jfm-ujis.lua}] A standard horizontal JFM in \LuaTeX-ja. This JFM is
based on \verb+upnmlminr-h.tfm+, a metric for UTF/OTF package that
is used in \upTeX. When you use the \Pkg{luatexja-otf} package, you should use this JFM.
%</en>
%<*ja>
-\item[\tt jfm-ujis.lua] \LuaTeX-jaの標準JFMである.このJFMは\upTeX で
+\item[\texttt{jfm-ujis.lua}] \LuaTeX-jaの標準JFMである.このJFMは\upTeX で
用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-h.tfm+ を
元にしている.\Pkg{luatexja-otf}パッケージを使うときはこのJFMを指定するべきである.
%</ja>
%<*en>
-\item[\tt jfm-jis.lua] A counterpart for \verb+jis.tfm+, ``JIS font
+\item[\texttt{jfm-jis.lua}] A counterpart for \verb+jis.tfm+, ``JIS font
metric'' which is widely used in \pTeX. A major difference between
\texttt{jfm-ujis.lua} and this \texttt{jfm-jis.lua} is that
most characters under \texttt{jfm-ujis.lua} are square-shaped,
rectangles.
%</en>
%<*ja>
-\item[\tt jfm-jis.lua] \pTeX で広く用いられている「JISフォントメトリック」
+\item[\texttt{jfm-jis.lua}] \pTeX で広く用いられている「JISフォントメトリック」
\verb+jis.tfm+ に相当するJFMである.\texttt{jfm-ujis.lua} とこの
\texttt{jfm-jis.lua} の主な違いは,\texttt{jfm-ujis.lua} ではほとんどの文字が
正方形状であるのに対し,\texttt{jfm-jis.lua} では横長の長方形状であることと,
\texttt{jfm-ujis.lua} では「?」「!」の直後に半角空白が挿入されることである.
%</ja>
%<*en>
-\item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
+\item[\texttt{jfm-min.lua}] A counterpart for \verb+min10.tfm+, which is one
of the default Japanese font metric shipped with \pTeX.
%</en>
%<*ja>
-\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM
+\item[\texttt{jfm-min.lua}] \pTeX に同梱されているデフォルトの和文用TFM
(\verb+min10.tfm+)に相当し,行末で文字が揃うようにするために「っ」など一部の文字幅が変わっ
ている.\verb+min10.tfm+ については\cite{min10}が詳しい.
%</ja>
\autoref{fig:kern-jfm}を参照.
\begin{itemize}
\item \emph{\cs{jfont} や,
-NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では
+NFSS2用の命令(\ref{ssec:chgfnt}節,\ref{ssec:nfsspat}節)における指定では
カーニング情報は標準で使用する}ことになっているようである.
言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
\begin{lstlisting}
%<*ja>
\paragraph{\texttt{extend}と\texttt{slant}}
-OpenType font featureと見かけ上同じような形式で指定できるものに,
+OpenType機能と見かけ上同じような形式で指定できるものに,
\begin{description}
\item[\texttt{extend=}<extend>] 横方向に<extend>倍拡大する.
\item[\texttt{slant=}<slant>] <slant>に指定された割合だけ傾ける.
3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は,
最後に指定したものが有効となる.
%</ja>
+%<*en>
+\paragraph{\texttt{ltjksp}}
+\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.
+\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}
+%</en>
+
+
%<en>\subsection{\cs{tfont}}
%<ja>\subsection{\cs{tfont} 命令}
-
+\label{ssec:tfont}
\begin{comment}
{\catcode`\<=12\catcode`\>=12
\def\r#1#2{%
\hbox{\tate\Large\vrule
\parbox{7\zw}{%
- \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ \addjfontfeatures{TateFeatures={JFM=#1}}\noindent
+ \color{#2}\transparent{0.5}
◆◆◆◆◆◆◆
ある日モモちゃんが「お使い」で迷子になって泣きました。
}\vrule}}
\def\s#1#2{%
\hbox{\tate\Large
\parbox{7\zw}{%
- \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ \addjfontfeatures{TateFeatures={JFM=#1}}\noindent
+ \color{#2}\transparent{0.5}
ちょっと!何
}}}
\def\t#1#2#3{\hbox to 0pt{\hss%
This command admits the same syntax used in \cs{font}~and~\cs{jfont}.
A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont}:
\begin{itemize}
- \item Both \texttt{vert}~and~\texttt{vrt2} Opentype features are activated,
- unless they are explicitly activated or deactivated (as the third line in the example below).
+ \item OpenType Feature~\texttt{vrt2}%
+ \footnote{If the font does not define \texttt{vrt2} feature,
+ use \texttt{vert} instead.} is automatically activated,
+ unless \texttt{vert}~and//or~\texttt{vrt2} are explicitly activated
+ or deactivated (as the second line in the example below).
\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv
- % vert and vrt2 are automatically activated
+\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\U=file:ipaexm.ttf:jfm=ujisv
+ % vert is automatically activated, since this font does not have vrt2
\end{lstlisting}
- \item ...
+ \item Sometimes \texttt{vert} and/or \texttt{vrt2} are not activated
+ while one specified activation of these feature.
+ This is because the font does not define these features in current combination of
+ script~tag and language~system~identifier.
+
+ In this situation, \LuaTeX-ja performs all replacements which is defined in~\texttt{vert}
+ feature for \emph{some} scripts for \emph{some} languages.
+ \item Furthermore, a glyph is automatically rotated 90~degrees,
+ if it is not replaced by \texttt{vert} feature for \emph{any} script
+ for \emph{any} language, and if it is marked as `r''~or~``Tr'' in UAX~\#50.
\item One have to specify the name of vertical JFM in \texttt{jfm=<name>}.
\LuaTeX-ja ships following vertical JFMs:
\begin{description}
-\item[\tt jfm-ujisv.lua] A standard vertical JFM in \LuaTeX-ja. This JFM is
+\item[\texttt{jfm-ujisv.lua}] A standard vertical JFM in \LuaTeX-ja. This JFM is
based on \verb+upnmlminr-v.tfm+, a metric for UTF/OTF package that
is used in \upTeX.
-\item[\tt jfm-tmin.lua] A counterpart for \verb+tmin10.tfm+, which is one
+\item[\texttt{jfm-tmin.lua}] A counterpart for \verb+tmin10.tfm+, which is one
of the default Japanese font metric shipped with \pTeX.
\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
+\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}
+\caption{\texttt{jpotf} ``feature''}
+\label{fig:jpotf}
+\end{figure}
+
+ \item If \texttt{vert}~and/or~\texttt{vrt2} features are activated,
+ one can specify \texttt{jpotf} to additional substitutions.
+ By default, it substitutes ideographic comma/period for fullwidth comma/period,
+ and double prime quotation marks for double quotation marks
+ (See~\autoref{fig:jpotf}).
\end{itemize}
%</en>
%<*ja>
\cs{tfont} で定義された縦組用和文フォントは,
以下の点が \cs{jfont} による横組用和文フォントとは異なる:
\begin{itemize}
- \item 自動的に \texttt{vert}, \texttt{vrt2} の両OpenType featureが有効化される.
-但し,以下の例の3行目に示すように,明示的に \texttt{vert}, \texttt{vrt2}(のいずれか)の
-有効・無効を指定した場合は別である.
+ \item 明示的に \texttt{vert}, \texttt{vrt2}(のいずれか)の
+ 有効・無効を指定した場合を除き,自動的に OpenType機能 \texttt{vrt2} の有効化が
+ 指定されたものとみなされる
+ \footnote{もしフォントが\texttt{vrt2}を定義していなかった場合,代わりに
+ \texttt{vert}を用いる.}.
\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv
- % vert and vrt2 are automatically activated
+\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vrt2 is automatically activated
\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
+\tfont\U=file:ipaexm.ttf:jfm=ujisv
+ % vert is automatically activated, since this font does not have vrt2
\end{lstlisting}
- \item \ref{ssec-math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
+ \item \texttt{vert}, \texttt{vrt2} の少なくとも一つの有効を指定した場合にも関わらず,
+ script tagとlanguage system identifierの値の組み合わせによって
+ 実際には有効にならなかった場合,\LuaTeX-jaは
+ \begin{quote}
+ どれかのscript,~languageで定義されている\texttt{vert}による
+ (単一グリフから単一グリフへの)置換を全部適用する
+ \end{quote}
+ という挙動を取る\footnote{%
+ 例えば,Windows~7に付属しているSimHeiでは,\texttt{vert}はScriptが\texttt{hani},
+ Languageが\texttt{CHN}という状況でのみ定義されている.しかし,\Pkg{luaotfload}では
+ このscript,~languageの組み合わせを指定することはできないので,
+ \Pkg{luaotfload}そのままでは\texttt{vert}を適用させることはできない.
+ }.
+ \item さらに,「いかなるscript,~languageでも\texttt{vert}により置換されない」グリフ
+ のうち,UAX~\#50で``r''もしくは``Tr''と指定されているものは90度自動回転させる.
+ \item \ref{ssec:math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
\item \texttt{jfm=<name>}\ の部分には縦組用JFMを指定する.
以下の縦組用JFMが\LuaTeX-jaには同梱されている.%おり,違いを\autoref{tab-difjfm-tate}に示した.
\begin{description}
-\item[\tt jfm-ujisv.lua] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で
+\item[\texttt{jfm-ujisv.lua}] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で
用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-v.tfm+ を
元にしている.
-\item[\tt jfm-tmin.lua] \pTeX に同梱されているデフォルトの和文用縦組TFM
+\item[\texttt{jfm-tmin.lua}] \pTeX に同梱されているデフォルトの和文用縦組TFM
である \verb+tmin10.tfm+ に相当し,\texttt{min10.tfm} と同様に
「っ」など一部の文字幅が狭められている.
\end{description}
+
+\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
+\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}
+\caption{\texttt{jpotf} ``feature''}
+\label{fig:jpotf}
+\end{figure}
+\begin{table}[t]
+ \def\D#1#2#3#4{%
+ {\fboxsep0pt\fcolorbox{cyan}{white}%
+ {\large\lower-\cdp\hbox{\tate\ltjjachar"#1#2#3#4}}}\ (\texttt{U+#1#2#3#4})%"
+ }
+ \caption{\texttt{jpotf}が指定された際に行われる追加の縦組形への置換}
+ \label{tab:vert_replace_jpotf}\small\centering
+ \begin{tabular}{*{2}{l@{}>{${}\longmapsto{}$}c@{}l}}
+ \toprule
+ \D FF0C&&\D 3001&\D FF0E&&\D 3002\\
+ \D 201C&&\D 301D&\D 201D&&\D 301F\\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+ \item \texttt{vert}, \texttt{vrt2}の少なくとも片方が(明示的・自動的を問わず)
+ 有効になっていた場合,さらに\texttt{jpotf}を指定することで
+ 「通常では行わない縦組用字形への置換」を行うことができる.
+
+ 標準では,\autoref{tab:vert_replace_jpotf}に示した置換が登録されている
+ \footnote{%
+ \texttt{jpotf}という名前にしたのは,
+ OTFパッケージの縦組用和文TFMでほぼ同じの処理(そちらではさらに一重引用符を
+ 「シングルミニュート」に置換する機能もあった)を行っていたことに由来する.
+ }.実行例は\autoref{fig:jpotf}を参照.
+
+ ユーザ側で「置換」をカスタマイズしたい場合,
+ \verb+luatexja.jfont.register_vert_replace+関数に変更内容を記したテーブルを渡す.
+ 例えば置換$i_1\longmapsto v_1$, $i_2\longmapsto v_2$,~$\dots$を登録する場合は
+ \begin{lstlisting}[escapechar=\!]
+\directlua{luatexja.jfont.register_vert_replace{[!$i_1$!]=!$v_1$!, [!$i_2$!]=!$v_2$!, ...}}
+ \end{lstlisting}
+ を実行する.
+ \verb+luatexja.jfont.register_vert_replace+による変更はこの関数の\emph{実行後}に定義される
+ フォントについてのみ有効である.
+
\end{itemize}
なお,\pTeX では,\cs{font},~\cs{jfont},~\cs{tfont}のどれでも欧文フォント・横組用和文フォン
ト・縦組用和文フォントの定義が可能であったが,\LuaTeX-jaではそうでないので注意.
%</ja>
+%<en>\subsection{Default Japanese fonts and JFMs}
+%<ja>\subsection{標準和文フォント・JFMの変更}
+\label{ssec:cfg}
+%<*en>
+If following commands are defined at loading \LuaTeX-ja package, these change
+default Japanese fonts and JFMs for them:
+%</en>
+%<*ja>
+\LuaTeX-jaが読み込まれる前に以下の命令が定義されていた場合は,
+それらが標準和文フォントやそれらに用いるJFMとして使われる.
+%</ja>
+
+\begin{cslist}[style=standard]
+ \item[\cs{ltj@stdmcfont}]
+%<en>The default Japanese font for the mincho family.
+%<ja>明朝体として用いるフォント.
+ \item[\cs{ltj@stdgtfont}]
+%<en>The default Japanese font for the gothic family.
+%<ja>ゴシック体として用いるフォント.
+ \item[\cs{ltj@stdyokojfm}]
+%<en>The default JFM for horizontal direction.
+%<ja>標準で用いる横組用JFM.
+ \item[\cs{ltj@stdtatejfm}]
+%<en>The default JFM for vertical direction.
+%<ja>標準で用いる縦組用JFM.
+\end{cslist}
+
+%<*en>
+For example,
+\begin{lstlisting}
+\def\ltj@stdmcfont{IPAMincho}
+\def\ltj@stdgtfont{IPAGothic}
+\end{lstlisting}
+makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of
+IPAex~Mincho and IPAex~Gothic.
+
+This feature is intended for classes which use special JFMs
+\footnote{This is because commands has \texttt{@} in their names.}.
+It is recommended to use \cs{luatexja-preset}~or~\cs{luatexja-fontspec} package
+to select standard fonts in ordinary \LaTeX\ sources.
+%</en>
+%<*ja>
+例えば
+\begin{lstlisting}
+\def\ltj@stdmcfont{IPAMincho}
+\def\ltj@stdgtfont{IPAGothic}
+\end{lstlisting}
+と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変
+更される.
+
+この機能は,特別のJFMを用いるクラス
+\footnote{例えば阿部紀行氏によるjlreqがそれにあたる.}%
+などでの使用を意図しており,命令名に\texttt{@}が含まれることから
+通常の\TeX/\LaTeX 文書での使用は意図していない.
+通常の\LaTeX 文書では\Pkg{luatexja-preset}や\Pkg{luatexja-fontspec}などで
+使用フォントを選択することを推奨する.
+%</ja>
+
+%<*en>
+For compatibility with earlier versions,
+\LuaTeX-ja reads \texttt{luatexja.cfg} automatically if it is found by \LuaTeX.
+One should not overuse this \texttt{luatexja.cfg}; it will overwrite
+the definition of \cs{ltj@stdmcfont} and others.
+%</en>
+%<*ja>
+旧バージョンとの互換性のため,
+\LuaTeX から見える位置に\texttt{luatexja.cfg}があれば,\LuaTeX-jaはそれを読み込む.
+しかし,\texttt{luatexja.cfg}内で\cs{ltj@stdmcfont}等が定義されていた場合はそちらが
+優先されるので,もはや\texttt{luatexja.cfg}は使わないほうが良いだろう.
+%</ja>
+
%<en>\subsection{Prefix \texttt{psft}}
%<ja>\subsection{\texttt{psft}プリフィックス}
-\label{ssec-psft}
+\label{ssec:psft}
%<*en>
-Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which
+Besides ``\texttt{file}''\ and ``\texttt{name}''\ prefixes which
are introduced in the \Pkg{luaotfload} package,
-\LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \cs{jfont} (and~\cs{font}),
+\LuaTeX-ja adds ``\texttt{psft}''\ prefix in \cs{jfont} (and~\cs{font}),
to specify a ``name-only'' Japanese font which
will not be embedded to PDF.
Note that these non-embedded fonts under current \LuaTeX\ has Identity-H encoding,
and this violates the standard ISO32000-1:2008~(\cite{pdfstd}).
-\emph{OpenType font features, such as ``{\tt +jp90}'',
-have no meaning in name-only fonts using ``{\tt psft:}''\ prefix,
+\emph{OpenType font features, such as ``\texttt{+jp90}'',
+have no meaning in name-only fonts using ``\texttt{psft}''\ prefix,
because we can't expect what fonts are actually used by the PDF reader.}
Note that \texttt{extend}~and~\texttt{slant} settings (see~above) are supported
with \texttt{psft} prefix, because they are only simple linear transformations.
%</en>
%<*ja>
\Pkg{luaotfload}で使用可能になった
-\texttt{file:}\ と \texttt{name:}\ のプリフィックスに加えて,
+\texttt{file}\ と \texttt{name}\ のプリフィックスに加えて,
\cs{jfont}(と \cs{font} プリミティブ)では
-\texttt{psft:}プリフィックスを用いることができる.
+\texttt{psft}\ プリフィックスを用いることができる.
このプリフィックスを用いることで,PDFには埋め込まれない「名前だけの」
和文フォントを指定することができる.
なお,現行の\LuaTeX で非埋め込みフォントを作成するとPDF内でのエンコーディングが
ので注意してほしい.
\emph{\texttt{psft} プリフィックスの下では
-\texttt{+jp90} などのOpenType font featureの効力はない.
+\texttt{+jp90} などのOpenType機能の効力はない.
非埋込フォントをPDFに使用すると,実際にどのようなフォントが
表示に用いられるか予測できないからである.}\
\texttt{extend} と \texttt{slant} 指定は単なる変形のため
\label{para-cid}
%<*en>
-The default font defined by using \texttt{psft:} prefix is for Japanese typesetting;
-it is Adobe-Japan1-6 CID-keyed font.
+The default font defined by using \texttt{psft} prefix is for Japanese typesetting;
+it is Adobe-Japan1-7 CID-keyed font.
One can specify \texttt{cid} key to use other CID-keyed non-embedded fonts
for Chinese or Korean typesetting.
%</en>
%<*ja>
-標準で\texttt{psft:}プリフィックスで定義されるフォントは日本語用のもので
-あり,Adobe-Japan1-6のCIDに対応したものとなる.しかし,\LuaTeX-jaは中国語
+標準で\texttt{psft}\ プリフィックスで定義されるフォントは日本語用のもので
+あり,Adobe-Japan1-7のCIDに対応したものとなる.しかし,\LuaTeX-jaは中国語
の組版にも威力を発揮することが分かり,日本語フォントでない非埋込フォント
の対応も必要となった.そのために追加されたのが\texttt{cid}キーである.
\texttt{cid}キーに値を指定すると,そのCIDを持った非埋込フォントを定義することができる:
%</ja>
\begin{lstlisting}[numbers=left]
-\jfont\testJ={psft:Ryumin-Light:cid=Adobe-Japan1-6;jfm=jis} % Japanese
-\jfont\testD={psft:Ryumin-Light:jfm=jis} % default value is Adobe-Japan1-6
-\jfont\testC={psft:AdobeMingStd-Light:cid=Adobe-CNS1-6;jfm=jis} % Traditional Chinese
-\jfont\testG={psft:SimSun:cid=Adobe-GB1-5;jfm=jis} % Simplified Chinese
-\jfont\testK={psft:Batang:cid=Adobe-Korea1-2;jfm=jis} % Korean
+\jfont\testJ={psft:Ryumin-Light:cid=Adobe-Japan1-7;jfm=jis} % Japanese
+\jfont\testD={psft:Ryumin-Light:jfm=jis} % default: Adobe-Japan1-7
+\jfont\testC={psft:AdobeMingStd-Light:cid=Adobe-CNS1-7;jfm=jis}% Traditional Chinese
+\jfont\testG={psft:SimSun:cid=Adobe-GB1-5;jfm=jis} % Simplified Chinese
+\jfont\testK={psft:Batang:cid=Adobe-Korea1-2;jfm=jis} % Korean
+\jfont\testKR={psft:SourceHanSerifAKR9:cid=Adobe-KR-9;jfm=jis} % Korean
\end{lstlisting}
%<*en>
Note that the code above specifies \texttt{jfm-jis.lua}, which is for Japanese fonts,
%</ja>
%<*en>
-At present, \LuaTeX-ja supports only 4 values written in the sample code above.
+At present, \LuaTeX-ja supports only 5 values written in the sample code above.
Specifying other values, e.g.,
%</en>
%<*ja>
-今のところ,\LuaTeX-jaは上のサンプルコード中に書いた4つの値しかサポートしていない.
+今のところ,\LuaTeX-jaは上のサンプルコード中に書いた5つの値しかサポートしていない.
%</ja>
\begin{lstlisting}
\jfont\test={psft:Ryumin-Light:cid=Adobe-Japan2;jfm=jis}
%<en>\subsection{Structure of a JFM file}
%<ja>\subsection{JFMファイルの構造}
-\label{ssec-jfm-str}
+\label{ssec:jfm-str}
%<en>A JFM file is a Lua script which has only one function call:
%<ja>JFMファイルはただ一つの関数呼び出しを含むLuaスクリプトである:
\begin{lstlisting}
%<*ja>
実際のデータは上で \verb+{ ... }+ で示されたテーブルの中に格納されている.
以下ではこのテーブルの構造について記す.
-なお,JFMファイル中の長さは全てdesign-sizeを単位とする浮動小数点数であることに
+なお,JFMファイル中の長さは全てdesign sizeを単位とする浮動小数点数であることに
注意する.
%</ja>
%<*ja>
理想的な\Param{kanjiskip}の量を指定する.\ref{subs-kskip}節で述べたように,
もし\Param{kanjiskip}が \cs{maxdimen} の値ならば,このフィールドで指定された
-値が実際には用いられる(指定なしは0\,ptとして扱われる).<stretch>と<shrink>のフィールドもdesign-size
+値が実際には用いられる(指定なしは0\,ptとして扱われる).<stretch>と<shrink>のフィールドもdesign size
が単位であることに注意せよ.
%</ja>
\begin{cslist}[style=standard]
\item[priority=<priority>]
\Pkg{luatexja-adjust}による優先順位付き
- 行長調整(\ref{ssec-adj}節)において,このグルーの優先度を指定する.許される値は以下の通り:
+ 行長調整(\ref{ssec:adj}節)において,このグルーの優先度を指定する.許される値は以下の通り:
\begin{description}
\item[バージョン1] $-4$から$+3$の間の整数
\item[バージョン2以降] $-4$から$+3$の間の整数の2つ組\texttt{\{<stretch>, <shrink>\}}か,
自然長・縮み量半角,伸び量0のグルー
となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
た分だけ伸びることが許される.
+ \item 一方,開き括弧類と通常の文字の間,また通常の文字と閉じ括弧類の間は
+ 自然長・縮み量・伸び量0のグルーだが,\Param{kanjiskip}の縮み量に
+ \texttt{kanjiskip\_shrink}(ここでは1)を掛けた分だけ縮むことが許される.
\end{itemize}
となっている.従って,以下のような組版結果を得る.
\leavevmode
\ltjsetparameter{kanjiskip=0pt plus 3\zw}
\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+
+\vrule\hbox{あ「い」う,えお}\vrule\par
+\ltjsetparameter{kanjiskip=0pt minus \zw}
+\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule
\end{LTXexample}
\end{cslist}
a pair of these integers \texttt{\{<stretch>, <shrink>\}} (version 2~or~later).
This is
used only in line adjustment with priority by \Pkg{luatexja-adjust}
-(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to stretch,
+(see Subsection~\ref{ssec:adj}). Higher value means the glue is easy to stretch,
and is also easy to shrink.
\item[kanjiskip\_natural=<num>\textrm{, }%
kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
Again, this glue also can be stretched
as much as the stretch part of \Param{kanjiskip} times the value of
\texttt{kanjiskip\_stretch} key (1 in this case).
+ \item Between an ideographic opening bracket and an ordinal letter
+ and between an ordinal letter and an ideographic closing bracket,
+ we have a glue whose natural part and stretch part are both zero, while its shrink part as much as
+ the shrink part of \Param{kanjiskip}.
\end{itemize}
Hence we have the following result:
\leavevmode
\ltjsetparameter{kanjiskip=0pt plus 3\zw}
\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+
+\vrule\hbox{あ「い」う,えお}\vrule\par
+\ltjsetparameter{kanjiskip=0pt minus \zw}
+\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule
\end{LTXexample}
\end{cslist}
%</en>
-
+
\item[end\_stretch=<kern>, end\_shrink=<kern>]
%<*ja>
(任意,バージョン1のみ)
\item[end\_adjust=\{<kern>, <kern>, ...\}]
%<*ja>
-(任意,バージョン2のみ)
+(任意,バージョン2以降)
優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が
行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが
- 挿入される(\autoref{ssec-adj}参照).
+ 挿入される(\autoref{ssec:adj}参照).
バージョン1における
\begin{lstlisting}[escapechar=\$]
end_stretch = $a$, end_shrink = $b$
\end{lstlisting}
-という指定は,バージョン2では次の指定と同じになる.
+という指定は,バージョン2以降では次の指定と同じになる.
\begin{lstlisting}[escapechar=\$]
end_adjust = {$-b$, 0.0, $a$}
\end{lstlisting}
もし真ん中の \texttt{0.0} がない場合は,$a$か$-b$かいずれかのカーンが常に行末に追加される.
%</ja>
%<*en>
-(optional, version~2 only)
+(optional, version~2 or~later)
%</en>
\end{cslist}
\item JFMによれば,この「ヒ」のグリフの文字クラスは2000である.
\item 以上により文字クラス2000とみなされるため,結果として「ヒ」の幅は半角だと認識される.
\end{enumerate}
-この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の結果に基づく}ことを
+この例は,\emph{文字クラスの決定はOpenType機能の適用によるグリフ置換の結果に基づく}ことを
示している.
%</ja>
%<*ja>
ここで,句点「。」(\texttt{U+3002})の文字クラスは,以下のようにして決まる.
\begin{enumerate}
-\item \Pkg{luaotfload} によって縦組用句点のグリフに置き換わる.
+\item \Pkg{luaotfload}によって縦組用句点のグリフに置き換わる.
\item 置換後のグリフは \texttt{U+FE12} であり,JFMに従えば文字クラスは\emph{0}と判定される.
\item この場合,置換前の横組用句点のグリフによって文字クラスを判定する.
\item 結果として,上の出力例中の句点の文字クラスは2000となる.
%<ja>\paragraph{仮想的な文字}
%<en>\paragraph{Imaginary characters}
%<*en>
-As described before, you can specify several \emph{imaginary characters} in
+As described before, you 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.
%%<ja>JFMやサイズが異なる2つの\textbf{JAchar}の間の境界として用いられる.
\item['boxbdd']
-%<en>The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \cs{noindent}) paragraph.
-%<ja>hboxの先頭と末尾,及びインデントされていない(\cs{noindent} で開始された)段落の先頭を表す.
+%<*en>
+The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \cs{noindent}) paragraph.
+If a hbox~$b$ begins (resp.~ends) a glue or kern between this ``charater'' and a \textbf{JAchar},
+\textbf{JAglue} won't be inserted before(resp.~after) the hbox~$b$.
+\Param{kanjiskip}~and~\Param{xkanjiskip} around a hbox.
+%</en>
+%<*ja>
+hboxの先頭と末尾,及びインデントされていない(\cs{noindent} で開始された)段落の先頭を表す.
+この「文字」との間に設定したグルー・カーンがボックス$b$の先頭(もしくは末尾)に来た場合,
+ そのボックス$b$の直前(もしくは直後)には和文処理グルーは入らない.
+%</ja>
\item['parbdd']
%<en>The beginning of an (indented) paragraph.
\item['glue']
%<en>(version 3~or~later) A boundary between \textbf{JAchar}, and, a glue or kern.
-%<ja>(バージョン3以降))\textbf{JAchar}とglue,kernとの境界.
+%<ja>(バージョン3以降)\textbf{JAchar}とglue,kernとの境界.
\item[$-1$]
%<en>The left/right boundary of an inline math formula.
%<en>\subsection{Math font family}
%<ja>\subsection{数式フォントファミリ}
-\label{ssec-math}
+\label{ssec:math}
%<*en>
\TeX\ handles fonts in math formulas by 16~font families\footnote{Omega,
%<ja>\bf 和文フォント&\bf 欧文フォント\\
\midrule
\cs{jfam}${}\in [0,256)$&\cs{fam}\\
-\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{textfont}<fam>=<font\_cs>\\
-\tt\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptfont}<fam>=<font\_cs>\\
-\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptscriptfont}<fam>=<font\_cs>\\
+\ttfamily\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\ttfamily\cs{textfont}<fam>=<font\_cs>\\
+\ttfamily\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\ttfamily\cs{scriptfont}<fam>=<font\_cs>\\
+\ttfamily\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\ttfamily\cs{scriptscriptfont}<fam>=<font\_cs>\\
\bottomrule
\end{tabular}
\end{table}
scaled value of those specified by the JFM, by the font size.
\item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM:
\[
- \begin{cases}
- 0&\text{\texttt{'left'} (default)}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
- \end{cases}
+ \begin{cases*}
+ 1&(\texttt{'right'} in JFM),\\
+ 0.5&(\texttt{'middle'} in JFM),\\
+ 0&(otherwise).
+ \end{cases*}
\]
\end{itemize}
For $i$,~$j\in \omega$, \texttt{char\_type[$i$][$j$]} stores a kern or a glue which will be inserted
JFMで指定されているそれぞれの値をスケーリングしたものである.
\item \texttt{align} はJFMで指定されている値によって,
\[
- \begin{cases}
- 0&\text{\texttt{'left'}や省略時}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
- \end{cases}
+ \begin{cases*}
+ 1&(\texttt{'right'} in JFM),\\
+ 0.5&(\texttt{'middle'} in JFM),\\
+ 0&(otherwise).
+ \end{cases*}
\]
のいずれかの値をとる.
\end{itemize}
\begin{itemize}
\item 間に入るものがカーンであれば,この値は\
\texttt{[$j$]=\{[1]=<kern\_node>, ratio=<ratio>\}} であり,
-<kern\_node>ã\81¯ã\82«ã\83¼ã\83³ã\82\92表ã\81\99ã\83\8eã\83¼ã\83\89ã\81\9dã\81®ã\82\82ã\81®ã\81§ã\81\82ã\82\8b\footnote{%
-バージョン20150420.0以降ではノードのアクセス手法にdirect access
- modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし
- か見えないことに注意.
+<kern\_node>はカーンを表すノードである\footnote{%
+ バージョン20150420.0以降ではノードのアクセス手法にdirect access
+ modelを用いているため,ノードそのものを表すユーザーデータではなく,
+ 内部で参照のために使われる添字(整数)である.
}.
\item グルーであれば,この値は以下のキーを持つテーブルである.
\begin{description}
JFM中の同名のフィールドの値がそのまま使われている.
\end{description}
\end{itemize}
-\item[ascent\textrm{, }descent]
-……
\item[chars\_cbcache]
文字クラス決定の処理で.キャッシュとして使われる.
\end{cslist}
\]
\end{description}
-
-
%<en>\section{Parameters}
%<ja>\section{パラメータ}
\subsection{\cs{ltjsetparameter}}
-\label{ssec-param}
+\label{ssec:param}
%<*en>
As described before, \cs{ltjsetparameter} and \cs{ltjgetparameter} are
%<*en>
\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands
-for assigning parameters. These take one argument which is a
-\texttt{<key>=<value>} list.
+for assigning parameters. These take one argument which is a key-value list.
The difference between these two commands is the
scope of assignment;
\cs{ltjsetparameter} does a local assignment and
-\cs{ltjglobalsetparameter} does a global one.
+\cs{ltjglobalsetparameter} does a global one by default.
They also obey the value of \cs{globaldefs}, like other assignments.
%</en>
%<*ja>
\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} はパラメータを
-指定するための命令で,\texttt{<key>=<value>}のリストを
-引数としてとる.両者の違いはスコープであり,
+指定するための命令で,key-valueリストを
+引数としてとる.両者の違いはスコープであり,標準では
\cs{ltjsetparameter} はローカルな設定を行うのに対し,
\cs{ltjglobalsetparameter} はグローバルな設定を行う.
また,他のパラメータ指定と同様に \cs{globaldefs} の値にも従う.
Changing current Japanese font does not alter this parameter, as \pTeX.
If the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses
-the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}).
+the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec:jfm-str}).
%</en>
\item[\DParam{xkanjiskip}\,=<skip>$^\ast$] [\cs{xkanjiskip}]\
Changing current font does not alter this parameter, as \pTeX.
As \Param{kanjiskip}, if the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses
-the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}).
+the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec:jfm-str}).
%</en>
%</en>
%<*ja>
デフォルト値は \texttt{paverage} である.
-各々の値による差異の詳細は\ref{ssec-cluster-wa}節の「『右空白』の算出」を参照してほしい.
+各々の値による差異の詳細は\ref{ssec:cluster-wa}節の「『右空白』の算出」を参照してほしい.
%</ja>
\item[\DParam{jacharrange}\,=<ranges>]
\subsection{\cs{ltjgetparameter}}
-\label{ssec-getpar}
+\label{ssec:getpar}
%<*en>
\cs{ltjgetparameter} is a control sequence for acquiring parameters. It
always takes a parameter name as first argument.
\end{itemize}
+
+%<*en>
+\subsection{Alternative Commands to \cs{ltjsetparameter}}
+The basic method to set parameters of \LuaTeX-ja is to use
+\cs{ltjsetparameter}~or~\cs{ltjglobalsetparameter}.
+However, these commands are slow, because they parse a key-value list,
+so several alternative commands are used in \LuaTeX-ja.
+\emph{This subsection is not for general \LuaTeX-ja users.}
+
+\paragraph{Setting \Param{kanjiskip}~or~\Param{xkanjiskip}}
+In \Pkg{ltjsclasses}, every size-changing command such as \cs{Large}
+changes \cs{kanjiskip}~and~\cs{xkanjiskip}.
+But a simple implementation, as the code below, is slow since
+two key-value lists are parsed by \cs{ltjsetparameter}:
+\begin{lstlisting}
+ \ltjsetparameter{kanjiskip=0\zw plus .1\zw minus .01\zw}
+ \@tempskipa=\ltjgetparameter{xkanjiskip}
+ \ifdim\@tempskipa>\z@
+ \if@slide
+ \ltjsetparameter{xkanjiskip=0.1em}
+ \else
+ \ltjsetparameter{xkanjiskip=0.25em plus 0.15em minus 0.06em}
+ \fi
+ \fi
+\end{lstlisting}
+
+Hence, \LuaTeX-ja defines more primitive commands, namely \cs{ltj@setpar@global},
+\cs{ltjsetkanjiskip}, and~\cs{ltjsetxkanjiskip}. Here
+\begin{quote}
+ \lstinline+\ltj@setpar@global\ltjsetkanjiskip 10pt+
+\end{quote}
+and \lstinline+\ltjsetparameter{kanjiskip=10pt}+ has the same effect.
+The actual code of \Pkg{ltjsclasses} is shown below:
+\begin{lstlisting}
+ \ltj@setpar@global
+ \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+ \@tempskipa=\ltjgetparameter{xkanjiskip}
+ \ifdim\@tempskipa>\z@
+ \if@slide
+ \ltjsetxkanjiskip.1em
+ \else
+ \ltjsetxkanjiskip.25em plus .15em minus .06em
+ \fi
+ \fi
+\end{lstlisting}
+
+Note that using \cs{ltjsetkanjiskip}~or~\cs{ltjsetxkanjiskip} alone,
+that is, without executing \cs{ltj@setpar@global} in advance, is \emph{not} supported.
+%</en>
+
%<*ja>
\subsection{\cs{ltjsetparameter} の代替}
原則として各種内部パラメータの設定には \cs{ltjsetparameter} もしくは
\LuaTeX-ja の内部ではより高速に実行できる別の形式を用いている.
\emph{本節は一般利用者むけの内容ではない.}
-\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} の設定}
+\paragraph{\Param{kanjiskip}, \Param{xkanjiskip}の設定}
\pLaTeXe 新ドキュメントクラスでは,
\begin{lstlisting}
\def\@setfontsize#1#2#3{%
\subsection{\cs{ltjdeclarealtfont}}
-\label{ssec-altfont}
+\label{ssec:altfont}
%<*en>
Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts.
This \cs{ltjdeclarealtfont} uses in the following form:
and characters in class~1 (ideographic opening brackets)
are typeset by \cs{piyo}.
\end{quote}
+
+Note that specifying negative numbers needs specification like \verb+{-1}-{-1}+,
+because simple ``\texttt{-1}'' is treated as the range between 0~and~1.
%</en>
%<*ja>
\cs{jfont} の書式を見ればわかるように,基本的には\LuaTeX-jaにおける1つの和文フォントに
\subsection{\cs{ltjalchar} と \cs{ltjjachar}}
文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を
\ \cs{char} プリミティブを使い \cs{char}<chr\_code> として出力させると,
-その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって
+その文字の属する文字範囲(\ref{ssec:setrange}節参照)によって
\textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され
るかが決まる.
-文字範囲の設定を無視し,文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を強制的に
+文字範囲の設定を無視し,文字コードが<chr\_code>の文字を強制的に
\textbf{ALchar}, \textbf{JAchar}で出力する命令がそれぞれ
\ \cs{ltjalchar},~\cs{ltjjachar} である.使用方法は \cs{char} と同じく
\ \cs{ltjalchar}<chr\_code>, \cs{ltjjachar}<chr\_code>とすればよい.
-<chr\_code>が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること
-に注意.
+\LuaTeX-ja~20190926.0から,<chr\_code>が127以下の場合でも\cs{ltjjachar}<chr\_code>が
+\textbf{JAchar}として出力されるようになっている.
-以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである.
+以下は\ref{ssec:setrange}節に載せた例に,\cs{char} の動作などを追加したものである.
+%</ja>
\begin{LTXexample}[width=0.25\textwidth]
-\gtfamily\large % default, ALchar, JAchar
-¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar
-α, \char`α, \ltjalchar`α, \ltjjachar`α % default: JAchar
+\gtfamily\large
+¶,\char`¶,\ltjalchar`¶,\ltjjachar`¶\\ % default: ALchar
+α,\char`α,\ltjalchar`α,\ltjjachar`α\\ % default: JAchar
+g,\char`g,\ltjalchar`g,\ltjjachar`g % ALchar unless \ltjjachar
\end{LTXexample}
-%</ja>
%<en>\section{Commands for \LaTeXe}
%<ja>\section{\LaTeXe 用の命令}
+%<*en>
+\subsection{Loading Japanese fonts in \LaTeXe}
+\label{ssec:ltx-jfm}
+From versoin~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,
+ 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).
+
+ \item Direction changing commands (\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod}) are patched to
+ include the following process:
+ \begin{quote}
+ If the Japanese font for new direction is not loaded,
+ \LuaTeX-ja loads it automatically.
+ \end{quote}
+ Original commands are saved as \cs{ltj@@orig@yoko} etc.
+
+ \item Specifying Japanese font command which is
+ defined by \cs{jfont},~\cs{tfont}, or~\cs{DeclareFixedFont} directly
+ actually loads (and selects) the Japanese font.
+ For example, \textbf{JAchar}s in \cs{box0} will be typeset in \cs{HOGE},
+ in the following code:
+\begin{lstlisting}
+ % in horizontal direction (\yoko)
+ \DeclareFixedFont\HOGE{JT3}{gt}{m}{n}{12} % JT3: for vertical direction
+ \HOGE
+ \setbox0=\hbox{\tate あいう}
+\end{lstlisting}
+ \end{itemize}
+%</en>
+
+%<*ja>
+\subsection{\LaTeXe 下での和文フォントの読み込み}
+\label{ssec:ltx-jfm}
+バージョン20190107以降では,\LaTeXe の下で\LuaTeX-jaを使用した際に,
+\emph{横組用和文フォントと縦組み用和文フォントを両方一度に読み込み・選択せずに,
+ 実際にそれぞれを使う組方向になったときに行う}という方針にした.
+これは実際に読み込むフォント数を削減することで,
+タイプセットにかかる時間と(主にLuaの)メモリ消費を削減するためである(\cite{tc18ltja}).
+
+\begin{itemize}
+ \item \cs{selectfont}は横組用・縦組用和文フォントのうち,現在の組方向で使う方を
+ 実際に読み込み(・選択し),そうでない方は「フォントサイズとJFMのみ\LuaTeX-jaが把握している状態」
+ (以下,\emph{JFM把握状態})とする.
+
+ \item 組方向変更命令\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod}には
+ \begin{quote}
+ 新たな組方向での和文フォントが読み込まれていない(JFM把握状態)ならば,
+ 現在のエンコーディング・ファミリ・シリーズ・シェイプから改めて読み込む(または選択する)
+ \end{quote}
+ 処理が付け加えられている.
+ もとの「組方向を変更するだけ」の命令は\cs{ltj@@orig@yoko}のように\texttt{ltj@@orig@}が前についた
+ 命令に保存されている.
+
+ \item \cs{jfont},~\cs{tfont},~\cs{DeclareFixedFont}で定義された和文フォントは
+ その時点で実際にフォントが読み込まれる.すなわち,以下のコードにおいて,
+ \cs{box0}中の\textbf{JAchar}は\cs{HOGE}でタイプセットされる.
+\begin{lstlisting}
+ % in horizontal direction (\yoko)
+ \DeclareFixedFont\HOGE{JT3}{gt}{m}{n}{12} % JT3: for vertical direction
+ \HOGE
+ \setbox0=\hbox{\tate あいう}
+\end{lstlisting}
+ \end{itemize}
+%</ja>
+
%<en>\subsection{Patch for NFSS2}
%<ja>\subsection{NFSS2へのパッチ}
-\label{ssec-nfsspat}
+\label{ssec:nfsspat}
%<*en>
Japanese patch for NFSS2 in \LuaTeX-ja
is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe.
We will describe
-commands which are not described in Subsection~\ref{ssec-chgfnt}.
+commands which are not described in Subsection~\ref{ssec:chgfnt}.
%</en>
%<*ja>
\LuaTeX-jaのNFSS2への日本語パッチは
\pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに,
和文エンコーディングの管理等をLuaで書きなおしたものである.
-ここでは\ref{ssec-chgfnt}節で述べていなかった命令について
+ここでは\ref{ssec:chgfnt}節で述べていなかった命令について
記述しておく.
%</ja>
%<*ja>
を定義している.なお,\cs{cwd} と \cs{zw},また
\cs{cHT} と \cs{zh} は一致しない可能性がある.なぜなら,
-\cs{cwd},~\cs{cHT} は「あ」の寸法から決定されるのに対し,
+\cs{cwd},~\cs{cHT} は文字クラス0の和文文字の寸法から決定されるのに対し,
\cs{zw} と \cs{zh} はJFMに指定された値に過ぎないからである.
%</ja>
%<*en>
Note that \cs{cwd}~and~\cs{cHT} may differ from \cs{zw}~and~\cs{zh}
respectively.
-On the one hand the former dimensions are determined from the character ``あ'',
+On the one hand the former dimensions are determined from
+a character whose character class is zero,
but on the other hand \cs{zw}~and~\cs{zh} are specified by JFM.
%</en>
更させるようにするのが一般的と思われる.
本命令は
-\begin{center}\tt
-<unified-cmd>\{<arg>\}\quad$\longrightarrow$\quad
-(<al-cmd>の1段展開結果)\{<ja-cmd>の1段展開結果)\{<arg>\}\}
+\begin{center}
+<unified-cmd>\texttt{\{}<arg>\texttt{\}}\quad$\longrightarrow$\quad
+(<al-cmd>の1段展開結果)\texttt{\{}<ja-cmd>の1段展開結果)\texttt{\{<arg>\}\}}
\end{center}
と定義を行うので,使用には注意が必要である:
%<en>\vspace{-\medskipamount}
\item[\cs{userelfont}]
%<*en>
-Change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic
- font family with respect to current Japanese font family,
- which was set by
- \cs{DeclareRelationFont} or \cs{SetRelationFont}.
-Like \cs{fontfamily}, \cs{selectfont} is required to take an effect.
+(Only)~at the next call of \cs{selectfont},
+ change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic
+ font family with respect to current Japanese font family,
+ which was set by
+ \cs{DeclareRelationFont} or \cs{SetRelationFont}.
+
+ The following is an example of \cs{SetRelationFont} and \cs{userelfont}:
%</en>
%<*ja>
-現在の欧文フォントのエンコーディング/ファミリ/…… を,
+次回(のみ)の\cs{selectfont}の実行時に,現在の欧文フォントのエンコーディング/ファミリ/…… を,
\cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された
現在の和文フォントに対応する「従属欧文」フォントに変更する.
-\cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である.
+
+ 以下に \cs{SetRelationFont} と \cs{userelfont} の例を
+紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが
+Latin Modern Sans Serif (TU/lmss/m/n) に変わっていることがわかる.
%</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+\makeatletter
+\SetRelationFont{JY3}{\k@family}{m}{n}{TU}{lmss}{m}{n}
+ % \k@family: current Japanese font family
+\userelfont\selectfont あいうabc
+\end{LTXexample}
\item[\cs{adjustbaseline}]
%<*en>
In \pLaTeXe, \cs{adjustbaseline} sets \cs{tbaselineshift}
-to match the vertical center of ``M'' and that of ``あ'' in vertical typesetting:
+to match the vertical center of ``M'' and that of ``漢'' in vertical typesetting:
\[
\text{\cs{tbaselineshift}} \leftarrow
-\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
- + d_{\text{あ}} - d_{\text{M}},
+\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{漢}}+d_{\text{漢}})}2
+ + d_{\text{漢}} - d_{\text{M}},
\]
where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively.
In \LuaTeX-ja, this \cs{adjustbaseline} does similar task, namely setting the
- \Param{talbaselineshift} parameter.
-If the \LaTeX\ is 2015/10/01 release or later, \LuaTeX-ja use a Japanese
-character whose character class is zero, instead of `あ'.
+ \Param{talbaselineshift} parameter
+(a Japanese character whose character class is zero is used, instead of `漢' ).
%</en>
%<*ja>
-\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために,
-\cs{tbaselineshift} ã\82\92è¨å®\9aã\81\99ã\82\8bå½¹å\89²ã\82\92æ\8c\81ã\81£ã\81¦ã\81\84ã\81\9f:
+\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「漢」の中心線を一致させるために,
+\cs{tbaselineshift} ã\82\92è¨å®\9aã\81\99ã\82\8bå½¹å\89²ã\82\92æ\8c\81ã\81£ã\81¦ã\81\84ã\82\8b:
\[
\text{\cs{tbaselineshift}} \leftarrow
-\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
- + d_{\text{あ}} - d_{\text{M}},
+\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{漢}}+d_{\text{漢}})}2
+ + d_{\text{漢}} - d_{\text{M}},
\]
ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す.
-\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処
- 理を行っている.
-
-同時に,これも\pLaTeXe の \cs{adjustbaseline} で同様の処理が行われていたが,
-「漢」の寸法を元に(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd}
-といった長さ変数を設定する.
+\LuaTeX-jaにおいても,同じように\cs{adjustbaseline}は\Param{talbaselineshift}パラメータの調整処
+ 理を行っている(但し「漢」でなく「文字クラス0の和文文字」を用いる).
-なお,\LaTeX が2015/10/01版以降の場合は,「あ」「漢」の代わりに
-「文字クラス0の和文文字」を用いる.
+\pLaTeXe では,\cs{adjustbaseline}で(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd}%の
+ 設定処理も行っていたが,\LuaTeX-jaでも全く同様である.
%</ja>
\item[\cs{fontfamily}\{<family>\}]
%<*en>
As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both})
-to <family>. See Subsection~\ref{ssec-fontfamilycmd} for detail.
+to <family>. See Subsection~\ref{ssec:fontfamilycmd} for detail.
%</en>
%<*ja>
元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文,
-和文,\emph{もしくは両方})を<family>に変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること.
+和文,\emph{もしくは両方})を<family>に変更する.詳細は\ref{ssec:fontfamilycmd}節を参照すること.
%</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}{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}
+\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}{}
+\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
日本国民は、正当に選挙された国会における代表者を通じて行動し、……}
\end{LTXexample}
\item[\cs{DeclareAlternateKanjiFont}\{<base-encoding>\}\{<base-family>\}\{<base-series>\}\{<base-shape>\}\\
\null\hfill\{<alt-encoding>\}\{<alt-family>\}\{<alt-series>\}\{<alt-shape>\}\{<range>\}]
%<*ja>
-\ref{ssec-altfont}節の\
+\ref{ssec:altfont}節の\
\cs{ltjdeclarealtfont} と同様に,前半の4引数の
和文フォント(基底フォント)のうち<range>中の文字を
第5から第8引数の和文フォントを使って組むように指示する.
\begin{itemize}
\item
\cs{ltjdeclarealtfont} では基底フォント・置き換え先和文フォントはあらかじめ定義されてい
- ã\81ªã\81\84ã\81¨ã\81\84ã\81\91ã\81ªã\81\84ï¼\88ã\81\9dã\81®ä»£ã\82\8fã\82\8aå\8d³æ\99\82ç\99ºå\8a¹ï¼\89ã\81§ã\81\82ã\81£ã\81\9fã\81\8cï¼\8c
+ ないといけない(その代わり即時発効)たが,
\cs{DeclareAlternateKanjiFont} の設定が
実際に効力が発揮するのは,書体変更やサイズ変更を行った時,
あるいは(これらを含むが)\cs{selectfont} が実行された時である.
\end{itemize}%
%</ja>
%<*en>
-As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}),
+As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec:altfont}),
characters in <range> of the Japanese font (we say the \emph{base font})
which specified by first 4 arguments are typeset
by the Japanese font which specified by fifth to eighth arguments
%</en>
\end{cslist}
+
%<*en>
-As closing this subsection, we shall introduce an example of
-\cs{SetRelationFont} and \cs{userelfont}:
+Furthermore, \LuaTeX-ja applies patches which enables NFSS2 commands,
+such~as \cs{DeclareSymbolFont}~and~\cs{SetSymbolFont}, to specify
+Japanee fonts as math fonts.
+
+Specifying \texttt{disablejfam} option in \cs{usepackage} prevents
+applying these patches.
+Hence one cannot write Japanese Characters in math mode directly
+if \texttt{disablejfam} option is specified.
+The code below does not work either:
+\begin{lstlisting}
+\DeclareSymbolFont{mincho}{JY3}{mc}{m}{n}
+\DeclareSymbolFontAlphabet{\mathmc}{mincho}
+\end{lstlisting}
%</en>
%<*ja>
-この節の終わりに,\cs{SetRelationFont} と \cs{userelfont} の例を
-紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが
-Avant Garde (OT1/pag/m/n) に変わっていることがわかる.
+この他にも,標準では
+\cs{DeclareSymbolFont}, \cs{SetSymbolFont} などの命令で
+(NFSS2の枠組みで)数式フォントとして日本語フォントを使えるようにするためのパッチを当てている.
+
+一方,\texttt{disablejfam}オプション指定時には,これらのパッチを当てないので
+\begin{lstlisting}
+\DeclareSymbolFont{mincho}{JY3}{mc}{m}{n}
+\DeclareSymbolFontAlphabet{\mathmc}{mincho}
+\end{lstlisting}
+のように設定しても,数式モード中に直に日本語を記述することはできない.
+\verb|$\mathmc{あ}$| のように \cs{mathmc} で囲んでもできない.
%</ja>
-\begin{LTXexample}[width=0.3\textwidth]
-\makeatletter
-\SetRelationFont{JY3}{\k@family}{m}{n}{OT1}{pag}{m}{n}
- % \k@family: current Japanese font family
-\userelfont\selectfont あいうabc
-\end{LTXexample}
%<en>\subsection{Detail of \cs{fontfamily} command}
%<ja>\subsection{\cs{fontfamily}コマンドの詳細}
-\label{ssec-fontfamilycmd}
+\label{ssec:fontfamilycmd}
%<*en>
In this subsection, we describe when \cs{fontfamily}<family> changes current
Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to
\begin{table}[t]
\centering\small
- \caption{strut}\label{tab:strutbox}
+ \caption{strut}\label{tab:strutbox}\medskip
\begin{tabular}{llcccl}
\toprule
\textbf{box}&\textbf{direction}&\textbf{width}&\textbf{height}&\textbf{depth}
\cs{input} で読み込み可能である.
%</ja>
\subsection{\Pkg{luatexja-fontspec}}
-\label{ssec-fontspec2}
+\label{ssec:fontspec2}
%<*en>
-As described in Subsection~\ref{ssec-fontspec}, this optional package
+As described in Subsection~\ref{ssec:fontspec}, this optional package
provides the counterparts for several commands defined in the
\Pkg{fontspec} package (requires \Pkg{fontspec}~v2.4).
In addition to OpenType font features in the original \Pkg{fontspec},
the commands of Japanese version:
%</en>
%<*ja>
-\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}%
+\ref{ssec:fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}%
パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する.
\Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには
%<*en>
These 3 keys correspond to \texttt{cid}, \texttt{jfm} and
\texttt{jfmvar} keys for \cs{jfont}~and~\cs{tfont} respectively.
-See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details
+See Subsections~\ref{ssec:jfont} and \ref{ssec:psft} for details
of \texttt{cid}, \texttt{jfm} and
\texttt{jfmvar} keys.
%<*ja>
これら3つのキーはそれぞれ \cs{jfont},~\cs{tfont}に対する
\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する.
-\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節
- と\ref{ssec-psft}節を参照.
+\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec:jfont}節
+ と\ref{ssec:psft}節を参照.
\texttt{CID} キーは下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である.
また,横組用JFMと縦組用JFMは共用できないため,実際に \texttt{JFM} キーを用いる際は
\item[NoEmbed]
%<*en>
By specifying this key, one can use ``name-only'' Japanese font which
-will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}.
+will not be embedded in the output PDF file. See Subsection~\ref{ssec:psft}.
%</en>
%<*ja>
これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが
-できる.\ref{ssec-psft}節を参照.
+できる.\ref{ssec:psft}節を参照.
%</ja>
\begin{figure}[!tb]
\begin{LTXexample}[width=0.25\textwidth]
\jfontspec[
- YokoFeatures={Color=007F00}, TateFeatures={Color=00007F},
+ YokoFeatures={FakeBold=3}, TateFeatures={FakeBold=6},
TateFont=KozGoPr6N-Regular
]{KozMinPr6N-Regular}
\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト}
-\addjfontfeatures{Color=FF0000}
+\addjfontfeatures{FakeBold=0}
\hbox{\yoko 横組}\hbox{\tate 縦組}
\end{LTXexample}
%<ja>\caption{\texttt{TateFeatures} 等の使用例}
\begin{LTXexample}[pos=b]
\jfontspec[
AltFont={
- {Range="4E00-"67FF, Color=007F00},
- {Range="6800-"9EFF, Color=0000FF},
+ {Range="4E00-"67FF, Font=KozGoPr6N-Medium},
+ {Range="6800-"9EFF, FakeBold=4},
{Range="3040-"306F, Font=KozGoPr6N-Regular},
}
]{KozMinPr6N-Regular}
\item[AltFont]
%<*en>
-As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}) and
-\cs{DeclareAlternateKanjiFont}~(Subsection~\ref{ssec-nfsspat}),
+As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec:altfont}) and
+\cs{DeclareAlternateKanjiFont}~(Subsection~\ref{ssec:nfsspat}),
with this key, one can typeset some Japanese characters
by a different font and/or using different features.
The \texttt{AltFont} feature takes a comma-separated list of comma-separated lists,
as the following:
%</en>
%<*ja>
-\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や,
-\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に,
+\ref{ssec:altfont}節の \cs{ltjdeclarealtfont} や,
+\ref{ssec:nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に,
このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる.
\texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである:
%</ja>
\begin{lstlisting}
AltFont = {
{ Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
- Range="3000-"30FF, BoldFeatures={Color=007F00} }
+ Range="3000-"30FF, BoldFeatures={FakeBold=1} }
}
\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, Color=007F00 } },
+ AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, FakeBold=1 } },
}
\end{lstlisting}
\begin{lstlisting}
AltFont = {
{ Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
- Range="3000-"30FF, BoldFeatures={Color=007F00} }
+ Range="3000-"30FF, BoldFeatures={FakeBold=1} }
}
\end{lstlisting}
のように指定することは出来ず,
AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } },
},
BoldFeatures = {
- AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } },
+ AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, FakeBold=1 } },
}
\end{lstlisting}
のように指定しなければならない.
指定することは可能であり.また\ \texttt{YokoFeatures},~\texttt{TateFeatures} キーの
中身に \texttt{AltFont} を指定することができる.
-また,\autoref{fig:yokotate-fontspec}後半部では6行目の色の指定が効かず,
-2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による色の指定が有効になっ
+また,\autoref{fig:yokotate-fontspec}後半部では6行目の疑似太字無効化の指定が効かず,
+2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による疑似太字の指定が有効になっ
たままである.これは\emph{\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による
OpenType機能指定は
組方向に依存しないOpenType機能の指定より後に解釈される}からである.
\subsection{\Pkg{luatexja-otf}}
-\label{ssec-ltjotf}
+\label{ssec:ltjotf}
%<*en>
This optional package supports typesetting glyphs
by specifying a CID number.
\item[\cs{CID}\{<number>\}]
%<*en>
Typeset a glyph whose CID number is <number>.
-If the Japanese font is neither Adobe-Japan1,~Adobe-GB1, Adobe-CNS1,~nor~Adobe-Korea1 CID-keyed font,
+If the Japanese font is neither Adobe-Japan1,~Adobe-GB1, Adobe-CNS1,
+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''.
%</en>
%<*ja>
CID番号が<number>の文字を出力する.
-もし現在の和文フォントがAdobe-Japan1,~Adobe-GB1, Adobe-CNS1,~Adobe-Korea1の
+もし現在の和文フォントがAdobe-Japan1,~Adobe-GB1, Adobe-CNS1, Adobe-Korea1,~Adobe-KRの
いずれのCID-keyed fontでもない場合,<number>はAdobe-Japan1のCID番号であると解釈し
「適切なグリフ」\footnote{%
- 例えばフォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて
+ 特に縦組用グリフのCID番号を指定した場合は(LuaTeX-ja 20190504.0以降では若干改良されているが)
+ 意図しない結果になる可能性が高い.
+ なお,バージョン20190708.0以降では,CIDからグリフへの選択にグリフ名の情報を使用していない.
+ また,フォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて
グリフを選択する.
}を出力する.
%</ja>
\item 常に\textbf{JAchar}として扱われる.
%</ja>
%<*en>
-\item Processing codes for supporting OpenType features (\textit{e.g.},
+\item In vertical direction, \texttt{vert}/\texttt{vrt2} feature are automatically applied to
+ characters by \cs{UTF}, regardless these feature are not activated in current Japanese font.
+%</en>
+%<*ja>
+\item 縦組時には,現在の縦組用和文フォントで \texttt{vert}/\texttt{vrt2} 機能が
+ 有効か無効かを問わず,\cs{UTF} で出力される文字にはこれらのOpenType機能が働いた字形になる.
+%</ja>
+%<*en>
+\item Processes for supporting other OpenType features (for example,
glyph replacement and kerning) by the \Pkg{luaotfload} package
is not performed to these characters.
%</en>
%<*ja>
-\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための
- \Pkg{luaotfload}ã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81®ã\82³ã\83¼ã\83\89はこれらの文字には働かない.
+\item その他のOpenType機能(例えばグリフ置換やカーニング)をサポートするための
+ \Pkg{luaotfload}ã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81«ã\82\88ã\82\8bå\87¦ç\90\86はこれらの文字には働かない.
%</ja>
\end{itemize}
%</ja>
\subsection{\Pkg{luatexja-adjust}}
-\label{ssec-adj}
+\label{ssec:adj}
\begin{figure}[t]
\def\sq{%
\hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{%
\\
\bottomrule
\end{tabular}\par}
-\smallskip
+\medskip
-Note: the value of
+\fakefn{}{The value of
\Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure,
-for making the difference obvious.
+for making the difference obvious.}
%<ja>\caption{行長調整}\label{fig:adj}
%<en>\caption{Line adjustment}\label{fig:adj}
\end{figure}
%<*ja>
この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい.
\begin{description}
-\item[行末文字の位置調整]
+ \item[行末文字の位置調整]
\pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように
行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった.
和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず,
前の文に書いたことを実現するには
-\begin{lstlisting}
+ \begin{lstlisting}
\def\。{%
\penalty10000 % 禁則ペナルティ
\hbox to0pt{。\hss}\penalty0 % ぶら下げの場合
\end{lstlisting}
のような命令を定義し,文中の全ての句点を \lstinline+\。+ で書くことが必要だった.
-\Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を
-2通り以上から自動的に選択する機能を提供する.
-\pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と
- 「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした(
-\Pkg{luatexja-adjust}パッケージの既定では前者).
+ \Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を
+ 2通り以上から自動的に選択する機能を提供する.
+ \pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と
+ 「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした
+ (\Pkg{luatexja-adjust}パッケージの既定では前者).
-\item[優先順位付きの行長調整]
-\pTeX では,行長調整において優先度の概念が存在しなかったため,図
-\ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵
-括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し
-かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
-ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
-文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている.
-\Pkg{luatexja-adjust}パッケージの提供する第2の機能は,
-\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き
-の行長調整である.
-\begin{itemize}
- \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである.
-そのため,行分割の位置は変化することはない.
+ \item[優先順位付きの行長調整]
+ \pTeX では,行長調整において優先度の概念が存在しなかったため,図
+ \ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵
+ 括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し
+ かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
+ ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
+ 文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている.
+ \Pkg{luatexja-adjust}パッケージの提供する第2の機能は,
+ \cite{jlreq}や\cite{x4051}における規定のような,優先順位付き
+ の行長調整である.
+ \begin{itemize}
+ \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである.
+ そのため,行分割の位置は変化することはない.
+
+ \verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である.
+ \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は
+ 一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を
+ 行う場合には注意が必要である.
+ \end{itemize}
+
+ \item[「中身までみた」行送り計算]
+ 複数行に渡る文章を組版するときには行間に空きが入ることが普通である.
+ \TeX では各行が一つずつの水平ボックスをなしていることを思い出すと,隣り合った
+ 2つの行(つまり水平ボックス)の間の空きは次のようにして決まるのだった:
+ \begin{itemize}
+ \item 「通常に組んだときの行間」$d$を,\cs{baselineskip}から
+ 「前の行」の深さと「次の行」の高さを加えたものを引いた値とする.
+ \item $d\ge\cs{lineskiplimit}$の場合,
+ 標準の行送り\cs{baselineskip}で組んでも十分な間隔があると判断され,
+ 2行の間には長さ$d$の空白が挿入される.つまり行送りは\cs{baselineskip}.
+ \item {\catcode`\<=12$d<\cs{lineskiplimit}$}の場合,
+ 2行の間には長さ\cs{lineskip}の空白が挿入される.
+ そのため(設定値によるが,多くの場合)行送りは\cs{baselineskip}より広がる.
+ \end{itemize}
-\verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である.
- \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は
-一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を
-行う場合には注意が必要である.
-\end{itemize}
+ \begin{figure}[t]
+ \noindent\centering
+ \begin{minipage}[b]{18\zw}
+ \ltjenableadjust[profile=false, linestep=false]
+ ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+ よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+ これを②式に代入すると……
+ \par\vskip\abovecaptionskip
+ \ltjenableadjust[profile=false, linestep=false]
+ \par\centering\leavevmode{\small (a)}
+ \end{minipage}%
+ \kern2\zw
+ \begin{minipage}[b]{18\zw}
+ \ltjenableadjust[profile]
+ ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+ よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+ これを②式に代入すると……
+ \par\vskip\abovecaptionskip
+ \ltjenableadjust[profile=false, linestep=false]
+ \par\centering\leavevmode{\small (b)}
+ \end{minipage}\par
+ \caption{高い行が連続したときの状況}\label{fig:linegap1}
+ \end{figure}
+
+ ここで,\TeX は行送りの決定で「高さ・深さを取っているものが
+ 行のどの水平位置にあるか」は一切考慮しないことに注意してほしい.そのため,
+ \autoref{fig:linegap1}~(a)のように「必要以上に行間が空いて見える」状況が起こることがある.
+
+ \Pkg{luatexja-adjust}パッケージでは,「通常に組んだときの行間」$d$を
+ 各行の中身の文字・グルー・ボックスの寸法を勘案して計算するという方法を
+ 利用できるようにした.この機能を使うと,\autoref{fig:linegap1}~(b)のように
+ 行間の空きが必要以上に大きくなることを避けることができる.
+ \begin{itemize}
+ \item 段落中の隣り合った二行だけでなく,行間の空きは
+ 新たに水平ボックス$h$を(内部・外部問わず)垂直モードで追加した時にも自動で挿入される.
+ その場合には,前段落で述べた「中身までみる」処理は
+ \begin{itemize}
+ \item 現在のリストにおける最後のノード
+ \footnote{最後のノードが\cs{parskip}によるグルーであった場合のみ
+ さらに一つ前のノードを参照する}が水平ボックス$h'$であり,かつ
+ \item \cs{prevdepth}の値とその$h'$の深さの値が一致している
+ \end{itemize}
+ 場合にのみ発動するようにしている.
+ \item 行の中身に水平ボックス$h''$が入ってくることもあるが,その場合は$h''$の中身の高さ・深さまでは
+ 参照せず,あくまでも$h''$自身の高さ・深さのみを参照する.
+ 参照するようにしてしまうと,\cs{smash}など手動で行った高さ・深さ調整の意味がなくなってしまうからである.
+ \end{itemize}
+
+ \begin{figure}[t]
+ \noindent\centering
+ \begin{minipage}[b]{16\zw}
+ \ltjenableadjust[profile]
+ ……だから,①より$\dfrac{a^2}{b}= \dfrac{1+\sqrt{5}}2$.\\
+ よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+ これを②式に代入すると……
+ \par\vskip\abovecaptionskip
+ \ltjenableadjust[profile=false, linestep=false]
+ \par\centering\leavevmode{\small (a): 無効}
+ \end{minipage}%
+ \kern2\zw
+ \begin{minipage}[b]{16\zw}
+ \ltjsetparameter{linestep_factor=0.25}
+ \ltjenableadjust[profile, linestep]
+ ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+ よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+ これを②式に代入すると……
+ \par\vskip\abovecaptionskip
+ \ltjenableadjust[profile=false, linestep=false]
+ \par\centering\leavevmode{\small (b): $0.25$\cs{baselineskip}刻み}
+ \end{minipage}\par\medskip
+ \begin{minipage}[b]{16\zw}
+ \ltjsetparameter{linestep_factor=0.5}
+ \ltjenableadjust[profile, linestep]
+ ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+ よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+ これを②式に代入すると……
+ \par\vskip\abovecaptionskip
+ \ltjenableadjust[profile=false, linestep=false]
+ \par\centering\leavevmode{\small (c): 0.5\cs{baselineskip}刻み}
+ \end{minipage}%
+ \kern2\zw
+ \begin{minipage}[b]{16\zw}
+ \ltjsetparameter{linestep_factor=1}
+ \ltjenableadjust[profile, linestep]
+ ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+ よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+ これを②式に代入すると……
+ \par\vskip\abovecaptionskip
+ \ltjenableadjust[profile=false, linestep=false]
+ \par\centering\leavevmode{\small (d): \cs{baselineskip}刻み}
+ \end{minipage}\par
+ \caption{段階的な行送り増加}\label{fig:linegap2}
+ \end{figure}
+
+ \item[段階的な行送り調整]
+ 既に述べたように,
+ 「通常に組んだときの行間」$d$が\cs{lineskiplimit}より小さい場合,\TeX 標準では
+ 行間は\cs{lineskip}となるのだった.
+ このとき行送りは「前の行の深さ」,「次の行の高さ」,\cs{lineskip}の3つの和になるわけだが,
+ 場合によっては行送りを「\cs{baselineskip}の整数倍」などと切りのいい値に揃えたいという状況が
+ 考えられなくもない.
+
+ \Pkg{luatexja-adjust}パッケージでは,{\catcode`\<=12$d<\cs{lineskiplimit}$}のときに
+ 行送りを\cs{baselineskip}の\Param{linestep\_factor}倍ずつ増減させて
+ \begin{quote}
+ 行間が\cs{lineskip}以上となるような,
+ 最小の$(1+k\cdot \Param{linestep\_factor})\cs{baselineskip}$($k$は整数)の値
+ \end{quote}
+ とする機能を利用できるようにした.
+ \autoref{fig:linegap2}の(a)がこの機能を無効にした状況で,(b),~(c),~(d)が
+ それぞれ\Param{linestep\_factor}を0.25,~0.5,~1とした状況である.
+
+ なお,この機能は表組時(\cs{halign},~\cs{valign})には無効である.
+ \LaTeX における表組環境(tabular, arrayなど)では,\cs{baselineskip},~\cs{lineskip}はどちらも0に設定されているので
+ (代わりに各行に\cs{@arstrut}という支柱が入る)ために意味がないことと,
+ 数式を内部で表組を使って組むalign環境などではかえって行間が不揃いになってしまうからである.
\end{description}
-\Pkg{luatexja-adjust}パッケージは,上記で述べた2機能を有効化/無効化するための
+\Pkg{luatexja-adjust}パッケージは,上記で述べた4機能を有効化/無効化するための
以下の命令を提供する.これらはすべてグローバルに効力を発揮する.
\begin{cslist}
\item[\cs{ltjenableadjust[...]}]
-\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」を有効化/無効化する.
+\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」
+ 「『中身までみた』行送り計算」「段階的な行送り調整」を有効化/無効化する.
指定できるキーは以下の通り.
\begin{description}
\item[\texttt{lineend=[false,true,extended]}]
行末文字の位置調整の機能を無効化(\texttt{false}),「行分割後に調整」の形で有効化(\texttt{true}),
- 「行分割の仮定で考慮」(\texttt{extended})する.
+ 「行分割の過程で考慮」の形で有効化(\texttt{extended})する.
\item[\texttt{priority=[false,true]}]
- 優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true})する.
+ 優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true}).
+ \item[\texttt{profile=[false,true]}]
+ 「中身までみた」行送り計算を無効化(\texttt{false}),または有効化(\texttt{true}).
+ \item[\texttt{linestep=[false,true]}]
+ 段階的な行送り調整を無効化(\texttt{false}),または有効化(\texttt{true}).
\end{description}
-両キーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる.
+どのキーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる.
互換性の為,オプション無しでただ\cs{ltjenableadjust}が呼び出された場合は,
\begin{lstlisting}
\item[\cs{ltjdisableadjust}]
\Pkg{luatexja-adjust}パッケージの機能を無効化する.
\begin{lstlisting}
-\ltjenableadjust[lineend=false,priority=false]
+\ltjenableadjust[lineend=false,priority=false,profile=false,linestep=false]
\end{lstlisting}
と同義.
\end{cslist}
-また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で
-追加される.両パラメータともグローバルに効力を発揮する.
+また,次のパラメータが\cs{ltjsetparameter}内で
+追加される.いずれもグローバルに効力を発揮する.
\begin{cslist}[style=standard]
\item[\DParam{stretch\_priority}\,=\{<list>\}]
\Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を,
\texttt{others}キーが「\textbf{JAglue}以外のグルー」を表す.
各キーの値は,JFMグルーにおける「優先度$i$」を$10i$に対応させた整数値であり,
大きい方が先に伸ばされることを意味している.
+ 初期値は
+\begin{lstlisting}
+{kanjiskip=-35,xkanjiskip=-25,others=50}
+\end{lstlisting}
+であり,「優先度$-4$」と指定されているJFMグルーが最も伸びにくいようになっている.
\item[\DParam{shrink\_priority}\,=\{<list>\}]
同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する.
-それ以外は\Param{stretch\_priority}と指定の形式は変わらない.
+それ以外は\Param{stretch\_priority}と指定の形式は変わらない(初期値も変わらない).
+
+ \item[\DParam{linestep\_factor}\,=<float>]
+ 段階的な行送り調整の際,\cs{baselineskip}の自然長の何倍単位で行送りを変えるかを指定する.
+ 0を指定すると無効になるのと変わらない.また負数を指定すると,
+ その絶対値が指定されたかのように扱われる.
+ 初期値は0.5(つまり半行単位)である.
+
+ \item[\DParam{profile\_hgap\_factor}\,=<float>]
+ 「中身まで見た」行送り計算の際,
+ 前の行にある深さが大きいものと次の行にある高さが大きいものが
+ 水平方向にどれだけ離れていないといけないかを
+ 「\cs{lineskip}の自然長の何倍か」で指定する.
+ 負数を指定すると,その絶対値が指定されたかのように扱われる.
+ 初期値は1(つまり\cs{lineskip}(の自然長))である.
\end{cslist}
-初期値は\Param{stretch\_priority}, \Param{shrink\_priority}とも
-\begin{lstlisting}
-{kanjiskip=-35,xkanjiskip=-25,others=50}
-\end{lstlisting}
-であり,「優先度$-4$」と指定されているJFMグルーが最も伸び(縮み)にくいようになっている.
%</ja>
\subsection{\Pkg{luatexja-ruby}}
This package provides functions in a part of \Pkg{japanese-otf} package (changing fonts)
and a part of \Pkg{PXchfon} package (presets) by Takayuki Yato.
-One can specified other options other than listed below.
-These are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is
+Options which are given in \cs{usepackage} but not described in this~subsection
+are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is
\emph{not} specified; in this case these options are simply ignored.}.
For example, the line~5 in below example is equivalent to lines 1--3.
%</en>
\Pkg{otf}パッケージの一部(多書体化)と八登崇之氏による\Pkg{PXchfon}パッケージの一部(プリセット指定)
とを合わせたような格好をしている.
-オプションとして,以下のリストにないものも指定することができるが,それらは
+パッケージ読み込み時に渡されたオプションのうち,
+本節にないものを指定した場合,それらはそのまま
\Pkg{luatexja-fontspec}パッケージに渡される\footnote{\texttt{nfssonly} オプションが
指定されていた場合は,\Pkg{luatexja-fontspec}パッケージは読み込まれないので単純に無視され
る.}.例えば,下の1--3行目は5行目のように一行にまとめることができる.
\usepackage[no-math,match,kozuka-pr6n]{luatexja-preset}
\end{lstlisting}
+%<en>\subsubsection{General Options}
+%<ja>\subsubsection{一般的なオプション}
+\label{sssec:ltjpreset-general}
+
\begin{cslist}[before*=]
\item[fontspec%
%<en>\textrm{~(enabled by default)}
%</en>
%<*ja>
\LaTeX 標準のフォント選択機構(NFSS2)を用いて
-\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ
- ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という
-3つの和文フォントファミリを定義し,これらを用いる.
+\texttt{ltjpm}$n$(明朝),\texttt{ltjpg}$n$(ゴシック),
+それに後に述べる\texttt{deluxe}オプションが指定された場合には
+\texttt{ltjpmg}$n$(丸ゴシック)という
+和文フォントファミリを定義%
+\footnote{%
+ $n$は自然数であり,\cs{ltjapplypreset}の実行(この命令は\Pkg{luatexja-preset}パッケージ
+ 読み込み時に自動的に実行される)ごとに増加していく.
+}し,これらを用いる.
本オプション指定時には\Pkg{fontspec}・\Pkg{luatexja-fontspec}パッケージは
自動では読み込まれない,しかし,
\end{lstlisting}
のようにすれば,このオプションを指定すれば
欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる.
-一方,
-パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて
- いる場合は \texttt{nfssonly} オプションは無視される.
+
+一方,\Pkg{luatexja-preset}パッケージ読み込み時に
+既に\Pkg{luatexja-fontspec}パッケージが読み込まれている場合は
+\texttt{nfssonly}オプションは無視される.
%</ja>
\item[match]
%<*ja>
横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{%
\cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では
- font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え).
+ OpenType機能の有効化であり,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替える).
}.
%</ja>
\item[bold]
いため,
「ゴシック体の中字」も同時に変更されることになる.
%</ja>
-\item[90jis]
-%<en>Use 90JIS glyph variants if possible.
-%<ja>出来る限り90JISの字形を使う.
-\item[jis2004]
-%<en>Use JIS2004 glyph variants if possible.
-%<ja>出来る限りJIS2004の字形を使う.
+\item[jis90\textrm{,~}90jis]
+%<en>Use JIS~X~0208:1990 glyph variants if possible.
+%<ja>出来る限りJIS~X~0208:1990の字形を使う.
+\item[jis2004\textrm{,~}2004jis]
+%<en>Use JIS~X~0213:2004 glyph variants if possible.
+%<ja>出来る限りJIS~X~0213:2004の字形を使う.
\item[jfm\_yoko=<jfm>]
%<*en>
Use the JFM \texttt{jfm-<jfm>.lua} for horizontal direction, instead of \texttt{jfm-ujis.lua}~(default JFM).
\end{cslist}
%<*en>
-Note that \texttt{90jis} and \texttt{jis2004} only affect with mincho,
+Note that \texttt{jis90},~\texttt{90jis}, \texttt{jis2004}~and~\texttt{2004jis} only affect with mincho,
gothic (and, possibly rounded gothic) families defined by this package.
-We didn't taken account of when both \texttt{90jis} and \texttt{jis2004} are specified.
+We didn't taken account of when more than one options among them are specified.
%</en>
%<*ja>
-\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された
+\texttt{jis90},~\texttt{90jis}, \texttt{jis2004},~\texttt{2004jis}については本パッケージで定義された
明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.
-両オプションが同時に指定された場合の動作については全く考慮していない.
+これら4オプションのうち複数が同時に指定された場合の動作については全く考慮していない.
%</ja>
-%<en>\paragraph{Presets for multi weight}
-%<ja>\paragraph{多ウェイト用プリセットの一覧}
+%<en>\subsubsection{Presets which support multi weights}
+%<ja>\subsubsection{多ウェイト用プリセットの一覧}
+\label{sssec:ltjpreset-multi}
+
%<*en>
-Besides \texttt{morisawa-pro}~and~\texttt{morisawa-pr6n} presets,
+Besides \texttt{bizud}, \texttt{haranoaji}, \texttt{morisawa-pro},~and~\texttt{morisawa-pr6n} presets,
fonts are specified by font name, not by file name.
In following tables, starred fonts (e.g.~KozGo\dots-Regular) are used for medium series of \textit{gothic},
\emph{if and only if \texttt{deluxe} option is specified}.
%</en>
%<*ja>
-\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は
+\texttt{bizud}, \texttt{haranoaji}, \texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は
(ファイル名でなく)フォント名で行われる.
以下の表において,*\,つきのフォント(e.g.,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に}
ゴシック体中字として用いられるものを示している.
&KozGoPro-Medium&KozGoProVI-Medium&KozGoPr6N-Medium\\
\cmidrule(l){2-5}
%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+%<ja>\smash{\raisebox{2ex}{\textgt{ゴシック}}}%
&bold&KozGoPro-Bold&KozGoProVI-Bold&KozGoPr6N-Bold\\
&extra bold&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\
\bottomrule
\end{tabular}
\end{center}
-%<en>\newpage
\item[hiragino-pro] Hiragino Pro (Adobe-Japan1-5) fonts.
%<en> \\*[-\dimexpr\medskipamount+\baselineskip\relax]
\item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts.
&Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\
\cmidrule(l){2-4}
%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+%<ja>\smash{\raisebox{2ex}{\textgt{ゴシック}}}%
&bold&Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\
&extra bold&Hiragino~Kaku~Gothic~Std~W8&Hiragino~Kaku~Gothic~StdN~W8\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&Hiragino~Maru~Gothic~Pro~W4&Hiragino~Maru~Gothic~ProN~W4\\
\bottomrule
\end{tabular}
\end{center}
+\item[bizud] BIZ UD fonts (by Morisawa Inc.) bundled with
+ Windows~10 October 2018 Update.
+\begin{center}\small
+\begin{tabular}{ll>{\ttfamily}l}
+\toprule
+\textbf{family}&\textbf{series}\\
+\midrule
+%<en>\textit{mincho}
+%<ja>\textgt{明朝}%
+ &&BIZ-UDMinchoM.ttc\\
+\midrule
+ &medium&BIZ-UDGothicR.ttc\\
+\cmidrule(l){2-3}
+%<en>\textit{gothic}%
+%<ja>\textgt{ゴシック}
+ &bold&BIZ-UDGothicB.ttc\\
+ &extra bold&BIZ-UDGothicB.ttc\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\textgt{丸ゴシック}
+&&BIZ-UDGothicB.ttc\\
+\bottomrule
+\end{tabular}
+\end{center}
+
+%<en>\newpage
+
\item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts.
%<en> \\*[-\dimexpr\medskipamount+\baselineskip\relax]
\item[morisawa-pr6n] Morisawa Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts.
-\begin{center}\small
+\begin{center}\footnotesize
\begin{tabular}{ll>{\tt}l>{\tt}l}
\toprule
\bf family&\bf series&morisawa-pro&morisawa-pr6n\\
\midrule
&medium&A-OTF-RyuminPro-Light.otf&A-OTF-RyuminPr6N-Light.otf\\
%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
+%<ja>\smash{\raisebox{1.5ex}{\textgt{明朝}}}%
&bold&A-OTF-FutoMinA101Pro-Bold.otf&A-OTF-FutoMinA101Pr6N-Bold.otf\\
\midrule
&medium
&A-OTF-GothicBBBPro-Medium.otf&A-OTF-GothicBBBPr6N-Medium.otf\\
%<en>\textit{gothic}%
-%<ja>\gt ゴシック
+%<ja>\textgt{ゴシック}
&bold&A-OTF-FutoGoB101Pro-Bold.otf&A-OTF-FutoGoB101Pr6N-Bold.otf\\
&extra bold&A-OTF-MidashiGoPro-MB31.otf&A-OTF-MidashiGoPr6N-MB31.otf\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&A-OTF-Jun101Pro-Light.otf&A-OTF-ShinMGoPr6N-Light.otf\\
\bottomrule
\end{tabular}
&YuGothic-Regular&YuGothic-Medium&YuGothic~Medium\\
\cmidrule(l){2-5}
%<en>\textit{gothic}%
-%<ja>\gt ゴシック
+%<ja>\textgt{ゴシック}
&bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
&extra bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\
\bottomrule
\end{tabular}
\midrule
&medium&Moga90Mincho&MogaMincho\\
%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
+%<ja>\smash{\raisebox{1.5ex}{\textgt{明朝}}}%
&bold&Moga90Mincho Bold&MogaMincho Bold\\
\midrule
&medium&Moga90Gothic&MogaGothic\\
%<en>\textit{gothic}%
-%<ja>\gt ゴシック
+%<ja>\textgt{ゴシック}
&bold&Moga90Gothic Bold&MogaGothic Bold\\
&extra bold&Moga90Gothic Bold&MogaGothic Bold\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&Mobo90Gothic&MoboGothic\\
\bottomrule
\end{tabular}
\midrule
&medium&Ume Mincho\\
%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
+%<ja>\smash{\raisebox{1.5ex}{\textgt{明朝}}}%
&bold&Ume Mincho\\
\midrule
&&Ume Gothic*\\
&\smash{\raisebox{1.5ex}{medium}}&Ume Gothic O5\\
\cmidrule(l){2-3}
%<en>\textit{gothic}%
-%<ja>\gt ゴシック
+%<ja>\textgt{ゴシック}
&bold&Ume Gothic O5\\
&extra bold&Ume Gothic O5\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&Ume Gothic O5\\
\bottomrule
\end{tabular}
\end{center}
+%<en>\newpage
\item[sourcehan] Source Han Serif and Source Han Sans fonts (Language-specific OTF \textit{or} OTC)
%<en> \\*[-\dimexpr\medskipamount+\baselineskip\relax]
\item[sourcehan-jp] Source Han Serif JP and Source Han Sans JP fonts (Region-specific Subset OTF)
&\AD{Sans}{Medium}\\
\cmidrule(l){2-4}
%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+%<ja>\smash{\raisebox{2ex}{\textgt{ゴシック}}}%
&bold&\AD{Sans}{Bold}\\
&extra bold&\AD{Sans}{Heavy}\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&\AD{Sans}{Heavy}\\
\bottomrule
\end{tabular}
&\AD{Sans}{Medium}\\
\cmidrule(l){2-4}
%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
-%<ja>\smash{\raisebox{2ex}{\gt ゴシック}}%
+%<ja>\smash{\raisebox{2ex}{\textgt{ゴシック}}}%
&bold&\AD{Sans}{Bold}\\
&extra bold&\AD{Sans}{Black}\\
\midrule
%<en>\textit{rounded gothic}
-%<ja>\gt 丸ゴシック
+%<ja>\textgt{丸ゴシック}
&&\AD{Sans}{Black}\\
\bottomrule
\end{tabular}
\end{center}
+\item[haranoaji] Harano Aji Fonts.
+%<en>\par These fonts can be downloaded from\\\hfill \url{https://github.com/trueroad/HaranoAjiFonts}.
+%<ja>これらのフォントは \url{https://github.com/trueroad/HaranoAjiFonts} からダウンロードできる.
+%<*en>
+There is not rounded gothic family in Harano Aji Fonts.
+%</en>
+%<*ja>
+「原ノ味丸ゴシック」は存在しないので,便宜的に原ノ味角ゴシックHeavyによって代用している.
+%</ja>
+\begin{center}\small
+\begin{tabular}{lll}
+\toprule
+\bf family&\bf series&\texttt{haranoaji}\\
+\midrule
+ &light&HaranoAjiMincho-Light.otf\\
+%<en>\textit{mincho}%
+%<ja>\textgt{明朝}%
+ &medium&HaranoAjiMincho-Regular.otf\\
+ &bold&HaranoAjiMincho-Bold.otf\\
+\midrule
+ &&HaranoAjiGothic-Regular.otf*\\
+ &\smash{\raisebox{1.5ex}{medium}}
+ &HaranoAjiGothic-Medium.otf\\
+\cmidrule(l){2-3}
+%<en>\smash{\raisebox{2ex}{\textit{gothic}}}%
+%<ja>\smash{\raisebox{2ex}{\textgt{ゴシック}}}%
+ &bold&HaranoAjiGothic-Bold.otf\\
+ &extra bold&HaranoAjiGothic-Heavy.otf\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\textgt{丸ゴシック}
+&&HaranoAjiGothic-Heavy.otf\\
+\bottomrule
+\end{tabular}
+\end{center}
+\end{cslist}
+%<en>\subsubsection{Presets which do not support multi weights}
+%<ja>\subsubsection{単ウェイト用プリセット一覧}
+\label{sssec:ltjpreset-single}
-\end{cslist}
-%<en>\paragraph{Presets for single weight}
-%<ja>\paragraph{単ウェイト用プリセット一覧}
%<*en>
Next, we describe settings for using only single weight.
%</en>
&IPA Gothic&IPAex Gothic&MS Gothic\\
%</en>
%<*ja>
-\gtfamily 明朝体&Ryumin-Light(非埋込)
+\gtfamily 明朝&Ryumin-Light(非埋込)
&IPA明朝&IPAex明朝&MS明朝\\
-\gtfamily ゴシック体&GothicBBB-Medium(非埋込)
+\gtfamily ゴシック&GothicBBB-Medium(非埋込)
&IPAゴシック&IPAexゴシック&MSゴシック\\
%</ja>
\bottomrule
\end{tabular}\par\medskip}
-%<en>\paragraph{Using HG fonts}
-%<ja>\paragraph{HGフォントの利用}
+%<en>\subsubsection{Presets which use HG fonts}
+%<ja>\subsubsection{HGフォントを使うプリセット}
+\label{sssec:ltjpreset-hg}
%<*en>
We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights.
In the table below, starred fonts (e.g., IPA~Gothic*) are used
\textit{gothic}&bold&HG Gothic E&HG Gothic E&HG Gothic E\\\cmidrule{2-5}
&extra bold&HG Soei Kaku Gothic UB&HG Soei Kaku Gothic UB&HG Soei Kaku Gothic UB\\\midrule
\textit{rounded gothic}&&
-HG Maru Gothic PRO&HG Maru Gothic PRO&HG Maru Gothic PRO\\
+HG MaruGothic M PRO&HG MaruGothic M PRO&HG MaruGothic M PRO\\
%</en>
%<*ja>
&medium&IPA明朝&IPAex明朝&MS明朝\\
-\smash{\raisebox{1.5ex}{\textgt{明朝体}}}%
+\smash{\raisebox{1.5ex}{\textgt{明朝}}}%
&bold&HG明朝E&HG明朝E&HG明朝E\\\midrule
&&IPAゴシック*&IPAexゴシック*&MSゴシック*\\
&\smash{\raisebox{1.5ex}{medium}}%
&HGゴシックM&HGゴシックM&HGゴシックM\\\cmidrule{2-5}
-\textgt{ゴシック体}&bold&HGゴシックE&HGゴシックE&HGゴシックE\\\cmidrule{2-5}
+\textgt{ゴシック}&bold&HGゴシックE&HGゴシックE&HGゴシックE\\\cmidrule{2-5}
&extra bold&HG創英角ゴシックUB&HG創英角ゴシックUB&HG創英角ゴシックUB\\\midrule
-\textgt{丸ゴシック体}&&
-HG丸ゴシック体PRO&HG丸ゴシック体PRO&HG丸ゴシック体PRO\\
+\textgt{丸ゴシック}&&
+HG丸ゴシックM-PRO&HG丸ゴシックM-PRO&HG丸ゴシックM-PRO\\
%</ja>
\bottomrule
\end{tabular}\par\medskip}
are internally specified by:
\begin{description}
\item[default] by font name (\texttt{HGMinchoE}, etc.).
-\item[{\tt 90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}).
-\item[{\tt jis2004}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}).
+\item[\texttt{jis90}, \texttt{90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}).
+\item[\texttt{jis2004}, \texttt{2004jis}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}).
\end{description}
%</en>
%<*ja>
なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で
\begin{description}
\item[標準] フォント名(\texttt{HGMinchoE} など)
-\item[{\tt 90jis}指定時] ファイル名 (%
+\item[\texttt{jis90}, \texttt{90jis}指定時] ファイル名 (%
\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf})
-\item[{\tt jis2004}指定時] ファイル名 (%
+\item[\texttt{jis2004}, \texttt{2004jis}指定時] ファイル名 (%
\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf})
\end{description}
として指定を行っているので注意すること.
%</ja>
+%<en>\subsubsection{Define/Use Custom Presets}
+%<ja>\subsubsection{新たなプリセットの定義}
+
+%<*ja>
+バージョン20170904.0以降では,自分で新たなプリセットを定義することが出来るようになった.
+以下に説明する2命令はプリアンブルでしか実行できない.
+%</ja>
+%<*en>
+From version~20170904.0, one can define new presets using \cs{ltjnewpreset},
+and use them by \cs{ltjapplypreset}. These two commands can only be used in the preamble.
+%</en>
+\begin{cslist}
+ \item[\cs{ltjnewpreset}\{<name>\}\{<specification>\}]
+%<*ja>
+ 新たに<name>という名称のプリセットを定義する.この名称は,
+ すでに定義されているプリセット名や,
+ \ref{sssec:ltjpreset-general}で定義されているオプション,さらに
+ 次の9つと重複してはならない.
+ \begin{quote}
+ \ttfamily
+ mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+ \end{quote}
+
+ <specification>は,プリセット名や以下のキー達のコンマ区切りリストを指定する:
+ \begin{description}
+ \item[\ttfamily mc-l=<font>] 明朝体細字(\cs{mcfamily}\cs{ltseries})
+ \item[\ttfamily mc-m=<font>] 明朝体中字(\cs{mcfamily}\cs{mdseries})
+ \item[\ttfamily mc-bx=<font>] 明朝体太字(\cs{mcfamily}\cs{bfseries})
+ \item[\ttfamily gt-m=<font>] ゴシック体中字(\cs{gtfamily}\cs{mdseries})
+ \item[\ttfamily gt-bx=<font>] ゴシック体太字(\cs{gtfamily}\cs{bfseries})
+ \item[\ttfamily gt-eb=<font>] ゴシック体太字(\cs{gtfamily}\cs{ebseries})
+ \item[\ttfamily mg-m=<font>] 丸ゴシック体(\cs{mgfamily})
+ \item[\ttfamily mc=<font>] 明朝体の細字・中字・太字全部を設定.
+ 以下を指定したことと同じである:
+ \begin{quote}
+ \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+ \end{quote}
+ \item[\ttfamily gt=<font>] ゴシック体の中字・太字・極太全部を設定.
+ 以下を指定したことと同じである:
+ \begin{quote}
+ \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+ \end{quote}
+ \end{description}
+ なお,パッケージ読み込み時に \texttt{deluxe} が有効でない場合は,
+ 上記9キーのうち\texttt{mc}, \texttt{gt}しか実質的に意味を持たない.
+%</ja>
+%<*en>
+ Define new preset~<name>. This <name> cannot be same as other presets,
+ options described in Subsubsection~\ref{sssec:ltjpreset-general}, nor
+ following nine strings:
+ \begin{quote}
+ \ttfamily
+ mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+ \end{quote}
+
+ <specification> is a comma-separated list which consists of
+ other presets and/or the following keys:
+ \begin{description}
+ \item[\ttfamily mc-l=<font>] mincho light
+ \item[\ttfamily mc-m=<font>] mincho medium
+ \item[\ttfamily mc-bx=<font>] mincho bold
+ \item[\ttfamily gt-m=<font>] gothic medium
+ \item[\ttfamily gt-bx=<font>] gothic bold
+ \item[\ttfamily gt-eb=<font>] gothic extra~bold
+ \item[\ttfamily mg-m=<font>] rounded gothic
+ \item[\ttfamily mc=<font>] Same as
+ \begin{quote}
+ \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+ \end{quote}
+ \item[\ttfamily gt=<font>] Same as
+ \begin{quote}
+ \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+ \end{quote}
+ \end{description}
+ If \texttt{deluxe} is not specified at loading the package,
+ only \texttt{mc}~and~\texttt{gt} keys (among above 9~keys) have a meaning.
+%</en>
+ \item[\cs{ltjnewpreset}*\{<name>\}\{<specification>\}]
+%<*ja>
+ \cs{ltjnewpreset}とほぼ同じであるが,こちらはすでに定義されているプリセット名
+ を<name>に指定した場合にはエラーを出さずに定義を置き換える.
+%</ja>
+%<*en>
+ Almost same as \cs{ltjnewpreset}. However, if <name> matches a preset which already defined,
+ this command simply overwrite it.
+%</en>
+ \item[\cs{ltjapplypreset}\{<name>\}]
+%<ja> <name>で指定されたプリセットを使って和文フォントを設定する.
+%<en> Set Japanese font families using preset~<name>.
+\end{cslist}
+
+%<*ja>
+なお,\cs{ltjnewpreset}の第二引数<specification>に含まれる
+プリセット名は\cs{ltjnewpreset}の時点で定義されている必要はなく,
+\cs{ltjapplypreset}で実際に使うときに定義されていれば良い.
+そのため,次のような記述も可能である:
+\begin{lstlisting}
+ \ltjnewpreset{hoge}{piyo,mc-bx=HiraMinProN-W6}
+ \ltjnewpreset{piyo}{mg-m=HiraMaruProN-W4}
+ \ltjapplypreset{hoge}
+\end{lstlisting}
+
+\paragraph{注意}
+\cs{ltjnewpreset}で定義したプリセットには以下の制限がある.
+\begin{itemize}
+ \item 非埋め込みのフォントを指定することはできない.
+ \item \texttt{ipa-hg}などのいくつかのプリセットでは
+ 「\texttt{90jis}, \texttt{jis2004}が指定されているか否かでフォントの指定を変える」処理が
+ 行われていたが,\cs{ltjnewpreset}で定義したプリセットではこの処理は働かない.
+ HGフォントやモガ明朝などを使うプリセットを定義する場合には注意すること.
+\end{itemize}
+%</ja>
+%<*en>
+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{piyo}{mg-m=HiraMaruProN-W4}
+ \ltjapplypreset{hoge}
+\end{lstlisting}
+
+\paragraph{Restrictions}
+Presets which are defined by \cs{ltjnewpreset} have following restrictions:
+\begin{itemize}
+ \item One cannot specify non-embedded fonts (such as Ryumin-Light).
+ \item Some presets, such as \texttt{ipa-hg}, have a feature that
+ fonts are changed according to whether \texttt{90jis}~or~\texttt{jis2004} is speified.
+ This feature is not usable in presets which are defined by \cs{ltjnewpreset}.
+\end{itemize}
+%</en>
+
+
\clearpage
%<en>\part{Implementations}
%<ja>\part{実装}
\attr{ltj@curjfnt}
%<*en>
-The font index of current Japanese font for horizontal direction.
+If this attribute is a positive number, it stores the font number of current Japanese font for horizontal direction.
+If this attribute is negative, it means that the Japanese font for horizontal direction is
+not loaded---\LuaTeX-ja only knows its size and JFM.
%</en>
%<*ja>
-現在の横組用和文フォントのフォント番号.
+基本的には現在の横組用和文フォントのフォント番号を格納しているが,
+\LaTeX 下で使用する場合は($-2$以下の)負数となることがある.
+ 負数の場合は「横組用和文フォントは実際には読み込まれておらず,そのフォントサイズとJFMだけが
+ \LuaTeX-jaが把握している」状態を表す.
%</ja>
\attr{ltj@curtfnt}
%<*en>
-The font index of current Japanese font for vertical direction.
+Similar to \cs{ltj@curjfnt}, but with current Japanese font for vertical direction.
%</en>
%<*ja>
-ç\8f¾å\9c¨ã\81®ç¸¦çµ\84ç\94¨å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81®ã\83\95ã\82©ã\83³ã\83\88ç\95ªå\8f·.
+縦çµ\84ç\94¨å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81«é\96¢ã\81\99ã\82\8b\cs{ltj@curjfnt}ã\81¨å\90\8cæ§\98ã\81®å\80¤.
%</ja>
\attr{ltj@charclass}
Penalties inserted for the word-wrapping process (\emph{kinsoku shori}) of Japanese characters.
%</en>
%<ja>禁則処理のために挿入されたペナルティ.
-\item[\mathversion{bold}$(\textit{from\_jfm}-2)$--$(\textit{from\_jfm}+2)$~(4--8)]
+\item[\mathversion{bold}$\textit{from\_jfm}$--$(\textit{from\_jfm}+63)$~(4--67)]
%<en>Glues/kerns from JFM.
%<ja>JFM由来のグルー/カーン.
-\item[\textit{kanji\_skip}~(9), \textit{kanji\_skip\_jfm}~(10)]
+\item[\textit{kanji\_skip}~(68), \textit{kanji\_skip\_jfm}~(69)]
%<en>Glues from \Param{kanjiskip}.
%<ja>和文間空白\Param{kanjiskip}を表すグルー.
-\item[\textit{xkanji\_skip}~(11), \textit{xkanji\_skip\_jfm}~(12)]
+\item[\textit{xkanji\_skip}~(70), \textit{xkanji\_skip\_jfm}~(71)]
%<en>Glues from \Param{xkanjiskip}.
%<ja>和欧文間空白\Param{xkanjiskip}を表すグルー.
-\item[\textit{processed} (13)]
+\item[\textit{processed} (73)]
%<en>Nodes which is already processed by \ldots.
%<ja>\LuaTeX-ja の内部処理によって既に処理されたノード.
-\item[\textit{ic\_processed} (14)]
+\item[\textit{ic\_processed} (74)]
%<*en>
Glues from an italic correction, but already processed in the insertion process of \textbf{JAglue}s.
%</en>
%<ja>イタリック補正に由来するグルーであって,既に \textbf{JAglue} 挿入処理にかかったもの.
-\item[\textit{boxbdd} (15)]
+\item[\textit{boxbdd} (75)]
%<en>Glues/kerns that inserted just the beginning or the ending of an hbox or a paragraph.
%<ja>hboxか段落の最初か最後に挿入されたグルー/カーン.
\end{description}
%<*ja>
また,挿入処理の結果であるリストの最初のノードでは,\verb+\ltj@icflag+ の値に
-\textit{processed\_begin\_flag}~(128)が追加される.これによって,\cs{unhbox} が
+\textit{processed\_begin\_flag}~(4096)が追加される.これによって,\cs{unhbox} が
連続した場合でも「ボックスの境界」が識別できるようになっている.
%</ja>
\item[\textit{char\_by\_cid}]
%<*en>
-Nodes for \textbf{JAchar} which the callback process of
- \Pkg{luaotfload} won't be applied, and the character code is
+Nodes for \textbf{JAchar} which processes by \Pkg{luaotfload} won't be applied,
+ and the character code is
stored in the \texttt{value} field. Each node of this type are
converted to a \textit{glyph\_node} \emph{after}
- the callback process of luaotfload.
-Nodes of this type is used in \cs{CID}, \cs{UTF} and IVS support.
+ processes by luaotfload.
+Nodes of this type is used in \cs{CID}~and~\cs{UTF}.
%</en>
%<*ja>
-\Pkg{luaotfload}ã\81®ã\82³ã\83¼ã\83«ã\83\90ã\83\83ã\82¯ã\81«ã\82\88ã\82\8bå\87¦ç\90\86ã\81\8cé\81©ç\94¨ã\81\95ã\82\8cã\81ªã\81\84\textbf{JAchar}ã\81®ã\81\9fã\82\81ã\81®ã\83\8eã\83¼ã\83\89ã\81§ï¼\8c
+\Pkg{luaotfload}による処理が適用されない\textbf{JAchar}のためのノードで,
\texttt{value} フィールドに文字コードが格納されている.
この種類のノードはそれぞれが\Pkg{luaotfload}のコールバックの処理の
\emph{後で}\textit{glyph\_node}に変換される.
-\cs{CID}, \cs{UTF}ã\82\84IVS対å¿\9cå\87¦ç\90\86ã\81§ã\81\93ã\81®ç¨®é¡\9eã\81®ã\83\8eã\83¼ã\83\89ã\81\8cå\88©ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bï¼\8e
+\cs{CID}, \cs{UTF}でこの種類のノードが利用されている.
%</ja>
\item[\textit{replace\_vs}]
\texttt{luatexja.isglobal}. Its meaning is the following.
\begin{align}
\texttt{luatexja.isglobal} =
-\begin{cases}
- \texttt{'global'}&\text{global}\\
- \texttt{''}&\text{local}
-\end{cases}
+\begin{cases*}
+ \texttt{'global'}&(global assignment),\\
+ \texttt{''}&(local assignment).
+\end{cases*}
\end{align}
This is determined not only by command name
(\cs{ltjsetparameter}~or~\cs{ltjglobalsetparameter}),
なお,パラメータ指定がグローバルかローカルかどうかを示す \texttt{luatexja.isglobal} が,
\begin{align}
\texttt{luatexja.isglobal} =
-\begin{cases}
- \texttt{'global'}&\text{パラメータ設定はグローバル}\\
- \texttt{''}&\text{パラメータ設定はローカル}
-\end{cases}
+\begin{cases*}
+ \texttt{'global'}&(パラメータ設定はグローバル),\\
+ \texttt{''}&(パラメータ設定はローカル).
+\end{cases*}
\end{align}
として自動的にセットされる\footnote{命令が \cs{ltjglobalsetparameter} かどうかだけでは
なく,実行時の \cs{globaldefs} の値にも依存して定まる.}.
\]
ここで.$f(x,y)$は
\[
- f(x,y)=\begin{cases}
-x&\text{if\ }\Param{diffrentjfm}=\texttt{pleft};\\
-y&\text{if\ }\Param{diffrentjfm}=\texttt{pright};\\
-(x+y)/2&\text{if\ }\Param{diffrentjfm}=\texttt{paverage};
-\end{cases}.
+ f(x,y)=\begin{dcases*}
+x&($\Param{diffrentjfm}=\texttt{pleft}$),\\
+y&($\Param{diffrentjfm}=\texttt{pright}$),\\
+\frac{x+y}2&($\Param{diffrentjfm}=\texttt{paverage}$).
+\end{dcases*}
\]
\item
\Param{differentjfm}がそれ以外の値の時は,<ratio>の値は無視され,JFM由来のグルー/カーンは以下の値となる:
\]
ここで.$f(x,y)$は
\[
- f(x,y)=\begin{cases}
-\min(x,y)&\text{if\ }\Param{diffrentjfm}=\texttt{small};\\
-\max(x,y)&\text{if\ }\Param{diffrentjfm}=\texttt{large};\\
-(x+y)/2&\text{if\ }\Param{diffrentjfm}=\texttt{average};\\
-x+y&\text{if\ }\Param{diffrentjfm}=\texttt{both};
-\end{cases}.
+ f(x,y)=\begin{dcases*}
+\min(x,y)&($\Param{diffrentjfm}=\texttt{small}$),\\
+\max(x,y)&($\Param{diffrentjfm}=\texttt{large}$),\\
+\frac{x+y}2&($\Param{diffrentjfm}=\texttt{average}$),\\
+x+y&($\Param{diffrentjfm}=\texttt{both}$).
+\end{dcases*}
\]
\end{itemize}
\end{enumerate}
% \textbf{JAchar}を名称の一部に含む制御綴は使用不可能}である.
% 例えば次のような入力を考えよう:
% %</ja>
-% \begin{verbatim*}
-% \begin{lstlisting}[escapechar=\#]
+% \begin{lstlisting}[showspaces][escapechar=\!]
+% !\cs{begin}!{lstlisting}[escapechar=\#]
% #\ほげ xぴよ#
+% !\cs{end}!{lstlisting}
% \end{lstlisting}
-% \end{verbatim*}
% %<en>The line~2 is transformed by the callback to
% %<ja>ここで,2行目は \verb+process_input_buffer+ の作用により,
% \begin{lstlisting}[showspaces, escapechar=\!]
\texttt{vsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
\begin{itemize}
- \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
-もしもIVSサポート(\ref{ssec:ltjotf}節)が有効になっていた場合は,
-以下の例(左側は入力,右側はその出力)のようになる.
+ \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力されるため,
+例えば以下の例(左側は入力,右側はその出力)のようになる.
%</ja>
\begin{LTXexample}
\begin{lstlisting}[vsraw=true]
%<en> For example, the following code is the setting of the \texttt{vscmd} key in this document.
\begin{lstlisting}[numbers=left]
\def\IVSA#1#2#3#4#5{%
- \textcolor{blue}{\raisebox{3.5pt}{\tt%
- \fboxsep=0.5pt\fbox{\tiny \oalign{0#1#2\crcr#3#4#5\crcr}}}}%
+ \hbox to1em{\hss\textcolor{blue}{\raisebox{3.5pt}{\normalfont\ttfamily%
+ \fboxsep=0.5pt\fbox{\hbox to0.75em{\hss\tiny \oalign{0#1#2\crcr#3#4#5\crcr}\hss}}}}\hss}%
}
{\catcode`\%=11
\gdef\IVSB#1{\expandafter\IVSA\directlua{
直前が和文文字であるかを示すフラグ \verb+\lst@ifkanji+ を新たに導入した.
以降,説明のために以下のように文字を分類する:
%</ja>
+%<*ja>
\begin{center}
\small
-\begin{tabular}{lccccc}
+\begin{tabular}{llllll}
\toprule
-&Letter&Other&Kanji&Open&Close\\\midrule
+&\emph{Letter}&\emph{Other}&\emph{Kanji}&\emph{Open}&\emph{Close}\\\midrule
\verb+\lst@ifletter+&T&F&T&F&T\\
\verb+\lst@ifkanji+&F&F&T&T&F\\
-%<en>Meaning&char in an identifier&other alphabet&%
-%<en>most of Japanese char&opening brackets&closing brackets\\
-%<ja>意図&識別子中の文字&その他欧文文字&殆どの和文文字&開き括弧類&閉じ括弧類\\
+\emph{意図}&識別子中の文字&その他欧文文字&殆どの和文文字&開き括弧類&閉じ括弧類\\
+\bottomrule
+\end{tabular}
+\end{center}
+%</ja>
+%<*en>
+\begin{center}
+\small
+\begin{tabular}{llll}
+\toprule
+&\textbf{Letter}&\textbf{Other}&\\\midrule
+\verb+\lst@ifletter+&T&F&\\
+\verb+\lst@ifkanji+&F&F&\\
+\textbf{Meaning}&char in an identifier&other alphabet&\\
+ \midrule
+&\textbf{Kanji}&\textbf{Open}&\textbf{Close}\\\midrule
+\verb+\lst@ifletter+&T&F&T\\
+\verb+\lst@ifkanji+&T&T&F\\
+\textbf{Meaning}&most of Japanese char&opening brackets&closing brackets\\
\bottomrule
\end{tabular}
\end{center}
+%</en>
%<*en>
Note that \textit{digits} in the \Pkg{listings} package can be Letter or
Other according to circumstances.
%</ja>
\begin{center}
\small
-\begin{tabular}{llccccc}
+\begin{tabular}{lllllll}
\toprule
%<*en>
-&&\multicolumn{4}{c}{Next}\\\cmidrule(lr){3-7}
-&&\hbox to 4em{\hss Letter\hss}&\hbox to 4em{\hss Other\hss}
-&\hbox to 4em{\hss Kanji\hss}&\hbox to 4em{\hss Open\hss}&Close\\\midrule
+&&\multicolumn{4}{c}{\textbf{Next}}\\\cmidrule(lr){3-7}
+&&\hbox to 4em{Letter\hss}&\hbox to 4em{Other\hss}
+&\hbox to 4em{Kanji\hss}&\hbox to 4em{Open\hss}&Close\\\midrule
&Letter&collects&\multicolumn{3}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
&Other&outputs&collects&\multicolumn{2}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
-Prev&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
+\textbf{Prev}&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
&Open&\multicolumn{5}{c}{\hrulefill \ collects\ \hrulefill}\\
&Close&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
%</en>
%<*ja>
-&&\multicolumn{4}{c}{後ろ側の文字}\\\cmidrule(lr){3-7}
-&&\hbox to 4em{\hss Letter\hss}&\hbox to 4em{\hss Other\hss}
-&\hbox to 4em{\hss Kanji\hss}&\hbox to 4em{\hss Open\hss}&Close\\\midrule
-直&Letter&収集&\multicolumn{3}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
-前&Other&出力&収集&\multicolumn{2}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
-文&Kanji&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
-字&Open&\multicolumn{5}{c}{\hrulefill \ 収集\ \hrulefill}\\
-種&Close&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+&&\multicolumn{4}{c}{\textbf{後側文字種}}\\\cmidrule(lr){3-7}
+&&\hbox to 4em{Letter\hss}&\hbox to 4em{Other\hss}
+&\hbox to 4em{Kanji\hss}&\hbox to 4em{Open\hss}&Close\\\midrule
+\emph{直}&Letter&収集&\multicolumn{3}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+\emph{前}&Other&出力&収集&\multicolumn{2}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+\emph{文}&Kanji&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+\emph{字}&Open&\multicolumn{5}{c}{\hrulefill \ 収集\ \hrulefill}\\
+\emph{種}&Close&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
%</ja>
\bottomrule
\end{tabular}
$b_{i}$とおく.式で書くと,
\[
\catcode`\<=12
-b_{i} = \begin{cases}
- |\textit{total}-a_{i}\text{\cs{zw}}|/T^{+}
- &(\textit{total}-a_{i}\text{\cs{zw}}\geq 0)\\
- |\textit{total}-a_{i}\text{\cs{zw}}|/T^{-}
- &(\textit{total}-a_{i}\text{\cs{zw}}<0)
-\end{cases}.
+b_{i} = \begin{dcases*}
+ \frac{\lvert\textit{total}-a_{i}\text{\cs{zw}}\rvert}{T^{+}}
+ &($\textit{total}-a_{i}\text{\cs{zw}}\geq 0$),\\
+ \frac{\lvert\textit{total}-a_{i}\text{\cs{zw}}\rvert}{T^{-}}
+ &($\textit{total}-a_{i}\text{\cs{zw}}<0$).
+\end{dcases*}
\]
$b_{i}$達の最小値を与えるような$i$を$j$としたとき\footnote{%
そのような$i$が2つ以上あるときは,$|\textit{total}-a_{i}\cdot \text{\cs{zw}}|$,
%</ja>
%<*ja>
-\section{IVS対応}
-\verb+luatexja.otf.enable_ivs()+ を実行し,IVS対応を有効にした状態では,
-\verb+pre_linebreak_filter+ や \verb+hpack_filter+ コールバックには
-次の4つが順に実行される状態となっている:
-\begin{description}
-\item[\tt ltj.do\_ivs] \textit{glyph\_node}~$p$の直後に,異体字セレクタ(を表す\textit{glyph\_node})
-が連続した場合に,$p$のフォントに対応したが持つ「異体字情報」に従って出力するグリフを変える.
-
-しかし,単に$p.\textit{char}$を変更するだけでは,後から
-OpenType機能の適用(すぐ下)により置換される可能性がある.そのため,
-\cs{CID} や \cs{UTF} と同じように,\textit{glyph\_node}~$p$の代わりに
-\texttt{user\_id} が\textit{char\_by\_cid}であるようなuser-defined whatsitを用いている.
-\item[(\Pkg{luaotfload} によるfont featureの適用)]
-\item[\tt ltj.otf] \texttt{user\_id} が\textit{char\_by\_cid}であるようなuser-defined whatsitを
-きちんと\textit{glyph\_node}に変換する.この処理は,\cs{CID}, \cs{UTF}やIVSによる置換が,
-OpenType機能の適用で上書きされてしまうのを防止するためである.
-\item[\tt ltj.main\_process] \textbf{JAglue}の挿入処理(\ref{sec-jfmglue}章)と,
-JFMの指定に従って各\textbf{JAchar}の「寸法を補正」することを行う.
-\end{description}
-
-問題は各フォントの持っているIVS情報をどのように取得するか,である.
-\Pkg{luaotfload} はフォント番号<font\_number>の情報を\
-\texttt{fonts.hashes.identifiers[<font\_number>]} 以下に格納している.
-しかし,OpenTypeフォントのIVS情報は格納されていないようである%
-\footnote{TrueTypeフォントに関しては,
-\begin{center}
-\texttt{fonts.hashes.idenfiers[<font\_number>]%
- .resources.variants[<selector>][<base\_char>]}
-\end{center}
-に,<base\_char>番の文字の後に異体字セレクタ<selector>が続いた場合に
-出力すべきグリフが書かれてある.}.
-%例えば,小塚明朝Pr6N~Rでは,
-
-一方,\LuaTeX 内部の \texttt{fontloader} の返すテーブルには
-OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されている.
-具体的には……
-
-そのため,\LuaTeX-jaのIVS対応においては,\LuaTeX 内部の\
-\texttt{fontloader} を直接用いることで,フォントのIVS情報を取得している.
-20140114.0以降でキャッシュを用いるようにした要因はここにあり,
-\texttt{fontloader} の呼び出しでかなり時間を消費することから,
-%%% to_table を使わなくしたことで,メモリ使用量は減った
-IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
-%</ja>
-
-
-%<*ja>
\section{複数フォントの「合成」(未完)}
\section{\LuaTeX-jaにおけるキャッシュ}
\Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を
\item 「通常の」テキスト形式のキャッシュ(拡張子は \texttt{.lua})以外にも,
それをバイナリ形式(バイトコード)に変換したものもサポートしている.
\begin{itemize}
- \item \LuaTeX とLuaJIT\TeX ではバイトコードの形式が異なるため,バイナリ形式の
-キャッシュは共有できない.\LuaTeX 用のバイナリキャッシュは \texttt{.luc},
-LuaJIT\TeX 用のは \texttt{.lub} と拡張子を変えることで対応している.
\item キャッシュを読み込む時,同名のバイナリキャッシュがあれば,
テキスト形式のものよりそちらを優先して読み込む.
\item テキスト形式のキャッシュが更新/作成される際は,そのバイナリ版も
\item In addition to caches of the text form (the extension is ``\texttt{.lua}''),
caches of the \emph{binary}, precompiled form are supported.
\begin{itemize}
- \item We cannot share same binary cache for \LuaTeX\ and LuaJIT\TeX.
-Hence we distinguish them by their extension, ``\texttt{.luc}'' for \LuaTeX\
-and ``\texttt{.lub}'' for LuaJIT\TeX.
\item In loading a cache, the binary cache precedes
the text form.
\item When \LuaTeX-ja updates a cache \texttt{hoge.lua},
\item[ltj-cid-auto-adobe-japan1.lua]
Ryumin-Lightのような非埋め込みフォントの情報を格納しており,
(それらが\LuaTeX-jaの標準和文フォントなので)\LuaTeX-jaの読み込み時に自動で読まれる.
-生成には\texttt{UniJIS2004-UTF32-\{H, V\}}, \texttt{Adobe-Japan1-UCS2}という3つの
+生成には\texttt{UniJIS2004-UTF32-\{H,V\}}, \texttt{Adobe-Japan1-UCS2}という3つの
CMapが必要である.
\pageref{para-cid}ページで述べたように,\texttt{cid}キーを使って
非埋め込みの中国語・韓国語フォントを定義する場合,同様のキャッシュが生成される.
キャッシュの名称,必要となるCMapについては\autoref{tab:cid-cache}を参照して欲しい.
-
-\item[extra\_***.lua]
-フォント``\texttt{***}''における異体字セレクタの情報,縦組用字形への変換テーブル,そして
-縦組時における幅を格納している.構造は以下の通り:
%</ja>
%<*en>
\subsection{Use of cache}
if you specified \texttt{cid} key in \cs{jfont}
to use other CID-keyed non-embedded fonts for Chinese or Korean,
as in Page~\pageref{para-cid}.
-
-\item[extra\_***.lua]
-This file stores the table which stores the following.
-\begin{itemize}
- \item unicode variants in a font ``\texttt{***}''
- \item vertical width of glyphs, if it is not equal to the sum of
-the height of ascender and the depth of descender
- \item vertical variants
-\end{itemize}
-The following is the structure of the that table.
%</en>
\begin{table}[!tb]
\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\\
\bottomrule
\end{tabular}
\end{table}
-\begin{lstlisting}
-return {
- {
- [10955]={ -- U+2ACB "Subset Of Above Not Equal To"
- [65024]=983879, -- <2ACB FE00>
- ["vwidth"]=0.98, -- vertical width
- },
- [37001]={ -- U+9089 "邉"
- [0]=37001, -- <9089 E0100>
- 991049, -- <9089 E0101>
- ...
- ["vform"]=995025, -- vertical variant
- },
- ...
- ["unicodes"]={
- ["aj102.pe.vert"]=984163, -- glyph name to unicode
- ...
- }
- },
- ["chksum"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", -- checksum of the fontfile
- ["version"]=11, -- version of the cache
-}
-\end{lstlisting}
%<*ja>
-\item[ltj-jisx0208.\{luc|lub\}]
-\LuaTeX-jaé\85\8då¸\83ä¸ã\81®\texttt{ltj-jisx0208.lua}ã\82\92ã\83\90ã\82¤ã\83\8aã\83ª化したものである.
+\item[ltj-jisx0208.luc]
+\LuaTeX-jaé\85\8då¸\83ä¸ã\81®\texttt{ltj-jisx0208.lua}ã\82\92ã\83\90ã\82¤ã\83\88ã\82³ã\83¼ã\83\89化したものである.
これはJIS~X~0208とUnicodeとの変換テーブルであり,
\pTeX との互換目的の文字コード変換命令で用いられる.
%</ja>
%<*en>
\item[ltj-jisx0208.\{luc|lub\}]
-The binary version of \texttt{ltj-jisx0208.lua}.
+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>
}
\]
のようになる.
+
+\subsection{縦組用字形の取得}
+縦組時には,「\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})%"
+ }
+ \caption{\LuaTeX-ja標準で行われる縦組形への置換}
+ \label{tab:vert_replace}\small\centering
+ \begin{tabular}{*{3}{l@{}>{${}\longmapsto{}$}c@{}l}}
+ \toprule
+ \D 3001&&\D FE11&\D 3002&&\D FE12&\D 3016&&\D FE17\\
+ \D 3017&&\D FE18&\D 2026&&\D FE19&\D 2025&&\D FE30\\
+ \D 2014&&\D FE31&\D 2013&&\D FE32&\D FF3F&&\D FE33\\
+ \D FF08&&\D FE35&\D FF09&&\D FE36&\D FF5B&&\D FE37\\
+ \D FF5D&&\D FE38&\D 3014&&\D FE39&\D 3015&&\D FE3A\\
+ \D 3010&&\D FE3B&\D 3011&&\D FE3C&\D 300A&&\D FE3D\\
+ \D 300B&&\D FE3E&\D 3008&&\D FE3F&\D 3009&&\D FE40\\
+ \D 300C&&\D FE41&\D 300D&&\D FE42&\D 300E&&\D FE43\\
+ \D 300F&&\D FE44&\D FF3B&&\D FE47&\D FF3D&&\D FE48\\
+ \bottomrule
+ \end{tabular}
+\end{table}
+\begin{itemize}
+ \item 各縦組用和文フォントは読み込み時に以下の属性が設定される:
+ \begin{description}
+ \item[\textit{vert\_activated}] 真となるのは,
+ 明示的に \texttt{-vert} も \texttt{-vrt2} のいずれも指定されていないちょうどその時.
+ \item[\textit{auto\_enable\_vrt2}] 真となるのは,
+ \texttt{vert}, \texttt{vrt2}のいずれについても有効・無効が指定されていないちょうどその時.
+ \end{description}
+ \textit{vert\_activated}については\texttt{luatexja.define\_jfont}コールバックで渡される引数
+ \texttt{jfont\_info}から取得可能である.
+
+ \item \textit{auto\_enable\_vrt2}が真の場合は,現在のscript tagとlanguage system identifierの値で
+ \texttt{vrt2}機能が利用可能か調べる.利用可能ならば\texttt{vrt2}を,そうでなければ
+ \texttt{vert}を有効化する.
+ \item また,各和文フォント読み込み時には,
+ 「OpenType機能による置換以前に行う縦組形への置換」を格納したテーブル\textit{vform}も作成する.
+ \begin{enumerate}
+ \item \autoref{tab:vert_replace}に示した各置換$i\longmapsto v$に対し,
+ 置換先$v$がフォント内に存在する文字コードであるならば,$i\longmapsto v$を\textit{vform}に登録する.
+ \item \ref{ssec:tfont}節にある\texttt{jpotf}が指定された場合,
+ \LuaTeX-ja内部の別のテーブル\textit{vert\_jpotf\_table}に登録されている各置換$i\longmapsto v$に対して
+ 置換先$v$がフォント内に存在する文字コードであるならば,$i\longmapsto v$を\textit{vform}に登録する.
+ \item もし\texttt{vert}も\texttt{vrt2}も現在のscript, languageでは有効にできない場合,
+ どこかのscript, languageにおける\texttt{vert}で定義されている
+ 置換$i\longmapsto v$をすべて\textit{vform}に登録する.
+ \end{enumerate}
+
+ あとで説明するように,\textit{vform}は\textit{vert\_activated}が真であるような縦組用和文フォントでしか
+ 利用されない.
+
+ \item 「現在の水平リスト」内の\textbf{JAchar}を(欧文フォントから)和文フォントへ置き換える処理において,
+ その時点での組方向が縦組であり,かつ処理対象の各ノードの縦組用フォントで
+ \textit{vert\_activated}が真である場合,\textit{vform}に従いグリフが置き換えられる.
+
+ \Pkg{luaotfload}が行う,OpenType機能に沿ったグリフ置換はこの後の処理となる.
+ \end{itemize}
%</ja>
\newpage
\bibitem{listings} C.\ Heinz, B.\ Moses. \newblock The \textsf{Listings} Package.
\bibitem{uptex} Takuji Tanaka. \newblock
upTeX---Unicode version of pTeX with CJK extensions,
-TUG 2013, October 2013.
-%<ja>\newblock
-%<en>\\\null\hfill
+TUG 2013, October 2013.\newblock
\url{http://tug.org/tug2013/slides/TUG2013_upTeX.pdf}
-\bibitem{jlisting} Thor Watanabe. \newblock Listings\ -\ MyTeXpert.
-%<en>\newblock
-%<ja>\\\null\hfill
+\bibitem{jlisting} Thor Watanabe. \newblock Listings\ -\ MyTeXpert.\newblock
\url{http://mytexpert.osdn.jp/index.php?Listings}
\bibitem{jlreq} W3C Japanese Layout Task Force~(ed). \newblock
Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \newblock
\url{http://www.w3.org/TR/jlreq/}%
%<ja> \\日本語訳の書籍版:W3C日本語組版タスクフォース(編),『W3C技術ノート 日本語組版処理の要件』,東京電機大学出版局,2012.
-\bibitem{min10} 乙部厳己.min10フォントについて.\\\null\hfill
+\bibitem{min10} 乙部厳己.「min10フォントについて」\newblock
\url{http://argent.shinshu-u.ac.jp/~otobe/tex/files/min10.pdf}
-\bibitem{x4051} 日本工業規格(Japanese Industrial Standard). JIS~X~4051,
-日本語文書の組版方法(Formatting rules for Japanese documents), 1993, 1995, 2004.
-\bibitem{ptexdoc} 濱野尚人,田村明史,倉沢良一.\TeX の出版への応用—縦組み機能の組み込み—.
-\\\null\hfill\texttt{.../texmf-dist/doc/ptex/base/ptexdoc.pdf}
+\bibitem{x4051} 日本工業規格(Japanese Industrial Standard). 「JIS~X~4051,
+日本語文書の組版方法(Formatting rules for Japanese documents)」, 1993, 1995, 2004.
+\bibitem{ptexdoc} 濱野尚人,田村明史,倉沢良一.「\TeX の出版への応用—縦組み機能の組み込み—」.
+\newblock\texttt{.../texmf-dist/doc/ptex/base/ptexdoc.pdf}
\bibitem{ptextug} Hisato Hamano. \newblock
\textit{Vertical Typesetting with \TeX}, TUGBoat~\textbf{11}(3), 346--352, 1990.
\bibitem{pdfstd} International Organization for Standardization. \newblock
ISO 32000-1:2008, \textit{Document management -- Portable document format -- Part 1: PDF
1.7}, 2008. \newblock
-\\\null\hfill
\url{http://www.iso.org/iso/iso\_catalogue/catalogue_tc/catalogue\_detail.htm?csnumber=51502}
+\bibitem{tc18ltja} 北川弘典.「\LuaTeX-jaの近況」,\TeX Conf~2018.
+ \url{https://osdn.net/projects/luatex-ja/wiki/Documentation/attach/tc18ltja.pdf}
\end{thebibliography}
\end{document}