%%%%% section ==> 章
%%%%% subsection => 節
+\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
%<en>\documentclass[a4paper,titlepage]{article}
%<ja>\documentclass[a4paper,titlepage]{ltjsarticle}
%%%%%%%%
\makeatletter
%%%%%%%%
+\def\pgfsysdriver{pgfsys-pdftex.def}
+\directlua{if jit then jit.on() end}
+\usepackage{metalogo,amsmath,array,tikz,pict2e,multienum,float}
+\usepackage{booktabs,multicol,luatexja-ruby}
+\usepackage[all]{xy}
+\usepackage{lltjext,alltt}
+%%%%%%%% fonts
+\usepackage{luatexja-otf}
+\directlua{luatexja.otf.enable_ivs()}
+\usepackage[no-math]{fontspec}
+\setmainfont[Ligatures=TeX]{Linux Libertine O}
+\setmonofont[Scale=MatchLowercase, ItalicFont=lmmono10-italic.otf,
+ BoldFont=lmmonolt10-bold.otf, BoldItalicFont=lmmonolt10-boldoblique.otf
+]{lmmono10-regular.otf}
+\setsansfont[Scale=MatchLowercase,Ligatures=TeX]{Linux Biolinum O}
+\usepackage[match]{luatexja-fontspec}
+\usepackage[kozuka-pr6n]{luatexja-preset}
+\usepackage{unicode-math}
+\setmonojfont{KozGoPr6N-Regular.otf}
+\setmathfont[Scale=MatchLowercase]{xits-math.otf}
+
+\setLaTeXa{\scshape a}
+%<*ja>
+\def\emph#1{\textbf{\textgt{#1}}}
+\def\headfont{\normalfont\bfseries\gtfamily}\normalsize
+%</ja>
%<*en>
+\frenchspacing
\usepackage[margin=25mm,lmargin=30mm,rmargin=30mm,footskip=6mm]{geometry}
\usepackage{luatexja-adjust}\ltjdisableadjust
\parskip=\smallskipamount
+\makeatletter
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
\advance\leftmargini-1\zw\advance\leftmarginii-1\zw
%</ja>
-\usepackage{amsmath,array,tikz,pict2e,multienum,float}
-\usepackage{booktabs,multicol,luatexja-ruby}
-\usepackage[all]{xy}
-\usepackage{lltjext,alltt}
-
%%%%%%%% listings
%%%%%%%% IVS
explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed}
}
% Suppress output from showexpl to stdout.
+\makeatletter
\let\SX@Info\relax
%%%%%%%% colors
%<en>\newtheorem{defn}{Definition}
%<ja>\newtheorem{defn}{定義}
-%%%%%%%% fonts
-\usepackage{luatexja-otf}
-%<ja>\usepackage{lmodern}
-\directlua{luatexja.otf.enable_ivs()}
-\usepackage[match]{luatexja-fontspec}
-\usepackage[kozuka-pr6n]{luatexja-preset}
-\setmonojfont{KozGoPr6N-Regular.otf}
-%<*ja>
-\def\emph#1{\textbf{\textgt{#1}}}
-\def\headfont{\normalfont\bfseries\gtfamily}
-\usepackage{amssymb}
-%</ja>
-%<*en>
-\usepackage{unicode-math}
-\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
-\setsansfont[Scale=0.95,Ligatures=TeX]{TeX Gyre Heros}
-\setmathfont{xits-math.otf}
-\frenchspacing
-%</en>
-
%%%%%%%% logo
\usepackage{metalogo}
\DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX}
\DeclareRobustCommand\upTeX{up\kern-.15em\TeX}
\DeclareRobustCommand\pLaTeX{p\kern-.05em\LaTeX}
\DeclareRobustCommand\pLaTeXe{p\kern-.05em\LaTeXe}
-\DeclareRobustCommand\epTeX{\ensuremath{\varepsilon}-\kern-.125em\pTeX}
+\DeclareRobustCommand\epTeX{\ensuremath{\varepsilon}-\pTeX}
%%%%%%%% other macros
-\newlist{cslist}{description}{1}
+\newlist{cslist}{description}{2}
\setlist[cslist]{%
style=nextline,font=\mdseries\ttfamily,
before*=\def\<{\char`\<}\def\>{\char`\>}\def\{{\char`\{}\def\}{\char`\}},
+ topsep=\medskipamount,
%<ja> leftmargin=2\zw,
%<en> leftmargin=2em,
}
\vskip\belowcaptionskip}
\def\_{\leavevmode \kern .06em\vbox {\hrule \@width .333em}}
-\def\cs#1{\texttt{\upshape\textbackslash #1}}
+\def\cs#1{\texttt{\upshape
+ \texorpdfstring{\textbackslash\ltjsetparameter{autoxspacing=false}#1}{\textbackslash#1}}}
%%%%%%%%
\makeatother
width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr
}}}}}\,}
-\protected\def\Param#1{\hyperlink{fld:#1}{\textsf{#1}}} % parameter name
-\protected\def\DParam#1{\hypertarget{fld:#1}{\textsf{#1}}} % parameter name (definition)
-\protected\def\Pkg#1{\underline{\smash{\texttt{#1}}}} % packages/classes
+\def\myghost{\ifmmode\else\ltjalchar"200C \fi}
+\protected\def\Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name
+\protected\def\DParam#1{\myghost\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name (definition)
+\protected\def\Pkg#1{\textsf{#1}} % packages/classes
+\ltjsetparameter{alxspmode={"200C,allow}}
\begin{document}
ASCII \pTeX やそれの拡張物が用いられることが一般的であった.\pTeX は\TeX
のエンジン拡張であり,(少々仕様上不便な点はあるものの)商業印刷の分野に
も用いられるほどの高品質な日本語組版を可能としている.だが,それは弱点に
-ã\82\82ã\81ªã\81£ã\81¦ã\81\97ã\81¾ã\81£ã\81\9fï¼\9a\pTeX という(組版的に)満足なものがあったため,海外で
+ã\82\82ã\81ªã\81£ã\81¦ã\81\97ã\81¾ã\81£ã\81\9fï¼\8e\pTeX という(組版的に)満足なものがあったため,海外で
行われている数々の\TeX の拡張――例えば\eTeX や\pdfTeX ――や,TrueType,
OpenType, Unicodeといった計算機で日本語を扱う際の状況の変化に追従すること
を怠ってしまったのだ.
が始まったパッケージである.
%</ja>
-%<en>\subsection{Major Changes from \pTeX}
+%<en>\subsection{Major changes from \pTeX}
%<ja>\subsection{\pTeX からの主な変更点}
\label{ssec:chgptex}
%<*en>
The \LuaTeX-ja package is under much influence of \pTeX\ engine. The initial
target of development was to implement features of \pTeX. However,
-\emph{\LuaTeX-ja is not a just porting of \pTeX; unnatural
+implementing all feature of \pTeX\ is impossible,
+since all process of \LuaTeX-ja must be implemented only by Lua and \TeX\ macros.
+Hence \emph{\LuaTeX-ja is not a just porting of \pTeX; unnatural
specifications/behaviors of \pTeX\ were not adopted}.
%</en>
%<*ja>
\LuaTeX-jaは,\pTeX に多大な影響を受けている.初期の開発目標は,\pTeX の機
-能をLuaコードにより実装することであった.しかし,開発が進むにつれ,\pTeX
+能をLuaコードにより実装することであった.しかし,(\pTeX はエンジン拡張であったのに対し)
+\LuaTeX-jaはLuaコードと\TeX マクロを用いて全てを実装していなければならないため,\pTeX
の完全な移植は不可能であり,また\pTeX における実装がいささか不可解になっ
ているような状況も発見された.そのため,\emph{\LuaTeX-jaは,もはや
\pTeX の完全な移植は目標とはしない.\pTeX における不自然な仕様・挙動があ
%</ja>
%<*en>
-The followings are major changes from \pTeX:
+The followings are major changes from \pTeX.
+For more detailed information, see Part~\ref{part-imp} or other sections of this manual.
%</en>
%<*ja>
以下は \pTeX からの主な変更点である.
+より詳細については第\ref{part-imp}部など本文書の残りを参照.
%</ja>
-\begin{itemize}
%<*en>
-\item A Japanese font is a tuple of a ``real'' font, a Japanese font
- metric (\emph{JFM}, for short).
+\paragraph{Command names} \pTeX\ addes several primitives, such as \cs{kanjiskip},
+\cs{prebreakpenalty},~and,~\cs{ifydir}. They can be used as follows:
%</en>
%<*ja>
-\item 和文フォントは(小塚明朝,IPA明朝などの)実際のフォント,和文フォン
- トメトリック(JFMと呼ぶ\footnote{混乱を防ぐため,p\TeX の意味での
- JFM (\texttt{min10.tfm}) などは本ドキュメントでは\emph{和文用
- TFM}とよぶことにする.})の組である.
+\paragraph{命令の名称} 例えば\pTeX で追加された次のようなプリミティブ
+%</ja>
+\begin{verbatim}
+\kanjiskip=10pt \dimen0=kanjiskip
+\tbaselineshift=0.1zw
+\dimen0=\tbaselineshift
+\prebreakpenalty`ぁ=100
+\ifydir ... \fi
+\end{verbatim}
+%<en> However, we cannot use them under \LuaTeX-ja.
+%<en> Instead of them, we have to write as the following.
+%<ja> は\LuaTeX-jaには存在しない.\LuaTeX-jaでは以下のように記述することになる.
+\begin{verbatim}
+\ltjsetparameter{kanjiskip=10pt} \dimen0=\ltjgetparameter{kanjiskip}
+\ltjsetparameter{talbaselineshift=0.1\zw}
+\dimen0=\ltjgetparameter{talbaselineshift}
+\ltjsetparameter{prebreakpenalty={`ぁ,100}}
+\ifnum\ltjgetparemeter{direction}=4 ... \fi
+\end{verbatim}
+%<*en>
+Note that \pTeX\ adds new two useful units, namely \texttt{zw}~and~\texttt{zh}.
+As shown above, they are changed by \cs{zw}~and~\cs{zh} respectively, in \LuaTeX-ja.
+%</en>
+%<*ja>
+特に注意してほしいのは,\pTeX で追加された \texttt{zw} と \texttt{zh} という単位は
+\LuaTeX-ja では使用できず,\cs{zw}, \cs{zh} と制御綴の形にしないといけないという点である.
%</ja>
%<*en>
-\item In \pTeX, a line break after Japanese character is ignored (and
+\paragraph{Linebreak after a Japanese character}
+In \pTeX, a line break after Japanese character is ignored (and
doesn't yield a space), since line breaks (in source files) are
permitted almost everywhere in Japanese texts. However, \LuaTeX-ja
- doesn't have this function completely, because of a specification
- of \LuaTeX.
+ doesn't have this feature completely, because of a specification
+ of \LuaTeX. For the detail, see Section~\ref{sec-lbreak}.
%</en>
%<*ja>
-\item 日本語の文書中では改行はほとんどどこでも許されるので,\pTeX では和文文字
+\paragraph{和文文字直後の改行}
+日本語の文書中では改行はほとんどどこでも許されるので,\pTeX では和文文字
直後の改行は無視される(スペースが入らない)ようになっていた.しかし,
\LuaTeX-ja では \LuaTeX の仕様のためにこの機能は完全には実装されていない.
+ 詳しくは\ref{sec-lbreak}章を参照.
%</ja>
%<*en>
-\item The insertion process of glues/kerns between two Japanese
+\paragraph{Spaces related to Japanese characters}
+The insertion process of glues/kerns between two Japanese
characters and between a Japanese character and other characters
(we refer glues/kerns of both kinds as \textbf{JAglue}) is rewritten from
scratch.
%</en>
%<*ja>
-\item 2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン
+\paragraph{和文関連の空白}
+2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン
(両者をあわせて\textbf{JAglue}と呼ぶ)の挿入処理が0から書き直されている.
%</ja>
\begin{itemize}
%<*en>
-\item As \LuaTeX's internal ligature handling is ``node-based''
+\item As \LuaTeX's internal ligature handling is \emph{node-based}
(\textit{e.g.}, \verb+of{}fice+ doesn't prevent ligatures), the
- insertion process of \textbf{JAglue} is now ``node-based''.
+ insertion process of \textbf{JAglue} is now \emph{node-based}.
%</en>
%<*ja>
\item \LuaTeX の内部での合字の扱いは「ノード」を単位として行われるようになっている(例えば,
ちょ\hbox{}っと
\end{lstlisting}
-
%<*en>
\item In the process, two Japanese fonts which only differ in their ``real''
fonts are identified.
%</ja>
\end{itemize}
+%<*en>
+\paragraph{Directions}
+From version~20150420.0, \LuaTeX-ja supports vertical writing.
+We implement this feature by using callbacks of \LuaTeX; so it must \emph{not} be confused
+with $\Omega$-style direction support of \LuaTeX\ itself.
+Due to implementation, the dimension returned by \cs{wd},~\cs{ht}, or~\cs{dp} depends
+on the content of the register \emph{only}. This is major difference with \pTeX.
+%</en>
%<*ja>
-\item \LuaTeX-jaでは,\pTeX と同様に漢字・仮名を制御綴内に用いることができ,
-\cs{西暦} などが正しく動作するようにしている.
-但し,制御綴中に使える和文文字が\pTeX・\upTeX と全く同じではない(\ref{sec-catcode}章参照).
-%</ja>
-
-%<*ja>
-\item ****版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
-\LuaTeX のコールバックの制限などにより,特に異なった組方向のボックスを扱う場合には
-仕様が異なるので注意.
+\paragraph{組方向}
+20150420.0版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
+なお,\LuaTeX 本体も$\Omega$流の組方向をサポートしているが,それとは全くの別物であること
+に注意してほしい.
+特に,異なった組方向のボックスを扱う場合には
+\cs{wd}, \cs{ht}, \cs{dp}等の仕様が\pTeX と異なるので注意.詳細は第\ref{sec-direction}章を参照.
%</ja>
%<*en>
-\item Japanese characters in discretionary break (\cs{discretionary}) is not supported.
+\paragraph{\cs{discretionary}}
+Japanese characters in discretionary break (\cs{discretionary}) is not supported.
%</en>
%<*ja>
-\item \cs{discretionary} 内に直接和文文字を記述することはサポートされない.和文文字をどう
+\paragraph{\cs{discretionary}}
+ \cs{discretionary} 内に直接和文文字を記述することは,\pTeX においても想定されていなかった
+ 感があるが.\LuaTeX-jaにおいても想定していない.和文文字をどう
しても使いたい場合は \cs{hbox} で括ること.
%</ja>
-\end{itemize}
%<*en>
-For detailed information, see Part~\ref{part-imp}.
+\paragraph{Greek and Cyrillic letters, and ISO~8859-1 symbols}
+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}.
+
+From this version, characters which belongs both ISO~8859-1 and JIS~X~0208,
+ such as \P~and~\S, are now typeset in alphabetic fonts. This means that
+ without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package, these characters are not typeset correctly.
%</en>
%<*ja>
-詳細については第\ref{part-imp}部を参照.
+\paragraph{ギリシャ文字・キリル文字とISO~8859-1の記号}
+標準では,\LuaTeX-jaはギリシャ文字やキリル文字を和文フォントを使っ
+ て組む.ギリシャ語などを本格的に組むなどこの状況が望ましくない場合,
+ プリアンブルに
+\begin{lstlisting}
+ \ltjsetparameter{jacharrange={-2,-3}}
+\end{lstlisting}
+ を入れると
+ 上記種類の文字は欧文フォントを用いて組まれるようになる.
+ 詳しい説明は\ref{ssec-setrange}節を参照してほしい.
+
+また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は
+ 本バージョンから標準で欧文扱いとなり,\emph{ソース中に直接記述しても
+ \Pkg{fontspec}パッケージ(および\Pkg{luatexja-fontspec}パッケージ)非読み込みの状態では出力されなくなった}.
+ 和文扱いで出力するには \verb+\ltjjachar`§+ のように \cs{ltjjachar} 命令
+ を使えばよい.
%</ja>
%<en>\subsection{Notations}
(see Subsection~\ref{ssec-setrange}).
%</en>
%<*ja>
-\item 文字は次の2種類に分けられる.この類別はユーザが後から変更可能である
+\item 文字は次の2種類に分けられる.この類別は固定されているものではなく,ユーザが後から変更可能である
(\ref{ssec-setrange}節を参照).
%</ja>
\begin{itemize}
%<*en>
-\item \textbf{JAchar}: standing for characters which used in Japanese typesetting,
+\item \textbf{JAchar}: standing for characters which is used in Japanese typesetting,
such as Hiragana,~Katakana, Kanji, and~other Japanese punctuation marks.
%</en>
%<*ja>
\textbf{JAchar}の出力に用いられるフォントを\emph{和文フォント}と呼ぶ.
%</ja>
%<*en>
-\item A word in a sans-serif font (like \Param{prebreakpenalty})
+\item A word in a sans-serif font with underline (like \Param{prebreakpenalty})
means an internal parameter for Japanese typesetting, and it
is used as a key in \cs{ltjsetparameter} command.
%</en>
%<*ja>
-\item サンセリフ体で書かれた語(例:\Param{prebreakpenalty})は日本語組版用の
+\item 下線つきローマン体で書かれた語(例:\Param{prebreakpenalty})は日本語組版用の
パラメータを表し,これらは \cs{ltjsetparameter} 命令のキーとして
用いられる.
%</ja>
%<*en>
-\item A word in typewriter font with underline (like \Pkg{fontspec})
+\item A word in a sens-serif font without underline (like \Pkg{fontspec})
means a package or a class of \LaTeX.
%</en>
%<*ja>
-\item 下線付きタイプライタ体の語(例:\Pkg{fontspec})は\LaTeX の
+\item 下線なしサンセリフ体の語(例:\Pkg{fontspec})は\LaTeX の
パッケージやクラスを表す.
%</ja>
%<*en>
%</ja>
\end{itemize}
-%<en>\subsection{About the Project}
+%<en>\subsection{About the project}
%<ja>\subsection{プロジェクトについて}
%<en>\paragraph{Project Wiki} Project Wiki is under construction.
%<ja>\paragraph{プロジェクトWiki} プロジェクトWikiは構築中である.
%<*en>
\begin{itemize}
-\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29} (English)
-\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage} (Japanese)
-\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28zh%29} (Chinese)
+\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29} (English)
+\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage} (Japanese)
+\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28zh%29} (Chinese)
\end{itemize}
%</en>
%<*ja>
\begin{itemize}
-\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage}(日本語)
-\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}(英語)
-\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28zh%29}(中国語)
+\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage}(日本語)
+\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29}(英語)
+\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28zh%29}(中国語)
\end{itemize}
%</ja>
-%<en>This project is hosted by SourceForge.JP.
-%<ja>本プロジェクトはSourceForge.JPのサービスを用いて運営されている.
+%<en>This project is hosted by OSDN.
+%<ja>本プロジェクトはOSDNのサービスを用いて運営されている.
%<en>\paragraph{Members}\
%<ja>\paragraph{開発メンバー}\
%<ja>\subsection{インストール}
%<en>The following packages are needed for the \LuaTeX-ja\ package.
-%<ja>\LuaTeX-jaã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81«ã\81¯ï¼\8c次のパッケージ類が必要である.
+%<ja>\LuaTeX-jaã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81®å\8b\95ä½\9cã\81«ã\81¯次のパッケージ類が必要である.
\begin{itemize}
-\item \LuaTeX\ beta-0.74.0 (or later)
-\item \Pkg{luaotfload} v2.2 (or later)
+\item \LuaTeX\ beta-0.85.0 (or later)
+\item \Pkg{luaotfload} v2.6 (or later)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
\item \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
-%<en>\item \emph{IPAex fonts(\url{http://ipafont.ipa.go.jp/})}
+\item \Pkg{fontspec} v2.4
+%<en>\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/})
%<ja>\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})}
\end{itemize}
+%<en>In summary, this version of \LuaTeX-ja no longer supports \TeX~Live~2015 (or older version).
+%<*ja>
+要約すると,本バージョンの\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{%
+ もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である.
+}.
+%</ja>
%<*en>
-\emph{This version of \LuaTeX-ja no longer supports \TeX~Live~2012 (or older version),
-since \LuaTeX\ binary and \Pkg{luaotfload} is updated in
-\TeX~Live~2013.}
-
-\medskip
-
Now \LuaTeX-ja is available from
CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and
the following distributions:
\item W32\TeX\ (in \texttt{luatexja.tar.xz})
\end{itemize}
IPAex fonts are also available in these distributions.
-
-If you are using \TeX~Live~2014, you can install \LuaTeX-ja
-from \TeX~Live manager (\texttt{tlmgr}):
-\begin{lstlisting}
-$ tlmgr install luatexja
-\end{lstlisting}
%</en>
%<*ja>
-\emph{本バージョンの\LuaTeX-jaは\TeX~Live~2012以前では動作しない.}
-これは,\LuaTeX と\Pkg{luaotfload}が\TeX~Live~2013において更新されたことによる.
-
-\medskip
-
現在,\LuaTeX-jaはCTAN (\texttt{macros/luatex/generic/luatexja})に収録されている他,
以下のディストリビューションにも収録されている:
\begin{itemize}
\end{itemize}
これらのディストリビューションはIPAexフォントも収録している.
W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある.
-
-例えば\TeX~Live~2014を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
-使ってインストールすることができる.
-\begin{lstlisting}
-$ tlmgr install luatexja
-\end{lstlisting}
%</ja>
+% %<*ja>
+% 例えば\TeX~Live~2015を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
+% 使ってインストールすることができる.
+% \begin{lstlisting}
+% $ tlmgr install luatexja
+% \end{lstlisting}
+% %</ja>
+% %<*en>
+% If you are using \TeX~Live~2015, you can install \LuaTeX-ja
+% from \TeX~Live manager (\texttt{tlmgr}):
+% \begin{lstlisting}
+% $ tlmgr install luatexja
+% \end{lstlisting}
+% %</en>
+
%<en>\paragraph{Manual installation}
%<ja>\paragraph{手動インストール方法}
\begin{enumerate}
%<*en>
-\item Download the source archive, by one of the following method.
+\item Download the source, by one of the following method.
At the present, \LuaTeX-ja has no \emph{stable} release.
\begin{itemize}
-\item Copy the Git repository:
+\item Clone the Git repository:
\begin{lstlisting}
-$ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git
+$ git clone git://git.osdn.jp/gitroot/luatex-ja/luatexja.git
\end{lstlisting}
\item Download the \texttt{tar.gz} archive of HEAD in the \texttt{master} branch from
\begin{flushleft}
-\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
+\url{http://git.osdn.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
\end{flushleft}
\end{itemize}
the forefront of development is not the \texttt{master} branch.
%</en>
%<*ja>
-\item ã\82½ã\83¼ã\82¹ã\82¢ã\83¼ã\82«ã\82¤ã\83\96ã\82\92以ä¸\8bã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\81®æ\96¹æ³\95ã\81§å\8f\96å¾\97ã\81\99ã\82\8bï¼\8eç\8f¾å\9c¨å\85¬é\96\8bã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81®ã\81¯ã\81\82ã\81\8fã\81¾ã\81§ã\82\82
+\item ソースを以下のいずれかの方法で取得する.現在公開されているのはあくまでも
開発版であって,安定版でないことに注意.
\begin{itemize}
-\item Gitã\83ªã\83\9dã\82¸ã\83\88ã\83ªã\81®å\86\85容ã\82\92ã\82³ã\83\94ã\83¼する:
+\item Gitã\83ªã\83\9dã\82¸ã\83\88ã\83ªã\82\92ã\82¯ã\83ã\83¼ã\83³する:
\begin{lstlisting}
-$ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git
+$ git clone git://git.osdn.jp/gitroot/luatex-ja/luatexja.git
\end{lstlisting}
-\item \texttt{master}ブランチのスナップショット(\texttt{tar.gz}形式)をダウンロードする.
+\item \texttt{master} ブランチのスナップショット(\texttt{tar.gz} 形式)をダウンロードする.
\begin{flushleft}
-\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
+\url{http://git.osdn.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
\end{flushleft}
\end{itemize}
-\texttt{master}ブランチ(従って,CTAN内のアーカイブも)はたまにしか更新されないことに注意.
-主な開発は\texttt{master}の外で行われ,比較的まとまってきたらそれを\texttt{master}に
+\texttt{master} ブランチ(従って,CTAN内のアーカイブも)はたまにしか更新されないことに注意.
+主な開発は\texttt{master}の外で行われ,比較的まとまってきたらそれを \texttt{master} に
反映させることにしている.
%</ja>
But only the contents in \texttt{src/} are needed to work \LuaTeX-ja.
%</en>
%<*ja>
-\item ã\80\8cGitã\83ªã\83\9dã\82¸ã\83\88ã\83ªã\82\92ã\82³ã\83\94ã\83¼」以外の方法でアーカイブを取得したならば,それを展開する.
- \texttt{src/}をはじめとしたいくつかのディレクトリができるが,
- 動作には\texttt{src/}以下の内容だけで十分.
+\item ã\80\8cGitã\83ªã\83\9dã\82¸ã\83\88ã\83ªã\82\92ã\82¯ã\83ã\83¼ã\83³」以外の方法でアーカイブを取得したならば,それを展開する.
+ \texttt{src/} をはじめとしたいくつかのディレクトリができるが,
+ 動作には \texttt{src/} 以下の内容だけで十分.
%</ja>
%<*en>
$ luatex ltj-kinsoku_make.tex
\end{lstlisting}
%<*en>
-Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not needed in regular use.
+\emph{Do not forget The last line (processing \texttt{ltj-kinsoku\_make.tex})}.
+\texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} used here are not needed in regular use.
%</en>
%<*ja>
+\emph{最後の \texttt{ltj-kinsoku\_make.tex} の実行を忘れないように注意}.
ここで使用した \texttt{*.\{dtx,ins\}} と \texttt{ltj-kinsoku\_make.tex} は
通常の使用にあたっては必要ない.
%</ja>
instead copying is also good.
%</en>
%<*ja>
-\item \texttt{src}の中身を自分の\texttt{TEXMF}ツリーにコピーする.
+\item \texttt{src} の中身を自分の \texttt{TEXMF} ツリーにコピーする.
場所の例としては,例えば
\begin{quote}
\texttt{TEXMF/tex/luatex/luatexja/}
\item If \texttt{mktexlsr} is needed to update the file name database, make it so.
%</en>
%<*ja>
-\item 必要があれば,\texttt{mktexlsr}を実行する.
+\item 必要があれば,\texttt{mktexlsr} を実行する.
%</ja>
\end{enumerate}
-%<en>\subsection{Cautions}
-%<ja>\subsection{注意点}
-
+%<*en>
+\subsection{Cautions}
+For changes from \pTeX, see Subsection~\ref{ssec:chgptex}.
+%</en>
+%<*ja>
+\subsection{注意点}
+\pTeX からの変更点として,\ref{ssec:chgptex}節も熟読するのが望ましい.
+ここでは一般的な注意点を述べる.
+%</ja>
\begin{itemize}
%<*en>
-\item The encoding of your source file must be UTF-8. No other
+\item The encoding of your source file must be UTF-8. Other
encodings, such as EUC-JP or Shift-JIS, are not supported.
%</en>
%<*ja>
LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが,
IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある.
%</ja>
+
\item%
%<*en>
-\textbf{Note for MiK\TeX\ users}\quad
+\textbf{(Outdated) note for MiK\TeX\ users}\quad
\LuaTeX-ja requires that several CMap files%
\footnote{\texttt{UniJIS2004-UTF32-\{H,V\}} and \texttt{Adobe-Japan1-UCS2}.}
must be found from \LuaTeX.
\LuaTeX-jaが動作するためには,\emph{導入・更新後の初回起動時に}
\texttt{UniJIS2004-UTF32-\{H,V\}}, \texttt{Adobe-Japan1-UCS2}という3つのCMapが
\LuaTeX によって見つけられることが必要である.
-しかしMiK\TeX ではそのようになっていないので,次のエラーが発生するだろう:
+しかし古いバージョンのMiK\TeX ではそのようになっていないので,次のエラーが発生するだろう:
%</ja>
\begin{lstlisting}
! LuaTeX error ...iles (x86)/MiKTeX 2.9/tex/luatex/luatexja/ltj-rmlgbm.lua
%<*en>
If so, please execute a batch file which is written on
-\href{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{ the Project Wiki (English)}.
+\href{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{ the Project Wiki (English)}.
This batch file creates a temporary directory, copy CMaps in it,
-run \LuaTeX-ja in this directory, and finally delete the temporary directory.
+run a test file which loads \LuaTeX-ja in this directory,
+and finally delete the temporary directory.
%</en>
%<*ja>
そのような場合には,
-\href{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{%
+\href{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{%
プロジェクトWiki英語版トップページ}中に書かれているバッチファイルを
実行して欲しい.このバッチファイルは,作業用ディレクトリにCMap達を
-コピーし,その中で\LuaTeX-ja の初回起動を行い,作業用ディレクトリを消す作業をしている.
+コピーし,その中で\LuaTeX-jaの初回起動を行い,作業用ディレクトリを消す作業をしている.
%</ja>
\end{itemize}
\begin{tabular}{cccccc}
\toprule
\textbf{direction}&
-\textbf{classification}&\textbf{font name}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
+\textbf{classification}&\textbf{font name}&\bf ``10\,pt''&\bf``7\,pt''&\bf``5\,pt''\\\midrule
\smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}&
\emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
&\emph{gothic}&IPAex Gothic&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
\begin{center}\small
\begin{tabular}{cccccc}
\toprule
-\emph{組方向}&\emph{字体}&\emph{フォント名}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
+\emph{組方向}&\emph{字体}&\emph{フォント名}&\bf ``10\,pt''&\bf``7\,pt''&\bf``5\,pt''\\\midrule
\smash{\raisebox{-1ex}{横組}}&
明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
&ゴシック体&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
また,どちらのファミリでもイタリック体・スラント体は定義されない.
%</ja>
-
%<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
%<ja>\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される.
+%<*en>
+ \item \cs{jttdefault}%
+ \footnote{%
+ When \Pkg{ltjsclasses} classes are used, or
+ \Pkg{luatexja-fontspec} (or \Pkg{luatexja-preset}) is loaded with \texttt{match} option,
+ \cs{ttfamily} changes the current Japanese font amily to \cs{jttdefault}.
+ These classes and packages also redefine \cs{jttdefault} to
+ \cs{gtdefault} (\emph{gothic}~family).
+ } specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim} environment.
+ The default value of \cs{jttdefault} is \cs{mcdefault}, so \emph{mincho} family is used.
+%</en>
+%<*ja>
+ \item \cs{verb} や \texttt{verbatim} 環境中の和文文字に使われる和文フォントファミリは
+ \ \cs{jttdefault} で指定する%
+ \footnote{%
+ \Pkg{ltjsclasses}を使用したり,あるいは \texttt{match} オプションを指定して\Pkg{luatexja-fontspec}%
+ や\Pkg{luatexja-preset}パッケージを読み込んだときは,単なる \cs{ttfamily} によっても和文フォントが
+ \ \cs{jttdefault}\ に変更される.また,これらのクラスファイルやパッケージは
+ \ \cs{jttdefault}\ を \cs{gtdefault}(ゴシック体)に再定義する.
+ }.標準値は \cs{mcdefault},つまり明朝体として用いるのと
+ 同じフォントファミリである.
+%</ja>
+
+%<*en>
+\item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif
+ fonts) and with \LuaTeX-ja, you might want to change default Japanese fonts to
+ \emph{gothic} family. The following line changes the default Japanese font family
+ to \emph{gothic}:
+%</en>
+%<*ja>
+\item \Pkg{beamer}クラスを既定のフォント設定で使う場合,既定欧文フォントがサンセリフなの
+ で,既定和文フォントもゴシック体にしたいと思うかもしれない.その場合はプリアンブルに
+次を書けばよい:
+%</ja>
+\begin{lstlisting}
+ \renewcommand{\kanjifamilydefault}{\gtdefault}
+\end{lstlisting}
+
+
\end{itemize}
%<*en>
The latter \texttt{ltjt*.cls} are for vertically writtened Japanese documents.
} and \Pkg{ltjsclasses}\footnote{%
\texttt{ltjsarticle.cls},~\texttt{ltjsbook.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.
%</en>
%<*ja>
しかしながら,上記の設定は日本語の文書にとって十分とは言えない.
日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった
欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい.
-現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses}
+現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses}%
(奥村晴彦氏による「\pLaTeXe 新ドキュメントクラス」)に対応するものとして,
\Pkg{ltjclasses}\footnote{%
横組用は \texttt{ltjarticle.cls},~\texttt{ltjbook.cls}, \texttt{ltjreport.cls} であり,
\Pkg{ltjsclasses}\footnote{%
\texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls},~\texttt{ltjskiyou.cls}.}%
がそれぞれ用意されている.
+
+元々の\Pkg{ltjsclasses}ではフォントサイズを指定するのに\cs{mag}プリミティブが使われていたが,
+\LuaTeX~beta-0.87.0以降ではPDF出力時の\cs{mag}のサポートが廃止された.
+そのため,\Pkg{ltjsclasses}では別の方法
+\footnote{八登崇之氏による\Pkg{BXjscls}クラスにおける\texttt{magstyle=xreal}指定時と類似している.}で
+フォントサイズを指定することにしている.
%</ja>
%<*ja>
脚注とボトムフロートの順序は\LaTeX 通りとした.もし\pLaTeX の出力順序が好みならば,
\Pkg{stfloats}パッケージを利用して
\begin{lstlisting}
- \usepackage{stfloats} \fnbelowfloat
+ \usepackage{stfloats}\fnbelowfloat
\end{lstlisting}
のようにすればよい.\Pkg{footmisc}パッケージを \texttt{bottom}\ オプションを指定して
読み込むという方法もあるが,それだとボトムフロートと脚注の間が開いてしまう.
%</ja>
+%%% ↑は英訳しない
+
+%<*en>
+\paragraph{\Pkg{geometry} package and classes for vertical writing}
+It is well-known that the \Pkg{geometry} package produces the following error, when classes for
+vertical writing is used:
+%</en>
+%<*ja>
+\paragraph{縦組での\Pkg{geometry}パッケージ}
+\pLaTeX の縦組用標準クラスファイルでは\Pkg{geometry}パッケージを利用することは出来ず,
+%</ja>
+\begin{lstlisting}
+! Incompatible direction list can't be unboxed.
+\@begindvi ->\unvbox \@begindvibox
+ \global \let \@begindvi \@empty
+\end{lstlisting}
+%<*en>
+Now, \LuaTeX-ja automatically applies the patch \Pkg{lltjp-geometry} to the
+\Pkg{geometry} package, when the direction of the document is \emph{tate} (vertical
+writing).
+This patch \Pkg{lltjp-geometry} also can be used in \pLaTeX; for the detail, please refer
+\url{lltjp-geometry.pdf}~(Japanese).
+%</en>
+%<*ja>
+というようなエラーが発生することが知られている.
+\LuaTeX-jaでは, \texttt{ltjtarticle.cls} といった縦組クラスの下でも
+\Pkg{geometry}パッケージが利用できるようにパッチ\Pkg{lltjp-geometry}パッケージを自動的に当てている.
+
+なお,\Pkg{lltjp-geometry}パッケージは\pTeX 系列でも明示的に読み込むことによって
+使用可能である.詳細や注意事項は \url{lltjp-geometry.pdf} を参照のこと.
+%</ja>
+
%<en>\section{Changing Fonts}
%<ja>\section{フォントの変更}
For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ (in \texttt{plfonts.dtx}).
%</en>
%<*ja>
-\LaTeXe については,\LuaTeX-jaではフォント選択システムを\pLaTeXe\ (\texttt{plfonts.dtx})
-の大部分をそのまま採用している.
+\LaTeX で用いる際には,\pLaTeXe\ (\texttt{plfonts.dtx})用のフォント選択機構の大部分を流用している.
%</ja>
\begin{itemize}
%<*en>
-\item Commands \cs{fontfamily}, \cs{fontseries},
- \cs{fontshape}, and \cs{selectfont} can be used to change
+\item Commands \cs{fontfamily}, \cs{fontseries}, and \cs{fontshape} can be used to change
attributes of Japanese fonts.
%</en>
%<*ja>
-\item \cs{fontfamily}, \cs{fontseries}, \cs{fontshape}, そして
- \cs{selectfont} が和文フォントの属性を変更するために使用できる.
+\item 和文フォントの属性を変更するには,\cs{fontfamily}, \cs{fontseries}, \cs{fontshape} を使用する.
+ もちろん,それらを実際に反映させるには手動で \cs{selectfont} を実行する必要がある.
%</ja>
%<*en>
\verb+\fontencoding{+<encoding>\verb+}+ changes the encoding of alphabetic fonts
or Japanese fonts depending on the argument. For example,
\verb+\fontencoding{JY3}+ changes the encoding of Japanese fonts to
- \texttt{JY3},and \verb+\fontencoding{T1}+ changes the encoding of
+ \texttt{JY3}, and \verb+\fontencoding{T1}+ changes the encoding of
alphabetic fonts to \texttt{T1}.
\cs{fontfamily} also changes the current Japanese font family,
the current alphabetic font family, \emph{or both}.
%<*en>
\item For defining a Japanese font family, use
\cs{DeclareKanjiFamily} instead of
- \cs{DeclareFontFamily}. However, in the present implementation,
- using \cs{DeclareFontFamily} doesn't cause any problem.
+ \cs{DeclareFontFamily}. (In previous version of \LuaTeX-ja,
+ using \cs{DeclareFontFamily} didn't cause any problem. But this no longer applies
+ the current version.)
\item Defining a Japanese font shape can be done by usual \cs{DeclareFontShape}:
%</en>
%<*ja>
\item 和文フォントファミリの定義には \cs{DeclareFontFamily} の
- 代わりに \cs{DeclareKanjiFamily} を用いる.しかし,現在の
- 実装では \cs{DeclareFontFamily} を用いても問題は生じない.
+ 代わりに \cs{DeclareKanjiFamily} を用いる.以前の
+ 実装では \cs{DeclareFontFamily} を用いても問題は生じなかったが,現在の実装では
+ そうはいかない.
\item 和文フォントのシェイプを定義するには,通常の \cs{DeclareFontShape} を使えば良い:
%</ja>
\begin{lstlisting}
\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
\cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ.
%</ja>
+
\end{itemize}
%<*en>
記述しない.この方法については\ref{ssec-math}節を参照のこと.
%</ja>
-
-\subsection{fontspec}
+%<en>\subsection{\Pkg{luatexja-fontspec} package}
+%<ja>\subsection{\Pkg{luatexja-fontspec}パッケージ}
\label{ssec-fontspec}
%<*en>
-To coexist with the \Pkg{fontspec} package, it is needed to load
-\Pkg{luatexja-fontspec} package in the preamble, as follows:
+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:
\begin{quote}
\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
\end{quote}
This \Pkg{luatexja-fontspec} package
automatically loads \Pkg{luatexja} and \Pkg{fontspec}
-package, if needed.
+packages, if needed.
%</en>
%<*ja>
-\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合,
-\Pkg{luatexja-fontspec}パッケージを読み込む:
+\Pkg{fontspec}パッケージは,\LuaTeX・\XeTeX において
+TrueType・OpenTypeフォントを容易に扱うためのパッケージであり,このパッケージを読み込んでお
+けばUnicodeによる各種記号の直接入力もできるようになる.
+\LuaTeX-jaでは和文と欧文を区別しているため,\Pkg{fontspec}パッケージの機能は欧文フォントに
+対してのみ有効なものとなっている.
+
+\LuaTeX-ja上において,\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場
+合は\Pkg{luatexja-fontspec}パッケージを読み込む:
\begin{quote}
\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
\end{quote}
-このパッケージ
-は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む.
+このパッケージは自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む.
%</ja>
%<*en>
-In \Pkg{luatexja-fontspec} package, the following seven~commands are defined as
+In the \Pkg{luatexja-fontspec} package, the following seven~commands are defined as
counterparts of original commands in the \Pkg{fontspec} package:
%</en>
%<*ja>
\end{tabular}
\end{center}
%</ja>
-%<*en>
-The package option of \Pkg{luatexja-fontspec} are the followings:
+
+%<en> The package option of \Pkg{luatexja-fontspec} are the followings:
+%<ja> \Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである:
\begin{cslist}
\item[match]
+%<*en>
If this option is specified, usual family-changing commands such as
\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
Note that \emph{\cs{setmonojfont} is defined
if and only if this \texttt{\textup{match}} option is specified}.
-
- \item[pass=<opts>]
-Specify options <opts> which will be passed to the \Pkg{fontspec} package.
-\end{cslist}
-The reason that \cs{setmonojfont} is not defined by default is that
-it is popular for Japanese fonts that nearly all Japanese glyphs have same
-widths. Also note that kerning information in a font is not used
-(that is, \texttt{kern} feature is set off) by default in these seven (or~eight) commands.
-This is because of the compatibility with previous versions of \LuaTeX-ja
-(see \ref{para-kern}).
%</en>
+
%<*ja>
-\Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである:
-\begin{cslist}
- \item[match]
このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
欧文フォントだけでなく和文フォントも変更するようになる.
\emph{なお,\cs{setmonojfont} はこの \texttt{match} オプションが
指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する.
+%</ja>
\item[pass=<opts>]
-\Pkg{fontspec} パッケージに渡すオプション <opts> を指定する.
+%<en> \emph{(Obsoleted)}\ Specify options <opts> which will be passed to the \Pkg{fontspec} package.
+%<ja> \Pkg{fontspec} パッケージに渡すオプション <opts> を指定する.本オプションは時代遅れである.
+
+\item[scale=<float>]
+%<*en>
+Override the ratio of the font size of Japanese fonts to that of alphabetic fonts.
+The default value is calculated automatically (for~example, about~0.924865 when
+ the \Pkg{ltjsarticle} class is used).
+%</en>
+%<*ja>
+欧文に対する和文の比率は,標準では \Pkg{luatexja-fontspec}読み込み時の和欧文比率から
+自動計算される(例えば,\Pkg{ltjsarticle}クラス使用時には和文は欧文の約0.924865倍となる)が,
+それを手動で上書きするときに使用する.
+%</ja>
\end{cslist}
+
+%<*en>
+All other options listed above are simply passed to the \Pkg{fontspec} package.
+This means that two lines below are equivalent, for example.
+%</en>
+%<*ja>
+上記にないオプションは全て \Pkg{fontspec} パッケージに渡される.
+例えば,下の2行は同じ意味になる:
+%</ja>
+\begin{lstlisting}
+\usepackage[no-math]{fontspec}\usepackage{luatexja-fontspec}
+\usepackage[no-math]{luatexja-fontspec}
+\end{lstlisting}
+
+
+%<*en>
+The reason that \cs{setmonojfont} is not defined by default is that
+it is popular for Japanese fonts that nearly all Japanese glyphs have same
+widths. Also note that kerning information in a font is not used
+(that is, \texttt{kern} feature is set off) by default in these seven (or~eight) commands.
+This is because of the compatibility with previous versions of \LuaTeX-ja
+(see \ref{para-kern}).
+
+Below is an example of \cs{jfontspec}.
+%</en>
+%<*ja>
標準で \cs{setmonojfont} コマンドが定義されないのは,
和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる.
また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
言い換えれば \texttt{kern} featureは標準では無効化となっている.
これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照).
+
+以下に\cs{jfontspec}の使用例を示す.
%</ja>
\begin{LTXexample}[width=0.4\textwidth]
-\fontspec[Numbers=OldStyle]{LMSans10-Regular}
\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular}
-JIS~X~0213:2004→辻
-
+JIS~X~0213:2004→辻\par
\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular}
JIS~X~0208:1990→辻
\end{LTXexample}
-%<en>\subsection{Presets}
-%<ja>\subsection{プリセット設定}
+%<en>\subsection{Presets of Japanese fonts}
+%<ja>\subsection{和文フォントのプリセット設定}
\label{ssec-preset}
%<*en>
-To use standard Japanese font settings easily, one can load \Pkg{luatexja-preset}
-package with several options. This package provides functions in a part of
-\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato,
-and loads \Pkg{luatexja-fontspec}, hence \Pkg{fontspec} internally.
+One can load the \Pkg{luatexja-preset}
+package to use several ``presets'' of Japanese fonts.
+This package provides functions in a part of
+\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato.
-If you need to pass some options to \Pkg{fontspec}, load \Pkg{fontspec} manually
-before \Pkg{luatexja-preset}:
+One can specified other options other than listed in this subsection.
+These are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is
+\emph{not} specified; in this case these options are simply ignored.}.
+For example, the line~5 in below example is eqivalent to lines 1--3.
%</en>
%<*ja>
よく使われている和文フォント設定を一行で指定できるようにしたのが
\Pkg{luatexja-preset}パッケージである.このパッケージは,
\Pkg{otf}パッケージの一部機能と八登崇之氏による\Pkg{PXchfon}パッケージの一部機能とを
-合わせたような格好をしており,内部で\Pkg{luatexja-fontspec},従って
-\Pkg{fontspec}を読み込んでいる.
+合わせたような格好をしている.
+
+オプションとして,本節にないものも指定することができるが,それらは
+\Pkg{luatexja-fontspec}パッケージに渡される\footnote{\texttt{nfssonly} オプションが
+指定されていた場合は,\Pkg{luatexja-fontspec}パッケージは読み込まれないので単純に無視され
+る.}.例えば,下の1--3行目は5行目のように一行にまとめることができる.
+%</ja>
+\begin{lstlisting}
+\usepackage[no-math]{fontspec}
+\usepackage[match]{luatexja-fontspec}
+\usepackage[kozuka-pr6n]{luatexja-preset}
+%%--------
+\usepackage[no-math,match,kozuka-pr6n]{luatexja-preset}
+\end{lstlisting}
+
+%<en>\paragraph{General options}
+%<ja>\paragraph{一般的なオプション}
+\begin{cslist}[before*=]
+\item[fontspec%
+%<en>\textrm{~(enabled by default)}
+%<ja>\emph{\gtfamily (既定)}
+]
+%<*en>
+With this option, Japanese fonts are selected using functionality of
+the \Pkg{luatexja-fontspec} package. This means that the \Pkg{fontspec} package is
+ automatically loaded by this package.
+
+If you need to pass some options to \Pkg{fontspec}, you can load \Pkg{fontspec} manually
+before \Pkg{luatexja-preset}:
+%</en>
+%<*ja>
+\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する.
+これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する.
もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある
\footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の
\usepackage[...]{luatexja-preset}
\end{lstlisting}
-%<en>\paragraph{General options}
-%<ja>\paragraph{一般的なオプション}
-\begin{cslist}[before*=]
+\item[nfssonly]
+%<*en>
+With this option, selecting Japanese fonts won't be performed using the functionality of
+ the \Pkg{fontspec} package, but only standard NFSS2 (hence without
+ \cs{addjfontfeatures} etc.).
+This option is ignored when \Pkg{luatexja-fontspec} package is loaded.
+
+When this option is specified, \Pkg{fontspec}~and~\Pkg{luatexja-fontspec} are
+\emph{not} loaded by default. Nevertheless,
+the package\Pkg{fontspec} can coexist with the option, as the following:
+\begin{lstlisting}
+\usepackage{fontspec}
+\usepackage[hiragino-pron,nfssonly]{luatexja-preset}
+\end{lstlisting}
+In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fonts.
+%</en>
+%<*ja>
+\LaTeX 標準のフォント選択機構(NFSS2)を用いて
+\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ
+ ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という
+3つの和文フォントファミリを定義し,これらを用いる.
+
+本オプション指定時には\Pkg{fontspec}・\Pkg{luatexja-fontspec}パッケージは
+自動では読み込まれない,しかし,
+\begin{lstlisting}
+\usepackage{fontspec}
+\usepackage[hiragino-pron,nfssonly]{luatexja-preset}
+\end{lstlisting}
+のようにすれば,このオプションを指定すれば
+欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる.
+一方,
+パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて
+ いる場合は \texttt{nfssonly} オプションは無視される.
+%</ja>
-\item[nodeluxe]
+\item[match]
%<*en>
+If this option is specified, usual family-changing commands such as
+\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
+This option is passed to \Pkg{luatexja-fontspec}, if \texttt{fontspec}
+option is specifed.
+%</en>
+
+%<*ja>
+このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
+\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
+欧文フォントだけでなく和文フォントも変更するようになる.
+\ \texttt{fontspec}\
+オプションが有効になっている場合は,このオプションは \Pkg{luatexja-fontspec} パッケージへと渡される.
+%</ja>
+
+
+\item[nodeluxe%
+%<en>\textrm{~(enabled by default)}
+%<ja>\emph{\gtfamily (既定)}
+]
+%<*en>
+The nagation of \texttt{deluxe} option.
Use one-weighted \textit{mincho} and \textit{gothic} font families.
This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and
\verb+\gtfamily\mdseries+ use the same font.
-\emph{This option is enabled by default.}
%</en>
%<*ja>
-\LaTeXe 環境下での標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する.
+\texttt{deluxe}オプションの否定.
+\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する.
より具体的に言うと,この設定の下では
\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+,
\verb+\gtfamily\mdseries+はみな同じフォントとなる.
-\emph{このオプションは標準で有効になっている.}
%</ja>
\item[deluxe]
%<*en>
because \textit{rounded gothic} is called \textit{maru gothic} (丸ゴシック) in Japanese.}.
The heavy weight of \textit{gothic} can be used by ``changing the family'' \cs{gtebfamily},
or \verb+\textgteb{...}+.
-This is because \Pkg{fontspec} package can handle only medium (\cs{mdseries}) and
+This is because the \Pkg{fontspec} package can handle only medium (\cs{mdseries}) and
bold (\cs{bfseries}).
%</en>
%<*ja>
明朝体2ウェイト・ゴシック体3ウェイトと,
丸ゴシック体 (\cs{mgfamily}, \verb+\textmg{...}+) を使用可能とする.
-ゴシック体は細字・太字・極太の3ウェイトがあるが,
-極太ゴシック体はファミリの切り替え (\cs{gtebfamily}, \verb+\textgteb{...}+) %
-で実現している.\Pkg{fontspec}では通常 (\cs{mdseries}) と太字 (\cs{bfseries}) しか扱えないために
-このような中途半端な実装になっている.
+ゴシック体は中字・太字・極太の3ウェイトがあるが,
+極太ゴシック体を使う場合,
+\begin{itemize}
+ \item \cs{gtebfamily}, \verb+\textgteb{...}+
+ \item \cs{ebseries} (周囲がゴシック体のとき,\texttt{nfssonly} オプション指定時のみ)
+\end{itemize}
+のいずれかを用いる.標準で \cs{ebseries} が準備されていないのは,バージョンが古い
+\Pkg{fontspec}では中字(\cs{mdseries})と太字(\cs{bfseries})しか扱えなかった名残である.
%</ja>
\item[expert]
%<*en>
Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana
characters designed for ruby.
%</en>
-%<ja>横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる.
+%<*ja>
+横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{%
+ \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では
+ font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え).
+}.
+%</ja>
\item[bold]
-%<en>Substitute bold series of \textit{gothic} for bold series of \textit{mincho}.
-%<ja>「明朝の太字」をゴシック体の太字によって代替する.
+%<*en>
+Substitute bold series of \textit{gothic} for bold series of \textit{mincho}.
+If \texttt{nodeluxe} option is enabled, medium series of \textit{gothic} is also changed,
+since we use same font for both series of \textit{gothic}.
+%</en>
+%<*ja>
+「明朝の太字」をゴシック体の太字によって代替する.
+もし\texttt{nodeluxe}オプションが指定されている場合は,ゴシック体は1ウェイトしか使用されな
+ いため,
+「ゴシック体の中字」も同時に変更されることになる.
+%</ja>
\item[90jis]
%<en>Use 90JIS glyph variants if possible.
%<ja>出来る限り90JISの字形を使う.
用いるJFMを(JISフォントメトリック類似の)\texttt{jfm-jis.lua}にする.このオプションがない時は
\LuaTeX-ja標準の\texttt{jfm-ujis.lua}が用いられる.
%</ja>
+
\end{cslist}
%<*en>
Note that \texttt{90jis} and \texttt{jis2004} only affect with \textit{mincho},
%</en>
%<*ja>
\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された
-明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.両オプションが
-同時に指定された場合の動作については全く考慮していない.
+明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.
+両オプションが同時に指定された場合の動作については全く考慮していない.
%</ja>
%<en>\paragraph{Presets for multi weight}
%<*en>
Besides \texttt{morisawa-pro}~and~\texttt{morisawa-pr6n} presets,
fonts are specified by font name, not by file name.
+In following tables, starred fonts (e.g.~KozGo\dots-Regular) are used for medium series of \textit{gothic},
+\emph{if and only if \texttt{deluxe} option is specified}.
%</en>
%<*ja>
\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は
(ファイル名でなく)フォント名で行われる.
+以下の表において,*\,つきのフォント(e,g,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に}
+ゴシック体中字として用いられるものを示している.
%</ja>
\begin{cslist}[style=standard]
\item[kozuka-pro] Kozuka Pro (Adobe-Japan1-4) fonts.
\end{tabular}
\end{center}
-%<*en>
-In above table, starred fonts (KozGo\dots-Regular) are used for medium series of \textit{gothic},
-\emph{if and only if \texttt{deluxe} option is specified}.
-%</en>
-%<*ja>
-上の表において,*つきのフォント(KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション非指定時に}
-ゴシック体細字として用いられる.
-%</ja>
-
-%<ja>\medskip
-
\item[hiragino-pro] Hiragino Pro (Adobe-Japan1-5) fonts.
%<en> \\*[-\dimexpr\medskipamount+\baselineskip\relax]
\item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts.
\midrule
%<en>\textit{rounded gothic}
%<ja>\gt 丸ゴシック
-&&Hiragino~Maru~Gothic~ProN~W4&Hiragino~Maru~Gothic~ProN~W4\\
+&&Hiragino~Maru~Gothic~Pro~W4&Hiragino~Maru~Gothic~ProN~W4\\
\bottomrule
\end{tabular}
\end{center}
\end{tabular}
\end{center}
+%<en>\newpage
+\item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic.
+%<en>These fonts can be downloaded from\\\hfill \url{http://yozvox.web.fc2.com/}.
+%<ja>これらのフォントは \url{http://yozvox.web.fc2.com/} からダウンロードできる.
+
+\begin{center}\small
+\begin{tabular}{clll}
+\toprule
+\bf family&\bf series&\bf default, \texttt{90jis}~option&\bf \texttt{jis2004} option\\
+\midrule
+ &medium&Moga90Mincho&MogaMincho\\
+%<en>\smash{\raisebox{1.5ex}{\textit{mincho}}}%
+%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
+ &bold&Moga90Mincho Bold&MogaMincho Bold\\
+\midrule
+ &&Moga90Gothic*&MogaGothic*\\
+ &\smash{\raisebox{1.5ex}{medium}}
+ &Moga90Gothic Bold&MogaGothic Bold\\
+\cmidrule(l){2-4}
+%<en>\textit{gothic}%
+%<ja>\gt ゴシック
+ &bold&Moga90Gothic Bold&MogaGothic Bold\\
+ &heavy&Moga90Gothic Bold&MogaGothic Bold\\
+\midrule
+%<en>\textit{rounded gothic}
+%<ja>\gt 丸ゴシック
+&&Mobo90Gothic&MoboGothic\\
+\bottomrule
+\end{tabular}
+\end{center}
+
+
\end{cslist}
%<en>\paragraph{Presets for single weight}
%<ja>\paragraph{単ウェイト用プリセット一覧}
%<*en>
Next, we describe settings for using only single weight.
-In four settings below, we use same fonts for medium and bold (and heavy) weights.
-(Hence \verb+\mcfamily\bfseries+ and \verb+\mcfamily\mdseries+ yields same Japanese fonts,
-even if \texttt{deluxe} option is also specified).
%</en>
%<*ja>
-次に,単ウェイト用の設定を述べる.この4設定では「細字」「太字」の区別はない.
-また,丸ゴシック体はゴシック体と同じフォントを用いる.
+次に,単ウェイト用の設定を述べる.この4設定では
+明朝体太字・丸ゴシック体はゴシック体と同じフォントが用いられる.
%</ja>
\par\nobreak\medskip
{\centering\small
\multicolumn{3}{c}{HG Maru Gothic PRO}\\
%</en>
%<*ja>
-\gtfamily 明朝体細字
+\gtfamily 明朝体中字
&IPA明朝&IPAex明朝&MS明朝\\\midrule
\gtfamily 明朝体太字&
\multicolumn{3}{c}{HG明朝E}\\\midrule
-\gtfamily ゴシック体細字\\
+\gtfamily ゴシック体中字\\
単ウェイト時
&IPAゴシック&IPAexゴシック&MSゴシック\\
{\tt jis2004}指定時
\end{description}
%</en>
%<*ja>
-\newpage
なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で
\begin{description}
\item[標準] フォント名(\texttt{HGMinchoE} など)
Under \pLaTeX, \Pkg{japanese-otf} package (developed by Shuzaburo Saito) is
used for typesetting characters which is in Adobe-Japan1-6 CID but not
in JIS~X~0208. Since this package is widely used, \LuaTeX-ja
-supports some of functions in \Pkg{japanese-otf} package.
-If you want to use these functions, load \Pkg{luatexja-otf} package.
+supports some of functions in the \Pkg{japanese-otf} package,
+as an external package \Pkg{luatexja-otf}.
%</en>
%<*ja>
\subsection{\cs{CID}, \cs{UTF}と\Pkg{otf}パッケージのマクロ}
\pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために,
齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは
広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の
-一部をサポートしている.これらの機能を用いるためには\Pkg{luatexja-otf}パッケージ
-を読み込めばよい.
+一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した.
%</ja>
\begin{LTXexample}
%<*ja>
\Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した:
\begin{cslist}
-\item[deluxe] 明朝体・ゴシック体各2ウェイトと,丸ゴシック体を扱えるようになる.
+\item[deluxe] 明朝体・ゴシック体各3ウェイトと,丸ゴシック体を扱えるようになる.
\item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も
\ \cs{rubyfamily}\ によって扱えるようになる.
\item[bold] ゴシック体を標準で太いウェイトのものに設定する.
%</ja>
-%<en>\section{Changing Parameters}
+%<en>\section{Changing Internal Parameters}
%<ja>\section{パラメータの変更}
%<*en>
-There are many parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX,
+There are many internal parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX,
most of them are not stored as internal register of \TeX, but as an
original storage system in \LuaTeX-ja. Hence, to assign or acquire those
parameters, you have to use commands \cs{ltjsetparameter} and
用いる.
%</ja>
-%<en>\subsection{Editing the Range of \textbf{JAchar}s}
-%<ja>\subsection{\textbf{JAchar}の範囲の設定}
+%<en>\subsection{Range of \textbf{JAchar}s}
+%<ja>\subsection{\textbf{JAchar}の範囲}
\label{ssec-setrange}
%<*en>
\begin{lstlisting}
\ltjdefcharrange{100}{"20000-"2FFFF,`漢}
\end{lstlisting}
+
%<*en>
A character can belong to only one character range.
For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja,
%</en>
%<*ja>
各文字はただ一つの文字範囲に所属することができる.
-例えば,SIPは全て\LuaTeX-jaのデフォルトでは4番の文字範囲に
-属しているが,上記の指定を行えばSIPは100番に属すようになり,4番からは除かれる.
+例えば,SIP内の文字は全て\LuaTeX-jaのデフォルトでは4番の文字範囲に
+属しているが,上記の指定を行えばSIP内の文字は100番に属すようになり,4番からは除かれる.
%</ja>
%<*en>
-The distinction between \textbf{ALchar} and \textbf{JAchar} is done for character ranges.
+The distinction between \textbf{ALchar} and \textbf{JAchar} is performed by character ranges.
This can be edited by setting the \textsf{jacharrange} parameter.
-For example, this is just the default setting of \LuaTeX-ja, and
+For example, the code below is just the default setting of \LuaTeX-ja, and
it sets
\begin{itemize}
- \item a character which belongs character ranges 1,~4, and~5 is \textbf{ALchar},
- \item a character which belongs character ranges 2,~3, 6, 7, and~8 is \textbf{JAchar}.
+ \item a character which belongs character ranges 1,~4, 5, and~8 is \textbf{ALchar},
+ \item a character which belongs character ranges 2,~3, 6, and~7 is \textbf{JAchar}.
\end{itemize}
%</en>
%<*ja>
これは\textsf{jacharrange}パラメータによって編集できる.
例えば,以下は\LuaTeX-jaの初期設定であり,次の内容を設定している:
\begin{itemize}
- \item 1番,4番,5番の文字範囲に属する文字は\textbf{ALchar}.
- \item 2番,3番,6番,7番,8番の文字範囲に属する文字は\textbf{JAchar}.
+ \item 1番,4番,5番,8番の文字範囲に属する文字は\textbf{ALchar}.
+ \item 2番,3番,6番,7番の文字範囲に属する文字は\textbf{JAchar}.
\end{itemize}
%</ja>
\begin{lstlisting}
-\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, +8}}
+\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}}
\end{lstlisting}
%<*en>
The argument to \textsf{jacharrange} parameter is a list of non-zero integer.
%</ja>
%<*en>
-\paragraph{Default setting}
+Note that characters \texttt{U+0000}--\texttt{U+007F} are always treated as an
+\textbf{ALchar} (this cannot be customized).
+%</en>
+%<*ja>
+なお,\texttt{U+0000}--\texttt{U+007F} は常に\textbf{ALchar}として扱われる(利用者が変更す
+ることは出来ない).
+%</ja>
+
+%<*en>
+\paragraph{Default character ranges}
\LuaTeX-ja predefines eight character ranges for convenience. They are
determined from the following data:
%</en>
%<*ja>
-\paragraph{初期設定}
+\paragraph{文字範囲の初期値}
\LuaTeX-jaでは8つの文字範囲を予め定義しており,
これらは以下のデータに基づいて決定している.
%</ja>
number shows whether each character in the range is treated as
\textbf{JAchar}s or not by default. These settings are similar to the
\texttt{prefercjk} settings defined in \texttt{PXbase} bundle.
-Any characters above \texttt{U+0080} which does not belong to
+Any characters equal to or above \texttt{U+0080} which does not belong to
these eight ranges belongs to the character range~217.
%</en>
%<*ja>
以下ではこれら8つの文字範囲について記述する.添字のアルファベット「J」「A」
-は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの設定は
-\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものである.
+は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの初期設定は
+\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものであるが,
+8ビットフォント使用時のトラブルを防ぐために \texttt{U+0080}--\texttt{U+00FF} の文字は全部
+\textbf{ALchar}としている.
なお,\texttt{U+0080} 以降でこれら8つの文字範囲に属さない文字は,217番の文字範囲に属することになっている.
%</ja>
\begin{description}
%<*en>
-\item[Range~8${}^{\text{J}}$] The intersection of the upper half of ISO~8859-1
+\item[Range~8${}^{\text{A}}$] The intersection of the upper half of ISO~8859-1
(Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range
consists of the following characters:
%</en>
%<*ja>
-\item[範囲8${}^{\text{J}}$] ISO~8859-1の上位領域(ラテン1補助)と
+\item[範囲8${}^{\text{A}}$] ISO~8859-1の上位領域(ラテン1補助)と
JIS~X~0208の共通部分.この文字範囲は
以下の文字で構成される:
%</ja>
\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B
\item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions
\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters
-\item \texttt{U+0300}--\texttt{U+036F}: \\\null\hfill Combining Diacritical Marks
-\item \texttt{U+1E00}--\texttt{U+1EFF}: \\\null\hfill Latin Extended Additional
-\par\
+%<en>\par\
+\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks
+\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional
+%<ja>\par\
\end{itemize}
\end{multicols}
%<*en>
-\item[Range~2${}^{\text{J}}$] Greek and Cyrillic letters. JIS~X~0208 (hence most of Japanese
+\item[Range~2${}^{\text{\kern.1emJ}}$] Greek and Cyrillic letters. JIS~X~0208 (hence most of Japanese
fonts) has some of these characters.
%</en>
%<*ja>
-\item[範囲2${}^{\text{J}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの
- å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ï¼\89ã\81¯ã\81\93ã\82\8cã\82\89ã\81®æ\96\87å\97ã\82\92æ\8c\81ã\81¤.
+\item[範囲2${}^{\text{\kern.1emJ}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの
+ å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ï¼\89ã\81«ã\81¯ï¼\8cã\81\93ã\82\8cã\82\89ã\81®æ\96\87å\97ã\81®ä¸\80é\83¨ã\81\8cå\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8b.
%</ja>
\begin{multicols}{2}
\begin{itemize}
\end{itemize}
\end{multicols}
%<*en>
-\item[Range~3${}^{\text{J}}$] Punctuations and Miscellaneous symbols. The block list is
+\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is
indicated in Table~\ref{table-rng3}.
%</en>
%<*ja>
-\item[範囲3${}^{\text{J}}$] 句読点と記号類.ブロックのリストは表\ref{table-rng3}%
+\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは表\ref{table-rng3}%
に示してある.
%</ja>
\begin{table}[!tb]
\end{lstlisting}
%<en>\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
%<ja>\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域.
-%<en>\item[Range~6${}^{\text{J}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}.
-%<ja>\item[範囲6${}^{\text{J}}$] 日本語で用いられる文字.ブロックのリストは表\ref{table-rng6}に示す.
+%<en>\item[Range~6${}^{\text{\kern.1emJ}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}.
+%<ja>\item[範囲6${}^{\text{\kern.1emJ}}$] 日本語で用いられる文字.ブロックのリストは表\ref{table-rng6}に示す.
\begin{table}[!tb]
%<en>\caption{Unicode blocks in predefined character range~6.}\medskip
%<ja>\caption{文字範囲6に指定されているUnicodeブロック.}
\end{tabular}
\end{table}
%<*en>
-\item[Range~7${}^{\text{J}}$] Characters used in CJK languages, but not included in Adobe-Japan1-6.
+\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in Adobe-Japan1-6.
The block list is indicated in Table~\ref{table-rng7}.
%</en>
%<*ja>
-\item[範囲7${}^{\text{J}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に
+\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に
含まれていないもの.
ブロックのリストは表\ref{table-rng7}に示す.
%</ja>
\end{table}
\end{description}
+%<*en>
+\paragraph{Notes on \texttt{U+0080}--\texttt{U+00FF}}
+You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar},
+when you use traditional 8-bit fonts, such as the \Pkg{textcomp} package or the
+\Pkg{marvosym} package.
+
+For example, the codepoint \cs{textparagraph} which is provided by the \Pkg{textcomp}
+package is 182. This codepoint corresponds \P\ (\text{U+00B6}) in Unicode.
+Similarly, \cs{Frowny} which is provided by the \Pkg{marvosym} package has
+the same codepoint as \S\ (\text{U+00A7}).
+Hence, as previous versions of \LuaTeX-ja, if these characters are treated as
+\text{JAchar}s, then \cs{textparagraph} produces ``ltjjachar`¶'' (in a Japanese font),
+and \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font).
+
+To avoid such situations, the default setting of \LuaTeX-ja is changed in this release
+so that all characters \texttt{U+0080}--\texttt{U+00FF} are treated as \textbf{ALchar}.
+
+If you want to output a character as \textbf{ALchar} and \textbf{JAchar} regardless the range
+setting, you can use \cs{ltjalchar} and \cs{ltjjachar} respectively, as the following example.
+\begin{LTXexample}[width=0.3\textwidth]
+\gtfamily\large % default, ALchar, JAchar
+¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar
+α, \ltjalchar`α, \ltjjachar`α % default: JAchar
+\end{LTXexample}
+%</en>
+%<*ja>
+\paragraph{\texttt{U+0080}--\texttt{U+00FF}についての注意}
+\LuaTeX-jaで,\Pkg{textcomp}パッケージや\Pkg{marvosym}パッケージ等,Unicodeフォントでなく
+伝統的な8ビットフォントを用いる場合には注意が必要である.
+
+例えば,\Pkg{textcomp}パッケージの提供する \cs{textparagraph} は,
+符号位置が182,つまり \texttt{0xB6} であり,Unicodeではこの符号位置では\P\ (\text{U+00B6}) に対応する.
+また,\Pkg{marvosym}パッケージの提供する \cs{Frowny} も,符号位置は167,つまりUnicodeにおける
+\S\ (\text{U+00A7}) と同じ符号位置にある.
+即ち,以前のバージョンのように,「前節の文字範囲8内の文字は\textbf{JAchar}」という設定で
+あったとすると,上記の \cs{textparagraph} は和文フォントで「\ltjjachar`¶」を出力し,
+また \cs{Frowny} は和文フォントで「\ltjjachar`§」を出力することになる.
+
+このような事態を避けるために,本バージョンからは \texttt{U+0080}--\texttt{U+00FF} の範囲の
+文字は全て\textbf{ALchar}となるように初期設定を変更している.
+特に影響を受けるのが,JIS~X~0208の一部分である文字範囲8内の文字であり,
+\emph{\Pkg{fontspec}パッケージを読み込んだりして欧文記号としてこれらの文字の出力環境を整え
+ないと,ソース中に直接記述しても出力されない}ことになる.
+
+なお,文字範囲の設定に関わらず1つの文字を\textbf{ALchar}, \textbf{JAchar}で出力したい場合には,
+以下の例のようにそれぞれ \cs{ltjalchar},~\cs{ltjjachar} に該当文字の文字コードを渡せばよい.
+\begin{LTXexample}[width=0.3\textwidth]
+\gtfamily\large % default, ALchar, JAchar
+¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar
+α, \ltjalchar`α, \ltjjachar`α % default: JAchar
+\end{LTXexample}
+%</ja>
+
%<en>\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
%<ja>\subsection{\Param{kanjiskip}と\Param{xkanjiskip}}
\label{subs-kskip}
\begin{itemize}
%<*en>
\item Glues/kerns specified in JFM. If \cs{inhibitglue} is issued
- around a Japanese character, this glue will not be inserted at the
+ around a \textbf{JAchar}, this glue will not be inserted at the
place.
%</en>
%<*ja>
-\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が和文文字の周りで
+\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が\textbf{JAchar}の周りで
発行されていれば,このグルーは挿入されない.
%</ja>
%<*en>
\cs{ltjgetparameter} によって取得することはできないので注意が必要である.
%</ja>
-%<en>\subsection{Insertion Setting of \Param{xkanjiskip}}
+%<en>\subsection{Insertion setting of \Param{xkanjiskip}}
%<ja>\subsection{\Param{xkanjiskip} の挿入設定}
%<*en>
%</en>
%<*ja>
和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が
-必要になる.\pTeX ではこれは \cs{ybaselineshift} を設定することで
+必要になる.\pTeX ではこれは \cs{ybaselineshift}(または\cs{tbaselineshift})を設定することで
なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない
文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい.
このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量
下の例において引かれている水平線がベースラインである.
%</ja>
\begin{LTXexample}
-\vrule width 150pt height 0.4pt depth 0pt \hskip-120pt
+\vrule width 150pt height 0.2pt depth 0.2pt \hskip-120pt
\ltjsetparameter{yjabaselineshift=0pt, yalbaselineshift=0pt}abcあいう
\ltjsetparameter{yjabaselineshift=5pt, yalbaselineshift=2pt}abcあいう
\end{LTXexample}
異なる文字を中心線に揃えることができる.
以下は一つの例である(値はあまり調整されていないことに注意):
%</ja>
-\begin{LTXexample}
-xyz漢字
+\begin{LTXexample}[width=0.4\textwidth]
+\vrule width 150pt height4.417pt depth-4.217pt%
+\kern-150pt
+\large xyz漢字
{\scriptsize
- \ltjsetparameter{yjabaselineshift=-1pt,
- yalbaselineshift=-1pt}
- XYZひらがな
-}abcかな
+ \ltjsetparameter{yjabaselineshift=-1.757pt,
+ yalbaselineshift=-1.757pt}
+ 漢字xyzあいう
+}あいうabc
\end{LTXexample}
%<*en>
Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift}
-parameters does not increase the depth of one-letter ``syllable'' $p$ of \textbf{Alchar}, if
+parameters does not increase the depth of one-letter \emph{syllable} $p$ of \textbf{Alchar}, if
its left-protrusion~(\cs{lpcode}) and right-protrusion~(\cs{rpcode}) are both non-zero.
This is because
\begin{itemize}
-\item These two parameters are implemented by setting yoffset field of a
+\item These two parameters are implemented by setting \texttt{yoffset} field of a
glyph node, and this does not increase the depth of the glyph.
\item To cope with the above situation, \LuaTeX-ja automatically supplies
-a rule in every ``syllable''.
-\item However, we cannot use this ``supplying a rule'' method if \dots
+a rule in every syllable.
+\item However, we cannot use this ``supplying a rule'' method if a syllable comprises just
+ one letter whose \cs{lpcode}~and~\cs{rpcode} are both non-zero.
\end{itemize}
-This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift}.
+This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift},
+becuse a \emph{JAchar} is encapsulated by a horizontal box if needed.
%</en>
%<*ja>
なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意.
\item 「音節」を構成する唯一の文字$p$の
左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である.
\end{itemize}
+\emph{JAchar}は必要に応じて1文字ずつボックスにカプセル化されるため,
\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない.
%</ja>
数式中の挙動は異なっているので注意が必要である.
例えば,表\ref{tab:math_bsa}のように,数式中に明示的に現れた \cs{hbox} は,
\begin{itemize}
- \item \pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので,
+ \item 2015年以前の\pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので,
表\ref{tab:math_bsa}中の``い''のように,ボックス中の和文文字は
\ \cs{ybaselineshift} だけシフトされ,一方,``for all''のように,
ボックス内の欧文文字は2重にシフトされることになる.
数式中に明示的に現れた \cs{hbox} はシフトしない.そのため,
表\ref{tab:math_bsa}中の``い''も``for all''も,それぞれ本文中に
書かれたときと同じ上下位置に組まれる.
+
+ なお,\TeX~Live~2016以降の\pTeX では改修がなされ,\LuaTeX-jaと
+ 近い挙動になるようにしているが,数式中に直に書かれた``あ''のベースラインについては
+ まだ違いが見られる.
\end{itemize}
\begin{table}
\small\centering
\toprule
\emph{入力}&\vspace*{\dimexpr-\origbaselineskip-\smallskipamount}
\begin{lstlisting}
-数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2\!/2$,
+数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
\end{lstlisting}\\
\noalign{\vskip-\origbaselineskip}
\midrule
-\emph{\pTeX}&
+\emph{\pTeX~(--2015)}&
{\ltjsetparameter{yalbaselineshift=10pt}%
-数式abc: $あa\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2\!/2$,
+数式abc: $\lower10pt\hbox{あ}a\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
$\Phi\vdash F(x)\ \lower10pt\hbox{for all}\ x\in A$
-\par}\\
-\midrule
+\par}\\\noalign{\vskip-\origbaselineskip}\midrule
+\emph{\pTeX~(2016--)}&
+{\ltjsetparameter{yalbaselineshift=10pt}%
+数式abc: $\lower10pt\hbox{あ}a\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
+$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
+\par}\\\noalign{\vskip-\origbaselineskip}\midrule
\emph{\LuaTeX-ja}&
{\ltjsetparameter{yalbaselineshift=10pt}%
-数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2\!/2$,
+数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
\par}\\
\noalign{\vskip-\origbaselineskip}
\end{table}
%</ja>
+%<*en>
+\subsection{\emph{kinsoku} parameters and OpenType features}
+Among parameters which related to Japanese word-wrapping process (\emph{kinsoku shori}),
+\begin{quote}
+ \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
+ \Param{postbreakpenalty}~and~\Param{kcatcode}
+\end{quote}
+are stored by each character codes.
+
+OpenType font features are ignored in these parameters.
+For example, a fullwidth katakana ``ア'' on line~10 in the below input is replaced to
+its halfwidth variant ``ア'', by \verb+hwid+ feature.
+However, the penalty inserted after it is 10 which is the \Param{postbreakpenalty} of
+``ア'', not 20.
+%</en>
+%<*ja>
+\subsection{禁則処理関連パラメータとOpenTypeのfont feature}
+禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち
+\begin{quote}
+ \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
+ \Param{postbreakpenalty}, \Param{kcatcode}
+\end{quote}
+は,文字コードごとに設定する量である.
+
+\Pkg{fontspec}パッケージを使う(\ref{ssec-fontspec}節)場合など,
+各種のOpenType featureを適用することもあると思うが,前段落に述べたパラメータ類は,
+\emph{OpenType featureの適用前の文字コードによって適用される.}
+例えば,以下の例において10行目の「ア」は,\verb+hwid+ featureの適用により半角カタカナの「ア」
+に置き換わる.しかし,その直後に挿入される \Param{postbreakpenalty}は,置換前の「ア」に対する値10である.
+%</ja>
+
+\begin{LTXexample}[width=0.2\textwidth]
+\ltjsetparameter{postbreakpenalty={`ア, 10}}
+\ltjsetparameter{postbreakpenalty={`ア, 20}}
+
+\newcommand\showpostpena[1]{%
+ \leavevmode\setbox0=\hbox{#1\hbox{}}%
+ \unhbox0\setbox0=\lastbox\the\lastpenalty}
+
+\showpostpena{ア},
+\showpostpena{ア},
+{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ア}}
+\end{LTXexample}
+
\clearpage
%<en>\part{Reference}
%<ja>\part{リファレンス}
%<*en>
\bfseries meaning&
\bfseries control word&
-\bfseries widow penalty\hbox{}$^*$&
+\bfseries widow penalty&
\bfseries linebreak\\
%</en>
%<*ja>
\bfseries 意図&
\bfseries 制御綴中に使用&
-\bfseries 文字ウィドウ処理\hbox{}$^*$&
+\bfseries 文字ウィドウ処理&
\bfseries 直後での改行\\
%</ja>
\midrule
\medskip
%<*ja>
-文字ウィドウ処理\hbox{}$^*$: 「漢字が一文字だけ次の行に行くのを防ぐ」\
+文字ウィドウ処理:「漢字が一文字だけ次の行に行くのを防ぐ」
\cs{jcharwidowpenalty} が,
その文字の直前に挿入されうるか否か,を示す.
%</ja>
\begin{itemize}
\item
\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}}
-is controlled by using 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.
\emph{Whether \Param{jcharwidowpenalty} can be inserted before the character}
is controlled by the lowermost bit of the \Param{kcatcode} parameter.
\item
-\emph{Ignoring linebreak after a \textbf{JAchar}} is always ignored.
+\emph{Linebreak after a \textbf{JAchar}} does not produce a space.
\end{itemize}
%</en>
%<*ja>
\LuaTeX 自身の \cs{catcode} でよい
\item[\Param{jcharwidowpenalty}が挿入可か]
\Param{kcatcode}パラメータの最下位ビット
- \item[直後の改行の無視]
-日本語しか想定していないので\textbf{JAchar}については一律有効
+ \item[直後の改行]
+日本語しか想定していないので,\textbf{JAchar}直後の改行で半角スペースが挿入されることはない.
\end{description}
%</ja>
%<*en>
-Default setting of \cs{catcode} of \LuaTeX\ can be found
-in \texttt{luatex-unicode-letters.tex},
-which is based on \texttt{unicode-letters.tex} (for \XeTeX).
+Default setting of \cs{catcode} of Unicode characters are located in
+\begin{description}
+ \item[plain \LuaTeX] \texttt{luatex-unicode-letters.tex}, which is based on \texttt{unicode-letters.tex}
+(for \XeTeX).
+ \item[\LuaLaTeX] now included in \LaTeX\ kernel as~\texttt{unicode-letters.def}.
+\end{description}
However, the default setting of \cs{catcode} differs
between \XeTeX\ and \LuaTeX, by the following reasons:
\begin{itemize}
- \item \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}.
- \item The latter half of \texttt{unicode-letters.tex} sets
-\cs{catcode} of Kanji and kana characters to 11,
-via setting \cs{XeTeXcharclass}.
-
-However, this latter half is simply omitted in
-\texttt{luatex-unicode-letters.tex}, hence
-\cs{catcode} of Kanji and kana characters remains 12 in \LuaTeX.
+ \item (plain format) \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}.
+ \item The latter half of \texttt{unicode-letters.tex}~and~\texttt{unicode-letters.def}
+sets\cs{catcode} of several characters to 11, via setting \cs{XeTeXcharclass}.
+However, this latter half does not exist (plain case), or not executed (\LaTeX~case) in \LuaTeX.
\end{itemize}
-In other words, Kanji nor kana characters cannot be used in
-a control word, in the default setting of \LuaTeX.
+In other words,
+\begin{description}
+\item[plain \LuaTeX]
+Kanji nor kana characters cannot be used in
+a control word, in the default setting of plain \LuaTeX.
+\item[\LuaLaTeX]
+In recent (2015-10-01 or later) \LuaLaTeX, Kanji and kana characters in a control word is supported (these catcode are 11),
+but not fullwidth alphanumerics and several other characters.
+\end{description}
This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja,
-since several control words containing Kanji, such as \verb+\西暦+,
-are used in \pTeX.
+since several control words containing Kanji or other fullwidth characters, such as
+\verb+\西暦+~or~\verb+\1年目西暦+ are used in \pTeX.
Hence, \LuaTeX-ja have a counterpart of \texttt{unicode-letters.tex}
for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.}
%</en>
%<*ja>
ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では,
文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode}
-で指定することとなる.\XeTeX における \cs{catcode} の初期設定は\
-\texttt{unicode-letters.tex} 中に記述されており,\LuaTeX ではそれを
+で指定することとなる.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} の初期設定と
\LuaTeX におけるそれは一致していない:
\begin{itemize}
\item \texttt{luatex-unicode-letters.tex} の元になった\
\texttt{unicode-letters.tex} が古い
- \item \texttt{unicode-letters.tex} の後半部では
+ \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では
\cs{XeTeXcharclass} の設定を行なっており,
-それによって漢字や仮名の \cs{catcode} が11に設定されている.
-
+それによって漢字や仮名,および全角英数字の \cs{catcode} が11に設定されている.
しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が
-まるごと省略されており,漢字や仮名の \cs{catcode} は12のまま.
+まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな
+ い.
\end{itemize}
-言い換えると,\LuaTeX の初期状態では漢字や仮名を制御綴内に
+言い換えると,
+\begin{description}
+ \item[plain \LuaTeX] 漢字や仮名を制御綴内に
使用することはできない.
-
-これでは \pTeX で使用できた \verb+\西暦+ などが使えないこととなり,
+ \item[\LuaLaTeX] 最近の(2015-10-01以降の)
+\LuaLaTeX では漢字や仮名を制御綴内に
+使用することが可能になったが,全角英数字は相変わらず使用できない,
+\end{description}
+これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり,
\LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは
\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし,
結果として\textbf{\XeTeX における初期設定と同じになるようにしている.}
%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
\midrule
-\D 3000&1&1&N&N&Y\\
+%\D 3000&1&1&N&N&Y\\
\D 30FB&1&6&N&Y&N\\
\D 309B&1&11&N&Y&N\\
\D 309C&1&12&N&Y&N\\
\D FF3E&1&16&N&N&Y\\
\D FFE3&1&17&N&N&Y\\
\D FF3F&1&18&N&N&Y\\
-\D 30FD&1&19&N&Y&Y\\
-\D 30FE&1&20&N&Y&Y\\
-\D 309D&1&21&N&Y&Y\\
-\D 309E&1&22&N&Y&Y\\
+%\D 30FD&1&19&N&Y&Y\\
+%\D 30FE&1&20&N&Y&Y\\
+%\D 309D&1&21&N&Y&Y\\
+%\D 309E&1&22&N&Y&Y\\
\D 3003&1&23&N&N&Y\\
\D 4EDD&1&24&N&Y&Y\\
\D 3005&1&25&N&N&Y\\
\D 3006&1&26&N&N&Y\\
\D 3007&1&27&N&N&Y\\
\D 30FC&1&28&N&Y&Y\\
+\D FF0F&1&31&N&N&Y\\
+\D FF3C&1&32&N&N&Y\\
\bottomrule
\end{tabular}\qquad
\begin{tabular}{cccccc}
%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
\midrule
-\D FF0F&1&31&N&N&Y\\
-\D FF3C&1&32&N&N&Y\\
\D FF5C&1&35&N&N&Y\\
\D FF0B&1&60&N&N&Y\\
\D FF1D&1&65&N&N&Y\\
%<en>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Cyrillic letters (row 7)}&N&N&Y\\
%<ja>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}ギリシャ文字(6区)}&Y&N&Y\\
%<ja>\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}キリル文字(7区)}&N&N&Y\\
-$\vphantom{\D 3000}$\\
\bottomrule
\end{tabular}\hss}\par
\end{table}
%<*en>
-\subsection{Non-kanji Characters in a Control Word}
+\subsection{Non-kanji characters in a control word}
Because the engine differ, so non-kanji JIS~X~0208 characters
which can be used in a control word differ in \pTeX, in \upTeX,~and~in \LuaTeX-ja.
Table~\ref{table-kcat-diff} shows the difference.
Except for four characters ``・'',~``゛'', ``゜'',~``゠'',
\LuaTeX-ja admits more characters in a control word than \upTeX.
-\emph{Note that the ideographic space~\texttt{U+3000} can be used
-in a control word in \LuaTeX-ja.}
Difference becomes larger, if we consider
non-kanji JIS~X~0213 characters.
異なっているところだけを載せると,表\ref{table-kcat-diff}のようになる.
「・」「゛」「゜」「゠」を除けば,\LuaTeX-jaでは\upTeX より多くの文字が
制御綴に使用可能になっている.
-\textbf{特に重要なのは,全角空白(\texttt{U+3000})が
-\LuaTeX-jaでは制御綴中に使用可能であることである.}
JIS~X~0213の範囲に広げると,差異はさらに大きくなる.
詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\
-\texttt{kct-uni-out.pdf} などを参照すること.
+\texttt{kct-out.pdf} などを参照すること.
%</ja>
%<*ja>
\begin{tabular}{>{\bfseries}lcccc}
\toprule
-&横組&縦組 &\cs{dtou}「dtou方向」&「utod方向」\\
+&横組&縦組 &「dtou方向」&「utod方向」\\
\midrule
命令&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\
字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\
\put(0,0){\vector(1,0){5}} \put(2.5,-0.2){\makebox(0,0)[t]{$h_{\mathrm{T}}$}}
\put(0,0){\vector(-1,0){2}}\put(-1,-0.2){\makebox(0,0)[t]{$d_{\mathrm{T}}$}}
\put(0,0){\vector(0,-1){7}}\put(0.2,-3.5){\makebox(0,0)[l]{$w_{\mathrm{T}}$}}
- \end{picture}}}
+ \end{picture}}}%
}
\def\DTOUeg{%
\hbox{\smash{\begin{picture}(0,0)(-5,0)
\put(0,0){\vector(-1,0){5}} \put(-2.5,0.3){\makebox(0,0)[b]{$h_{\mathrm{D}}$}}
\put(0,0){\vector(1,0){2}}\put(1,0.3){\makebox(0,0)[b]{$d_{\mathrm{D}}$}}
\put(0,0){\vector(0,1){7}}\put(-0.2,3.5){\makebox(0,0)[r]{$w_{\mathrm{D}}$}}
- \end{picture}}}
+ \end{picture}}}%
}
\def\YOKOeg{%
\hbox{\smash{\begin{picture}(0,0)
\put(0,0){\vector(0,1){5}} \put(0.3,2.5){\makebox(0,0)[l]{$h_{\mathrm{Y}}$}}
\put(0,0){\vector(0,-1){2}}\put(0.3,-1){\makebox(0,0)[l]{$d_{\mathrm{Y}}$}}
\put(0,0){\vector(1,0){7}}\put(3.5,0.2){\makebox(0,0)[b]{$w_{\mathrm{Y}}$}}
- \end{picture}}}
+ \end{picture}}}%
}
\begin{tabular}{ccc}
\toprule
\begin{align*}
W_{\mathrm{Y}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\
H_{\mathrm{Y}} &= w_{\mathrm{D}},\\
- D_{\mathrm{Y}} &= 0\,pt
+ D_{\mathrm{Y}} &= 0\,\mathrm{pt}
\end{align*}%
}&
\parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
one have to use the following commands instead of \cs{wd} wtc.
\begin{cslist}
- \item[\cs{ltjgetwd}\{<num>\}\textrm{, }\cs{ltjgetht}\{<num>\}\textrm{, }%
- \cs{ltjgetdp}\{<num>\}]
+ \item[\cs{ltjgetwd}<num>\textrm{, }\cs{ltjgetht}<num>\textrm{, }%
+ \cs{ltjgetdp}<num>]
These commands return \emph{an internal dimension} of \cs{box<num>} with respect to
the current direction. One can use these in \cs{dimexpr} primitive, as the followings.
\begin{lstlisting}
-\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701}
+\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701
\end{lstlisting}
-By implementaion, the argument must be grouped as \verb+\ltjgetwd{42}+,
-if the argument consists of more than one token.
+The following is an example.
\begin{LTXexample}[width=0.3\textwidth]
\parindent0pt
\setbox32767=\hbox{\yoko よこぐみ}
\fboxsep=0mm\fbox{\copy32767}
\vbox{\hsize=20mm
-\yoko YOKO \the\ltjgetwd{32767}, \\
- \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\yoko YOKO \the\ltjgetwd32767, \\
+ \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
\vbox{\hsize=20mm\raggedleft
-\tate TATE \the\ltjgetwd{32767}, \\
- \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\tate TATE \the\ltjgetwd32767, \\
+ \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
\vbox{\hsize=20mm\raggedleft
-\dtou DTOU \the\ltjgetwd{32767}, \\
- \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\dtou DTOU \the\ltjgetwd32767, \\
+ \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
\end{LTXexample}
\item[\cs{ltjsetwd}<num>=<dimen>\textrm{, }\cs{ltjsetht}<num>=<dimen>\textrm{, }%
\cs{ltjsetdp}<num>=<dimen>]
-These commands set the dimension of \cs{box<num>}. Unlike \cs{ltjgetwd}, one does not need
+These commands set the dimension of \cs{box<num>}. One does not need
to group the argument <num>; four calls of \cs{ltjsetwd} below have the same meaning.
\begin{lstlisting}
\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt
\begin{cslist}
- \item[\cs{ltjgetwd}\{<num>\}\textrm{, }\cs{ltjgetht}\{<num>\}\textrm{, }%
- \cs{ltjgetdp}\{<num>\}]
+ \item[\cs{ltjgetwd}<num>\textrm{, }\cs{ltjgetht}<num>\textrm{, }%
+ \cs{ltjgetdp}<num>]
現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため,
\begin{lstlisting}
-\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701}
+\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701
\end{lstlisting}
-のように \cs{wd}<num> の代わりとして扱うことができる.引数が1桁の場合は,
-\cs{ltjgetwd3} のように引数をグループで括らなくても良いが,そうでない場合は
-(通常の命令への引数のように)\verb+\ltjgetwd{42}+ とグループに括る必要がある.
+のように \cs{wd}<num> の代わりとして扱うことができる.
使用例は以下の通りである.
\begin{LTXexample}[width=0.3\textwidth]
\parindent0pt
\setbox32767=\hbox{\yoko よこぐみ}
\fboxsep=0mm\fbox{\copy32767}
\vbox{\hsize=20mm
-\yoko YOKO \the\ltjgetwd{32767}, \\
- \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\yoko YOKO \the\ltjgetwd32767, \\
+ \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
\vbox{\hsize=20mm\raggedleft
-\tate TATE \the\ltjgetwd{32767}, \\
- \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\tate TATE \the\ltjgetwd32767, \\
+ \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
\vbox{\hsize=20mm\raggedleft
-\dtou DTOU \the\ltjgetwd{32767}, \\
- \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\dtou DTOU \the\ltjgetwd32767, \\
+ \the\ltjgetht32767, \\ \the\ltjgetdp32767.}
\end{LTXexample}
\item[\cs{ltjsetwd}<num>=<dimen>\textrm{, }\cs{ltjsetht}<num>=<dimen>\textrm{, }%
%<*en>
\subsection{Getting current direction}
The \Param{direction} parameter returns the current direction, and
-the \Param{boxdir} parameter (with the argumant <num>)
+the \Param{boxdir} parameter (with the argument <num>)
returns the direction of a box register \cs{box}<num>.
The returned value of these parameters are a \emph{string}:
\begin{center}
\ifnum\ltjgetparameter{boxdir}{200}=4
\end{lstlisting}
のように行うことができる.
-\cs{iftdir} は少々面倒であるが
+\cs{iftdir} は少々面倒であるが,8で割った余りが3であるか否かを判断すれば良いから
\begin{lstlisting}
\ifnum\numexpr
\ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3
\begin{cslist}[style=standard]
\item[\cs{unhbox}<num>\textrm{, }\cs{unvbox}<num>\textrm{, }\cs{unhcopy}<num>\textrm{, }\cs{unvcopy}<num>]
\item[\cs{vadjust}\{<material>\}]
+ \item[\cs{insert}<number>\{<material>\}]
\item[\cs{lastbox}]
\item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
\item[\cs{vcenter}]
\item[\cs{vadjust}\{<material>\}] 一旦プリミティブ本来の挙動を行う.その後,<material>の組方向が
周囲の垂直リストの組方向と一致しない場合にエラーを出力し,
該当の \cs{vadjust} を無効にする.
+ \item[\cs{insert}<number>\{<material>\}]
+ 一旦プリミティブ本来の挙動を行い,その後<material>内の各ボックス・罫線の直前に組方向を示
+ すdirection whatsitを挿入する.
\item[\cs{lastbox}] ボックスの「中身」を現在の組方向に合わせるためのノード
(\textit{dir\_box}という)を必要ならば除去し,
正しく「中身」のボックスが返されるように前処理をする.
\paragraph{JFM}
%<*en>
-As noted in Introduction, a JFM has measurements of characters and
+a JFM has measurements of characters and
glues/kerns that are automatically inserted for Japanese
typesetting. The structure of JFM will be described in the next
subsection. At the calling of \cs{jfont}, you must specify
which JFM will be used for this font by the following keys:
%</en>
%<*ja>
-「はじめに」の節で述べたように,JFMは文字と和文組版で自動的に挿入される
+JFMは文字と和文組版で自動的に挿入される
グルー/カーンの寸法情報を持っている.JFMの構造は次の節で述べる.
\cs{jfont} 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで
指定する必要がある:
\paragraph{\texttt{extend} and \texttt{slant}}
The following setting can be specified as OpenType font features:
\begin{cslist}[style=standard]
-\item[\cs{extend=}<extend>] expand the font horizontally by <extend>.
-\item[\cs{slant=}<slant>] slant the font.
+\item[\texttt{extend=}<extend>] expand the font horizontally by <extend>.
+\item[\texttt{slant=}<slant>] slant the font.
\end{cslist}
Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
settings; you have to write new JFMs on purpose.
\S あいう\/ABC
\end{LTXexample}
+%<*ja>
+\paragraph{\texttt{ltjksp} 指定}
+\label{pg:ltjksp}
+\LuaTeX-ja標準では,
+JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって,
+「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が
+同じ場所に挿入される」という状況が起こりうる.
+この機能を無効化し,20150922.0版以前と同じような組版を得るためには
+他のOpenType機能と同じように\ \texttt{-ltjksp}\ 指定を行えば良い.
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+
+\jfont\G=file:KozMinPr6N-Regular.otf%
+ :jfm=ujis;-ltjksp at 9.2487pt
+\G\leavevmode%
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\end{LTXexample}
+なお,
+\begin{lstlisting}
+ \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt
+\end{lstlisting}
+のように \texttt{+ltjksp} 指定を行った場合は,\texttt{kanjiskip\_natural} など
+3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は,
+最後に指定したものが有効となる.
+%</ja>
+
+
%<en>\subsection{\cs{tfont}}
%<ja>\subsection{\cs{tfont} 命令}
\catcode`\<=12\catcode`\>=12
\ltjsetparameter{jacharrange={+3}}
\small
-
\def\r#1#2{%
\hbox{\tate\Large\vrule
\parbox{7\zw}{%
\addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
◆◆◆◆◆◆◆
- ã\81\82ã\82\8bæ\97¥ã\83¢ã\83¢ã\81¡ã\82\83ã\82\93ã\81\8cã\81\8a使ã\81\84ã\81§è¿·å\90ã\81«ã\81ªã\81£ã\81¦æ³£ã\81\8dã\81¾ã\81\97ã\81\9fï¼\8e
+ ã\81\82ã\82\8bæ\97¥ã\83¢ã\83¢ã\81¡ã\82\83ã\82\93ã\81\8cã\80\8cã\81\8a使ã\81\84ã\80\8dã\81§è¿·å\90ã\81«ã\81ªã\81£ã\81¦æ³£ã\81\8dã\81¾ã\81\97ã\81\9fã\80\82
}\vrule}}
\def\s#1#2{%
\hbox{\tate\Large
\cs{tfont} で定義された縦組用和文フォントは,
以下の点が \cs{jfont} による横組用和文フォントとは異なる:
\begin{itemize}
- \item 出力時に,自動的に「\verb+vert+ feature相当」のグリフ置換が行われる.
- これは,\Pkg{luaotfload}による各種featureのサポートとは全く別個に行われるもので,
- いちいち \verb+vert+ featureを指定する必要はない.
+ \item 自動的に \texttt{vert}, \texttt{vrt2} の両OpenType featureが有効化される.
+但し,以下の例の3行目に示すように,明示的に \texttt{vert}, \texttt{vrt2}(のいずれか)の
+有効・無効を指定した場合は別である.
\begin{lstlisting}
-\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujis % OK
+\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv
+ % vert and vrt2 are automatically activated
+\tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated
\end{lstlisting}
\item \ref{ssec-math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
\item \texttt{jfm=<name>}\ の部分には縦組用JFMを指定する.
以下の縦組用JFMが\LuaTeX-jaには同梱されており,違いを表\ref{tab-difjfm-tate}に示した.
\begin{description}
-\item[\tt jfm-ujis.lua] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で
+\item[\tt jfm-ujisv.lua] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で
用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-v.tfm+ を
元にしている.
-\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用縦組TFM
+\item[\tt jfm-tmin.lua] \pTeX に同梱されているデフォルトの和文用縦組TFM
である \verb+tmin10.tfm+ に相当し,\texttt{min10.tfm} と同様に
「っ」など一部の文字幅が狭められている.
\end{description}
?
\end{lstlisting}
-%<en>\subsection{Structure of a JFM File}
+%<en>\subsection{Structure of a JFM file}
%<ja>\subsection{JFMファイルの構造}
\label{ssec-jfm-str}
%<en>A JFM file is a Lua script which has only one function call:
%<ja>(必須)
%<*en>
+\begin{table}[t]
+ \centering
+\begin{tabular}{llr}
+\toprule
+Direction of JFM&\textbf{\texttt{'yoko'} (horizontal)}&\multicolumn{1}{l}{\textbf{\texttt{'tate'} (vertical)}}\\
+\midrule
+\texttt{width} field&the width of the ``real'' glyph&1.0~(full-width)\\
+\texttt{height} field&the height of the ``real'' glyph&0.5~(half-width)\\
+\texttt{depth} field&the depth of the ``real'' glyph&0.5~(half-width)\\
+\midrule
+\texttt{italic} field&\multicolumn{2}{c}{0.0}\\
+\bottomrule
+\end{tabular}
+\caption{Default values of \texttt{width} field and other fields}
+\label{tab-wid}
+\end{table}
Specify the width of characters in character class~$i$, the height, the depth and
the amount of italic correction. All characters in character class~$i$ are regarded that its width, height, and depth are
-as values of these fields.
-
-But there is one exception: \texttt{width} field can be \texttt{'prop'}.
-This means that width of a character becomes that of its ``real'' glyph.
+as values of these fields. The default values are shown in Table~\ref{tab-wid}.
%</en>
%<*ja>
+\begin{table}[t]
+ \centering
+\begin{tabular}{llr}
+\toprule
+JFM書字方向&\emph{\texttt{'yoko'}(横組)}&\multicolumn{1}{l}{\emph{\texttt{'tate'}(縦組)}}\\
+\midrule
+\texttt{width}&「実際のグリフ」の幅&1.0(全角)\\
+\texttt{height}&「実際のグリフ」の高さ&0.5(二分)\\
+\texttt{depth}&「実際のグリフ」の深さ&0.5(二分)\\
+\midrule
+\texttt{italic}&\multicolumn{2}{c}{0.0}\\
+\bottomrule
+\end{tabular}
+\caption{\texttt{width} フィールド等の標準値}
+\label{tab-wid}
+\end{table}
文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する.
文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
-値であるものとして扱われる.
-
-例外として,\emph{\texttt{width} フィールドには数値以外に \texttt{'prop'} が指定可能である}.
-この場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用
+値であるものとして扱われる.省略時や,数でない値を指定した時には表\nobreak\ref{tab-wid}に
+ 示されている値を用いる.例えば,横組用JFMで \texttt{width} フィールドには数値以外の値を指
+ 定した場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用
すれば,これによってプロポーショナル組を行うことができる.
%</ja>
和文文字を考えよう.
\begin{itemize}
\item
-実際のグリフの「垂直位置」は,ベースラインが文字の物理的な左右方向の中央を通る
+å®\9fé\9a\9bã\81®ã\82°ã\83ªã\83\95ã\81®ã\80\8cå\9e\82ç\9b´ä½\8dç½®ã\80\8dã\81¯ï¼\8cã\81¾ã\81\9aã\83\99ã\83¼ã\82¹ã\83©ã\82¤ã\83³ã\81\8cæ\96\87å\97ã\81®ç\89©ç\90\86ç\9a\84ã\81ªå·¦å\8f³æ\96¹å\90\91ã\81®ä¸å¤®ã\82\92é\80\9aã\82\8b
位置となる.
\item
-また,この場合\texttt{align}フィールドは \texttt{'right'} なので,
+また,この場合 \texttt{align} フィールドは \texttt{'right'} なので,
「水平位置」は字送り方向に「右寄せ」したものとなる(緑色の長方形).
-その際,高さ・深さは,実フォントのascender, descenderの値が使われる.
\item
その後さらに \texttt{left} と \texttt{down} の値に従ってシフトされる
のは横組用和文フォントと変わらない.
\label{fig-pos-tate}
\end{figure}
-\item[kern={\{[$j$]=<kern>, [$j'$]=\{<kern>, [<ratio>]\}, ...\}}]
-
-\item[glue={\{[$j$]=\{<width>, <stretch>, <shrink>, [<priority>], [<ratio>]\}, ...\}}]\
+\item[kern={\{[$j$]=<kern>, [$j'$]=\{<kern>, [ratio=<ratio>]\}, ...\}}]
+\nopagebreak
+\item[glue={\{[$j$]=\{<width>, <stretch>, <shrink>, [ratio=<ratio>, ...]\}, ...\}}]\leavevmode
%<*ja>
-文字クラス$i$の文字と$j$の文字の間に挿入されるkernやglueの量を指定する.
+文字クラス$i$の文字と$j$の文字の間に挿入されるカーンやグルーの量を指定する.
- <priority>は \Pkg{luatexja-adjust} による優先順位付き
- 行長調整(\ref{ssec-adj}節)が有効なときのみ意味を持つ.
-このフィールドは省略可能であり,行調整処理におけるこのglueの優先
- 度を$-2$から$+2$の間の整数で指定する.大きい値ほど「伸びやすく,縮みやすい」
- ことを意味する.省略時の値
- は0であり,範囲外の値が指定されたときの動作は未定義である.
-
-<ratio>も省略可能フィールドであり,$-1$から$+1$の実数値をとる.省略時の値は0である.
-\begin{itemize}
-\item $-1$はこのグルーが「前の文字」由来であることを示す.
-\item $+1$はこのグルーが「後の文字」由来であることを示す.
-\item それ以外の値は,「前の文字」由来のグルーと「後の文字」由来の
-グルーが混合されていることを示す.
-\end{itemize}
-なお,このフィールドの値は\Param{differentjfm}の値が
+<ratio>は,グルーの自然長のうちどれだけの割合が「後の文字」由来かを示す量で,
+$0$から$+1$の実数値をとる.省略時の値は$0.5$である.
+このフィールドの値は\Param{differentjfm}の値が
\texttt{pleft},~\texttt{pright},~\texttt{paverage}の値のときのみ実際に用いられる.
例えば,\cite{x4051}では,句点と中点の間には,
句点由来の二分空きと中点由来の四分空きが挿入されるが,この場合には
\begin{itemize}
\item <width>には$0.5+0.25=0.75$を指定する.
-\item <ratio>には次の値を指定する.
-\[
- -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13
-\]
+\item <ratio>には$0.25/(0.5+0.25)=1/3$を指定する.
\end{itemize}
%</ja>
%<*en>
\
-Specifies the width of kern or glue which will be inserted
+Specifies the amount of kern or glue which will be inserted
between characters in character class~$i$ and those in character class~$j$.
-<priority> is an integer in $[-2,2]$ (treated as 0 if omitted), and 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 shretch,
-and is also easy to shrink.
-
-<ratio> is also an optional value between $-1$ and 1. For example,
+<ratio> specifies how much the glue is originated in the ``right'' character.
+It is a real number between 0 and 1, and treated as 0.5 if omitted. For example,
The width of a glue between an ideographic full stop ``。''
and a fullwidth middle dot ``・'' is three-fourth of fullwidth,
namely halfwidth from the ideographic full stop, and
quarter-width from the fullwidth middle dot. In this case,
-we specify <ratio> to
-\[
- -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13.
-\]
+we specify <ratio> to $0.25/(0.5+0.25)=1/3$.
%</en>
+%<*ja>
+グルーの指定においては,上記に加えて各 \texttt{[$j$]} の各サブテーブル内に
+次のキーを指定できる,
+\begin{cslist}[style=standard]
+\item[priority=<priority>]
+ \Pkg{luatexja-adjust} による優先順位付き
+ 行長調整(\ref{ssec-adj}節)の際に使われる値であり,
+行調整処理におけるこのglueの優先
+ 度を$-2$から$+2$の間の整数で指定する.大きい値ほど「伸びやすく,縮みやすい」
+ ことを意味する.省略時の値
+ は0であり,範囲外の値が指定されたときの動作は未定義である.
+\item[kanjiskip\_natural=<num>\textrm{, }%
+ kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
+ \label{pg:ksp_nat}
+
+JFMによって本来挿入されるグルーの他に
+\Param{kanjiskip}分の空白を自然長(\texttt{kanjiskip\_natural}),伸び量(\texttt{kanjiskip\_stretch}),
+縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する\footnote{本来\Param{xkanjiskip}が挿入される場所においては
+ \Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに.追加できる.}%
+ための指定である.いずれも省略された場合のデフォルト値は0(追加しない)である.
+
+例えば,\LuaTeX-jaの横組標準JFMの \texttt{jfm-ujis.lua} では,
+\begin{itemize}
+ \item 通常の文字「あ」と開き括弧類の間に入るグルーは,自然長・縮み量半角,伸び量0のグルー
+となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
+ た分だけ伸びることが許される.
+ \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と通常の文字「う」「え」の間にも
+自然長・縮み量半角,伸び量0のグルー
+となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
+ た分だけ伸びることが許される.
+\end{itemize}
+となっている.従って,以下のような組版結果を得る.
+
+\medskip
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\end{LTXexample}
+
+\end{cslist}
+%</ja>
+%<*en>
+In case of glue, one can specify following additional keys in each \texttt{[$j$]}
+ subtable:
+\begin{cslist}[style=standard]
+\item[priority=<priority>]
+An integer in $[-2,2]$ (treated as 0 if omitted), and 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,
+and is also easy to shrink.
+\item[kanjiskip\_natural=<num>\textrm{, }%
+ kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
+
+These keys specifies the amount of the natural width of \Param{kanjiskip}
+(the stretch/shrink part, respectively) which will be inserted
+in addition to the original JFM glue. Default values of them are all 0.
+
+As an example, in \texttt{jfm-ujis.lua}, the standard JFM in horizontal writing, we have
+\begin{itemize}
+ \item Between an ordinal letter ``あ'' and an ideographic opening bracket, we have
+a glue whose natural part and shrink part are both half-width, while its stretch part is
+ zero. However, 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 closeing brackets (the ideographic comma ``,''
+ is included) and an ordinal letter, we have the same glue.
+ 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).
+\end{itemize}
+Hence we have the following result:
+
+\medskip
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\end{LTXexample}
+
+\end{cslist}
+%</en>
\item[end\_stretch=<kern>, end\_shrink=<kern>]
%<*ja>
%<*ja>
\paragraph{文字クラスの決定}
-æ\96\87å\97ã\81\8bã\82\89ã\81\9dã\81®æ\96\87å\97ã\81®å±\9eã\81\99ã\82\8bæ\96\87å\97ã\82¯ã\83©ã\82¹ã\82\92ç®\97å\87ºã\81\99ã\82\8bé\81\8eç¨\8bã\81¯å°\91ã\80\85è¤\87é\9b\91ã\81§ã\81\82ã\82\8bï¼\8e
-次の内容を一部に含んだ \texttt{jfm-test.lua} を用いて説明する.
+æ\96\87å\97ã\81\8bã\82\89ã\81\9dã\81®æ\96\87å\97ã\81®å±\9eã\81\99ã\82\8bæ\96\87å\97ã\82¯ã\83©ã\82¹ã\82\92ç®\97å\87ºã\81\99ã\82\8bé\81\8eç¨\8bã\81«ã\81¤ã\81\84ã\81¦ï¼\8c
+次の内容を含んだ \texttt{jfm-test.lua} を用いて説明する.
%</ja>
%<*en>
\paragraph{Character to character classes}
\item JFMによれば,この「ヒ」のグリフの文字クラスは2000である.
\item 以上により文字クラス2000とみなされるため,結果として「ヒ」の幅は半角だと認識される.
\end{enumerate}
-この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の後に行われる}ことを
+この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の結果に基づく}ことを
示している.
%</ja>
%<*en>
-However, ...
-Consider the following input:
+However, if the class determined by the glyph after application of features is zero,
+\LuaTeX-ja adopts the class determined by the glyph \emph{before} application of features.
+The following input is an example.
%</en>
%<*ja>
-但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,
-状況は異なる.
+但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,置換前の文字クラスを採用する.
%</ja>
\begin{LTXexample}[width=0.3\textwidth]
\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
\end{LTXexample}
%<*en>
Here, the character class of the ideographic full stop ``。''~(\texttt{U+3002}) is determined
-as following:
+as follows:
\begin{enumerate}
\item As the case of ``ヒ'', the ideographic full stop ``。'' is converted to its vertical
- form ``\char"FE12''~(\texttt{U+FE12}).%"
-\item The character class of ``\char"FE12'' is \emph{zero}.
+ form ``\char"FE12''~(\texttt{U+FE12}) by \verb+vert+ feature.%"
+\item The character class of ``\char"FE12'', according to the JFM is \emph{zero}.
\item However, \LuaTeX-ja remembers that this ``\char"FE12'' is obtained from ``。'' by
font features. The character class of ``。'' is \emph{non-zero value}, namely, 2000.
\item Hence the ideographic full stop ``。'' in above belongs the character class~2000.
\item['jcharbdd']
%<en>A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue,\,\ldots).
-%<ja>和文文字と「その他のもの」(欧文文字,glue,kern等)との境界.
+%<ja>\textbf{JAchar}と「その他のもの」(欧文文字,glue,kern等)との境界.
\item[$-1$]
%<en>The left/right boundary of an inline math formula.
%</ja>
-%<en>\subsection{Math Font Family}
+%<en>\subsection{Math font family}
%<ja>\subsection{数式フォントファミリ}
\label{ssec-math}
\item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM:
\[
\begin{cases}
- 0&\text{\texttt{'left'} and the default value}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
+ 0&\text{\texttt{'left'} (default)}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
\end{cases}
\]
\item For $j\in \omega$, \texttt{[$j$]} stores a kern or a glue which will be inserted
間に入るものがkernであれば,このフィールドの値は\
\texttt{[$j$]=\{false, <kern\_node>, <ratio>\}} である.
<kern\_node>はkernを表すノードそのものである\footnote{%
-本バージョンでは利用可能ならばノードのアクセス手法にdirect access
+本バージョンではノードのアクセス手法にdirect access
modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし
か見えないことに注意.
}.
<spec\_node>はglueの長さを表すノードそのものであり,
$\text{<icflag>}=\textit{from\_jfm}+\text{<priority>}$である.
\end{itemize}
+\item[ascent\textrm{, }descent]
+……
+\item[chars\_cbcache]
+……
\end{cslist}
%</ja>
その\textit{glyph\_node}をカプセル化しようとする際に呼び出される.
%</ja>
\begin{lstlisting}[numbers=left]
-function (<table> shift_info, <table> jfont_info, <number> char_class)
+function (<table> shift_info, <table> jfont_info, <table> char_type)
return <table> new_shift_info
end
\end{lstlisting}
(和文OpenTypeフォントの標準値)
\item 実フォント側の数値:$(\hbox{高さ})=28y$, $(\hbox{深さ})=5y$(和文TrueTypeフォントの標準値)
\end{itemize}
-ã\81¨ã\81ªã\81£ã\81¦ã\81\84ã\81\9fã\81¨ã\81\99ã\82\8bï¼\8eã\81\99ã\82\8bã\81¨ï¼\8cå®\9fé\9a\9bã\81®æ\96\87å\97ã\81®å\87ºå\8a\9bä½\8dç½®ã\81¯ï¼\8c以ä¸\8bã\81®é\87\8fã\81 ã\81\91ä¸\8aã\81«ã\81\9cらされることとなる:
+ã\81¨ã\81ªã\81£ã\81¦ã\81\84ã\81\9fã\81¨ã\81\99ã\82\8bï¼\8eã\81\99ã\82\8bã\81¨ï¼\8cå®\9fé\9a\9bã\81®æ\96\87å\97ã\81®å\87ºå\8a\9bä½\8dç½®ã\81¯ï¼\8c以ä¸\8bã\81®é\87\8fã\81 ã\81\91ä¸\8aã\81«ã\81\9aらされることとなる:
%</ja>
\[
\frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
of \LuaTeX, see Section~\ref{sec-para}.
%</en>
%<*ja>
-先に述べたように,\LuaTeX-jaのほとんどの内部パラメータにアクセスするには
-\cs{ltjsetparameter} と \cs{ltjgetparameter} を用いる.
+先に述べたように,\LuaTeX-jaの内部パラメータにアクセスするには
+\cs{ltjsetparameter}(または \cs{ltjglobalsetparameter})と \cs{ltjgetparameter} を用いる.
\LuaTeX-jaが\pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
採用しない理由の一つは,\LuaTeX のソースにおける \verb+hpack_filter+
コールバックの位置にある.\ref{sec-para}章を参照.
\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands
for assigning parameters. These take one argument which is a
\texttt{<key>=<value>} list.
-The list of allowed keys are described in the next subsection.
-The difference between
-\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} is only the
+The difference between these two commands is the
scope of assignment;
\cs{ltjsetparameter} does a local assignment and
\cs{ltjglobalsetparameter} does a global one.
-They also obey the value of \cs{globaldefs},
-like other assignment.
+They also obey the value of \cs{globaldefs}, like other assignments.
%</en>
%<*ja>
\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} はパラメータを
-指定するための命令である.これらは\texttt{<key>=<value>}のリストを
-引数としてとる.許されるキーの一覧は次の節にある.
-\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} の違いはスコープの
-違いのみで,
-\cs{ltjsetparameter} はローカルな指定,\cs{ltjglobalsetparameter} は
-グローバルな指定を行う.
-これらは他のパラメータ指定と同様に \cs{globaldefs} の値に従う.
+指定するための命令で,\texttt{<key>=<value>}のリストを
+引数としてとる.両者の違いはスコープであり,
+\cs{ltjsetparameter} はローカルな設定を行うのに対し,
+\cs{ltjglobalsetparameter} はグローバルな設定を行う.
+また,他のパラメータ指定と同様に \cs{globaldefs} の値にも従う.
%</ja>
%<*en>
%<*ja>
以下は \cs{ltjsetparameter} に指定することができるパラメータの一覧である.
[\cs{cs}]は\pTeX における対応物を示す.
-ã\81¾ã\81\9fï¼\8cã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81®å\8f³ä¸\8aã\81«ã\81\82ã\82\8b記号には次の意味がある:
+ã\81¾ã\81\9fï¼\8cã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81®å\8f³ä¸\8aã\81®記号には次の意味がある:
%</ja>
\begin{itemize}
%<*en>
-\item ``\ast'' : values at the end of a paragraph or a hbox are
+\item ``$\ast$'' : values at the end of a paragraph or a hbox are
adopted in the whole paragraph or the whole hbox.
%</en>
%<*ja>
-\item ``\ast'':段落やhboxの終端での値がその段落/hbox全体で用いられる.
+\item ``$\ast$'':段落やhboxの終端での値がその段落/hbox全体で用いられる.
%</ja>
%<*en>
\item ``\dagger'': assignments are always global.
(see the description of \Param{jcharwidowpenalty} above).
%</en>
%<*ja>
-文字コードが<chr\_code>の文字が持つ付加的な属性値(attribute).
+文字コードが<chr\_code>の文字が持つ付加的な属性値.
現在のバージョンでは,<natural number>の最下位ビットが,その文字が句読点と
みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照).
%</ja>
\end{lstlisting}
と,最大値の10000が標準で指定されている.他にも,小書きのカナなど,絶対禁止とい
うわけではないができれば行頭にはきて欲しくない場合に,0と
- 10000の間の値を指定するのも有用であろう.
+ 10000の間の値を指定するのも有用であろう.
+
+\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において,
+\begin{itemize}
+\item 一つの文字に対して,pre, postどちらか一つしか指定することができない%
+ \footnote{後から指定した方で上書きされる.}
+\item pre, post合わせて256文字分の情報を格納することしかできない
+\end{itemize}
+という制限があったが,\LuaTeX-jaではこれらの制限は解消されている.
%</ja>
%<*en>
Set a penalty which is inserted automatically before the character <chr\_code>,
\ltjsetparameter{prebreakpenalty={`〙,10000}}
\end{lstlisting}
by default.
-%</en>
+\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty},
+but they don't exist in \LuaTeX-ja:
+\begin{itemize}
+ \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set
+for the same character.
+ \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters.
+\end{itemize}
+%</en>
\item[\DParam{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}$^\ast$]
[\cs{postbreakpenalty}]\
%<*ja>
文字コード<chr\_code>の\textbf{JAchar}が行末にくることを抑止するために,
この文字の後に挿入/追加されるペナルティの量を指定する.
-
-\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において,
-\begin{itemize}
-\item 一つの文字に対して,pre, postどちらか一つしか指定することができなかっ
- た(後から指定した方で上書きされる).
-\item pre, post合わせて256文字分の情報を格納することしかできなかった.
-\end{itemize}
-という制限があったが,\LuaTeX-jaではこれらの制限は解消されている.
%</ja>
%<*en>
Set a penalty which is inserted automatically after the character <chr\_code>,
to prevent a line ends with this character.
-\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty},
-but they don't exist in \LuaTeX-ja:
-\begin{itemize}
- \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set
-for the same character.
- \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters.
-\end{itemize}
%</en>
\item[\DParam{jatextfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
\item[\DParam{jaxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$]\
%<*en>
-Setting whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
+Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
The followings are allowed for <mode>:
%</en>
%<*ja>
\item[\DParam{alxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$] [\cs{xspcode}]\
%<*en>
-Setting whether inserting \Param{xkanjiskip} is allowed before/after a
+Set whether inserting \Param{xkanjiskip} is allowed before/after a
\textbf{ALchar} whose character code is <chr\_code>.
The followings are allowed for <mode>:
%</en>
しかし,自然長が \cs{maxdimen} の場合は,例外的に和文フォントのJFM側で指定されている
値を採用(こちらはフォントサイズに比例)することになっている.
%</ja>
+%<*en>
+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}).
+%</en>
\item[\DParam{xkanjiskip}\,=<skip>$^\ast$] [\cs{xkanjiskip}]\
\Param{kanjiskip}と同じように,通常ではフォントサイズに比例して変わることはないが,
自然長が \cs{maxdimen} の場合が例外である.
%</ja>
+%<*en>
+The default glue which inserted between a \textbf{JAchar} and an
+ \textbf{ALchar}.
+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}).
+%</en>
\item[\DParam{differentjfm}\,=<mode>$^\dagger$]\
\end{cslist}
+
\subsection{\cs{ltjgetparameter}}
\label{ssec-getpar}
%<*en>
%<*en>
\emph{The return value of\/ \cs{ltjgetparameter} is
-always a string}. This is outputted by \texttt{tex.write()}, so any
-character other than space~``\texttt{\char32}''~(\texttt{U+0020}) has the category code
+always a string}, which is outputted by \texttt{tex.write()}.
+Hence any character other than space~``\texttt{\char32}''~(\texttt{U+0020}) has the category code
12~(other), while the space has 10~(space).
%</en>
%<*ja>
%<*ja>
\verb+\ltjgetparameter{autospacing}+ と \verb+\ltjgetparameter{autoxspacing}+ は,
\texttt{true}や\texttt{false}を返すの\emph{ではなく},
-1ã\81¨0のいずれかを返すことに注意,
+1ã\81\8b0のいずれかを返すことに注意,
%</ja>
\item
following, an additional argument---a character code, for example---is needed.
%</en>
%<*ja>
-第1引数が次のいずれかの場合には,さらに文字コードを第二引数としてとる.
+第1引数が次のいずれかの場合には,さらに文字コードを第2引数としてとる.
%</ja>
\begin{quote}
\sffamily
<chr\_code>\verb+}}+\\\null\hfill\verb+% 0 if JAchar, 1 if ALchar+
\end{quote}
+%<*en>
+\item Because the returned value is string, the following conditionals do not work
+if \Param{kanjiskip} (or~\Param{xkanjiskip}) has the stretch part or the shrink part.
+\begin{lstlisting}
+\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi
+\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi
+\end{lstlisting}
+The correct way is using a temporary register.
+\begin{lstlisting}
+\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi
+\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi
+\end{lstlisting}
+%</en>
+%<*ja>
+\item 返り値が文字列であることから,\Param{kanjiskip}や\Param{xkanjiskip}を直接
+\ \cs{ifdim} を使って比較することは望ましくない.伸び量や縮み量を持っている時には,
+次はエラーを発生させる:
+\begin{lstlisting}
+\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi
+\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi
+\end{lstlisting}
+レジスタに一旦代入するのが良い:
+\begin{lstlisting}
+\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi
+\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi
+\end{lstlisting}
+%</ja>
+
+\end{itemize}
+
+%<*ja>
+\subsection{\cs{ltjsetparameter} の代替}
+原則として各種内部パラメータの設定には \cs{ltjsetparameter} もしくは
+\ \cs{ltjglobalsetparameter}\ を用いることになるが,
+\cs{ltjsetparameter} の実行には時間がかかるという難点があり,
+\LuaTeX-ja の内部ではより高速に実行できる別の形式を用いている.
+\emph{本節は一般利用者むけの内容ではない.}
+
+\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} の設定}
+\pLaTeXe 新ドキュメントクラスでは,
+\begin{lstlisting}
+\def\@setfontsize#1#2#3{%
+ ...
+ \kanjiskip=0zw plus .1zw minus .01zw
+ \ifdim\xkanjiskip>\z@
+ \if@slide \xkanjiskip=0.1em \else
+ \xkanjiskip=0.25em plus 0.15em minus 0.06em
+ \fi
+ \fi}
+\end{lstlisting}
+と,フォントサイズを変更するごとに \cs{kanjiskip}, \cs{xkanjiskip} を変更している.
+この \cs{@setfontsize} は文書の中で多数回実行されるので.
+\LuaTeX-ja 用に素直に書き換えた
+\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}
+としたのではタイプセットが遅くなってしまう.
+そこで,\cs{ltjsetparameter} の中で
+\begin{itemize}
+\item \cs{globaldefs} の値を読み取る \cs{ltj@setpar@global}
+\item \Param{kanjiskip} の設定を行う \cs{ltjsetkanjiskip}
+\item \Param{xkanjiskip} の設定を行う \cs{ltjsetxkanjiskip}
\end{itemize}
+を独立させ,\Pkg{ltjsclasses}では,
+\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}
+としている.
+\cs{ltj@setpar@global}を直前に実行せず,単独で
+\cs{ltjsetkanjiskip}, \cs{ltjsetxkanjiskip}を実行することは想定されていないので注意.
+
+
+
+\paragraph{ベースライン補正量の設定}
+\pLaTeX の\Pkg{ascmac}パッケージでは,縦組の欧文ベースライン補正量の一時待避・復帰処理に
+\ \cs{@saveybaselineshift}\ という寸法レジスタを用い
+\begin{lstlisting}
+\@savetbaselineshift\tbaselineshift\tbaselineshift\z@
+...
+\tbaselineshift\@savetbaselineshift
+\end{lstlisting}
+という処理を行っている.
+これを\LuaTeX-ja 用に \cs{ltjsetparameter} を使って書き直すと,
+\begin{lstlisting}
+\@savetbaselineshift\ltjgetparameter{talbaselineshift}
+\ltjsetparameter{talbaselineshift=\z@}
+...
+\ltjsetparameter{talbaselineshift=\@savetbaselineshift}
+\end{lstlisting}
+となる.
+さて,縦組の欧文ベースライン補正量\Param{talbaselineshift}は,
+実際には \cs{ltj@tablshift} という属性レジスタに格納されている
+(\ref{sec-para}\nobreak 節参照).属性レジスタは長さではなく整数値を格納する\footnote{%
+ 従って,\texttt{\textbackslash @savetbaselineshift=\textbackslash ltj@tablshift}\
+ のように記述することはできない.属性レジスタを \cs{tbaselineshift} という名称にしなかっ
+ たのはそのためである.
+}ものであり,\cs{ltj@tablshift} は補正量を sp 単位で保持することから,
+上記のコードと同じ内容をより速い以下のコードで実現することができる.
+\begin{lstlisting}
+\@savetbaselineshift\ltj@tablshift sp%
+\ltj@tablshift\z@
+...
+\ltj@tablshift\@savetbaselineshift
+\end{lstlisting}
+この手法は \Pkg{ascmac} パッケージの\LuaTeX-ja対応パッチ \Pkg{lltjp-tascmac.sty} で
+実際に用いられている.\Pkg{lltjp-tascmac.sty} は自動的に読み込まれるので,
+ユーザは何も気にせず普通に \Pkg{ascmac} パッケージを \cs{usepackage} で読みこめば良い.
+%</ja>
%<en>\section{Other Commands for plain \TeX\ and \LaTeXe}
%<ja>\section{plainでも\LaTeX でも利用可能なその他の命令}
-%<en>\subsection{Commands for Compatibility with \pTeX}
+%<en>\subsection{Commands for compatibility with \pTeX}
%<ja>\subsection{\pTeX 互換用命令}
%<*en>
\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない.
%</ja>
\begin{center}
-\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{jis}, \cs{kansuji}
+\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{ucs}, \cs{kansuji}
\end{center}
%<*en>
These six commands takes an internal integer, and returns a \emph{string}.
simply ignored.
%</en>
%<*ja>
-\item \cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない.
+\item \emph{\cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない}\footnote{%
+ この点は\TeX~Live~2014での\pTeX における \cs{inhibitglue} の仕様変更と同じである.
+}.
4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり,
\cs{noindent} の時点で水平モードになるからである.
%</ja>
Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts.
This \cs{ltjdeclarealtfont} uses in the following form:
\begin{quote}
-\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>{<range>}
+\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>\{<range>\}
\end{quote}
where <base\_font\_cs>~and~<alt\_font\_cs> are defined by \cs{jfont}.
Its meaning is
If the current Japanese font is <base\_font\_cs>, characters which belong to <range>
is typeset by another Japanese font <alt\_font\_cs>, instead of <base\_font\_cs>.
\end{quote}
-
-<range> is a comma-separated list of character codes, but also accepts negative integers:
+Here <range> is a comma-separated list of character codes, but also accepts negative integers:
$-n$~($n≥1$) means that all characters of character classes~$n$, with respect to JFM used
by <base\_font\_cs>. Note that characters which do not exist in <alt\_font\_cs> are
ignored.
\cs{ltjdeclarealtfont} は以下の書式で使用する:
\begin{quote}
-\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>{<range>}
+\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>\{<range>\}
\end{quote}
これは「現在の和文フォント」が<base\_font\_cs>であるとき,
<range>に属する文字は<alt\_font\_cs>を用いて組版される,という意味である.
マクロの都合による.
%</ja>
+%<*ja>
+\subsection{\cs{ltjalchar} と \cs{ltjjachar}}
+文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を
+\ \cs{char} プリミティブを使い \cs{char}<chr\_code> として出力させると,
+その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって
+\textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され
+るかが決まる.
+
+文字範囲の設定を無視し,文字コードが$\text{<chr\_code>}~(\geq 128=\mathtt{0x80})$の文字を強制的に
+\textbf{ALchar}, \textbf{JAchar}で出力する命令がそれぞれ
+\ \cs{ltjalchar},~\cs{ltjjachar} である.使用方法は \cs{char} と同じく
+\ \cs{ltjalchar}<chr\_code>, \cs{ltjjachar}<chr\_code>とすればよい.
+<chr\_code>が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること
+に注意.
+
+以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである.
+\begin{LTXexample}[width=0.25\textwidth]
+\gtfamily\large % default, ALchar, JAchar
+¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar
+α, \char`α, \ltjalchar`α, \ltjjachar`α % default: JAchar
+\end{LTXexample}
+%</ja>
%<en>\section{Commands for \LaTeXe}
\item[\cs{DeclareTateKanjiEncoding}\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
%<*en>
-In NFSS2 under \LuaTeX-ja, distinction between alphabetic font families
- and Japanese font families are only made by their
- encodings. For example, encodings OT1 and T1 are for
- alphabetic font families, and a Japanese font family cannot
+In NFSS2 under \LuaTeX-ja, distinction between alphabetic fonts
+ and Japanese fonts are only made by their
+ encodings. For example, encodings OT1 and T1 are encodings for
+ alphabetic fonts, and Japanese fonts cannot
have these encodings. These command define a new encoding
scheme for Japanese font families.
%</en>
%<*ja>
-\LuaTeX-jaã\81®NFSS2ã\81«ã\81\8aã\81\84ã\81¦ã\81¯ï¼\8c欧æ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªã\81¨å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªは
+\LuaTeX-jaã\81®NFSS2ã\81«ã\81\8aã\81\84ã\81¦ã\81¯ï¼\8c欧æ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81¨å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88は
そのエンコーディングによってのみ区別される.
-ä¾\8bã\81\88ã\81°ï¼\8cOT1ã\81¨T1ã\81®ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°ã\81¯æ¬§æ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªã\81«å¯¾ã\81\99ã\82\8bã\82\82ã\81®であり,
-å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªã\81¯ã\81\93ã\82\8cã\82\89ã\81®ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°ã\82\92æ\8c\81ã\81¤ã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81ªã\81\84ï¼\8e
+ä¾\8bã\81\88ã\81°ï¼\8cOT1ã\81¨T1ã\81®ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°ã\81¯æ¬§æ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81®ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°であり,
+和文フォントはこれらのエンコーディングを持つことはできない.
これらコマンドは横組用・縦組用和文フォントのための新しいエンコーディングを
それぞれ定義する.
%</ja>
The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaults} and~others.
%</en>
%<*ja>
-上記3つのコマンドはちょうど \cs{DeclareFontEncodingDefaults} などに対応するものである.
+上記3つのコマンドはちょうどNFSS2 の \cs{DeclareFontEncodingDefaults} などに対応するものである.
%</ja>
\item[\cs{reDeclareMathAlphabet}\{<unified-cmd>\}\{<al-cmd>\}\{<ja-cmd>\}]
\item[\cs{DeclareRelationFont}\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\*
\null\hfill\{<al-encoding>\}\{<al-family>\}\{<al-series>\}\{<al-shape>\}]
%<*en>
-This command sets the ``accompanied'' alphabetic font family (given by the latter 4~arguments)
-with respect to a Japanese font family given by the former 4~arguments.
+This command sets the ``accompanied'' alphabetic font (given by the latter 4~arguments)
+with respect to a Japanese font given by the former 4~arguments.
%</en>
%<*ja>
-ã\81\84ã\82\8fã\82\86ã\82\8bã\80\8cå¾\93å±\9e欧æ\96\87ã\80\8dã\82\92è¨å®\9aã\81\99ã\82\8bã\81\9fã\82\81ã\81®å\91½ä»¤ã\81§ã\81\82ã\82\8bï¼\8eå\89\8då\8d\8aã\81®4å¼\95æ\95°ã\81§è¡¨ã\81\95ã\82\8cã\82\8bå\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªã\81«å¯¾ã\81\97ã\81¦ï¼\8c
-ã\81\9dã\81®ã\83\95ã\82©ã\83³ã\83\88ã\81«å¯¾å¿\9cã\81\99ã\82\8bã\80\8cå¾\93å±\9e欧æ\96\87ã\80\8dã\81®ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªã\82\92å¾\8cå\8d\8aã\81®4å¼\95æ\95°ã\81«ã\82\88ã\82\8aä¸\8eã\81\88ã\82\8bï¼\8e
+いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントに対して,
+そのフォントに対応する「従属欧文」のフォントを後半の4引数により与える.
%</ja>
\item[\cs{SetRelationFont}]
%<*en>
%<*ja>
現在の欧文フォントのエンコーディング/ファミリ/…… を,
\cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された
-ç\8f¾å\9c¨ã\81®å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªã\81«å¯¾å¿\9cã\81\99ã\82\8bã\80\8cå¾\93å±\9e欧æ\96\87ã\80\8dã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\83\9fã\83ªに変更する.
+ç\8f¾å\9c¨ã\81®å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81«å¯¾å¿\9cã\81\99ã\82\8bã\80\8cå¾\93å±\9e欧æ\96\87ã\80\8dã\83\95ã\82©ã\83³ã\83\88に変更する.
\cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である.
%</ja>
+ d_{\text{あ}} - d_{\text{M}},
\]
where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively.
-In \LuaTeX-ja, this \cs{adjustbaseline} does same task.
+In \LuaTeX-ja, this \cs{adjustbaseline} does similar task, namely setting the
+ \Param{talbaselineshift} parameter.
+If the \LaTeX\ is 2015/10/01 release or later, \LuaTeX-ja use a Japanese
+character whose character class is zero, instead of `あ'.
%</en>
%<*ja>
\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために,
+ d_{\text{あ}} - d_{\text{M}},
\]
ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す.
-\LuaTeX-jaにおいても\cs{adjustbaseline} は同様の処理を行っている.
+\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処
+ 理を行っている.
+
+同時に,これも\pLaTeXe の \cs{adjustbaseline} で同様の処理が行われていたが,
+「漢」の寸法を元に(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd}
+といった長さ変数を設定する.
+
+なお,\LaTeX が2015/10/01 版以降の場合は,「あ」「漢」の代わりに
+「文字クラス0の和文文字」を用いる.
%</ja>
\item[\cs{fontfamily}\{<family>\}]
%<*en>
As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both})
-to <family>. Which family will be changed is determined as follows:
+to <family>. See Subsection~\ref{ssec-fontfamilycmd} for detail.
%</en>
%<*ja>
元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文,
-和文,\emph{もしくは両方})を<family>に変更する.
-どのファミリが変更されるかは以下のようにして決定される:
-%</ja>
-\begin{itemize}
-%<*en>
-\item Let current encoding scheme for Japanese fonts be
- <ja-enc>. Current Japanese font family will be changed to
- <family>, if one of the following two conditions is met:
-%</en>
-%<*ja>
-\item 現在の和文フォントに対するエンコーディングが<ja-enc>であるとしよう.
- 現在の和文フォントファミリは,以下の2つの条件のうちの1つが満たされているときに
- <family>に変更される:
-%</ja>
-\begin{itemize}
-%<*en>
-\item The family <family> under the encoding <ja-enc> has been already defined by
- \cs{DeclareKanijFamily}.
-%</en>
-%<*ja>
-\item エンコーディング<ja-enc>におけるファミリ<family>が
-既に \cs{DeclareKanjiFamily} によって定義されている.
-%</ja>
-%<*en>
-\item A font definition named \texttt{<ja-enc><family>.fd} (the file name is
- all lowercase) exists.
-%</en>
-%<*ja>
-\item フォント定義ファイル\texttt{<ja-enc><family>.fd}(ファイル名は全て小文字)が存在する.
-%</ja>
-\end{itemize}
-%<*en>
-\item Let current encoding scheme for alphabetic fonts be
- <al-enc>. For alphabetic font family, the criterion as above is used.
-%</en>
-%<*ja>
-\item 現在の欧文フォントに対するエンコーディングを<al-enc>とする.
- 欧文フォントファミリに対しても,上記の基準が用いられる.
-%</ja>
-%<*en>
-\item There is a case which none of the above applies, that is, the font
- family named <family> doesn't seem to be defined neither under the
- encoding <ja-enc>, nor under <al-enc>.
-In this case, the default family for font substitution is used for
- alphabetic and Japanese fonts. Note that current encoding will not
- be set to <family>, unlike the original implementation in \LaTeX.
-%</en>
-%<*ja>
-\item 上記のいずれもが適用されない,つまり<family>が<ja-enc>と<al-enc>の
- どちらでも定義されないような場合がある.
- この場合,代替フォントに用いられるデフォルトのフォントファミリが欧文フォントと
- 和文フォントに用いられる.\LaTeX のオリジナルの実装とは異なり,
- 現在のエンコーディングは<family>には設定されないことに注意する.
+和文,\emph{もしくは両方})を<family>に変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること.
%</ja>
-\end{itemize}%
-%<en>\vspace{-\medskipamount}
\begin{figure}[!tb]
\userelfont\selectfont あいうabc
\end{LTXexample}
+%<en>\subsection{Detail of \cs{fontfamily} command}
+%<ja>\subsection{\cs{fontfamily}コマンドの詳細}
+\label{ssec-fontfamilycmd}
+%<*en>
+In this subsection, we describe when \cs{fontfamily}<family> changes current
+Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to
+<family> if it is recognized as a Japanese font family, and similar with alphabetic font
+family. There is a case that current Japanese/alphabetic font family are both changed to
+<family>, and another case that <family> isn't recognized as a Japanese/alphabetic font
+family either.
+
+\paragraph{Recognition as Japanese font family}
+First, Whether Japanese font family will be changed is determined in following order.
+This order is very similar to \cs{fontfamily} in \pLaTeXe, but we re-implemented in Lua.
+We use an auxiliary list~$N_{\mathrm{J}}$.
+%</en>
+%<*ja>
+本節では,\cs{fontfamily}<family> がいつ和文/欧文フォントファミリを変更するかについて解説
+する.基本的には,<family>が和文フォントファミリだと認識されれば和文側が,欧文フォントファ
+ミリだと認識されれば欧文側が変更される.どちらとも認識されれば和文・欧文の両方が変わるこ
+とになるし,当然どちらとも認識されないこともある.
+
+\paragraph{和文フォントファミリとしての認識}
+まず,<family>が和文フォントファミリとして認識されるかは以下の順序で決定される.
+これは\pLaTeXe の \cs{fontfamily} にとても似ているが,ここではLuaによって実装している.
+補助的に「和文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{J}}$を用いる.
+%</ja>
+\begin{enumerate}
+%<*en>
+\item If the family~<family> has been defined already by \cs{DeclareKanjiFamily},
+ <family> is recognized as a Japanese font family.
+ Note that <family> need not be defined under \emph{current} Japanese font encoding.
+%</en>
+%<*ja>
+\item ファミリ<family>が既に \cs{DeclareKanjiFamily} によって定義されている場合,
+ <family>は和文フォントファミリであると認識される.
+ ここで,<family>は現在の和文フォントエンコーディングで定義されていなくてもよい.
+%</ja>
+%<*en>
+\item If the family~<family> has been listed in a list~$N_{\mathrm{J}}$, this means
+ that <family> is not a Japanese font family.
+%</en>
+%<*ja>
+\item ファミリ<family>がリスト$N_{\mathrm{J}}$に既に含まれていれば,それは
+ <family>が和文フォントファミリではないことを意味する.
+%</ja>
+%<*en>
+\item If the \Pkg{luatexja-fontspec} package is loaded, we stop here, and <family> is not
+ recognized as a Japanese font family.
+
+ If the \Pkg{luatexja-fontspec} package is \emph{not} loaded,
+now \LuaTeX-ja looks whether there exists a Japanese font encoding~<enc> such that
+ a font definition named \texttt{<enc><family>.fd} (the file name is
+ all lowercase) exists. If so, <family> is recognized as a Japanese font family (the font definition file won't be loaded here).
+ If not, <family> is not a Japanese font family, and
+ <family> is appended to the list~$N_{\mathrm{J}}$.
+%</en>
+%<*ja>
+\item もし\Pkg{luatexja-fontspec}パッケージが読み込まれていれば,ここで終了であり,
+<family>は和文フォントファミリとして認識されないことになる.
+
+もし\Pkg{luatexja-fontspec}パッケージが読み込まれていなければ,和文エンコーディング<enc>で
+フォント定義ファイル\texttt{<enc><family>.fd}(ファイル名は全て小文字)が存在するようなも
+ のがあるかどうかを調べる.
+存在すれば,<family>は和文フォントファミリと認識される(フォント定義ファイルは読み込まれな
+ い).
+存在しなければ,<family>は和文フォントファミリでないと認識され,リスト$N_{\mathrm{J}}$に<family>を追加することでそれを記憶する.
+
+%</ja>
+\end{enumerate}
+
+%<*en>
+\paragraph{Recognition as alphabetic font family}
+Next, whether alphabetic font family will be changed is determined in following order.
+We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$,
+%</en>
+%<*ja>
+\paragraph{欧文フォントファミリとしての認識}
+同様に,<family>が和文フォントファミリとして認識されるかは以下の順序で決定される.
+補助的に「欧文フォントファミリと既に認識された」ファミリのリスト$F_{\textrm{A}}$と,
+「欧文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{A}}$を用いる.
+%</ja>
+
+\begin{enumerate}
+%<*en>
+\item If the family~<family> has been listed in a list~$F_{\mathrm{A}}$,
+ <family> is recognized as an alphabetic font family.
+%</en>
+%<*ja>
+\item ファミリ<family>がリスト$F_{\mathrm{A}}$に既に含まれていれば,
+ <family>は欧文フォントファミリと認識される.
+%</ja>
+%<*en>
+\item If the family~<family> has been listed in a list~$N_{\mathrm{A}}$, this means
+ that <family> is not an alphabetic font family.
+%</en>
+%<*ja>
+\item ファミリ<family>がリスト$N_{\mathrm{A}}$に既に含まれていれば,それは
+ <family>が欧文フォントファミリではないことを意味する.
+%</ja>
+%<*en>
+\item If there exists an alphabetic font encoding such that the family~<family> has been
+ defined under it, <family> is recognized as an alphabetic font family, and
+ to memorize this, <family> is appended to the list~$F_{\mathrm{A}}$.
+%</en>
+%<*ja>
+\item ある欧文フォントエンコーディング下でファミリ<family>が定義されていれば,
+ <family>は欧文フォントファミリと認識され,リスト$F_{\mathrm{A}}$に<family>を追加することでこのことを記憶する.
+%</ja>
+%<*en>
+\item Now \LuaTeX-ja looks whether there exists an alphabetic font encoding~<enc> such that
+ a font definition named \texttt{<enc><family>.fd} (the file name is
+ all lowercase) exists. If so, current alphabetic font family will be changed to
+ <family>~(the font definition file won't be loaded here).
+ If not, current alphabetic font family won't be changed, and
+ <family> is appended to the list~$N_{\mathrm{A}}$.
+%</en>
+%<*ja>
+\item 最終段階では,欧文エンコーディング<enc>で
+フォント定義ファイル\texttt{<enc><family>.fd}(ファイル名は全て小文字)が存在するようなも
+ のがあるかどうかを調べる.
+存在すれば,<family>は欧文フォントファミリと認識される(フォント定義ファイルは読み込まれない).
+存在しなければ,<family>は欧文フォントファミリと認識されないので,リスト$N_{\mathrm{A}}$に
+ <family>を追加してそのことを記憶する.
+%</ja>
+\end{enumerate}
+
+%<*en>
+Also, each call of \cs{DeclareFontFamily} \emph{after} loading of \LuaTeX-ja makes
+the second argument (family) is appended to the list~$F_{\mathrm{A}}$.
+%</en>
+%<*ja>
+また,\cs{DeclareFontFamily}が\LuaTeX-jaの読み込み後に実行された場合は,
+第2引数(ファミリ名)が自動的に$F_{\mathrm{A}}$に追加される.
+%</ja>
+
+%<*en>
+The above order is very similar to \cs{fontfamily} in \pLaTeXe, but more complicated (clause~3.).
+This is because \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not,
+hence \LuaTeX-ja does not know calls of \cs{DeclareFontFamily} \emph{before} itself is
+loaded.
+%</en>
+%<*ja>
+以上の方針は\pLaTeXe における \cs{fontfamily} にやはり類似しているが,3.が加わり若干複雑になっている.
+それは\pLaTeXe がフォーマットであるのに対し\LuaTeX-jaはそうでないため,
+\LuaTeX-jaは自身が読み込まれる前にどういう\cs{DeclareFontFamily}の呼び出しがあったか
+把握できないからである.
+%</ja>
+
+%<en>\paragraph{Remarks}
+%<ja>\paragraph{注意}
+%<*en>
+Of course, there is a case that <family> is not recognized as a Japanese font family, nor
+an alphabetic font family.
+In this case, \LuaTeX-ja treats ``the argument <family> is wrong'', so
+set both current alphabetic and Japanese font family to <family>,
+to use the default family for font substitution.
+%</en>
+%<*ja>
+さて,引数によっては,「和文フォントファミリとも欧文フォントファミリも認識されなかった」
+という事態もあり得る.
+ この場合,引数<family>は不正だった,ということになるので,
+和文・欧文の両方のフォントファミリを<family>に設定し,代用フォントが使われるに任せることにする.
+%</ja>
+
+
%<*en>
-\section{Addons}
+\section{Addon packages}
\LuaTeX-ja has several addon packages.
These addons are written as \LaTeX\ packages, but
\Pkg{luatexja-otf} and~\Pkg{luatexja-adjust} can be loaded in plain \LuaTeX\
by \cs{input}.
%</en>
%<*ja>
-\section{拡張}
+\section{拡張パッケージ}
\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している.
これらは\LaTeX のパッケージとして制作しているが,
\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\
\cs{input} で読み込み可能である.
%</ja>
-\subsection{\texttt{luatexja-fontspec.sty}}
+\subsection{\Pkg{luatexja-fontspec}}
\label{ssec-fontspec2}
%<*en>
As described in Subsection~\ref{ssec-fontspec}, this optional package
the commands of Japanese version:
%</en>
%<*ja>
-\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}
+\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}%
パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する.
-\emph{以下に述べる和文版の命令の説明は \Pkg{fontspec}~v2.4 使用時にのみ当てはまる.}
-\Pkg{fontspec}パッケージで指定可能な各種font featureに加えて,和文版のコマンドには
-以下の``font feature''を指定することができる:
+\Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには
+以下の「フォント機能」を指定することができる:
%</ja>
%</ja>
\begin{figure}[!tb]
-\begin{LTXexample}
+\begin{LTXexample}[width=0.25\textwidth]
\jfontspec[
- YokoFeatures={Color=007F00},
- TateFeatures={Color=00007F},
+ YokoFeatures={Color=007F00}, TateFeatures={Color=00007F},
TateFont=KozGoPr6N-Regular
]{KozMinPr6N-Regular}
-\hbox{\yoko 横組のテスト}
-\hbox{\tate 縦組のテスト}
+\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト}
+\addjfontfeatures{Color=FF0000}
+\hbox{\yoko 横組}\hbox{\tate 縦組}
\end{LTXexample}
%<ja>\caption{\texttt{TateFeatures} 等の使用例}
%<en>\caption{An example of \texttt{TateFeatures} etc.}
\label{fig:yokotate-fontspec}
\end{figure}
+\item[Kanjiskip=<bool>]
+%<*ja>
+\pageref{pg:ltjksp}ページで説明した \verb+\jfont+ 中での \texttt{ltjksp} 指定と
+同一の効力を持ち,
+JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の有効/無効を切り替える.
+標準値は \texttt{true} である.
+%</ja>
\item[TateFeatures=\{<features>\}\textrm{, }TateFont=<font>]
-%<en> ...
+%<*en>
+The \texttt{TateFeatures} key specifies font features which are only turned~on in
+vertical writing, such as \texttt{Style=VerticalKana}~(\texttt{vkna} feature).
+Similarly, the \texttt{TateFont} key specifies the Japanese font which will be used only
+ in vertical writing.
+A demonstrarion is shown in Figure~\ref{fig:yokotate-fontspec}.
+%</en>
%<*ja>
-縦組において使用されるフォントや,縦組においてのみ適用されるfeature達を
+縦組において使用されるフォントや,縦組においてのみ適用されるフォント機能達を
指定する.使用例は図\ref{fig:yokotate-fontspec}参照.
%</ja>
\item[YokoFeatures=\{<features>\}]
-%<en> ...
+%<*en>
+The \texttt{YokoFeatures} key specifies font features which are only turned~on in
+horizontal writing,.
+A demonstrarion is shown in Figure~\ref{fig:yokotate-fontspec}.
+%</en>
%<*ja>
-横組においてのみ適用されるfeature達を
+同様に,横組においてのみ適用されるフォント機能達を
指定する.使用例は図\ref{fig:yokotate-fontspec}参照.
%</ja>
%<*ja>
\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や,
\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に,
-このキーを用いると一部の文字を異なったフォントやfont featureを使って組むことができる.
+このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる.
\texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである:
%</ja>
\begin{lstlisting}[escapechar=\#]
On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and \texttt{TateFont}
keys can be specified in each list in the \texttt{AltFont} key. Also,
one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}.
+
+Note that features which are specified in \texttt{YokoFeatures}~and~\texttt{TateFeatures}
+are always interpreted \emph{after} other ``direction-independent'' features.
+This explains why \cs{addjfontfeatures} at~line~6 in~Figure~\ref{fig:yokotate-fontspec}
+has no effect, because a color specification is already done in
+\texttt{YokoFeatures}~and~\texttt{TateFeatures} keys.
%</en>
%<*ja>
\paragraph{\texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} 等の制限}
\ \texttt{YokoFeatures},~\texttt{TateFeatures} 及び \texttt{TateFont} キーを
指定することは可能であり.また\ \texttt{YokoFeatures},~\texttt{TateFeatures} キーの
中身に \texttt{AltFont} を指定することができる.
+
+また,図\ref{fig:yokotate-fontspec}後半部では6行目の色の指定が効かず,
+2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による色の指定が有効になっ
+たままである.これは\emph{\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による
+OpenType機能指定は
+組方向に依存しないOpenType機能の指定より後に解釈される}からである.
+
%</ja>
-\subsection{\texttt{luatexja-otf.sty}}
+\subsection{\Pkg{luatexja-otf}}
\label{ssec-ltjotf}
%<*en>
This optional package supports typesetting characters in
%</en>
%<*ja>
文字コードが(16進で)<hex\_number>の文字を出力する.
-このコマンドは \verb+\char"+<hex\_number>と似ているが,下の記述に注意すること.%"
+このコマンドは \verb+\char"+<hex\_number>と似ているが,下の注意を参照すること.%"
%</ja>
\end{cslist}
%<*ja>
-このパッケージは,\texttt{ajmacros.sty}(\Pkg{otf}パッケージ付属のマクロ集,井上浩一氏作)から
-漢字コードをUTF8にしたり,plain \LuaTeX でも利用可能にするという
-修正を加えた \texttt{luatexja-ajmacros.sty} も自動的に読み込む.
-そのため,\texttt{ajmacros.sty} マクロ集にある \verb+\aj半角+ などのマクロもそのまま使用可能である.
+このパッケージは,マクロ集 \texttt{luatexja-ajmacros.sty}\footnote{\Pkg{otf}パッケージ付属の井上浩一氏によるマクロ集
+\texttt{ajmacros.sty} に対して
+漢字コードをUTF-8にしたり,plain \LuaTeX でも利用可能にするという
+修正を加えたものである.}\ も自動的に読み込む.
+\texttt{luatexja-ajmacros.sty} は,
+そのため,\Pkg{luatexja-otf} を読みこめば \texttt{ajmacros.sty} マクロ集にある \cs{aj半角} などのマクロもそのまま使うことができる.
%</ja>
+%<*en>
+This package automatically loads \texttt{luatexja-ajmacros.sty}, which is slightly
+modified version of \texttt{ajmacros.sty}\footnote{Useful macros by iNOUE Koich!, for the
+\Pkg{japanese-otf} package.}.
+Hence one can use macros which sre defined in \texttt{ajmacros.sty}, such as~\cs{aj半角}.
+%</en>
%<en>\paragraph{Remarks}
%<ja>\paragraph{注意}
is not performed to these characters.
%</en>
%<*ja>
-\item OpenType feature(例えばグリフ置換やカーニング)をサポートするための
+\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための
\Pkg{luaotfload}パッケージのコードはこれらの文字には働かない.
%</ja>
\end{itemize}
%<*en>
\paragraph{IVS support}
Recent fonts support Ideographic Variation Selector (IVS).
-It seems that \Pkg{luaotfload} and \Pkg{fontspec} packages do not support
-IVS, so we implemented IVS support in \Pkg{luatexja-otf}.
-\emph{IVS support is experimental; if you want to enable this, load
-\Pkg{luatexja-otf} and execute the following:}
+\Pkg{luaotfload} and \Pkg{fontspec} packages used to be not supported IVS,
+so we implemented experimental IVS support in \Pkg{luatexja-otf},
+which is activated by
+\begin{lstlisting}
+\directlua{luatexja.otf.enable_ivs()}
+\end{lstlisting}
+However, recent \Pkg{luaotfload} and \Pkg{fontspec} packages seem to support IVS,
+so we don't execute above command anymore.
%</en>
%<*ja>
\paragraph{IVSサポート}
(漢字用異体字セレクタ)を後置することによって
字形を指定する仕組み(IVS)が含まれている.
執筆時点の2013年12月では,\Pkg{luaotfload}や\Pkg{fontspec}パッケージ類は
-IVSに対応してはいないようである.これらのパッケージで対応してくれるのが理想的だが,
-それまでのつなぎとして,\Pkg{luatexja-otf}パッケージ内にIVS対応を仕込んでおいた.
-
-\medskip
-
-\emph{IVS対応は試験的なものである.
-有効にするには,\Pkg{luatexja-otf}パッケージを読み込んだ上で以下の命令を実行する%
-\footnote{この命令を2回以上実行しても意味がない.}:}
-%</ja>
+IVSに対応してはいないようであったため,
+\Pkg{luatexja-otf}パッケージ内に試験的なIVS対応を実装した.これは以下の命令の実行で有効になる:
\begin{lstlisting}
\directlua{luatexja.otf.enable_ivs()}
\end{lstlisting}
-%<ja> すると,上の命令を実行した箇所以降では,以下のようにIVSによる字形指定が有効となる.
-%<en> After executing the command above, you can use IVS like the following:
-\begin{LTXexample}
-\Large
-\jfontspec{KozMinPr6N-Regular}
-奈良県葛󠄀城市と,東京都葛󠄁飾区.\\
-こんにちは,渡
-邉󠄀邉󠄁邉󠄂邉󠄃邉󠄄
-邉󠄅邉󠄆邉󠄇邉󠄈邉󠄉
-邉󠄊邉󠄋邉󠄌邉󠄍邉󠄎
-さん.
-\end{LTXexample}
-%<*ja>
-左上側の入力においては,漢字用異体字セレクタを明示するため,
-例えばVariation~Selector~18 (\texttt{U+E0101})を\IVSB{18}のように表記している.
-%</ja>
-\medskip
-
-%<*en>
-Specifying glyph variants by IVS precedes glyph replacement by font features.
-For example, only ``葛'' in ``葛西'' is changed by font features
-\texttt{jp78}~or~\texttt{jp90}, which does not followed by any variation selector.
-%</en>
-%<*ja>
-また,IVSによる字形指定は,font featureによるそれに優先されることとした.
-下の例において,\texttt{jp78}, \texttt{jp90} 指定で字形が変化した文字は
-異体字セレクタが続いていない「葛西」中の「葛」のみである.
-%</ja>
-\begin{LTXexample}
- \def\TEST#1{%
- {\jfontspec[#1]{KozMinPr6N-Regular}%
- 葛󠄀城市,葛󠄁飾区,葛西}\\}
- 指定なし:\TEST{}
- \texttt{jp78}:\TEST{CJKShape=JIS1978}
- \texttt{jp90}:\TEST{CJKShape=JIS1990}
-\end{LTXexample}
-
-%<*ja>
-現状では,\TeX 側のインターフェースとなる \Pkg{luatexja-otf.sty} は一切変更していない
-ので,ZRさんによる\Pkg{PXipamjm}パッケージ%
-\footnote{\url{https://github.com/zr-tex8r/PXipamjm}. 説明は彼のブログ記事
-「pxipamjm パッケージの説明書のような何か(\url{http://d.hatena.ne.jp/zrbabbler/20131221})」
-にある.}
-にあるような気の利いた命令はまだない.
-異体字の一覧表示を行いたい場合は,gitリポジトリ内の \texttt{test/test19-ivs.tex} 中にある
-Lua・\TeX コードが参考になるだろう.
+しかし,現在の\Pkg{luaotfload}や\Pkg{fontspec}パッケージは
+IVSに対応しているようであるので,もはや上の命令を実行する必要はない.
%</ja>
-
-\subsection{\texttt{luatexja-adjust.sty}}
+\subsection{\Pkg{luatexja-adjust}}
\label{ssec-adj}
\begin{figure}[t]
\def\sq{%
\end{cslist}
%</ja>
-\subsection{\texttt{luatexja-ruby.sty}}
+\subsection{\Pkg{luatexja-ruby}}
%<*en>
This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations
using callbacks of \LuaTeX-ja.
%<*ja>
-\subsection{\texttt{lltjext.sty}}
+\subsection{\Pkg{lltjext}}
\pLaTeX では縦組用の拡張として \Pkg{plext} パッケージが用意されていたが,
それを\LuaTeX-ja用に書きなおしたものが本追加パッケージ \Pkg{lltjext} である.
If <width> is positive, the width of the box becomes this <width>.
In this case, <contents> will be aligned \dots
-\item[picture\textrm{environment}]
+\item[picture\textrm{\ environment}]
\item[\cs{rensuji}{[<pos>]}\{<contents>\}\textrm{, }\cs{rensujiskip}]
%<en>\section{Storing Parameters}
%<ja>\section{パラメータの保持}
\label{sec-para}
-%<en>\subsection{Used Dimensions, Attributes and Whatsit Nodes}
+%<en>\subsection{Used dimensions, attributes and whatsit nodes}
%<ja>\subsection{\LuaTeX-jaで用いられるレジスタとwhatsitノード}
%<*en>
\attr{ltj@charclass}
%<*en>
-The character class of Japanese \textit{glyph\_node}.
+The character class of a \textbf{JAchar}. This attribute is only set on a
+ \textit{glyph\_node} which contains a \textbf{JAchar}.
%</en>
%<*ja>
-和文文字の\textit{glyph\_node}の文字クラス.
+\textbf{JAchar}の文字クラス.\textbf{JAchar}が格納された\textit{glyph\_node}でのみ使われる.
%</ja>
\attr{ltj@yablshift}
\end{description}
%<ja> \TeX 側から見える値,つまり \verb+\the\ltj@dir+ の値は常に0である.
+\cnt{ltjlineendcomment}
+%<*ja>
+ \LuaTeX-jaは\textbf{JAchar}で入力行が終了した場合,その直後にコメント文字を
+ おくことで余計な空白が挿入されることを防いでいる.
+ \cs{ltjlineendcomment}はその際のコメント文字のUnicodeにおける符号位置を指定する
+ (詳細は\ref{ssec:lineend}節を参照).
+
+ \LuaTeX-jaにおける既定値は$\texttt{"FFFFF}=1048575$であり,
+ ユーザは内部動作を熟知していない限りこのカウンタの値を変更してはならない.
+ \cs{ltjlineendcomment}の値がUnicodeの範囲外(負や,$\texttt{"10FFFF}=1114111$を超えた場合)
+ にくることは想定されていない.
+%</ja>
\end{list}
%<*en>
これらのwhatsitノードは\textbf{JAglue}の挿入処理の間に取り除かれる.
%</ja>
-%<en>\subsection{Stack System of \LuaTeX-ja}
+%<en>\subsection{Stack system of \LuaTeX-ja}
%<ja>\subsection{\LuaTeX-jaのスタックシステム}
\label{ssec-stack}
%</ja>
%<*en>
-\subsection{Lua Functions of the Stack System}
+\subsection{Lua functions of the stack system}
In this subsection, we will see how a user use \LuaTeX-ja's stack system to
store some data which obeys the grouping of \TeX.
%</en>
%<*en>
\paragraph{Setting parameters}
-Figure~\ref{fig:setpar-def} shows the ``most outer'' definition of
+Figure~\ref{fig:setpar-def} shows the \emph{most outer} definition of
two commands,
\cs{ltjsetparameter} and \cs{ltjglobalsetparameter}.
Most important part is the last \cs{setkeys},
%<en>\section{Linebreak after a Japanese Character}
%<ja>\section{和文文字直後の改行}
\label{sec-lbreak}
-%<en>\subsection{Reference: Behavior in \pTeX}
+%<en>\subsection{Reference: behavior in \pTeX}
%<ja>\subsection{参考:\pTeX の動作}
%<*en>
In~\pTeX, a line break after a Japanese character doesn't emit a space,
%<en>\subsection{Behavior in \LuaTeX-ja}
%<ja>\subsection{\LuaTeX-jaの動作}
+ \label{ssec:lineend}
%<*en>
States in the input processor of \LuaTeX\ is the same as that of \TeX,
and they can't be customized by any callbacks. Hence, we can only use
Considering these situations, handling of an end-of-line in \LuaTeX-ja are as follows:
\begin{quote}
-A character \texttt{U+FFFFF} (its category code is set to 14~(\textit{comment}) by
-\LuaTeX-ja) is appended to an input line, \emph{before \LuaTeX\ actually
+A character whose character code is \cs{ltjlineendcomment}%
+\footnote{Its default value is \texttt{"FFFFF}, so \texttt{U+FFFFF} is used.
+The category code of \texttt{U+FFFFF} is set to 14~(\textit{comment}) by
+\LuaTeX-ja.} is appended to an input line, \emph{before \LuaTeX\ actually
process it}, if and only if the following three conditions are satisfied:
\begin{enumerate}
\item The category code of \cs{endlinechar}%
\footnote{Usually, it is $\langle$\textit{return}$\rangle$
(whose character code is 13).} is 5~(\textit{end-of-line}).
-\item The category code of \texttt{U+FFFFF} itself is 14~(\textit{comment}).
+\item The category code of \cs{ltjlineendcomment} itself is 14~(\textit{comment}).
\item The input line matches the following ``regular expression'':
\[
(\text{any char})^*(\textbf{JAchar})
\paragraph{Remark}
The following example shows the major difference from the behavior of \pTeX.
\begin{LTXexample}
-\fontspec[Ligatures=TeX]{TeX Gyre Termes}
+\fontspec[Ligatures=TeX]{Linux Libertine O}
\ltjsetparameter{autoxspacing=false}
\ltjsetparameter{jacharrange={-6}}xあ
y\ltjsetparameter{jacharrange={+6}}zい
\item When line~3 is processed by \texttt{process\_input\_buffer} callback,
``あ'' is considered as an \textbf{JAchar}.
Since line~3 ends with an \textbf{JAchar},
-the comment character \texttt{U+FFFFF} is appended to this line,
+the comment character (whose character code is \cs{ltjlineendcomment}) is appended to this line,
and hence the linebreak immediately after this line is ignored.
\item When line~4 is processed by \texttt{process\_input\_buffer} callback,
``い'' is considered as an \textbf{ALchar}.
\begin{quote}
各入力行に対し,\emph{その入力行が読まれる前の内部状態で}
-以下の3条件が満たされている場合,\LuaTeX-jaは\texttt{U+FFFFF}の文字
-\footnote{この文字はコメント文字として扱われるように\LuaTeX-ja内部で設定をしている.}
+以下の3条件が満たされている場合,\LuaTeX-jaは\cs{ltjlineendcomment}番の文字
+\footnote{\cs{ltjlineendcomment}の既定値は\texttt{"FFFFF}であるので,
+ 既定では\texttt{U+FFFFF}が使われることになる.この文字はコメント文字として扱われるように
+ \LuaTeX-ja内部で設定をしている.}%
を末尾に追加する.よって,その場合に改行は空白とは見做されないこととなる.
\begin{enumerate}
\item \cs{endlinechar}の文字\footnote{普通は,改行文字(文字コード13番)である.}
のカテゴリーコードが5~(\textit{end-of-line})である.
-\item \texttt{U+FFFFF}のカテゴリーコードが14~(\textit{comment})である.
+\item \cs{ltjlineendcomment}のカテゴリーコードが14~(\textit{comment})である.
\item 入力行は次の「正規表現」にマッチしている:
\[
(\text{any char})^*(\textbf{JAchar})
\texttt{lstlisting}系環境などの日本語対応マクロを書かなくてすませるためのものである.
しかしながら,\pTeX と完全に同じ挙動が実現できたわけではない.
-次のように,和文文字の範囲を変更したちょうどその行においては挙動が異なる:
+次のように,\textbf{JAchar}の範囲を変更したちょうどその行においては挙動が異なる:
\begin{LTXexample}
\fontspec[Ligatures=TeX]{TeX Gyre Termes}
\ltjsetparameter{autoxspacing=false}
y\ltjsetparameter{jacharrange={+6}}zい
u
\end{LTXexample}
-上ソース中の「あ」は欧文文字扱いであり.
+上ソース中の「あ」は\textbf{ALchar}(欧文扱い)であり.
ここで使用している欧文フォント\TeX\ Gyre Termesは「あ」を含まない.
よって,出力に「あ」は現れないことは不思議ではない.
それでも,\pTeX とまったく同じ挙動を示すならば,出力は
上のように異なる挙動となっているが,それは以下の理由による:
\begin{itemize}
\item 3行目を \texttt{process\_input\_buffer} で処理する時点では,
- 「あ」は和文文字扱いである.よって3行目は和文文字で終わることになり,
- コメント文字 \texttt{U+FFFFF} が追加される.
+ 「あ」は\textbf{JAchar}(和文扱い)である.よって3行目は\textbf{JAchar}で終わることになり,
+ \cs{ltjlineendcomment}番のコメント文字が追加される.
よって,直後の改行文字は無視されることになり,空白は入らない.
\item 4行目を \texttt{process\_input\_buffer} で処理する時点では,
- 「い」は欧文文字扱いである.よって4行目は欧文文字で終わることになり,
+ 「い」は\textbf{ALchar}である.よって4行目は\textbf{ALchar}で終わることになり,
直後の改行文字は空白に置き換わる.
\end{itemize}
-このため,トラブルを避けるために,和文文字の範囲を\cs{ltjsetparameter}で編集した場合,
+このため,トラブルを避けるために,\textbf{JAchar}の範囲を\cs{ltjsetparameter}で編集した場合,
その行はそこで改行するようにした方がいいだろう.
%</ja>
\Node{glyph}{accent}\\\noalign{\medskip}
\Node{hbox}{accent (shifted vert.)}
\end{array}\right\}\longrightarrow
-\Node{kern}{$\mathit{subtype}=2$}}^{\text{(a)}}
+\Node{kern}{$\mathit{subtype}=2$}}^{\text{(b)}}
\longrightarrow
\Node{glyph}{$p$}\longrightarrow
\overbrace{%
-\Node{kern}{italic corr.}}^{\text{(b)}}
+\Node{kern}{italic corr.}}^{\text{(a)}}
\]
%<*en>
説明用に準備した概念であって,実際のLuaコード中にそのように書かれているわけではないことに注意.
\begin{description}
-\item[\textit{id\_jglyph}] 和文文字.\\
-$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は,その和文文字を表している
+\item[\textit{id\_jglyph}] \textbf{JAchar}(和文文字).\\
+$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は,その\textbf{JAchar}を表している
\textit{glyph\_node}そのものである.
-\item[\textit{id\_glyph}] 和文文字を表していない\textit{glyph\_node}~$p$.\\
-多くの場合,$p$は欧文文字を格納しているが,「ffi」などの合字によって作られた
+\item[\textit{id\_glyph}] \textbf{JAchar}(和文文字)以外のものを表す\textit{glyph\_node}~$p$.\\
+多くの場合,$p$は\textbf{ALchar}(欧文文字)を格納しているが,「ffi」などの合字によって作られた
\textit{glyph\_node}である可能性もある.
前者の場合,$\mathit{Np}.\mathit{head}$,~$\mathit{Np}.\mathit{tail} = p$である.
一方,後者の場合,
空白等の実際の挿入を行うことは前に書いたが,ここでの説明では,問題にしているクラスタ\textit{Np}は「後ろ側」のクラスタである
とする.「前側」のクラスタについては,以下の説明で\textit{head}が\textit{last}に置き換わることに注意すること.
\begin{description}
-\item[和文A] リスト中に直接出現している和文文字.
+\item[和文A] リスト中に直接出現している\textbf{JAchar}.
\textit{id}が\textit{id\_jglyph}であるか,\\
\textit{id}が\textit{id\_pbox}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
-\item[和文B] リスト中のhboxの中身の先頭として出現した和文文字.和文Aとの違いは,これの前に
+\item[和文B] リスト中のhboxの中身の先頭として出現した\textbf{JAchar}.和文Aとの違いは,これの前に
JFMグルーの挿入が行われない(\Param{xkanjiskip},~\Param{kanjiskip}は入り得る)ことである.\\
\textit{id}が\textit{id\_hlist}か\textit{id\_disc}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
-\item[欧文] リスト中に直接/hboxの中身として出現している欧文文字.次の3つの場合が該当:
+\item[欧文] リスト中に直接/hboxの中身として出現している「\textbf{JAchar}以外の文字」.次の3つの場合が該当:
\begin{itemize}
\item \textit{id}が\textit{id\_glyph}である.
\item \textit{id}が\textit{id\_math}である.
一方.前者(段落)の場合は,リストの末尾は常に \cs{penalty10000} と,
\cs{parfillskip} 由来のグルーが存在する.%よって,最後のクラスタ\textit{Np}は
%この \cs{parfillskip} 由来のグルーとなり,実質的な中身の最後はその1つ前のクラスタ\textit{Nq}となる.
-段落の最後の「通常の和文文字${}+{}$句点」が独立した行となるのを防ぐために,
+段落の最後の「通常の\textbf{JAchar}${}+{}$句点」が独立した行となるのを防ぐために,
\Param{jcharwidowpenalty}の値の分だけ適切な場所のペナルティを増やす.
ペナルティ量を増やす場所は,\textit{head}が\textbf{JAchar}であり,
この場合が全ての場合の基本となる.
\paragraph{「右空白」の算出}
-まず,「右空白」にあたる量を算出する.通常はこれが,隣り合った2つの和文文字間に入る空白量となる.
+まず,「右空白」にあたる量を算出する.通常はこれが,隣り合った2つの\textbf{JAchar}間に入る空白量となる.
\begin{description}
\item[JFM由来{[M]}] JFMの文字クラス指定によって入る空白を以下によって求める.この段階で空白量が未定義(未指定)だった場合,
デフォルト値\Param{kanjiskip}を採用することとなるので,次へ.
\item[\Param{kanjiskip}~{[K]}] 上の[M]において空白が定まらなかった場合,
以下で定めた量「右空白」として採用する.
この段階においては,\cs{inhibitglue} は効力を持たないため,
-結果として,2つの和文文字間には常に何らかのグルー/カーンが挿入されることとなる.
+結果として,2つの\textbf{JAchar}間には常に何らかのグルー/カーンが挿入されることとなる.
\begin{enumerate}
\item 両クラスタ(厳密には$\mathit{Nq}.\mathit{tail}$,$\mathit{Np}.\mathit{head}$)の中身の文字コードに対する
\Param{autospacing}パラメタが両方ともfalseだった場合は,長さ0のglueとする.
\item ユーザ側から見た\Param{kanjiskip}パラメタの自然長が$\cs{maxdimen}=(2^{30}-1)\,{\rm sp}$で
なければ,\Param{kanjiskip}パラメタの値を持つglueを採用する.
\item 2.でない場合は,\textit{Nq}, \textit{Np}で使われているJFMに指定されている\Param{kanjiskip}の値を用いる.
-どちらか片方のクラスタだけが和文文字(\textsf{和文A}・\textsf{和文B})のときは,そちらのクラスタで使われている
+どちらか片方のクラスタだけが\textbf{JAchar}(\textsf{和文A}・\textsf{和文B})のときは,そちらのクラスタで使われている
JFM由来の値だけを用いる.もし両者で使われているJFMが異なった場合は,上の[M]~3.と同様の方法を用いて調整する.
\end{enumerate}
\end{description}
\item 禁則用ペナルティも,以前述べた\textsf{P-normal~[PN]}と同じである.
\end{itemize}
\begin{description}
-\item[Boundary-B~{[\OB]}] 和文文字と「和文でないもの」との間に入る空白を以下によって求め,
+\item[Boundary-B~{[\OB]}] \textbf{JAchar}と「\textbf{JAchar}でないもの」との間に入る空白を以下によって求め,
未定義でなければそれを「右空白」として採用する.
\textsf{JFM-origin~[M]}の変種と考えて良い.
これによって定まる空白の典型例は,和文の閉じ括弧と欧文文字の間に入る半角アキである.
\item 禁則用ペナルティは,以前述べた\textsf{P-normal~[PN]}と同じである.
\end{itemize}
\begin{description}
-\item[Boundary-A~{[\OA]}] 「和文でないもの」と和文文字との間に入る空白を以下によって求め,
+\item[Boundary-A~{[\OA]}] 「\textbf{JAchar}でないもの」と\textbf{JAchar}との間に入る空白を以下によって求め,
未定義でなければそれを「右空白」として採用する.
\textsf{JFM-origin~[M]}の変種と考えて良い.
これによって定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである.
そのため,「右空白」がglueであれば,その直前に \cs{penalty10000} を挿入する.
\end{description}
-なお,「右空白」はカーンの%,「左空白」は未定義の
-\[
- \overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
-\]
-のような状況を考える.
-このとき,$a$,即ち「あ」の\Param{postbreakpenalty}がいかなる値であっても,
-この2クラスタ間は最終的に
-\begin{equation}
- \overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
-\Node{kern}{右空白}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
-\label{eq-gref}
-\end{equation}
-となり,$a$分のペナルティは挿入されないことに注意して欲しい.
-\Param{postbreakpenalty}は($a$は)殆どの場合が非負の値と考えられ,そのような場合では
-\eqref{eq-gref}と
-\[
- \overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
-\Node{penalty}{$a$}\longrightarrow
-\Node{kern}{右空白}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
-\]
-との間に差異は生じない%
-\footnote{kern$\rightarrow$glueが1つの行分割可能点(行分割に伴うペナルティは0)
-であるため,たとえ$a=10000$であっても,\textit{Nq}と\textit{Np}の間で行分割を禁止することはできない.}.
-
\paragraph{箱・グルー・カーンと和文Aの間}
\textit{Np}が\textsf{箱}・グルー・カーンのいずれかで,\textit{Np}が\textsf{和文A}であった場合は,
すぐ上の(\textit{Nq}と\textit{Np}の順序が逆になっている)場合と同じである.
\paragraph{和文Aと和文Bの違い}
先に述べたように,\textsf{和文B}はhboxの中身の先頭(or 末尾)として出現している
-和文文字である.リスト内に直接ノードとして現れている和文文字(\textsf{和文A})との違いは,
+\textbf{JAchar}である.リスト内に直接ノードとして現れている\textbf{JAchar}(\textsf{和文A})との違いは,
\begin{itemize}
\item \textsf{和文B}に対しては,JFMの文字クラス指定から定まる空白
\textsf{JFM-origin~[M]},\textsf{Boundary-A~[\OA]},\textsf{Boundary-B~[\OB]})の挿入は行われない.
\end{itemize}
%</ja>
+%<*ja>
+\section{ベースライン補正の方法}
+\subsection{\texttt{yoffset} フィールド}
+\Param{yalbaselineshift}等のベースライン補正は,基本的には対象となっている
+\textit{glyph\_node}の \texttt{yoffset} フィールドの値を増減することによって
+実装されている.なお,\texttt{yoffset} の値は上方向への移動量であるのに対し,
+\Param{yalbaselineshift}などは下方向への移動量である.
+
+さて,\texttt{yoffset} の増減によって見かけのグリフ位置は上下に移動するが,
+仮想ボディの高さ$h$,深さ$d$については
+\begin{description}
+\catcode`\<=12\catcode`\>=12
+ \item[$\texttt{yoffset}\geq 0$のとき]
+$h = \max(\texttt{height} + \texttt{yoffset}, 0)$,
+$d = \max(\texttt{depth} - \texttt{yoffset}, 0)$,
+ \item[$\texttt{yoffset}<0$のとき]
+$h = \max(\texttt{height} + \texttt{yoffset}, 0)$, $d=\texttt{depth}$.
+\end{description}
+という仕様になっている.つまり,\texttt{yoffset} が負(グリフを下ける)の場合に深さは増加しな
+い(表\ref{tab:yoffset_and_im}参照).
+
+\begin{table}[t]
+\caption{\texttt{yoffset} and imaginary body}
+\label{tab:yoffset_and_im}
+\centering\small
+\fboxsep0pt
+\def\T#1#2{\fcolorbox{blue}{white}{%
+ \setbox0=\hbox{\LARGE #1%
+ \directlua{
+ local p = tex.nest[tex.nest.ptr].tail
+ p.yoffset = #2 * 65536
+ }%
+ }%
+ \copy0\kern-\wd0\smash{\color{red}\vrule width \wd0 height 0.2pt depth 0.2pt}%
+}}
+\begin{tabular}{>{\bfseries}lccccc}
+\toprule
+\texttt{yoffset}&10\,pt&5\,pt&0&$-5$\,pt&$-10$\,pt\\
+\midrule
+仮想ボディ&\T{y}{10}, \T{H}{10}&\T{y}{5}, \T{H}{5}&\T{y}{0}, \T{H}{0}%
+&\T{y}{-5}, \T{H}{-5}&\T{y}{-10}, \T{H}{-10}\\[10pt]
+\bottomrule
+\end{tabular}
+\end{table}
+
+\subsection{\textbf{ALchar}の補正}
+上記の問題について,\textbf{ALchar}のベースライン補正では
+「正しい深さ」を持った罫線(rule)を補うという対応策をとった.
+この罫線による補正は,\textit{id}が\textit{id\_glyph}であるクラスタ単位,
+大雑把に言えば音節単位で行われる.
+文字列``Typeset''を
+\begin{itemize}
+ \item フォントはLatin Modern Roman (\texttt{lmroman10-regular.otf}) 10\,pt
+ \item \Param{yalbaselineshift}は5\,pt
+\end{itemize}
+という状況で組んだ場合を例にとって説明しよう.
+
+\LuaTeX・\Pkg{luaotfload}によるカーニング・ハイフネーションが終わった段階では,……
+
+
+
+%</ja>
+
%<en>\section{Patch for the \Pkg{listings} Package}
%<ja>\section{\Pkg{listings} パッケージへの対応}
%<*en>
In \LuaTeX-ja, the problem is resolved by using the \verb+process_input_buffer+ callback.
-The callback function inserts the output command (active character \texttt{U+FFFFF})
+The callback function inserts the output command (active character \cs{ltjlineendcomment})
before each letter above \texttt{U+0080}.
This method can omits the process to make all Japanese characters active
(most of the activated characters are not used in many cases).
%<*ja>
\LuaTeX-jaでは,\verb+process_input_buffer+ コールバックを利用することで,
「各行に出現する\texttt{U+0080}以降の文字に対して,それらの出力命令を前置する」
-という方法をとっている.出力命令としては,アクティブ文字化した \texttt{U+FFFFF} を用いている.
+という方法をとっている.出力命令としては,アクティブ文字化した\cs{ltjlineendcomment}を用いている.
これにより,(入力には使用されていないかもしれない)和文文字をもすべてアクティブ化する手間もなく,
見通しが良い実装になっている.
%</ja>
意識する必要はない.
%</ja>
-%<en>\subsection{Notes}
+%<en>\subsection{Notes and additional keys}
%<ja>\subsection{注意}
-%<*en>
-\paragraph{Escaping to \LaTeX}
-We used the \verb+process_input_buffer+ callback to output \textbf{JAchar}s.
-But it has a drawback; any commands whose name contains a \textbf{JAchar}
-cannot be used in any ``escape to \LaTeX''.
+% %<*en>
+% \paragraph{Escaping to \LaTeX}
+% We used the \verb+process_input_buffer+ callback to output \textbf{JAchar}s.
+% But it has a drawback; any commands whose name contains a \textbf{JAchar}
+% cannot be used in any ``escape to \LaTeX''.
+
+% Consider the following input:
+% %</en>
+% %<*ja>
+% \paragraph{\LaTeX へのエスケープ}
+% 日本語対応を行うために \verb+process_input_buffer+ を使用したことで,
+% \texttt{texcl},~\texttt{escapeinside}といった\emph{「\LaTeX へのエスケープ」中では,
+% \textbf{JAchar}を名称の一部に含む制御綴は使用不可能}である.
+% 例えば次のような入力を考えよう:
+% %</ja>
+% \begin{verbatim*}
+% \begin{lstlisting}[escapechar=\#]
+% #\ほげ xぴよ#
+% \end{lstlisting}
+% \end{verbatim*}
+% %<en>The line~2 is transformed by the callback to
+% %<ja>ここで,2行目は \verb+process_input_buffer+ の作用により,
+% \begin{lstlisting}[showspaces, escapechar=\!]
+% #\!\IVSA FFFFF!ほ!\IVSA FFFFF!げ x!\IVSA FFFFF!ぴ!\IVSA FFFFF!よ#
+% \end{lstlisting}
+% %<*en>
+% before the line is actually processed.
+% In the escape (between the character ``\verb+#+''),
+% the category code of \texttt{U+FFFFF} is set to 9~(\emph{ignored}).
+% Hence the control symbol ``\cs{}\IVSA FFFFF'' will be executed,
+% instead of ``\verb+\ほげ+''.
+% %</en>
+% %<*ja>
+% と変換されてから,実際の処理に回される.
+% 「\verb+#+」で挟まれた「\LaTeX へのエスケープ」中では\
+% \texttt{U+FFFFF} のカテゴリーコードは9~(\textit{ignored})となるので,
+% 結局「\verb+\ほげ+」の代わりに
+% 「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる.
+% %</ja>
-Consider the following input:
-%</en>
-%<*ja>
-\paragraph{\LaTeX へのエスケープ}
-日本語対応を行うために \verb+process_input_buffer+ を使用したことで,
-\texttt{texcl},~\texttt{escapeinside}といった\emph{「\LaTeX へのエスケープ」中では,
-\textbf{JAchar}を名称の一部に含む制御綴は使用不可能}である.
-例えば次のような入力を考えよう:
-%</ja>
-\begin{verbatim*}
-\begin{lstlisting}[escapechar=\#]
-#\ほげ xぴよ#
-\end{lstlisting}
-\end{verbatim*}
-%<en>The line~2 is transformed by the callback to
-%<ja>ここで,2行目は \verb+process_input_buffer+ の作用により,
-\begin{lstlisting}[showspaces, escapechar=\!]
-#\!\IVSA FFFFF!ほ!\IVSA FFFFF!げ x!\IVSA FFFFF!ぴ!\IVSA FFFFF!よ#
-\end{lstlisting}
%<*en>
-before the line is actually processed.
-In the escape (between the character ``\verb+#+''),
-the category code of \texttt{U+FFFFF} is set to 9~(\emph{ignored}).
-Hence the control symbol ``\cs{}\IVSA FFFFF'' will be executed,
-instead of ``\verb+\ほげ+''.
-%</en>
-%<*ja>
-と変換されてから,実際の処理に回される.
-「\verb+#+」で挟まれた「\LaTeX へのエスケープ」中では\
-\texttt{U+FFFFF} のカテゴリーコードは9~(\textit{ignored})となるので,
-結局「\verb+\ほげ+」の代わりに
-「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる.
-%</ja>
+\paragraph{Variation selectors}
+\Pkg{lltjp-listings} add two keys, namely \texttt{vsraw}~and~\texttt{vscmd},
+which specify how variation selectors are treated in
+\texttt{lstlisting} or other enviroments.
+Note that these additional keys are not usable in the preamble,
+since \Pkg{lltjp-listings} is loaded at \verb+\begin{document}+.
+\texttt{vsraw} is a key which takes a boolean value, and its default value is
+false.
+\begin{itemize}
+ \item If the \texttt{vsraw} key is true, then
+variation selectors are ``combined'' with the previous character.
+%</en>
%<*ja>
\paragraph{異体字セレクタの扱い}
\texttt{lstlisting} 環境などの内部にある異体字セレクタを扱うため,
\item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は,
以下の例(左側は入力,右側はその出力)のようになる.
+%</ja>
\begin{LTXexample}
\begin{lstlisting}[vsraw=true]
葛󠄀城市,葛󠄁飾区,葛西
\end{lstlisting}
\end{LTXexample}
+%<*en>
+\item If the \texttt{vsraw} key is false, then
+variation selectors are typeset by an appropriate command, which is specified by
+ the \texttt{vscmd} key.
+The default setting of the \texttt{vscmd} key produces the following.
+%</en>
+%<*ja>
\item falseの場合は,異体字セレクタは適当な命令によって「見える形で」出力される.
どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり,
\Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される.
+%</ja>
\begin{LTXexample}
\begin{lstlisting}[vsraw=false,
vscmd=\ltjlistingsvsstdcmd]
葛󠄀城市,葛󠄁飾区,葛西
\end{lstlisting}
\end{LTXexample}
-ちなみに,本ドキュメントでは次のようにしている:
+%<ja> ちなみに,本ドキュメントでは次のようにしている:
+%<en> For example, the following code is the setting of the \texttt{vscmd} key in this document.
\begin{lstlisting}[numbers=left]
\def\IVSA#1#2#3#4#5{%
\textcolor{blue}{\raisebox{3.5pt}{\tt%
\lstset{vscmd=\IVSB}
\end{lstlisting}
\end{itemize}
-既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\
+%<*en>
+The default output command of variation selectors is stored in \verb+\ltjlistingsvsstdcmd+.
+%</en>
+%<*ja>
+既定の出力命令を復活させたい場合は\ \verb+vscmd=\ltjlistingsvsstdcmd+\
とすれば良い.
%</ja>
-%<en>\subsection{Class of Characters}
+%<*en>
+\paragraph{The \texttt{doubleletterspace} key}
+Even the column format is \texttt{[c]fixed}, sometimes characters are not vertically aligned.
+The following example is typeset with \texttt{basewidth=2em}, and
+you'll see the leftmost ``\texttt{H}'' are not vertically aligned.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left]
+:H:
+:HHHH:
+\end{lstlisting}
+
+\Pkg{lltjp-listing} adds the \texttt{doubleletterspace} key (not activated by default, for
+compatibility) to
+improve the situation, namely doubles inter-character space in each output unit.
+With this key, the above input now produces better output.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace]
+:H:
+:HHHH:
+\end{lstlisting}
+%</en>
+%<*ja>
+\paragraph{\texttt{doubleletterspace}キー}
+\Pkg{listings}パッケージで列揃えが \texttt{[c]fixed} となっている場合でも,
+場合によっては文字が縦に揃わない場合もある.
+例を以下に示そう.これは強調するために \texttt{basewidth=2em} を設定している.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left]
+:H:
+:HHHH:
+\end{lstlisting}
+1行目と2行目の「\texttt{H}」の位置が揃っていないが,
+これは出力単位ごとに,先頭・末尾・各文字間に同じ量の空白を挿入することによる.
+
+\Pkg{lltjp-listing}では,このような症状を改善させるために \texttt{doubleletterspace} キー
+を追加した(標準では互換性のために無効になっている).このキーを有効にすると,
+出力単位中の各文字間の空白を2倍にすることで文字を揃いやすくしている.
+上と同じものを \texttt{doubleletterspace} キーを有効にして組んだものが以下であり,
+きちんと「\texttt{H}」の位置が揃っていることが分かる.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace]
+:H:
+:HHHH:
+\end{lstlisting}
+%</ja>
+
+%<en>\subsection{Class of characters}
%<ja>\subsection{文字種}
%<en>Roughly speaking, the \Pkg{listings} package processes input as follows:
\end{itemize}
%<*en>
-Characters above \texttt{U+0080} \emph{except Variation Selectors}
+Characters above or equal to~\texttt{U+0080} \emph{except Variation Selectors}
are classified into above 5~classes by the following rules:
%</en>
%<*ja>
Letter, Other, Kanji, Open, Closeのどれに属するかは次によって決まる:
%</ja>
\begin{itemize}
-%<en>\item \textbf{ALchar}s above \texttt{U+0080} are classified as Letter.
-%<ja>\item (\texttt{U+0080}以降の)\textbf{ALchar}は,すべてLetter扱いである.
+%<en>\item \textbf{ALchar}s above or equal to~\texttt{U+0080} are classified as Letter.
+%<ja>\item \<(\texttt{U+0080}以降の)\textbf{ALchar}は,すべてLetter扱いである.
%<en>\item \textbf{JAchar}s are classified in the order as follows:
%<ja>\item \textbf{JAchar}については,以下の順序に従って文字種を決める:
\item \Param{kanjiskip}
\end{enumerate}
\begin{enumerate}
- \item 行末の和文文字を移動したことで$\textit{total}=0$となれば,
+ \item 行末の\textbf{JAchar}を移動したことで$\textit{total}=0$となれば,
調整の必要はなく,行が格納されているhboxの
\texttt{glue\_set}, \texttt{glue\_sign}, \texttt{glue\_order}を再計算すればよい.
以降,$\textit{total}\neq 0$と仮定する.
が連続した場合に,$p$のフォントに対応したが持つ「異体字情報」に従って出力するグリフを変える.
しかし,単に$p.\textit{char}$を変更するだけでは,後から
-font featureの適用(すぐ下)により置換される可能性がある.そのため,
+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による置換が,
-font featureの適用で上書きされてしまうのを防止するためである.
+OpenType機能の適用で上書きされてしまうのを防止するためである.
\item[\tt ltj.main\_process] \textbf{JAglue}の挿入処理(\ref{sec-jfmglue}章)と,
JFMの指定に従って各\textbf{JAchar}の「寸法を補正」することを行う.
\end{description}
\texttt{fontloader} の呼び出しでかなり時間を消費することから,
%%% to_table を使わなくしたことで,メモリ使用量は減った
IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
+%</ja>
+%<*ja>
\section{複数フォントの「合成」(未完)}
-
\section{\LuaTeX-jaにおけるキャッシュ}
\Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を
キャッシュとして保存しているのと同様の方法で,
非埋め込みの中国語・韓国語フォントを定義する場合,同様のキャッシュが生成される.
キャッシュの名称,必要となるCMapについては表\ref{tab:cid-cache}を参照して欲しい.
-\item[ivs\_***.lua]
-フォント``\texttt{***}''における異体字情報を格納している.構造は以下の通り:
+\item[extra\_***.lua]
+フォント``\texttt{***}''における異体字セレクタの情報,縦組用字形への変換テーブル,そして
+縦組時における幅を格納している.構造は以下の通り:
%</ja>
%<*en>
-\subsection{Use of Cache}
+\subsection{Use of cache}
\LuaTeX-ja uses the following cache:
\begin{cslist}
\item[ltj-cid-auto-adobe-japan1.lua]
The font table of a CID-keyed non-embedded Japanese font.
This is loaded in every run.
-It is created from two CMaps, \texttt{UniJIS2004-UTF32-H} and
+It is created from three CMaps, \texttt{UniJIS2004-UTF32-\{H,V\}} and
\texttt{Adobe-Japan1-UCS2},
and this is why these two CMaps are needed in the first run of \LuaTeX-ja.
to use other CID-keyed non-embedded fonts for Chinese or Korean,
as in Page~\pageref{para-cid}.
-\item[ivs\_***.lua]
-This file stores the table of Unicode variants in a font ``\texttt{***}''.
-The structure of the table is the following:
+\item[extra\_***.lua]
+This file stores the table which stores the following.
+\begin{itemize}
+ \item unicode variants in a font ``\texttt{***}''
+ \item vertical width of glyphs, if it is not equal to the sum of
+the height of ascender and the depth of descender
+ \item vertical variants
+\end{itemize}
+The following is the structure of the that table.
%</en>
\begin{table}[!tb]
\bf \texttt{cid} key&\bf name of the cache &
\multicolumn{2}{c}{\bf used CMaps}\\
\midrule
-Adobe-Japan1-*<j-cid-auto-adobe-japan1.lua&UniJIS2004-UTF32-H&Adobe-Japan1-UCS2\\
-Adobe-Korea1-*<j-cid-auto-adobe-korea1.lua&UniKS-UTF32-H&Adobe-Korea1-UCS2\\
-Adobe-GB1-*<j-cid-auto-adobe-gb1.lua&UniGB-UTF32-H&Adobe-GB1-UCS2\\
-Adobe-CNS1-*<j-cid-auto-adobe-cns1.lua&UniCNS-UTF32-H&Adobe-CNS1-UCS2\\
+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-GB1-*<j-cid-auto-adobe-gb1.lua&UniGB-UTF32-*&Adobe-GB1-UCS2\\
+Adobe-CNS1-*<j-cid-auto-adobe-cns1.lua&UniCNS-UTF32-*&Adobe-CNS1-UCS2\\
\bottomrule
\end{tabular}
\end{table}
{
[10955]={ -- U+2ACB "Subset Of Above Not Equal To"
[65024]=983879, -- <2ACB FE00>
+ ["vwidth"]=0.98, -- vertical width
},
[37001]={ -- U+9089 "邉"
[0]=37001, -- <9089 E0100>
991049, -- <9089 E0101>
...
+ ["vform"]=995025, -- vertical variant
},
...
+ ["unicodes"]={
+ ["aj102.pe.vert"]=984163, -- glyph name to unicode
+ ...
+ }
},
["chksum"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", -- checksum of the fontfile
- ["version"]=4, -- version of the cache
+ ["version"]=11, -- version of the cache
}
\end{lstlisting}
%<*ja>
\cs{vbadness} を一時的に10000に変更し,hpack, vpack後に元の値に戻す」処理を行ってい
る.
}.
- \item \cs{vsplit}によってvboxを分割した時の「残り」.
+ \item \cs{vsplit}によってvboxを分割した時の「残り」の先頭.
\item \LuaTeX-ja読み込み前に作成したボックスの寸法を \cs{ltjsetwd} 等によって変更した時.
+ \item \cs{insert} によるinsertionでは,中身の先頭に\textit{direction}~whatsitは作られず,
+その代わりに中身の各ボックス・罫線の直前に作られる\footnote{%
+ これは,ページ分割の過程でinsertionが分割される時,「現在のページで出力される部分」が空と
+ なることがあることによる.先頭にwhatsitを置くと,最悪でも「現在のページにwhatsitが
+ 残る」ことになってしまう.}.
\end{itemize}
なお,\verb+\vtop{...}+ の場合は,先頭にdirection whatsitを置くと
ボックスの高さが常に0\,ptになるという問題が発生する.そのため,この場合に限っては
\[
\xymatrix{
{}\Node{glyph}{`平'}\ar[r]&{}\Node{glyph}{`成'}\ar[r]&
- {}\HNode{hlist}{10.00003}{3.02779}{0.0}\ar[r]\ar[d]^{\text{中身}}&{}\Node{glyph}{`年'}\\
+ {}\HNode{hbox}{10.00003}{3.02779}{0.0}\ar[r]\ar[d]^{\text{中身}}&{}\Node{glyph}{`年'}\\
&&{}\Node{whatsit}{\cs{tate}}\ar[r]&{}\Node{glyph}{`2'}\ar[r]&{}\Node{glyph}{`6'}
}
\]
&{}\textcolor{blue}{\Node{penalty}{0}}
\ar`r[d] `[l] `[ddll] `[dl] [dl]
\\
- &&{}\textcolor{red}{\HNode{hlist}{3.02779}{10.00003}{0.0}}\ar[r]\ar[d]^{\text{中身}}
+ &&{}\textcolor{red}{\HNode{\textit{dir\_box} (\cs{yoko})}{3.02779}{10.00003}{0.0}}\ar[r]\ar[d]^{\text{中身}}
&{}\textcolor{blue}{\Node{penalty}{0}}\ar[r]
&{}\Node{glyph}{`年'}\\
- &&{}\HNode{\textit{dir\_box} (\cs{yoko})}{10.00003}{3.02779}{0.0}\ar[d]^{\text{中身}}\\
+ &&{}\HNode{hbox}{10.00003}{3.02779}{0.0}\ar[d]^{\text{中身}}\\
&&{}\Node{whatsit}{\cs{tate}}\ar[r]&{}\Node{glyph}{`2'}\ar[r]&{}\Node{glyph}{`6'}
}
\]
{}\Node{whatsit}{\cs{dtou}}\ar[r]&
{}\Node{glyph}{`a'}\ar[r]&
{}\textcolor{red}{\HNode{\textit{dir\_box} (\cs{dtou})}{20.0}{9.0}{0.0}}\ar[d]_{\text{中身}}\\
- &&{}\HNode{hlist}{9.0}{5.0}{2.0}\ar[d]_{\text{中身}}\\
+ &&{}\HNode{hbox}{9.0}{5.0}{2.0}\ar[d]_{\text{中身}}\\
&&{}\Node{whatsit}{\cs{yoko}}\ar[r]&{}\Node{rule}{}
}
\]
\bibitem{jlisting} Thor Watanabe. \newblock Listings\ -\ MyTeXpert.
%<en>\newblock
%<ja>\\\null\hfill
-\url{http://mytexpert.sourceforge.jp/index.php?Listings}
+\url{http://mytexpert.osdn.jp/index.php?Listings}
\bibitem{jlreq} W3C Japanese Layout Task Force~(ed). \newblock
Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \newblock
\url{http://www.w3.org/TR/jlreq/}%