%%%%%%%%
\makeatletter
%%%%%%%%
-
-%%%%%%%% record loaded packages
-\let\ltjpkglist\empty
-\newif\if@real@append@list
-\def\@append@newentry#1#2{{%
- \@real@append@listtrue \def\@tempa{#2}%
- \let\@pkglist\@append@newentry@pkglist#1%
- \if@real@append@list
- \let\@pkglist=\relax\xdef#1{#1\@pkglist{#2}}%
- \fi}}
-\def\@append@newentry@pkglist#1{%
- \def\@tempb{#1}%
- \ifx\@tempa\@tempb\@real@append@listfalse\fi}
-\def\@addtofilelist#1{\@append@newentry\ltjpkglist{#1}}
-\let\@listfiles\empty
-
+\directlua{if jit then jit.on() end}
%<*en>
\usepackage[margin=25mm,lmargin=30mm,rmargin=30mm,footskip=6mm]{geometry}
\usepackage{luatexja-adjust}\ltjdisableadjust
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といった計算機で日本語を扱う際の状況の変化に追従すること
を怠ってしまったのだ.
%<*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
+target of development was to implement features of \pTeX. However,
+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>
ちょ\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 ********, \LuaTeX-ja supports vertical writing;
+but this feature must \emph{not} be confused with $\Omega$-style direction support of \LuaTeX\
+itself. ...
+%</en>
%<*ja>
-\item \LuaTeX-jaでは,\pTeX と同様に漢字・仮名を制御綴内に用いることができ,
-\cs{西暦} などが正しく動作するようにしている.
-但し,制御綴中に使える和文文字が\pTeX・\upTeX と全く同じではないことに注意すること.
-%</ja>
-
-%<*ja>
-\item ****版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
-\LuaTeX のコールバックの制限などにより,特に異なった組方向のボックスを扱う場合には
-仕様が異なるので注意すること.
+\paragraph{組方向}
+****版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
+なお,\LuaTeX 本体も,$\Omega$流の組方向をサポートしているが,それとは全くの別物であること
+に注意してほしい.
+\LuaTeX のコールバックや実装により,特に異なった組方向のボックスを扱う場合には
+\cs{wd}, \cs{ht}, \cs{dp}等の仕様が異なるので注意.詳細は第\ref{sec-direction}節を参照.
%</ja>
-\end{itemize}
%<*en>
-For detailed information, see Part~\ref{part-imp}.
+\paragraph{\cs{discretionary}}
+Japanese characters in discretionary break (\cs{discretionary}) is not supported.
%</en>
%<*ja>
-詳細については第\ref{part-imp}部を参照.
+\paragraph{\cs{discretionary}}
+ \cs{discretionary} 内に直接和文文字を記述することは,\pTeX においても想定されていなかった
+ 感があるが.\LuaTeX-jaにおいても想定していない.和文文字をどう
+ しても使いたい場合は \cs{hbox} で括ること.
%</ja>
+
+
%<en>\subsection{Notations}
%<ja>\subsection{用語と記法}
(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>
%<en>The following packages are needed for the \LuaTeX-ja\ package.
%<ja>\LuaTeX-jaパッケージには,次のパッケージ類が必要である.
\begin{itemize}
-\item \LuaTeX\ beta-0.74.0 (or later)
-\item \Pkg{luaotfload} v2.2 (or later)
+\item \LuaTeX\ snapshot rev~5024 (or later)
+\item \Pkg{luaotfload} v2.5 (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/})}
\end{itemize}
%<*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.}
+\emph{This version of \LuaTeX-ja no longer supports \TeX~Live~2013 (or older version).
+If you want to use this version with \TeX~Live~2014, you have to build a development
+version of \LuaTeX\ from its source.}
\medskip
\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において更新されたことによる.
+\emph{本バージョンの\LuaTeX-jaは\TeX~Live~2013以前では動作しない.\TeX~Live~2014で
+用いたい場合は,自力で\LuaTeX 開発版をソースからビルドする必要がある.}
\medskip
\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
\end{lstlisting}
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
\end{lstlisting}
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¼」以外の方法でアーカイブを取得したならば,それを展開する.
+\item ã\80\8cGitã\83ªã\83\9dã\82¸ã\83\88ã\83ªã\82\92ã\82¯ã\83ã\83¼ã\83³」以外の方法でアーカイブを取得したならば,それを展開する.
\texttt{src/}をはじめとしたいくつかのディレクトリができるが,
動作には\texttt{src/}以下の内容だけで十分.
%</ja>
%</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
また,どちらのファミリでもイタリック体・スラント体は定義されない.
%</ja>
-
%<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
%<ja>\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される.
+
+%<*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>
脚注とボトムフロートの順序は\LaTeX 通りとした.もし\pLaTeX の出力順序が好みならば,
\Pkg{stfloats}パッケージを利用して
\begin{lstlisting}
- \usepackage{stfloats} \fnbelowfloat
+ \usepackage{stfloats}\fnbelowfloat
\end{lstlisting}
のようにすればよい.\Pkg{footmisc}パッケージを \texttt{bottom}\ オプションを指定して
読み込むという方法もあるが,それだとボトムフロートと脚注の間が開いてしまう.
%</ja>
+%%% ↑は英訳しない
%<en>\section{Changing Fonts}
%<ja>\section{フォントの変更}
\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
\cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ.
%</ja>
+
\end{itemize}
%<*en>
\emph{if and only if \texttt{deluxe} option is specified}.
%</en>
%<*ja>
-上の表において,*つきのフォント(KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション非指定時に}
+上の表において,*つきのフォント(KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に}
ゴシック体細字として用いられる.
%</ja>
\end{LTXexample}
%<*en>
-Note that setting a positive value to
-\Param{yalbaselineshift}~or~\Param{talbaselineshift} does not
-increase the depth of \textbf{ALchar}, as shown below.
-This is because these parameters are implemented by setting \verb+yoffset+
-field of a glyph node, and this does not increase the depth of the glyph.
-This problem does not apply for \Param{yjabaselineshift}, since
-\Param{yjabaselineshift}~and~\Param{tjabaselineshift}
-use a different implementation method.
-%</en>
-%<*ja>
-なお,\Param{yalbaselineshift},~\Param{talbaselineshift}パラメータに
-正の値を指定しても,
-下の例のように\textbf{ALchar}の深さは増加しないことに注意.
-これは,2パラメータがglyph~nodeの\verb+yoffset+を使って
-実装されているためである.
-\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータは
-別の方法を使って実装しているので,
-このような問題は起こらない.
-%</ja>
-\begin{LTXexample}[width=.3\textwidth]
-\leavevmode\fboxsep=0pt
- \ltjsetparameter{yjabaselineshift=0pt,
- yalbaselineshift=0pt}
-\vrule width 105pt height 0.4pt depth 0pt \hskip-95pt
-\fbox{\ltjsetparameter{yalbaselineshift=10pt}あいうxyz}
-\fbox{\ltjsetparameter{yalbaselineshift=-10pt}あいうxyz}\\
-\vrule width 105pt height 0.4pt depth 0pt \hskip-95pt
-\fbox{\ltjsetparameter{yjabaselineshift=10pt}あいうxyz}
-\fbox{\ltjsetparameter{yjabaselineshift=-10pt}あいうxyz}
-\end{LTXexample}
+Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift}
+parameters does not increase the depth of one-letter ``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
+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
+\end{itemize}
+
+This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift}.
+%</en>
+%<*ja>
+なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意.
+\begin{itemize}
+ \item \Param{yalbaselineshift},~\Param{talbaselineshift}パラメータが正になっている.
+ \item 「音節」を構成する唯一の文字$p$の
+左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である.
+\end{itemize}
+\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない.
+%</ja>
%<*ja>
\paragraph{数式における挙動:\pTeX との違い}
\end{table}
%</ja>
+
\clearpage
%<en>\part{Reference}
%<ja>\part{リファレンス}
\suppressfloats[t]
%<*ja>
\section{\LuaTeX-jaにおける \cs{catcode}}
+\label{sec-catcode}
\subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}}
\pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか
は \cs{kcatcode} の値によって決定されるのであった.
%</ja>
%<*en>
\section{\cs{catcode} in \LuaTeX-ja}
+\label{sec-catcode}
\subsection{Preliminaries: \cs{kcatcode} in \pTeX\ and \upTeX}
In \pTeX~and~\upTeX, the value of \cs{kcatcode} determines
whether a Japanese character can be used in a control word.
\begin{lstlisting}
\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701}
\end{lstlisting}
-By implementaion, the argument must be grouped as \verb+\ltjgetwd{42}+,
+By its implementaion, the argument must be grouped as \verb+\ltjgetwd{42}+,
if the argument consists of more than one token.
\begin{LTXexample}[width=0.3\textwidth]
\parindent0pt
\end{lstlisting}
のように \cs{wd}<num> の代わりとして扱うことができる.引数が1桁の場合は,
\cs{ltjgetwd3} のように引数をグループで括らなくても良いが,そうでない場合は
-(通常の命令への引数のように)\verb+\ltjgetwd{42}+ とグループに括る必要がある.
+(通常の命令への引数のように)\verb+\ltjgetwd{42}+ とグループに括る必要がある%
+\footnote{\cs{afterassignment} を利用して実装すればグループに括る必要がなくなるのでは,と思
+ うかもしれないが,それでは本文中に書いた例のように \cs{dimexpr} 中で使用でき
+ なくなってしまう.}.
使用例は以下の通りである.
\begin{LTXexample}[width=0.3\textwidth]
\parindent0pt
\end{center}
\begin{LTXexample}[width=0.3\textwidth]
-\leavevmode\def\DIR{\ltjgetparameter{direction}}
+\leavevmode\def\DIR{\ltjgetparameter{ direction}}
\hbox{\yoko\DIR}, \hbox{\tate\DIR},
\hbox{\dtou\DIR}, \hbox{\utod\DIR},
\hbox{\tate$\hbox{tate math: \DIR}$}
\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を用いるのかを以下のキーで
指定する必要がある:
\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}
和文文字を考えよう.
\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} の値に従ってシフトされる
のは横組用和文フォントと変わらない.
%</en>
\begin{lstlisting}
[0] = {
- chars = { '漢', 'ヒ*' },
+ chars = { '漢' },
align = 'left', left = 0.0, down = 0.0,
width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
},
[2000] = {
- chars = { '。', '、*', 'ヒ' },
+ chars = { '。', 'ヒ' },
align = 'left', left = 0.0, down = 0.0,
width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
},
\end{lstlisting}
-%<ja>句点「。」の幅は二分であるので
+%<ja>ここで,次のような入力とその実行結果を考える:
%<en>Now consider the following input/output:
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
-\setbox0\hbox{\a ã\80\82\inhibitglue 漢}
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
+\setbox0\hbox{\a ã\83\92漢}
\the\wd0
\end{LTXexample}
%<*en>
-Now we look why the above source outputs 20\,pt, not 15\,pt.
+Now we look why the above source outputs 15\,pt.
\begin{enumerate}
-\item The ideographic full stop ``。'' is converted to its vertical form ``\char"FE12''~(\texttt{U+FE12}), %"
-by \verb+vert+ feature.
-\item The character class of ``\char"FE12'' is zero, hence its width is fullwidth.%"
-\item The character class of ``漢'', hence its width is fullwidth.
-\item \cs{inhibitglue} makes that no glue will be inserted between ``。'' and ``漢''.
-\item Hence the width of \cs{hbox} equals to 20\,pt.
+\item The character ``ヒ'' is converted to its half width form ``ヒ'' by \verb+hwid+ feature.
+\item According to the JFM, the character class of ``ヒ'' is 2000, hence its width is halfwidth.
+\item The character class of ``漢'' is zero, hence its width is fullwidth.
+\item Hence the width of \cs{hbox} equals to 15\,pt.
\end{enumerate}
-This example shows that the character class of a character is determined \emph{after
+This example shows that the character class of a character is generally determined \emph{after
applying font features by \Pkg{luaotfload}}.
%</en>
%<*ja>
-では,全角二分(15.0\,pt)となるのが自然……と思うかもしれないが,上の実行結果では20\,ptとなっている.
-それは以下の事情によるものである:
+上記の出力結果が,15\,ptとなっているのは理由によるものである:
\begin{enumerate}
-\item \verb+vert+ featureによって句点(\texttt{U+3002})が縦組用のグリフと置き換わる(\Pkg{luaotfload} による処理).
-\item この縦組用句点のグリフは \texttt{U+FE12} であるため,その文字クラスは0となる.
-\item 以上により文字クラス0とみなされるため,結果として「。」の幅は全角だと認識されてしまう.
+\item \verb+hwid+ featureによって「ヒ」が半角幅のグリフ「ヒ」と置き換わる(\Pkg{luaotfload} による処理).
+\item JFMによれば,この「ヒ」のグリフの文字クラスは2000である.
+\item 以上により文字クラス2000とみなされるため,結果として「ヒ」の幅は半角だと認識される.
\end{enumerate}
この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の後に行われる}ことを
示している.
%</ja>
%<*en>
-However, a starred specification like ``\texttt{'、*'}'' changes the rule.
+However, ...
Consider the following input:
%</en>
%<*ja>
-但し,「\texttt{'、*'}」のようにアスタリスクつきの指定があると,
+但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,
状況は異なる.
%</ja>
\begin{LTXexample}[width=0.3\textwidth]
\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
-\a æ¼¢ã\80\81\inhibitglue 漢
+\a æ¼¢ã\80\82\inhibitglue 漢
\end{LTXexample}
%<*en>
-Here, the character class of the ideographic comma ``、''~(\texttt{U+3001}) is determined
+Here, the character class of the ideographic full stop ``。''~(\texttt{U+3002}) is determined
as following:
\begin{enumerate}
-\item As the case of ``ã\80\82'', the ideographic comma ``ã\80\81'' is converted to its vertical
- form ``\char"FE11''~(\texttt{U+FE11}).%"
-\item The character class of ``\char"FE11'' is zero.
-\item However, \LuaTeX-ja remembers that this ``\char"FE11'' is obtained from ``、'' by
- font features. The character class of ``ã\80\81'' is \emph{non-zero value}, namely, 2000.
-\item Hence the ideographic comma ``、'' in above belongs the character class~2000.
+\item As the case of ``ã\83\92'', the ideographic full stop ``ã\80\82'' is converted to its vertical
+ form ``\char"FE12''~(\texttt{U+FE12}).%"
+\item The character class of ``\char"FE12'' is \emph{zero}.
+\item However, \LuaTeX-ja remembers that this ``\char"FE12'' is obtained from ``。'' by
+ font features. The character class of ``ã\80\82'' is \emph{non-zero value}, namely, 2000.
+\item Hence the ideographic full stop ``。'' in above belongs the character class~2000.
\end{enumerate}
%</en>
%<*ja>
-ここで,読点「、」(\texttt{U+3001})の文字クラスは,以下のようにして決まる.
+ここで,句点「。」(\texttt{U+3002})の文字クラスは,以下のようにして決まる.
\begin{enumerate}
-\item とりあえず句点の時と同じように,\Pkg{luaotfload} によって縦組用読点のグリフに置き換わる.
-\item 置換後のグリフは \texttt{U+FE11} であり,そのままでは文字クラスは0と判定される.
-\item ã\81¨ã\81\93ã\82\8dã\81\8cï¼\8cJFMã\81«ã\81¯ã\80\8c\texttt{'ã\80\81*'}ã\80\8dæ\8c\87å®\9aã\81\8cã\81\82ã\82\8bã\81®ã\81§ï¼\8cç½®æ\8f\9bå\89\8dã\81®æ¨ªçµ\84ç\94¨èª点のグリフによって文字クラスを判定する.
-\item 結果として,上の出力例中の読点の文字クラスは2000となる.
+\item \Pkg{luaotfload} によって縦組用句点のグリフに置き換わる.
+\item 置換後のグリフは \texttt{U+FE12} であり,JFMに従えば文字クラスは\emph{0}と判定される.
+\item ã\81\93ã\81®å ´å\90\88ï¼\8cç½®æ\8f\9bå\89\8dã\81®æ¨ªçµ\84ç\94¨å\8f¥点のグリフによって文字クラスを判定する.
+\item 結果として,上の出力例中の句点の文字クラスは2000となる.
\end{enumerate}
%</ja>
-%<*ja>
-なお,「\texttt{'\hbox{}ヒ*'}」のようにアスタリスクつきの指定があっても,
-置換後のグリフで判定した文字クラスの値が0でなければ,そちらをそのまま作用する.
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
-\a 漢ヒひ
-\end{LTXexample}
-上の例では,
-\texttt{hwid} featureにより,「ヒ」が半角の「ヒ」に置き換わるが,
-文字クラスは「ヒ」の属する0\emph{ではなく},「ヒ」の属する2000となる.
-%</ja>
%<ja>\paragraph{仮想的な文字}
%<en>\paragraph{Imaginary characters}
間に入るものが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>
simply ignored.
%</en>
%<*ja>
-\item \cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない.
+\item \emph{\cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない}\footnote{%
+ この点は\TeX~Live~2014での\pTeX における \cs{inhibitglue} の仕様変更と同じである.
+}.
4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり,
\cs{noindent} の時点で水平モードになるからである.
%</ja>
\def\OB{$\text{\sf O}_{\text{\sf B}}$}
\begin{defn}
%<*en>
-A \emph{cluster} is a list of consecutive nodes in one of the following forms,
+A \emph{cluster} is consecutive nodes in one of the following forms,
with the \textit{id} of it:
%</en>
%<*ja>
-\emph{クラスタ}は以下の形のうちのどれかひとつをとる連続的なノードのリストである:
+\emph{クラスタ}は以下の形のうちのどれかひとつをとるノードのリストである:
%</ja>
\begin{enumerate}
%<*en>
\item Nodes whose value of\ \verb+\ltj@icflag+ is in $[3,15)$. These
nodes come from a hbox which is already packaged, by unpackaging
(\cs{unhbox}).
- The \textit{id} is \textit{id\_pbox}.
+ The \textit{id} of the cluster is \textit{id\_pbox}.
%</en>
%<*ja>
\item その \verb+\ltj@icflag+ の値が$[3,15)$に入るノードのリスト.
これらのノードはある既にパッケージングされたhboxから \cs{unhbox} で
アンパックされたものである.
- ã\81\9dの\textit{id}は\textit{id\_pbox}である.
+ ã\81\93ã\81®å ´å\90\88ï¼\8cã\82¯ã\83©ã\82¹ã\82¿の\textit{id}は\textit{id\_pbox}である.
%</ja>
%<*en>
\item A inline math formula, including two \textit{math\_node}s at the boundary of it.
- The \textit{id} is \textit{id\_math}.
+ The \textit{id} of the cluster is \textit{id\_math}.
%</en>
%<*ja>
\item インライン数式でその境界に2つの\textit{math\_node}を含むもの.
- ã\81\9dの\textit{id}は\textit{id\_math}である.
+ ã\81\93ã\81®å ´å\90\88ï¼\8cã\82¯ã\83©ã\82¹ã\82¿の\textit{id}は\textit{id\_math}である.
%</ja>
%<*en>
-\item A \textit{glyph\_node}~$p$ with nodes which relate with it:
+\item A \textit{glyph\_node}~$p$, which represents a \textbf{JAchar}, with nodes which relate with it:
%</en>
%<*ja>
-\item \textit{glpyh\_node}~$p$とそれに関係するノード:
+\item \textbf{JAchar}を表す\textit{glyph\_node}~$p$とそれに関係するノード:
%</ja>
\begin{enumerate}
%<*en>
-\item A kern for the italic correction of~$p$.
+\item[(a)] A kern for the italic correction of~$p$.
%</en>
%<*ja>
-\item $p$のイタリック補正のためのカーン.
+\item[(a)] $p$のイタリック補正のためのカーン.
%</ja>
%<*en>
-\item An accent attached to $p$ by \cs{accent}.
+\item[(b)] An accent attached to $p$ by \cs{accent}.
%</en>
%<*ja>
-\item \cs{accent} による$p$に付随したアクセント.
+\item[(b)] \cs{accent} による$p$に付随したアクセント.
%</ja>
\end{enumerate}
\[
\]
%<*en>
-The \textit{id} is \textit{id\_jglyph} or
-\textit{id\_glyph}, according to whether the \textit{glyph\_node}
-represents a Japanese character or not.
+In this case, the \textit{id} is \textit{id\_jglyph}.
%</en>
%<*ja>
-\textit{id}は\textit{glyph\_node}が和文文字を表すかどうかによって
-\textit{id\_jglyph},もしくは\textit{id\_glyph}となる.
+この場合の\textit{id}は\textit{id\_jglyph}である.
+%</ja>
+
+%<*en>
+\item A list which begins from a \textit{glyph\_node} which represents a \textbf{ALchar},
+ and consists of \textbf{ALchar} \textit{glyph\_node}s,
+ kerns for adjusting accents~(its subtype is 2), kerns for italic corrections and
+ kerns which are automatically inserted by \LuaTeX~or~luaotfload.
+ In this case, the \textit{id} is \textit{id\_glyph}.
+%</en>
+%<*ja>
+\item \textbf{ALchar}を表す\textit{glyph\_node},\cs{accent} によるアクセント位置補正用の
+ カーン(subtypeが2),そしてイタリック補正・カーニングによって挿入されたカーン達が連続
+ したもの.この場合の\textit{id}は\textit{id\_glyph}である.
%</ja>
%<*en>
\item An box-like node, that is, an hbox, a vbox, a rule (\cs{vrule}) and an \textit{unset\_node}.
-The \textit{id} is \textit{id\_hlist} if the node is an
+The \textit{id} of the cluster is \textit{id\_hlist} if the node is an
hbox which is not shifted vertically, or \textit{id\_box\_like}
otherwise.
%</en>
%<*ja>
-\item ボックス様のノード,つまり水平ボックス,垂直ボックス,罫線 (\cs{vrule}),
+\item 水平ボックス(hbox),垂直ボックス,罫線 (\cs{vrule}),
そして\textit{unset\_node}.
- ã\81\9dの\textit{id}は垂直に移動していないhboxならば\textit{id\_hlist},
+ ã\82¯ã\83©ã\82¹ã\82¿の\textit{id}は垂直に移動していないhboxならば\textit{id\_hlist},
そうでなければ\textit{id\_box\_like}となる.
%</ja>
%<*en>
\item A glue, a kern whose subtype is not 2~(\textit{accent}), and a discretionary break.
-The \textit{id} is \textit{id\_glue}, \textit{id\_kern}
+The \textit{id} of the cluster is \textit{id\_glue}, \textit{id\_kern}
and \textit{id\_disc}, respectively.
%</en>
%<*ja>
-\item グルー,subtypeが 2~(\textit{accent})ではないカーン,そして任意改行.
- その\textit{id}はそれぞれ\textit{id\_glue}, \textit{id\_kern},そして
+\item グルー,subtypeが 2~(\textit{accent})ではないカーン,そしてdiscretionary break.
+ その\textit{id} of the clusterはそれぞれ\textit{id\_glue}, \textit{id\_kern},そして
\textit{id\_disc}である.
%</ja>
\end{enumerate}
%<*en>
-Let \textit{Np}, \textit{Nq} and \textit{Nr} denote a cluster.
+We use \textit{Np}, \textit{Nq} and \textit{Nr} to denote a cluster.
%</en>
%<*ja>
以下では\textit{Np}, \textit{Nq}, \textit{Nr}でクラスタを表す.
\item[\textit{id\_hlist}] 縦方向にシフトされていないhbox.\\
この場合,$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$はそれぞれ$p$の内容を表すリストの,
先頭・末尾のノードである.
+\medskip
\begin{itemize}
\item 状況によっては,\TeX ソースで言うと
\begin{lstlisting}
そのため,「右空白」が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}の順序が逆になっている)場合と同じである.
\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} パッケージへの対応}
非埋め込みの中国語・韓国語フォントを定義する場合,同様のキャッシュが生成される.
キャッシュの名称,必要となるCMapについては表\ref{tab:cid-cache}を参照して欲しい.
-\item[ivs\_***.lua]
-フォント``\texttt{***}''における異体字情報を格納している.構造は以下の通り:
+\item[extra\_***.lua]
+フォント``\texttt{***}''における異体字セレクタの情報,縦組用字形への変換テーブル,そして
+縦組時における幅を格納している.構造は以下の通り:
%</ja>
%<*en>
\subsection{Use of Cache}
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]
{
[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>
...
+ ["vert"]=995025, -- vertical variant
},
...
},
["chksum"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", -- checksum of the fontfile
- ["version"]=4, -- version of the cache
+ ["version"]=2, -- 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になるという問題が発生する.そのため,この場合に限っては
\url{http://www.iso.org/iso/iso\_catalogue/catalogue_tc/catalogue\_detail.htm?csnumber=51502}
\end{thebibliography}
-\newpage
-\appendix
-
-\section{Package versions used in this document}
-This document was typeset using the following packages:
-
-\medskip
-
-{\makeatletter\tt\footnotesize
- \def\@pkglist#1{%
- \filename@parse{#1}\def\@temp{sty}
- \ifx\@temp\filename@ext
- \edef\reserved@a{%
- \filename@base.%
- \ifx\filename@ext\relax tex\else\filename@ext\fi}%
- \leavevmode\hskip-13em\hbox to 13em{\filename@area\reserved@a\hss}%
- \csname ver@\reserved@a\endcsname\par
- \fi
- }%
-\parindent0pt\leftskip13em
-\ltjpkglist
-
-\makeatother}
\end{document}
%</!showexpl>
%<*showexpl>