X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=doc%2Fluatexja.dtx;h=0bc8a28273f3ae602ede1b3d1806475010a944e3;hb=79a3cd02a15808ab4620153674d15ba3f059ae5e;hp=e283d0ba7b8084572feb2416d67c67591f7b9ff4;hpb=8b5cf4a56cc5695b34174d5723d7eaaa999225e8;p=luatex-ja%2Fluatexja.git diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index e283d0b..0bc8a28 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -15,21 +15,31 @@ %%%%%%%% \makeatletter %%%%%%%% +\directlua{if jit then jit.on() end} -%%%%%%%% 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 +\usepackage{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[match]{luatexja-fontspec} +\usepackage[kozuka-pr6n]{luatexja-preset} +\usepackage{unicode-math} +\setmainfont[Ligatures=TeX]{Linux Libertine O} +\setsansfont[Scale=0.95,Ligatures=TeX]{TeX Gyre Heros} +\setmonofont[Scale=MatchLowercase, ItalicFont=lmmono10-italic.otf, + BoldFont=lmmonolt10-bold.otf, BoldItalicFont=lmmonolt10-boldoblique.otf +]{lmmono10-regular.otf} +\setmonojfont{KozGoPr6N-Regular.otf} +\setmathfont[Scale=MatchLowercase]{xits-math.otf} +%<*ja> +\def\emph#1{\textbf{\textgt{#1}}} +\def\headfont{\normalfont\bfseries\gtfamily}\normalsize +% +%\frenchspacing %<*en> \usepackage[margin=25mm,lmargin=30mm,rmargin=30mm,footskip=6mm]{geometry} @@ -46,11 +56,6 @@ \advance\leftmargini-1\zw\advance\leftmarginii-1\zw % -\usepackage{amsmath,array,tikz,pict2e,multienum,float} -\usepackage{booktabs,multicol,luatexja-ruby} -\usepackage[all]{xy} -\usepackage{lltjext,alltt} - %%%%%%%% listings %%%%%%%% IVS @@ -119,26 +124,6 @@ %\newtheorem{defn}{Definition} %\newtheorem{defn}{定義} -%%%%%%%% fonts -\usepackage{luatexja-otf} -%\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} -% -%<*en> -\usepackage{unicode-math} -\setmainfont[Ligatures=TeX]{TeX Gyre Termes} -\setsansfont[Scale=0.95,Ligatures=TeX]{TeX Gyre Heros} -\setmathfont{xits-math.otf} -\frenchspacing -% - %%%%%%%% logo \usepackage{metalogo} \DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX} @@ -148,7 +133,7 @@ \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} @@ -245,7 +230,7 @@ Japanese processing in computers (\textit{e.g.}, the UTF-8 encoding). ASCII \pTeX やそれの拡張物が用いられることが一般的であった.\pTeX は\TeX のエンジン拡張であり,(少々仕様上不便な点はあるものの)商業印刷の分野に も用いられるほどの高品質な日本語組版を可能としている.だが,それは弱点に -もなってしまった:\pTeX という(組版的に)満足なものがあったため,海外で +もなってしまった.\pTeX という(組版的に)満足なものがあったため,海外で 行われている数々の\TeX の拡張――例えば\eTeX や\pdfTeX ――や,TrueType, OpenType, Unicodeといった計算機で日本語を扱う際の状況の変化に追従すること を怠ってしまったのだ. @@ -290,13 +275,16 @@ scripts for appropriate callbacks. %<*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}. % %<*ja> \LuaTeX-jaは,\pTeX に多大な影響を受けている.初期の開発目標は,\pTeX の機 -能をLuaコードにより実装することであった.しかし,開発が進むにつれ,\pTeX +能をLuaコードにより実装することであった.しかし,(\pTeX はエンジン拡張であったのに対し) +\LuaTeX-jaはLuaコードと\TeX マクロを用いて全てを実装していなければならないため,\pTeX の完全な移植は不可能であり,また\pTeX における実装がいささか不可解になっ ているような状況も発見された.そのため,\emph{\LuaTeX-jaは,もはや \pTeX の完全な移植は目標とはしない.\pTeX における不自然な仕様・挙動があ @@ -304,45 +292,74 @@ specifications/behaviors of \pTeX\ were not adopted}. % %<*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. % %<*ja> 以下は \pTeX からの主な変更点である. +より詳細については第\ref{part-imp}部など本文書の残りを参照. % -\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: % %<*ja> -\item 和文フォントは(小塚明朝,IPA明朝などの)実際のフォント,和文フォン - トメトリック(JFMと呼ぶ\footnote{混乱を防ぐため,p\TeX の意味での - JFM (\texttt{min10.tfm}) などは本ドキュメントでは\emph{和文用 - TFM}とよぶことにする.})の組である. +\paragraph{命令の名称} 例えば\pTeX で追加された次のようなプリミティブ +% +\begin{verbatim} +\kanjiskip=10pt \dimen0=kanjiskip +\tbaselineshift=0.1zw +\dimen0=\tbaselineshift +\prebreakpenalty`ぁ=100 +\ifydir ... \fi +\end{verbatim} +% However, we cannot use them under \LuaTeX-ja. +% Instead of them, we have to write as the following. +% は\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. +% +%<*ja> +特に注意してほしいのは,\pTeX で追加された \texttt{zw} と \texttt{zh} という単位を +\LuaTeX-ja で扱うには,\cs{zw}, \cs{zh} と制御綴の形にしないといけないという点である. % %<*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}. % %<*ja> -\item 日本語の文書中では改行はほとんどどこでも許されるので,\pTeX では和文文字 +\paragraph{和文文字直後の改行} +日本語の文書中では改行はほとんどどこでも許されるので,\pTeX では和文文字 直後の改行は無視される(スペースが入らない)ようになっていた.しかし, \LuaTeX-ja では \LuaTeX の仕様のためにこの機能は完全には実装されていない. + 詳しくは\ref{sec-lbreak}章を参照. % %<*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. % %<*ja> -\item 2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン +\paragraph{和文関連の空白} +2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン (両者をあわせて\textbf{JAglue}と呼ぶ)の挿入処理が0から書き直されている. % @@ -390,7 +407,6 @@ The followings are major changes from \pTeX: ちょ\hbox{}っと \end{lstlisting} - %<*en> \item In the process, two Japanese fonts which only differ in their ``real'' fonts are identified. @@ -401,26 +417,34 @@ The followings are major changes from \pTeX: % \end{itemize} +%<*en> +\paragraph{Directions} +From this version, \LuaTeX-ja supports vertical writing; +but this feature must \emph{not} be confused with $\Omega$-style direction support of \LuaTeX\ +itself. ... +% %<*ja> -\item \LuaTeX-jaでは,\pTeX と同様に漢字・仮名を制御綴内に用いることができ, -\cs{西暦} などが正しく動作するようにしている. -但し,制御綴中に使える和文文字が\pTeX・\upTeX と全く同じではないことに注意すること. -% - -%<*ja> -\item ****版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている. -\LuaTeX のコールバックの制限などにより,特に異なった組方向のボックスを扱う場合には -仕様が異なるので注意すること. +\paragraph{組方向} +本版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている. +なお,\LuaTeX 本体も,$\Omega$流の組方向をサポートしているが,それとは全くの別物であること +に注意してほしい. +\LuaTeX のコールバックや実装により,特に異なった組方向のボックスを扱う場合には +\cs{wd}, \cs{ht}, \cs{dp}等の仕様が異なるので注意.詳細は第\ref{sec-direction}節を参照. % -\end{itemize} %<*en> -For detailed information, see Part~\ref{part-imp}. +\paragraph{\cs{discretionary}} +Japanese characters in discretionary break (\cs{discretionary}) is not supported. % %<*ja> -詳細については第\ref{part-imp}部を参照. +\paragraph{\cs{discretionary}} + \cs{discretionary} 内に直接和文文字を記述することは,\pTeX においても想定されていなかった + 感があるが.\LuaTeX-jaにおいても想定していない.和文文字をどう + しても使いたい場合は \cs{hbox} で括ること. % + + %\subsection{Notations} %\subsection{用語と記法} @@ -437,12 +461,12 @@ In this document, the following terms and notations are used: (see Subsection~\ref{ssec-setrange}). % %<*ja> -\item 文字は次の2種類に分けられる.この類別はユーザが後から変更可能である +\item 文字は次の2種類に分けられる.この類別は固定されているものではなく,ユーザが後から変更可能である (\ref{ssec-setrange}節を参照). % \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. % %<*ja> @@ -540,69 +564,76 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. %\subsection{Installation} %\subsection{インストール} -%To install the \LuaTeX-ja\ package, you will need: -%\LuaTeX-jaパッケージのインストールには,次のものが必要である. +%The following packages are needed for the \LuaTeX-ja\ package. +%\LuaTeX-jaパッケージには,次のパッケージ類が必要である. \begin{itemize} -\item \LuaTeX\ beta-0.74.0 (or later) -\item \Pkg{luaotfload} v2.2 (or later) -\item \Pkg{luatexbase} v0.6 -\item \Pkg{xunicode} v0.981~(2011/09/09) +\item \LuaTeX\ beta-0.80.0 (or later) +\item \Pkg{luaotfload} v2.5 (or later) \item \Pkg{adobemapping} (Adobe cmap and pdfmapping files) -\item \Pkg{everysel} +\item \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe) +%\item \emph{IPAex fonts}(\url{http://ipafont.ipa.go.jp/}) +%\item \emph{IPAexフォント(\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 -Now \LuaTeX-ja is available from the following archive and distributions: +Now \LuaTeX-ja is available from +CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and +the following distributions: \begin{itemize} - \item CTAN (in the \texttt{macros/luatex/generic/luatexja} directory) \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection \item \TeX\ Live (in \texttt{texmf-dist/tex/luatex/luatexja}) \item W32\TeX\ (in \texttt{luatexja.tar.xz}) \end{itemize} - -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} +IPAex fonts are also available in these distributions. % %<*ja> -\emph{本バージョンの\LuaTeX-jaは\TeX~Live~2012以前では動作しない.} -これは,\LuaTeX と\Pkg{luaotfload}が\TeX~Live~2013において更新されたことによる. +\emph{本バージョンの\LuaTeX-jaは\TeX~Live~2013以前では動作しない.\TeX~Live~2014で +用いたい場合は,自力で\LuaTeX 開発版をソースからビルドする必要がある.} \medskip -現在,\LuaTeX-jaは以下のアーカイブ,およびディストリビューションに収録されている: +現在,\LuaTeX-jaはCTAN (\texttt{macros/luatex/generic/luatexja})に収録されている他, +以下のディストリビューションにも収録されている: \begin{itemize} - \item CTAN (\texttt{macros/luatex/generic/luatexja}) \item MiK\TeX\ (\texttt{luatexja.tar.lzma}) \item \TeX\ Live (\texttt{texmf-dist/tex/luatex/luatexja}) \item W32\TeX\ (\texttt{luatexja.tar.xz}) \end{itemize} - -例えば\TeX~Live~2014を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を -使ってインストールすることができる. -\begin{lstlisting} -$ tlmgr install luatexja -\end{lstlisting} +これらのディストリビューションはIPAexフォントも収録している. +W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある. % +% %<*ja> +% 例えば\TeX~Live~2015を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を +% 使ってインストールすることができる. +% \begin{lstlisting} +% $ tlmgr install luatexja +% \end{lstlisting} +% % +% %<*en> +% If you are using \TeX~Live~2015, you can install \LuaTeX-ja +% from \TeX~Live manager (\texttt{tlmgr}): +% \begin{lstlisting} +% $ tlmgr install luatexja +% \end{lstlisting} +% % + %\paragraph{Manual installation} %\paragraph{手動インストール方法} \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} @@ -616,11 +647,11 @@ Note that the \texttt{master} branch, and hence the archive in CTAN, are not upd the forefront of development is not the \texttt{master} branch. % %<*ja> -\item ソースアーカイブを以下のいずれかの方法で取得する.現在公開されているのはあくまでも +\item ソースを以下のいずれかの方法で取得する.現在公開されているのはあくまでも 開発版であって,安定版でないことに注意. \begin{itemize} -\item Gitリポジトリの内容をコピーする: +\item Gitリポジトリをクローンする: \begin{lstlisting} $ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git \end{lstlisting} @@ -639,7 +670,7 @@ $ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git But only the contents in \texttt{src/} are needed to work \LuaTeX-ja. % %<*ja> -\item 「Gitリポジトリをコピー」以外の方法でアーカイブを取得したならば,それを展開する. +\item 「Gitリポジトリをクローン」以外の方法でアーカイブを取得したならば,それを展開する. \texttt{src/}をはじめとしたいくつかのディレクトリができるが, 動作には\texttt{src/}以下の内容だけで十分. % @@ -680,7 +711,11 @@ Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not need % %<*ja> \item \texttt{src}の中身を自分の\texttt{TEXMF}ツリーにコピーする. - 場所の例としては,例えば\texttt{TEXMF/tex/luatex/luatexja/}がある. + 場所の例としては,例えば +\begin{quote} + \texttt{TEXMF/tex/luatex/luatexja/} +\end{quote} + がある. シンボリックリンクが利用できる環境で,かつリポジトリを直接取得したのであれば, (更新を容易にするために)コピーではなくリンクを貼ることを勧める. % @@ -692,9 +727,15 @@ Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not need % \end{enumerate} -%\subsection{Cautions} -%\subsection{注意点} - +%<*en> +\subsection{Cautions} +For changes from \pTeX, see Subsection~\ref{ssec:chgptex}. +% +%<*ja> +\subsection{注意点} +\pTeX からの変更点として,\ref{ssec:chgptex}節も熟読するのが望ましい. +ここでは一般的な注意点を述べる. +% \begin{itemize} %<*en> \item The encoding of your source file must be UTF-8. No other @@ -774,12 +815,12 @@ run \LuaTeX-ja in this directory, and finally delete the temporary directory. \textbf{direction}& \textbf{classification}&\textbf{font name}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule \smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}& -\emph{mincho}&Ryumin-Light &\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ -&\emph{gothic}&GothicBBB-Medium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ +\emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ +&\emph{gothic}&IPAex Gothic&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ \midrule \smash{\raisebox{-1ex}{\emph{tate} (vertical)}}& -\emph{mincho}&Ryumin-Light &\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ -&\emph{gothic}&GothicBBB-Medium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ +\emph{mincho}&IPAex Mincho&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ +&\emph{gothic}&IPAex Gothic&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ \bottomrule \end{tabular} \end{center} @@ -791,30 +832,24 @@ run \LuaTeX-ja in this directory, and finally delete the temporary directory. \toprule \emph{組方向}&\emph{字体}&\emph{フォント名}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule \smash{\raisebox{-1ex}{横組}}& -明朝体&Ryumin-Light &\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ -&ゴシック体&GothicBBB-Medium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ +明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ +&ゴシック体&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ \midrule \smash{\raisebox{-1ex}{縦組}}& -明朝体&Ryumin-Light &\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ -&ゴシック体&GothicBBB-Medium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ +明朝体&IPAex明朝&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ +&ゴシック体&IPAexゴシック&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ \bottomrule \end{tabular} \end{center} % \begin{itemize} %<*en> -\item It is widely accepted that fonts ``Ryumin-Light'' and - ``GothicBBB-Medium'' aren't embedded into PDF files, and a PDF reader - substitute them by some external Japanese fonts (\textit{e.g.}, - Ryumin-Light is substituted with Kozuka Mincho in Adobe Reader). - We adopt this custom to the default setting. +\item With \texttt{luatexja.cfg}, one can use other fonts +as ``default'' Japanese fonts (Subsection~\ref{ssec-cfg}). % %<*ja> -\item ``Ryumin-Light''と``GothicBBB-Medium''はPDFファイルに埋め込まずに - 名前参照のみで用いることが広く受け入れられており,この場合PDFリーダーが - 適切な外部フォントで代用する(例えば,Adobe ReaderではRyumin-Lightは - 小塚明朝で代替される).そこで,これらを引き続きデフォルトのフォントと - して採用する. +\item \texttt{luatexja.cfg} を用いることによって,標準和文フォントを +IPAexフォントから別のフォントに置き換えることができる.\ref{ssec-cfg}節を参照. % %<*en> @@ -897,15 +932,14 @@ By default, the following fonts are used for \emph{mincho} and \emph{gothic}: \begin{center}\small \begin{tabular}{ccccc} \toprule -\textbf{classification}&\textbf{family name}&\cs{mdseries}&\cs{bfseries}&\textbf{scale}\\\midrule -\emph{mincho} (明朝体)&\tt mc&Ryumin-Light &GothicBBB-Medium&0.962216\\ -\emph{gothic} (\textgt{ゴシック体})&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.962216\\ +\textbf{classification}&\textbf{family}&\cs{mdseries}&\cs{bfseries}&\textbf{scale}\\\midrule +\emph{mincho} (明朝体)&\tt mc&IPAex Mincho&IPAex Gothic&0.962216\\ +\emph{gothic} (\textgt{ゴシック体})&\tt gt&IPAex Gothic&IPAex Gothic&0.962216\\ \bottomrule \end{tabular} \end{center} -Note that the bold series in both family are same as the medium series of \emph{gothic} family. -This is a convention in \pLaTeX. This is trace that there were only 2~fonts (these are Ryumin-Light -and GothicBBB-Medium) in early years of DTP. There is no italic nor slanted shape for +Note that the bold series in both family are same as the medium series of \emph{gothic} + family. There is no italic nor slanted shape for these \texttt{mc}~and~\texttt{gt}. % %<*ja> @@ -924,21 +958,35 @@ and GothicBBB-Medium) in early years of DTP. There is no italic nor slanted shap \begin{tabular}{ccccc} \toprule \emph{字体}&\emph{ファミリ}&\cs{mdseries}&\cs{bfseries}&\emph{スケール}\\\midrule -明朝体&\tt mc&Ryumin-Light &GothicBBB-Medium&0.962216\\ -ゴシック体&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.962216\\ +明朝体&\tt mc&IPAex明朝&IPAexゴシック&0.962216\\ +ゴシック体&\tt gt&IPAexゴシック&IPAexゴシック&0.962216\\ \bottomrule \end{tabular} \end{center} どちらのファミリにおいても,そのboldシリーズで使われるフォントは -ゴシック体のmediumシリーズで使われるフォントと同じあることに注意. -これは初期のDTPにおいて和文フォントが2つ(それがちょうど\ -Ryumin-Light, GothicBBB-Mediumだった)しか利用できなかった時の名残であり,\pLaTeX{} -での標準設定とも同じである. +ゴシック体のmediumシリーズで使われるフォントと同じであることに注意. +また,どちらのファミリでもイタリック体・スラント体は定義されない. % - %\item Japanese characters in math mode are typeset by the font family \texttt{mc}. %\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}: +% +%<*ja> +\item \Pkg{beamer}クラスを既定のフォント設定で使う場合,既定欧文フォントがサンセリフなの + で,既定和文フォントもゴシック体にしたいと思うかもしれない.その場合はプリアンブルに +次を書けばよい: +% +\begin{lstlisting} + \renewcommand{\kanjifamilydefault}{\gtdefault} +\end{lstlisting} + + \end{itemize} %<*en> @@ -978,41 +1026,47 @@ Okumura), namely, \Pkg{ltjclasses}\footnote{% 脚注とボトムフロートの順序は\LaTeX 通りとした.もし\pLaTeX の出力順序が好みならば, \Pkg{stfloats}パッケージを利用して \begin{lstlisting} - \usepackage{stfloats} \fnbelowfloat + \usepackage{stfloats}\fnbelowfloat \end{lstlisting} のようにすればよい.\Pkg{footmisc}パッケージを \texttt{bottom}\ オプションを指定して 読み込むという方法もあるが,それだとボトムフロートと脚注の間が開いてしまう. % - -%\section{Changing Fonts} -%\section{フォントの変更} +%%% ↑は英訳しない %<*en> -\subsection{Notes on ``default'' fonts of \LuaTeX-ja} -As described earlier, default fonts of \LuaTeX-ja are non-embedded fonts, -namely ``Ryumin-Light'' and ``GothicBBB-Medium''. -However, using these non-embedded fonts makes that the output PDF does \emph{not} follow -the standard ISO32000-1:2008~(\cite{pdfstd}). +\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: % %<*ja> -\subsection{\LuaTeX-ja 標準フォントについて} -\label{ssec:stdfnt} -既に説明したように,\LuaTeX-jaの標準和文フォントは``Ryumin-Light''と``GothicBBB-Medium''% -という非埋め込みフォントである.しかし,現行の\LuaTeX で非埋め込みフォントを用いたPDFを -作成すると,エンコーディングがIdentity-Hとなってしまい, -PDFの標準規格ISO32000-1:2008~(\cite{pdfstd})に非準拠になってしまっている. - -この状況を解決する方法として正当的なのは,本章の残りに示すようにドキュメント中にフォント変更命令を記述する方 -法だが,\texttt{luatexja.cfg} を作成するという方法もある.例えば \texttt{luatexja.cfg} に +\paragraph{縦組での\Pkg{geometry}パッケージ} +\pLaTeX の縦組用標準クラスファイルでは\Pkg{geometry}パッケージを利用することは出来ず, +% \begin{lstlisting} -\def\ltj@stdmcfont{IPAMincho} -\def\ltj@stdgtfont{IPAGothic} +! Incompatible direction list can't be unboxed. +\@begindvi ->\unvbox \@begindvibox + \global \let \@begindvi \@empty \end{lstlisting} -と記述しておけば,plain~\TeX, \LaTeXe における標準和文フォントがIPA明朝・IPAゴシックへと変 -更される. +%<*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). +% +%<*ja> +というようなエラーが発生することが知られている. +\LuaTeX-jaでは, \texttt{ltjtarticle.cls} といった縦組クラスの下でも +\Pkg{geometry}パッケージが利用できるようにパッチ\Pkg{lltjp-geometry}パッケージを自動的に当てている. + +なお,\Pkg{lltjp-geometry}パッケージは\pTeX 系列でも明示的に読み込むことによって +使用可能である.詳細や注意事項は \url{lltjp-geometry.pdf} を参照のこと. % +%\section{Changing Fonts} +%\section{フォントの変更} + \subsection{plain \TeX~and~\LaTeXe} \label{ssec-chgfnt} @@ -1032,8 +1086,7 @@ plain \TeX で和文フォントを変更するためには, For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ (in \texttt{plfonts.dtx}). % %<*ja> -\LaTeXe については,\LuaTeX-jaではフォント選択システムを\pLaTeXe\ (\texttt{plfonts.dtx}) -の大部分をそのまま採用している. +\LaTeX で用いる際には,\pLaTeXe\ (\texttt{plfonts.dtx})用のフォント選択機構の大部分を流用している. % \begin{itemize} %<*en> @@ -1042,8 +1095,8 @@ For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ ( attributes of Japanese fonts. % %<*ja> -\item \cs{fontfamily}, \cs{fontseries}, \cs{fontshape}, そして - \cs{selectfont} が和文フォントの属性を変更するために使用できる. +\item 和文フォントの属性を変更するには,\cs{fontfamily}, \cs{fontseries}, \cs{fontshape}, + そしてそれらを反映させるために \cs{selectfont} を用いればよい. % %<*en> @@ -1123,6 +1176,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\ \cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ. % + \end{itemize} %<*en> @@ -1189,17 +1243,17 @@ this chapter. For the method, please see Subsection~\ref{ssec-math}. \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: +the \Pkg{luatexja-fontspec} package in the preamble, as follows: \begin{quote} \ttfamily \textbackslash usepackage[]\{luatexja-fontspec\} \end{quote} This \Pkg{luatexja-fontspec} package automatically loads \Pkg{luatexja} and \Pkg{fontspec} -package, if needed. +packages, if needed. % %<*ja> \Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合, -\Pkg{luatexja-fontspec}パッケージを読み込む: +\Pkg{luatexja-fontspec}パッケージを読み込めばよい. \begin{quote} \ttfamily \textbackslash usepackage[]\{luatexja-fontspec\} \end{quote} @@ -1208,7 +1262,7 @@ package, if needed. % %<*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: % %<*ja> @@ -1275,6 +1329,8 @@ 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}. % %<*ja> \Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである: @@ -1295,13 +1351,13 @@ This is because of the compatibility with previous versions of \LuaTeX-ja また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない, 言い換えれば \texttt{kern} featureは標準では無効化となっている. これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照). + +以下に\cs{jfontspec}の使用例を示す. % \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} @@ -1311,20 +1367,35 @@ JIS~X~0208:1990→辻 \label{ssec-preset} %<*en> -To use standard Japanese font settings easily, one can load \Pkg{luatexja-preset} +To use standard Japanese font settings easily, one can load the \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. - -If you need to pass some options to \Pkg{fontspec}, load \Pkg{fontspec} manually -before \Pkg{luatexja-preset}: +\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato. % %<*ja> よく使われている和文フォント設定を一行で指定できるようにしたのが \Pkg{luatexja-preset}パッケージである.このパッケージは, \Pkg{otf}パッケージの一部機能と八登崇之氏による\Pkg{PXchfon}パッケージの一部機能とを -合わせたような格好をしており,内部で\Pkg{luatexja-fontspec},従って -\Pkg{fontspec}を読み込んでいる. +合わせたような格好をしている. +% + +%\paragraph{General options} +%\paragraph{一般的なオプション} +\begin{cslist}[before*=] + +\item[fontspec] +%<*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. +\emph{This option is enabled by default.} + +If you need to pass some options to \Pkg{fontspec}, load \Pkg{fontspec} manually +before \Pkg{luatexja-preset}: +% +%<*ja> +\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する. +これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する. +\emph{このオプションは標準で有効になっている.} もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある \footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の @@ -1336,9 +1407,23 @@ before \Pkg{luatexja-preset}: \usepackage[...]{luatexja-preset} \end{lstlisting} -%\paragraph{General options} -%\paragraph{一般的なオプション} -\begin{cslist} +\item[nfssonly] +%<*ja> +\LaTeX 標準のフォント選択機構(NFSS2)を用いて +\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ + ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という +3つの和文フォントファミリを定義し,これらを用いる. + +欧文フォントの指定で\Pkg{fontspec}パッケージを読み込んでいる場合でも +\begin{lstlisting} +\usepackage{fontspec} +\usepackage[hiragino-pron,nfssonly]{luatexja-preset} +\end{lstlisting} +のように「和文側では\Pkg{fontspec}の機能は使わない,つまり\Pkg{luatexja-fontspec}は読み込 + まない」ことは可能である.一方,, +パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて + いる場合は \texttt{nfssonly} オプションは無視される. +% \item[nodeluxe] %<*en> @@ -1348,9 +1433,9 @@ This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and \emph{This option is enabled by default.} % %<*ja> -\LaTeXe 環境下での標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する. +\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する. より具体的に言うと,この設定の下では -\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+, +\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+, \verb+\gtfamily\mdseries+はみな同じフォントとなる. \emph{このオプションは標準で有効になっている.} % @@ -1362,23 +1447,32 @@ Use \textit{mincho} with two weights (medium~and~bold), 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}). % %<*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})しか扱えなかった名残である. % \item[expert] %<*en> Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana characters designed for ruby. % -%横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる. +%<*ja> +横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{% + \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では + font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え). +}. +% \item[bold] %Substitute bold series of \textit{gothic} for bold series of \textit{mincho}. %「明朝の太字」をゴシック体の太字によって代替する. @@ -1414,10 +1508,14 @@ We didn't taken account of when both \texttt{90jis} and \texttt{jis2004} are sp %<*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}. % %<*ja> \texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は (ファイル名でなく)フォント名で行われる. +以下の表において,*\,つきのフォント(e,g,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に} +ゴシック体細字として用いられるものを示している. % \begin{cslist}[style=standard] \item[kozuka-pro] Kozuka Pro (Adobe-Japan1-4) fonts. @@ -1460,16 +1558,7 @@ There is not rounded gothic family in Kozuka 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}. -% -%<*ja> -上の表において,*つきのフォント(KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション非指定時に} -ゴシック体細字として用いられる. -% - -%\medskip +%\newpage \item[hiragino-pro] Hiragino Pro (Adobe-Japan1-5) fonts. % \\*[-\dimexpr\medskipamount+\baselineskip\relax] @@ -1512,7 +1601,7 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \end{tabular} \end{center} -%\newpage +%\medskip \item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts. % \\*[-\dimexpr\medskipamount+\baselineskip\relax] @@ -1572,18 +1661,46 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \end{tabular} \end{center} -\end{cslist} + \item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic. +These fonts can be downloaded from +\url{http://yozvox.web.fc2.com/82A882B782B782DF8374834883938367.html}. + +\begin{center}\small +\begin{tabular}{clll} +\toprule +\bf family&\bf series&\bf default, \texttt{90jis}~option&\bf \texttt{jis2004} option\\ +\midrule + &medium&Moga90Mincho&MogaMincho\\ +%\smash{\raisebox{1.5ex}{\textit{mincho}}}% +%\smash{\raisebox{1.5ex}{\gt 明朝}}% + &bold&Moga90Mincho Bold&MogaMincho Bold\\ +\midrule + &&Moga90Gothic&MogaGothic\\ + &\smash{\raisebox{1.5ex}{medium}} + &Moga90Gothic&MogaGothic\\ +\cmidrule(l){2-4} +%\textit{gothic}% +%\gt ゴシック + &bold&Moga90Gothic Bold&MogaGothic Bold\\ + &heavy&Moga90Gothic Bold&MogaGothic Bold\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&Mobo90Gothic&MoboGothic\\ +\bottomrule +\end{tabular} +\end{center} + + +\end{cslist} %\paragraph{Presets for single weight} %\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). % %<*ja> -次に,単ウェイト用の設定を述べる.この4設定では「細字」「太字」の区別はない. -また,丸ゴシック体はゴシック体と同じフォントを用いる. +次に,単ウェイト用の設定を述べる.この4設定では +明朝体太字・丸ゴシック体はゴシック体と同じフォントが用いられる. % \par\nobreak\medskip {\centering\small @@ -1593,9 +1710,9 @@ even if \texttt{deluxe} option is also specified). \midrule %<*en> \it mincho&Ryumin-Light (non-embedded) -&IPAMincho&IPAexMincho&MS Mincho\\ +&IPA Mincho&IPAex Mincho&MS Mincho\\ \it gothic&GothicBBB-Medium (non-embedded) -&IPAGothic&IPAexGothic&MS Gothic\\ +&IPA Gothic&IPAex Gothic&MS Gothic\\ % %<*ja> \gtfamily 明朝体&Ryumin-Light(非埋込) @@ -1605,12 +1722,6 @@ even if \texttt{deluxe} option is also specified). % \bottomrule \end{tabular}\par\medskip} -%<*ja> -なお,\ref{ssec:stdfnt}節にあるように \texttt{luatexja.cfg} を利用して\LuaTeX-jaの標準和文 -フォントを変更しても,上記 \texttt{noembed} オプションを使うとRyumin-Light, -GothicBBB-Mediumを非埋め込みで用いることになるので注意してほしい. -% - %\paragraph{Using HG fonts} %\paragraph{HGフォントの利用} @@ -1629,14 +1740,14 @@ We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights \midrule %<*en> \bf mincho medium -&IPAMincho&IPAexMincho&MS Mincho\\\midrule +&IPA Mincho&IPAex Mincho&MS Mincho\\\midrule \bf mincho bold& \multicolumn{3}{c}{HG Mincho E}\\\midrule \bf Gothic medium\\ ~~without \texttt{deluxe} -&IPAGothic&IPAexGothic&MS Gothic\\ +&IPA Gothic&IPAex Gothic&MS Gothic\\ ~~with {\tt jis2004} -&IPAGothic&IPAexGothic&MS Gothic\\ +&IPA Gothic&IPAex Gothic&MS Gothic\\ \cmidrule(lr){1-4} ~~otherwise& \multicolumn{3}{c}{HG Gothic M}\\\midrule @@ -1648,11 +1759,11 @@ We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights \multicolumn{3}{c}{HG Maru Gothic PRO}\\ % %<*ja> -\gtfamily 明朝体細字 +\gtfamily 明朝体中字 &IPA明朝&IPAex明朝&MS明朝\\\midrule \gtfamily 明朝体太字& \multicolumn{3}{c}{HG明朝E}\\\midrule -\gtfamily ゴシック体細字\\ +\gtfamily ゴシック体中字\\  単ウェイト時 &IPAゴシック&IPAexゴシック&MSゴシック\\  {\tt jis2004}指定時 @@ -1680,7 +1791,6 @@ are internally specified by: \end{description} % %<*ja> -\newpage なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で \begin{description} \item[標準] フォント名(\texttt{HGMinchoE} など) @@ -1698,16 +1808,15 @@ are internally specified by: 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}. % %<*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}という別のパッケージとして)実装した. % \begin{LTXexample} @@ -1724,10 +1833,10 @@ If you want to use these functions, load \Pkg{luatexja-otf} package. %<*ja> \Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した: \begin{cslist} -\item[\cs{deluxe}] 明朝体・ゴシック体各2ウェイトと,丸ゴシック体を扱えるようになる. -\item[\cs{expert}] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も +\item[deluxe] 明朝体・ゴシック体各3ウェイトと,丸ゴシック体を扱えるようになる. +\item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も \ \cs{rubyfamily}\ によって扱えるようになる. -\item[\cs{bold}] ゴシック体を標準で太いウェイトのものに設定する. +\item[bold] ゴシック体を標準で太いウェイトのものに設定する. \end{cslist} しかしこれらのオプションは\Pkg{luatexja-otf}パッケージには存在しない. \Pkg{otf}パッケージが文書中で使用する和文用TFMを自前の物に置き換えていたのに対し, @@ -1739,6 +1848,59 @@ If you want to use these functions, load \Pkg{luatexja-otf} package. \ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある. % +%\subsection{Changing default Japanese fonts} +%\subsection{標準和文フォントの変更} +\label{ssec-cfg} +%<*en> +If \texttt{luatexja.cfg} can be seen from \LuaTeX, \LuaTeX-ja automatically reads it. +The main use of \texttt{luatexja.cfg} is for changing default Japanese fonts, +when IPAex fonts cannot be installed in \TeX~system. +One should not overuse this \texttt{luatexja.cfg}; fonts which will be used in +a document should be specified in its source. + +For example, +\begin{lstlisting} +\def\ltj@stdmcfont{IPAMincho} +\def\ltj@stdgtfont{IPAGothic} +\end{lstlisting} +makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of +IPAex~Mincho and IPAex~Gothic. + +For another example, the following two lines makes that +non-embedded fonts Ryumin-Light~and~GothicBBB-Medium as default Japanese fonts +(as the earlier version of \LuaTeX-ja): +\begin{lstlisting} +\def\ltj@stdmcfont{psft:Ryumin-Light} +\def\ltj@stdgtfont{psft:GothicBBB-Medium} +\end{lstlisting} +% +%<*ja> +\LuaTeX から見える位置に \texttt{luatexja.cfg} があれば,\LuaTeX-jaはそれを読み込む. +このファイルを用いるとplain~\TeX, \LaTeXe における標準和文フォントを +IPAex明朝・IPAexゴシックから変更することができる. +しかし,基本的には\emph{文章中で用いるフォントは(例えば \Pkg{luatexja-preset} などで) +文書ソース内で指定するべき}であり,この \texttt{luatexja.cfg} は, +「IPAexフォントがインストールできない」など,IPAexフォントが使用できない場合にのみ +応急処置的に用いるべきである. + +例えば +\begin{lstlisting} +\def\ltj@stdmcfont{IPAMincho} +\def\ltj@stdgtfont{IPAGothic} +\end{lstlisting} +と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変 +更される. + + +なお,20140906.0以前のバージョンのように, +Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用いる場合は +\begin{lstlisting} +\def\ltj@stdmcfont{psft:Ryumin-Light} +\def\ltj@stdgtfont{psft:GothicBBB-Medium} +\end{lstlisting} +と記述すればよい. +% + %\section{Changing Parameters} %\section{パラメータの変更} @@ -1858,13 +2020,13 @@ these eight ranges belongs to the character range~217. % \begin{description} %<*en> -\newpage -\item[Range~8${}^{\text{J}}$] The intersection of the upper half of ISO~8859-1 + +\item[Range~8${}^{\kern.1em\text{J}}$] 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: % %<*ja> -\item[範囲8${}^{\text{J}}$] ISO~8859-1の上位領域(ラテン1補助)と +\item[範囲8${}^{\kern.1em\text{J}}$] ISO~8859-1の上位領域(ラテン1補助)と JIS~X~0208の共通部分.この文字範囲は 以下の文字で構成される: % @@ -1904,11 +2066,11 @@ This range consists of the following Unicode ranges, \emph{except characters in \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. % %<*ja> -\item[範囲2${}^{\text{J}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの +\item[範囲2${}^{\text{\kern.1emJ}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの 和文フォント)はこれらの文字を持つ. % \begin{multicols}{2} @@ -1920,11 +2082,11 @@ This range consists of the following Unicode ranges, \emph{except characters in \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}. % %<*ja> -\item[範囲3${}^{\text{J}}$] 句読点と記号類.ブロックのリストは表\ref{table-rng3}% +\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは表\ref{table-rng3}% に示してある. % \begin{table}[!tb] @@ -1974,8 +2136,8 @@ This range consists of the following Unicode ranges, \emph{except characters in \end{lstlisting} %\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas. %\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域. -%\item[Range~6${}^{\text{J}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}. -%\item[範囲6${}^{\text{J}}$] 日本語で用いられる文字.ブロックのリストは表\ref{table-rng6}に示す. +%\item[Range~6${}^{\text{\kern.1emJ}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}. +%\item[範囲6${}^{\text{\kern.1emJ}}$] 日本語で用いられる文字.ブロックのリストは表\ref{table-rng6}に示す. \begin{table}[!tb] %\caption{Unicode blocks in predefined character range~6.}\medskip %\caption{文字範囲6に指定されているUnicodeブロック.} @@ -2003,11 +2165,11 @@ This range consists of the following Unicode ranges, \emph{except characters in \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}. % %<*ja> -\item[範囲7${}^{\text{J}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に +\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に 含まれていないもの. ブロックのリストは表\ref{table-rng7}に示す. % @@ -2034,7 +2196,7 @@ The block list is indicated in Table~\ref{table-rng7}. \end{table} \end{description} -%\newpage\subsection{\Param{kanjiskip} and \Param{xkanjiskip}} +%\subsection{\Param{kanjiskip} and \Param{xkanjiskip}} %\subsection{\Param{kanjiskip}と\Param{xkanjiskip}} \label{subs-kskip} @@ -2213,7 +2375,7 @@ Japanese fonts&\Param{yjabaselineshift} % %<*ja> 和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が -必要になる.\pTeX ではこれは \cs{ybaselineshift} を設定することで +必要になる.\pTeX ではこれは \cs{ybaselineshift}(または\cs{tbaselineshift})を設定することで なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない 文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい. このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量 @@ -2265,36 +2427,29 @@ xyz漢字 \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. -% -%<*ja> -なお,\Param{yalbaselineshift},~\Param{talbaselineshift}パラメータに -正の値を指定しても, -下の例のように\textbf{ALchar}の深さは増加しないことに注意. -これは,2パラメータがglyph~nodeの\verb+yoffset+を使って -実装されているためである. -\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータは -別の方法を使って実装しているので, -このような問題は起こらない. -% -\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}. +% +%<*ja> +なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意. +\begin{itemize} + \item \Param{yalbaselineshift},~\Param{talbaselineshift}パラメータが正になっている. + \item 「音節」を構成する唯一の文字$p$の +左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である. +\end{itemize} +\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない. +% %<*ja> \paragraph{数式における挙動:\pTeX との違い} @@ -2344,6 +2499,49 @@ $\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ \end{table} % +%<*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. ... + +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. +% +%<*ja> +\subsection{禁則処理関連パラメータと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である. +% + +\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 %\part{Reference} %\part{リファレンス} @@ -2351,6 +2549,7 @@ $\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ \suppressfloats[t] %<*ja> \section{\LuaTeX-jaにおける \cs{catcode}} +\label{sec-catcode} \subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}} \pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか は \cs{kcatcode} の値によって決定されるのであった. @@ -2358,6 +2557,7 @@ $\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ % %<*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. @@ -2525,7 +2725,7 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} %&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-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\\ @@ -2533,16 +2733,18 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} \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} @@ -2550,8 +2752,6 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} %&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-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\\ @@ -2569,7 +2769,6 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} %\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Cyrillic letters (row 7)}&N&N&Y\\ %\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}ギリシャ文字(6区)}&Y&N&Y\\ %\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}キリル文字(7区)}&N&N&Y\\ -$\vphantom{\D 3000}$\\ \bottomrule \end{tabular}\hss}\par \end{table} @@ -2596,12 +2795,10 @@ For the detail, see \url{https://github.com/h-kitagawa/kct}. 異なっているところだけを載せると,表\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} などを参照すること. % @@ -2644,7 +2841,7 @@ implemented vertical writing by rotating \texttt{TLT}-box by 90~degrees. %<*ja> \begin{tabular}{>{\bfseries}lcccc} \toprule -&横組&縦組 &\cs{dtou}「dtou方向」&「utod方向」\\ +&横組&縦組 &「dtou方向」&「utod方向」\\ \midrule 命令&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\ 字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\ @@ -2700,7 +2897,7 @@ Example&\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\ %<*en> \LuaTeX-ja supports four directions, as shown in Table~\ref{tab-dir}. -The second column (\emph{yoko} direction) is just horizontal writing, +The second column (\emph{yoko} direction) is just horizontal writing, and the third column (\emph{tate} direction) is vertical writing. The fourth column (\emph{dtou} direction) is actually a hidden feature of \pTeX. We implemented this for debugging purpose. @@ -2982,32 +3179,31 @@ However, this no longer applies in \LuaTeX-ja. \the\wd0,~\hbox{\tate \the\wd0} \end{LTXexample} -To access box dimensions \emph{with respect to current direction}, +To access box dimensions \emph{with respect to current direction}, one have to use the following commands instead of \cs{wd} wtc. \begin{cslist} - \item[\cs{ltjgetwd}\{\}\textrm{, }\cs{ltjgetht}\{\}\textrm{, }% - \cs{ltjgetdp}\{\}] -These commands return \emph{an internal dimension} of \cs{box} with respect to + \item[\cs{ltjgetwd}\textrm{, }\cs{ltjgetht}\textrm{, }% + \cs{ltjgetdp}] +These commands return \emph{an internal dimension} of \cs{box} 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}=\textrm{, }\cs{ltjsetht}=\textrm{, }% @@ -3044,29 +3240,27 @@ These commands set the dimension of \cs{box}. Unlike \cs{ltjgetwd}, one doe \begin{cslist} - \item[\cs{ltjgetwd}\{\}\textrm{, }\cs{ltjgetht}\{\}\textrm{, }% - \cs{ltjgetdp}\{\}] + \item[\cs{ltjgetwd}\textrm{, }\cs{ltjgetht}\textrm{, }% + \cs{ltjgetdp}] 現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため, \begin{lstlisting} -\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701} +\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701 \end{lstlisting} -のように \cs{wd} の代わりとして扱うことができる.引数が1桁の場合は, -\cs{ltjgetwd3} のように引数をグループで括らなくても良いが,そうでない場合は -(通常の命令への引数のように)\verb+\ltjgetwd{42}+ とグループに括る必要がある. +のように \cs{wd} の代わりとして扱うことができる. 使用例は以下の通りである. \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}=\textrm{, }\cs{ltjsetht}=\textrm{, }% @@ -3148,9 +3342,9 @@ Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\ \ifnum\ltjgetparameter{boxdir}{200}=4 \end{lstlisting} のように行うことができる. -\cs{iftdir} は少々面倒であるが +\cs{iftdir} は少々面倒であるが,8で割った余りが3であるか否かを判断すれば良いから \begin{lstlisting} -\ifnum\numexpr +\ifnum\numexpr \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3 \end{lstlisting} とすればよい. @@ -3163,8 +3357,9 @@ overridden by \LuaTeX-ja, using~\verb+\protected\def+. \begin{cslist}[style=standard] \item[\cs{unhbox}\textrm{, }\cs{unvbox}\textrm{, }\cs{unhcopy}\textrm{, }\cs{unvcopy}] \item[\cs{vadjust}\{\}] + \item[\cs{insert}\{\}] \item[\cs{lastbox}] - \item[\cs{raise}\textrm{, }\cs{lower}\textrm{\ etc., }\cs{vcenter}] + \item[\cs{raise}\textrm{, }\cs{lower}\textrm{\ etc., }\cs{vcenter}] \item[\cs{vcenter}] \end{cslist} % @@ -3182,6 +3377,9 @@ overridden by \LuaTeX-ja, using~\verb+\protected\def+. \item[\cs{vadjust}\{\}] 一旦プリミティブ本来の挙動を行う.その後,の組方向が 周囲の垂直リストの組方向と一致しない場合にエラーを出力し, 該当の \cs{vadjust} を無効にする. + \item[\cs{insert}\{\}] + 一旦プリミティブ本来の挙動を行い,その後内の各ボックス・罫線の直前に組方向を示 + すdirection whatsitを挿入する. \item[\cs{lastbox}] ボックスの「中身」を現在の組方向に合わせるためのノード (\textit{dir\_box}という)を必要ならば除去し, 正しく「中身」のボックスが返されるように前処理をする. @@ -3234,14 +3432,14 @@ causes a error. We denote control sequences which are defined in \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: % %<*ja> -「はじめに」の節で述べたように,JFMは文字と和文組版で自動的に挿入される +JFMは文字と和文組版で自動的に挿入される グルー/カーンの寸法情報を持っている.JFMの構造は次の節で述べる. \cs{jfont} 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで 指定する必要がある: @@ -3536,20 +3734,22 @@ letter-spacing and the width of italic correction are not correct: \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=}\ の部分には縦組用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} @@ -3567,9 +3767,9 @@ Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which are introduced in the \Pkg{luaotfload} package, \LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \cs{jfont} (and~\cs{font}), to specify a ``name-only'' Japanese font which -will not be embedded to PDF. Typical use of this prefix is to specify -standard, non-embedded Japanese fonts, namely, ``Ryumin-Light'' and -``GothicBBB-Medium''. +will not be embedded to PDF. +Note that these non-embedded fonts under current \LuaTeX\ has Identity-H encoding, +and this violates the standard ISO32000-1:2008~(\cite{pdfstd}). \emph{OpenType font features, such as ``{\tt +jp90}'', have no meaning in name-only fonts using ``{\tt psft:}''\ prefix, @@ -3583,8 +3783,10 @@ with \texttt{psft} prefix, because they are only simple linear transformations. \cs{jfont}(と \cs{font} プリミティブ)では \texttt{psft:}プリフィックスを用いることができる. このプリフィックスを用いることで,PDFには埋め込まれない「名前だけの」 -和文フォントを指定することができる.「標準的な」非埋め込み和文フォント, -つまり「Ryumin-Light」「GothicBBB-Medium」の指定でこのプリフィックスが使われる. +和文フォントを指定することができる. +なお,現行の\LuaTeX で非埋め込みフォントを作成するとPDF内でのエンコーディングが +Identity-Hとなり,PDFの標準規格ISO32000-1:2008~(\cite{pdfstd})に非準拠になってしまう +ので注意してほしい. \emph{\texttt{psft} プリフィックスの下では \texttt{+jp90} などのOpenType font featureの効力はない. @@ -3797,7 +3999,7 @@ This field is a list of characters which are in this character \item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+}」のような,文字それ自体の後にアスタリスクをつけたもの \item いくつかの「仮想的な文字」(後に説明する) \end{itemize} -% +% \item[width=, height=, depth=, italic=] %(required) @@ -3830,7 +4032,7 @@ These fields are for adjusting the position of the ``real'' glyph. Legal 3~fields are omitted, \texttt{left} and \texttt{down} are treated as~0, and \texttt{align} field is treated as \texttt{'left'}. -The effects of these 3~fields are indicated in +The effects of these 3~fields are indicated in Figures \ref{fig-pos}~and~\ref{fig-pos-tate}. % %<*ja> @@ -3912,7 +4114,7 @@ when the current character class is the class for opening delimiters'. \end{minipage}% \begin{minipage}{0.6\textwidth}% %<*en> -Consider a Japanese character node which belongs to +Consider a Japanese character node which belongs to a character class whose the \texttt{align} field is \texttt{'middle'}. % @@ -4021,13 +4223,12 @@ Furthermore, the glyph is shifted according to values of fields 和文文字を考えよう. \begin{itemize} \item -実際のグリフの「垂直位置」は,ベースラインが文字の物理的な左右方向の中央を通る +実際のグリフの「垂直位置」は,まずベースラインが文字の物理的な左右方向の中央を通る 位置となる. -\item -また,この場合\texttt{align}フィールドは \texttt{'right'} なので, +\item +また,この場合 \texttt{align} フィールドは \texttt{'right'} なので, 「水平位置」は字送り方向に「右寄せ」したものとなる(緑色の長方形). -その際,高さ・深さは,実フォントのascender, descenderの値が使われる. -\item +\item その後さらに \texttt{left} と \texttt{down} の値に従ってシフトされる のは横組用和文フォントと変わらない. \end{itemize} @@ -4112,8 +4313,8 @@ we specify to %<*ja> \paragraph{文字クラスの決定} -文字からその文字の属する文字クラスを算出する過程は少々複雑である. -次の内容を一部に含んだ \texttt{jfm-test.lua} を用いて説明する. +文字からその文字の属する文字クラスを算出する過程について, +次の内容を含んだ \texttt{jfm-test.lua} を用いて説明する. % %<*en> \paragraph{Character to character classes} @@ -4122,93 +4323,79 @@ using \texttt{jfm-test.lua} which contains the following: % \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} -%句点「。」の幅は二分であるので +%ここで,次のような入力とその実行結果を考える: %Now consider the following input/output: \begin{LTXexample}[width=0.3\textwidth] -\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert -\setbox0\hbox{\a 。\inhibitglue 漢} +\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid +\setbox0\hbox{\a ヒ漢} \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}}. % %<*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の適用によるグリフ置換の後に行われる}ことを +この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の結果に基づく}ことを 示している. % %<*en> -However, a starred specification like ``\texttt{'、*'}'' changes the rule. -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. % %<*ja> -但し,「\texttt{'、*'}」のようにアスタリスクつきの指定があると, -状況は異なる. +但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,置換前の文字クラスを採用する. % \begin{LTXexample}[width=0.3\textwidth] \jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert -\a 漢、\inhibitglue 漢 +\a 漢。\inhibitglue 漢 \end{LTXexample} %<*en> -Here, the character class of the ideographic comma ``、''~(\texttt{U+3001}) is determined -as following: +Here, the character class of the ideographic full stop ``。''~(\texttt{U+3002}) is determined +as follows: \begin{enumerate} -\item As the case of ``。'', the ideographic comma ``、'' 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 ``、'' is \emph{non-zero value}, namely, 2000. -\item Hence the ideographic comma ``、'' in above belongs the character class~2000. +\item As the case of ``ヒ'', 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'', 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. \end{enumerate} % %<*ja> -ここで,読点「、」(\texttt{U+3001})の文字クラスは,以下のようにして決まる. +ここで,句点「。」(\texttt{U+3002})の文字クラスは,以下のようにして決まる. \begin{enumerate} -\item とりあえず句点の時と同じように,\Pkg{luaotfload} によって縦組用読点のグリフに置き換わる. -\item 置換後のグリフは \texttt{U+FE11} であり,そのままでは文字クラスは0と判定される. -\item ところが,JFMには「\texttt{'、*'}」指定があるので,置換前の横組用読点のグリフによって文字クラスを判定する. -\item 結果として,上の出力例中の読点の文字クラスは2000となる. +\item \Pkg{luaotfload} によって縦組用句点のグリフに置き換わる. +\item 置換後のグリフは \texttt{U+FE12} であり,JFMに従えば文字クラスは\emph{0}と判定される. +\item この場合,置換前の横組用句点のグリフによって文字クラスを判定する. +\item 結果として,上の出力例中の句点の文字クラスは2000となる. \end{enumerate} % -%<*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となる. -% %\paragraph{仮想的な文字} %\paragraph{Imaginary characters} @@ -4334,7 +4521,7 @@ font families. There is no relation between the value of you can set both \cs{fam} and \cs{jfam} to the same value. Here in the argument of \Param{jatextfont} etc.\ is a control sequence which is defined by \cs{jfont}, i.e., -a \emph{horizontal} Japanese font. +a \emph{horizontal} Japanese font. % %<*ja> \LuaTeX-jaの数式中での和文フォントの扱いも同様である. @@ -4511,7 +4698,7 @@ JFMで指定されているそれぞれの値をスケーリングしたもの 間に入るものがkernであれば,このフィールドの値は\ \texttt{[$j$]=\{false, , \}} である. はkernを表すノードそのものである\footnote{% -本バージョンでは利用可能ならばノードのアクセス手法にdirect access +本バージョンではノードのアクセス手法にdirect access modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし か見えないことに注意. }. @@ -4519,6 +4706,10 @@ glueであれば,\texttt{[$j$]=\{false, , , \}} で はglueの長さを表すノードそのものであり, $\text{}=\textit{from\_jfm}+\text{}$である. \end{itemize} +\item[ascent\textrm{, }descent] +…… +\item[chars\_cbcache] +…… \end{cslist} % @@ -4657,8 +4848,8 @@ is the position of \verb+hpack_filter+ callback in the source of \LuaTeX, see Section~\ref{sec-para}. % %<*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}章を参照. @@ -4668,24 +4859,22 @@ of \LuaTeX, see Section~\ref{sec-para}. \cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands for assigning parameters. These take one argument which is a \texttt{=} list. -The list of allowed keys are described in the next subsection. The difference between \cs{ltjsetparameter} and \cs{ltjglobalsetparameter} is only 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. % %<*ja> \cs{ltjsetparameter} と \cs{ltjglobalsetparameter} はパラメータを -指定するための命令である.これらは\texttt{=}のリストを -引数としてとる.許されるキーの一覧は次の節にある. +指定するための命令で,\texttt{=}のリストを +引数としてとる. \cs{ltjsetparameter} と \cs{ltjglobalsetparameter} の違いはスコープの 違いのみで, -\cs{ltjsetparameter} はローカルな指定,\cs{ltjglobalsetparameter} は -グローバルな指定を行う. -これらは他のパラメータ指定と同様に \cs{globaldefs} の値に従う. +\cs{ltjsetparameter} はローカルな設定を行うのに対し, +\cs{ltjglobalsetparameter} はグローバルな設定を行う. +また,他のパラメータ指定と同様に \cs{globaldefs} の値にも従う. % %<*en> @@ -4696,7 +4885,7 @@ in \pTeX, and symbols beside each parameter has the following meaning: %<*ja> 以下は \cs{ltjsetparameter} に指定することができるパラメータの一覧である. [\cs{cs}]は\pTeX における対応物を示す. -また,それぞれのパラメータの右上にある記号には次の意味がある: +また,それぞれのパラメータの右上の記号には次の意味がある: % \begin{itemize} %<*en> @@ -4715,7 +4904,7 @@ adopted in the whole paragraph or the whole hbox. \end{itemize} \begin{cslist}[style=standard] -\item[\DParam{jcharwidowpenalty}\,=$^\ast$] [\cs{jcharwidowpenalty}]\ +\item[\DParam{jcharwidowpenalty}\,=$^\ast$] [\cs{jcharwidowpenalty}]\ %<*en> Penalty value for suppressing orphans. This penalty is inserted just @@ -4737,7 +4926,7 @@ At the present version, the lowermost bit of indicates (see the description of \Param{jcharwidowpenalty} above). % %<*ja> -文字コードがの文字が持つ付加的な属性値(attribute). +文字コードがの文字が持つ付加的な属性値. 現在のバージョンでは,の最下位ビットが,その文字が句読点と みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照). % @@ -4754,7 +4943,15 @@ At the present version, the lowermost bit of indicates \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ではこれらの制限は解消されている. % %<*en> Set a penalty which is inserted automatically before the character , @@ -4764,8 +4961,15 @@ with one of closing brackets ``〗'', so \LuaTeX-ja sets \ltjsetparameter{prebreakpenalty={`〙,10000}} \end{lstlisting} by default. -% +\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} +% \item[\DParam{postbreakpenalty}\,=\{,\}$^\ast$] [\cs{postbreakpenalty}]\ @@ -4773,25 +4977,10 @@ by default. %<*ja> 文字コードの\textbf{JAchar}が行末にくることを抑止するために, この文字の後に挿入/追加されるペナルティの量を指定する. - -\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において, -\begin{itemize} -\item 一つの文字に対して,pre, postどちらか一つしか指定することができなかっ - た(後から指定した方で上書きされる). -\item pre, post合わせて256文字分の情報を格納することしかできなかった. -\end{itemize} -という制限があったが,\LuaTeX-jaではこれらの制限は解消されている. % %<*en> Set a penalty which is inserted automatically after the character , 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} % \item[\DParam{jatextfont}\,=\{,\}$^\ast$] @@ -4917,13 +5106,13 @@ The default value is \texttt{paverage}. \dots \item[\DParam{jacharrange}\,=] \item[\DParam{kansujichar}\,=\{, \}$^\ast$] [\cs{kansujichar}] -\item[\DParam{direction}\,=\ \hbox{\rm (always local)}]\ +\item[\DParam{direction}\,=\ \hbox{\rm (always local)}]\ %<*en> Assigning to this parameter has the same effect as \cs{yoko}~(if $\hbox{}=4$), \cs{tate}~(if $\hbox{}=3$), \cs{dtou}~(if $\hbox{}=1$) or \cs{utod}~(if $\hbox{}=11$). -If the argument is not one of 4,~3, 1~nor~11, +If the argument is not one of 4,~3, 1~nor~11, the behavior of this assignment is undefined. % %<*ja> @@ -4935,6 +5124,7 @@ the behavior of this assignment is undefined. \end{cslist} + \subsection{\cs{ltjgetparameter}} \label{ssec-getpar} %<*en> @@ -4954,8 +5144,8 @@ always takes a parameter name as first argument. %<*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). % %<*ja> @@ -4987,7 +5177,7 @@ returns 1 or 0, not %<*ja> \verb+\ltjgetparameter{autospacing}+ と \verb+\ltjgetparameter{autoxspacing}+ は, \texttt{true}や\texttt{false}を返すの\emph{ではなく}, -1と0のいずれかを返すことに注意, +1か0のいずれかを返すことに注意, % \item @@ -4996,7 +5186,7 @@ If first argument is one of the following, an additional argument---a character code, for example---is needed. % %<*ja> -第1引数が次のいずれかの場合には,さらに文字コードを第二引数としてとる. +第1引数が次のいずれかの場合には,さらに文字コードを第2引数としてとる. % \begin{quote} \sffamily @@ -5105,9 +5295,133 @@ by the following: \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} +% +%<*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} +% + \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} で読みこめば良い. +% %\section{Other Commands for plain \TeX\ and \LaTeXe} @@ -5185,7 +5499,9 @@ With the help of this example, we remark the specification of \cs{inhibitglue}: simply ignored. % %<*ja> -\item \cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない. +\item \emph{\cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない}\footnote{% + この点は\TeX~Live~2014での\pTeX における \cs{inhibitglue} の仕様変更と同じである. +}. 4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり, \cs{noindent} の時点で水平モードになるからである. % @@ -5655,7 +5971,7 @@ See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details The \texttt{CID} key is effective only when with \texttt{NoEmbed} described below. The same JFM cannot be used in both horizontal Japanese fonts and - vertical Japanese fonts, hence the \texttt{JFM} key + vertical Japanese fonts, hence the \texttt{JFM} key will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} keys. % %<*ja> @@ -5774,10 +6090,10 @@ A demonstrarion is shown in Figure~\ref{fig:altkanji-fontspec}. \paragraph{Remark on \texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} keys} In \texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures} keys, one cannot specify per-shape settings such as \texttt{BoldFeatures}. -For example, +For example, \begin{lstlisting} AltFont = { - { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, + { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, Range="3000-"30FF, BoldFeatures={Color=007F00} } } \end{lstlisting} @@ -5792,7 +6108,7 @@ BoldFeatures = { \end{lstlisting} On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and \texttt{TateFont} -keys can be specified in each list in the \texttt{AltFont} key. Also, +keys can be specified in each list in the \texttt{AltFont} key. Also, one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}. % %<*ja> @@ -5803,7 +6119,7 @@ one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatu 例えば. \begin{lstlisting} AltFont = { - { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, + { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, Range="3000-"30FF, BoldFeatures={Color=007F00} } } \end{lstlisting} @@ -6521,7 +6837,7 @@ $i$は7より小さい自然数. \textit{direction}~whatsit(後述)において組方向を示すために,あるいは\textit{dir\_box}の 組方向を用いる.\textit{direction}~whatsitにおいては値は \begin{quote} - \textit{dir\_dtou} (1), \textit{dir\_tate} (3), + \textit{dir\_dtou} (1), \textit{dir\_tate} (3), \textit{dir\_yoko} (4), \textit{dir\_utod} (11) \end{quote} のいずれかであり,\textit{dir\_box}ではこれらに次を加えた値をとる(\ref{sec-dir-imp}章参照). @@ -6949,7 +7265,7 @@ but also by the value of \cs{globaldefs}. For parameters that do not need additional arguments, one only have to define a function in the table \verb+luatexja.unary_pars+. -For example, with the following function, +For example, with the following function, \verb+\ltjgetparameter{hoge}+ returns a \emph{string} \texttt{42}. \begin{lstlisting}[numbers=left] function luatexja.unary_pars.hoge (t) @@ -6970,7 +7286,7 @@ end Here the first argument $t$ is the stack level, as before. The second argument $c$ is just the second argument of \cs{ltjgetparameter}. -For parameters that need an additional argument, one also have to +For parameters that need an additional argument, one also have to execute the \TeX\ code like \begin{lstlisting} \ltj@@decl@array@param{fuga} @@ -7174,7 +7490,7 @@ process it}, if and only if the following three conditions are satisfied: \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い @@ -7297,54 +7613,54 @@ u \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: % %<*ja> -\emph{クラスタ}は以下の形のうちのどれかひとつをとる連続的なノードのリストである: +\emph{クラスタ}は以下の形のうちのどれかひとつをとるノードのリストである: % \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}. % %<*ja> \item その \verb+\ltj@icflag+ の値が$[3,15)$に入るノードのリスト. これらのノードはある既にパッケージングされたhboxから \cs{unhbox} で アンパックされたものである. - その\textit{id}は\textit{id\_pbox}である. + この場合,クラスタの\textit{id}は\textit{id\_pbox}である. % %<*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}. % %<*ja> \item インライン数式でその境界に2つの\textit{math\_node}を含むもの. - その\textit{id}は\textit{id\_math}である. + この場合,クラスタの\textit{id}は\textit{id\_math}である. % %<*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: % %<*ja> -\item \textit{glpyh\_node}~$p$とそれに関係するノード: +\item \textbf{JAchar}を表す\textit{glyph\_node}~$p$とそれに関係するノード: % \begin{enumerate} %<*en> -\item A kern for the italic correction of~$p$. +\item[(a)] A kern for the italic correction of~$p$. % %<*ja> -\item $p$のイタリック補正のためのカーン. +\item[(a)] $p$のイタリック補正のためのカーン. % %<*en> -\item An accent attached to $p$ by \cs{accent}. +\item[(b)] An accent attached to $p$ by \cs{accent}. % %<*ja> -\item \cs{accent} による$p$に付随したアクセント. +\item[(b)] \cs{accent} による$p$に付随したアクセント. % \end{enumerate} \[ @@ -7362,41 +7678,51 @@ with the \textit{id} of it: \] %<*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}. +% +%<*ja> +この場合の\textit{id}は\textit{id\_jglyph}である. +% + +%<*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}. % %<*ja> -\textit{id}は\textit{glyph\_node}が和文文字を表すかどうかによって -\textit{id\_jglyph},もしくは\textit{id\_glyph}となる. +\item \textbf{ALchar}を表す\textit{glyph\_node},\cs{accent} によるアクセント位置補正用の + カーン(subtypeが2),そしてイタリック補正・カーニングによって挿入されたカーン達が連続 + したもの.この場合の\textit{id}は\textit{id\_glyph}である. % %<*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. % %<*ja> -\item ボックス様のノード,つまり水平ボックス,垂直ボックス,罫線 (\cs{vrule}), +\item 水平ボックス(hbox),垂直ボックス,罫線 (\cs{vrule}), そして\textit{unset\_node}. - その\textit{id}は垂直に移動していないhboxならば\textit{id\_hlist}, + クラスタの\textit{id}は垂直に移動していないhboxならば\textit{id\_hlist}, そうでなければ\textit{id\_box\_like}となる. % %<*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. % %<*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}である. % \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. % %<*ja> 以下では\textit{Np}, \textit{Nq}, \textit{Nr}でクラスタを表す. @@ -7432,6 +7758,7 @@ $\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は,その和文文字 \item[\textit{id\_hlist}] 縦方向にシフトされていないhbox.\\ この場合,$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$はそれぞれ$p$の内容を表すリストの, 先頭・末尾のノードである. +\medskip \begin{itemize} \item 状況によっては,\TeX ソースで言うと \begin{lstlisting} @@ -7869,30 +8196,6 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] そのため,「右空白」が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}の順序が逆になっている)場合と同じである. @@ -7950,6 +8253,69 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, \end{itemize} % +%<*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}によるカーニング・ハイフネーションが終わった段階では, + + + +% + %\section{Patch for the \Pkg{listings} Package} %\section{\Pkg{listings} パッケージへの対応} @@ -7999,7 +8365,7 @@ then the patch \Pkg{lltjp-listings} is loaded automatically at \verb+\begin{docu 意識する必要はない. % -%\subsection{Notes} +%\subsection{Notes and additional keys} %\subsection{注意} %<*en> \paragraph{Escaping to \LaTeX} @@ -8041,6 +8407,20 @@ instead of ``\verb+\ほげ+''. 「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる. % +%<*en> +\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. +% %<*ja> \paragraph{異体字セレクタの扱い} \texttt{lstlisting} 環境などの内部にある異体字セレクタを扱うため, @@ -8053,21 +8433,31 @@ instead of ``\verb+\ほげ+''. \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される. もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は, 以下の例(左側は入力,右側はその出力)のようになる. +% \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. +% +%<*ja> \item falseの場合は,異体字セレクタは適当な命令によって「見える形で」出力される. どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり, \Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される. +% \begin{LTXexample} \begin{lstlisting}[vsraw=false, vscmd=\ltjlistingsvsstdcmd] 葛󠄀城市,葛󠄁飾区,葛西 \end{lstlisting} \end{LTXexample} -ちなみに,本ドキュメントでは次のようにしている: +% ちなみに,本ドキュメントでは次のようにしている: +% 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% @@ -8081,10 +8471,56 @@ instead of ``\verb+\ほげ+''. \lstset{vscmd=\IVSB} \end{lstlisting} \end{itemize} -既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\ +%<*en> +The default output command of variation selectors is stored in \verb+\ltjlistingsvsstdcmd+. +% +%<*ja> +既定の出力命令を復活させたい場合は\ \verb+vscmd=\ltjlistingsvsstdcmd+\ とすれば良い. % +%<*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} +% +%<*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} +% + %\subsection{Class of Characters} %\subsection{文字種} @@ -8206,7 +8642,7 @@ Prev&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ \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: % %<*ja> @@ -8214,7 +8650,7 @@ are classified into above 5~classes by the following rules: Letter, Other, Kanji, Open, Closeのどれに属するかは次によって決まる: % \begin{itemize} -%\item \textbf{ALchar}s above \texttt{U+0080} are classified as Letter. +%\item \textbf{ALchar}s above or equal to~\texttt{U+0080} are classified as Letter. %\item (\texttt{U+0080}以降の)\textbf{ALchar}は,すべてLetter扱いである. %\item \textbf{JAchar}s are classified in the order as follows: @@ -8426,10 +8862,11 @@ OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されて \texttt{fontloader} の呼び出しでかなり時間を消費することから, %%% to_table を使わなくしたことで,メモリ使用量は減った IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している. +% +%<*ja> \section{複数フォントの「合成」(未完)} - \section{\LuaTeX-jaにおけるキャッシュ} \Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を キャッシュとして保存しているのと同様の方法で, @@ -8488,8 +8925,9 @@ CMapが必要である. 非埋め込みの中国語・韓国語フォントを定義する場合,同様のキャッシュが生成される. キャッシュの名称,必要となるCMapについては表\ref{tab:cid-cache}を参照して欲しい. -\item[ivs\_***.lua] -フォント``\texttt{***}''における異体字情報を格納している.構造は以下の通り: +\item[extra\_***.lua] +フォント``\texttt{***}''における異体字セレクタの情報,縦組用字形への変換テーブル,そして +縦組時における幅を格納している.構造は以下の通り: % %<*en> \subsection{Use of Cache} @@ -8499,7 +8937,7 @@ CMapが必要である. \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. @@ -8508,9 +8946,15 @@ if you specified \texttt{cid} key in \cs{jfont} to use other CID-keyed non-embedded fonts for Chinese or Korean, as in Page~\pageref{para-cid}. -\item[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. % \begin{table}[!tb] @@ -8523,10 +8967,10 @@ The structure of the table is the following: \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} @@ -8536,16 +8980,18 @@ return { { [10955]={ -- U+2ACB "Subset Of Above Not Equal To" [65024]=983879, -- <2ACB FE00> + ["vwidth"]=0.98, -- vertical width }, [37001]={ -- U+9089 "邉" [0]=37001, -- <9089 E0100> 991049, -- <9089 E0101> ... + ["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> @@ -8660,8 +9106,13 @@ callbackに処理が回らない.そこで,\LuaTeX-ja では,\cs{everyhbox \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になるという問題が発生する.そのため,この場合に限っては @@ -8868,31 +9319,13 @@ Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \new \\\null\hfill\texttt{.../texmf-dist/doc/ptex/base/ptexdoc.pdf} \bibitem{ptextug} Hisato Hamano. \newblock \textit{Vertical Typesetting with \TeX}, TUGBoat~\textbf{11}(3), 346--352, 1990. +\bibitem{pdfstd} International Organization for Standardization. \newblock +ISO 32000-1:2008, \textit{Document management -- Portable document format -- Part 1: PDF + 1.7}, 2008. \newblock +\\\null\hfill +\url{http://www.iso.org/iso/iso\_catalogue/catalogue_tc/catalogue\_detail.htm?csnumber=51502} \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>