X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=doc%2Fluatexja.dtx;h=05e5e2d8ab698ee3542154ba72d20f2eca4ab646;hb=f078ac2f7998a102c7ec765e725f2269eed9f872;hp=01a4f76d10d1cf826f05d6e67d389b853ecb972f;hpb=255b26e18562bc0cfa404b8633692f85cf7f5a47;p=luatex-ja%2Fluatexja.git diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 01a4f76..05e5e2d 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -11,7 +11,7 @@ \IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{} %\documentclass[a4paper,titlepage]{article} -%\documentclass[a4paper,titlepage]{ltjsarticle} +%\documentclass[a4paper,10ptj,titlepage]{ltjsarticle} %%%%%%%% \makeatletter @@ -49,7 +49,7 @@ \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> @@ -68,11 +68,16 @@ {\normalfont\normalsize\bfseries\raisebox{.2ex}{$\mdlgblksquare\mkern1mu$}}} % %<*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 % - +%\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}} +% %%%%%%%% listings %%%%%%%% IVS @@ -191,6 +196,15 @@ \def\cs#1{\texttt{\upshape \texorpdfstring{\textbackslash\hbox{\ltjsetparameter{autoxspacing=false}#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 %%%%%%%% @@ -202,10 +216,12 @@ width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr }}}}}\,} +\makeatletter \def\myghost{\ifmmode\else\ltjalchar"200C \fi} -\protected\def\Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name +\def\Param#1{\texorpdfstring{\@Param{#1}}{#1}} % parameter name +\protected\def\@Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} \protected\def\DParam#1{\myghost\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name (definition) -\protected\def\Pkg#1{\textsf{#1}} % packages/classes +\def\Pkg#1{\texorpdfstring{\textsf{#1}}{#1}} % packages/classes \ltjsetparameter{alxspmode={"200C,allow}} \begin{document} @@ -482,7 +498,7 @@ Japanese characters in discretionary break (\cs{discretionary}) is not supported 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. @@ -499,7 +515,7 @@ without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package. \end{lstlisting} を入れると 上記種類の文字は欧文フォントを用いて組まれるようになる. - 詳しい説明は\ref{ssec-setrange}節を参照してほしい. + 詳しい説明は\ref{ssec:setrange}節を参照してほしい. また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は バージョン20150906.0から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では @@ -524,11 +540,11 @@ In this document, the following terms and notations are used: %<*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}). % %<*ja> \item 文字は次の2種類に分けられる.この類別は固定されているものではなく,ユーザが後から変更可能である - (\ref{ssec-setrange}節を参照). + (\ref{ssec:setrange}節を参照). % \begin{itemize} %<*en> @@ -603,7 +619,7 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. %本プロジェクトはOSDNのサービスを用いて運営されている. %\paragraph{Members}\ -%\paragraph{開発メンバー}\ +%\clearpage\paragraph{開発メンバー}\ %<*en> \begin{multienumerate} @@ -624,7 +640,7 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. % \paragraph{Acknowledgments} -- 挿入するならここ -\clearpage +%\clearpage %\section{Getting Started} %\section{使い方} %\subsection{Installation} @@ -633,18 +649,18 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. %The following packages are needed for the \LuaTeX-ja\ package. %\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である. \begin{itemize} -\item \LuaTeX\ beta-0.85.0 (or later) +\item \LuaTeX\ 1.0.0 (or later) \item \Pkg{luaotfload} v2.6 (or later) \item \Pkg{adobemapping} (Adobe cmap and pdfmapping files) \item \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 \Pkg{fontspec} v2.5c (or later) %\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/}) %\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})} \end{itemize} -%In summary, \LuaTeX-ja version 20160404.0 (or~later) no longer supports \TeX~Live~2015. +%In summary, \LuaTeX-ja version 20180825.0 (or~later) no longer supports \TeX~Live~2016. %<*ja> -要約すると,バージョン20160404.0以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{% +要約すると,バージョン20180825.0以降の\LuaTeX-jaは\TeX~Live~2016以前では動作しない\footnote{% もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である. }. % @@ -672,21 +688,6 @@ IPAex fonts are also available in these distributions. W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある. % -% %<*ja> -% 例えば\TeX~Live~2015を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を -% 使ってインストールすることができる. -% \begin{lstlisting} -% $ tlmgr install luatexja -% \end{lstlisting} -% % -% %<*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} -% % - %\paragraph{Manual installation} %\paragraph{手動インストール方法} @@ -815,8 +816,9 @@ For changes from \pTeX, see Subsection~\ref{ssec:chgptex}. 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. + LuaJIT has several limitations such as 1\,GB~(or~2\,GB) memory limitation. + So typesetting a large source by LuaJIT\TeX may cause an ``out of memory'' error, + or failure of loading/saving font cache of \Pkg{luaotfload}. }. % %<*ja> @@ -825,11 +827,13 @@ For changes from \pTeX, see Subsection~\ref{ssec:chgptex}. LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが, IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある \footnote{% - LuaJITは1\,GB(あるいは2\,GB)のメモリ制限があることが知られている.そのため, + LuaJITは1\,GB(あるいは2\,GB)のメモリ制限など,いくつかの制限事項があることが知られている.そのため, 大きいソースファイルをLuaJIT\TeX でタイプセットするとLuaの側で``out of memory''エラーが発生してしまう. 本ドキュメントのように,「各ページごとにLuaで使っているメモリ容量をチェックし, 必要なら\texttt{collectgarbage("collect")}でガベージコレクタを実行」すると 状況が多少改善されるかもしれない. + また,LuaJIT\TeX でIPA mj明朝などの「大きい」フォントを利用した場合はフォントキャッシュの保存に失敗し, + 毎回フォントを読み込まなければならず結果的に時間がかかることがある. }. % @@ -874,7 +878,7 @@ and finally delete the temporary directory. %\subsection{Using in plain \TeX} %\subsection{plain \TeX で使う} -\label{ssec-plain} +\label{ssec:plain} %To use \LuaTeX-ja in plain \TeX, simply put the following at the beginning of the document: %\LuaTeX-jaを plain \TeX で使うためには,単に次の行をソースファイルの冒頭に追加すればよい: @@ -888,7 +892,7 @@ and finally delete the temporary directory. %<*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 @@ -906,28 +910,30 @@ and finally delete the temporary directory. %<*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} % \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}). % %<*ja> -\item \texttt{luatexja.cfg} を用いることによって,標準和文フォントを -IPAexフォントから別のフォントに置き換えることができる.\ref{ssec-cfg}節を参照. +\item 標準和文フォントやJFMをIPAexフォントから別のものに置き換えるには, + \cs{ltj@stdmcfont}等を\texttt{luatexja.sty}読み込み\emph{前}に定義すればよい. + \ref{ssec:cfg}節を参照. % %<*en> @@ -960,7 +966,7 @@ IPAexフォントから別のフォントに置き換えることができる. %\subsection{Using in \LaTeX} %\subsection{\LaTeX で使う} -\label{ssec-ltx} +\label{ssec:ltx} %<*en> Using in \LaTeXe\ is basically same. To set up the minimal environment @@ -975,11 +981,11 @@ for Japanese, you only have to load \texttt{luatexja.sty}: \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}). % %<*ja> これで\pLaTeX の\texttt{plfonts.dtx}と\texttt{pldefs.ltx}に相当する最低限の設定が -なされる: +なされる. % \begin{itemize} @@ -1008,7 +1014,7 @@ plfonts.dtx} and \texttt{pldefs.ltx}): \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\\ @@ -1016,14 +1022,14 @@ By default, the following fonts are used for these two families. \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}. % %<*ja> \item \pLaTeX と同様に,標準では「明朝体」「ゴシック体」の2種類を用いる: \begin{center}\small -\begin{tabular}{cllc} +\begin{tabular}{llll} \toprule \emph{字体}&&&\emph{ファミリ名}\\\midrule 明朝体&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\ @@ -1031,23 +1037,46 @@ Note that the bold series in both family are same as the medium series of gothic \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\\ +\textgt{ゴシック体}&\tt 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}の両方を扱えるようにした. % -%\item Japanese characters in math mode are typeset by the font family \texttt{mc}. -%\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}. +% +%<*ja> + \item バージョン20181102.0以降では,\texttt{disablejfam}オプションを\LuaTeX-ja読み込み時に + 指定できるようになった.このオプションは,数式モード中に直に和文文字を書けるようにするための + \LaTeX へのパッチを読み込まない. + + \texttt{disablejfam}のない状況では,以前と同様に和文文字を数式モード中に + 直に書くことができる(但し\autoref{para:jachar_in_math}ページの記述も参照). + その際には明朝体(\texttt{mc})で出力される. +% %<*en> \item \cs{jttdefault}% \footnote{% @@ -1086,6 +1115,15 @@ Note that the bold series in both family are same as the medium series of gothic \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に設定している. +% \end{itemize} @@ -1093,7 +1131,7 @@ Note that the bold series in both family are same as the medium series of gothic 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}, @@ -1103,10 +1141,12 @@ Okumura), namely, \Pkg{ltjclasses}\footnote{% \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}. % %<*ja> しかしながら,上記の設定は日本語の文書にとって十分とは言えない. @@ -1120,13 +1160,17 @@ to set the main document font size. }, \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> @@ -1204,17 +1248,17 @@ This patch \Pkg{lltjp-geometry} also can be used in \pLaTeX; for the detail, ple %\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}. % %<*ja> plain \TeX で和文フォントを変更するためには, \pTeX のように \cs{jfont} 命令や \cs{tfont} 命令を直接用いる. -\ref{ssec-jfont}節を参照. +\ref{ssec:jfont}節を参照. % \paragraph{\LaTeXe\ (NFSS2)} @@ -1236,7 +1280,7 @@ For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ ( %<*en> \begin{center}\small -\begin{tabular}{cccccc} +\begin{tabular}{llllll} \toprule &\textbf{encoding}&\textbf{family}&\textbf{series}&\textbf{shape}&\textbf{selection}\\\midrule alphabetic fonts @@ -1253,17 +1297,17 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ % %<*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} @@ -1277,7 +1321,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ 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}. % %<*ja> ここで,\verb+\fontencoding{+\verb+}+ は,引数により和文側か欧文 @@ -1286,7 +1330,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を \texttt{T1}へと変更する.\cs{fontfamily} も引数により和文側,欧文 側,\emph{あるいは両方}のフォントファミリを変更する.詳細は - \ref{ssec-nfsspat}節を参照すること. + \ref{ssec:nfsspat}節を参照すること. % %<*en> @@ -1310,19 +1354,23 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \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}節)を参照せよ. % \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: % %<*ja> -\paragraph{注意:数式モード中の和文文字} +\paragraph{数式モード中の和文文字} +\label{para:jachar_in_math} + \pTeX では,特に何もしないでも数式中に和文文字を記述することができた.そのため, 以下のようなソースが見られた: % @@ -1361,23 +1409,37 @@ In this point of view, $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). +} % %<*ja> -また\LuaTeX-jaプロジェクトでは,和文文字が識別子として用いられることはほとんどない +なお\LuaTeX-jaプロジェクトでは,和文文字が識別子として用いられることはほとんどない と考えており,したがってこの節では数式モード中の和文フォントを変更する方法については -記述しない.この方法については\ref{ssec-math}節を参照のこと. +記述しない.この方法については\ref{ssec:math}節を参照のこと. + +{\gtfamily\bfseries + 既に記述した通り,\texttt{disablejfam}オプションを指定して\LuaTeX-jaを読み込んだ場合は, + \verb+$素$+ のように直接和文文字を数式モード中に記述することはできなくなる. + \cs{mbox},あるいは\Pkg{amsmath}パッケージの提供する\cs{text}命令などを使うことになる. +} % + + %\subsection{\Pkg{luatexja-fontspec} package} %\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: @@ -1404,16 +1466,21 @@ TrueType・OpenTypeフォントを容易に扱うためのパッケージであ % %<*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}): % %<*ja> -\Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec} -パッケージの元のコマンドに対応するものとして定義している: +\Pkg{luatexja-fontspec}パッケージでは,\autoref{tab:ltj_fntspc}の +「和文」行に示した命令を\Pkg{fontspec}パッケージの元のコマンド(「欧文」行) +に対応するものとして定義している: % %<*en> -\begin{center}\small -\begin{tabular}{ccccc} +\begin{table} +\caption{Commands of \Pkg{luatexja-fontspec}}\label{tab:ltj_fntspc} +\medskip +{\centering\small +\begin{tabular}{cllll} \toprule Japanese fonts &\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\ @@ -1421,33 +1488,62 @@ alphabetic fonts &\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\ \midrule Japanese fonts -&\cs{newjfontfamily}&\cs{newjfontface} -&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ +&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\ alphabetic fonts -&\cs{newfontfamily}&\cs{newfontface} -&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ +&\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} % %<*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} % % The package option of \Pkg{luatexja-fontspec} are the followings: @@ -1478,13 +1574,23 @@ if and only if this \texttt{\textup{match}} option is specified}. \item[scale=] %<*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}. % %<*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} % \end{cslist} @@ -1550,7 +1656,7 @@ The following presets are defined: \hyphenchar\font=-1 \exhyphenchar=-1 hiragino-pro, hiragino-pron, ipa, ipa-hg, ipaex, ipaex-hg, kozuka-pr6, kozuka-pr6n, kozuka-pro, moga-mobo, moga-mobo-ex, - morisawa-pr6n, morisawa-pro, ms, ms-hg, noembed, noto-otc, noto-otf, + 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} @@ -1604,64 +1710,10 @@ as an external package \Pkg{luatexja-otf}. これら3オプションについては, \Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか, -あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や -\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある. -% - -%\subsection{Changing default Japanese fonts} -%\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} -% -%<*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} -と記述すればよい. +あるいは対応する内容を\ref{ssec:chgfnt}節,\ref{ssec:nfsspat}節 (NFSS2) や +\ref{ssec:fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある. % - %\section{Changing Internal Parameters} %\section{パラメータの変更} @@ -1681,7 +1733,7 @@ parameters, you have to use commands \cs{ltjsetparameter} and %\subsection{Range of \textbf{JAchar}s} %\subsection{\textbf{JAchar}の範囲} -\label{ssec-setrange} +\label{ssec:setrange} %<*en> \LuaTeX-ja divides the Unicode codespace \texttt{U+0080}--\texttt{U+10FFFF} @@ -1766,8 +1818,8 @@ determined from the following data: これらは以下のデータに基づいて決定している. % \begin{itemize} -%\item Blocks in Unicode~6.0. -%\item Unicode~6.0のブロック. +%\item Blocks in Unicode~12.0.0. +%\item Unicode~11.0のブロック. %\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode. %\item Adobe-Japan1-6のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}. %\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato. @@ -1867,7 +1919,7 @@ This range consists of the following Unicode ranges, \emph{except characters in %\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\\ @@ -1885,8 +1937,8 @@ This range consists of the following Unicode ranges, \emph{except characters in "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> @@ -1904,8 +1956,10 @@ This range consists of the following Unicode ranges, \emph{except characters in \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 +} % non-Japanese \end{lstlisting} %\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas. %\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域. @@ -1916,7 +1970,7 @@ This range consists of the following Unicode ranges, \emph{except characters in %\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\\ @@ -1927,14 +1981,20 @@ This range consists of the following Unicode ranges, \emph{except characters in "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> @@ -1962,7 +2022,7 @@ The block list is indicated in \autoref{tab:rng7}. "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} @@ -2147,10 +2207,10 @@ as follows: \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}). % %<*ja> -また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param}節を参照). +また,これら2パラメータには数値で値を指定することもできる(\ref{ssec:param}節を参照). % %<*en> @@ -2350,8 +2410,7 @@ However, the penalty inserted after it is 10 which is the \Param{postbreakpenalt ``ア'', not 20. % %<*ja> -\newpage -\subsection{禁則処理関連パラメータとOpenTypeのfont feature} +\subsection{禁則処理関連パラメータとOpenType機能} 禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち \begin{quote} \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty}, @@ -2359,9 +2418,9 @@ However, the penalty inserted after it is 10 which is the \Param{postbreakpenalt \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である. % @@ -2408,7 +2467,7 @@ For the detail, see \autoref{tab:kcat}. %\medskip \noindent\hfill -\begin{tabular}{ccccc} +\begin{tabular}{llccc} \toprule \bfseries \cs{kcatcode}& %<*en> @@ -2468,7 +2527,7 @@ and \LuaTeX-ja can control these four kinds separately: \begin{itemize} \item \emph{Distinction between \textbf{JAchar} or \textbf{ALchar}} -is controlled by the character range, see Subsection~\ref{ssec-setrange}. +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. @@ -2485,7 +2544,7 @@ is controlled by the lowermost bit of the \Param{kcatcode} parameter. 分割している: \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}が挿入可か] @@ -2528,23 +2587,23 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} % %<*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} 言い換えると, @@ -2555,10 +2614,10 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} \LuaLaTeX では漢字や仮名を制御綴内に 使用することが可能になったが,全角英数字は相変わらず使用できない, \end{description} -これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり, +これでは\pTeX で使用できた\verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり, \LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは -\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし, -結果として\textbf{\XeTeX における初期設定と同じになるようにしている.} +\texttt{unicode-letters.tex}の後半部にあたる内容を自前でパッチし, +結果として\emph{\XeTeX における初期設定と同じになるようにしている.} % \begin{table} @@ -2572,8 +2631,8 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} {\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})} %" \leavevmode\hbox to 0pt{\hss\begin{tabular}{cccccc} \toprule -%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ -%&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ +%&\textbf{row}&\textbf{col.}&\textbf{\pTeX}&\textbf{\upTeX}&\textbf{\LuaTeX-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\\ @@ -2599,8 +2658,8 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} \end{tabular}\qquad \begin{tabular}{cccccc} \toprule -%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ -%&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ +%&\textbf{row}&\textbf{col.}&\textbf{\pTeX}&\textbf{\upTeX}&\textbf{\LuaTeX-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\\ @@ -2752,7 +2811,9 @@ We implemented this for debugging purpose. The fifth column (\emph{utod} direction) corresponds the ``\texttt{tate (math) direction}'' of \pTeX. Directions can be changed by \cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod}, -only when the current list is null. Also, the direction of a math formula is changed to +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). % @@ -2766,7 +2827,13 @@ Down-TO-Upの意味なのだろう.\cs{dtou} を使用する機会はないだ 組方向は,\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} をそれぞれ使用することで, 現在作成中のリストやボックスが空の時にのみ変更可能である. +ただし,現在のモードが非制限水平モードや(文中,別行立て問わず)数式モードであるときには +組方向を変更することは出来ない. また,縦組中の数式内のボックスは\pTeX と同じように組方向が \cs{utod} となる. + +なお,\LaTeX の下で\LuaTeX-jaを使用する場合,組方向変更命令には +「新たな組方向下での和文フォントを必要なら読み込み(・選択する)」という +処理が付け加えられている(\ref{ssec:ltx-jfm}節参照). % %<*en> @@ -3240,7 +3307,7 @@ overridden by \LuaTeX-ja, using~\verb+\protected\def+. %\section{フォントメトリックと和文フォント} %\subsection{\cs{jfont}} %\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 @@ -3477,7 +3544,7 @@ because of the compatibility with previous versions of \LuaTeX-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} @@ -3494,7 +3561,7 @@ NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における %<*ja> \paragraph{\texttt{extend}と\texttt{slant}} -OpenType font featureと見かけ上同じような形式で指定できるものに, +OpenType機能と見かけ上同じような形式で指定できるものに, \begin{description} \item[\texttt{extend=}] 横方向に倍拡大する. \item[\texttt{slant=}] に指定された割合だけ傾ける. @@ -3553,11 +3620,33 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ 3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は, 最後に指定したものが有効となる. % +%<*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} +% + + %\subsection{\cs{tfont}} %\subsection{\cs{tfont} 命令} - +\label{ssec:tfont} \begin{comment} {\catcode`\<=12\catcode`\>=12 @@ -3610,14 +3699,27 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ 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=}. \LuaTeX-ja ships following vertical JFMs: \begin{description} @@ -3627,6 +3729,23 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont \item[\tt jfm-tmin.lua] A counterpart for \verb+tmin10.tfm+, which is one of the default Japanese font metric shipped with \pTeX. \end{description} +\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} % %<*ja> @@ -3635,15 +3754,33 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont \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=}\ の部分には縦組用JFMを指定する. 以下の縦組用JFMが\LuaTeX-jaには同梱されている.%おり,違いを\autoref{tab-difjfm-tate}に示した. \begin{description} @@ -3654,15 +3791,123 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont である \verb+tmin10.tfm+ に相当し,\texttt{min10.tfm} と同様に 「っ」など一部の文字幅が狭められている. \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 \texttt{vert}, \texttt{vrt2}の少なくとも片方が(明示的・自動的を問わず) + 有効になっていた場合,さらに\texttt{jpotf}を指定することで + 「通常では行わない縦組用字形への変換」を行うことができる. + + 標準では,この「変換」は全角のコンマ・ピリオドを句読点に, + また全角の二重引用符をダブルミニュートへ置き換える + \footnote{% + \texttt{jpotf}という名前にしたのは, + OTFパッケージの縦組用和文TFMでほぼ同じの処理(そちらではさらに一重引用符を + 「シングルミニュート」に置換する機能もあった)を行っていたことに由来する. + }.\autoref{fig:jpotf}を参照. + + ユーザ側で「変換」をカスタマイズしたい場合, + \verb+luatexja.jfont.register_vert_replace+ 関数に変更内容を記したテーブルを渡す. + 例えば縦組中では「あ」を「い」に置換し,また「,」は(「、」に置換せず)「,」のままに + したい場合は次のようにすれば良い. +\begin{lstlisting} +\directlua{luatexja.jfont.register_vert_replace{ + ['あ']='い', [',']=false, +}} +\end{lstlisting} + \verb+luatexja.jfont.register_vert_replace+ による変更はこの関数の\emph{実行後}に定義される + フォントについてのみ有効である. + \end{itemize} なお,\pTeX では,\cs{font},~\cs{jfont},~\cs{tfont}のどれでも欧文フォント・横組用和文フォン ト・縦組用和文フォントの定義が可能であったが,\LuaTeX-jaではそうでないので注意. % +%\subsection{Default Japanese fonts and JFMs} +%\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: +% +%<*ja> +\LuaTeX-jaが読み込まれる前に以下の命令が定義されていた場合は, +それらが標準和文フォントやそれらに用いるJFMとして使われる. +% + +\begin{cslist}[style=standard] + \item[\cs{ltj@stdmcfont}] +%The default Japanese font for the mincho family. +%明朝体として用いるフォント. + \item[\cs{ltj@stdgtfont}] +%The default Japanese font for the gothic family. +%ゴシック体として用いるフォント. + \item[\cs{ltj@stdyokojfm}] +%The default JFM for horizontal direction. +%標準で用いる横組用JFM. + \item[\cs{ltj@stdyokojfm}] +%The default JFM for vertical direction. +%標準で用いる縦組用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. +% +%<*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}などで +使用フォントを選択することを推奨する. +% + +%<*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. +% +%<*ja> +旧バージョンとの互換性のため, +\LuaTeX から見える位置に\texttt{luatexja.cfg}があれば,\LuaTeX-jaはそれを読み込む. +しかし,\texttt{luatexja.cfg}内で\cs{ltj@stdmcfont}等が定義されていた場合はそちらが +優先されるので,もはや\texttt{luatexja.cfg}は使わないほうが良いだろう. +% + %\subsection{Prefix \texttt{psft}} %\subsection{\texttt{psft}プリフィックス} -\label{ssec-psft} +\label{ssec:psft} %<*en> Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which are introduced in the \Pkg{luaotfload} package, @@ -3690,7 +3935,7 @@ Identity-Hとなり,PDFの標準規格ISO32000-1:2008~(\cite{pdfstd})に非準 ので注意してほしい. \emph{\texttt{psft} プリフィックスの下では -\texttt{+jp90} などのOpenType font featureの効力はない. +\texttt{+jp90} などのOpenType機能の効力はない. 非埋込フォントをPDFに使用すると,実際にどのようなフォントが 表示に用いられるか予測できないからである.}\ \texttt{extend} と \texttt{slant} 指定は単なる変形のため @@ -3703,24 +3948,25 @@ Identity-Hとなり,PDFの標準規格ISO32000-1:2008~(\cite{pdfstd})に非準 %<*en> The default font defined by using \texttt{psft:} prefix is for Japanese typesetting; -it is Adobe-Japan1-6 CID-keyed font. +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. % %<*ja> 標準で\texttt{psft:}プリフィックスで定義されるフォントは日本語用のもので -あり,Adobe-Japan1-6のCIDに対応したものとなる.しかし,\LuaTeX-jaは中国語 +あり,Adobe-Japan1-7のCIDに対応したものとなる.しかし,\LuaTeX-jaは中国語 の組版にも威力を発揮することが分かり,日本語フォントでない非埋込フォント の対応も必要となった.そのために追加されたのが\texttt{cid}キーである. \texttt{cid}キーに値を指定すると,そのCIDを持った非埋込フォントを定義することができる: % \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, @@ -3732,11 +3978,11 @@ as JFM for Chinese and Korean fonts. % %<*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., % %<*ja> -今のところ,\LuaTeX-jaは上のサンプルコード中に書いた4つの値しかサポートしていない. +今のところ,\LuaTeX-jaは上のサンプルコード中に書いた5つの値しかサポートしていない. % \begin{lstlisting} \jfont\test={psft:Ryumin-Light:cid=Adobe-Japan2;jfm=jis} @@ -3765,7 +4011,7 @@ Please contact the LuaTeX-ja project team. %\subsection{Structure of a JFM file} %\subsection{JFMファイルの構造} -\label{ssec-jfm-str} +\label{ssec:jfm-str} %A JFM file is a Lua script which has only one function call: %JFMファイルはただ一つの関数呼び出しを含むLuaスクリプトである: \begin{lstlisting} @@ -4223,7 +4469,7 @@ we specify to $0.25/(0.5+0.25)=1/3$. \begin{cslist}[style=standard] \item[priority=] \Pkg{luatexja-adjust}による優先順位付き - 行長調整(\ref{ssec-adj}節)において,このグルーの優先度を指定する.許される値は以下の通り: + 行長調整(\ref{ssec:adj}節)において,このグルーの優先度を指定する.許される値は以下の通り: \begin{description} \item[バージョン1] $-4$から$+3$の間の整数 \item[バージョン2以降] $-4$から$+3$の間の整数の2つ組\texttt{\{, \}}か, @@ -4251,6 +4497,9 @@ JFMによって本来挿入されるグルーの他に 自然長・縮み量半角,伸び量0のグルー となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け た分だけ伸びることが許される. + \item 一方,開き括弧類と通常の文字の間,また通常の文字と閉じ括弧類の間は + 自然長・縮み量・伸び量0のグルーだが,\Param{kanjiskip}の縮み量に + \texttt{kanjiskip\_shrink}(ここでは1)を掛けた分だけ縮むことが許される. \end{itemize} となっている.従って,以下のような組版結果を得る. @@ -4259,6 +4508,10 @@ JFMによって本来挿入されるグルーの他に \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} @@ -4272,7 +4525,7 @@ An integer in $[-4,3]$ (treated as 0 if omitted), or a pair of these integers \texttt{\{, \}} (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=\textrm{, }% kanjiskip\_stretch=\textrm{, }kanjiskip\_shrink=]\leavevmode @@ -4293,6 +4546,10 @@ a glue whose natural part and shrink part are both half-width, while its stretch 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: @@ -4301,11 +4558,15 @@ 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} % - + \item[end\_stretch=, end\_shrink=] %<*ja> (任意,バージョン1のみ) @@ -4320,24 +4581,24 @@ Hence we have the following result: \item[end\_adjust=\{, , ...\}] %<*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$かいずれかのカーンが常に行末に追加される. % %<*en> -(optional, version~2 only) +(optional, version~2 or~later) % \end{cslist} @@ -4389,7 +4650,7 @@ applying font features by \Pkg{luaotfload}}. \item JFMによれば,この「ヒ」のグリフの文字クラスは2000である. \item 以上により文字クラス2000とみなされるため,結果として「ヒ」の幅は半角だと認識される. \end{enumerate} -この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の結果に基づく}ことを +この例は,\emph{文字クラスの決定はOpenType機能の適用によるグリフ置換の結果に基づく}ことを 示している. % @@ -4420,7 +4681,7 @@ as follows: %<*ja> ここで,句点「。」(\texttt{U+3002})の文字クラスは,以下のようにして決まる. \begin{enumerate} -\item \Pkg{luaotfload} によって縦組用句点のグリフに置き換わる. +\item \Pkg{luaotfload}によって縦組用句点のグリフに置き換わる. \item 置換後のグリフは \texttt{U+FE12} であり,JFMに従えば文字クラスは\emph{0}と判定される. \item この場合,置換前の横組用句点のグリフによって文字クラスを判定する. \item 結果として,上の出力例中の句点の文字クラスは2000となる. @@ -4482,7 +4743,7 @@ The following is the list of imaginary characters: \item['glue'] %(version 3~or~later) A boundary between \textbf{JAchar}, and, a glue or kern. -%(バージョン3以降))\textbf{JAchar}とglue,kernとの境界. +%(バージョン3以降)\textbf{JAchar}とglue,kernとの境界. \item[$-1$] %The left/right boundary of an inline math formula. @@ -4550,7 +4811,7 @@ JFM側で一部の対処ができることにより,\Pkg{jsclasses}のよう %\subsection{Math font family} %\subsection{数式フォントファミリ} -\label{ssec-math} +\label{ssec:math} %<*en> \TeX\ handles fonts in math formulas by 16~font families\footnote{Omega, @@ -4746,10 +5007,10 @@ $i$,~$j\in \omega$に対して,\texttt{char\_type[$i$][$j$]} は \begin{itemize} \item 間に入るものがカーンであれば,この値は\ \texttt{[$j$]=\{[1]=, ratio=\}} であり, -はカーンを表すノードそのものである\footnote{% -バージョン20150420.0以降ではノードのアクセス手法にdirect access - modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし - か見えないことに注意. +はカーンを表すノードである\footnote{% + バージョン20150420.0以降ではノードのアクセス手法にdirect access + modelを用いているため,ノードそのものを表すユーザーデータではなく, + 内部で参照のために使われる添字(整数)である. }. \item グルーであれば,この値は以下のキーを持つテーブルである. \begin{description} @@ -4765,7 +5026,9 @@ $i$,~$j\in \omega$に対して,\texttt{char\_type[$i$][$j$]} は \end{description} \end{itemize} \item[ascent\textrm{, }descent] -…… + 縦組時に個々のグリフを90度回転させる場合,そのグリフは(実際の高さ・深さにかかわらず) + 便宜的に高さ\texttt{ascent},深さ\texttt{descent}を持つものだと想定して回転させる. + この仕様は\Pkg{luaotfload}がOpenTypeフォントのVORGテーブルを読まないための暫定的なものである. \item[chars\_cbcache] 文字クラス決定の処理で.キャッシュとして使われる. \end{cslist} @@ -4890,12 +5153,10 @@ Then, the position of glyphs is shifted up by \] \end{description} - - %\section{Parameters} %\section{パラメータ} \subsection{\cs{ltjsetparameter}} -\label{ssec-param} +\label{ssec:param} %<*en> As described before, \cs{ltjsetparameter} and \cs{ltjgetparameter} are @@ -5125,7 +5386,7 @@ The default glue which inserted between two \textbf{JAchar}s. Changing current Japanese font does not alter this parameter, as \pTeX. If the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses -the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}). +the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec:jfm-str}). % \item[\DParam{xkanjiskip}\,=$^\ast$] [\cs{xkanjiskip}]\ @@ -5141,7 +5402,7 @@ The default glue which inserted between a \textbf{JAchar} and an 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}). % @@ -5170,7 +5431,7 @@ The default value is \texttt{paverage}. \dots % %<*ja> デフォルト値は \texttt{paverage} である. -各々の値による差異の詳細は\ref{ssec-cluster-wa}節の「『右空白』の算出」を参照してほしい. +各々の値による差異の詳細は\ref{ssec:cluster-wa}節の「『右空白』の算出」を参照してほしい. % \item[\DParam{jacharrange}\,=] @@ -5196,7 +5457,7 @@ the behavior of this assignment is undefined. \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. @@ -5395,6 +5656,56 @@ The correct way is using a temporary register. \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. +% + %<*ja> \subsection{\cs{ltjsetparameter} の代替} 原則として各種内部パラメータの設定には \cs{ltjsetparameter} もしくは @@ -5403,7 +5714,7 @@ The correct way is using a temporary register. \LuaTeX-ja の内部ではより高速に実行できる別の形式を用いている. \emph{本節は一般利用者むけの内容ではない.} -\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} の設定} +\paragraph{\Param{kanjiskip}, \Param{xkanjiskip}の設定} \pLaTeXe 新ドキュメントクラスでは, \begin{lstlisting} \def\@setfontsize#1#2#3{% @@ -5666,7 +5977,7 @@ As an example, the example above can be improved as follows: \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: @@ -5735,7 +6046,7 @@ are typeset by \cs{piyo}. \subsection{\cs{ltjalchar} と \cs{ltjjachar}} 文字コードが$\text{}~(\geq 128=\mathtt{0x80})$の文字を \ \cs{char} プリミティブを使い \cs{char} として出力させると, -その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって +その文字の属する文字範囲(\ref{ssec:setrange}節参照)によって \textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され るかが決まる. @@ -5746,7 +6057,7 @@ are typeset by \cs{piyo}. が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること に注意. -以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである. +以下は\ref{ssec:setrange}節に載せた例に,\cs{char} の動作を追加したものである. \begin{LTXexample}[width=0.25\textwidth] \gtfamily\large % default, ALchar, JAchar ¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar @@ -5757,21 +6068,92 @@ are typeset by \cs{piyo}. %\section{Commands for \LaTeXe} %\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} +% + +%<*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} +% + %\subsection{Patch for NFSS2} %\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}. % %<*ja> \LuaTeX-jaのNFSS2への日本語パッチは \pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに, 和文エンコーディングの管理等をLuaで書きなおしたものである. -ここでは\ref{ssec-chgfnt}節で述べていなかった命令について +ここでは\ref{ssec:chgfnt}節で述べていなかった命令について 記述しておく. % @@ -5898,18 +6280,29 @@ assignment, where \cs{DeclareRelationFont} does a global assignment. \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}: % %<*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) に変わっていることがわかる. % +\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> @@ -5949,11 +6342,11 @@ character whose character class is zero, instead of `あ'. \item[\cs{fontfamily}\{\}] %<*en> As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both}) -to . See Subsection~\ref{ssec-fontfamilycmd} for detail. +to . See Subsection~\ref{ssec:fontfamilycmd} for detail. % %<*ja> 元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文, -和文,\emph{もしくは両方})をに変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること. +和文,\emph{もしくは両方})をに変更する.詳細は\ref{ssec:fontfamilycmd}節を参照すること. % @@ -5976,7 +6369,7 @@ to . See Subsection~\ref{ssec-fontfamilycmd} for detail. \item[\cs{DeclareAlternateKanjiFont}\{\}\{\}\{\}\{\}\\ \null\hfill\{\}\{\}\{\}\{\}\{\}] %<*ja> -\ref{ssec-altfont}節の\ +\ref{ssec:altfont}節の\ \cs{ltjdeclarealtfont} と同様に,前半の4引数の 和文フォント(基底フォント)のうち中の文字を 第5から第8引数の和文フォントを使って組むように指示する. @@ -5996,7 +6389,7 @@ to . See Subsection~\ref{ssec-fontfamilycmd} for detail. \end{itemize}% % %<*en> -As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}), +As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec:altfont}), characters in 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 @@ -6015,25 +6408,39 @@ current Japanese font is changed, or only after \cs{selectfont} is executed. % \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} % %<*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} で囲んでもできない. % -\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} %\subsection{Detail of \cs{fontfamily} command} %\subsection{\cs{fontfamily}コマンドの詳細} -\label{ssec-fontfamilycmd} +\label{ssec:fontfamilycmd} %<*en> In this subsection, we describe when \cs{fontfamily} changes current Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to @@ -6223,7 +6630,7 @@ for example, the meaning of \cs{TU\cs{textquotedblleft}} is \cs{ltjalchar8220\lt \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} @@ -6270,9 +6677,9 @@ by \cs{input}. \cs{input} で読み込み可能である. % \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}, @@ -6280,7 +6687,7 @@ the following ``font features'' specifications are allowed for the commands of Japanese version: % %<*ja> -\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}% +\ref{ssec:fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}% パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する. \Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには @@ -6294,7 +6701,7 @@ the commands of Japanese version: %<*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. @@ -6306,8 +6713,8 @@ will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} 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} キーを用いる際は @@ -6318,11 +6725,11 @@ will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} keys. \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}. % %<*ja> これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが -できる.\ref{ssec-psft}節を参照. +できる.\ref{ssec:psft}節を参照. % \begin{figure}[!tb] @@ -6394,16 +6801,16 @@ A demonstrarion is shown in \autoref{fig:yokotate-fontspec}. \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: % %<*ja> -\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や, -\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に, +\ref{ssec:altfont}節の \cs{ltjdeclarealtfont} や, +\ref{ssec:nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に, このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる. \texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである: % @@ -6503,7 +6910,7 @@ OpenType機能指定は \subsection{\Pkg{luatexja-otf}} -\label{ssec-ltjotf} +\label{ssec:ltjotf} %<*en> This optional package supports typesetting glyphs by specifying a CID number. @@ -6518,16 +6925,20 @@ commands: \item[\cs{CID}\{\}] %<*en> Typeset a glyph whose CID number is . -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 is a CID number of Adobe-Japan1 character collection, and tries to typeset a ``most suitable glyph''. % %<*ja> CID番号がの文字を出力する. -もし現在の和文フォントがAdobe-Japan1,~Adobe-GB1, Adobe-CNS1,~Adobe-Korea1の +もし現在の和文フォントがAdobe-Japan1,~Adobe-GB1, Adobe-CNS1, Adobe-Korea1,~Adobe-KRの いずれのCID-keyed fontでもない場合,はAdobe-Japan1のCID番号であると解釈し 「適切なグリフ」\footnote{% - 例えばフォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて + 特に縦組用グリフのCID番号を指定した場合は(LuaTeX-ja 20190504.0以降では若干改良されているが) + 意図しない結果になる可能性が高い. + なお,バージョン20190708.0以降では,CIDからグリフへの選択にグリフ名の情報を使用していない. + また,フォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて グリフを選択する. }を出力する. % @@ -6577,12 +6988,20 @@ ordinary characters in the following points: \item 常に\textbf{JAchar}として扱われる. % %<*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. +% +%<*ja> +\item 縦組時には,現在の縦組用和文フォントで \texttt{vert}/\texttt{vrt2} 機能が + 有効か無効かを問わず,\cs{UTF} で出力される文字にはこれらのOpenType機能が働いた字形になる. +% +%<*en> +\item Processing codes for supporting other OpenType features (for example, glyph replacement and kerning) by the \Pkg{luaotfload} package is not performed to these characters. % %<*ja> -\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための +\item その他のOpenType機能(例えばグリフ置換やカーニング)をサポートするための \Pkg{luaotfload}パッケージのコードはこれらの文字には働かない. % \end{itemize} @@ -6609,7 +7028,7 @@ JFMの\texttt{chars}テーブルのエントリとして \verb+'AJ1-xxx'+ の形 % \subsection{\Pkg{luatexja-adjust}} -\label{ssec-adj} +\label{ssec:adj} \begin{figure}[t] \def\sq{% \hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{% @@ -6640,11 +7059,11 @@ with priority&% \\ \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.} %\caption{行長調整}\label{fig:adj} %\caption{Line adjustment}\label{fig:adj} \end{figure} @@ -6656,12 +7075,12 @@ for making the difference obvious. %<*ja> この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい. \begin{description} -\item[行末文字の位置調整] + \item[行末文字の位置調整] \pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように 行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった. 和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず, 前の文に書いたことを実現するには -\begin{lstlisting} + \begin{lstlisting} \def\。{% \penalty10000 % 禁則ペナルティ \hbox to0pt{。\hss}\penalty0 % ぶら下げの場合 @@ -6671,48 +7090,185 @@ for making the difference obvious. \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} @@ -6723,13 +7279,13 @@ for making the difference obvious. \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}\,=\{\}] \Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を, @@ -6744,16 +7300,30 @@ stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50} \texttt{others}キーが「\textbf{JAglue}以外のグルー」を表す. 各キーの値は,JFMグルーにおける「優先度$i$」を$10i$に対応させた整数値であり, 大きい方が先に伸ばされることを意味している. + 初期値は +\begin{lstlisting} +{kanjiskip=-35,xkanjiskip=-25,others=50} +\end{lstlisting} +であり,「優先度$-4$」と指定されているJFMグルーが最も伸びにくいようになっている. \item[\DParam{shrink\_priority}\,=\{\}] 同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する. -それ以外は\Param{stretch\_priority}と指定の形式は変わらない. +それ以外は\Param{stretch\_priority}と指定の形式は変わらない(初期値も変わらない). + + \item[\DParam{linestep\_factor}\,=] + 段階的な行送り調整の際,\cs{baselineskip}の自然長の何倍単位で行送りを変えるかを指定する. + 0を指定すると無効になるのと変わらない.また負数を指定すると, + その絶対値が指定されたかのように扱われる. + 初期値は0.5(つまり半行単位)である. + + \item[\DParam{profile\_hgap\_factor}\,=] + 「中身まで見た」行送り計算の際, + 前の行にある深さが大きいものと次の行にある高さが大きいものが + 水平方向にどれだけ離れていないといけないかを + 「\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グルーが最も伸び(縮み)にくいようになっている. % \subsection{\Pkg{luatexja-ruby}} @@ -7144,9 +7714,14 @@ In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fon % %<*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}パッケージは 自動では読み込まれない,しかし, @@ -7156,9 +7731,10 @@ In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fon \end{lstlisting} のようにすれば,このオプションを指定すれば 欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる. -一方, -パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて - いる場合は \texttt{nfssonly} オプションは無視される. + +一方,\Pkg{luatexja-preset}パッケージ読み込み時に +既に\Pkg{luatexja-fontspec}パッケージが読み込まれている場合は +\texttt{nfssonly}オプションは無視される. % \item[match] @@ -7239,7 +7815,7 @@ characters designed for ruby. %<*ja> 横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{% \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では - font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え). + OpenType機能の有効化であり,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替える). }. % \item[bold] @@ -7254,12 +7830,12 @@ since we use same font for both series of gothic. いため, 「ゴシック体の中字」も同時に変更されることになる. % -\item[90jis] -%Use 90JIS glyph variants if possible. -%出来る限り90JISの字形を使う. -\item[jis2004] -%Use JIS2004 glyph variants if possible. -%出来る限りJIS2004の字形を使う. +\item[jis90\textrm{,~}90jis] +%Use JIS~X~0208:1990 glyph variants if possible. +%出来る限りJIS~X~0208:1990の字形を使う. +\item[jis2004\textrm{,~}2004jis] +%Use JIS~X~0213:2004 glyph variants if possible. +%出来る限りJIS~X~0213:2004の字形を使う. \item[jfm\_yoko=] %<*en> Use the JFM \texttt{jfm-.lua} for horizontal direction, instead of \texttt{jfm-ujis.lua}~(default JFM). @@ -7283,14 +7859,14 @@ Use the JFM \texttt{jfm-.lua} for vertical direction, instead of \texttt{jf \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. % %<*ja> -\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された +\texttt{jis90},~\texttt{90jis}, \texttt{jis2004},~\texttt{2004jis}については本パッケージで定義された 明朝体・ゴシック体(・丸ゴシック体)にのみ有効である. -両オプションが同時に指定された場合の動作については全く考慮していない. +これら4オプションのうち複数が同時に指定された場合の動作については全く考慮していない. % %\subsubsection{Presets which support multi weights} @@ -7298,13 +7874,13 @@ We didn't taken account of when both \texttt{90jis} and \texttt{jis2004} are sp \label{sssec:ltjpreset-multi} %<*en> -Besides \texttt{morisawa-pro}~and~\texttt{morisawa-pr6n} presets, +Besides \texttt{bizud}, \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}. % %<*ja> -\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は +\texttt{bizud}, \texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は (ファイル名でなく)フォント名で行われる. 以下の表において,*\,つきのフォント(e.g.,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に} ゴシック体中字として用いられるものを示している. @@ -7351,7 +7927,6 @@ There is not rounded gothic family in Kozuka fonts. \end{tabular} \end{center} -%\newpage \item[hiragino-pro] Hiragino Pro (Adobe-Japan1-5) fonts. % \\*[-\dimexpr\medskipamount+\baselineskip\relax] \item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts. @@ -7398,6 +7973,34 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \end{tabular} \end{center} +%\newpage +\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 +%\textit{mincho} +%\textgt{明朝}% + &&BIZ-UDMinchoM.ttc\\ +\midrule + &medium&BIZ-UDGothicR.ttc\\ +\cmidrule(l){2-3} +%\textit{gothic}% +%\gt ゴシック + &bold&BIZ-UDGothicB.ttc\\ + &extra bold&BIZ-UDGothicB.ttc\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&BIZ-UDGothicB.ttc\\ +\bottomrule +\end{tabular} +\end{center} + +%\newpage + \item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts. % \\*[-\dimexpr\medskipamount+\baselineskip\relax] \item[morisawa-pr6n] Morisawa Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts. @@ -7516,6 +8119,7 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \end{tabular} \end{center} +%\newpage \item[sourcehan] Source Han Serif and Source Han Sans fonts (Language-specific OTF \textit{or} OTC) % \\*[-\dimexpr\medskipamount+\baselineskip\relax] \item[sourcehan-jp] Source Han Serif JP and Source Han Sans JP fonts (Region-specific Subset OTF) @@ -7663,17 +8267,17 @@ Note that HG~Mincho~E, HG~Gothic~E, HG Soei Kaku Gothic UB, and HG Maru Gothic P 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} % %<*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} として指定を行っているので注意すること. @@ -7683,11 +8287,11 @@ are internally specified by: %\subsubsection{新たなプリセットの定義} %<*ja> -バージョン********.0以降では,自分で新たなプリセットを定義することが出来るようになった. +バージョン20170904.0以降では,自分で新たなプリセットを定義することが出来るようになった. 以下に説明する2命令はプリアンブルでしか実行できない. % %<*en> -From version~********.0, one can define new presets using \cs{ltjnewpreset}, +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. % \begin{cslist} @@ -7893,18 +8497,23 @@ Current number of Japanese font family for math formulas. \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. % %<*ja> -現在の横組用和文フォントのフォント番号. +基本的には現在の横組用和文フォントのフォント番号を格納しているが, +\LaTeX 下で使用する場合は($-2$以下の)負数となることがある. + 負数の場合は「横組用和文フォントは実際には読み込まれておらず,そのフォントサイズとJFMだけが + \LuaTeX-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. % %<*ja> -現在の縦組用和文フォントのフォント番号. +縦組用和文フォントに関する\cs{ltj@curjfnt}と同様の値. % \attr{ltj@charclass} @@ -9797,19 +10406,37 @@ For illustration, we introduce following classes of characters: 直前が和文文字であるかを示すフラグ \verb+\lst@ifkanji+ を新たに導入した. 以降,説明のために以下のように文字を分類する: % +%<*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\\ -%Meaning&char in an identifier&other alphabet&% -%most of Japanese char&opening brackets&closing brackets\\ -%意図&識別子中の文字&その他欧文文字&殆どの和文文字&開き括弧類&閉じ括弧類\\ +\emph{意図}&識別子中の文字&その他欧文文字&殆どの和文文字&開き括弧類&閉じ括弧類\\ \bottomrule \end{tabular} \end{center} +% +%<*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> Note that \textit{digits} in the \Pkg{listings} package can be Letter or Other according to circumstances. @@ -9841,27 +10468,27 @@ The following table summarizes $5\times 5=25$ cases: % \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\\ % %<*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}&収集\\ % \bottomrule \end{tabular} @@ -10109,53 +10736,6 @@ $|\textit{total}|$の分だけが,行中のグルーの伸び量,あるい % %<*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} はフォント番号の情報を\ -\texttt{fonts.hashes.identifiers[]} 以下に格納している. -しかし,OpenTypeフォントのIVS情報は格納されていないようである% -\footnote{TrueTypeフォントに関しては, -\begin{center} -\texttt{fonts.hashes.idenfiers[]% - .resources.variants[][]} -\end{center} -に,番の文字の後に異体字セレクタが続いた場合に -出力すべきグリフが書かれてある.}. -%例えば,小塚明朝Pr6N~Rでは, - -一方,\LuaTeX 内部の \texttt{fontloader} の返すテーブルには -OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されている. -具体的には…… - -そのため,\LuaTeX-jaのIVS対応においては,\LuaTeX 内部の\ -\texttt{fontloader} を直接用いることで,フォントのIVS情報を取得している. -20140114.0以降でキャッシュを用いるようにした要因はここにあり, -\texttt{fontloader} の呼び出しでかなり時間を消費することから, -%%% to_table を使わなくしたことで,メモリ使用量は減った -IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している. -% - - -%<*ja> \section{複数フォントの「合成」(未完)} \section{\LuaTeX-jaにおけるキャッシュ} \Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を @@ -10259,6 +10839,7 @@ The following is the structure of the that table. \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 @@ -10583,6 +11164,51 @@ direction~whatsit内部のノードリストに,\textit{dir\_box}として格 } \] のようになる. + +\subsection{縦組用字形の取得} +縦組時には,「\hbox to \zw{、}」(\texttt{U+3001})から「\ltjjachar"FE11」(\texttt{U+FE11})%" +のように縦組用字形への置き換えに関係する処理は,以下のようになっている. + \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 \LuaTeX-jaには,「\hbox to \zw{、}」(\texttt{U+3001})→「\ltjjachar"FE11」(\texttt{U+FE11})といった + いくつかの置換がハードコードされている.そのような各置換$i\longmapsto v$に対して, + \begin{quote} + 置換元$i$が(あるscript, languageにおける)\texttt{vert}では置換対象でなく, + かつ置換先$v$がフォント内に存在する文字コードである + \end{quote} + ならば,$i\longmapsto v$を\textit{vform}に登録する. + \item \ref{ssec:tfont}節にある\texttt{jpotf}が指定された場合, + …… + \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機能に沿ったグリフ置換はこの後の処理となる.G + \end{itemize} + % \newpage @@ -10605,11 +11231,11 @@ TUG 2013, October 2013. Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \newblock \url{http://www.w3.org/TR/jlreq/}% % \\日本語訳の書籍版:W3C日本語組版タスクフォース(編),『W3C技術ノート 日本語組版処理の要件』,東京電機大学出版局,2012. -\bibitem{min10} 乙部厳己.min10フォントについて.\\\null\hfill +\bibitem{min10} 乙部厳己.「min10フォントについて」\\\null\hfill \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 の出版への応用—縦組み機能の組み込み—. +\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{ptextug} Hisato Hamano. \newblock \textit{Vertical Typesetting with \TeX}, TUGBoat~\textbf{11}(3), 346--352, 1990. @@ -10618,6 +11244,8 @@ ISO 32000-1:2008, \textit{Document management -- Portable document format -- Par 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}