From ab0137d0a3f9f8fc686c8804fb910eb99ca9cd75 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 30 Jul 2017 22:20:15 +0000 Subject: luatexja (30jul17) git-svn-id: svn://tug.org/texlive/trunk@44924 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/luatex/luatexja/README | 8 +- .../texmf-dist/doc/luatex/luatexja/luatexja-en.pdf | Bin 465194 -> 455622 bytes .../texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf | Bin 867969 -> 864744 bytes Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx | 7489 +++--- .../source/luatex/luatexja/tool/jisx0208table.tex | 112 - .../source/luatex/luatexja/tool/table_ivd_aj1.lua | 32 + .../source/luatex/luatexja/tool/table_jisx0208.lua | 112 + .../luatexja/addons/luatexja-fontspec-24.sty | 358 - .../luatex/luatexja/addons/luatexja-fontspec.sty | 11 +- .../tex/luatex/luatexja/addons/luatexja-otf.sty | 101 +- .../tex/luatex/luatexja/addons/luatexja-preset.sty | 351 +- Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua | 15 +- .../texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua | 14 +- Master/texmf-dist/tex/luatex/luatexja/lltjext.sty | 445 +- .../tex/luatex/luatexja/ltj-direction.lua | 3 +- .../texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua | 23091 +++++++++++++++++++ .../texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua | 71 +- .../texmf-dist/tex/luatex/luatexja/ltj-jfont.lua | 29 +- .../texmf-dist/tex/luatex/luatexja/ltj-latex.sty | 5 +- Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua | 126 +- .../tex/luatex/luatexja/luatexja-core.sty | 1 + Master/texmf-dist/tex/luatex/luatexja/luatexja.lua | 23 +- Master/texmf-dist/tex/luatex/luatexja/luatexja.sty | 2 +- .../tex/luatex/luatexja/patches/lltjcore.sty | 34 +- .../tex/luatex/luatexja/patches/lltjp-array.sty | 16 + .../tex/luatex/luatexja/patches/lltjp-preview.sty | 16 + 26 files changed, 27811 insertions(+), 4654 deletions(-) delete mode 100644 Master/texmf-dist/source/luatex/luatexja/tool/jisx0208table.tex create mode 100644 Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua create mode 100644 Master/texmf-dist/source/luatex/luatexja/tool/table_jisx0208.lua delete mode 100644 Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-24.sty create mode 100644 Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua create mode 100644 Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty create mode 100644 Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-preview.sty diff --git a/Master/texmf-dist/doc/luatex/luatexja/README b/Master/texmf-dist/doc/luatex/luatexja/README index e2b4bda9551..451e146af4c 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/README +++ b/Master/texmf-dist/doc/luatex/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20170505.0 +The LuaTeX-ja Package 20170730.0 -------------------------------- Copyright (c) 2011--2017 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -40,9 +40,9 @@ Installation 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20170505.0 in the Git repository by + or tagged as 20170730.0 in the Git repository by + ;a=snapshot;h=refs/tags/20170730.0;sf=tgz> b. Extract the archive and process following three files by LuaLaTeX to generate classes for Japanese typesetting: @@ -87,4 +87,4 @@ Notes * src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use. -Last commit date: Fri May 5 21:25:22 2017 +0900 +Last commit date: Sun Jul 30 13:50:43 2017 +0900 diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf index 33b468387c4..822a5d1c49b 100644 Binary files a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf and b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf differ diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf index a34ccd6c1c2..07e9e4769d6 100644 Binary files a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf and b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf differ diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx index fc5ac40a02a..313d56f2ca6 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx @@ -21,7 +21,7 @@ \usepackage{metalogo,amsmath,array,tikz,pict2e,multienum,float} \usepackage{booktabs,multicol,luatexja-ruby} \usepackage[all]{xy} -\usepackage{lltjext,alltt} +\usepackage{lltjext,alltt,comment} %%%%%%%% Lua GC \patchcmd\@outputpage{\stepcounter{page}}{% @@ -39,7 +39,6 @@ %%%%%%%% fonts \usepackage{luatexja-otf} -\directlua{luatexja.otf.enable_ivs()} \usepackage[no-math]{fontspec} \setmainfont[Ligatures=TeX]{Linux Libertine O} \setmonofont[Scale=MatchLowercase, ItalicFont=lmmono10-italic.otf, @@ -460,7 +459,7 @@ on the content of the register \emph{only}. This is major difference with \pTeX. % %<*ja> \paragraph{組方向} -20150420.0版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている. +バージョン20150420.0からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている. なお,\LuaTeX 本体も$\Omega$流の組方向をサポートしているが,それとは全くの別物であること に注意してほしい. 特に,異なった組方向のボックスを扱う場合には @@ -503,7 +502,7 @@ without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package. 詳しい説明は\ref{ssec-setrange}節を参照してほしい. また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は - 20150906.0版から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では + バージョン20150906.0から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では 標準でTUエンコーディングのLatin Modernフォントが使われるので, 特に何もせずソース中にそのまま記述してもこれらの文字が出力される \footnote{\LaTeXe\ 2017/01/01より前では,ソース中に直接記述しても @@ -573,10 +572,10 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. % %<*en> \item In this document, natural numbers start from~zero. - $\omega$ denotes the set of all natural numbers. + $\omega$ denotes the set of all natural numbers which can be used in \TeX. % %<*ja> -\item 本ドキュメントでは,自然数は0から始まる.自然数全体の集合は$\omega$と表記する. +\item 本ドキュメントでは,自然数は0から始まる.(\TeX で扱える)自然数全体の集合は$\omega$と表記する. % \end{itemize} @@ -645,7 +644,7 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. \end{itemize} %In summary, \LuaTeX-ja version 20160404.0 (or~later) no longer supports \TeX~Live~2015. %<*ja> -要約すると,20160404.0版以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{% +要約すると,バージョン20160404.0以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{% もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である. }. % @@ -985,7 +984,7 @@ plfonts.dtx} and \texttt{pldefs.ltx}): \begin{itemize} %<*en> -\item Font encodings for Japanese fonts is \texttt{JY3}~(for horizontal direction) and +\item Font encodings for Japanese fonts are \texttt{JY3}~(for horizontal direction) and \texttt{JT3}~(for vertical direction). % %<*ja> @@ -994,20 +993,20 @@ plfonts.dtx} and \texttt{pldefs.ltx}): % %<*en> -\item Traditionally, Japanese documents use two typeface categories: \emph{mincho}~(明朝体) and +\item Traditionally, Japanese documents use only two families: \emph{mincho}~(明朝体) and \emph{gothic}~(\textgt{ゴシック体}). \emph{mincho} is used in the main text, while \emph{gothic} is used in the headings or for emphasis. \begin{center}\small \begin{tabular}{lllc} \toprule -\textbf{classification}&&&\textbf{family name}\\\midrule +\textbf{classification}&&&\textbf{commands}\\\midrule \emph{mincho} (明朝体)&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\ \emph{gothic} (\textgt{ゴシック体})&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\ \bottomrule \end{tabular} \end{center} \item -By default, the following fonts are used for \emph{mincho} and \emph{gothic}: +By default, the following fonts are used for these two families. \begin{center}\small \begin{tabular}{ccccc} \toprule @@ -1017,7 +1016,7 @@ By default, the following fonts are used for \emph{mincho} and \emph{gothic}: \bottomrule \end{tabular} \end{center} -Note that the bold series in both family are same as the medium series of \emph{gothic} +Note that the bold series in both family are same as the medium series of gothic family. There is no italic nor slanted shape for these \texttt{mc}~and~\texttt{gt}. % @@ -1032,7 +1031,7 @@ Note that the bold series in both family are same as the medium series of \emph{ \bottomrule \end{tabular} \end{center} -\item 標準では,次のフォントファミリが用いられる: +\item 標準では,次のフォントが用いられる: \begin{center}\small \begin{tabular}{ccccc} \toprule @@ -1042,8 +1041,8 @@ Note that the bold series in both family are same as the medium series of \emph{ \bottomrule \end{tabular} \end{center} -どちらのファミリにおいても,そのboldシリーズで使われるフォントは -ゴシック体のmediumシリーズで使われるフォントと同じであることに注意. +どちらのファミリにおいても,太字(\cs{bfseries})のフォントは +ゴシック体中字(\cs{gtfamily}\cs{mdseries})で使われるフォントと同じであることに注意. また,どちらのファミリでもイタリック体・スラント体は定義されない. % @@ -1058,7 +1057,7 @@ Note that the bold series in both family are same as the medium series of \emph{ These classes and packages also redefine \cs{jttdefault} to \cs{gtdefault} (\emph{gothic}~family). } specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim} environment. - The default value of \cs{jttdefault} is \cs{mcdefault}, so \emph{mincho} family is used. + The default value of \cs{jttdefault} is \cs{mcdefault}, so the mincho family is used. % %<*ja> \item \cs{verb} や \texttt{verbatim} 環境中の和文文字に使われる和文フォントファミリは @@ -1075,8 +1074,8 @@ Note that the bold series in both family are same as the medium series of \emph{ %<*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}: + the gothic family. The following line changes the default Japanese font family + to it: % %<*ja> \item \Pkg{beamer}クラスを既定のフォント設定で使う場合,既定欧文フォントがサンセリフなの @@ -1433,22 +1432,19 @@ alphabetic fonts % %<*ja> \begin{center}\small -\begin{tabular}{cccc} +\begin{tabular}{ccccc} \toprule 和文 -&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}\\ -欧文 -&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}\\ -\midrule -和文 -&\cs{newjfontfamily}&\cs{newjfontface}&\cs{defaultjfontfeatures}\\ +&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\ 欧文 -&\cs{newfontfamily}&\cs{newfontface}&\cs{defaultfontfeatures}\\ +&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\ \midrule 和文 -&\cs{addjfontfeatures}\\ +&\cs{newjfontfamily}&\cs{newjfontface} +&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ 欧文 -&\cs{addfontfeatures}\\ +&\cs{newfontfamily}&\cs{newfontface} +&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ \bottomrule \end{tabular} \end{center} @@ -1535,2228 +1531,1773 @@ JIS~X~0208:1990→辻 %\subsection{Presets of Japanese fonts} %\subsection{和文フォントのプリセット設定} -\label{ssec-preset} +\label{ssec:preset-abst} %<*en> -One can load the \Pkg{luatexja-preset} -package to use several ``presets'' of Japanese fonts. -This package provides functions in a part of -\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato. - -One can specified other options other than listed in this subsection. -These are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is -\emph{not} specified; in this case these options are simply ignored.}. -For example, the line~5 in below example is eqivalent to lines 1--3. +With \Pkg{luatexja-preset} package, +one use one of ``preset'' to simplify Japanese font setting. +For details of package options, and those of each presets, please see Subsecion~\ref{ssec:preset}. +The following presets are defined: % %<*ja> よく使われている和文フォント設定を一行で指定できるようにしたのが -\Pkg{luatexja-preset}パッケージである.このパッケージは, -\Pkg{otf}パッケージの一部機能と八登崇之氏による\Pkg{PXchfon}パッケージの一部機能とを -合わせたような格好をしている. - -オプションとして,本節にないものも指定することができるが,それらは -\Pkg{luatexja-fontspec}パッケージに渡される\footnote{\texttt{nfssonly} オプションが -指定されていた場合は,\Pkg{luatexja-fontspec}パッケージは読み込まれないので単純に無視され -る.}.例えば,下の1--3行目は5行目のように一行にまとめることができる. +\Pkg{luatexja-preset}パッケージである.オプションや各プリセットの詳細については +\ref{ssec:preset}節を参照して欲しい. +現時点では以下のプリセットが定義されている: % +\begin{quote} + \ttfamily + \hyphenchar\font=-1 \exhyphenchar=-1 + hiragino-pro, hiragino-pron, ipa, ipa-hg, ipaex, ipaex-hg, + kozuka-pr6, kozuka-pr6n, kozuka-pro, moga-mobo, moga-mobo-ex, + morisawa-pr6n, morisawa-pro, ms, ms-hg, noembed, noto-otc, noto-otf, + sourcehan, sourcehan-jp, ume, yu-osx, yu-win, yu-win10 +\end{quote} + +% 例えば,本ドキュメントでは\Pkg{luatexja-preset}パッケージを +% For example, this document loads \Pkg{luatexja-preset} package by \begin{lstlisting} -\usepackage[no-math]{fontspec} -\usepackage[match]{luatexja-fontspec} \usepackage[kozuka-pr6n]{luatexja-preset} -%%-------- -\usepackage[no-math,match,kozuka-pr6n]{luatexja-preset} \end{lstlisting} +%として読み込み,小塚書体(Pr6N)を使うことを指定している. +% which means that Kozuka~Pr6N fonts will be used in this document. -%\paragraph{General options} -%\paragraph{一般的なオプション} -\begin{cslist}[before*=] -\item[fontspec% -%\textrm{~(enabled by default)} -%\emph{\gtfamily (既定)} -] +%<*ja> +上記のプリセット以外の和文フォント設定を使いたい場合,本来は +\Pkg{luatexja-fontspec}パッケージの提供する +\cs{setmainjfont}, \cs{setsansjfont}を使って自分で指定するべきである. +\texttt{custom}オプションを使うことで,\Pkg{luatexja-preset}パッケージの内部に直接アクセスして +\begin{lstlisting} +\usepackage[kozuka-pr6n, % kozuka-pr6n プリセットを基礎にして, + custom={ + mc=SourceHanSerif-Regular, % 明朝体(全ウェイト) + mc-l=SourceHanSerif-Bold, % 明朝体細字 + mc-m=KozMinPr6N-Regular, % 明朝体中字 + % mc-bx=KozMinPr6N-Bold, % 明朝体太字 + % gt=HirakakuProN-W3, % ゴシック体(全ウェイト) + % gt-m=SourceHanSans-Regular, % ゴシック体中字(deluxe オプション指定時) + % gt-bx=HiraKakuProN-W6,ular, % ゴシック体太字 + % gt-eb=HiraKakuProN-W6,ular, % ゴシック体極太 + mg-m=HG Maru Gothic PRO, % 丸ゴシック体 + }, + deluxe,expert,jis2004,match,nfssonly +]{luatexja-preset} +\end{lstlisting} +のようにすることもできるが,\texttt{custom}オプションの書式は予告なく変更されることがある +上,\texttt{90jis}や\texttt{JIS2004}オプションとの相性があまり良くないので推奨はしない. +% %<*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. +To use a Japanese font setting which does not match with any presets, +the legitimate method is to use \cs{setmainjfont}~and~\cs{setsansjfont} +which are provided by the \Pkg{luatexja-fontspec} package. -If you need to pass some options to \Pkg{fontspec}, you can load \Pkg{fontspec} manually -before \Pkg{luatexja-preset}: +One can use the \texttt{custom} option, such as +\begin{lstlisting} +\usepackage[kozuka-pr6n, % based on the kozuka-pr6n preset (Kozuka Pr6N), + custom={ + mc=SourceHanSerif-Regular, % mincho family (all weights) + mc-l=SourceHanSerif-Bold, % mincho light + mc-m=KozMinPr6N-Regular, % mincho medium + % mc-bx=KozMinPr6N-Bold, % mincho bold + % gt=HirakakuProN-W3, % gothic family (all weights) + % gt-m=SourceHanSans-Regular, % gothic medium (with deluxe option) + % gt-bx=HiraKakuProN-W6,ular, % gothic bold + % gt-eb=HiraKakuProN-W6,ular, % gothic extra bold + mg-m=HGMaruGothicMPRO, % rounded gothic + }, + deluxe,expert,jis2004,match,nfssonly +]{luatexja-preset} +\end{lstlisting} +However, we do not recommend this \cs{custom} option; +the format might change, and this \cs{custom} option is not well-compatible with +\texttt{90jis}~nor~\cs{jis2004} options. +% + +%<*en> +\subsection{\cs{CID}, \cs{UTF}, and macros in \Pkg{japanese-otf} package} +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 the \Pkg{japanese-otf} package, +as an external package \Pkg{luatexja-otf}. % %<*ja> -\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する. -これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する. +\subsection{\cs{CID}, \cs{UTF}と\Pkg{otf}パッケージのマクロ} +\pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために, +齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは +広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の +一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した. +% -もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある -\footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の -斜体大文字が出なくなる,など.}場合は, -次のように\Pkg{luatexja-preset}の前に\Pkg{fontspec}を手動で読みこめば良い: +\begin{LTXexample} +\jfontspec{KozMinPr6N-Regular.otf} +森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。 + +\CID{7652}飾区の\CID{13706}野家, +\CID{1481}城市,葛西駅, +高崎と\CID{8705}\UTF{FA11} + +\aj半角{はんかくカタカナ} +\end{LTXexample} + +%<*ja> +\Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した: +\begin{cslist} +\item[deluxe] 明朝体・ゴシック体各3ウェイトと,丸ゴシック体を扱えるようになる. +\item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も +\ \cs{rubyfamily}\ によって扱えるようになる. +\item[bold] ゴシック体を標準で太いウェイトのものに設定する. +\end{cslist} +しかしこれらのオプションは\Pkg{luatexja-otf}パッケージには存在しない. +\Pkg{otf}パッケージが文書中で使用する和文用TFMを自前の物に置き換えていたのに対し, +\Pkg{luatexja-otf}パッケージでは,そのようなことは行わないからである. + +これら3オプションについては, +\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか, +あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や +\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある. % -\begin{lstlisting} -\usepackage[no-math]{fontspec} -\usepackage[...]{luatexja-preset} -\end{lstlisting} -\item[nfssonly] +%\subsection{Changing default Japanese fonts} +%\subsection{標準和文フォントの変更} +\label{ssec-cfg} %<*en> -With this option, selecting Japanese fonts won't be performed using the functionality of - the \Pkg{fontspec} package, but only standard NFSS2 (hence without - \cs{addjfontfeatures} etc.). -This option is ignored when \Pkg{luatexja-fontspec} package is loaded. +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. -When this option is specified, \Pkg{fontspec}~and~\Pkg{luatexja-fontspec} are -\emph{not} loaded by default. Nevertheless, -the package\Pkg{fontspec} can coexist with the option, as the following: +For example, \begin{lstlisting} -\usepackage{fontspec} -\usepackage[hiragino-pron,nfssonly]{luatexja-preset} +\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} -In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fonts. % %<*ja> -\LaTeX 標準のフォント選択機構(NFSS2)を用いて -\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ - ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という -3つの和文フォントファミリを定義し,これらを用いる. +\LuaTeX から見える位置に \texttt{luatexja.cfg} があれば,\LuaTeX-jaはそれを読み込む. +このファイルを用いるとplain~\TeX, \LaTeXe における標準和文フォントを +IPAex明朝・IPAexゴシックから変更することができる. +しかし,基本的には\emph{文章中で用いるフォントは(例えば \Pkg{luatexja-preset} などで) +文書ソース内で指定するべき}であり,この \texttt{luatexja.cfg} は, +「IPAexフォントがインストールできない」など,IPAexフォントが使用できない場合にのみ +応急処置的に用いるべきである. -本オプション指定時には\Pkg{fontspec}・\Pkg{luatexja-fontspec}パッケージは -自動では読み込まれない,しかし, +例えば \begin{lstlisting} -\usepackage{fontspec} -\usepackage[hiragino-pron,nfssonly]{luatexja-preset} +\def\ltj@stdmcfont{IPAMincho} +\def\ltj@stdgtfont{IPAGothic} \end{lstlisting} -のようにすれば,このオプションを指定すれば -欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる. -一方, -パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて - いる場合は \texttt{nfssonly} オプションは無視される. -% +と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変 +更される. -\item[match] -%<*en> -If this option is specified, usual family-changing commands such as -\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family. -This option is passed to \Pkg{luatexja-fontspec}, if \texttt{fontspec} -option is specifed. -% -%<*ja> -このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\ -\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が -欧文フォントだけでなく和文フォントも変更するようになる. -\ \texttt{fontspec}\ -オプションが有効になっている場合は,このオプションは \Pkg{luatexja-fontspec} パッケージへと渡される. +なお,20140906.0以前のバージョンのように, +Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用いる場合は +\begin{lstlisting} +\def\ltj@stdmcfont{psft:Ryumin-Light} +\def\ltj@stdgtfont{psft:GothicBBB-Medium} +\end{lstlisting} +と記述すればよい. % -\item[nodeluxe% -%\textrm{~(enabled by default)} -%\emph{\gtfamily (既定)} -] +%\section{Changing Internal Parameters} +%\section{パラメータの変更} + %<*en> -The nagation of \texttt{deluxe} option. -Use one-weighted \textit{mincho} and \textit{gothic} font families. -This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and -\verb+\gtfamily\mdseries+ use the same font. +There are many internal parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX, +most of them are not stored as internal register of \TeX, but as an +original storage system in \LuaTeX-ja. Hence, to assign or acquire those +parameters, you have to use commands \cs{ltjsetparameter} and +\cs{ltjgetparameter}. % %<*ja> -\texttt{deluxe}オプションの否定. -\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する. -より具体的に言うと,この設定の下では -\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+, -\verb+\gtfamily\mdseries+はみな同じフォントとなる. +\LuaTeX-jaには多くのパラメータが存在する.そして\LuaTeX の仕様のために, +その多くは\TeX のレジスタにではなく,\LuaTeX-ja独自の方法で保持されている. +これらのパラメータを設定・取得するためには \cs{ltjsetparameter} と \cs{ltjgetparameter} を +用いる. % -\item[deluxe] + +%\subsection{Range of \textbf{JAchar}s} +%\subsection{\textbf{JAchar}の範囲} +\label{ssec-setrange} + %<*en> -Use \textit{mincho} with two weights (medium~and~bold), -\textit{gothic} with three weights (medium, bold~and~heavy), and \textit{rounded gothic}% -\footnote{Provided by \cs{mgfamily} and \cs{textmg}, -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 the \Pkg{fontspec} package can handle only medium (\cs{mdseries}) and -bold (\cs{bfseries}). +\LuaTeX-ja divides the Unicode codespace \texttt{U+0080}--\texttt{U+10FFFF} +into \emph{character ranges}, +numbered 1 to 217. The grouping can be (globally) customized by \cs{ltjdefcharrange}. +The next line adds whole characters in Supplementary Ideographic Plane +and the character ``漢'' to the character range~100. % %<*ja> -明朝体2ウェイト・ゴシック体3ウェイトと, -丸ゴシック体 (\cs{mgfamily}, \verb+\textmg{...}+) を使用可能とする. -ゴシック体は中字・太字・極太の3ウェイトがあるが, -極太ゴシック体を使う場合, -\begin{itemize} - \item \cs{gtebfamily}, \verb+\textgteb{...}+ - \item \cs{ebseries} (周囲がゴシック体のとき,\texttt{nfssonly} オプション指定時のみ) -\end{itemize} -のいずれかを用いる.標準で \cs{ebseries} が準備されていないのは,バージョンが古い -\Pkg{fontspec}では中字(\cs{mdseries})と太字(\cs{bfseries})しか扱えなかった名残である. +\LuaTeX-jaは,Unicodeの \texttt{U+0080}--\texttt{U+10FFFF} の空間を +1番から217番までの\emph{文字範囲}に分割している. +区分けは \cs{ltjdefcharrange} を用いることで(グローバルに)変更することができ, +例えば,次は追加漢字面(SIP)にある全ての文字と「漢」を「100番の文字範囲」に追加する. % -\item[expert] +\begin{lstlisting} +\ltjdefcharrange{100}{"20000-"2FFFF,`漢} +\end{lstlisting} + %<*en> -Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana -characters designed for ruby. +A character can belong to only one character range. +For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja, +and if one executes the above line, then SIP will belong to the range~100 and be +removed from the range~4. % %<*ja> -横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{% - \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では - font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え). -}. +各文字はただ一つの文字範囲に所属することができる. +例えば,SIP内の文字は全て\LuaTeX-jaのデフォルトでは4番の文字範囲に +属しているが,上記の指定を行えばSIP内の文字は100番に属すようになり,4番からは除かれる. % -\item[bold] + %<*en> -Substitute bold series of \textit{gothic} for bold series of \textit{mincho}. -If \texttt{nodeluxe} option is enabled, medium series of \textit{gothic} is also changed, -since we use same font for both series of \textit{gothic}. +The distinction between \textbf{ALchar} and \textbf{JAchar} is performed by character ranges. +This can be edited by setting the \textsf{jacharrange} parameter. +For example, the code below is just the default setting of \LuaTeX-ja, and +it sets +\begin{itemize} + \item a character which belongs character ranges 1,~4, 5, and~8 is \textbf{ALchar}, + \item a character which belongs character ranges 2,~3, 6, and~7 is \textbf{JAchar}. +\end{itemize} % %<*ja> -「明朝の太字」をゴシック体の太字によって代替する. -もし\texttt{nodeluxe}オプションが指定されている場合は,ゴシック体は1ウェイトしか使用されな - いため, -「ゴシック体の中字」も同時に変更されることになる. +\textbf{ALchar}と\textbf{JAchar}の区別は文字範囲ごとに行われる. +これは\textsf{jacharrange}パラメータによって編集できる. +例えば,以下は\LuaTeX-jaの初期設定であり,次の内容を設定している: +\begin{itemize} + \item 1番,4番,5番,8番の文字範囲に属する文字は\textbf{ALchar}. + \item 2番,3番,6番,7番の文字範囲に属する文字は\textbf{JAchar}. +\end{itemize} % -\item[90jis] -%Use 90JIS glyph variants if possible. -%出来る限り90JISの字形を使う. -\item[jis2004] -%Use JIS2004 glyph variants if possible. -%出来る限りJIS2004の字形を使う. -\item[jfm\_yoko=] +\begin{lstlisting} +\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}} +\end{lstlisting} %<*en> -Use the JFM \texttt{jfm-.lua} for horizontal direction, instead of \texttt{jfm-ujis.lua}~(default JFM). +The argument to \textsf{jacharrange} parameter is a list of non-zero integer. +Negative integer $-n$ in the list means that ``each character in the range~$n$ is an +\textbf{ALchar}'', +and positive integer $+n$ means that ``\dots\ is a \textbf{JAchar}''. % %<*ja> -横組用和文フォントで用いるJFMを\texttt{jfm-.lua}にする.このオプションがない時は -\LuaTeX\nobreakdash -ja標準の\texttt{jfm-ujis.lua}が用いられる. +\textsf{jacharrange}パラメータの引数は非零の整数のリストである. +リスト中の負の整数$-n$は「文字範囲$n$に属する文字は\textbf{ALchar}として +扱う」ことを意味し,正の整数$+n$は「\textbf{JAchar}として扱う」ことを意味する. % -\item[jfm\_tate=] + %<*en> -Use the JFM \texttt{jfm-.lua} for vertical direction, instead of \texttt{jfm-ujisv.lua}~(default JFM). +Note that characters \texttt{U+0000}--\texttt{U+007F} are always treated as an +\textbf{ALchar} (this cannot be customized). % %<*ja> -縦用和文フォントで用いるJFMを\texttt{jfm-.lua}にする.このオプションがない時は -\LuaTeX-ja標準の\texttt{jfm-ujisv.lua}が用いられる. +なお,\texttt{U+0000}--\texttt{U+007F} は常に\textbf{ALchar}として扱われる(利用者が変更す +ることは出来ない). % -\item[jis] -%Same as \texttt{jfm\_yoko=jis}. -%\texttt{jfm\_yoko=jis}と同じ.ここで用いるJFM\texttt{jfm-jis.lua}はJISフォントメトリックを元にしたものである. - -\end{cslist} %<*en> -Note that \texttt{90jis} and \texttt{jis2004} only affect with \textit{mincho}, -\textit{gothic} (and possibly \textit{rounded gothic}) defined by this package. -We didn't taken account of when both \texttt{90jis} and \texttt{jis2004} are specified. +\paragraph{Default character ranges} +\LuaTeX-ja predefines eight character ranges for convenience. They are +determined from the following data: % %<*ja> -\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された -明朝体・ゴシック体(・丸ゴシック体)にのみ有効である. -両オプションが同時に指定された場合の動作については全く考慮していない. +\paragraph{文字範囲の初期値} +\LuaTeX-jaでは8つの文字範囲を予め定義しており, +これらは以下のデータに基づいて決定している. % +\begin{itemize} +%\item Blocks in Unicode~6.0. +%\item Unicode~6.0のブロック. +%\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode. +%\item Adobe-Japan1-6のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}. +%\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato. +%\item 八登崇之氏による\upTeX 用の\Pkg{PXbase}バンドル. +\end{itemize} -%\paragraph{Presets for multi weight} -%\paragraph{多ウェイト用プリセットの一覧} %<*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}. +Now we describe these eight ranges. The superscript ``J'' or ``A'' after the +number shows whether each character in the range is treated as +\textbf{JAchar}s or not by default. These settings are similar to the +\texttt{prefercjk} settings defined in \texttt{PXbase} bundle. +Any characters equal to or above \texttt{U+0080} which does not belong to +these eight ranges belongs to the character range~217. % %<*ja> -\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は -(ファイル名でなく)フォント名で行われる. -以下の表において,*\,つきのフォント(e,g,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に} -ゴシック体中字として用いられるものを示している. +以下ではこれら8つの文字範囲について記述する.添字のアルファベット「J」「A」 +は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの初期設定は +\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものであるが, +8ビットフォント使用時のトラブルを防ぐために \texttt{U+0080}--\texttt{U+00FF} の文字は全部 +\textbf{ALchar}としている. +なお,\texttt{U+0080} 以降でこれら8つの文字範囲に属さない文字は,217番の文字範囲に属することになっている. % -\begin{cslist}[style=standard] - \item[kozuka-pro] Kozuka Pro (Adobe-Japan1-4) fonts. -% \\*[-\dimexpr\medskipamount+\baselineskip\relax] - \item[kozuka-pr6] Kozuka Pr6 (Adobe-Japan1-6) fonts. -% \\*[-\dimexpr\medskipamount+\baselineskip\relax] - \item[kozuka-pr6n] Kozuka Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts. - +\begin{description} %<*en> -Kozuka Pro/Pr6N fonts are bundled with Adobe's software, such as Adobe~InDesign. -There is not rounded gothic family in Kozuka fonts. + +\item[Range~8${}^{\text{A}}$] The intersection of the upper half of ISO~8859-1 + (Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range + consists of the following characters: % %<*ja> -小塚Pro書体・Pr6N書体はAdobe InDesign等のAdobe製品にバンドルされている. -「小塚丸ゴシック」は存在しないので,便宜的に小塚ゴシックHによって代用している. +\item[範囲8${}^{\text{A}}$] ISO~8859-1の上位領域(ラテン1補助)と + JIS~X~0208の共通部分.この文字範囲は + 以下の文字で構成される: % -\begin{center}\small -\begin{tabular}{cllll} -\toprule -\bfseries family&\bfseries series&\ttfamily kozuka-pro&\ttfamily kozuka-pr6&\ttfamily kozuka-pr6n\\ -\midrule - &medium&KozMinPro-Regular&KozMinProVI-Regular&KozMinPr6N-Regular\\ -%\smash{\raisebox{1.5ex}{\textit{mincho}}}% -%\smash{\raisebox{1.5ex}{\gt 明朝}}% - &bold&KozMinPro-Bold&KozMinProVI-Bold&KozMinPr6N-Bold\\ -\midrule - &&KozGoPro-Regular*&KozGoProVI-Regular*&KozGoPr6N-Regular*\\ - &\smash{\raisebox{1.5ex}{medium}} - &KozGoPro-Medium&KozGoProVI-Medium&KozGoPr6N-Medium\\ -\cmidrule(l){2-5} -%\smash{\raisebox{2ex}{\textit{gothic}}}% -%\smash{\raisebox{2ex}{\gt ゴシック}}% - &bold&KozGoPro-Bold&KozGoProVI-Bold&KozGoPr6N-Bold\\ - &heavy&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\ -\midrule -%\textit{rounded gothic} -%\gt 丸ゴシック -&&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\ -\bottomrule -\end{tabular} -\end{center} - - \item[hiragino-pro] Hiragino Pro (Adobe-Japan1-5) fonts. -% \\*[-\dimexpr\medskipamount+\baselineskip\relax] - \item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts. +\begin{multicols}{2} +\begin{itemize} +\def\ch#1#2{\item \char"#1\ (\texttt{U+00#1}, #2)}%" +\ch{A7}{Section Sign} +\ch{A8}{Diaeresis} +\ch{B0}{Degree sign} +\ch{B1}{Plus-minus sign} +\ch{B4}{Spacing acute} +\ch{B6}{Paragraph sign} +\ch{D7}{Multiplication sign} +\ch{F7}{Division Sign} +\end{itemize} +\end{multicols} %<*en> -Hiragino fonts are bundled with Mac OS~X 10.5 or later. -Some editions of a Japanese word-processor ``一太郎2012'' includes Hiragino ProN fonts. -Note that the heavy weight of \textit{gothic} family only supports -Adobe-Japan1-3 character collection (Std/StdN). +\item[Range~1${}^{\text{A}}$] Latin characters that some of them are included in Adobe-Japan1-6. +This range consists of the following Unicode ranges, \emph{except characters in the range~8 above}: % %<*ja> -ヒラギノフォントは,Mac OS~X以外にも,一太郎2012の上位エディションにもバンドルされている. -極太ゴシックとして用いるヒラギノ角ゴW8は,Adobe-Japan1-3の範囲しかカバーしていない -Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. +\item[範囲1${}^{\text{A}}$] ラテン文字のうち,Adobe-Japan1-6との共通部分があるもの. + この範囲は以下のUnicodeのブロックのうち + \emph{範囲8を除いた}部分で構成されている: % -\begin{center}\small -\begin{tabular}{clll} -\toprule -\bf family&\bf series&\tt hiragino-pro&\tt hiragino-pron\\ -\midrule - &medium&Hiragino~Mincho~Pro~W3&Hiragino~Mincho~ProN~W3\\ -%\smash{\raisebox{1.5ex}{\textit{mincho}}}% -%\smash{\raisebox{1.5ex}{\gt 明朝}}% - &bold&Hiragino~Mincho~Pro~W6&Hiragino~Mincho~ProN~W6\\ -\midrule - &&Hiragino~Kaku~Gothic~Pro~W3*&Hiragino~Kaku~Gothic~ProN~W3*\\ - &\smash{\raisebox{1.5ex}{medium}} - &Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\ -\cmidrule(l){2-4} -%\smash{\raisebox{2ex}{\textit{gothic}}}% -%\smash{\raisebox{2ex}{\gt ゴシック}}% - &bold&Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\ - &heavy&Hiragino~Kaku~Gothic~Std~W8&Hiragino~Kaku~Gothic~StdN~W8\\ -\midrule -%\textit{rounded gothic} -%\gt 丸ゴシック -&&Hiragino~Maru~Gothic~Pro~W4&Hiragino~Maru~Gothic~ProN~W4\\ -\bottomrule -\end{tabular} -\end{center} - - \item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts. -% \\*[-\dimexpr\medskipamount+\baselineskip\relax] - \item[morisawa-pr6n] Morisawa Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts. -\begin{center}\small -\begin{tabular}{cl>{\tt}l>{\tt}l} -\toprule -\bf family&\bf series&morisawa-pro&morisawa-pr6n\\ -\midrule - &medium&A-OTF-RyuminPro-Light.otf&A-OTF-RyuminPr6N-Light.otf\\ -%\smash{\raisebox{1.5ex}{\textit{mincho}}}% -%\smash{\raisebox{1.5ex}{\gt 明朝}}% - &bold&A-OTF-FutoMinA101Pro-Bold.otf&A-OTF-FutoMinA101Pr6N-Bold.otf\\ -\midrule - &medium - &A-OTF-GothicBBBPro-Medium.otf&A-OTF-GothicBBBPr6N-Medium.otf\\ -%\textit{gothic}% -%\gt ゴシック - &bold&A-OTF-FutoGoB101Pro-Bold.otf&A-OTF-FutoGoB101Pr6N-Bold.otf\\ - &heavy&A-OTF-MidashiGoPro-MB31.otf&A-OTF-MidashiGoPr6N-MB31.otf\\ -\midrule -%\textit{rounded gothic} -%\gt 丸ゴシック -&&A-OTF-Jun101Pro-Light.otf&A-OTF-ShinMGoPr6N-Light.otf\\ -\bottomrule +\begin{multicols}{2} +\begin{itemize} +\item \texttt{U+0080}--\texttt{U+00FF}: Latin-1 Supplement +\item \texttt{U+0100}--\texttt{U+017F}: Latin Extended-A +\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B +\item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions +\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters +%\par\ +\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks +\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional +%\par\ +\end{itemize} +\end{multicols} +%<*en> +\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{\kern.1emJ}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの + 和文フォント)には,これらの文字の一部が含まれている. +% +\begin{multicols}{2} +\begin{itemize} +\item \texttt{U+0370}--\texttt{U+03FF}: Greek and Coptic +\item \texttt{U+0400}--\texttt{U+04FF}: Cyrillic +\item \texttt{U+1F00}--\texttt{U+1FFF}: Greek Extended +\\\ +\end{itemize} +\end{multicols} +%<*en> +\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is + indicated in \autoref{tab:rng3}. +% +%<*ja> +\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは\autoref{tab:rng3}% + に示してある. +% +\begin{table}[!tb] +%\caption{Unicode blocks in predefined character range~3.}\medskip +%\caption{文字範囲3に指定されているUnicodeブロック.} +\label{tab:rng3} +\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%" +\centering\small +\begin{tabular}{llll} +"2000--"206F&General Punctuation& +"2070--"209F&Superscripts and Subscripts\\ +"20A0--"20CF&Currency Symbols& +"20D0--"20FF&Comb.\ Diacritical Marks for Symbols\\ +"2100--"214F&Letterlike Symbols& +"2150--"218F&Number Forms\\ +"2190--"21FF&Arrows& +"2200--"22FF&Mathematical Operators\\ +"2300--"23FF&Miscellaneous Technical& +"2400--"243F&Control Pictures\\ +"2500--"257F&Box Drawing& +"2580--"259F&Block Elements\\ +"25A0--"25FF&Geometric Shapes& +"2600--"26FF&Miscellaneous Symbols\\ +"2700--"27BF&Dingbats& +"2900--"297F&Supplemental Arrows-B\\ +"2980--"29FF&Misc.\ Mathematical Symbols-B& +"2B00--"2BFF&Miscellaneous Symbols and Arrows \end{tabular} -\end{center} - -\newpage - \item[yu-win] Yu fonts bundled with Windows~8.1. -% \\*[-\dimexpr\medskipamount+\baselineskip\relax] - \item[yu-win10] Yu fonts bundled with Windows~10. -% \\*[-\dimexpr\medskipamount+\baselineskip\relax] - \item[yu-osx] Yu fonts bundled with OSX~Mavericks. -\begin{center}\small -\begin{tabular}{cllll} -\toprule -\bf family&\bf series&\texttt{yu-win}&\texttt{yu-win10}&\texttt{yu-osx}\\ -\midrule - &medium&YuMincho-Regular&YuMincho-Regular&YuMincho~Medium\\ -%\smash{\raisebox{1.5ex}{\textit{mincho}}}% -%\smash{\raisebox{1.5ex}{\gt 明朝}}% - &bold&YuMincho-Demibold&YuMincho-Demibold&YuMincho~Demibold\\ -\midrule - &&YuGothic-Regular*&YuGothic-Regular*&YuGothic~Medium*\\ - &\smash{\raisebox{1.5ex}{medium}}% - &YuGothic-Regular&YuGothic-Medium&YuGothic~Medium\\ -\cmidrule(l){2-5} -%\textit{gothic}% -%\gt ゴシック - &bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\ - &heavy&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\ -\midrule -%\textit{rounded gothic} -%\gt 丸ゴシック -&&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\ -\bottomrule -\end{tabular} -\end{center} - -\item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic. -\item[moga-mobo-ex] MogaExMincho, MogaExGothic, and MoboExGothic. -%These fonts can be downloaded from\\\hfill \url{http://yozvox.web.fc2.com/}. -%これらのフォントは \url{http://yozvox.web.fc2.com/} からダウンロードできる. -\begin{center}\small -\begin{tabular}{clll} -\toprule -\bf family&\bf series&\bf default, \texttt{90jis}~option&\bf \texttt{jis2004} option\\ -\midrule - &medium&Moga90Mincho&MogaMincho\\ -%\smash{\raisebox{1.5ex}{\textit{mincho}}}% -%\smash{\raisebox{1.5ex}{\gt 明朝}}% - &bold&Moga90Mincho Bold&MogaMincho Bold\\ -\midrule - &medium&Moga90Gothic&MogaGothic\\ -%\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} -%When \texttt{moga-mobo-ex} is specified, the font ``MogaEx90Mincho'' etc.\ are used. -%\texttt{moga-mobo-ex}オプション指定時にはMogaEx90MinchoなどのExが名前についたフォントが使われる. - -\item[ume] Ume Mincho and Ume Gothic. -%These fonts can be downloaded from\\\hfill \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage}. -%これらのフォントは \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage} からダウンロードできる. -\begin{center}\small -\begin{tabular}{cll} -\toprule -\bf family&\bf series&\bf default\\ -\midrule - &medium&Ume Mincho\\ -%\smash{\raisebox{1.5ex}{\textit{mincho}}}% -%\smash{\raisebox{1.5ex}{\gt 明朝}}% - &bold&Ume Mincho\\ -\midrule - &&Ume Gothic*\\ - &\smash{\raisebox{1.5ex}{medium}}&Ume Gothic O5\\ -\cmidrule(l){2-3} -%\textit{gothic}% -%\gt ゴシック - &bold&Ume Gothic O5\\ - &heavy&Ume Gothic O5\\ -\midrule -%\textit{rounded gothic} -%\gt 丸ゴシック -&&Ume Gothic O5\\ -\bottomrule -\end{tabular} -\end{center} - -\end{cslist} -%\paragraph{Presets for single weight} -%\paragraph{単ウェイト用プリセット一覧} +\end{table} %<*en> -Next, we describe settings for using only single weight. +\item[Range~4${}^{\text{A}}$] Characters usually not in Japanese fonts. This range consists + of almost all Unicode blocks which are not in other + predefined ranges. Hence, instead of showing the block list, + we put the definition of this range itself: % %<*ja> -次に,単ウェイト用の設定を述べる.この4設定では -明朝体太字・丸ゴシック体はゴシック体と同じフォントが用いられる. +\item[範囲4${}^{\text{A}}$] 通常和文フォントには含まれていない文字. + この範囲は他の範囲にないほとんど全てのUnicodeブロック + で構成されている.したがって,ブロックのリストを示す + 代わりに,範囲の定義そのものを示す: % -\par\nobreak\medskip -{\centering\small -\begin{tabular}{lllll} -\toprule -&\tt noembed&\tt ipa&\tt ipaex&\tt ms\\ -\midrule +\begin{lstlisting} +\ltjdefcharrange{4}{% + "500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF, + "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A82F, "A840-"ABFF, "FB00-"FE0F, + "FE20-"FE2F, "FE70-"FEFF, "10000-"1FFFF, "E000-"F8FF} % non-Japanese +\end{lstlisting} +%\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas. +%\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域. +%\item[Range~6${}^{\text{\kern.1emJ}}$] Characters used in Japanese. The block list is indicated in \autoref{tab:rng6}. +%\item[範囲6${}^{\text{\kern.1emJ}}$] 日本語で用いられる文字.ブロックのリストは\autoref{tab:rng6}に示す. +\begin{table}[!tb] +%\caption{Unicode blocks in predefined character range~6.}\medskip +%\caption{文字範囲6に指定されているUnicodeブロック.} +\label{tab:rng6} +\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%" +\centering\small +\begin{tabular}{llll} +"2460--"24FF&Enclosed Alphanumerics& +"2E80--"2EFF&CJK Radicals Supplement\\ +"3000--"303F&CJK Symbols and Punctuation& +"3040--"309F&Hiragana\\ +"30A0--"30FF&Katakana& +"3190--"319F&Kanbun\\ +"31F0--"31FF&Katakana Phonetic Extensions& +"3200--"32FF&Enclosed CJK Letters and Months\\ +"3300--"33FF&CJK Compatibility& +"3400--"4DBF&CJK Unified Ideographs Extension A\\ +"4E00--"9FFF&CJK Unified Ideographs& +"F900--"FAFF&CJK Compatibility Ideographs\\ +"FE10--"FE1F&Vertical Forms& +"FE30--"FE4F&CJK Compatibility Forms\\ +"FE50--"FE6F&Small Form Variants& +"{20}000--"{2F}FFF&(Supplementary Ideographic Plane)\\ +"{E0}100--"{E0}1EF&Variation Selectors Supplement +\end{tabular} +\end{table} %<*en> -\it mincho&Ryumin-Light (non-embedded) -&IPA Mincho&IPAex Mincho&MS Mincho\\ -\it gothic&GothicBBB-Medium (non-embedded) -&IPA Gothic&IPAex Gothic&MS Gothic\\ +\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in Adobe-Japan1-6. +The block list is indicated in \autoref{tab:rng7}. % %<*ja> -\gtfamily 明朝体&Ryumin-Light(非埋込) -&IPA明朝&IPAex明朝&MS明朝\\ -\gtfamily ゴシック体&GothicBBB-Medium(非埋込) -&IPAゴシック&IPAexゴシック&MSゴシック\\ +\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に + 含まれていないもの. + ブロックのリストは\autoref{tab:rng7}に示す. % -\bottomrule -\end{tabular}\par\medskip} +\begin{table}[!tb] +%\caption{Unicode blocks in predefined character range~7.}\medskip +%\caption{文字範囲7に指定されているUnicodeブロック.} +\label{tab:rng7} +\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%" +\centering\small +\begin{tabular}{llll} +"1100--"11FF&Hangul Jamo& +"2F00--"2FDF&Kangxi Radicals\\ +"2FF0--"2FFF&Ideographic Description Characters& +"3100--"312F&Bopomofo\\ +"3130--"318F&Hangul Compatibility Jamo& +"31A0--"31BF&Bopomofo Extended\\ +"31C0--"31EF&CJK Strokes& +"A000--"A48F&Yi Syllables\\ +"A490--"A4CF&Yi Radicals& +"A830--"A83F&Common Indic Number Forms\\ +"AC00--"D7AF&Hangul Syllables& +"D7B0--"D7FF&Hangul Jamo Extended-B +\end{tabular} +\end{table} +\end{description} -%\paragraph{Using HG fonts} -%\paragraph{HGフォントの利用} %<*en> -We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights. +\paragraph{Notes on \texttt{U+0080}--\texttt{U+00FF}} +You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar}, +when you use traditional 8-bit fonts, such as the \Pkg{marvosym} package. + +For example, \cs{Frowny} which is provided by the \Pkg{marvosym} package has +the same codepoint as \S\ (\text{U+00A7}). +Hence, as previous versions of \LuaTeX-ja, if these characters are treated as +\text{JAchar}s, then \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font). + +To avoid such situations, the default setting of \LuaTeX-ja is changed in version~20150906.0 +so that all characters \texttt{U+0080}--\texttt{U+00FF} are treated as \textbf{ALchar}. + +If you want to output a character as \textbf{ALchar} and \textbf{JAchar} regardless the range +setting, you can use \cs{ltjalchar} and \cs{ltjjachar} respectively, as the following example. +\begin{LTXexample}[width=0.3\textwidth] +\gtfamily\large % default, ALchar, JAchar +¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar +α, \ltjalchar`α, \ltjjachar`α % default: JAchar +\end{LTXexample} % %<*ja> -すぐ前に書いた単ウェイト用設定を,Microsoft Office等に付属するHGフォントを使って -多ウェイト化した設定もある. -% -\par\nobreak\medskip -{\centering\small -\begin{tabular}{llll} -\toprule -&\tt ipa-hg&\tt ipaex-hg&\tt ms-hg\\ -\midrule -%<*en> -\bf mincho medium -&IPA Mincho&IPAex Mincho&MS Mincho\\\midrule -\bf mincho bold& -\multicolumn{3}{c}{HG Mincho E}\\\midrule -\bf Gothic medium\\ -~~without \texttt{deluxe} -&IPA Gothic&IPAex Gothic&MS Gothic\\ -~~with {\tt jis2004} -&IPA Gothic&IPAex Gothic&MS Gothic\\ -\cmidrule(lr){1-4} -~~otherwise& -\multicolumn{3}{c}{HG Gothic M}\\\midrule -\bf gothic bold& -\multicolumn{3}{c}{HG Gothic E}\\\midrule -\bf gothic heavy& -\multicolumn{3}{c}{HG Soei Kaku Gothic UB}\\\midrule -\bf rounded gothic& -\multicolumn{3}{c}{HG Maru Gothic PRO}\\ -% -%<*ja> -\gtfamily 明朝体中字 -&IPA明朝&IPAex明朝&MS明朝\\\midrule -\gtfamily 明朝体太字& -\multicolumn{3}{c}{HG明朝E}\\\midrule -\gtfamily ゴシック体中字\\ - 単ウェイト時 -&IPAゴシック&IPAexゴシック&MSゴシック\\ - {\tt jis2004}指定時 -&IPAゴシック&IPAexゴシック&MSゴシック\\ -\cmidrule(lr){1-4} - それ以外の時& -\multicolumn{3}{c}{HGゴシックM}\\\midrule -\gtfamily ゴシック体太字& -\multicolumn{3}{c}{HGゴシックE}\\\midrule -\gtfamily ゴシック体極太& -\multicolumn{3}{c}{HG創英角ゴシックUB}\\\midrule -\gtfamily 丸ゴシック体& -\multicolumn{3}{c}{HG丸ゴシック体PRO}\\ +\paragraph{\texttt{U+0080}--\texttt{U+00FF}についての注意} +\LuaTeX-jaで,\Pkg{marvosym}パッケージ等,Unicodeフォントでなく +伝統的な8ビットフォントを用いる場合には注意が必要である. + +例えば,\Pkg{marvosym}パッケージの提供する \cs{Frowny} も,符号位置は167,つまりUnicodeにおける +\S\ (\text{U+00A7}) と同じ符号位置にある. +即ち,以前のバージョンのように,「前節の文字範囲8内の文字は\textbf{JAchar}」という設定で +あったとすると,上記の \cs{Frowny} は和文フォントで「\ltjjachar`§」を出力することになる. + +このような事態を避けるために,バージョン20150906.0からは \texttt{U+0080}--\texttt{U+00FF} の範囲の +文字は全て\textbf{ALchar}となるように初期設定を変更している. + +なお,文字範囲の設定に関わらず1つの文字を\textbf{ALchar}, \textbf{JAchar}で出力したい場合には, +以下の例のようにそれぞれ \cs{ltjalchar},~\cs{ltjjachar} に該当文字の文字コードを渡せばよい. +\begin{LTXexample}[width=0.3\textwidth] +\gtfamily\large % default, ALchar, JAchar +¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar +α, \ltjalchar`α, \ltjjachar`α % default: JAchar +\end{LTXexample} % -\bottomrule -\end{tabular}\par\medskip} + +%\subsection{\Param{kanjiskip} and \Param{xkanjiskip}} +%\subsection{\Param{kanjiskip}と\Param{xkanjiskip}} +\label{subs-kskip} + +%\textbf{JAglue} is divided into the following three categories: +%\textbf{JAglue}は以下の3つのカテゴリに分類される: +\begin{itemize} %<*en> -Note that HG~Mincho~E, HG~Gothic~E, HG Soei Kaku Gothic UB, and HG Maru Gothic PRO -are internally specified by: -\begin{description} -\item[default] by font name (\texttt{HGMinchoE}, etc.). -\item[{\tt 90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}). -\item[{\tt jis2004}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}). -\end{description} +\item Glues/kerns specified in JFM. If \cs{inhibitglue} is issued + around a \textbf{JAchar}, this glue will not be inserted at the + place. % %<*ja> -なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で -\begin{description} -\item[標準] フォント名(\texttt{HGMinchoE} など) -\item[{\tt 90jis}指定時] ファイル名 (% -\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}) -\item[{\tt jis2004}指定時] ファイル名 (% -\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}) -\end{description} -として指定を行っているので注意すること. +\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が\textbf{JAchar}の周りで + 発行されていれば,このグルーは挿入されない. % - - %<*en> -\subsection{\cs{CID}, \cs{UTF}, and macros in \Pkg{japanese-otf} package} -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 the \Pkg{japanese-otf} package, -as an external package \Pkg{luatexja-otf}. +\item The default glue which inserted between two \textbf{JAchar}s (\Param{% + kanjiskip}). % %<*ja> -\subsection{\cs{CID}, \cs{UTF}と\Pkg{otf}パッケージのマクロ} -\pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために, -齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは -広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の -一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した. +\item デフォルトで2つの\textbf{JAchar}の間に挿入されるグルー(\Param{kanjiskip}). % - -\begin{LTXexample} -\jfontspec{KozMinPr6N-Regular.otf} -森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。 - -\CID{7652}飾区の\CID{13706}野家, -\CID{1481}城市,葛西駅, -高崎と\CID{8705}\UTF{FA11} - -\aj半角{はんかくカタカナ} -\end{LTXexample} - +%<*en> +\item The default glue which inserted between a \textbf{JAchar} and an + \textbf{ALchar} (\Param{xkanjiskip}). +% %<*ja> -\Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した: -\begin{cslist} -\item[deluxe] 明朝体・ゴシック体各3ウェイトと,丸ゴシック体を扱えるようになる. -\item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も -\ \cs{rubyfamily}\ によって扱えるようになる. -\item[bold] ゴシック体を標準で太いウェイトのものに設定する. -\end{cslist} -しかしこれらのオプションは\Pkg{luatexja-otf}パッケージには存在しない. -\Pkg{otf}パッケージが文書中で使用する和文用TFMを自前の物に置き換えていたのに対し, -\Pkg{luatexja-otf}パッケージでは,そのようなことは行わないからである. - -これら3オプションについては, -\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか, -あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や -\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある. +\item デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルー(\Param{xkanjiskip}). % - -%\subsection{Changing default Japanese fonts} -%\subsection{標準和文フォントの変更} -\label{ssec-cfg} +\end{itemize} %<*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} +The value (a skip) of \Param{kanjiskip} or +\Param{xkanjiskip} can be changed as the following. +Note that only their values \emph{at the end of a paragraph or a hbox are +adopted in the whole paragraph or the whole hbox. +} % %<*ja> -\LuaTeX から見える位置に \texttt{luatexja.cfg} があれば,\LuaTeX-jaはそれを読み込む. -このファイルを用いるとplain~\TeX, \LaTeXe における標準和文フォントを -IPAex明朝・IPAexゴシックから変更することができる. -しかし,基本的には\emph{文章中で用いるフォントは(例えば \Pkg{luatexja-preset} などで) -文書ソース内で指定するべき}であり,この \texttt{luatexja.cfg} は, -「IPAexフォントがインストールできない」など,IPAexフォントが使用できない場合にのみ -応急処置的に用いるべきである. - -例えば +\Param{kanjiskip}や\Param{xkanjiskip}の値 +は以下のようにして変更可能である. +% \begin{lstlisting} -\def\ltj@stdmcfont{IPAMincho} -\def\ltj@stdgtfont{IPAGothic} +\ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt}, + xkanjiskip={0.25\zw plus 1pt minus 1pt}} \end{lstlisting} -と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変 -更される. +%<*en> +Here \cs{zw} is a internal dimension +which stores fullwidth of the current Japanese font. +This \cs{zw} can be used as the unit \texttt{zw} in \pTeX. +The value of these parameter can be get by \cs{ltjgetparameter}. +Note that the result by \cs{ltjgetparameter} is \emph{not} the internal quantities, +but \emph{a string} (hence \cs{the} cannot be prefixed). +% +%<*ja> +ここで,\cs{zw} は現在の和文フォントの全角幅を表す長さであり, +\pTeX における長さ単位 \texttt{zw} と同じように使用できる. -なお,20140906.0以前のバージョンのように, -Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用いる場合は -\begin{lstlisting} -\def\ltj@stdmcfont{psft:Ryumin-Light} -\def\ltj@stdgtfont{psft:GothicBBB-Medium} -\end{lstlisting} -と記述すればよい. +これらのパラメータの値は以下のように取得できる. +戻り値は内部値ではなく\emph{文字列}である(\cs{the} は前置できない)ことに注意してほしい: % - - -%\section{Changing Internal Parameters} -%\section{パラメータの変更} +\begin{LTXexample} +kanjiskip: \ltjgetparameter{kanjiskip},\\ +xkanjiskip: \ltjgetparameter{xkanjiskip} +\end{LTXexample} %<*en> -There are many internal parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX, -most of them are not stored as internal register of \TeX, but as an -original storage system in \LuaTeX-ja. Hence, to assign or acquire those -parameters, you have to use commands \cs{ltjsetparameter} and -\cs{ltjgetparameter}. +It may occur that JFM contains the data of ``ideal width of +\Param{kanjiskip}'' +and/or ``ideal width of \Param{xkanjiskip}''. +To use these data from JFM, set the value of \Param{kanjiskip} or +\Param{xkanjiskip} to \cs{maxdimen} +(these ``ideal width'' cannot be retrived by \cs{ltjgetparameter}). % %<*ja> -\LuaTeX-jaには多くのパラメータが存在する.そして\LuaTeX の仕様のために, -その多くは\TeX のレジスタにではなく,\LuaTeX-ja独自の方法で保持されている. -これらのパラメータを設定・取得するためには \cs{ltjsetparameter} と \cs{ltjgetparameter} を -用いる. +JFMは「望ましい\Param{kanjiskip}の値」や +「望ましい\Param{xkanjiskip}の値」を持っていることがある. +これらのデータを使うためには,\Param{kanjiskip}や% +\Param{xkanjiskip}の値を \cs{maxdimen} の値に設定すればよいが, +\cs{ltjgetparameter} によって取得することはできないので注意が必要である. % -%\subsection{Range of \textbf{JAchar}s} -%\subsection{\textbf{JAchar}の範囲} -\label{ssec-setrange} +%\subsection{Insertion setting of \Param{xkanjiskip}} +%\subsection{\Param{xkanjiskip} の挿入設定} %<*en> -\LuaTeX-ja divides the Unicode codespace \texttt{U+0080}--\texttt{U+10FFFF} -into \emph{character ranges}, -numbered 1 to 217. The grouping can be (globally) customized by \cs{ltjdefcharrange}. -The next line adds whole characters in Supplementary Ideographic Plane -and the character ``漢'' to the character range~100. +It is not desirable that \Param{xkanjiskip} is inserted into every +boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example, +\Param{xkanjiskip} should not be inserted after opening parenthesis +(\textit{e.g.}, compare ``(あ'' and ``(\hskip\ltjgetparameter{xkanjiskip}あ''). +\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted +before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and +\Param{alxspmode} parameters \textbf{ALchar}s respectively. % %<*ja> -\LuaTeX-jaは,Unicodeの \texttt{U+0080}--\texttt{U+10FFFF} の空間を -1番から217番までの\emph{文字範囲}に分割している. -区分けは \cs{ltjdefcharrange} を用いることで(グローバルに)変更することができ, -例えば,次は追加漢字面(SIP)にある全ての文字と「漢」を「100番の文字範囲」に追加する. +\Param{xkanjiskip}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に +挿入されるのは望ましいことではない.例えば,\Param{xkanjiskip}は開き括弧の +後には挿入されるべきではない(「(あ」と「(\hskip\ltjgetparameter{xkanjiskip}あ」を +比べてみよ). +\LuaTeX-jaでは\Param{xkanjiskip}をある文字の前/後に挿入するかどうかを, +\textbf{JAchar}に対しては\Param{jaxspmode}を,\textbf{ALchar}に対しては +\Param{alxspmode}をそれぞれ変えることで制御することができる. % -\begin{lstlisting} -\ltjdefcharrange{100}{"20000-"2FFFF,`漢} -\end{lstlisting} +\begin{LTXexample} +\ltjsetparameter{jaxspmode={`あ,preonly}, alxspmode={`\!,postonly}} +pあq い!う +\end{LTXexample} %<*en> -A character can belong to only one character range. -For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja, -and if you execute the above line, then SIP will belong to the range~100 and be -removed from the range~4. +The second argument \texttt{preonly} means that the insertion of +\Param{xkanjiskip} is allowed before this character, but not after. +the other possible values are \texttt{postonly}, \texttt{allow}, and \texttt{inhibit}. % %<*ja> -各文字はただ一つの文字範囲に所属することができる. -例えば,SIP内の文字は全て\LuaTeX-jaのデフォルトでは4番の文字範囲に -属しているが,上記の指定を行えばSIP内の文字は100番に属すようになり,4番からは除かれる. +2つ目の引数の \texttt{preonly}は「\Param{xkanjiskip}の挿入はこの文字の +前でのみ許され,後では許さない」ことを意味する.他に指定可能な値は +\texttt{postonly}, \texttt{allow}, \texttt{inhibit}である. % %<*en> -The distinction between \textbf{ALchar} and \textbf{JAchar} is performed by character ranges. -This can be edited by setting the \textsf{jacharrange} parameter. -For example, the code below is just the default setting of \LuaTeX-ja, and -it sets -\begin{itemize} - \item a character which belongs character ranges 1,~4, 5, and~8 is \textbf{ALchar}, - \item a character which belongs character ranges 2,~3, 6, and~7 is \textbf{JAchar}. -\end{itemize} +\Param{jaxspmode} and \Param{alxspmode} use a same table to store the parameters +on the current version. Therefore, line~1 in the code above can be rewritten +as follows: % %<*ja> -\textbf{ALchar}と\textbf{JAchar}の区別は文字範囲ごとに行われる. -これは\textsf{jacharrange}パラメータによって編集できる. -例えば,以下は\LuaTeX-jaの初期設定であり,次の内容を設定している: -\begin{itemize} - \item 1番,4番,5番,8番の文字範囲に属する文字は\textbf{ALchar}. - \item 2番,3番,6番,7番の文字範囲に属する文字は\textbf{JAchar}. -\end{itemize} +なお,現行の +仕様では,\Param{jaxspmode}, \Param{alxspmode}はテーブルを共有しており, +上のコードの1行目を次のように変えても同じことになる: % \begin{lstlisting} -\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}} +\ltjsetparameter{alxspmode={`あ,preonly}, jaxspmode={`\!,postonly}} \end{lstlisting} %<*en> -The argument to \textsf{jacharrange} parameter is a list of non-zero integer. -Negative integer $-n$ in the list means that ``each character in the range~$n$ is an -\textbf{ALchar}'', -and positive integer $+n$ means that ``\dots\ is a \textbf{JAchar}''. +One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}). % %<*ja> -\textsf{jacharrange}パラメータの引数は非零の整数のリストである. -リスト中の負の整数$-n$は「文字範囲$n$に属する文字は\textbf{ALchar}として -扱う」ことを意味し,正の整数$+n$は「\textbf{JAchar}として扱う」ことを意味する. +また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param}節を参照). % %<*en> -Note that characters \texttt{U+0000}--\texttt{U+007F} are always treated as an -\textbf{ALchar} (this cannot be customized). +If you want to enable/disable all insertions of \Param{kanjiskip} and +\Param{xkanjiskip}, set \Param{autospacing} and \Param{autoxspacing} +parameters to \texttt{true}/\texttt{false}, respectively. % %<*ja> -なお,\texttt{U+0000}--\texttt{U+007F} は常に\textbf{ALchar}として扱われる(利用者が変更す -ることは出来ない). +もし全ての\Param{kanjiskip}と\Param{xkanjiskip}の挿入を有効化/無効化 +したければ,それぞれ\Param{autospacing}と\Param{autoxspacing}を +\texttt{true}/\texttt{false}に設定すればよい. % +%\subsection{Shifting the baseline} +%\subsection{ベースラインの移動} %<*en> -\paragraph{Default character ranges} -\LuaTeX-ja predefines eight character ranges for convenience. They are -determined from the following data: +To make a match between a Japanese font and an alphabetic font, sometimes +shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved +by setting \cs{ybaselineshift} (or \cs{tbaselineshift}) to a non-zero length (the +baseline of \textbf{ALchar} is shifted below). However, for documents +whose main language is not Japanese, it is good to shift the baseline of +Japanese fonts, but not that of alphabetic fonts. +Because of this, \LuaTeX-ja can independently set the shifting amount +of the baseline of alphabetic fonts and that of Japanese fonts. +\begin{center} + \small +\begin{tabular}{>{\bfseries}lcc} +\toprule +&\bfseries Horizontal writing (\emph{yoko} direction) etc. +&\bfseries Vertical writing(\emph{tate} direction)\\ +\midrule +Alphabetic fonts&\Param{yalbaselineshift} + parameter&\Param{talbaselineshift} parameter\\ +Japanese fonts&\Param{yjabaselineshift} + parameter&\Param{tjabaselineshift} parameter\\ +\bottomrule +\end{tabular} +\end{center} % %<*ja> -\paragraph{文字範囲の初期値} -\LuaTeX-jaでは8つの文字範囲を予め定義しており, -これらは以下のデータに基づいて決定している. +和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が +必要になる.\pTeX ではこれは \cs{ybaselineshift}(または\cs{tbaselineshift})を設定することで +なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない +文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい. +このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量 +と和文フォントのベースラインのシフト量を独立に設定できるようになっている. +\begin{center} + \small +\begin{tabular}{>{\bfseries}lcc} +\toprule +&\bfseries 横組など&\bfseries 縦組\\ +\midrule +欧文フォントのシフト量&\Param{yalbaselineshift} + parameter&\Param{talbaselineshift} parameter\\ +和文フォントのシフト量&\Param{yjabaselineshift} + parameter&\Param{tjabaselineshift} parameter\\ +\bottomrule +\end{tabular} +\end{center} % -\begin{itemize} -%\item Blocks in Unicode~6.0. -%\item Unicode~6.0のブロック. -%\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode. -%\item Adobe-Japan1-6のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}. -%\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato. -%\item 八登崇之氏による\upTeX 用の\Pkg{PXbase}バンドル. -\end{itemize} %<*en> -Now we describe these eight ranges. The superscript ``J'' or ``A'' after the -number shows whether each character in the range is treated as -\textbf{JAchar}s or not by default. These settings are similar to the -\texttt{prefercjk} settings defined in \texttt{PXbase} bundle. -Any characters equal to or above \texttt{U+0080} which does not belong to -these eight ranges belongs to the character range~217. +Here the horizontal line in the below example is the baseline of a line. % %<*ja> -以下ではこれら8つの文字範囲について記述する.添字のアルファベット「J」「A」 -は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの初期設定は -\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものであるが, -8ビットフォント使用時のトラブルを防ぐために \texttt{U+0080}--\texttt{U+00FF} の文字は全部 -\textbf{ALchar}としている. -なお,\texttt{U+0080} 以降でこれら8つの文字範囲に属さない文字は,217番の文字範囲に属することになっている. +下の例において引かれている水平線がベースラインである. % -\begin{description} -%<*en> +\begin{LTXexample} +\vrule width 150pt height 0.2pt depth 0.2pt \hskip-120pt +\ltjsetparameter{yjabaselineshift=0pt, yalbaselineshift=0pt}abcあいう +\ltjsetparameter{yjabaselineshift=5pt, yalbaselineshift=2pt}abcあいう +\end{LTXexample} -\item[Range~8${}^{\text{A}}$] The intersection of the upper half of ISO~8859-1 - (Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range - consists of the following characters: +%<*en> +There is an interesting side-effect: characters in different size can be +vertically aligned center in a line, by setting two parameters appropriately. +The following is an example (beware the value is not well tuned): % %<*ja> -\item[範囲8${}^{\text{A}}$] ISO~8859-1の上位領域(ラテン1補助)と - JIS~X~0208の共通部分.この文字範囲は - 以下の文字で構成される: +この機能には面白い使い方がある:2つのパラメータを適切に設定することで,サイズの +異なる文字を中心線に揃えることができる. +以下は一つの例である(値はあまり調整されていないことに注意): % -\begin{multicols}{2} +\begin{LTXexample}[width=0.4\textwidth] +\vrule width 150pt height4.417pt depth-4.217pt% +\kern-150pt +\large xyz漢字 +{\scriptsize + \ltjsetparameter{yjabaselineshift=-1.757pt, + yalbaselineshift=-1.757pt} + 漢字xyzあいう +}あいうabc +\end{LTXexample} + +%<*en> +Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift} +parameters does not increase the depth of one-letter \emph{syllable} $p$ of \textbf{Alchar}, if +its left-protrusion~(\cs{lpcode}) and right-protrusion~(\cs{rpcode}) are both non-zero. +This is because \begin{itemize} -\def\ch#1#2{\item \char"#1\ (\texttt{U+00#1}, #2)}%" -\ch{A7}{Section Sign} -\ch{A8}{Diaeresis} -\ch{B0}{Degree sign} -\ch{B1}{Plus-minus sign} -\ch{B4}{Spacing acute} -\ch{B6}{Paragraph sign} -\ch{D7}{Multiplication sign} -\ch{F7}{Division Sign} +\item These two parameters are implemented by setting \texttt{yoffset} field of a +glyph node, and this does not increase the depth of the glyph. +\item To cope with the above situation, \LuaTeX-ja automatically supplies +a rule in every syllable. +\item However, we cannot use this ``supplying a rule'' method if a syllable comprises just + one letter whose \cs{lpcode}~and~\cs{rpcode} are both non-zero. \end{itemize} -\end{multicols} -%<*en> -\item[Range~1${}^{\text{A}}$] Latin characters that some of them are included in Adobe-Japan1-6. -This range consists of the following Unicode ranges, \emph{except characters in the range~8 above}: +This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift}, +becuse a \emph{JAchar} is encapsulated by a horizontal box if needed. % %<*ja> -\item[範囲1${}^{\text{A}}$] ラテン文字のうち,Adobe-Japan1-6との共通部分があるもの. - この範囲は以下のUnicodeのブロックのうち - \emph{範囲8を除いた}部分で構成されている: -% -\begin{multicols}{2} +なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意. \begin{itemize} -\item \texttt{U+0080}--\texttt{U+00FF}: Latin-1 Supplement -\item \texttt{U+0100}--\texttt{U+017F}: Latin Extended-A -\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B -\item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions -\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters -%\par\ -\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks -\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional -%\par\ + \item \Param{yalbaselineshift},~\Param{talbaselineshift}パラメータが正になっている. + \item 「音節」を構成する唯一の文字$p$の +左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である. \end{itemize} -\end{multicols} -%<*en> -\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{\kern.1emJ}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの - 和文フォント)には,これらの文字の一部が含まれている. +\emph{JAchar}は必要に応じて1文字ずつボックスにカプセル化されるため, +\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない. % -\begin{multicols}{2} + +%<*ja> +\paragraph{数式における挙動:\pTeX との違い} +\textbf{ALchar}のベースラインを補正する\Param{yalbaselineshift}, \Param{talbaselineshift}パラメータは +ほぼ\pTeX における \cs{ybaselineshift}, \cs{tbaselineshift} に対応しているものであるが, +数式中の挙動は異なっているので注意が必要である. +例えば,\autoref{tab:math_bsa}のように,数式中に明示的に現れた \cs{hbox},~\cs{vbox} は,横組において \begin{itemize} -\item \texttt{U+0370}--\texttt{U+03FF}: Greek and Coptic -\item \texttt{U+0400}--\texttt{U+04FF}: Cyrillic -\item \texttt{U+1F00}--\texttt{U+1FFF}: Greek Extended -\\\ + \item 2015年以前の\pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので, + \autoref{tab:math_bsa}中の``い''のように,ボックス中の和文文字は + \ \cs{ybaselineshift} だけシフトされ,一方,``for all''のように, + ボックス内の欧文文字は2重にシフトされることになる. + \item 一方,\LuaTeX-jaではそのようなことはおこらず, + 数式中に明示的に現れた \cs{hbox},~\cs{vbox} はシフトしない.そのため, + \autoref{tab:math_bsa}中の``い''も``for all''も,それぞれ本文中に + 書かれたときと同じ上下位置に組まれる. + + なお,\TeX~Live~2016以降の\pTeX では改修がなされ,\LuaTeX-jaと + 近い挙動になるようにしているが,数式中に直に書かれた``あ''のベースラインについては + まだ違いが見られる. \end{itemize} -\end{multicols} -%<*en> -\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is - indicated in \autoref{tab:rng3}. -% -%<*ja> -\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは\autoref{tab:rng3}% - に示してある. -% -\begin{table}[!tb] -%\caption{Unicode blocks in predefined character range~3.}\medskip -%\caption{文字範囲3に指定されているUnicodeブロック.} -\label{tab:rng3} -\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%" -\centering\small -\begin{tabular}{llll} -"2000--"206F&General Punctuation& -"2070--"209F&Superscripts and Subscripts\\ -"20A0--"20CF&Currency Symbols& -"20D0--"20FF&Comb.\ Diacritical Marks for Symbols\\ -"2100--"214F&Letterlike Symbols& -"2150--"218F&Number Forms\\ -"2190--"21FF&Arrows& -"2200--"22FF&Mathematical Operators\\ -"2300--"23FF&Miscellaneous Technical& -"2400--"243F&Control Pictures\\ -"2500--"257F&Box Drawing& -"2580--"259F&Block Elements\\ -"25A0--"25FF&Geometric Shapes& -"2600--"26FF&Miscellaneous Symbols\\ -"2700--"27BF&Dingbats& -"2900--"297F&Supplemental Arrows-B\\ -"2980--"29FF&Misc.\ Mathematical Symbols-B& -"2B00--"2BFF&Miscellaneous Symbols and Arrows + +なお,バージョン20170401.0以降の\LuaTeX-jaでは,\cs{vcenter} によるボックスには +全体が\Param{yalbaselineshift}, \Param{talbaselineshift} パラメータが反映されるようにしている. +その方が結果が自然であることによる変更なのだが,結果的に\cs{vcenter} については\pTeX と同じ挙動となった. + +\begin{table} +\small\centering +\caption{数式関係のベースライン補正($\Param{yalbaselineshift}=10\,\textrm{pt}$)} +\label{tab:math_bsa} +\newdimen\origbaselineskip +\origbaselineskip=\baselineskip +\begin{tabular}{lp{30\zw}} +\toprule +\emph{入力}&\vspace*{\dimexpr-\origbaselineskip-\smallskipamount} +\begin{lstlisting} +数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$, +$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ +\end{lstlisting}\\ +\noalign{\vskip-\origbaselineskip} +\midrule +\emph{\pTeX~(--2015)}& +{\ltjsetparameter{yalbaselineshift=10pt}% +数式abc: $\lower10pt\hbox{あ}a\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$, +$\Phi\vdash F(x)\ \lower10pt\hbox{for all}\ x\in A$ +\par}\\\noalign{\vskip-\origbaselineskip}\midrule +\emph{\pTeX~(2016--)}& +{\ltjsetparameter{yalbaselineshift=10pt}% +数式abc: $\lower10pt\hbox{あ}a\hbox{い}$, $\int_0^x t\,dt=x^2/2$, +$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ +\par}\\\noalign{\vskip-\origbaselineskip}\midrule +\emph{\LuaTeX-ja}& +{\ltjsetparameter{yalbaselineshift=10pt}% +数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$, +$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ +\par}\\ +\noalign{\vskip-\origbaselineskip} +\bottomrule \end{tabular} \end{table} +% + %<*en> -\item[Range~4${}^{\text{A}}$] Characters usually not in Japanese fonts. This range consists - of almost all Unicode blocks which are not in other - predefined ranges. Hence, instead of showing the block list, - we put the definition of this range itself: +\subsection{\emph{kinsoku} parameters and OpenType features} +Among parameters which related to Japanese word-wrapping process (\emph{kinsoku shori}), +\begin{quote} + \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty}, + \Param{postbreakpenalty}~and~\Param{kcatcode} +\end{quote} +are stored by each character codes. + +OpenType font features are ignored in these parameters. +For example, a fullwidth katakana ``ア'' on line~10 in the below input is replaced to +its halfwidth variant ``ア'', by \verb+hwid+ feature. +However, the penalty inserted after it is 10 which is the \Param{postbreakpenalty} of +``ア'', not 20. % %<*ja> -\item[範囲4${}^{\text{A}}$] 通常和文フォントには含まれていない文字. - この範囲は他の範囲にないほとんど全てのUnicodeブロック - で構成されている.したがって,ブロックのリストを示す - 代わりに,範囲の定義そのものを示す: -% -\begin{lstlisting} -\ltjdefcharrange{4}{% - "500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF, - "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A82F, "A840-"ABFF, "FB00-"FE0F, - "FE20-"FE2F, "FE70-"FEFF, "10000-"1FFFF, "E000-"F8FF} % non-Japanese -\end{lstlisting} -%\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas. -%\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域. -%\item[Range~6${}^{\text{\kern.1emJ}}$] Characters used in Japanese. The block list is indicated in \autoref{tab:rng6}. -%\item[範囲6${}^{\text{\kern.1emJ}}$] 日本語で用いられる文字.ブロックのリストは\autoref{tab:rng6}に示す. -\begin{table}[!tb] -%\caption{Unicode blocks in predefined character range~6.}\medskip -%\caption{文字範囲6に指定されているUnicodeブロック.} -\label{tab:rng6} -\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%" -\centering\small -\begin{tabular}{llll} -"2460--"24FF&Enclosed Alphanumerics& -"2E80--"2EFF&CJK Radicals Supplement\\ -"3000--"303F&CJK Symbols and Punctuation& -"3040--"309F&Hiragana\\ -"30A0--"30FF&Katakana& -"3190--"319F&Kanbun\\ -"31F0--"31FF&Katakana Phonetic Extensions& -"3200--"32FF&Enclosed CJK Letters and Months\\ -"3300--"33FF&CJK Compatibility& -"3400--"4DBF&CJK Unified Ideographs Extension A\\ -"4E00--"9FFF&CJK Unified Ideographs& -"F900--"FAFF&CJK Compatibility Ideographs\\ -"FE10--"FE1F&Vertical Forms& -"FE30--"FE4F&CJK Compatibility Forms\\ -"FE50--"FE6F&Small Form Variants& -"{20}000--"{2F}FFF&(Supplementary Ideographic Plane)\\ -"{E0}100--"{E0}1EF&Variation Selectors Supplement -\end{tabular} -\end{table} -%<*en> -\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in Adobe-Japan1-6. -The block list is indicated in \autoref{tab:rng7}. -% -%<*ja> -\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に - 含まれていないもの. - ブロックのリストは\autoref{tab:rng7}に示す. -% -\begin{table}[!tb] -%\caption{Unicode blocks in predefined character range~7.}\medskip -%\caption{文字範囲7に指定されているUnicodeブロック.} -\label{tab:rng7} -\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%" -\centering\small -\begin{tabular}{llll} -"1100--"11FF&Hangul Jamo& -"2F00--"2FDF&Kangxi Radicals\\ -"2FF0--"2FFF&Ideographic Description Characters& -"3100--"312F&Bopomofo\\ -"3130--"318F&Hangul Compatibility Jamo& -"31A0--"31BF&Bopomofo Extended\\ -"31C0--"31EF&CJK Strokes& -"A000--"A48F&Yi Syllables\\ -"A490--"A4CF&Yi Radicals& -"A830--"A83F&Common Indic Number Forms\\ -"AC00--"D7AF&Hangul Syllables& -"D7B0--"D7FF&Hangul Jamo Extended-B -\end{tabular} -\end{table} -\end{description} - -%<*en> -\paragraph{Notes on \texttt{U+0080}--\texttt{U+00FF}} -You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar}, -when you use traditional 8-bit fonts, such as the \Pkg{marvosym} package. - -For example, \cs{Frowny} which is provided by the \Pkg{marvosym} package has -the same codepoint as \S\ (\text{U+00A7}). -Hence, as previous versions of \LuaTeX-ja, if these characters are treated as -\text{JAchar}s, then \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font). - -To avoid such situations, the default setting of \LuaTeX-ja is changed in this release -so that all characters \texttt{U+0080}--\texttt{U+00FF} are treated as \textbf{ALchar}. +\newpage +\subsection{禁則処理関連パラメータとOpenTypeのfont feature} +禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち +\begin{quote} + \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty}, + \Param{postbreakpenalty}, \Param{kcatcode} +\end{quote} +は,文字コードごとに設定する量である. -If you want to output a character as \textbf{ALchar} and \textbf{JAchar} regardless the range -setting, you can use \cs{ltjalchar} and \cs{ltjjachar} respectively, as the following example. -\begin{LTXexample}[width=0.3\textwidth] -\gtfamily\large % default, ALchar, JAchar -¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar -α, \ltjalchar`α, \ltjjachar`α % default: JAchar -\end{LTXexample} -% -%<*ja> -\paragraph{\texttt{U+0080}--\texttt{U+00FF}についての注意} -\LuaTeX-jaで,\Pkg{marvosym}パッケージ等,Unicodeフォントでなく -伝統的な8ビットフォントを用いる場合には注意が必要である. +\Pkg{fontspec}パッケージを使う(\ref{ssec-fontspec}節)場合など, +各種のOpenType featureを適用することもあると思うが,前段落に述べたパラメータ類は, +\emph{OpenType featureの適用前の文字コードによって適用される.} +例えば,以下の例において10行目の「ア」は,\verb+hwid+ featureの適用により半角カタカナの「ア」 +に置き換わる.しかし,その直後に挿入される \Param{postbreakpenalty}は,置換前の「ア」に対する値10である. +% -例えば,\Pkg{marvosym}パッケージの提供する \cs{Frowny} も,符号位置は167,つまりUnicodeにおける -\S\ (\text{U+00A7}) と同じ符号位置にある. -即ち,以前のバージョンのように,「前節の文字範囲8内の文字は\textbf{JAchar}」という設定で -あったとすると,上記の \cs{Frowny} は和文フォントで「\ltjjachar`§」を出力することになる. +\begin{LTXexample}[width=0.2\textwidth] +\ltjsetparameter{postbreakpenalty={`ア, 10}} +\ltjsetparameter{postbreakpenalty={`ア, 20}} -このような事態を避けるために,本バージョンからは \texttt{U+0080}--\texttt{U+00FF} の範囲の -文字は全て\textbf{ALchar}となるように初期設定を変更している. +\newcommand\showpostpena[1]{% + \leavevmode\setbox0=\hbox{#1\hbox{}}% + \unhbox0\setbox0=\lastbox\the\lastpenalty} -なお,文字範囲の設定に関わらず1つの文字を\textbf{ALchar}, \textbf{JAchar}で出力したい場合には, -以下の例のようにそれぞれ \cs{ltjalchar},~\cs{ltjjachar} に該当文字の文字コードを渡せばよい. -\begin{LTXexample}[width=0.3\textwidth] -\gtfamily\large % default, ALchar, JAchar -¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar -α, \ltjalchar`α, \ltjjachar`α % default: JAchar +\showpostpena{ア}, +\showpostpena{ア}, +{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ア}} \end{LTXexample} -% - - -%\subsection{\Param{kanjiskip} and \Param{xkanjiskip}} -%\subsection{\Param{kanjiskip}と\Param{xkanjiskip}} -\label{subs-kskip} -%\textbf{JAglue} is divided into the following three categories: -%\textbf{JAglue}は以下の3つのカテゴリに分類される: -\begin{itemize} -%<*en> -\item Glues/kerns specified in JFM. If \cs{inhibitglue} is issued - around a \textbf{JAchar}, this glue will not be inserted at the - place. -% -%<*ja> -\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が\textbf{JAchar}の周りで - 発行されていれば,このグルーは挿入されない. -% -%<*en> -\item The default glue which inserted between two \textbf{JAchar}s (\Param{% - kanjiskip}). -% +\clearpage +%\part{Reference} +%\part{リファレンス} +\label{part-ref} +\suppressfloats[t] %<*ja> -\item デフォルトで2つの\textbf{JAchar}の間に挿入されるグルー(\Param{kanjiskip}). +\section{\LuaTeX-jaにおける \cs{catcode}} +\label{sec-catcode} +\subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}} +\pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか +は \cs{kcatcode} の値によって決定されるのであった. +詳細は\autoref{tab:kcat}を参照されたい. % %<*en> -\item The default glue which inserted between a \textbf{JAchar} and an - \textbf{ALchar} (\Param{xkanjiskip}). +\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. +For the detail, see \autoref{tab:kcat}. % -%<*ja> -\item デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルー(\Param{xkanjiskip}). -% -\end{itemize} + +\begin{table}[t] +\small +\caption{\cs{kcatcode} in \upTeX} +\label{tab:kcat} +%\medskip + +\noindent\hfill +\begin{tabular}{ccccc} +\toprule +\bfseries \cs{kcatcode}& %<*en> -The value (a skip) of \Param{kanjiskip} or -\Param{xkanjiskip} can be changed as the following. -Note that only their values \emph{at the end of a paragraph or a hbox are -adopted in the whole paragraph or the whole hbox. -} +\bfseries meaning& +\bfseries control word& +\bfseries widow penalty& +\bfseries linebreak\\ % %<*ja> -\Param{kanjiskip}や\Param{xkanjiskip}の値 -は以下のようにして変更可能である. +\bfseries 意図& +\bfseries 制御綴中に使用& +\bfseries 文字ウィドウ処理& +\bfseries 直後での改行\\ % -\begin{lstlisting} -\ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt}, - xkanjiskip={0.25\zw plus 1pt minus 1pt}} -\end{lstlisting} -%<*en> -Here \cs{zw} is a internal dimension -which stores fullwidth of the current Japanese font. -This \cs{zw} can be used as the unit \texttt{zw} in \pTeX. +\midrule +15&non-cjk&\multicolumn{3}{c}{(treated as usual \LaTeX)}\\ +16&kanji&Y&Y&ignored\\ +17&kana&Y&Y&ignored\\ +18&other&N&N&ignored\\ +19&hangul&Y&Y&space\\ +\bottomrule +\end{tabular}\hfill\null -The value of these parameter can be get by \cs{ltjgetparameter}. -Note that the result by \cs{ltjgetparameter} is \emph{not} the internal quantities, -but \emph{a string} (hence \cs{the} cannot be prefixed). -% -%<*ja> -ここで,\cs{zw} は現在の和文フォントの全角幅を表す長さであり, -\pTeX における長さ単位 \texttt{zw} と同じように使用できる. +\medskip -これらのパラメータの値は以下のように取得できる. -戻り値は内部値ではなく\emph{文字列}である(\cs{the} は前置できない)ことに注意してほしい: +%<*ja> +文字ウィドウ処理:「漢字が一文字だけ次の行に行くのを防ぐ」 +\cs{jcharwidowpenalty} が, +その文字の直前に挿入されうるか否か,を示す. % -\begin{LTXexample} -kanjiskip: \ltjgetparameter{kanjiskip},\\ -xkanjiskip: \ltjgetparameter{xkanjiskip} -\end{LTXexample} +\end{table} %<*en> -It may occur that JFM contains the data of ``ideal width of -\Param{kanjiskip}'' -and/or ``ideal width of \Param{xkanjiskip}''. -To use these data from JFM, set the value of \Param{kanjiskip} or -\Param{xkanjiskip} to \cs{maxdimen} -(these ``ideal width'' cannot be retrived by \cs{ltjgetparameter}). +\cs{kcatcode} can be set by a row of JIS~X~0208 in \pTeX, +and generally by a Unicode block\footnote{% + \upTeX\ divides \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms) + into three subblocks, and \cs{kcatcode} can be set by a subblock. +} +in \upTeX. So characters which can be used in a control word +slightly differ between \pTeX~and~\upTeX. % %<*ja> -JFMは「望ましい\Param{kanjiskip}の値」や -「望ましい\Param{xkanjiskip}の値」を持っていることがある. -これらのデータを使うためには,\Param{kanjiskip}や% -\Param{xkanjiskip}の値を \cs{maxdimen} の値に設定すればよいが, -\cs{ltjgetparameter} によって取得することはできないので注意が必要である. +\pTeX では \cs{kcatcode} はJIS~X~0208の区単位, +\upTeX では概ねUnicodeブロック単位\footnote{% + \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)は + 「全角英数字」「半角カナ」「その他」と3つに分割されており, + それぞれ別々に \cs{kcatcode} が指定できるようになっている. +}で設定可能になっている.そのため,\pTeX と\upTeX の初期状態では +制御綴内で使用可能な文字が微妙に異なっている. % -%\subsection{Insertion setting of \Param{xkanjiskip}} -%\subsection{\Param{xkanjiskip} の挿入設定} - %<*en> -It is not desirable that \Param{xkanjiskip} is inserted into every -boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example, -\Param{xkanjiskip} should not be inserted after opening parenthesis -(\textit{e.g.}, compare ``(あ'' and ``(\hskip\ltjgetparameter{xkanjiskip}あ''). -\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted -before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and -\Param{alxspmode} parameters \textbf{ALchar}s respectively. +\subsection{Case of \LuaTeX-ja} +The role of \cs{kcatcode} in \pTeX~and~\upTeX\ can be +divided into the following four kinds, +and \LuaTeX-ja can control these four kinds separately: +\begin{itemize} + \item +\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}} +is controlled by the character range, see Subsection~\ref{ssec-setrange}. + \item +\emph{Whether the character can be used in a control word} +is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual. + \item +\emph{Whether \Param{jcharwidowpenalty} can be inserted before the character} +is controlled by the lowermost bit of the \Param{kcatcode} parameter. + \item +\emph{Linebreak after a \textbf{JAchar}} does not produce a space. +\end{itemize} % %<*ja> -\Param{xkanjiskip}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に -挿入されるのは望ましいことではない.例えば,\Param{xkanjiskip}は開き括弧の -後には挿入されるべきではない(「(あ」と「(\hskip\ltjgetparameter{xkanjiskip}あ」を -比べてみよ). -\LuaTeX-jaでは\Param{xkanjiskip}をある文字の前/後に挿入するかどうかを, -\textbf{JAchar}に対しては\Param{jaxspmode}を,\textbf{ALchar}に対しては -\Param{alxspmode}をそれぞれ変えることで制御することができる. +\subsection{\LuaTeX-jaの場合} +\LuaTeX-jaでは,従来の\pTeX・\upTeX における \cs{kcatcode} の役割を +分割している: +\begin{description} + \item[欧文/和文の区別 (\upTeX)] +\cs{ltjdefcharrange} と\textsf{jacharrange}パラメータ(\ref{ssec-setrange}節) + \item[制御綴中に使用可か] +\LuaTeX 自身の \cs{catcode} でよい + \item[\Param{jcharwidowpenalty}が挿入可か] +\Param{kcatcode}パラメータの最下位ビット + \item[直後の改行] +日本語しか想定していないので,\textbf{JAchar}直後の改行で半角スペースが挿入されることはない. +\end{description} % -\begin{LTXexample} -\ltjsetparameter{jaxspmode={`あ,preonly}, alxspmode={`\!,postonly}} -pあq い!う -\end{LTXexample} %<*en> -The second argument \texttt{preonly} means that the insertion of -\Param{xkanjiskip} is allowed before this character, but not after. -the other possible values are \texttt{postonly}, \texttt{allow}, and \texttt{inhibit}. -% -%<*ja> -2つ目の引数の \texttt{preonly}は「\Param{xkanjiskip}の挿入はこの文字の -前でのみ許され,後では許さない」ことを意味する.他に指定可能な値は -\texttt{postonly}, \texttt{allow}, \texttt{inhibit}である. -% +Default setting of \cs{catcode} of Unicode characters are located in +\begin{description} + \item[plain \LuaTeX] \texttt{luatex-unicode-letters.tex}, which is based on \texttt{unicode-letters.tex} +(for \XeTeX). + \item[\LuaLaTeX] now included in \LaTeX\ kernel as~\texttt{unicode-letters.def}. +\end{description} +However, the default setting of \cs{catcode} differs +between \XeTeX\ and \LuaTeX, by the following reasons: +\begin{itemize} + \item (plain format) \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}. + \item The latter half of \texttt{unicode-letters.tex}~and~\texttt{unicode-letters.def} +sets\cs{catcode} of several characters to 11, via setting \cs{XeTeXcharclass}. +However, this latter half does not exist (plain case), or not executed (\LaTeX~case) in \LuaTeX. +\end{itemize} +In other words, +\begin{description} +\item[plain \LuaTeX] +Kanji nor kana characters cannot be used in +a control word, in the default setting of plain \LuaTeX. +\item[\LuaLaTeX] +In recent (2015-10-01 or later) \LuaLaTeX, Kanji and kana characters in a control word is supported (these catcode are 11), +but not fullwidth alphanumerics and several other characters. +\end{description} -%<*en> -\Param{jaxspmode} and \Param{alxspmode} use a same table to store the parameters -on the current version. Therefore, line~1 in the code above can be rewritten -as follows: -% -%<*ja> -なお,現行の -仕様では,\Param{jaxspmode}, \Param{alxspmode}はテーブルを共有しており, -上のコードの1行目を次のように変えても同じことになる: -% -\begin{lstlisting} -\ltjsetparameter{alxspmode={`あ,preonly}, jaxspmode={`\!,postonly}} -\end{lstlisting} -%<*en> -One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}). +This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja, +since several control words containing Kanji or other fullwidth characters, such as +\verb+\西暦+~or~\verb+\1年目西暦+ are used in \pTeX. +Hence, \LuaTeX-ja have a counterpart of \texttt{unicode-letters.tex} +for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} % %<*ja> -また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param}節を参照). -% +ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では, +文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode} +で指定することとなる.plain \XeTeX における \cs{catcode} の初期設定は\ +\texttt{unicode-letters.tex} 中に記述されており,plain \LuaTeX ではそれを +元にした \texttt{luatex-unicode-letters.tex} を用いている. +\LaTeX では \cs{catcode} の設定はカーネルに \texttt{unicode-letters.def} として統合され. +このファイルを\XeLaTeX, \LuaLaTeX の両方が用いている. -%<*en> -If you want to enable/disable all insertions of \Param{kanjiskip} and -\Param{xkanjiskip}, set \Param{autospacing} and \Param{autoxspacing} -parameters to \texttt{true}/\texttt{false}, respectively. -% -%<*ja> -もし全ての\Param{kanjiskip}と\Param{xkanjiskip}の挿入を有効化/無効化 -したければ,それぞれ\Param{autospacing}と\Param{autoxspacing}を -\texttt{true}/\texttt{false}に設定すればよい. +だが,\XeTeX における \cs{catcode} の初期設定と +\LuaTeX におけるそれは一致していない: +\begin{itemize} + \item \texttt{luatex-unicode-letters.tex} の元になった\ +\texttt{unicode-letters.tex} が古い + \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では +\cs{XeTeXcharclass} の設定を行なっており, +それによって漢字や仮名,および全角英数字の \cs{catcode} が11に設定されている. +しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が +まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな + い. +\end{itemize} +言い換えると, +\begin{description} + \item[plain \LuaTeX] 漢字や仮名を制御綴内に +使用することはできない. + \item[\LuaLaTeX] 最近の(2015-10-01以降の) +\LuaLaTeX では漢字や仮名を制御綴内に +使用することが可能になったが,全角英数字は相変わらず使用できない, +\end{description} +これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり, +\LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは +\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし, +結果として\textbf{\XeTeX における初期設定と同じになるようにしている.} % -%\subsection{Shifting the baseline} -%\subsection{ベースラインの移動} -%<*en> -To make a match between a Japanese font and an alphabetic font, sometimes -shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved -by setting \cs{ybaselineshift} (or \cs{tbaselineshift}) to a non-zero length (the -baseline of \textbf{ALchar} is shifted below). However, for documents -whose main language is not Japanese, it is good to shift the baseline of -Japanese fonts, but not that of alphabetic fonts. -Because of this, \LuaTeX-ja can independently set the shifting amount -of the baseline of alphabetic fonts and that of Japanese fonts. -\begin{center} - \small -\begin{tabular}{>{\bfseries}lcc} +\begin{table} + \centering\small +%\caption{Difference of the set of non-kanji JIS~X~0208 characters which can be used in a control word} +%\caption{制御綴中に使用出来るJIS~X~0208非漢字の違い} +%\medskip +\label{tab:kcat-diff} +\def\D#1#2#3#4{% + {\fboxsep0pt\fcolorbox{cyan}{white}% + {\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})} %" +\leavevmode\hbox to 0pt{\hss\begin{tabular}{cccccc} \toprule -&\bfseries Horizontal writing (\emph{yoko} direction) etc. -&\bfseries Vertical writing(\emph{tate} direction)\\ +%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ +%&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ \midrule -Alphabetic fonts&\Param{yalbaselineshift} - parameter&\Param{talbaselineshift} parameter\\ -Japanese fonts&\Param{yjabaselineshift} - parameter&\Param{tjabaselineshift} parameter\\ +%\D 3000&1&1&N&N&Y\\ +\D 30FB&1&6&N&Y&N\\ +\D 309B&1&11&N&Y&N\\ +\D 309C&1&12&N&Y&N\\ +\D FF40&1&14&N&N&Y\\ +\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 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} -\end{center} -% -%<*ja> -和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が -必要になる.\pTeX ではこれは \cs{ybaselineshift}(または\cs{tbaselineshift})を設定することで -なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない -文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい. -このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量 -と和文フォントのベースラインのシフト量を独立に設定できるようになっている. -\begin{center} - \small -\begin{tabular}{>{\bfseries}lcc} +\end{tabular}\qquad +\begin{tabular}{cccccc} \toprule -&\bfseries 横組など&\bfseries 縦組\\ +%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ +%&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ \midrule -欧文フォントのシフト量&\Param{yalbaselineshift} - parameter&\Param{talbaselineshift} parameter\\ -和文フォントのシフト量&\Param{yjabaselineshift} - parameter&\Param{tjabaselineshift} parameter\\ +\D FF5C&1&35&N&N&Y\\ +\D FF0B&1&60&N&N&Y\\ +\D FF1D&1&65&N&N&Y\\ +\D FF1C&1&67&N&N&Y\\ +\D FF1E&1&68&N&N&Y\\ +\D FF03&1&84&N&N&Y\\ +\D FF06&1&85&N&N&Y\\ +\D FF0A&1&86&N&N&Y\\ +\D FF20&1&87&N&N&Y\\ +\D 3012&2&9&N&N&Y\\ +\D 3013&2&14&N&N&Y\\ +\D FFE2&2&44&N&N&Y\\ +\D 212B&2&82&N&N&Y\\ +%\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Greek letters (row 6)}&Y&N&Y\\ +%\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\\ \bottomrule -\end{tabular} -\end{center} -% +\end{tabular}\hss}\par +\end{table} %<*en> -Here the horizontal line in the below example is the baseline of a line. +\subsection{Non-kanji characters in a control word} +Because the engine differ, so non-kanji JIS~X~0208 characters +which can be used in a control word differ in \pTeX, in \upTeX,~and~in \LuaTeX-ja. +\autoref{tab:kcat-diff} shows the difference. +Except for four characters ``・'',~``゛'', ``゜'',~``゠'', +\LuaTeX-ja admits more characters in a control word than \upTeX. + +Difference becomes larger, if we consider +non-kanji JIS~X~0213 characters. +For the detail, see \url{https://github.com/h-kitagawa/kct}. % %<*ja> -下の例において引かれている水平線がベースラインである. -% -\begin{LTXexample} -\vrule width 150pt height 0.2pt depth 0.2pt \hskip-120pt -\ltjsetparameter{yjabaselineshift=0pt, yalbaselineshift=0pt}abcあいう -\ltjsetparameter{yjabaselineshift=5pt, yalbaselineshift=2pt}abcあいう -\end{LTXexample} +\subsection{制御綴中に使用出来るJIS非漢字の違い} -%<*en> -There is an interesting side-effect: characters in different size can be -vertically aligned center in a line, by setting two parameters appropriately. -The following is an example (beware the value is not well tuned): -% -%<*ja> -この機能には面白い使い方がある:2つのパラメータを適切に設定することで,サイズの -異なる文字を中心線に揃えることができる. -以下は一つの例である(値はあまり調整されていないことに注意): +エンジンが異なるので,\pTeX, \upTeX, \LuaTeX-ja +において制御綴中に使用可能なJIS~X~0208の文字は異なる. +異なっているところだけを載せると,\autoref{tab:kcat-diff}のようになる. +「・」「゛」「゜」「゠」を除けば,\LuaTeX-jaでは\upTeX より多くの文字が +制御綴に使用可能になっている. + +JIS~X~0213の範囲に広げると,差異はさらに大きくなる. +詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\ +\texttt{kct-out.pdf} などを参照すること. % -\begin{LTXexample}[width=0.4\textwidth] -\vrule width 150pt height4.417pt depth-4.217pt% -\kern-150pt -\large xyz漢字 -{\scriptsize - \ltjsetparameter{yjabaselineshift=-1.757pt, - yalbaselineshift=-1.757pt} - 漢字xyzあいう -}あいうabc -\end{LTXexample} -%<*en> -Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift} -parameters does not increase the depth of one-letter \emph{syllable} $p$ of \textbf{Alchar}, if -its left-protrusion~(\cs{lpcode}) and right-protrusion~(\cs{rpcode}) are both non-zero. -This is because -\begin{itemize} -\item These two parameters are implemented by setting \texttt{yoffset} field of a -glyph node, and this does not increase the depth of the glyph. -\item To cope with the above situation, \LuaTeX-ja automatically supplies -a rule in every syllable. -\item However, we cannot use this ``supplying a rule'' method if a syllable comprises just - one letter whose \cs{lpcode}~and~\cs{rpcode} are both non-zero. -\end{itemize} -This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift}, -becuse a \emph{JAchar} is encapsulated by a horizontal box if needed. +%<*en> +\section{Directions} +\LuaTeX\ supports four $\Omega$-style directions: \texttt{TLT},~\texttt{TRT}, \texttt{RTT} +and \texttt{LTL}. +However, neither directions are not well-suited for typesetting Japanese vertically, hence we +implemented vertical writing by rotating \texttt{TLT}-box by 90~degrees. % %<*ja> -なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意. -\begin{itemize} - \item \Param{yalbaselineshift},~\Param{talbaselineshift}パラメータが正になっている. - \item 「音節」を構成する唯一の文字$p$の -左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である. -\end{itemize} -\emph{JAchar}は必要に応じて1文字ずつボックスにカプセル化されるため, -\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない. +\section{縦組} +\label{sec-direction} +\LuaTeX 本体でも,$\Omega$・$\aleph$由来の機能として,複数の組方向をサポートしている. +しかし,\LuaTeX がサポートするのは \texttt{TLT},~\texttt{TRT}, \texttt{RTT},~\texttt{LTL}\ +のみであり,日本語の縦組に使うのは望ましくない\footnote{% +和文文字だけならば \texttt{RTT} を使えばなんとかなると思うが, +欧文文字が入ってきた場合はうまくいかず,\texttt{RTR} という組方向が必要になる. +}.そのため,\LuaTeX-jaでは横組(\texttt{TLT})で組んだボックスを回転させる方式で +縦組を実装した. % +%\subsection{サポートする組方向} +\begin{table}[t] +%\caption{\LuaTeX-ja のサポートする組方向} +%\caption{Directions supported by \LuaTeX-ja} +%\medskip +\label{tab-dir} +\centering\small +\def\obox#1{% + \setbox0=\hbox{\yoko\hbox{#1% + \large\ltjsetparameter{talbaselineshift=0pt}% + \vrule height 25pt width 0.4pt depth 15pt\kern-.2pt% + \raise25pt\hbox to 0pt{\hss\composite{*r^@{>>}}\hss}% + \raise-15pt\hbox to 0pt{\hss\composite{*l^@{>|}}\hss}\kern.2pt% + \vrule height.2pt depth.2pt width 60pt\hbox to 0pt{\hss\composite{*d^@{>}}\hss}\kern-60pt + \hbox to 60pt{\,銀は、Ag\hss}}}% + \raise\dimexpr 0.5\ltjgetdp0-0.5\ltjgetht0\box0% +} %<*ja> -\paragraph{数式における挙動:\pTeX との違い} -\textbf{ALchar}のベースラインを補正する\Param{yalbaselineshift}, \Param{talbaselineshift}パラメータは -ほぼ\pTeX における \cs{ybaselineshift}, \cs{tbaselineshift} に対応しているものであるが, -数式中の挙動は異なっているので注意が必要である. -例えば,\autoref{tab:math_bsa}のように,数式中に明示的に現れた \cs{hbox},~\cs{vbox} は,横組において -\begin{itemize} - \item 2015年以前の\pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので, - \autoref{tab:math_bsa}中の``い''のように,ボックス中の和文文字は - \ \cs{ybaselineshift} だけシフトされ,一方,``for all''のように, - ボックス内の欧文文字は2重にシフトされることになる. - \item 一方,\LuaTeX-jaではそのようなことはおこらず, - 数式中に明示的に現れた \cs{hbox},~\cs{vbox} はシフトしない.そのため, - \autoref{tab:math_bsa}中の``い''も``for all''も,それぞれ本文中に - 書かれたときと同じ上下位置に組まれる. - - なお,\TeX~Live~2016以降の\pTeX では改修がなされ,\LuaTeX-jaと - 近い挙動になるようにしているが,数式中に直に書かれた``あ''のベースラインについては - まだ違いが見られる. -\end{itemize} +\begin{tabular}{>{\bfseries}lcccc} +\toprule +&横組&縦組 &「dtou方向」&「utod方向」\\ +\midrule +命令&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\ +字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\ +行送り方向&垂直下向き(↓)&水平左向き(←)&水平右向き(→)&水平左向き(←)\\ +使用する和文フォント&横組用(\cs{jfont})&縦組用(\cs{tfont})& +\multicolumn{2}{c}{% + 横組用(\cs{jfont})の$90^\circ$回転}\\[\smallskipamount] +組版例\null $^*$ &\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\ +\noalign{\medskip} +\bottomrule +\end{tabular} -なお,20170401.0版以降の\LuaTeX-jaでは,\cs{vcenter} によるボックスには -全体が\Param{yalbaselineshift}, \Param{talbaselineshift} パラメータが反映されるようにしている. -その方が結果が自然であることによる変更なのだが,結果的に\cs{vcenter} については\pTeX と同じ挙動となった. +\medskip\raggedright +\def\R#1{% + \raise0.38\zw\hbox{% + \vrule height.2pt depth.2pt width2\zw% + \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}% + }% +} +$^*$\ 幅(width),高さ(height),深さ(depth)の増加方向を, +それぞれ「\R{>}」,「\R{>>}」,「\R{>|}」で表している. +\raggedright +% -\begin{table} -\small\centering -\caption{数式関係のベースライン補正($\Param{yalbaselineshift}=10\,\textrm{pt}$)} -\label{tab:math_bsa} -\newdimen\origbaselineskip -\origbaselineskip=\baselineskip -\begin{tabular}{lp{30\zw}} +%<*en> +\begin{tabular}{>{\bfseries}lcccc} \toprule -\emph{入力}&\vspace*{\dimexpr-\origbaselineskip-\smallskipamount} -\begin{lstlisting} -数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$, -$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ -\end{lstlisting}\\ -\noalign{\vskip-\origbaselineskip} +&horizontal (\emph{yoko}~direction)&vertical (\emph{tate}~direction)&% + \emph{dtou} direction&\emph{utod} direction\\ \midrule -\emph{\pTeX~(--2015)}& -{\ltjsetparameter{yalbaselineshift=10pt}% -数式abc: $\lower10pt\hbox{あ}a\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$, -$\Phi\vdash F(x)\ \lower10pt\hbox{for all}\ x\in A$ -\par}\\\noalign{\vskip-\origbaselineskip}\midrule -\emph{\pTeX~(2016--)}& -{\ltjsetparameter{yalbaselineshift=10pt}% -数式abc: $\lower10pt\hbox{あ}a\hbox{い}$, $\int_0^x t\,dt=x^2/2$, -$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ -\par}\\\noalign{\vskip-\origbaselineskip}\midrule -\emph{\LuaTeX-ja}& -{\ltjsetparameter{yalbaselineshift=10pt}% -数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$, -$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ -\par}\\ -\noalign{\vskip-\origbaselineskip} +Commands&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\ +Beginning of the page&Top&Right&Left&Right\\ +Beginning of the line&Left&Top&Bottom&Top\\ +Used Japanese font&horizontal (\cs{jfont})&vertical (\cs{tfont})& +\multicolumn{2}{c}{% + horizontal ($90^\circ$ rotated)}\\[\smallskipamount] +Example&\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\ +\noalign{\medskip} +(Notation used in $\Omega$)&TLT&RTR, RTT&LBL&RTR\\ \bottomrule \end{tabular} + +\medskip\raggedright +\def\R#1{% + \raise0.38\zw\hbox{% + \vrule height.2pt depth.2pt width2\zw% + \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}% + }% +} +\raggedright +% \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. +\LuaTeX-ja supports four directions, as shown in \autoref{tab-dir}. +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. +The fifth column (\emph{utod} direction) corresponds the ``\texttt{tate (math) direction}'' of \pTeX. -OpenType font features are ignored in these parameters. -For example, a fullwidth katakana ``ア'' on line~10 in the below input is replaced to -its halfwidth variant ``ア'', by \verb+hwid+ feature. -However, the penalty inserted after it is 10 which is the \Param{postbreakpenalty} of -``ア'', not 20. +Directions can be changed by \cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod}, +only when the current list is null. Also, the direction of a math formula is changed to +\emph{utod}, when the direction outside the math formula is \emph{tate} (vertical writing). % + %<*ja> -\subsection{禁則処理関連パラメータとOpenTypeのfont feature} -禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち -\begin{quote} - \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty}, - \Param{postbreakpenalty}, \Param{kcatcode} -\end{quote} -は,文字コードごとに設定する量である. +\LuaTeX-jaがサポートする組方向は\autoref{tab-dir}に示す4つである. +4列目の \cs{dtou} は聞き慣れない命令だと思うが, +実は\pTeX に同名の命令が(ドキュメントには書かれていないが)存在する. +Down-TO-Upの意味なのだろう.\cs{dtou} を使用する機会はないだろうが, +\LuaTeX-jaではデバッグ用に実装している. +5列目の \cs{utod} は,\pTeX で言う「縦数式ディレクション」に相当するものである. -\Pkg{fontspec}パッケージを使う(\ref{ssec-fontspec}節)場合など, -各種のOpenType featureを適用することもあると思うが,前段落に述べたパラメータ類は, -\emph{OpenType featureの適用前の文字コードによって適用される.} -例えば,以下の例において10行目の「ア」は,\verb+hwid+ featureの適用により半角カタカナの「ア」 -に置き換わる.しかし,その直後に挿入される \Param{postbreakpenalty}は,置換前の「ア」に対する値10である. +組方向は,\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} をそれぞれ使用することで, +現在作成中のリストやボックスが空の時にのみ変更可能である. +また,縦組中の数式内のボックスは\pTeX と同じように組方向が \cs{utod} となる. % -\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} +%<*en> +\subsection{Boxes in different direction} -\showpostpena{ア}, -\showpostpena{ア}, -{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ア}} +As in \pTeX, one can use boxes of different direction in one document. +The below is an example. +\begin{LTXexample} +ここは横組% yoko +\hbox{\tate % tate + \hbox{縦組}% tate + の中に + \hbox{\yoko 横組の内容}% yoko + を挿入する +} +また横組に戻る% yoko \end{LTXexample} -\clearpage -%\part{Reference} -%\part{リファレンス} -\label{part-ref} -\suppressfloats[t] +\autoref{tab-diffdir} shows how a box is arranged when +the direction inside the box and that outside the box differ. +% %<*ja> -\section{\LuaTeX-jaにおける \cs{catcode}} -\label{sec-catcode} -\subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}} -\pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか -は \cs{kcatcode} の値によって決定されるのであった. -詳細は\autoref{tab:kcat}を参照されたい. +\subsection{異方向のボックス} + +縦組の中に「42」などの2桁以上の算用数字を横組で組むなど, +異なる組方向を混在させることがしばしば行われる. +組方向の混在も\pTeX と同じようにできる: +\begin{LTXexample} +ここは横組% yoko +\hbox{\tate % tate + \hbox{縦組}% tate + の中に + \hbox{\yoko 横組の内容}% yoko + を挿入する +} +また横組に戻る% yoko +\end{LTXexample} + +異なる組方向のボックスを配置した場合にどう組まれるかの仕様も,\pTeX を +踏襲している.\autoref{tab-diffdir}に示す. % -%<*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. -For the detail, see \autoref{tab:kcat}. -% \begin{table}[t] -\small -\caption{\cs{kcatcode} in \upTeX} -\label{tab:kcat} +%\caption{異方向のボックスの配置} +%\caption{Boxes in different direction} %\medskip - -\noindent\hfill -\begin{tabular}{ccccc} +\label{tab-diffdir} + \centering\small\unitlength3mm + \def\TATEeg{% + \hbox{\smash{\begin{picture}(0,0)(-2,0) + \thicklines + \polyline(-2,0)(-2,-7)(5,-7)(5,0) + \put(0,0){\circle*{0.3}} + \put(2.5,-4){\makebox(0,0){\hbox{\tate\bfseries \emph{tate}/\emph{utod}}}} + \put(0,0){\vector(1,0){5}} \put(2.5,-0.2){\makebox(0,0)[t]{$h_{\mathrm{T}}$}} + \put(0,0){\vector(-1,0){2}}\put(-1,-0.2){\makebox(0,0)[t]{$d_{\mathrm{T}}$}} + \put(0,0){\vector(0,-1){7}}\put(0.2,-3.5){\makebox(0,0)[l]{$w_{\mathrm{T}}$}} + \end{picture}}}% + } + \def\DTOUeg{% + \hbox{\smash{\begin{picture}(0,0)(-5,0) + \thicklines + \polyline(-5,0)(-5,7)(2,7)(2,0) + \put(0,0){\circle*{0.3}} + \put(-2.5,4){\makebox(0,0){\hbox{\dtou\bfseries \emph{dtou}}}} + \put(0,0){\vector(-1,0){5}} \put(-2.5,0.3){\makebox(0,0)[b]{$h_{\mathrm{D}}$}} + \put(0,0){\vector(1,0){2}}\put(1,0.3){\makebox(0,0)[b]{$d_{\mathrm{D}}$}} + \put(0,0){\vector(0,1){7}}\put(-0.2,3.5){\makebox(0,0)[r]{$w_{\mathrm{D}}$}} + \end{picture}}}% + } + \def\YOKOeg{% + \hbox{\smash{\begin{picture}(0,0) + \thicklines + \polyline(0,5)(7,5)(7,-2)(0,-2) + \put(4,2.5){\makebox(0,0){\hbox{\yoko\bfseries \emph{yoko}}}} + \put(0,0){\circle*{0.3}} + \put(0,0){\vector(0,1){5}} \put(0.3,2.5){\makebox(0,0)[l]{$h_{\mathrm{Y}}$}} + \put(0,0){\vector(0,-1){2}}\put(0.3,-1){\makebox(0,0)[l]{$d_{\mathrm{Y}}$}} + \put(0,0){\vector(1,0){7}}\put(3.5,0.2){\makebox(0,0)[b]{$w_{\mathrm{Y}}$}} + \end{picture}}}% + } +\begin{tabular}{ccc} \toprule -\bfseries \cs{kcatcode}& -%<*en> -\bfseries meaning& -\bfseries control word& -\bfseries widow penalty& -\bfseries linebreak\\ -% -%<*ja> -\bfseries 意図& -\bfseries 制御綴中に使用& -\bfseries 文字ウィドウ処理& -\bfseries 直後での改行\\ -% +%\emph{横組中に配置}&\emph{縦組中に配置}&% +%\emph{組方向 \cs{dtou} 中に配置}\\ +%\textbf{typeset in \emph{yoko} direction} +%&\textbf{typeset in \emph{tate} or \emph{utod} direction} +%&\textbf{typeset in \emph{dtou} direction}\\ \midrule -15&non-cjk&\multicolumn{3}{c}{(treated as usual \LaTeX)}\\ -16&kanji&Y&Y&ignored\\ -17&kana&Y&Y&ignored\\ -18&other&N&N&ignored\\ -19&hangul&Y&Y&space\\ + \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) + \put(0,0){\line(1,0){3.8}} + \put(4,7){\TATEeg} + \put(11.2,0){\line(1,0){3.8}} +% + \put(2,7){\line(1,0){1.8}} + \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}} + \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}} + \put(3,-2){\vector(0,1){2}} + \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}} +% + \put(4,7.2){\line(0,1){1.8}} + \put(11,7.2){\line(0,1){1.8}} + \put(6,8){\vector(-1,0){2}} + \put(9,8){\vector(1,0){2}} + \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}} +% + \end{picture}\vspace{-\baselineskip} + \begin{align*} + W_{\mathrm{Y}} &= h_{\mathrm{T}}+d_{\mathrm{T}},\\ + H_{\mathrm{Y}} &= w_{\mathrm{T}},\\ + D_{\mathrm{Y}} &=0\,\mathrm{pt} + \end{align*}% + }& + \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) + \put(7.5,-0.2){\line(0,-1){2.8}} + \put(4,2){\YOKOeg} + \put(7.5, 7.2){\line(0,1){3.8}} +% + \put(2,7){\line(1,0){1.8}} + \put(2,0){\line(1,0){1.8}} + \put(3,5){\vector(0,1){2}} + \put(3,2){\vector(0,-1){2}} + \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}} +% + \put(4,7.2){\line(0,1){1.8}} + \put(11,7.2){\line(0,1){1.8}} + \put(8,8){\vector(-1,0){0.5}\vector(1,0){3}} + \put(7,8){\vector(-1,0){3}\vector(1,0){0.5}} + \put(9.25,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}} + \put(5.75,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}} +% + \end{picture}\vspace{-\baselineskip} + \begin{align*} + W_{\mathrm{T}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\ + H_{\mathrm{T}} &= w_{\mathrm{Y}}/2,\\ + D_{\mathrm{T}} &= w_{\mathrm{Y}}/2 + \end{align*}% + }& + \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) + \put(11,-0.2){\line(0,-1){2.8}} + \put(4,2){\YOKOeg} + \put(11, 7.2){\line(0,1){3.8}} +% + \put(2,7){\line(1,0){1.8}} + \put(2,0){\line(1,0){1.8}} + \put(3,5){\vector(0,1){2}} + \put(3,2){\vector(0,-1){2}} + \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}} +% + \put(4,7.2){\line(0,1){1.8}} + \put(11,7.2){\line(0,1){1.8}} + \put(7.5,8){\vector(-1,0){3.5}\vector(1,0){3.5}} + \put(13,8){\vector(-1,0){2}} + \put(7.5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}} + \put(12,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}} +% + \end{picture}\vspace{-\baselineskip} + \begin{align*} + W_{\mathrm{D}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\ + H_{\mathrm{D}} &= w_{\mathrm{Y}},\\ + D_{\mathrm{D}} &= 0\,\mathrm{pt} + \end{align*}% + }% +\\\midrule + \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) + \put(0,0){\line(1,0){3.8}} + \put(4,0){\DTOUeg} + \put(11.2,0){\line(1,0){3.8}} +% + \put(2,7){\line(1,0){1.8}} + \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}} + \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}} + \put(3,-2){\vector(0,1){2}} + \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}} +% + \put(4,7.2){\line(0,1){1.8}} + \put(11,7.2){\line(0,1){1.8}} + \put(6,8){\vector(-1,0){2}} + \put(9,8){\vector(1,0){2}} + \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}} +% + \end{picture}\vspace{-\baselineskip} + \begin{align*} + W_{\mathrm{Y}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\ + H_{\mathrm{Y}} &= w_{\mathrm{D}},\\ + D_{\mathrm{Y}} &= 0\,\mathrm{pt} + \end{align*}% + }& + \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) + \put(9,-0.2){\line(0,-1){2.8}} + \put(4,0){\DTOUeg} + \put(9, 7.2){\line(0,1){3.8}} +% + \put(2,7){\line(1,0){1.8}} + \put(2,0){\line(1,0){1.8}} + \put(3,5){\vector(0,1){2}} + \put(3,2){\vector(0,-1){2}} + \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}} +% + \put(4,7.2){\line(0,1){1.8}} + \put(11,7.2){\line(0,1){1.8}} + \put(6.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}} + \put(10,8){\vector(-1,0){1}\vector(1,0){1}} + \put(10,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}} + \put(6.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}} +% + \end{picture}\vspace{-\baselineskip} + \begin{align*} + W_{\mathrm{T}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\ + H_{\mathrm{T}} &= d_{\mathrm{D}},\\ + D_{\mathrm{T}} &= h_{\mathrm{D}} + \end{align*}% + }& + \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) + \put(6,-0.2){\line(0,-1){2.8}} + \put(4,7){\TATEeg} + \put(6, 7.2){\line(0,1){3.8}} +% + \put(2,7){\line(1,0){1.8}} + \put(2,0){\line(1,0){1.8}} + \put(3,5){\vector(0,1){2}} + \put(3,2){\vector(0,-1){2}} + \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}} +% + \put(4,7.2){\line(0,1){1.8}} + \put(11,7.2){\line(0,1){1.8}} + \put(5,8){\vector(-1,0){1}\vector(1,0){1}} + \put(8.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}} + \put(5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}} + \put(8.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}} +% + \end{picture}\vspace{-\baselineskip} + \begin{align*} + W_{\mathrm{D}} &= w_{\mathrm{T}},\\ + H_{\mathrm{D}} &= d_{\mathrm{T}},\\ + D_{\mathrm{D}} &= h_{\mathrm{T}} + \end{align*}% + }\\ \bottomrule -\end{tabular}\hfill\null +\end{tabular} +\end{table} -\medskip -%<*ja> -文字ウィドウ処理:「漢字が一文字だけ次の行に行くのを防ぐ」 -\cs{jcharwidowpenalty} が, -その文字の直前に挿入されうるか否か,を示す. -% -\end{table} %<*en> -\cs{kcatcode} can be set by a row of JIS~X~0208 in \pTeX, -and generally by a Unicode block\footnote{% - \upTeX\ divides \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms) - into three subblocks, and \cs{kcatcode} can be set by a subblock. -} -in \upTeX. So characters which can be used in a control word -slightly differ between \pTeX~and~\upTeX. -% -%<*ja> -\pTeX では \cs{kcatcode} はJIS~X~0208の区単位, -\upTeX では概ねUnicodeブロック単位\footnote{% - \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)は - 「全角英数字」「半角カナ」「その他」と3つに分割されており, - それぞれ別々に \cs{kcatcode} が指定できるようになっている. -}で設定可能になっている.そのため,\pTeX と\upTeX の初期状態では -制御綴内で使用可能な文字が微妙に異なっている. -% +\paragraph{\cs{wd} and direction} +In \pTeX, \cs{wd},~\cs{ht},~\cs{dp} means the dimensions of a box register +\emph{with respact to the current direction}. +This means that the value of \cs{wd0} etc.\ might differ when the current direction is +different, even if \cs{box0} stores the same box. +However, this no longer applies in \LuaTeX-ja. -%<*en> -\subsection{Case of \LuaTeX-ja} -The role of \cs{kcatcode} in \pTeX~and~\upTeX\ can be -divided into the following four kinds, -and \LuaTeX-ja can control these four kinds separately: -\begin{itemize} - \item -\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}} -is controlled by the character range, see Subsection~\ref{ssec-setrange}. - \item -\emph{Whether the character can be used in a control word} -is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual. - \item -\emph{Whether \Param{jcharwidowpenalty} can be inserted before the character} -is controlled by the lowermost bit of the \Param{kcatcode} parameter. - \item -\emph{Linebreak after a \textbf{JAchar}} does not produce a space. -\end{itemize} -% -%<*ja> -\subsection{\LuaTeX-jaの場合} -\LuaTeX-jaでは,従来の\pTeX・\upTeX における \cs{kcatcode} の役割を -分割している: -\begin{description} - \item[欧文/和文の区別 (\upTeX)] -\cs{ltjdefcharrange} と\textsf{jacharrange}パラメータ(\ref{ssec-setrange}節) - \item[制御綴中に使用可か] -\LuaTeX 自身の \cs{catcode} でよい - \item[\Param{jcharwidowpenalty}が挿入可か] -\Param{kcatcode}パラメータの最下位ビット - \item[直後の改行] -日本語しか想定していないので,\textbf{JAchar}直後の改行で半角スペースが挿入されることはない. -\end{description} -% +\begin{LTXexample} +% yoko direction +\setbox0=\hbox to 20pt{foo} +\the\wd0,~\hbox{\tate\vrule\the\wd0} +\wd0=100pt +\the\wd0,~\hbox{\tate \the\wd0} +\end{LTXexample} -%<*en> -Default setting of \cs{catcode} of Unicode characters are located in -\begin{description} - \item[plain \LuaTeX] \texttt{luatex-unicode-letters.tex}, which is based on \texttt{unicode-letters.tex} -(for \XeTeX). - \item[\LuaLaTeX] now included in \LaTeX\ kernel as~\texttt{unicode-letters.def}. -\end{description} -However, the default setting of \cs{catcode} differs -between \XeTeX\ and \LuaTeX, by the following reasons: -\begin{itemize} - \item (plain format) \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}. - \item The latter half of \texttt{unicode-letters.tex}~and~\texttt{unicode-letters.def} -sets\cs{catcode} of several characters to 11, via setting \cs{XeTeXcharclass}. -However, this latter half does not exist (plain case), or not executed (\LaTeX~case) in \LuaTeX. -\end{itemize} -In other words, -\begin{description} -\item[plain \LuaTeX] -Kanji nor kana characters cannot be used in -a control word, in the default setting of plain \LuaTeX. -\item[\LuaLaTeX] -In recent (2015-10-01 or later) \LuaLaTeX, Kanji and kana characters in a control word is supported (these catcode are 11), -but not fullwidth alphanumerics and several other characters. -\end{description} +To access box dimensions \emph{with respect to current direction}, +one have to use the following commands instead of \cs{wd} wtc. +\begin{cslist} -This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja, -since several control words containing Kanji or other fullwidth characters, such as -\verb+\西暦+~or~\verb+\1年目西暦+ are used in \pTeX. -Hence, \LuaTeX-ja have a counterpart of \texttt{unicode-letters.tex} -for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} + \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\ltjgetwd42-3pt\relax, \the\ltjgetwd1701 +\end{lstlisting} +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\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} +\vbox{\hsize=20mm\raggedleft +\tate TATE \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} +\vbox{\hsize=20mm\raggedleft +\dtou DTOU \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} +\end{LTXexample} + + \item[\cs{ltjsetwd}=\textrm{, }\cs{ltjsetht}=\textrm{, }% + \cs{ltjsetdp}=] +These commands set the dimension of \cs{box}. One does not need + to group the argument ; four calls of \cs{ltjsetwd} below have the same meaning. +\begin{lstlisting} +\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt +\end{lstlisting} + +\end{cslist} % %<*ja> -ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では, -文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode} -で指定することとなる.plain \XeTeX における \cs{catcode} の初期設定は\ -\texttt{unicode-letters.tex} 中に記述されており,plain \LuaTeX ではそれを -元にした \texttt{luatex-unicode-letters.tex} を用いている. -\LaTeX では \cs{catcode} の設定はカーネルに \texttt{unicode-letters.def} として統合され. -このファイルを\XeLaTeX, \LuaLaTeX の両方が用いている. +\paragraph{\cs{wd} 達と組方向} +ボックスレジスタ \cs{box} にセットされているボックスの幅・高さ・深さの取得や +変更にはそれぞれ \cs{wd},~\cs{ht},~\cs{dp} プリミティブを用いるのであった. +\pTeX ではこれらのプリミティブは,「現在の組方向におけるボックスの寸法」を指すもので, +同じボックスに対しても現在の組方向によって返る値は異なるもであった. -だが,\XeTeX における \cs{catcode} の初期設定と -\LuaTeX におけるそれは一致していない: -\begin{itemize} - \item \texttt{luatex-unicode-letters.tex} の元になった\ -\texttt{unicode-letters.tex} が古い - \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では -\cs{XeTeXcharclass} の設定を行なっており, -それによって漢字や仮名,および全角英数字の \cs{catcode} が11に設定されている. -しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が -まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな - い. -\end{itemize} -言い換えると, -\begin{description} - \item[plain \LuaTeX] 漢字や仮名を制御綴内に -使用することはできない. - \item[\LuaLaTeX] 最近の(2015-10-01以降の) -\LuaLaTeX では漢字や仮名を制御綴内に -使用することが可能になったが,全角英数字は相変わらず使用できない, -\end{description} -これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり, -\LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは -\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし, -結果として\textbf{\XeTeX における初期設定と同じになるようにしている.} -% +\LuaTeX-jaにおいては状況が異なり,\cs{wd},~\cs{ht},~\cs{dp} が返す値は +現在の組方向には依存しない.下の例のように,横組のボックスが格納されていれば +\cs{wd}等は常に「横組におけるボックスの寸法」を意味する. -\begin{table} - \centering\small -%\caption{Difference of the set of non-kanji JIS~X~0208 characters which can be used in a control word} -%\caption{制御綴中に使用出来るJIS~X~0208非漢字の違い} -%\medskip -\label{tab:kcat-diff} -\def\D#1#2#3#4{% - {\fboxsep0pt\fcolorbox{cyan}{white}% - {\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})} %" -\leavevmode\hbox to 0pt{\hss\begin{tabular}{cccccc} -\toprule -%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ -%&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ -\midrule -%\D 3000&1&1&N&N&Y\\ -\D 30FB&1&6&N&Y&N\\ -\D 309B&1&11&N&Y&N\\ -\D 309C&1&12&N&Y&N\\ -\D FF40&1&14&N&N&Y\\ -\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 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} -\toprule -%&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ -%&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ -\midrule -\D FF5C&1&35&N&N&Y\\ -\D FF0B&1&60&N&N&Y\\ -\D FF1D&1&65&N&N&Y\\ -\D FF1C&1&67&N&N&Y\\ -\D FF1E&1&68&N&N&Y\\ -\D FF03&1&84&N&N&Y\\ -\D FF06&1&85&N&N&Y\\ -\D FF0A&1&86&N&N&Y\\ -\D FF20&1&87&N&N&Y\\ -\D 3012&2&9&N&N&Y\\ -\D 3013&2&14&N&N&Y\\ -\D FFE2&2&44&N&N&Y\\ -\D 212B&2&82&N&N&Y\\ -%\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Greek letters (row 6)}&Y&N&Y\\ -%\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\\ -\bottomrule -\end{tabular}\hss}\par -\end{table} +\begin{LTXexample} +% yoko direction +\setbox0=\hbox to 20pt{foo} +\the\wd0,~\hbox{\tate\vrule\the\wd0} +\wd0=100pt +\the\wd0,~\hbox{\tate \the\wd0} +\end{LTXexample} -%<*en> -\subsection{Non-kanji characters in a control word} -Because the engine differ, so non-kanji JIS~X~0208 characters -which can be used in a control word differ in \pTeX, in \upTeX,~and~in \LuaTeX-ja. -\autoref{tab:kcat-diff} shows the difference. -Except for four characters ``・'',~``゛'', ``゜'',~``゠'', -\LuaTeX-ja admits more characters in a control word than \upTeX. +\pTeX のように現在の組方向に応じたボックスの寸法の取得・設定を行うには, +代わりに次の命令を使用する. -Difference becomes larger, if we consider -non-kanji JIS~X~0213 characters. -For the detail, see \url{https://github.com/h-kitagawa/kct}. -% -%<*ja> -\subsection{制御綴中に使用出来るJIS非漢字の違い} +\begin{cslist} -エンジンが異なるので,\pTeX, \upTeX, \LuaTeX-ja -において制御綴中に使用可能なJIS~X~0208の文字は異なる. -異なっているところだけを載せると,\autoref{tab:kcat-diff}のようになる. -「・」「゛」「゜」「゠」を除けば,\LuaTeX-jaでは\upTeX より多くの文字が -制御綴に使用可能になっている. + \item[\cs{ltjgetwd}\textrm{, }\cs{ltjgetht}\textrm{, }% + \cs{ltjgetdp}] +現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため, +\begin{lstlisting} +\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701 +\end{lstlisting} +のように \cs{wd} の代わりとして扱うことができる. +使用例は以下の通りである. +\begin{LTXexample}[width=0.3\textwidth] +\parindent0pt +\setbox32767=\hbox{\yoko よこぐみ} +\fboxsep=0mm\fbox{\copy32767} +\vbox{\hsize=20mm +\yoko YOKO \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} +\vbox{\hsize=20mm\raggedleft +\tate TATE \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} +\vbox{\hsize=20mm\raggedleft +\dtou DTOU \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} +\end{LTXexample} -JIS~X~0213の範囲に広げると,差異はさらに大きくなる. -詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\ -\texttt{kct-out.pdf} などを参照すること. -% + \item[\cs{ltjsetwd}=\textrm{, }\cs{ltjsetht}=\textrm{, }% + \cs{ltjsetdp}=] +現在の組方向に応じたボックスの寸法の設定を行う.\cs{afterassignment} を2回利用して +実装しているので,次の4通りは全て同じ意味である. +\begin{lstlisting} +\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt +\end{lstlisting} +設定値は「横組」「縦組及びutod方向」「dtou方向」 +の3種ごとに独立して記録される.参考として,Gitリポジトリ内の + \verb+test/test55-boxdim_diffdir.{tex,pdf}+ を挙げておく. -%<*en> -\section{Directions} -\LuaTeX\ supports four $\Omega$-style directions: \texttt{TLT},~\texttt{TRT}, \texttt{RTT} -and \texttt{LTL}. -However, neither directions are not well-suited for typesetting Japanese vertically, hence we -implemented vertical writing by rotating \texttt{TLT}-box by 90~degrees. -% -%<*ja> -\section{縦組} -\label{sec-direction} -\LuaTeX 本体でも,$\Omega$・$\aleph$由来の機能として,複数の組方向をサポートしている. -しかし,\LuaTeX がサポートするのは \texttt{TLT},~\texttt{TRT}, \texttt{RTT},~\texttt{LTL}\ -のみであり,日本語の縦組に使うのは望ましくない\footnote{% -和文文字だけならば \texttt{RTT} を使えばなんとかなると思うが, -欧文文字が入ってきた場合はうまくいかず,\texttt{RTR} という組方向が必要になる. -}.そのため,\LuaTeX-jaでは横組(\texttt{TLT})で組んだボックスを回転させる方式で -縦組を実装した. +\end{cslist} % -%\subsection{サポートする組方向} -\begin{table}[t] -%\caption{\LuaTeX-ja のサポートする組方向} -%\caption{Directions supported by \LuaTeX-ja} -%\medskip -\label{tab-dir} -\centering\small -\def\obox#1{% - \setbox0=\hbox{\yoko\hbox{#1% - \large\ltjsetparameter{talbaselineshift=0pt}% - \vrule height 25pt width 0.4pt depth 15pt\kern-.2pt% - \raise25pt\hbox to 0pt{\hss\composite{*r^@{>>}}\hss}% - \raise-15pt\hbox to 0pt{\hss\composite{*l^@{>|}}\hss}\kern.2pt% - \vrule height.2pt depth.2pt width 60pt\hbox to 0pt{\hss\composite{*d^@{>}}\hss}\kern-60pt - \hbox to 60pt{\,銀は、Ag\hss}}}% - \raise\dimexpr 0.5\ltjgetdp0-0.5\ltjgetht0\box0% -} -%<*ja> -\begin{tabular}{>{\bfseries}lcccc} +%<*en> +\subsection{Getting current direction} +The \Param{direction} parameter returns the current direction, and +the \Param{boxdir} parameter (with the argument ) +returns the direction of a box register \cs{box}. +The returned value of these parameters are a \emph{string}: +\begin{center} +\small +\begin{tabular}{>{\bfseries}lccccc} \toprule -&横組&縦組 &「dtou方向」&「utod方向」\\ +Direction&\emph{yoko}&\emph{tate}&\emph{dtou}&\emph{utod}&(empty)\\ \midrule -命令&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\ -字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\ -行送り方向&垂直下向き(↓)&水平左向き(←)&水平右向き(→)&水平左向き(←)\\ -使用する和文フォント&横組用(\cs{jfont})&縦組用(\cs{tfont})& -\multicolumn{2}{c}{% - 横組用(\cs{jfont})の$90^\circ$回転}\\[\smallskipamount] -組版例\null $^*$ &\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\ -\noalign{\medskip} +Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\ \bottomrule \end{tabular} +\end{center} +\begin{LTXexample}[width=0.3\textwidth] +\leavevmode\def\DIR{\ltjgetparameter{direction}} +\hbox{\yoko \DIR}, \hbox{\tate\DIR}, +\hbox{\dtou\DIR}, \hbox{\utod\DIR}, +\hbox{\tate$\hbox{tate math: \DIR}$} -\medskip\raggedright -\def\R#1{% - \raise0.38\zw\hbox{% - \vrule height.2pt depth.2pt width2\zw% - \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}% - }% -} -$^*$\ 幅(width),高さ(height),深さ(depth)の増加方向を, -それぞれ「\R{>}」,「\R{>>}」,「\R{>|}」で表している. -\raggedright -% +\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2} +\end{LTXexample} +% +%<*ja> +\subsection{組方向の取得} +「現在の組方向」や「番のボックスの組方向」は, +\pTeX では \cs{ifydir} や \cs{ifybox} といった条件判断文を使って +判断することができた. +しかし,\LuaTeX-jaはあくまでも\TeX マクロとLuaコードで +記述されており,それでは新たな条件判断命令を作るのは難しい. -%<*en> -\begin{tabular}{>{\bfseries}lcccc} +\LuaTeX-jaでは,\Param{direction}パラメータで現在の組方向を, +\Param{boxdir}パラメータ(と追加の引数)によって +\cs{box}の組方向をそれぞれ取得できるようにした. +戻り値は文字列である: +\begin{center} +\small +\begin{tabular}{>{\bfseries}lccccc} \toprule -&horizontal (\emph{yoko}~direction)&vertical (\emph{tate}~direction)&% - \emph{dtou} direction&\emph{utod} direction\\ +組方向&\emph{横組}&\emph{tate縦組}&\emph{dtou方向}&\emph{utod方向}&(未割り当て)\\ \midrule -Commands&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\ -Beginning of the page&Top&Right&Left&Right\\ -Beginning of the line&Left&Top&Bottom&Top\\ -Used Japanese font&horizontal (\cs{jfont})&vertical (\cs{tfont})& -\multicolumn{2}{c}{% - horizontal ($90^\circ$ rotated)}\\[\smallskipamount] -Example&\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\ -\noalign{\medskip} -(Notation used in $\Omega$)&TLT&RTR, RTT&LBL&RTR\\ +戻り値&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\ \bottomrule \end{tabular} +\end{center} -\medskip\raggedright -\def\R#1{% - \raise0.38\zw\hbox{% - \vrule height.2pt depth.2pt width2\zw% - \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}% - }% -} -\raggedright -% -\end{table} +\begin{LTXexample}[width=0.3\textwidth] +\leavevmode\def\DIR{\ltjgetparameter{direction}} +\hbox{\yoko\DIR}, \hbox{\tate\DIR}, +\hbox{\dtou\DIR}, \hbox{\utod\DIR}, +\hbox{\tate$\hbox{tate math: \DIR}$} -%<*en> -\LuaTeX-ja supports four directions, as shown in \autoref{tab-dir}. -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. -The fifth column (\emph{utod} direction) corresponds the ``\texttt{tate (math) direction}'' of \pTeX. +\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2} +\end{LTXexample} -Directions can be changed by \cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod}, -only when the current list is null. Also, the direction of a math formula is changed to -\emph{utod}, when the direction outside the math formula is \emph{tate} (vertical writing). -% +これらを用いれば,例えば +\pTeX の \cs{ifydir},~\cs{ifybox200} と同等の条件判断を +\begin{lstlisting} +\ifnum\ltjgetparameter{direction}=4 +\ifnum\ltjgetparameter{boxdir}{200}=4 +\end{lstlisting} +のように行うことができる. +\cs{iftdir} は少々面倒であるが,8で割った余りが3であるか否かを判断すれば良いから +\begin{lstlisting} +\ifnum\numexpr + \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3 +\end{lstlisting} +とすればよい. +% +%<*en> +\subsection{Overridden box primitives} +To cope with multiple directions, the following primitives are +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{vcenter}] +\end{cslist} +% %<*ja> -\LuaTeX-jaがサポートする組方向は\autoref{tab-dir}に示す4つである. -4列目の \cs{dtou} は聞き慣れない命令だと思うが, -実は\pTeX に同名の命令が(ドキュメントには書かれていないが)存在する. -Down-TO-Upの意味なのだろう.\cs{dtou} を使用する機会はないだろうが, -\LuaTeX-jaではデバッグ用に実装している. -5列目の \cs{utod} は,\pTeX で言う「縦数式ディレクション」に相当するものである. +\subsection{プリミティブの再定義} +異なる組方向に対応するために,以下に挙げるプリミティブは +\LuaTeX-jaによる前処理もしくは後処理が行われるように +\ \verb+\protected\def+ により再定義してある. -組方向は,\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} をそれぞれ使用することで, -現在作成中のリストやボックスが空の時にのみ変更可能である. -また,縦組中の数式内のボックスは\pTeX と同じように組方向が \cs{utod} となる. +\begin{cslist} + \item[\cs{unhbox}\textrm{, }\cs{unvbox}\textrm{, }\cs{unhcopy}\textrm{, }\cs{unvcopy}] + ボックスの組方向が現在のリストと異なる場合は事前にエラーメッセージを出力する. + \pTeX と異なり,エラーを無視して無理矢理 \cs{unhbox}, \cs{unvbox} を + 続行させることもできるが,その場合の組版結果は保証しない. + \item[\cs{vadjust}\{\}] 一旦プリミティブ本来の挙動を行う.その後,の組方向が + 周囲の垂直リストの組方向と一致しない場合にエラーを出力し, + 該当の \cs{vadjust} を無効にする. + \item[\cs{insert}\{\}] + 一旦プリミティブ本来の挙動を行い,その後内の各ボックス・罫線の直前に組方向を示 + すdirection whatsitを挿入する. + \item[\cs{lastbox}] ボックスの「中身」を現在の組方向に合わせるためのノード + (\textit{dir\_box}という)を必要ならば除去し, + 正しく「中身」のボックスが返されるように前処理をする. + \item[\cs{raise}\textrm{, }\cs{lower}\textrm{\ etc., }\cs{vcenter}] + 一方,こちらでは必要に応じて\textit{dir\_box}を作成する前処理を追加している. +\end{cslist} % -%<*en> -\subsection{Boxes in different direction} - -As in \pTeX, one can use boxes of different direction in one document. -The below is an example. -\begin{LTXexample} -ここは横組% yoko -\hbox{\tate % tate - \hbox{縦組}% tate - の中に - \hbox{\yoko 横組の内容}% yoko - を挿入する -} -また横組に戻る% yoko -\end{LTXexample} +%\section{Font Metric and Japanese Font} +%\section{フォントメトリックと和文フォント} +%\subsection{\cs{jfont}} +%\subsection{\cs{jfont} 命令} +\label{ssec-jfont} -\autoref{tab-diffdir} shows how a box is arranged when -the direction inside the box and that outside the box differ. -% -%<*ja> -\subsection{異方向のボックス} - -縦組の中に「42」などの2桁以上の算用数字を横組で組むなど, -異なる組方向を混在させることがしばしば行われる. -組方向の混在も\pTeX と同じようにできる: -\begin{LTXexample} -ここは横組% yoko -\hbox{\tate % tate - \hbox{縦組}% tate - の中に - \hbox{\yoko 横組の内容}% yoko - を挿入する -} -また横組に戻る% yoko -\end{LTXexample} - -異なる組方向のボックスを配置した場合にどう組まれるかの仕様も,\pTeX を -踏襲している.\autoref{tab-diffdir}に示す. -% - -\begin{table}[t] -%\caption{異方向のボックスの配置} -%\caption{Boxes in different direction} -%\medskip -\label{tab-diffdir} - \centering\small\unitlength3mm - \def\TATEeg{% - \hbox{\smash{\begin{picture}(0,0)(-2,0) - \thicklines - \polyline(-2,0)(-2,-7)(5,-7)(5,0) - \put(0,0){\circle*{0.3}} - \put(2.5,-4){\makebox(0,0){\hbox{\tate\bfseries \emph{tate}/\emph{utod}}}} - \put(0,0){\vector(1,0){5}} \put(2.5,-0.2){\makebox(0,0)[t]{$h_{\mathrm{T}}$}} - \put(0,0){\vector(-1,0){2}}\put(-1,-0.2){\makebox(0,0)[t]{$d_{\mathrm{T}}$}} - \put(0,0){\vector(0,-1){7}}\put(0.2,-3.5){\makebox(0,0)[l]{$w_{\mathrm{T}}$}} - \end{picture}}}% - } - \def\DTOUeg{% - \hbox{\smash{\begin{picture}(0,0)(-5,0) - \thicklines - \polyline(-5,0)(-5,7)(2,7)(2,0) - \put(0,0){\circle*{0.3}} - \put(-2.5,4){\makebox(0,0){\hbox{\dtou\bfseries \emph{dtou}}}} - \put(0,0){\vector(-1,0){5}} \put(-2.5,0.3){\makebox(0,0)[b]{$h_{\mathrm{D}}$}} - \put(0,0){\vector(1,0){2}}\put(1,0.3){\makebox(0,0)[b]{$d_{\mathrm{D}}$}} - \put(0,0){\vector(0,1){7}}\put(-0.2,3.5){\makebox(0,0)[r]{$w_{\mathrm{D}}$}} - \end{picture}}}% - } - \def\YOKOeg{% - \hbox{\smash{\begin{picture}(0,0) - \thicklines - \polyline(0,5)(7,5)(7,-2)(0,-2) - \put(4,2.5){\makebox(0,0){\hbox{\yoko\bfseries \emph{yoko}}}} - \put(0,0){\circle*{0.3}} - \put(0,0){\vector(0,1){5}} \put(0.3,2.5){\makebox(0,0)[l]{$h_{\mathrm{Y}}$}} - \put(0,0){\vector(0,-1){2}}\put(0.3,-1){\makebox(0,0)[l]{$d_{\mathrm{Y}}$}} - \put(0,0){\vector(1,0){7}}\put(3.5,0.2){\makebox(0,0)[b]{$w_{\mathrm{Y}}$}} - \end{picture}}}% - } -\begin{tabular}{ccc} -\toprule -%\emph{横組中に配置}&\emph{縦組中に配置}&% -%\emph{組方向 \cs{dtou} 中に配置}\\ -%\textbf{typeset in \emph{yoko} direction} -%&\textbf{typeset in \emph{tate} or \emph{utod} direction} -%&\textbf{typeset in \emph{dtou} direction}\\ -\midrule - \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) - \put(0,0){\line(1,0){3.8}} - \put(4,7){\TATEeg} - \put(11.2,0){\line(1,0){3.8}} -% - \put(2,7){\line(1,0){1.8}} - \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}} - \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}} - \put(3,-2){\vector(0,1){2}} - \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}} -% - \put(4,7.2){\line(0,1){1.8}} - \put(11,7.2){\line(0,1){1.8}} - \put(6,8){\vector(-1,0){2}} - \put(9,8){\vector(1,0){2}} - \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}} -% - \end{picture}\vspace{-\baselineskip} - \begin{align*} - W_{\mathrm{Y}} &= h_{\mathrm{T}}+d_{\mathrm{T}},\\ - H_{\mathrm{Y}} &= w_{\mathrm{T}},\\ - D_{\mathrm{Y}} &=0\,\mathrm{pt} - \end{align*}% - }& - \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) - \put(7.5,-0.2){\line(0,-1){2.8}} - \put(4,2){\YOKOeg} - \put(7.5, 7.2){\line(0,1){3.8}} -% - \put(2,7){\line(1,0){1.8}} - \put(2,0){\line(1,0){1.8}} - \put(3,5){\vector(0,1){2}} - \put(3,2){\vector(0,-1){2}} - \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}} -% - \put(4,7.2){\line(0,1){1.8}} - \put(11,7.2){\line(0,1){1.8}} - \put(8,8){\vector(-1,0){0.5}\vector(1,0){3}} - \put(7,8){\vector(-1,0){3}\vector(1,0){0.5}} - \put(9.25,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}} - \put(5.75,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}} -% - \end{picture}\vspace{-\baselineskip} - \begin{align*} - W_{\mathrm{T}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\ - H_{\mathrm{T}} &= w_{\mathrm{Y}}/2,\\ - D_{\mathrm{T}} &= w_{\mathrm{Y}}/2 - \end{align*}% - }& - \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) - \put(11,-0.2){\line(0,-1){2.8}} - \put(4,2){\YOKOeg} - \put(11, 7.2){\line(0,1){3.8}} -% - \put(2,7){\line(1,0){1.8}} - \put(2,0){\line(1,0){1.8}} - \put(3,5){\vector(0,1){2}} - \put(3,2){\vector(0,-1){2}} - \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}} -% - \put(4,7.2){\line(0,1){1.8}} - \put(11,7.2){\line(0,1){1.8}} - \put(7.5,8){\vector(-1,0){3.5}\vector(1,0){3.5}} - \put(13,8){\vector(-1,0){2}} - \put(7.5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}} - \put(12,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}} -% - \end{picture}\vspace{-\baselineskip} - \begin{align*} - W_{\mathrm{D}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\ - H_{\mathrm{D}} &= w_{\mathrm{Y}},\\ - D_{\mathrm{D}} &= 0\,\mathrm{pt} - \end{align*}% - }% -\\\midrule - \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) - \put(0,0){\line(1,0){3.8}} - \put(4,0){\DTOUeg} - \put(11.2,0){\line(1,0){3.8}} -% - \put(2,7){\line(1,0){1.8}} - \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}} - \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}} - \put(3,-2){\vector(0,1){2}} - \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}} -% - \put(4,7.2){\line(0,1){1.8}} - \put(11,7.2){\line(0,1){1.8}} - \put(6,8){\vector(-1,0){2}} - \put(9,8){\vector(1,0){2}} - \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}} -% - \end{picture}\vspace{-\baselineskip} - \begin{align*} - W_{\mathrm{Y}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\ - H_{\mathrm{Y}} &= w_{\mathrm{D}},\\ - D_{\mathrm{Y}} &= 0\,\mathrm{pt} - \end{align*}% - }& - \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) - \put(9,-0.2){\line(0,-1){2.8}} - \put(4,0){\DTOUeg} - \put(9, 7.2){\line(0,1){3.8}} -% - \put(2,7){\line(1,0){1.8}} - \put(2,0){\line(1,0){1.8}} - \put(3,5){\vector(0,1){2}} - \put(3,2){\vector(0,-1){2}} - \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}} -% - \put(4,7.2){\line(0,1){1.8}} - \put(11,7.2){\line(0,1){1.8}} - \put(6.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}} - \put(10,8){\vector(-1,0){1}\vector(1,0){1}} - \put(10,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}} - \put(6.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}} -% - \end{picture}\vspace{-\baselineskip} - \begin{align*} - W_{\mathrm{T}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\ - H_{\mathrm{T}} &= d_{\mathrm{D}},\\ - D_{\mathrm{T}} &= h_{\mathrm{D}} - \end{align*}% - }& - \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) - \put(6,-0.2){\line(0,-1){2.8}} - \put(4,7){\TATEeg} - \put(6, 7.2){\line(0,1){3.8}} -% - \put(2,7){\line(1,0){1.8}} - \put(2,0){\line(1,0){1.8}} - \put(3,5){\vector(0,1){2}} - \put(3,2){\vector(0,-1){2}} - \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}} -% - \put(4,7.2){\line(0,1){1.8}} - \put(11,7.2){\line(0,1){1.8}} - \put(5,8){\vector(-1,0){1}\vector(1,0){1}} - \put(8.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}} - \put(5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}} - \put(8.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}} -% - \end{picture}\vspace{-\baselineskip} - \begin{align*} - W_{\mathrm{D}} &= w_{\mathrm{T}},\\ - H_{\mathrm{D}} &= d_{\mathrm{T}},\\ - D_{\mathrm{D}} &= h_{\mathrm{T}} - \end{align*}% - }\\ -\bottomrule -\end{tabular} -\end{table} - - - -%<*en> -\paragraph{\cs{wd} and direction} -In \pTeX, \cs{wd},~\cs{ht},~\cs{dp} means the dimensions of a box register -\emph{with respact to the current direction}. -This means that the value of \cs{wd0} etc.\ might differ when the current direction is -different, even if \cs{box0} stores the same box. -However, this no longer applies in \LuaTeX-ja. - -\begin{LTXexample} -% yoko direction -\setbox0=\hbox to 20pt{foo} -\the\wd0,~\hbox{\tate\vrule\the\wd0} -\wd0=100pt -\the\wd0,~\hbox{\tate \the\wd0} -\end{LTXexample} - -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 -the current direction. One can use these in \cs{dimexpr} primitive, as the followings. -\begin{lstlisting} -\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701 -\end{lstlisting} -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\ltjgetwd32767, \\ - \the\ltjgetht32767, \\ \the\ltjgetdp32767.} -\vbox{\hsize=20mm\raggedleft -\tate TATE \the\ltjgetwd32767, \\ - \the\ltjgetht32767, \\ \the\ltjgetdp32767.} -\vbox{\hsize=20mm\raggedleft -\dtou DTOU \the\ltjgetwd32767, \\ - \the\ltjgetht32767, \\ \the\ltjgetdp32767.} -\end{LTXexample} - - \item[\cs{ltjsetwd}=\textrm{, }\cs{ltjsetht}=\textrm{, }% - \cs{ltjsetdp}=] -These commands set the dimension of \cs{box}. One does not need - to group the argument ; four calls of \cs{ltjsetwd} below have the same meaning. -\begin{lstlisting} -\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt -\end{lstlisting} - -\end{cslist} -% -%<*ja> -\paragraph{\cs{wd} 達と組方向} -ボックスレジスタ \cs{box} にセットされているボックスの幅・高さ・深さの取得や -変更にはそれぞれ \cs{wd},~\cs{ht},~\cs{dp} プリミティブを用いるのであった. -\pTeX ではこれらのプリミティブは,「現在の組方向におけるボックスの寸法」を指すもので, -同じボックスに対しても現在の組方向によって返る値は異なるもであった. - -\LuaTeX-jaにおいては状況が異なり,\cs{wd},~\cs{ht},~\cs{dp} が返す値は -現在の組方向には依存しない.下の例のように,横組のボックスが格納されていれば -\cs{wd}等は常に「横組におけるボックスの寸法」を意味する. - -\begin{LTXexample} -% yoko direction -\setbox0=\hbox to 20pt{foo} -\the\wd0,~\hbox{\tate\vrule\the\wd0} -\wd0=100pt -\the\wd0,~\hbox{\tate \the\wd0} -\end{LTXexample} - -\pTeX のように現在の組方向に応じたボックスの寸法の取得・設定を行うには, -代わりに次の命令を使用する. - -\begin{cslist} - - \item[\cs{ltjgetwd}\textrm{, }\cs{ltjgetht}\textrm{, }% - \cs{ltjgetdp}] -現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため, -\begin{lstlisting} -\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701 -\end{lstlisting} -のように \cs{wd} の代わりとして扱うことができる. -使用例は以下の通りである. -\begin{LTXexample}[width=0.3\textwidth] -\parindent0pt -\setbox32767=\hbox{\yoko よこぐみ} -\fboxsep=0mm\fbox{\copy32767} -\vbox{\hsize=20mm -\yoko YOKO \the\ltjgetwd32767, \\ - \the\ltjgetht32767, \\ \the\ltjgetdp32767.} -\vbox{\hsize=20mm\raggedleft -\tate TATE \the\ltjgetwd32767, \\ - \the\ltjgetht32767, \\ \the\ltjgetdp32767.} -\vbox{\hsize=20mm\raggedleft -\dtou DTOU \the\ltjgetwd32767, \\ - \the\ltjgetht32767, \\ \the\ltjgetdp32767.} -\end{LTXexample} - - \item[\cs{ltjsetwd}=\textrm{, }\cs{ltjsetht}=\textrm{, }% - \cs{ltjsetdp}=] -現在の組方向に応じたボックスの寸法の設定を行う.\cs{afterassignment} を2回利用して -実装しているので,次の4通りは全て同じ意味である. -\begin{lstlisting} -\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt -\end{lstlisting} - -設定値は「横組」「縦組及びutod方向」「dtou方向」 -の3種ごとに独立して記録される.参考として,Gitリポジトリ内の - \verb+test/test55-boxdim_diffdir.{tex,pdf}+ を挙げておく. - -\end{cslist} -% - -%<*en> -\subsection{Getting current direction} -The \Param{direction} parameter returns the current direction, and -the \Param{boxdir} parameter (with the argument ) -returns the direction of a box register \cs{box}. -The returned value of these parameters are a \emph{string}: -\begin{center} -\small -\begin{tabular}{>{\bfseries}lccccc} -\toprule -Direction&\emph{yoko}&\emph{tate}&\emph{dtou}&\emph{utod}&(empty)\\ -\midrule -Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\ -\bottomrule -\end{tabular} -\end{center} -\begin{LTXexample}[width=0.3\textwidth] -\leavevmode\def\DIR{\ltjgetparameter{direction}} -\hbox{\yoko \DIR}, \hbox{\tate\DIR}, -\hbox{\dtou\DIR}, \hbox{\utod\DIR}, -\hbox{\tate$\hbox{tate math: \DIR}$} - -\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2} -\end{LTXexample} -% -%<*ja> -\subsection{組方向の取得} -「現在の組方向」や「番のボックスの組方向」は, -\pTeX では \cs{ifydir} や \cs{ifybox} といった条件判断文を使って -判断することができた. -しかし,\LuaTeX-jaはあくまでも\TeX マクロとLuaコードで -記述されており,それでは新たな条件判断命令を作るのは難しい. - -\LuaTeX-jaでは,\Param{direction}パラメータで現在の組方向を, -\Param{boxdir}パラメータ(と追加の引数)によって -\cs{box}の組方向をそれぞれ取得できるようにした. -戻り値は文字列である: -\begin{center} -\small -\begin{tabular}{>{\bfseries}lccccc} -\toprule -組方向&\emph{横組}&\emph{tate縦組}&\emph{dtou方向}&\emph{utod方向}&(未割り当て)\\ -\midrule -戻り値&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\ -\bottomrule -\end{tabular} -\end{center} - -\begin{LTXexample}[width=0.3\textwidth] -\leavevmode\def\DIR{\ltjgetparameter{direction}} -\hbox{\yoko\DIR}, \hbox{\tate\DIR}, -\hbox{\dtou\DIR}, \hbox{\utod\DIR}, -\hbox{\tate$\hbox{tate math: \DIR}$} - -\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2} -\end{LTXexample} - -これらを用いれば,例えば -\pTeX の \cs{ifydir},~\cs{ifybox200} と同等の条件判断を -\begin{lstlisting} -\ifnum\ltjgetparameter{direction}=4 -\ifnum\ltjgetparameter{boxdir}{200}=4 -\end{lstlisting} -のように行うことができる. -\cs{iftdir} は少々面倒であるが,8で割った余りが3であるか否かを判断すれば良いから -\begin{lstlisting} -\ifnum\numexpr - \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3 -\end{lstlisting} -とすればよい. -% - -%<*en> -\subsection{Overridden box primitives} -To cope with multiple directions, the following primitives are -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{vcenter}] -\end{cslist} -% -%<*ja> -\subsection{プリミティブの再定義} -異なる組方向に対応するために,以下に挙げるプリミティブは -\LuaTeX-jaによる前処理もしくは後処理が行われるように -\ \verb+\protected\def+ により再定義してある. - -\begin{cslist} - \item[\cs{unhbox}\textrm{, }\cs{unvbox}\textrm{, }\cs{unhcopy}\textrm{, }\cs{unvcopy}] - ボックスの組方向が現在のリストと異なる場合は事前にエラーメッセージを出力する. - \pTeX と異なり,エラーを無視して無理矢理 \cs{unhbox}, \cs{unvbox} を - 続行させることもできるが,その場合の組版結果は保証しない. - \item[\cs{vadjust}\{\}] 一旦プリミティブ本来の挙動を行う.その後,の組方向が - 周囲の垂直リストの組方向と一致しない場合にエラーを出力し, - 該当の \cs{vadjust} を無効にする. - \item[\cs{insert}\{\}] - 一旦プリミティブ本来の挙動を行い,その後内の各ボックス・罫線の直前に組方向を示 - すdirection whatsitを挿入する. - \item[\cs{lastbox}] ボックスの「中身」を現在の組方向に合わせるためのノード - (\textit{dir\_box}という)を必要ならば除去し, - 正しく「中身」のボックスが返されるように前処理をする. - \item[\cs{raise}\textrm{, }\cs{lower}\textrm{\ etc., }\cs{vcenter}] - 一方,こちらでは必要に応じて\textit{dir\_box}を作成する前処理を追加している. -\end{cslist} -% - -%\section{Font Metric and Japanese Font} -%\section{フォントメトリックと和文フォント} -%\subsection{\cs{jfont}} -%\subsection{\cs{jfont} 命令} -\label{ssec-jfont} - -%<*en> -To load a font as a Japanese font (for horizontal direction), you must use the -\cs{jfont} instead of~\cs{font}, while -\cs{jfont} admits the same syntax used in~\cs{font}. -\LuaTeX-ja automatically loads \Pkg{luaotfload} package, -so TrueType/OpenType fonts with features can be used for Japanese fonts: +%<*en> +To load a font as a Japanese font (for horizontal direction), you must use the +\cs{jfont} instead of~\cs{font}, while +\cs{jfont} admits the same syntax used in~\cs{font}. +\LuaTeX-ja automatically loads \Pkg{luaotfload} package, +so TrueType/OpenType fonts with features can be used for Japanese fonts: % %<*ja> フォントを(横組用)和文フォントとして読み込むためには,\cs{jfont} を @@ -3859,7 +3400,7 @@ Specify the name of (horizontal) JFM. If specified JFM has not been loaded, \LuaTeX-ja search and load a file named \texttt{jfm-.lua}. -The following JFMs are shipped with \LuaTeX-ja: +The following horizontal JFMs are shipped with \LuaTeX-ja: % %<*ja> 用いる(横組用)JFMの名前を指定する.もし以前に指定されたJFMが読み込まれていなければ, @@ -3867,7 +3408,7 @@ The following JFMs are shipped with \LuaTeX-ja: % \begin{description} %<*en> -\item[\tt jfm-ujis.lua] A standard JFM in \LuaTeX-ja. This JFM is +\item[\tt jfm-ujis.lua] A standard horizontal JFM in \LuaTeX-ja. This JFM is based on \verb+upnmlminr-h.tfm+, a metric for UTF/OTF package that is used in \upTeX. When you use the \Pkg{luatexja-otf} package, you should use this JFM. % @@ -3970,7 +3511,7 @@ JFMもサイズも同じなので,普通に「)【」と入力した時と \label{para-kern} %<*en> Some fonts have information for inter-glyph spacing. -This version of \LuaTeX-ja treats kerning spaces like an italic correction; +\LuaTeX-ja 20140324.0 or later treats kerning spaces like an italic correction; any glue and/or kern from the JFM and a kerning space can coexist. See \autoref{fig:kern-jfm} for detail. @@ -3981,7 +3522,7 @@ because of the compatibility with previous versions of \LuaTeX-ja. %<*ja> いくつかのフォントはグリフ間のスペースについての情報を持っている. このカーニング情報は以前の\LuaTeX-ja とはあまり相性が良くなかったが, -本バージョンではカーニングによる空白はイタリック補正と同様に扱うことになっている. +バージョン20140324.0以降ではカーニングによる空白はイタリック補正と同様に扱うことになっている. つまり,カーニング由来の空白とJFM由来のグルー・カーンは同時に入りうる. \autoref{fig:kern-jfm}を参照. \begin{itemize} @@ -4042,7 +3583,7 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ \texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって, 「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が 同じ場所に挿入される」という状況が起こりうる. -この機能を無効化し,20150922.0版以前と同じような組版を得るためには +この機能を無効化し,バージョン20150922.0以前と同じような組版を得るためには 他のOpenType機能と同じように\ \texttt{-ltjksp}\ 指定を行えば良い. \begin{LTXexample}[width=16\zw] \leavevmode @@ -4068,12 +3609,13 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ %\subsection{\cs{tfont} 命令} +\begin{comment} + {\catcode`\<=12\catcode`\>=12 \begin{table}[t] %\caption{Differences between vertical JFMs shipped with \LuaTeX-ja} %\caption{\LuaTeX-ja に同梱されている縦組用 JFM の違い} %\medskip \label{tab-difjfm-tate} -\catcode`\<=12\catcode`\>=12 \ltjsetparameter{jacharrange={+3}} \small \def\r#1#2{% @@ -4110,9 +3652,32 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ \end{minipage} \ltjsetparameter{jacharrange={-3}} \end{table} +} +\end{comment} %<*en> -... +\cs{tfont} loads a font as a Japanese font for vertical direction. +This command admits the same syntax used in \cs{font}~and~\cs{jfont}. +A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont}: +\begin{itemize} + \item Both \texttt{vert}~and~\texttt{vrt2} Opentype features are activated, + unless they are explicitly activated or deactivated (as the third line in the example below). +\begin{lstlisting} +\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 ... + \item One have to specify the name of vertical JFM in \texttt{jfm=}. +\LuaTeX-ja ships following vertical JFMs: +\begin{description} +\item[\tt jfm-ujisv.lua] A standard vertical JFM in \LuaTeX-ja. This JFM is + based on \verb+upnmlminr-v.tfm+, a metric for UTF/OTF package that + is used in \upTeX. +\item[\tt jfm-tmin.lua] A counterpart for \verb+tmin10.tfm+, which is one + of the default Japanese font metric shipped with \pTeX. +\end{description} +\end{itemize} % %<*ja> \cs{tfont} はフォントを縦組用の和文フォントとして読み込む命令であり, @@ -4130,7 +3695,7 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ \end{lstlisting} \item \ref{ssec-math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない. \item \texttt{jfm=}\ の部分には縦組用JFMを指定する. -以下の縦組用JFMが\LuaTeX-jaには同梱されており,違いを\autoref{tab-difjfm-tate}に示した. +以下の縦組用JFMが\LuaTeX-jaには同梱されている.%おり,違いを\autoref{tab-difjfm-tate}に示した. \begin{description} \item[\tt jfm-ujisv.lua] \LuaTeX-jaの標準縦組用JFMである.このJFMは\upTeX で 用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-v.tfm+ を @@ -4271,15 +3836,15 @@ floating-point numbers in design-size unit. \begin{cslist}[style=standard] -\item[version=$1\mathrel{\textrm{or}}2$] +\item[version=] %(optional, default value is~1) %(任意,既定値は1) %<*en> -The version JFM. Currently 1~and~2 are supported +The version JFM. Currently 1,~2,~and,~3 are supported % %<*ja> -JFMのバージョン.1または2がサポートされる. +JFMのバージョン.1,~2,~3がサポートされる. % \item[dir=] @@ -4710,8 +4275,8 @@ we specify to $0.25/(0.5+0.25)=1/3$. \Pkg{luatexja-adjust}による優先順位付き 行長調整(\ref{ssec-adj}節)において,このグルーの優先度を指定する.許される値は以下の通り: \begin{description} - \item[バージョン1のとき] $-4$から$+3$の間の整数 - \item[バージョン2のとき] $-4$から$+3$の間の整数の2つ組\texttt{\{, \}}か, + \item[バージョン1] $-4$から$+3$の間の整数 + \item[バージョン2以降] $-4$から$+3$の間の整数の2つ組\texttt{\{, \}}か, または$-4$から$+3$の間の整数., はそれぞれこのグルーが伸びるときの優先度,縮むときの 優先度であり,単に整数$i$が指定された場合は\texttt{\{$i$, $i$\}}であると解釈される. \end{description} @@ -4754,7 +4319,7 @@ In case of glue, one can specify following additional keys in each \texttt{[$j$] \begin{cslist}[style=standard] \item[priority=] An integer in $[-4,3]$ (treated as 0 if omitted), or -a pair of these integers \texttt{\{, \}} (version~2 only). +a pair of these integers \texttt{\{, \}} (version 2~or~later). This is used only in line adjustment with priority by \Pkg{luatexja-adjust} (see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to stretch, @@ -4943,8 +4508,31 @@ The following is the list of imaginary characters: %通常の(\cs{noindent} で開始されていない)段落の先頭. \item['jcharbdd'] -%A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue,\,\ldots). -%\textbf{JAchar}と「その他のもの」(欧文文字,glue,kern等)との境界. +%A boundary between \textbf{JAchar} and anything else. +%<*ja> +\textbf{JAchar}と「その他のもの」との境界. + +バージョン2以前では\textbf{ALchar},箱,罫線(rule),glue,~kernなどいろいろなものと\textbf{JAchar}の境界に対して +本特殊文字が用いられていたが, +バージョン3以降では\ \texttt{'jcharbdd'}, \texttt{'alchar'}, \texttt{'nox\_alchar'}, +\texttt{'glue'} と細分化され, +\texttt{'jcharbdd'} は主に\textbf{JAchar}とボックスや罫線(rule)との境界に使われるようになった. +% + +\item['alchar', 'nox\_alchar'] +%<*en> +(version 3~or~later) A boundary between \textbf{JAchar} and \textbf{ALchar}. +% +%<*ja> +(バージョン3以降)\textbf{JAchar}と\textbf{ALchar}との境界. +\textbf{JAchar}と\textbf{ALchar}の間に\Param{xkanjiskip}が入ることが可能な場合は +\ \texttt{'alchar'}\ が,そうでない場合は\ \texttt{'nox\_alchar'}\ が用いられる +(この区別は\textbf{ALchar}側の\Param{alxspmode}の値によってのみ行われる). +% + +\item['glue'] +%(version 3~or~later) A boundary between \textbf{JAchar}, and, a glue or kern. +%(バージョン3以降))\textbf{JAchar}とglue,kernとの境界. \item[$-1$] %The left/right boundary of an inline math formula. @@ -5167,16 +4755,9 @@ For $i\in\omega$, \texttt{char\_type[$i$]} is information of characters whose cl 0&\text{\texttt{'left'} (default)}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'} \end{cases} \] -\item For $j\in \omega$, \texttt{[$j$]} stores a kern or a glue which will be inserted -between character class~$i$ and class~$j$. - -If a kern will be inserted, the value of this field is \texttt{[$j$]=\{false, , \}}, -where is a node\footnote{% - This version of \LuaTeX-ja uses ``direct access - model'' for accessing nodes, if possible. }. -If a glue will be inserted, we have \texttt{[$j$]=\{false, , , \}}, -where is also a node, and $\text{}=\textit{from\_jfm}+\text{}$. \end{itemize} +For $i$,~$j\in \omega$, \texttt{char\_type[$i$][$j$]} stores a kern or a glue which will be inserted +between character class~$i$ and class~$j$. \end{description} % %<*ja> @@ -5209,23 +4790,34 @@ JFMで指定されているそれぞれの値をスケーリングしたもの \end{cases} \] のいずれかの値をとる. -\item $j\in \omega$に対して,\texttt{[$j$]} は文字クラス$i$の文字と$j$の文字の間に挿入されるkern - やglueを格納している. -間に入るものがkernであれば,このフィールドの値は\ -\texttt{[$j$]=\{false, , \}} である. -はkernを表すノードそのものである\footnote{% -本バージョンではノードのアクセス手法にdirect access +\end{itemize} +$i$,~$j\in \omega$に対して,\texttt{char\_type[$i$][$j$]} は +文字クラス$i$の文字と$j$の文字の間に挿入されるグルーやカーンを格納している. +\begin{itemize} + \item 間に入るものがカーンであれば,この値は\ +\texttt{[$j$]=\{[1]=, ratio=\}} であり, +はカーンを表すノードそのものである\footnote{% +バージョン20150420.0以降ではノードのアクセス手法にdirect access modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし か見えないことに注意. }. -glueであれば,\texttt{[$j$]=\{false, , , \}} である. -はglueの長さを表すノードそのものであり, - $\text{}=\textit{from\_jfm}+\text{}$である. + \item グルーであれば,この値は以下のキーを持つテーブルである. + \begin{description} + \item[\texttt{width}, \texttt{stretch}, \texttt{shrink}] + グルーのそれぞれ自然長,伸び量,縮み量をsp単位で表したもの. + \item[\texttt{priority}] バ(ージョン2以降の)JFMでの指定 \texttt{\{,\}} を + \[ + (\text{}+4)\cdot 8+\text{}+4 + \] + として0--63の整数にパックしたもの. + \item[\texttt{ratio}, \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch}, \texttt{kanjiskip\_shrink}] + JFM中の同名のフィールドの値がそのまま使われている. + \end{description} \end{itemize} \item[ascent\textrm{, }descent] …… \item[chars\_cbcache] -…… +文字クラス決定の処理で.キャッシュとして使われる. \end{cslist} % @@ -5434,13 +5026,13 @@ Penalty value for suppressing orphans. This penalty is inserted just %<*en> An additional attributes which each character whose character code is has. -At the present version, the lowermost bit of indicates +At version~20120506.0 or later, the lowermost bit of indicates whether the character is considered as a punctuation mark (see the description of \Param{jcharwidowpenalty} above). % %<*ja> 文字コードがの文字が持つ付加的な属性値. -現在のバージョンでは,の最下位ビットが,その文字が句読点と +バージョン20120506.0以降では,の最下位ビットが,その文字が句読点と みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照). % @@ -5488,1990 +5080,2648 @@ for the same character. [\cs{postbreakpenalty}]\ %<*ja> -文字コードの\textbf{JAchar}が行末にくることを抑止するために, - この文字の後に挿入/追加されるペナルティの量を指定する. +文字コードの\textbf{JAchar}が行末にくることを抑止するために, + この文字の後に挿入/追加されるペナルティの量を指定する. +% +%<*en> +Set a penalty which is inserted automatically after the character , +to prevent a line ends with this character. +% + +\item[\DParam{jatextfont}\,=\{,\}$^\ast$] +%[\cs{textfont} in \TeX] +%[\TeX の \cs{textfont}] +\item[\DParam{jascriptfont}\,=\{,\}$^\ast$] +%[\cs{scriptfont} in \TeX] +%[\TeX の \cs{scriptfont}] +\item[\DParam{jascriptscriptfont}\,=\{,\}$^\ast$] +%[\cs{scriptscriptfont} in \TeX] +%[\TeX の \cs{scriptscriptfont}] +\item[\DParam{yjabaselineshift}\,=]\ +\item[\DParam{yalbaselineshift}\,=] [\cs{ybaselineshift}] +\item[\DParam{tjabaselineshift}\,=]\ +\item[\DParam{talbaselineshift}\,=] [\cs{tbaselineshift}] + +\item[\DParam{jaxspmode}\,=\{,\}$^\ast$]\ + +%<*en> +Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is . +The followings are allowed for : +% +%<*ja> +文字コードがの\textbf{JAchar}の前/後ろに\Param{xkanjiskip}の +挿入を許すかどうかの設定. +以下のが許される: +% +\begin{description} +%\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character. +%\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される. +%\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after. +%\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない. +%\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before. +%\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない. +%\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed both before the character and after the character. This is the default value. +%\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である. +\end{description} +%<*en> +This parameter is similar to the \cs{inhibitxspcode} primitive of \pTeX, but not compatible with \cs{inhibitxspcode}. +% +%<*ja> +このパラメータは\pTeX の \cs{inhibitxspcode} プリミティブと似ているが, +互換性はない. +% +\item[\DParam{alxspmode}\,=\{,\}$^\ast$] [\cs{xspcode}]\ + +%<*en> +Set whether inserting \Param{xkanjiskip} is allowed before/after a + \textbf{ALchar} whose character code is . + The followings are allowed for : +% +%<*ja> +文字コードがの\textbf{ALchar}の前/後ろに\Param{xkanjiskip}の +挿入を許すかどうかの設定. +以下のが許される: +% +\begin{description} +%\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character. +%\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される. +%\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after. +%\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない. +%\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before. +%\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない. +%\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed before the character and after the character. This is the default value. +%\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である. +\end{description} +%<*en> +Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common table, hence these two parameters are synonyms of each other. +% +%<*ja> +\Param{jaxspmode}と\Param{alxspmode}は共通のテーブルを用いているため, +これら2つのパラメータは互いの別名となっていることに注意する. +% + +\item[\DParam{autospacing}\,=] [\cs{autospacing}] +\item[\DParam{autoxspacing}\,=] [\cs{autoxspacing}] +\item[\DParam{kanjiskip}\,=$^\ast$] [\cs{kanjiskip}]\ + +%<*ja> +デフォルトで2つの\textbf{JAchar}の間に挿入されるグルーである. +通常では,\pTeX と同じようにフォントサイズに比例して変わることはない. +しかし,自然長が \cs{maxdimen} の場合は,例外的に和文フォントのJFM側で指定されている +値を採用(こちらはフォントサイズに比例)することになっている. +% +%<*en> +The default glue which inserted between two \textbf{JAchar}s. +Changing current Japanese font does not alter this parameter, as \pTeX. + +If the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses +the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}). +% + +\item[\DParam{xkanjiskip}\,=$^\ast$] [\cs{xkanjiskip}]\ + +%<*ja> +デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルーである. +\Param{kanjiskip}と同じように,通常ではフォントサイズに比例して変わることはないが, +自然長が \cs{maxdimen} の場合が例外である. +% +%<*en> +The default glue which inserted between a \textbf{JAchar} and an + \textbf{ALchar}. +Changing current font does not alter this parameter, as \pTeX. + +As \Param{kanjiskip}, if the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses +the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}). +% + + +\item[\DParam{differentjfm}\,=$^\dagger$]\ + +%<*en> +Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different. +The allowed arguments are the followings: +% +%<*ja> +JFM(もしくはサイズ)が異なる2つの\textbf{JAchar}の間にグルー/カーンをどのように +入れるかを指定する. +許される値は以下の通り: +% +\begin{quote} +\texttt{average}, +\texttt{both}, +\texttt{large}, +\texttt{small}, +\texttt{pleft}, +\texttt{pright}, +\texttt{paverage} +\end{quote} +%<*en> +The default value is \texttt{paverage}. \dots +% +%<*ja> +デフォルト値は \texttt{paverage} である. +各々の値による差異の詳細は\ref{ssec-cluster-wa}節の「『右空白』の算出」を参照してほしい. +% + +\item[\DParam{jacharrange}\,=] +\item[\DParam{kansujichar}\,=\{, \}$^\ast$] [\cs{kansujichar}] + +\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, +the behavior of this assignment is undefined. +% +%<*ja> +組方向を変更する \cs{yoko}~(if $\hbox{}=4$), \cs{tate}~(if $\hbox{}=3$), +\cs{dtou}~(if $\hbox{}=1$), \cs{utod}~(if $\hbox{}=11$) と同じ役割を持つ. +利用可能な状況もこれら4命令と同一である.引数が4,~3, 1,~11のいずれでも無いときの +動作は未定義である. +% + +\end{cslist} + + +\subsection{\cs{ltjgetparameter}} +\label{ssec-getpar} +%<*en> +\cs{ltjgetparameter} is a control sequence for acquiring parameters. It +always takes a parameter name as first argument. +% +%<*ja> +\cs{ltjgetparameter} はパラメータの値を取得するための命令であり, +常にパラメータの名前を第一引数にとる. +% +\begin{LTXexample} +\ltjgetparameter{differentjfm}, +\ltjgetparameter{autospacing}, +\ltjgetparameter{kanjiskip}, +\ltjgetparameter{prebreakpenalty}{`)}. +\end{LTXexample} + +%<*en> +\emph{The return value of\/ \cs{ltjgetparameter} is +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> +\emph{\cs{ltjgetparameter} の戻り値は常に文字列である.} +これは\texttt{tex.write()}によって出力しているためで,空白「\texttt{\char32}」 +(\texttt{U+0020})を除いた文字のカテゴリーコードは全て12~(other)となる. +一方,空白のカテゴリーコードは10~(space)である. +% + +\begin{itemize} +\item +%<*en> +If first argument is one of the +following, no additional argument is needed. +% +%<*ja> +第1引数が次のいずれかの場合には,追加の引数は必要ない. +% +\begin{quote} +\sffamily +jcharwidowpenalty, yjabaselineshift, yalbaselineshift, autospacing, autoxspacing,\\ +kanjiskip, xkanjiskip, differentjfm, direction +\end{quote} +%<*en> +Note that \verb+\ltjgetparameter{autospacing}+~and~\verb+\ltjgetparameter{autoxspacing}+ +returns 1 or 0, not +\texttt{true}~nor~\texttt{false}. +% +%<*ja> +\verb+\ltjgetparameter{autospacing}+ と \verb+\ltjgetparameter{autoxspacing}+ は, +\texttt{true}や\texttt{false}を返すの\emph{ではなく}, +1か0のいずれかを返すことに注意, +% + +\item +%<*en> +If first argument is one of the +following, an additional argument---a character code, for example---is needed. +% +%<*ja> +第1引数が次のいずれかの場合には,さらに文字コードを第2引数としてとる. +% +\begin{quote} +\sffamily +kcatcode, prebreakpenalty, postbreakpenalty, jaxspmode, alxspmode +\end{quote} +%<*en> +\verb+\ltjgetparameter{jaxspmode}{...}+~and~\verb+\ltjgetparameter{alxspmode}{...}+ +returns 0,~1, 2,~or~3, instead of \texttt{preonly} etc. +% +%<*ja> +\verb+\ltjgetparameter{jaxspmode}{...}+ や \verb+\ltjgetparameter{alxspmode}{...}+\ +は,\texttt{preonly} などといった文字列ではなく,0から3までの値を返す. % + +\item %<*en> -Set a penalty which is inserted automatically after the character , -to prevent a line ends with this character. +\verb+\ltjgetparameter{jacharrange}{+\verb+}+ returns \texttt{0} +if ``characters which belong to the character range~ are \textbf{JAchar}'', +\texttt{1} if ``\dots~are \textbf{ALchar}''. +Although there is no character range~$-1$, specifying $-1$ to does not cause an + error (returns 1). % +%<*ja> +\verb+\ltjgetparameter{jacharrange}{+\verb+}+ は,が\textbf{JAchar}達の +範囲ならば0を,そうでなければ1を返す.「$-1$番の文字範囲」は存在しないが,に$-1$を +指定してもエラーは発生しない(1を返す). +% -\item[\DParam{jatextfont}\,=\{,\}$^\ast$] -%[\cs{textfont} in \TeX] -%[\TeX の \cs{textfont}] -\item[\DParam{jascriptfont}\,=\{,\}$^\ast$] -%[\cs{scriptfont} in \TeX] -%[\TeX の \cs{scriptfont}] -\item[\DParam{jascriptscriptfont}\,=\{,\}$^\ast$] -%[\cs{scriptscriptfont} in \TeX] -%[\TeX の \cs{scriptscriptfont}] -\item[\DParam{yjabaselineshift}\,=]\ -\item[\DParam{yalbaselineshift}\,=] [\cs{ybaselineshift}] -\item[\DParam{tjabaselineshift}\,=]\ -\item[\DParam{talbaselineshift}\,=] [\cs{tbaselineshift}] - -\item[\DParam{jaxspmode}\,=\{,\}$^\ast$]\ - +\item %<*en> -Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is . -The followings are allowed for : +For an integer~ between 0~and~9, + \verb+\ltjgetparameter{kansujichar}{+\verb+}+ returns the character code +of the result of \cs{kansuji}. % %<*ja> -文字コードがの\textbf{JAchar}の前/後ろに\Param{xkanjiskip}の -挿入を許すかどうかの設定. -以下のが許される: +0--9の数に対して, +\verb+\ltjgetparameter{kansujichar}{+\verb+}+ は,\cs{kansuji}で出力され + る文字の文字コードを返す. % -\begin{description} -%\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character. -%\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される. -%\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after. -%\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない. -%\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before. -%\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない. -%\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed both before the character and after the character. This is the default value. -%\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である. -\end{description} + +\item %<*en> -This parameter is similar to the \cs{inhibitxspcode} primitive of \pTeX, but not compatible with \cs{inhibitxspcode}. +\verb+\ltjgetparameter{adjustdir}+ returns a integer which represents +the direction of the surrounding vertical list. +As \Param{direction}, the return value 1 means \emph{down-to-up} direction, +3 means \emph{tate} direction (vertical typesetting), +and 4 means \emph{yoko} direction (horizontal typesetting). % %<*ja> -このパラメータは\pTeX の \cs{inhibitxspcode} プリミティブと似ているが, -互換性はない. +\verb+\ltjgetparameter{adjustdir}+ は,周囲のvboxの組方向(言い換えれば, +\cs{vadjust} で用いられる組方向)を表す数値を返す. +\Param{direction}と同様に,1は \cs{dtou} 方向を, +3は縦組みを,4は横組みを表す. % -\item[\DParam{alxspmode}\,=\{,\}$^\ast$] [\cs{xspcode}]\ +\item %<*en> -Set whether inserting \Param{xkanjiskip} is allowed before/after a - \textbf{ALchar} whose character code is . - The followings are allowed for : +For an integer~ between 0~and~65535, +\verb+\ltjgetparameter{boxdim}{+\verb+}+ returns the direction of +\cs{box}. If this box register is void, the returned value is zero. % %<*ja> -文字コードがの\textbf{ALchar}の前/後ろに\Param{xkanjiskip}の -挿入を許すかどうかの設定. -以下のが許される: +0--65535の数に対して, +\verb+\ltjgetparameter{boxdim}{+\verb+}+ は,\cs{box}に +格納されているボックスの組方向を表す.もしこのレジスタが空の場合は,0が返される. % -\begin{description} -%\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character. -%\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される. -%\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after. -%\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない. -%\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before. -%\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない. -%\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed before the character and after the character. This is the default value. -%\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である. -\end{description} + +\item %<*en> -Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common table, hence these two parameters are synonyms of each other. +The following parameter names \emph{cannot be specified} in \cs{ltjgetparameter}. % %<*ja> -\Param{jaxspmode}と\Param{alxspmode}は共通のテーブルを用いているため, -これら2つのパラメータは互いの別名となっていることに注意する. +次のパラメータ名を \cs{ltjgetparameter} に指定することはできない. % +\begin{quote} +\sffamily +jatextfont, jascriptfont, jascriptscriptfont, jacharrange +\end{quote} -\item[\DParam{autospacing}\,=] [\cs{autospacing}] -\item[\DParam{autoxspacing}\,=] [\cs{autoxspacing}] -\item[\DParam{kanjiskip}\,=$^\ast$] [\cs{kanjiskip}]\ +\item +%<*en> +\verb+\ltjgetparameter{chartorange}{+\verb+}+ returns +the range number which belongs to +(although there is no parameter named ``chartorange''). + +If is between 0 and 127, this does not belong to +any character range. In this case, + \verb+\ltjgetparameter{chartorange}{+\verb+}+ +returns $-1$. +Hence, one can know whether is \textbf{JAchar} or not +by the following: +% %<*ja> -デフォルトで2つの\textbf{JAchar}の間に挿入されるグルーである. -通常では,\pTeX と同じようにフォントサイズに比例して変わることはない. -しかし,自然長が \cs{maxdimen} の場合は,例外的に和文フォントのJFM側で指定されている -値を採用(こちらはフォントサイズに比例)することになっている. +\verb+\ltjgetparameter{chartorange}{+\verb+}+ によって +の属する文字範囲の番号を知ることができる. + +に0--127の値を指定した場合(このとき,が属する +文字範囲は存在しない)は$-1$が返る. + +そのため,が\textbf{JAchar}か\textbf{ALchar}かは +次で知ることができる: % -%<*en> -The default glue which inserted between two \textbf{JAchar}s. -Changing current Japanese font does not alter this parameter, as \pTeX. +\begin{quote} +\ttfamily \verb+\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{+% + \verb+}}+\\\null\hfill\verb+% 0 if JAchar, 1 if ALchar+ +\end{quote} -If the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses -the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}). +%<*en> +\item 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} +% -\item[\DParam{xkanjiskip}\,=$^\ast$] [\cs{xkanjiskip}]\ +\end{itemize} %<*ja> -デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルーである. -\Param{kanjiskip}と同じように,通常ではフォントサイズに比例して変わることはないが, -自然長が \cs{maxdimen} の場合が例外である. +\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} で読みこめば良い. % -%<*en> -The default glue which inserted between a \textbf{JAchar} and an - \textbf{ALchar}. -Changing current font does not alter this parameter, as \pTeX. - -As \Param{kanjiskip}, if the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses -the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}). -% -\item[\DParam{differentjfm}\,=$^\dagger$]\ +%\section{Other Commands for plain \TeX\ and \LaTeXe} +%\section{plainでも\LaTeX でも利用可能なその他の命令} +%\subsection{Commands for compatibility with \pTeX} +%\subsection{\pTeX 互換用命令} %<*en> -Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different. -The allowed arguments are the followings: +The following commands are implemented for compatibility with \pTeX. +Note that the former five commands don't support JIS~X~0213, but only JIS~X~0208. +The last \cs{kansuji} converts an integer into its Chinese numerals. % %<*ja> -JFM(もしくはサイズ)が異なる2つの\textbf{JAchar}の間にグルー/カーンをどのように -入れるかを指定する. -許される値は以下の通り: +以下の命令は\pTeX との互換性のために実装されている.そのため,JIS~X~0213には対応せず, +\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない. % -\begin{quote} -\texttt{average}, -\texttt{both}, -\texttt{large}, -\texttt{small}, -\texttt{pleft}, -\texttt{pright}, -\texttt{paverage} -\end{quote} +\begin{center} +\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{ucs}, \cs{kansuji} +\end{center} %<*en> -The default value is \texttt{paverage}. \dots +These six commands takes an internal integer, and returns a \emph{string}. % %<*ja> -デフォルト値は \texttt{paverage} である. -各々の値による差異の詳細は\ref{ssec-cluster-wa}節の「『右空白』の算出」を参照してほしい. +これら6命令は内部整数を引数とするが,実行結果は\textbf{文字列}であることに注意. % +\begin{LTXexample} +\newcount\hoge +\hoge="2423 %" +\the\hoge, \kansuji\hoge\\ +\jis\hoge, \char\jis\hoge\\ +\kansuji1701 +\end{LTXexample} -\item[\DParam{jacharrange}\,=] -\item[\DParam{kansujichar}\,=\{, \}$^\ast$] [\cs{kansujichar}] +%<*en> +To change characters of Chinese numerals for each digit, set \Param{kansujichar} parameter: +\begin{LTXexample} +\ltjsetparameter{kansujichar={1,`壹}} +\ltjsetparameter{kansujichar={7,`漆}} +\ltjsetparameter{kansujichar={0,`零}} +\kansuji1701 +\end{LTXexample} +% -\item[\DParam{direction}\,=\ \hbox{\rm (always local)}]\ +\subsection{\cs{inhibitglue}} %<*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, -the behavior of this assignment is undefined. +\cs{inhibitglue} suppresses the insertion of \textbf{JAglue}. +The following is an example, using a special JFM that there will be a glue between +the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''. % %<*ja> -組方向を変更する \cs{yoko}~(if $\hbox{}=4$), \cs{tate}~(if $\hbox{}=3$), -\cs{dtou}~(if $\hbox{}=1$), \cs{utod}~(if $\hbox{}=11$) と同じ役割を持つ. -利用可能な状況もこれら4命令と同一である.引数が4,~3, 1,~11のいずれでも無いときの -動作は未定義である. +\cs{inhibitglue} は\textbf{JAglue}の挿入を抑制する. +以下は,ボックスの始めと「あ」の間,「あ」「ウ」の間にグルーが入る特別なJFMを用いた例で +ある. % -\end{cslist} - +\begin{LTXexample}[width=0.4\textwidth] +\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g +\fbox{\hbox{あウあ\inhibitglue ウ}} +\inhibitglue\par\noindent あ1 +\par\inhibitglue\noindent あ2 +\par\noindent\inhibitglue あ3 +\par\hrule\noindent あoff\inhibitglue ice +\end{LTXexample} -\subsection{\cs{ltjgetparameter}} -\label{ssec-getpar} %<*en> -\cs{ltjgetparameter} is a control sequence for acquiring parameters. It -always takes a parameter name as first argument. +With the help of this example, we remark the specification of \cs{inhibitglue}: % %<*ja> -\cs{ltjgetparameter} はパラメータの値を取得するための命令であり, -常にパラメータの名前を第一引数にとる. +この例を援用して,\cs{inhibitglue} の仕様について述べる. % -\begin{LTXexample} -\ltjgetparameter{differentjfm}, -\ltjgetparameter{autospacing}, -\ltjgetparameter{kanjiskip}, -\ltjgetparameter{prebreakpenalty}{`)}. -\end{LTXexample} - +\begin{itemize} %<*en> -\emph{The return value of\/ \cs{ltjgetparameter} is -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). +\item The call of \cs{inhibitglue} in the (internal) vertical mode is + simply ignored. % %<*ja> -\emph{\cs{ltjgetparameter} の戻り値は常に文字列である.} -これは\texttt{tex.write()}によって出力しているためで,空白「\texttt{\char32}」 -(\texttt{U+0020})を除いた文字のカテゴリーコードは全て12~(other)となる. -一方,空白のカテゴリーコードは10~(space)である. +\item \emph{\cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない}\footnote{% + この点は\TeX~Live~2014での\pTeX における \cs{inhibitglue} の仕様変更と同じである. +}. +4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり, +\cs{noindent} の時点で水平モードになるからである. % -\begin{itemize} -\item %<*en> -If first argument is one of the -following, no additional argument is needed. +\item The call of \cs{inhibitglue} in the (restricted) horizontal + mode is only effective on the spot; does not get over boundary of + paragraphs. Moreover, \cs{inhibitglue} cancels ligatures and + kernings, as shown in the last line of above example. % %<*ja> -第1引数が次のいずれかの場合には,追加の引数は必要ない. +\item \cs{inhibitglue} の(制限された)水平モード中での呼び出しはその場でのみ + 有効であり,段落の境界を乗り越えない. + さらに,\cs{inhibitglue} は上の例の最終行のように(欧文における)リガチャとカーニングを + 打ち消す.これは,\cs{inhibitglue} が内部的には「現在のリスト中にwhatsitノードを + 追加する」ことを行なっているからである. % -\begin{quote} -\sffamily -jcharwidowpenalty, yjabaselineshift, yalbaselineshift, autospacing, autoxspacing,\\ -kanjiskip, xkanjiskip, differentjfm, direction -\end{quote} + %<*en> -Note that \verb+\ltjgetparameter{autospacing}+~and~\verb+\ltjgetparameter{autoxspacing}+ -returns 1 or 0, not -\texttt{true}~nor~\texttt{false}. +\item The call of \cs{inhibitglue} in math mode is just ignored. % %<*ja> -\verb+\ltjgetparameter{autospacing}+ と \verb+\ltjgetparameter{autoxspacing}+ は, -\texttt{true}や\texttt{false}を返すの\emph{ではなく}, -1か0のいずれかを返すことに注意, +\item \cs{inhibitglue} を数式モード中で呼び出した場合はただ無視される. % -\item +%<*ja> +\item \LaTeX で\LuaTeX-ja を使用する場合は, +\cs{inhibitglue} の代わりとして \verb+\<+ を使うことができる. +既に \verb+\<+ が定義されていた場合は,\LuaTeX-ja の読み込みで強制的に上書きされるので +注意すること. +% +\end{itemize} + + +\subsection{\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}} %<*en> -If first argument is one of the -following, an additional argument---a character code, for example---is needed. +Sometimes \texttt{'parbdd'}~and~\texttt{'boxbdd'} specifications~look like ``fail'', +especially in paragraphs inside list environments. +This is because \cs{everypar} inserts some nodes such as boxes and kerns, so +the ``first letter'' in a paragraph is in fact not the first letter. % %<*ja> -第1引数が次のいずれかの場合には,さらに文字コードを第2引数としてとる. +リスト環境内での\cs{item}で始まる各項目などでは, +「段落最初の鍵括弧が余計に半角字下げされる」など, +JFMにある\texttt{'parbdd'}, \texttt{'boxbdd'}の指定が見かけ上破綻していることがある. + +これは\TeX が\cs{everypar}を用いて段落開始時に記号類や空白などを挿入してしまっているため, +段落最初の鍵括弧が実際には段落最初のノードではないことに起因する.以下に例を示した. % -\begin{quote} -\sffamily -kcatcode, prebreakpenalty, postbreakpenalty, jaxspmode, alxspmode -\end{quote} +\begin{LTXexample}[width=0.3\textwidth] +\parindent1\zw +\noindent ああああああああ\par % for comparison +「ああああああ \par % normal paragraph + +\everypar{\null} +「ああああああ \par % ??? +\end{LTXexample} %<*en> -\verb+\ltjgetparameter{jaxspmode}{...}+~and~\verb+\ltjgetparameter{alxspmode}{...}+ -returns 0,~1, 2,~or~3, instead of \texttt{preonly} etc. +\cs{ltjfakeboxbdd}~and~\cs{ltjfakeparbegin} primitives resolve this situation. +\begin{itemize} + \item \cs{ltjfakeparbegin} creates a node which indicates + ``beginning of an indented paragraph'' to the insertion process of \textbf{JAglue}. + \item \cs{ltjfakeboxbdd} creates a node which indicates + ``beginning/ending of a box'' to the insertion process of \textbf{JAglue}. +\end{itemize} +As an example, the example above can be improved as follows: % %<*ja> -\verb+\ltjgetparameter{jaxspmode}{...}+ や \verb+\ltjgetparameter{alxspmode}{...}+\ -は,\texttt{preonly} などといった文字列ではなく,0から3までの値を返す. +\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}はこの状況を改善する命令である. +実際には\cs{everypar}の末尾にこれらを追加するという使い方がほとんどになるだろう. +\begin{itemize} + \item \cs{ltjfakeparbegin}は,実行された箇所が「インデントあり段落の開始」であると\LuaTeX-jaの + 和文処理グルー挿入処理に認識させる.この命令の直前に\textbf{JAchar}があった場合, + この文字の後ろに入るグルー等の処理については未定義である + \footnote{% + この命令と同等の内容は,\cs{dirrctlua}の形で\Pkg{ltjsclasses}内で以前から使われていた. + 一般ユーザでも利用しやすくするため,バージョン20170505.0で新たに命令として定義した. + }. + \item \cs{ltjfakeboxbdd}は,実行された箇所が「ボックスの先頭と末尾」であると\LuaTeX-jaの + 和文処理グルー挿入処理に認識させる. +\end{itemize} +例えば,先ほどの例に対して適用すると,次のようになる. % +\begin{LTXexample}[width=0.3\textwidth] +\parindent1\zw +\noindent ああああああああ\par % for comparison +「ああああああ \par % normal paragraph -\item +\everypar{\null\ltjfakeparbegin} +「ああああああ \par +\end{LTXexample} + + +\subsection{\cs{ltjdeclarealtfont}} +\label{ssec-altfont} %<*en> -\verb+\ltjgetparameter{jacharrange}{+\verb+}+ returns \texttt{0} -if ``characters which belong to the character range~ are \textbf{JAchar}'', -\texttt{1} if ``\dots~are \textbf{ALchar}''. -Although there is no character range~$-1$, specifying $-1$ to does not cause an - error (returns 1). +Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts. +This \cs{ltjdeclarealtfont} uses in the following form: +\begin{quote} +\ttfamily \textbackslash ltjdeclarealtfont\{\} +\end{quote} +where ~and~ are defined by \cs{jfont}. +Its meaning is +\begin{quote} +If the current Japanese font is , characters which belong to +is typeset by another Japanese font , instead of . +\end{quote} +Here is a comma-separated list of character codes, but also accepts negative integers: +$-n$~($n≥1$) means that all characters of character classes~$n$, with respect to JFM used +by . Note that characters which do not exist in are +ignored. + +For example, if \cs{hoge} uses \texttt{jfm-ujis.lua}, the standard JFM of \LuaTeX-ja, +then +\begin{lstlisting} +\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}} +\end{lstlisting} +does +\begin{quote} +If the current Japanese font is \cs{hoge}, \texttt{U+3000}--\texttt{U+30FF} +and characters in class~1 (ideographic opening brackets) +are typeset by \cs{piyo}. +\end{quote} % %<*ja> -\verb+\ltjgetparameter{jacharrange}{+\verb+}+ は,が\textbf{JAchar}達の -範囲ならば0を,そうでなければ1を返す.「$-1$番の文字範囲」は存在しないが,に$-1$を -指定してもエラーは発生しない(1を返す). -% +\cs{jfont} の書式を見ればわかるように,基本的には\LuaTeX-jaにおける1つの和文フォントに +使用出来る「実際のフォント」は1つである. +しかし,\cs{ltjdeclarealtfont} を用いると,この原則から外れることができる. -\item -%<*en> -For an integer~ between 0~and~9, - \verb+\ltjgetparameter{kansujichar}{+\verb+}+ returns the character code -of the result of \cs{kansuji}. -% -%<*ja> -0--9の数に対して, -\verb+\ltjgetparameter{kansujichar}{+\verb+}+ は,\cs{kansuji}で出力され - る文字の文字コードを返す. +\cs{ltjdeclarealtfont} は以下の書式で使用する: +\begin{quote} +\ttfamily \textbackslash ltjdeclarealtfont\{\} +\end{quote} +これは「現在の和文フォント」がであるとき, +に属する文字はを用いて組版される,という意味である. +\begin{itemize} + \item , は +\cs{jfont} によって定義された和文フォントである. + \item は文字コードの範囲を表すコンマ区切りのリストであるが, + 例外として負数$-n$は「のJFMの文字クラス$n$に属する全ての文字」 + を意味する. + +中に中に実際には存在しない文字が指定された場合は, +その文字に対する設定は無視される. +\end{itemize} + +例えば,\cs{hoge} のJFMが\LuaTeX-ja標準の +\ \texttt{jfm-ujis.lua} であった場合, +\begin{lstlisting} +\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}} +\end{lstlisting} +は「\cs{hoge} を利用しているとき, +\texttt{U+3000}--\texttt{U+30FF}と +文字クラス1(開き括弧類)中の文字だけは \cs{piyo} を用いる」 +ことを設定する.\verb+{-1}-{-1}+ という変わった指定の仕方をしているのは, +普通に \texttt{-1} と指定したのでは正しく$-1$と読み取られないという +マクロの都合による. % -\item -%<*en> -\verb+\ltjgetparameter{adjustdir}+ returns a integer which represents -the direction of the surrounding vertical list. -As \Param{direction}, the return value 1 means \emph{down-to-up} direction, -3 means \emph{tate} direction (vertical typesetting), -and 4 means \emph{yoko} direction (horizontal typesetting). -% %<*ja> -\verb+\ltjgetparameter{adjustdir}+ は,周囲のvboxの組方向(言い換えれば, -\cs{vadjust} で用いられる組方向)を表す数値を返す. -\Param{direction}と同様に,1は \cs{dtou} 方向を, -3は縦組みを,4は横組みを表す. +\subsection{\cs{ltjalchar} と \cs{ltjjachar}} +文字コードが$\text{}~(\geq 128=\mathtt{0x80})$の文字を +\ \cs{char} プリミティブを使い \cs{char} として出力させると, +その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって +\textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され +るかが決まる. + +文字範囲の設定を無視し,文字コードが$\text{}~(\geq 128=\mathtt{0x80})$の文字を強制的に +\textbf{ALchar}, \textbf{JAchar}で出力する命令がそれぞれ +\ \cs{ltjalchar},~\cs{ltjjachar} である.使用方法は \cs{char} と同じく +\ \cs{ltjalchar}, \cs{ltjjachar}とすればよい. +が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること +に注意. + +以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである. +\begin{LTXexample}[width=0.25\textwidth] +\gtfamily\large % default, ALchar, JAchar +¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar +α, \char`α, \ltjalchar`α, \ltjjachar`α % default: JAchar +\end{LTXexample} % -\item +%\section{Commands for \LaTeXe} +%\section{\LaTeXe 用の命令} + +%\subsection{Patch for NFSS2} +%\subsection{NFSS2へのパッチ} +\label{ssec-nfsspat} + %<*en> -For an integer~ between 0~and~65535, -\verb+\ltjgetparameter{boxdim}{+\verb+}+ returns the direction of -\cs{box}. If this box register is void, the returned value is zero. +Japanese patch for NFSS2 in \LuaTeX-ja +is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe. +We will describe +commands which are not described in Subsection~\ref{ssec-chgfnt}. % %<*ja> -0--65535の数に対して, -\verb+\ltjgetparameter{boxdim}{+\verb+}+ は,\cs{box}に -格納されているボックスの組方向を表す.もしこのレジスタが空の場合は,0が返される. +\LuaTeX-jaのNFSS2への日本語パッチは +\pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに, +和文エンコーディングの管理等をLuaで書きなおしたものである. +ここでは\ref{ssec-chgfnt}節で述べていなかった命令について +記述しておく. % -\item +\begin{cslist}% +\item[\normalfont\bfseries % +%追加の長さ変数達 +%additonal dimensions +] %<*en> -The following parameter names \emph{cannot be specified} in \cs{ltjgetparameter}. +Like \pLaTeXe, \LuaTeX-ja defines the following dimensions +for information of current Japanese font: % %<*ja> -次のパラメータ名を \cs{ltjgetparameter} に指定することはできない. +\pLaTeXe と同様に,\LuaTeX-jaは「現在の和文フォントの情報」を格納する長さ変数 % \begin{quote} -\sffamily -jatextfont, jascriptfont, jascriptscriptfont, jacharrange + \cs{cht}~(height), \cs{cdp}~(depth), \cs{cHT}~(sum of former two),\\ + \cs{cwd}~(width), \cs{cvs}~(lineskip), \cs{chs}~(equals to \cs{cwd}) \end{quote} - -\item -%<*en> -\verb+\ltjgetparameter{chartorange}{+\verb+}+ returns -the range number which belongs to -(although there is no parameter named ``chartorange''). - -If is between 0 and 127, this does not belong to -any character range. In this case, - \verb+\ltjgetparameter{chartorange}{+\verb+}+ -returns $-1$. - -Hence, one can know whether is \textbf{JAchar} or not -by the following: -% -%<*ja> -\verb+\ltjgetparameter{chartorange}{+\verb+}+ によって -の属する文字範囲の番号を知ることができる. - -に0--127の値を指定した場合(このとき,が属する -文字範囲は存在しない)は$-1$が返る. - -そのため,が\textbf{JAchar}か\textbf{ALchar}かは -次で知ることができる: -% +%and its \cs{normalsize} version: +%と,その \cs{normalsize} 版である \begin{quote} -\ttfamily \verb+\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{+% - \verb+}}+\\\null\hfill\verb+% 0 if JAchar, 1 if ALchar+ + \cs{Cht}~(height), \cs{Cdp}~(depth), + \cs{Cwd}~(width), \\\cs{Cvs}~(equals to \cs{baselineskip}), + \cs{Chs}~(equals to \cs{cwd})% +%. \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} -という処理を行っている. +を定義している.なお,\cs{cwd} と \cs{zw},また +\cs{cHT} と \cs{zh} は一致しない可能性がある.なぜなら, +\cs{cwd},~\cs{cHT} は「あ」の寸法から決定されるのに対し, +\cs{zw} と \cs{zh} はJFMに指定された値に過ぎないからである. +% +%<*en> +Note that \cs{cwd}~and~\cs{cHT} may differ from \cs{zw}~and~\cs{zh} +respectively. +On the one hand the former dimensions are determined from the character ``あ'', +but on the other hand \cs{zw}~and~\cs{zh} are specified by JFM. +% -これを\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} で読みこめば良い. -% +\item[\cs{DeclareYokoKanjiEncoding}\{\}\{\}\{\}] +%\ \\[\dimexpr-\medskipamount-2\baselineskip\relax] +%\ \\[\dimexpr-2\baselineskip\relax] +\item[\cs{DeclareTateKanjiEncoding}\{\}\{\}\{\}] +%<*en> +In NFSS2 under \LuaTeX-ja, distinction between alphabetic fonts + and Japanese fonts are only made by their + encodings. For example, encodings OT1 and T1 are encodings for + alphabetic fonts, and Japanese fonts cannot + have these encodings. These command define a new encoding + scheme for Japanese font families. +% +%<*ja> +\LuaTeX-jaのNFSS2においては,欧文フォントと和文フォントは +そのエンコーディングによってのみ区別される. +例えば,OT1とT1のエンコーディングは欧文フォントのエンコーディングであり, +和文フォントはこれらのエンコーディングを持つことはできない. +これらコマンドは横組用・縦組用和文フォントのための新しいエンコーディングを +それぞれ定義する. +% -%\section{Other Commands for plain \TeX\ and \LaTeXe} -%\section{plainでも\LaTeX でも利用可能なその他の命令} -%\subsection{Commands for compatibility with \pTeX} -%\subsection{\pTeX 互換用命令} +\item[\cs{DeclareKanjiEncodingDefaults}\{\}\{\}] +%\ \\[\dimexpr-\medskipamount-2\baselineskip\relax] +%\ \\[\dimexpr-2\baselineskip\relax] +\item[\cs{DeclareKanjiSubstitution}\{\}\{\}\{\}\{\}] +%\ \\[\dimexpr-\medskipamount-2\baselineskip\relax] +%\ \\[\dimexpr-2\baselineskip\relax] +\item[\cs{DeclareErrorKanjiFont}\{\}\{\}\{\}\{\}\{\}] %<*en> -The following commands are implemented for compatibility with \pTeX. -Note that the former five commands don't support JIS~X~0213, but only JIS~X~0208. -The last \cs{kansuji} converts an integer into its Chinese numerals. +The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaults} and~others. % %<*ja> -以下の命令は\pTeX との互換性のために実装されている.そのため,JIS~X~0213には対応せず, -\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない. +上記3つのコマンドはちょうどNFSS2 の \cs{DeclareFontEncodingDefaults} などに対応するものである. % -\begin{center} -\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{ucs}, \cs{kansuji} + +\item[\cs{reDeclareMathAlphabet}\{\}\{\}\{\}] + +% ToDo: en +%<*ja> +和文・欧文の数式用フォントファミリを一度に変更する命令を作成する. +具体的には,欧文数式用フォントファミリ変更の命令(\cs{mathrm} 等)と,和文数式用フォ + ントファミリ変更の命令(\cs{mathmc} 等)の2つを同時に行う命令として + を(再)定義する.実際の使用ではと + に同じものを指定する,すなわち,で和文側も変 + 更させるようにするのが一般的と思われる. + +本命令は +\begin{center}\tt +\{\}\quad$\longrightarrow$\quad +(の1段展開結果)\{の1段展開結果)\{\}\} \end{center} +と定義を行うので,使用には注意が必要である: +%\vspace{-\medskipamount} +\begin{itemize} +\item ,~は既に定義されていなければならない. + \cs{reDeclareMathAlphabet}\\の後に +両命令の内容を再定義しても,の内容にそれは反映されない. +\item ,~に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない. +\end{itemize} +% + +\item[\cs{DeclareRelationFont}\{\}\{\}\{\}\{\}\\* + \null\hfill\{\}\{\}\{\}\{\}] %<*en> -These six commands takes an internal integer, and returns a \emph{string}. +This command sets the ``accompanied'' alphabetic font (given by the latter 4~arguments) +with respect to a Japanese font given by the former 4~arguments. % %<*ja> -これら6命令は内部整数を引数とするが,実行結果は\textbf{文字列}であることに注意. +いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントに対して, +そのフォントに対応する「従属欧文」のフォントを後半の4引数により与える. % -\begin{LTXexample} -\newcount\hoge -\hoge="2423 %" -\the\hoge, \kansuji\hoge\\ -\jis\hoge, \char\jis\hoge\\ -\kansuji1701 -\end{LTXexample} - +\item[\cs{SetRelationFont}] %<*en> -To change characters of Chinese numerals for each digit, set \Param{kansujichar} parameter: -\begin{LTXexample} -\ltjsetparameter{kansujichar={1,`壹}} -\ltjsetparameter{kansujichar={7,`漆}} -\ltjsetparameter{kansujichar={0,`零}} -\kansuji1701 -\end{LTXexample} +This command is almost same as \cs{DeclareRelationFont}, except that this command does a local +assignment, where \cs{DeclareRelationFont} does a global assignment. % +%<*ja> +このコマンドは \cs{DeclareRelationFont} とローカルな指定であることを除いて +ほとんど同じである(\cs{DeclareRelationFont} はグローバル). +% - -\subsection{\cs{inhibitglue}} +\item[\cs{userelfont}] %<*en> -\cs{inhibitglue} suppresses the insertion of \textbf{JAglue}. -The following is an example, using a special JFM that there will be a glue between -the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''. +Change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic + font family with respect to current Japanese font family, + which was set by + \cs{DeclareRelationFont} or \cs{SetRelationFont}. +Like \cs{fontfamily}, \cs{selectfont} is required to take an effect. % %<*ja> -\cs{inhibitglue} は\textbf{JAglue}の挿入を抑制する. -以下は,ボックスの始めと「あ」の間,「あ」「ウ」の間にグルーが入る特別なJFMを用いた例で -ある. +現在の欧文フォントのエンコーディング/ファミリ/…… を, +\cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された +現在の和文フォントに対応する「従属欧文」フォントに変更する. +\cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である. % -\begin{LTXexample}[width=0.4\textwidth] -\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g -\fbox{\hbox{あウあ\inhibitglue ウ}} -\inhibitglue\par\noindent あ1 -\par\inhibitglue\noindent あ2 -\par\noindent\inhibitglue あ3 -\par\hrule\noindent あoff\inhibitglue ice -\end{LTXexample} - +\item[\cs{adjustbaseline}] %<*en> -With the help of this example, we remark the specification of \cs{inhibitglue}: +In \pLaTeXe, \cs{adjustbaseline} sets \cs{tbaselineshift} +to match the vertical center of ``M'' and that of ``あ'' in vertical typesetting: +\[ +\text{\cs{tbaselineshift}} \leftarrow +\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2 + + d_{\text{あ}} - d_{\text{M}}, +\] +where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively. +In \LuaTeX-ja, this \cs{adjustbaseline} does similar task, namely setting the + \Param{talbaselineshift} parameter. +If the \LaTeX\ is 2015/10/01 release or later, \LuaTeX-ja use a Japanese +character whose character class is zero, instead of `あ'. % %<*ja> -この例を援用して,\cs{inhibitglue} の仕様について述べる. +\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために, +\cs{tbaselineshift} を設定する役割を持っていた: +\[ +\text{\cs{tbaselineshift}} \leftarrow +\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2 + + d_{\text{あ}} - d_{\text{M}}, +\] +ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す. +\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処 + 理を行っている. + +同時に,これも\pLaTeXe の \cs{adjustbaseline} で同様の処理が行われていたが, +「漢」の寸法を元に(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd} +といった長さ変数を設定する. + +なお,\LaTeX が2015/10/01版以降の場合は,「あ」「漢」の代わりに +「文字クラス0の和文文字」を用いる. % -\begin{itemize} + +\item[\cs{fontfamily}\{\}] %<*en> -\item The call of \cs{inhibitglue} in the (internal) vertical mode is - simply ignored. +As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both}) +to . See Subsection~\ref{ssec-fontfamilycmd} for detail. % %<*ja> -\item \emph{\cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない}\footnote{% - この点は\TeX~Live~2014での\pTeX における \cs{inhibitglue} の仕様変更と同じである. -}. -4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり, -\cs{noindent} の時点で水平モードになるからである. +元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文, +和文,\emph{もしくは両方})をに変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること. +% + + +\begin{figure}[!tb] +\begin{LTXexample}[pos=b] +\DeclareKanjiFamily{JY3}{edm}{} +\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;}{} +\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;color=007F00}{} +\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;color=0000FF}{} +\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}} +\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF} +{\kanjifamily{edm}\selectfont +日本国民は、正当に選挙された国会における代表者を通じて行動し、……} +\end{LTXexample} +%\caption{\cs{DeclareAlternateKanjiFont} の使用例} +%\caption{An example of \cs{DeclareAlternateKanjiFont}} +\label{fig:altkanji} +\end{figure} + +\item[\cs{DeclareAlternateKanjiFont}\{\}\{\}\{\}\{\}\\ + \null\hfill\{\}\{\}\{\}\{\}\{\}] +%<*ja> +\ref{ssec-altfont}節の\ +\cs{ltjdeclarealtfont} と同様に,前半の4引数の +和文フォント(基底フォント)のうち中の文字を +第5から第8引数の和文フォントを使って組むように指示する. +使用例を図\nobreak\ref{fig:altkanji}に載せた. + +\begin{itemize} + \item +\cs{ltjdeclarealtfont} では基底フォント・置き換え先和文フォントはあらかじめ定義されてい + ないといけない(その代わり即時発効)であったが, +\cs{DeclareAlternateKanjiFont} の設定が +実際に効力が発揮するのは,書体変更やサイズ変更を行った時, +あるいは(これらを含むが)\cs{selectfont} が実行された時である. + \item +段落やhboxの最後での設定値が段落/hbox全体にわたって通用する点や, +に負数$-n$を指定した場合,それが「基底フォントの文字クラス$n$に属する文字全体」 +と解釈されるのは \cs{ltjdeclarealtfont} と同じである. +\end{itemize}% % +%<*en> +As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}), +characters in of the Japanese font (we say the \emph{base font}) +which specified by first 4 arguments are typeset +by the Japanese font which specified by fifth to eighth arguments +(we say the \emph{alternate font}). +An example is shown in \autoref{fig:altkanji}. + +\begin{itemize} + \item +In \cs{ltjdeclarealtfont}, the base font and the alternate font must be already defined. +But this \cs{DeclareAlternateKanjiFont} is not so. +In other words, \cs{DeclareAlternateKanjiFont} is effective only after +current Japanese font is changed, or only after \cs{selectfont} is executed. + \item \dots +\end{itemize}% +\vspace{-\medskipamount} +% +\end{cslist} %<*en> -\item The call of \cs{inhibitglue} in the (restricted) horizontal - mode is only effective on the spot; does not get over boundary of - paragraphs. Moreover, \cs{inhibitglue} cancels ligatures and - kernings, as shown in the last line of above example. +As closing this subsection, we shall introduce an example of +\cs{SetRelationFont} and \cs{userelfont}: % %<*ja> -\item \cs{inhibitglue} の(制限された)水平モード中での呼び出しはその場でのみ - 有効であり,段落の境界を乗り越えない. - さらに,\cs{inhibitglue} は上の例の最終行のように(欧文における)リガチャとカーニングを - 打ち消す.これは,\cs{inhibitglue} が内部的には「現在のリスト中にwhatsitノードを - 追加する」ことを行なっているからである. +この節の終わりに,\cs{SetRelationFont} と \cs{userelfont} の例を +紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが +Avant Garde (OT1/pag/m/n) に変わっていることがわかる. % +\begin{LTXexample}[width=0.3\textwidth] +\makeatletter +\SetRelationFont{JY3}{\k@family}{m}{n}{OT1}{pag}{m}{n} + % \k@family: current Japanese font family +\userelfont\selectfont あいうabc +\end{LTXexample} +%\subsection{Detail of \cs{fontfamily} command} +%\subsection{\cs{fontfamily}コマンドの詳細} +\label{ssec-fontfamilycmd} %<*en> -\item The call of \cs{inhibitglue} in math mode is just ignored. +In this subsection, we describe when \cs{fontfamily} changes current +Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to + if it is recognized as a Japanese font family, and similar with alphabetic font +family. There is a case that current Japanese/alphabetic font family are both changed to +, and another case that isn't recognized as a Japanese/alphabetic font +family either. + +\paragraph{Recognition as Japanese font family} +First, Whether Japanese font family will be changed is determined in following order. +This order is very similar to \cs{fontfamily} in \pLaTeXe, but we re-implemented in Lua. +We use an auxiliary list~$N_{\mathrm{J}}$. % %<*ja> -\item \cs{inhibitglue} を数式モード中で呼び出した場合はただ無視される. -% +本節では,\cs{fontfamily} がいつ和文/欧文フォントファミリを変更するかについて解説 +する.基本的には,が和文フォントファミリだと認識されれば和文側が,欧文フォントファ +ミリだと認識されれば欧文側が変更される.どちらとも認識されれば和文・欧文の両方が変わるこ +とになるし,当然どちらとも認識されないこともある. -%<*ja> -\item \LaTeX で\LuaTeX-ja を使用する場合は, -\cs{inhibitglue} の代わりとして \verb+\<+ を使うことができる. -既に \verb+\<+ が定義されていた場合は,\LuaTeX-ja の読み込みで強制的に上書きされるので -注意すること. +\paragraph{和文フォントファミリとしての認識} +まず,が和文フォントファミリとして認識されるかは以下の順序で決定される. +これは\pLaTeXe の \cs{fontfamily} にとても似ているが,ここではLuaによって実装している. +補助的に「和文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{J}}$を用いる. % -\end{itemize} - - -\subsection{\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}} +\begin{enumerate} %<*en> -Sometimes \texttt{'parbdd'}~and~\texttt{'boxbdd'} specifications~look like ``fail'', -especially in paragraphs inside list environments. -This is because \cs{everypar} inserts some nodes such as boxes and kerns, so -the ``first letter'' in a paragraph is in fact not the first letter. +\item If the family~ has been defined already by \cs{DeclareKanjiFamily}, + is recognized as a Japanese font family. + Note that need not be defined under \emph{current} Japanese font encoding. % %<*ja> -リスト環境内での\cs{item}で始まる各項目などでは, -「段落最初の鍵括弧が余計に半角字下げされる」など, -JFMにある\texttt{'parbdd'}, \texttt{'boxbdd'}の指定が見かけ上破綻していることがある. - -これは\TeX が\cs{everypar}を用いて段落開始時に記号類や空白などを挿入してしまっているため, -段落最初の鍵括弧が実際には段落最初のノードではないことに起因する.以下に例を示した. +\item ファミリが既に \cs{DeclareKanjiFamily} によって定義されている場合, + は和文フォントファミリであると認識される. + ここで,は現在の和文フォントエンコーディングで定義されていなくてもよい. % -\begin{LTXexample}[width=0.3\textwidth] -\parindent1\zw -\noindent ああああああああ\par % for comparison -「ああああああ \par % normal paragraph - -\everypar{\null} -「ああああああ \par % ??? -\end{LTXexample} %<*en> -\cs{ltjfakeboxbdd}~and~\cs{ltjfakeparbegin} primitives resolve this situation. -\begin{itemize} - \item \cs{ltjfakeparbegin} creates a node which indicates - ``beginning of an indented paragraph'' to the insertion process of \textbf{JAglue}. - \item \cs{ltjfakeboxbdd} creates a node which indicates - ``beginning/ending of a box'' to the insertion process of \textbf{JAglue}. -\end{itemize} -As an example, the example above can be improved as follows: +\item If the family~ has been listed in a list~$N_{\mathrm{J}}$, this means + that is not a Japanese font family. % %<*ja> -\cs{ltjfakeboxbdd}, \cs{ltjfakeparbegin}はこの状況を改善する命令である. -実際には\cs{everypar}の末尾にこれらを追加するという使い方がほとんどになるだろう. -\begin{itemize} - \item \cs{ltjfakeparbegin}は,実行された箇所が「インデントあり段落の開始」であると\LuaTeX-jaの - 和文処理グルー挿入処理に認識させる.この命令の直前に\textbf{JAchar}があった場合, - この文字の後ろに入るグルー等の処理については未定義である - \footnote{% - この命令と同等の内容は,\cs{dirrctlua}の形で\Pkg{ltjsclasses}内で以前から使われていた. - 一般ユーザでも利用しやすくするため,20170505.0版では新たに命令として定義した. - }. - \item \cs{ltjfakeboxbdd}は,実行された箇所が「ボックスの先頭と末尾」であると\LuaTeX-jaの - 和文処理グルー挿入処理に認識させる. -\end{itemize} -例えば,先ほどの例に対して適用すると,次のようになる. +\item ファミリがリスト$N_{\mathrm{J}}$に既に含まれていれば,それは + が和文フォントファミリではないことを意味する. % -\begin{LTXexample}[width=0.3\textwidth] -\parindent1\zw -\noindent ああああああああ\par % for comparison -「ああああああ \par % normal paragraph - -\everypar{\null\ltjfakeparbegin} -「ああああああ \par -\end{LTXexample} - - -\subsection{\cs{ltjdeclarealtfont}} -\label{ssec-altfont} %<*en> -Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts. -This \cs{ltjdeclarealtfont} uses in the following form: -\begin{quote} -\ttfamily \textbackslash ltjdeclarealtfont\{\} -\end{quote} -where ~and~ are defined by \cs{jfont}. -Its meaning is -\begin{quote} -If the current Japanese font is , characters which belong to -is typeset by another Japanese font , instead of . -\end{quote} -Here is a comma-separated list of character codes, but also accepts negative integers: -$-n$~($n≥1$) means that all characters of character classes~$n$, with respect to JFM used -by . Note that characters which do not exist in are -ignored. +\item If the \Pkg{luatexja-fontspec} package is loaded, we stop here, and is not + recognized as a Japanese font family. -For example, if \cs{hoge} uses \texttt{jfm-ujis.lua}, the standard JFM of \LuaTeX-ja, -then -\begin{lstlisting} -\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}} -\end{lstlisting} -does -\begin{quote} -If the current Japanese font is \cs{hoge}, \texttt{U+3000}--\texttt{U+30FF} -and characters in class~1 (ideographic opening brackets) -are typeset by \cs{piyo}. -\end{quote} + If the \Pkg{luatexja-fontspec} package is \emph{not} loaded, +now \LuaTeX-ja looks whether there exists a Japanese font encoding~ such that + a font definition named \texttt{.fd} (the file name is + all lowercase) exists. If so, is recognized as a Japanese font family (the font definition file won't be loaded here). + If not, is not a Japanese font family, and + is appended to the list~$N_{\mathrm{J}}$. % %<*ja> -\cs{jfont} の書式を見ればわかるように,基本的には\LuaTeX-jaにおける1つの和文フォントに -使用出来る「実際のフォント」は1つである. -しかし,\cs{ltjdeclarealtfont} を用いると,この原則から外れることができる. - -\cs{ltjdeclarealtfont} は以下の書式で使用する: -\begin{quote} -\ttfamily \textbackslash ltjdeclarealtfont\{\} -\end{quote} -これは「現在の和文フォント」がであるとき, -に属する文字はを用いて組版される,という意味である. -\begin{itemize} - \item , は -\cs{jfont} によって定義された和文フォントである. - \item は文字コードの範囲を表すコンマ区切りのリストであるが, - 例外として負数$-n$は「のJFMの文字クラス$n$に属する全ての文字」 - を意味する. +\item もし\Pkg{luatexja-fontspec}パッケージが読み込まれていれば,ここで終了であり, +は和文フォントファミリとして認識されないことになる. -中に中に実際には存在しない文字が指定された場合は, -その文字に対する設定は無視される. -\end{itemize} +もし\Pkg{luatexja-fontspec}パッケージが読み込まれていなければ,和文エンコーディングで +フォント定義ファイル\texttt{.fd}(ファイル名は全て小文字)が存在するようなも + のがあるかどうかを調べる. +存在すれば,は和文フォントファミリと認識される(フォント定義ファイルは読み込まれな + い). +存在しなければ,は和文フォントファミリでないと認識され,リスト$N_{\mathrm{J}}$にを追加することでそれを記憶する. -例えば,\cs{hoge} のJFMが\LuaTeX-ja標準の -\ \texttt{jfm-ujis.lua} であった場合, -\begin{lstlisting} -\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}} -\end{lstlisting} -は「\cs{hoge} を利用しているとき, -\texttt{U+3000}--\texttt{U+30FF}と -文字クラス1(開き括弧類)中の文字だけは \cs{piyo} を用いる」 -ことを設定する.\verb+{-1}-{-1}+ という変わった指定の仕方をしているのは, -普通に \texttt{-1} と指定したのでは正しく$-1$と読み取られないという -マクロの都合による. % +\end{enumerate} +%<*en> +\paragraph{Recognition as alphabetic font family} +Next, whether alphabetic font family will be changed is determined in following order. +We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$, +% %<*ja> -\subsection{\cs{ltjalchar} と \cs{ltjjachar}} -文字コードが$\text{}~(\geq 128=\mathtt{0x80})$の文字を -\ \cs{char} プリミティブを使い \cs{char} として出力させると, -その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって -\textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され -るかが決まる. - -文字範囲の設定を無視し,文字コードが$\text{}~(\geq 128=\mathtt{0x80})$の文字を強制的に -\textbf{ALchar}, \textbf{JAchar}で出力する命令がそれぞれ -\ \cs{ltjalchar},~\cs{ltjjachar} である.使用方法は \cs{char} と同じく -\ \cs{ltjalchar}, \cs{ltjjachar}とすればよい. -が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること -に注意. - -以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである. -\begin{LTXexample}[width=0.25\textwidth] -\gtfamily\large % default, ALchar, JAchar -¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar -α, \char`α, \ltjalchar`α, \ltjjachar`α % default: JAchar -\end{LTXexample} +\paragraph{欧文フォントファミリとしての認識} +同様に,が和文フォントファミリとして認識されるかは以下の順序で決定される. +補助的に「欧文フォントファミリと既に認識された」ファミリのリスト$F_{\textrm{A}}$と, +「欧文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{A}}$を用いる. % -%\section{Commands for \LaTeXe} -%\section{\LaTeXe 用の命令} - -%\subsection{Patch for NFSS2} -%\subsection{NFSS2へのパッチ} -\label{ssec-nfsspat} - +\begin{enumerate} %<*en> -Japanese patch for NFSS2 in \LuaTeX-ja -is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe. -We will describe -commands which are not described in Subsection~\ref{ssec-chgfnt}. +\item If the family~ has been listed in a list~$F_{\mathrm{A}}$, + is recognized as an alphabetic font family. % %<*ja> -\LuaTeX-jaのNFSS2への日本語パッチは -\pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに, -和文エンコーディングの管理等をLuaで書きなおしたものである. -ここでは\ref{ssec-chgfnt}節で述べていなかった命令について -記述しておく. +\item ファミリがリスト$F_{\mathrm{A}}$に既に含まれていれば, + は欧文フォントファミリと認識される. +% +%<*en> +\item If the family~ has been listed in a list~$N_{\mathrm{A}}$, this means + that is not an alphabetic font family. +% +%<*ja> +\item ファミリがリスト$N_{\mathrm{A}}$に既に含まれていれば,それは + が欧文フォントファミリではないことを意味する. % - -\begin{cslist}% -\item[\normalfont\bfseries % -%追加の長さ変数達 -%additonal dimensions -] %<*en> -Like \pLaTeXe, \LuaTeX-ja defines the following dimensions -for information of current Japanese font: +\item If there exists an alphabetic font encoding such that the family~ has been + defined under it, is recognized as an alphabetic font family, and + to memorize this, is appended to the list~$F_{\mathrm{A}}$. % %<*ja> -\pLaTeXe と同様に,\LuaTeX-jaは「現在の和文フォントの情報」を格納する長さ変数 +\item ある欧文フォントエンコーディング下でファミリが定義されていれば, + は欧文フォントファミリと認識され,リスト$F_{\mathrm{A}}$にを追加することでこのことを記憶する. % -\begin{quote} - \cs{cht}~(height), \cs{cdp}~(depth), \cs{cHT}~(sum of former two),\\ - \cs{cwd}~(width), \cs{cvs}~(lineskip), \cs{chs}~(equals to \cs{cwd}) -\end{quote} -%and its \cs{normalsize} version: -%と,その \cs{normalsize} 版である -\begin{quote} - \cs{Cht}~(height), \cs{Cdp}~(depth), - \cs{Cwd}~(width), \\\cs{Cvs}~(equals to \cs{baselineskip}), - \cs{Chs}~(equals to \cs{cwd})% -%. -\end{quote} +%<*en> +\item Now \LuaTeX-ja looks whether there exists an alphabetic font encoding~ such that + a font definition named \texttt{.fd} (the file name is + all lowercase) exists. If so, current alphabetic font family will be changed to + ~(the font definition file won't be loaded here). + If not, current alphabetic font family won't be changed, and + is appended to the list~$N_{\mathrm{A}}$. +% %<*ja> -を定義している.なお,\cs{cwd} と \cs{zw},また -\cs{cHT} と \cs{zh} は一致しない可能性がある.なぜなら, -\cs{cwd},~\cs{cHT} は「あ」の寸法から決定されるのに対し, -\cs{zw} と \cs{zh} はJFMに指定された値に過ぎないからである. +\item 最終段階では,欧文エンコーディングで +フォント定義ファイル\texttt{.fd}(ファイル名は全て小文字)が存在するようなも + のがあるかどうかを調べる. +存在すれば,は欧文フォントファミリと認識される(フォント定義ファイルは読み込まれない). +存在しなければ,は欧文フォントファミリと認識されないので,リスト$N_{\mathrm{A}}$に + を追加してそのことを記憶する. % +\end{enumerate} + %<*en> -Note that \cs{cwd}~and~\cs{cHT} may differ from \cs{zw}~and~\cs{zh} -respectively. -On the one hand the former dimensions are determined from the character ``あ'', -but on the other hand \cs{zw}~and~\cs{zh} are specified by JFM. +Also, each call of \cs{DeclareFontFamily} \emph{after} loading of \LuaTeX-ja makes +the second argument (family) is appended to the list~$F_{\mathrm{A}}$. % - - -\item[\cs{DeclareYokoKanjiEncoding}\{\}\{\}\{\}] -%\ \\[\dimexpr-\medskipamount-2\baselineskip\relax] -%\ \\[\dimexpr-2\baselineskip\relax] -\item[\cs{DeclareTateKanjiEncoding}\{\}\{\}\{\}] +%<*ja> +また,\cs{DeclareFontFamily}が\LuaTeX-jaの読み込み後に実行された場合は, +第2引数(ファミリ名)が自動的に$F_{\mathrm{A}}$に追加される. +% %<*en> -In NFSS2 under \LuaTeX-ja, distinction between alphabetic fonts - and Japanese fonts are only made by their - encodings. For example, encodings OT1 and T1 are encodings for - alphabetic fonts, and Japanese fonts cannot - have these encodings. These command define a new encoding - scheme for Japanese font families. +The above order is very similar to \cs{fontfamily} in \pLaTeXe, but more complicated (clause~3.). +This is because \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not, +hence \LuaTeX-ja does not know calls of \cs{DeclareFontFamily} \emph{before} itself is +loaded. % %<*ja> -\LuaTeX-jaのNFSS2においては,欧文フォントと和文フォントは -そのエンコーディングによってのみ区別される. -例えば,OT1とT1のエンコーディングは欧文フォントのエンコーディングであり, -和文フォントはこれらのエンコーディングを持つことはできない. -これらコマンドは横組用・縦組用和文フォントのための新しいエンコーディングを -それぞれ定義する. +以上の方針は\pLaTeXe における \cs{fontfamily} にやはり類似しているが,3.が加わり若干複雑になっている. +それは\pLaTeXe がフォーマットであるのに対し\LuaTeX-jaはそうでないため, +\LuaTeX-jaは自身が読み込まれる前にどういう\cs{DeclareFontFamily}の呼び出しがあったか +把握できないからである. % -\item[\cs{DeclareKanjiEncodingDefaults}\{\}\{\}] -%\ \\[\dimexpr-\medskipamount-2\baselineskip\relax] -%\ \\[\dimexpr-2\baselineskip\relax] -\item[\cs{DeclareKanjiSubstitution}\{\}\{\}\{\}\{\}] -%\ \\[\dimexpr-\medskipamount-2\baselineskip\relax] -%\ \\[\dimexpr-2\baselineskip\relax] -\item[\cs{DeclareErrorKanjiFont}\{\}\{\}\{\}\{\}\{\}] - +%\paragraph{Remarks} +%\paragraph{注意} %<*en> -The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaults} and~others. +Of course, there is a case that is not recognized as a Japanese font family, nor +an alphabetic font family. +In this case, \LuaTeX-ja treats ``the argument is wrong'', so +set both current alphabetic and Japanese font family to , +to use the default family for font substitution. % %<*ja> -上記3つのコマンドはちょうどNFSS2 の \cs{DeclareFontEncodingDefaults} などに対応するものである. +さて,引数によっては,「和文フォントファミリとも欧文フォントファミリも認識されなかった」 +という事態もあり得る. + この場合,引数は不正だった,ということになるので, +和文・欧文の両方のフォントファミリをに設定し,代用フォントが使われるに任せることにする. % -\item[\cs{reDeclareMathAlphabet}\{\}\{\}\{\}] +%<*en> +\subsection{Notes on \cs{DeclareTextSymbol}} +From \LaTeX~2017/01/01, the standard encoding of \LuaLaTeX\ is changed to the \texttt{TU} +encoding. This menas that symbols defined by \texttt{T1}~and~\texttt{TS1} encodings can be used +without loading any package. To produces these symbols in alphabetic fonts in \LuaTeX-ja, +\LuaTeX-ja patches \cs{DeclareTextSymbol}, and reloads \texttt{tuenc.def}. -% ToDo: en +Under original definition of \cs{DeclareTextSymbol}, +internal commands which is defined by \cs{DeclareTextSymbol} (such as \cs{T1\cs{textquotedblleft}}) +are \textit{chardef} tokens. However, this no longer holds in \LuaTeX-ja; +for example, the meaning of \cs{TU\cs{textquotedblleft}} is \cs{ltjalchar8220\ltjalchar"2423 }. +% %<*ja> -和文・欧文の数式用フォントファミリを一度に変更する命令を作成する. -具体的には,欧文数式用フォントファミリ変更の命令(\cs{mathrm} 等)と,和文数式用フォ - ントファミリ変更の命令(\cs{mathmc} 等)の2つを同時に行う命令として - を(再)定義する.実際の使用ではと - に同じものを指定する,すなわち,で和文側も変 - 更させるようにするのが一般的と思われる. +\subsection{\cs{DeclareTextSymbol}使用時の注意} +\LaTeX~(2017/01/01)以降では,\texttt{TU}エンコーディングが標準となり,特に何もしなくても +\texttt{T1},~\texttt{TS1}エンコーディングで定義されていた記号類が +使えるようになった.\LuaTeX-jaではこれらの命令によって記号が欧文フォントで出力されるようにするため, +\cs{DeclareTextSymbol}命令を改変し,そして\texttt{TU}エンコーディングの定義である +\texttt{tuenc.def}を再読込している. -本命令は -\begin{center}\tt -\{\}\quad$\longrightarrow$\quad -(の1段展開結果)\{の1段展開結果)\{\}\} -\end{center} -と定義を行うので,使用には注意が必要である: -%\vspace{-\medskipamount} -\begin{itemize} -\item ,~は既に定義されていなければならない. - \cs{reDeclareMathAlphabet}\\の後に -両命令の内容を再定義しても,の内容にそれは反映されない. -\item ,~に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない. -\end{itemize} +従来は \cs{DeclareTextSymbol} で内部的に定義された\cs{T1\cs{textquotedblleft}}といった命令は +\textit{chardef}トークンであった.しかし前段落で述べた改変によりもはやそうではなくなっており,例えば +\cs{TU\cs{textquotedblleft}}は \cs{ltjalchar8220\ltjalchar"2423 } という定義になっている.%" % -\item[\cs{DeclareRelationFont}\{\}\{\}\{\}\{\}\\* - \null\hfill\{\}\{\}\{\}\{\}] +\begin{table}[t] + \centering\small + \caption{strut}\label{tab:strutbox} + \begin{tabular}{llcccl} + \toprule + \textbf{box}&\textbf{direction}&\textbf{width}&\textbf{height}&\textbf{depth} + &\textbf{user command}\\ + \midrule + \cs{ystrutbox}&yoko&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{ystrut}\\\midrule + \cs{tstrutbox}&tate, utod&0&0.5\cs{baselineskip}&0.5\cs{baselineskip}&\cs{tstrut}\\\midrule + \cs{dstrutbox}&dtou&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{dstrut}\\\midrule + \cs{zstrutbox}&---&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{zstrut}\\\bottomrule + \end{tabular} +\end{table} %<*en> -This command sets the ``accompanied'' alphabetic font (given by the latter 4~arguments) -with respect to a Japanese font given by the former 4~arguments. +\subsection{\cs{strutbox}} +As \pLaTeX~(2017/04/08 or later), \cs{strutbox} is \emph{a macro} which is expanded to one of +\cs{ystrutbox},~\cs{tstrutbox},~and~\cs{dstrutbox} +(all of them are shown in \autoref{tab:strutbox}), according to the current direction. +Similarly, \cs{strut} now uses one of these boxes. % %<*ja> -いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントに対して, -そのフォントに対応する「従属欧文」のフォントを後半の4引数により与える. +\subsection{\cs{strutbox}} +\pLaTeX~2017/04/08以降と同じように, +\cs{strutbox}は現在の組方向によって\cs{ystrutbox}, \cs{tstrutbox}, \cs{dstrutbox}の +いずれかに展開される\emph{マクロ}となっている(これらについては\autoref{tab:strutbox}参照). +同様に\cs{strut}もこの3\nobreak ボックスのいずれかを組方向によって使い分けるようになっている. + +\cs{zstrutbox}はutod方向(\pTeX でいう縦数式ディレクション)で使われる支柱ボックスであるが, +実際に使われるのは\cs{zstrut}が明示的に発行された時,そして +\Pkg{lltjext}パッケージで追加される組方向指定で \texttt{} を指定した時,および +周囲が縦組の状況で \texttt{} を指定した時に限られている. % -\item[\cs{SetRelationFont}] + %<*en> -This command is almost same as \cs{DeclareRelationFont}, except that this command does a local -assignment, where \cs{DeclareRelationFont} does a global assignment. +\section{Addon packages} +\LuaTeX-ja has several addon packages. +These addons are written as \LaTeX\ packages, but +\Pkg{luatexja-otf} and~\Pkg{luatexja-adjust} can be loaded in plain \LuaTeX\ +by \cs{input}. % %<*ja> -このコマンドは \cs{DeclareRelationFont} とローカルな指定であることを除いて -ほとんど同じである(\cs{DeclareRelationFont} はグローバル). +\section{拡張パッケージ} +\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している. +これらは\LaTeX のパッケージとして制作しているが, +\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\ +\cs{input} で読み込み可能である. % - -\item[\cs{userelfont}] +\subsection{\Pkg{luatexja-fontspec}} +\label{ssec-fontspec2} %<*en> -Change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic - font family with respect to current Japanese font family, - which was set by - \cs{DeclareRelationFont} or \cs{SetRelationFont}. -Like \cs{fontfamily}, \cs{selectfont} is required to take an effect. +As described in Subsection~\ref{ssec-fontspec}, this optional package +provides the counterparts for several commands defined in the +\Pkg{fontspec} package (requires \Pkg{fontspec}~v2.4). +In addition to OpenType font features in the original \Pkg{fontspec}, +the following ``font features'' specifications are allowed for +the commands of Japanese version: % %<*ja> -現在の欧文フォントのエンコーディング/ファミリ/…… を, -\cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された -現在の和文フォントに対応する「従属欧文」フォントに変更する. -\cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である. +\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}% +パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する. + +\Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには +以下の「フォント機能」を指定することができる: % -\item[\cs{adjustbaseline}] + +\begin{cslist} +\item[CID=\textrm{, }JFM=\textrm{, }JFM-var=] + %<*en> -In \pLaTeXe, \cs{adjustbaseline} sets \cs{tbaselineshift} -to match the vertical center of ``M'' and that of ``あ'' in vertical typesetting: -\[ -\text{\cs{tbaselineshift}} \leftarrow -\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2 - + d_{\text{あ}} - d_{\text{M}}, -\] -where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively. -In \LuaTeX-ja, this \cs{adjustbaseline} does similar task, namely setting the - \Param{talbaselineshift} parameter. -If the \LaTeX\ is 2015/10/01 release or later, \LuaTeX-ja use a Japanese -character whose character class is zero, instead of `あ'. +These 3 keys correspond to \texttt{cid}, \texttt{jfm} and +\texttt{jfmvar} keys for \cs{jfont}~and~\cs{tfont} respectively. +See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details + of \texttt{cid}, \texttt{jfm} and +\texttt{jfmvar} keys. + +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 +will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} keys. % %<*ja> -\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために, -\cs{tbaselineshift} を設定する役割を持っていた: -\[ -\text{\cs{tbaselineshift}} \leftarrow -\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2 - + d_{\text{あ}} - d_{\text{M}}, -\] -ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す. -\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処 - 理を行っている. - -同時に,これも\pLaTeXe の \cs{adjustbaseline} で同様の処理が行われていたが, -「漢」の寸法を元に(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd} -といった長さ変数を設定する. +これら3つのキーはそれぞれ \cs{jfont},~\cs{tfont}に対する +\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する. +\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節 + と\ref{ssec-psft}節を参照. -なお,\LaTeX が2015/10/01 版以降の場合は,「あ」「漢」の代わりに -「文字クラス0の和文文字」を用いる. +\texttt{CID} キーは下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である. +また,横組用JFMと縦組用JFMは共用できないため,実際に \texttt{JFM} キーを用いる際は +後に述べる\ \texttt{YokoFeatures} キーや \texttt{TateFeatures}\ の中で用いる +ことになる. % -\item[\cs{fontfamily}\{\}] +\item[NoEmbed] %<*en> -As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both}) -to . See Subsection~\ref{ssec-fontfamilycmd} for detail. +By specifying this key, one can use ``name-only'' Japanese font which +will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}. % %<*ja> -元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文, -和文,\emph{もしくは両方})をに変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること. +これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが +できる.\ref{ssec-psft}節を参照. % - \begin{figure}[!tb] -\begin{LTXexample}[pos=b] -\DeclareKanjiFamily{JY3}{edm}{} -\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;}{} -\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;color=007F00}{} -\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;color=0000FF}{} -\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}} -\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF} -{\kanjifamily{edm}\selectfont -日本国民は、正当に選挙された国会における代表者を通じて行動し、……} +\begin{LTXexample}[width=0.25\textwidth] +\jfontspec[ + YokoFeatures={Color=007F00}, TateFeatures={Color=00007F}, + TateFont=KozGoPr6N-Regular +]{KozMinPr6N-Regular} +\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト} +\addjfontfeatures{Color=FF0000} +\hbox{\yoko 横組}\hbox{\tate 縦組} \end{LTXexample} -%\caption{\cs{DeclareAlternateKanjiFont} の使用例} -%\caption{An example of \cs{DeclareAlternateKanjiFont}} -\label{fig:altkanji} +%\caption{\texttt{TateFeatures} 等の使用例} +%\caption{An example of \texttt{TateFeatures} etc.} +\label{fig:yokotate-fontspec} \end{figure} -\item[\cs{DeclareAlternateKanjiFont}\{\}\{\}\{\}\{\}\\ - \null\hfill\{\}\{\}\{\}\{\}\{\}] +\item[Kanjiskip=] %<*ja> -\ref{ssec-altfont}節の\ -\cs{ltjdeclarealtfont} と同様に,前半の4引数の -和文フォント(基底フォント)のうち中の文字を -第5から第8引数の和文フォントを使って組むように指示する. -使用例を図\nobreak\ref{fig:altkanji}に載せた. - -\begin{itemize} - \item -\cs{ltjdeclarealtfont} では基底フォント・置き換え先和文フォントはあらかじめ定義されてい - ないといけない(その代わり即時発効)であったが, -\cs{DeclareAlternateKanjiFont} の設定が -実際に効力が発揮するのは,書体変更やサイズ変更を行った時, -あるいは(これらを含むが)\cs{selectfont} が実行された時である. - \item -段落やhboxの最後での設定値が段落/hbox全体にわたって通用する点や, -に負数$-n$を指定した場合,それが「基底フォントの文字クラス$n$に属する文字全体」 -と解釈されるのは \cs{ltjdeclarealtfont} と同じである. -\end{itemize}% +\pageref{pg:ltjksp}ページで説明した \verb+\jfont+ 中での \texttt{ltjksp} 指定と +同一の効力を持ち, +JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ +\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の有効/無効を切り替える. +標準値は \texttt{true} である. % -%<*en> -As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}), -characters in of the Japanese font (we say the \emph{base font}) -which specified by first 4 arguments are typeset -by the Japanese font which specified by fifth to eighth arguments -(we say the \emph{alternate font}). -An example is shown in \autoref{fig:altkanji}. -\begin{itemize} - \item -In \cs{ltjdeclarealtfont}, the base font and the alternate font must be already defined. -But this \cs{DeclareAlternateKanjiFont} is not so. -In other words, \cs{DeclareAlternateKanjiFont} is effective only after -current Japanese font is changed, or only after \cs{selectfont} is executed. - \item \dots -\end{itemize}% -\vspace{-\medskipamount} +\item[TateFeatures=\{\}\textrm{, }TateFont=] +%<*en> +The \texttt{TateFeatures} key specifies font features which are only turned~on in +vertical writing, such as \texttt{Style=VerticalKana}~(\texttt{vkna} feature). +Similarly, the \texttt{TateFont} key specifies the Japanese font which will be used only + in vertical writing. +A demonstrarion is shown in \autoref{fig:yokotate-fontspec}. % -\end{cslist} +%<*ja> +縦組において使用されるフォントや,縦組においてのみ適用されるフォント機能達を +指定する.使用例は\autoref{fig:yokotate-fontspec}参照. +% +\item[YokoFeatures=\{\}] %<*en> -As closing this subsection, we shall introduce an example of -\cs{SetRelationFont} and \cs{userelfont}: +The \texttt{YokoFeatures} key specifies font features which are only turned~on in +horizontal writing,. +A demonstrarion is shown in \autoref{fig:yokotate-fontspec}. % %<*ja> -この節の終わりに,\cs{SetRelationFont} と \cs{userelfont} の例を -紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが -Avant Garde (OT1/pag/m/n) に変わっていることがわかる. +同様に,横組においてのみ適用されるフォント機能達を +指定する.使用例は\autoref{fig:yokotate-fontspec}参照. % -\begin{LTXexample}[width=0.3\textwidth] -\makeatletter -\SetRelationFont{JY3}{\k@family}{m}{n}{OT1}{pag}{m}{n} - % \k@family: current Japanese font family -\userelfont\selectfont あいうabc + + +\begin{figure}[!tb] +\begin{LTXexample}[pos=b] +\jfontspec[ + AltFont={ + {Range="4E00-"67FF, Color=007F00}, + {Range="6800-"9EFF, Color=0000FF}, + {Range="3040-"306F, Font=KozGoPr6N-Regular}, + } +]{KozMinPr6N-Regular} +日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、 +諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、…… \end{LTXexample} +%\caption{\texttt{AltFont} の使用例} +%\caption{An example of \texttt{AltFont}} +\label{fig:altkanji-fontspec} +\end{figure} -%\subsection{Detail of \cs{fontfamily} command} -%\subsection{\cs{fontfamily}コマンドの詳細} -\label{ssec-fontfamilycmd} -%<*en> -In this subsection, we describe when \cs{fontfamily} changes current -Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to - if it is recognized as a Japanese font family, and similar with alphabetic font -family. There is a case that current Japanese/alphabetic font family are both changed to -, and another case that isn't recognized as a Japanese/alphabetic font -family either. +\item[AltFont] -\paragraph{Recognition as Japanese font family} -First, Whether Japanese font family will be changed is determined in following order. -This order is very similar to \cs{fontfamily} in \pLaTeXe, but we re-implemented in Lua. -We use an auxiliary list~$N_{\mathrm{J}}$. +%<*en> +As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}) and +\cs{DeclareAlternateKanjiFont}~(Subsection~\ref{ssec-nfsspat}), +with this key, one can typeset some Japanese characters +by a different font and/or using different features. +The \texttt{AltFont} feature takes a comma-separated list of comma-separated lists, +as the following: % %<*ja> -本節では,\cs{fontfamily} がいつ和文/欧文フォントファミリを変更するかについて解説 -する.基本的には,が和文フォントファミリだと認識されれば和文側が,欧文フォントファ -ミリだと認識されれば欧文側が変更される.どちらとも認識されれば和文・欧文の両方が変わるこ -とになるし,当然どちらとも認識されないこともある. - -\paragraph{和文フォントファミリとしての認識} -まず,が和文フォントファミリとして認識されるかは以下の順序で決定される. -これは\pLaTeXe の \cs{fontfamily} にとても似ているが,ここではLuaによって実装している. -補助的に「和文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{J}}$を用いる. +\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や, +\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に, +このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる. +\texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである: % -\begin{enumerate} +\begin{lstlisting}[escapechar=\#] +AltFont = { + ... + { Range=#\LARG range>#, #\LARG features>#}, + { Range=#\LARG range>#, Font=#\LARG font~name>#, #\LARG features># }, + { Range=#\LARG range>#, Font=#\LARG font~name># }, + ... +} +\end{lstlisting} %<*en> -\item If the family~ has been defined already by \cs{DeclareKanjiFamily}, - is recognized as a Japanese font family. - Note that need not be defined under \emph{current} Japanese font encoding. +Each sublist should have the \texttt{Range} key +(sublist which does not contain \texttt{Range} key is simply ignored). +A demonstrarion is shown in \autoref{fig:altkanji-fontspec}. % %<*ja> -\item ファミリが既に \cs{DeclareKanjiFamily} によって定義されている場合, - は和文フォントファミリであると認識される. - ここで,は現在の和文フォントエンコーディングで定義されていなくてもよい. +各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは +単純に無視される).指定例は\autoref{fig:altkanji-fontspec}に示した. % -%<*en> -\item If the family~ has been listed in a list~$N_{\mathrm{J}}$, this means - that is not a Japanese font family. -% +\end{cslist} + %<*ja> -\item ファミリがリスト$N_{\mathrm{J}}$に既に含まれていれば,それは - が和文フォントファミリではないことを意味する. +なお,\Pkg{luatexja-fontspec} 読み込み時には和文フォント定義ファイル% +\texttt{.fd}は全く参照されなくなる. % + + %<*en> -\item If the \Pkg{luatexja-fontspec} package is loaded, we stop here, and is not - recognized as a Japanese font family. +\paragraph{Remark on \texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} keys} +\leavevmode\par +In \texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures} keys, +one cannot specify per-shape settings such as \texttt{BoldFeatures}. +For example, +\begin{lstlisting} +AltFont = { + { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, + Range="3000-"30FF, BoldFeatures={Color=007F00} } +} +\end{lstlisting} +does \emph{not} work. Instead, one have to write +\begin{lstlisting} +UprightFeatures = { + AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } }, +}, +BoldFeatures = { + AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } }, +} +\end{lstlisting} - If the \Pkg{luatexja-fontspec} package is \emph{not} loaded, -now \LuaTeX-ja looks whether there exists a Japanese font encoding~ such that - a font definition named \texttt{.fd} (the file name is - all lowercase) exists. If so, is recognized as a Japanese font family (the font definition file won't be loaded here). - If not, is not a Japanese font family, and - is appended to the list~$N_{\mathrm{J}}$. +On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and \texttt{TateFont} +keys can be specified in each list in the \texttt{AltFont} key. Also, +one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}. + +Note that features which are specified in \texttt{YokoFeatures}~and~\texttt{TateFeatures} +are always interpreted \emph{after} other ``direction-independent'' features. +This explains why \cs{addjfontfeatures} at~line~6 in~\autoref{fig:yokotate-fontspec} +has no effect, because a color specification is already done in +\texttt{YokoFeatures}~and~\texttt{TateFeatures} keys. % %<*ja> -\item もし\Pkg{luatexja-fontspec}パッケージが読み込まれていれば,ここで終了であり, -は和文フォントファミリとして認識されないことになる. +\paragraph{\texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} 等の制限} +\texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures}の各キーは +シェイプ別に指定されるべきものであり, +内部では \texttt{BoldFeatures} などのシェイプ別の指定は行うことが出来ない. +例えば. +\begin{lstlisting} +AltFont = { + { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, + Range="3000-"30FF, BoldFeatures={Color=007F00} } +} +\end{lstlisting} +のように指定することは出来ず, +\begin{lstlisting} +UprightFeatures = { + AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } }, +}, +BoldFeatures = { + AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } }, +} +\end{lstlisting} +のように指定しなければならない. -もし\Pkg{luatexja-fontspec}パッケージが読み込まれていなければ,和文エンコーディングで -フォント定義ファイル\texttt{.fd}(ファイル名は全て小文字)が存在するようなも - のがあるかどうかを調べる. -存在すれば,は和文フォントファミリと認識される(フォント定義ファイルは読み込まれな - い). -存在しなければ,は和文フォントファミリでないと認識され,リスト$N_{\mathrm{J}}$にを追加することでそれを記憶する. +一方,\texttt{AltFont} キー内の各リストでは +\ \texttt{YokoFeatures},~\texttt{TateFeatures} 及び \texttt{TateFont} キーを +指定することは可能であり.また\ \texttt{YokoFeatures},~\texttt{TateFeatures} キーの +中身に \texttt{AltFont} を指定することができる. + +また,\autoref{fig:yokotate-fontspec}後半部では6行目の色の指定が効かず, +2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による色の指定が有効になっ +たままである.これは\emph{\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による +OpenType機能指定は +組方向に依存しないOpenType機能の指定より後に解釈される}からである. % -\end{enumerate} + +\subsection{\Pkg{luatexja-otf}} +\label{ssec-ltjotf} %<*en> -\paragraph{Recognition as alphabetic font family} -Next, whether alphabetic font family will be changed is determined in following order. -We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$, +This optional package supports typesetting glyphs +by specifying a CID number. +The package \Pkg{luatexja-otf} offers the following 2~low-level +commands: % %<*ja> -\paragraph{欧文フォントファミリとしての認識} -同様に,が和文フォントファミリとして認識されるかは以下の順序で決定される. -補助的に「欧文フォントファミリと既に認識された」ファミリのリスト$F_{\textrm{A}}$と, -「欧文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{A}}$を用いる. +この追加パッケージはCID番号による文字の出力をサポートする. +\Pkg{luatexja-otf}は以下の2つの低レベルコマンドを提供する: % - -\begin{enumerate} +\begin{cslist} +\item[\cs{CID}\{\}] %<*en> -\item If the family~ has been listed in a list~$F_{\mathrm{A}}$, - is recognized as an alphabetic font family. +Typeset a glyph whose CID number is . +If the Japanese font is neither Adobe-Japan1,~Adobe-GB1, Adobe-CNS1,~nor~Adobe-Korea1 CID-keyed font, +\LuaTeX-ja treats that is a CID number of Adobe-Japan1 character collection, +and tries to typeset a ``most suitable glyph''. % %<*ja> -\item ファミリがリスト$F_{\mathrm{A}}$に既に含まれていれば, - は欧文フォントファミリと認識される. +CID番号がの文字を出力する. +もし現在の和文フォントがAdobe-Japan1,~Adobe-GB1, Adobe-CNS1,~Adobe-Korea1の + いずれのCID-keyed fontでもない場合,はAdobe-Japan1のCID番号であると解釈し + 「適切なグリフ」\footnote{% + 例えばフォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて + グリフを選択する. +}を出力する. % + +\item[\cs{UTF}\{\}] %<*en> -\item If the family~ has been listed in a list~$N_{\mathrm{A}}$, this means - that is not an alphabetic font family. +Typeset a character whose character code is (in hexadecimal). +This command is similar to \verb+\char"+,\ %" +but please remind remarks below. % %<*ja> -\item ファミリがリスト$N_{\mathrm{A}}$に既に含まれていれば,それは - が欧文フォントファミリではないことを意味する. +文字コードが(16進で)の文字を出力する. +このコマンドは \verb+\char"+と似ているが,下の注意を参照すること.%" % -%<*en> -\item If there exists an alphabetic font encoding such that the family~ has been - defined under it, is recognized as an alphabetic font family, and - to memorize this, is appended to the list~$F_{\mathrm{A}}$. -% +\end{cslist} + %<*ja> -\item ある欧文フォントエンコーディング下でファミリが定義されていれば, - は欧文フォントファミリと認識され,リスト$F_{\mathrm{A}}$にを追加することでこのことを記憶する. +このパッケージは,マクロ集 \texttt{luatexja-ajmacros.sty}\footnote{\Pkg{otf}パッケージ付属の井上浩一氏によるマクロ集 +\texttt{ajmacros.sty} に対して +漢字コードをUTF-8にしたり,plain \LuaTeX でも利用可能にするという +修正を加えたものである.}\ も自動的に読み込む. +\texttt{luatexja-ajmacros.sty} は, +そのため,\Pkg{luatexja-otf} を読みこめば \texttt{ajmacros.sty} マクロ集にある \cs{aj半角} などのマクロもそのまま使うことができる. % %<*en> -\item Now \LuaTeX-ja looks whether there exists an alphabetic font encoding~ such that - a font definition named \texttt{.fd} (the file name is - all lowercase) exists. If so, current alphabetic font family will be changed to - ~(the font definition file won't be loaded here). - If not, current alphabetic font family won't be changed, and - is appended to the list~$N_{\mathrm{A}}$. +This package automatically loads \texttt{luatexja-ajmacros.sty}, which is slightly +modified version of \texttt{ajmacros.sty}\footnote{Useful macros by iNOUE Koich!, for the +\Pkg{japanese-otf} package.}. +Hence one can use macros which sre defined in \texttt{ajmacros.sty}, such as~\cs{aj半角}. % -%<*ja> -\item 最終段階では,欧文エンコーディングで -フォント定義ファイル\texttt{.fd}(ファイル名は全て小文字)が存在するようなも - のがあるかどうかを調べる. -存在すれば,は欧文フォントファミリと認識される(フォント定義ファイルは読み込まれない). -存在しなければ,は欧文フォントファミリと認識されないので,リスト$N_{\mathrm{A}}$に - を追加してそのことを記憶する. -% -\end{enumerate} +%\paragraph{Remarks} +%\paragraph{注意} %<*en> -Also, each call of \cs{DeclareFontFamily} \emph{after} loading of \LuaTeX-ja makes -the second argument (family) is appended to the list~$F_{\mathrm{A}}$. +Characters by \cs{CID} and \cs{UTF} commands are different from +ordinary characters in the following points: % %<*ja> -また,\cs{DeclareFontFamily}が\LuaTeX-jaの読み込み後に実行された場合は, -第2引数(ファミリ名)が自動的に$F_{\mathrm{A}}$に追加される. +\cs{CID} と \cs{UTF} コマンドによって出力される文字は +以下の点で通常の文字と異なる: % - +\begin{itemize} %<*en> -The above order is very similar to \cs{fontfamily} in \pLaTeXe, but more complicated (clause~3.). -This is because \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not, -hence \LuaTeX-ja does not know calls of \cs{DeclareFontFamily} \emph{before} itself is -loaded. +\item Always treated as \textbf{JAchar}s. % %<*ja> -以上の方針は\pLaTeXe における \cs{fontfamily} にやはり類似しているが,3.が加わり若干複雑になっている. -それは\pLaTeXe がフォーマットであるのに対し\LuaTeX-jaはそうでないため, -\LuaTeX-jaは自身が読み込まれる前にどういう\cs{DeclareFontFamily}の呼び出しがあったか -把握できないからである. +\item 常に\textbf{JAchar}として扱われる. % - -%\paragraph{Remarks} -%\paragraph{注意} %<*en> -Of course, there is a case that is not recognized as a Japanese font family, nor -an alphabetic font family. -In this case, \LuaTeX-ja treats ``the argument is wrong'', so -set both current alphabetic and Japanese font family to , -to use the default family for font substitution. +\item Processing codes for supporting OpenType features (\textit{e.g.}, + glyph replacement and kerning) by the \Pkg{luaotfload} package + is not performed to these characters. % %<*ja> -さて,引数によっては,「和文フォントファミリとも欧文フォントファミリも認識されなかった」 -という事態もあり得る. - この場合,引数は不正だった,ということになるので, -和文・欧文の両方のフォントファミリをに設定し,代用フォントが使われるに任せることにする. +\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための + \Pkg{luaotfload}パッケージのコードはこれらの文字には働かない. % +\end{itemize} + +%\paragraph{Additional syntax of JFM} +%\paragraph{JFMへの記法の追加} %<*en> -\subsection{Notes on \cs{DeclareTextSymbol}} -From \LaTeX~2017/01/01, the standard encoding of \LuaLaTeX\ is changed to the \texttt{TU} -encoding. This menas that symbols defined by \texttt{T1}~and~\texttt{TS1} encodings can be used -without loading any package. To produces these symbols in alphabetic fonts in \LuaTeX-ja, -\LuaTeX-ja patches \cs{DeclareTextSymbol}, and reloads \texttt{tuenc.def}. +The package \Pkg{luatexja-otf} extends the syntax of JFM; the entries of \texttt{ +chars} table in JFM now allows a string in the form +\verb+'AJ1-xxx'+, which stands for the character +whose CID number in Adobe-Japan1 is \verb+xxx+. -Under original definition of \cs{DeclareTextSymbol}, -internal commands which is defined by \cs{DeclareTextSymbol} (such as \cs{T1\cs{textquotedblleft}}) -are \textit{chardef} tokens. However, this no longer holds in \LuaTeX-ja; -for example, the meaning of \cs{TU\cs{textquotedblleft}} is \cs{ltjalchar8220\ltjalchar"2423 }. +This extended notation is used in the standard JFM \texttt{jfm-ujis.lua} +to typeset halfwidth Hiragana glyphs (CID~516--598) in halfwidth. % %<*ja> -\subsection{\cs{DeclareTextSymbol}使用時の注意} -\LaTeX~(2017/01/01)以降では,\texttt{TU}エンコーディングが標準となり,特に何もしなくても -\texttt{T1},~\texttt{TS1}エンコーディングで定義されていた記号類が -使えるようになった.\LuaTeX-jaではこれらの命令によって記号が欧文フォントで出力されるようにするため, -\cs{DeclareTextSymbol}命令を改変し,そして\texttt{TU}エンコーディングの定義である -\texttt{tuenc.def}を再読込している. +\Pkg{luatexja-otf}パッケージを読み込むと, +JFMの\texttt{chars}テーブルのエントリとして \verb+'AJ1-xxx'+ の形の文字列が +使えるようになる.これはAdobe-Japan1におけるCID番号が \verb+xxx+ の文字を表す. -従来は \cs{DeclareTextSymbol} で内部的に定義された\cs{T1\cs{textquotedblleft}}といった命令は -\textit{chardef}トークンであった.しかし前段落で述べた改変によりもはやそうではなくなっており,例えば -\cs{TU\cs{textquotedblleft}}は \cs{ltjalchar8220\ltjalchar"2423 } という定義になっている.%" +この拡張記法は,標準JFM~\texttt{jfm-ujis.lua}で,半角ひらがなのグリフ(CID~516--598)を +正しく半角幅で組むために利用されている. % -\begin{table}[t] - \centering\small - \caption{strut}\label{tab:strutbox} - \begin{tabular}{llcccl} - \toprule - \textbf{box}&\textbf{direction}&\textbf{width}&\textbf{height}&\textbf{depth} - &\textbf{user command}\\ - \midrule - \cs{ystrutbox}&yoko&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{ystrut}\\\midrule - \cs{tstrutbox}&tate, utod&0&0.5\cs{baselineskip}&0.5\cs{baselineskip}&\cs{tstrut}\\\midrule - \cs{dstrutbox}&dtou&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{dstrut}\\\midrule - \cs{zstrutbox}&---&0&0.7\cs{baselineskip}&0.3\cs{baselineskip}&\cs{zstrut}\\\bottomrule - \end{tabular} -\end{table} -%<*en> -\subsection{\cs{strutbox}} -As \pLaTeX~(2017/04/08 or later), \cs{strutbox} is \emph{a macro} which is expanded to one of -\cs{ystrutbox},~\cs{tstrutbox},~and~\cs{dstrutbox} -(all of them are shown in \autoref{tab:strutbox}), according to the current direction. -Similarly, \cs{strut} now uses one of these boxes. -% -%<*ja> -\subsection{\cs{strutbox}} -\pLaTeX~2017/04/08以降と同じように, -\cs{strutbox}は現在の組方向によって\cs{ystrutbox}, \cs{tstrutbox}, \cs{dstrutbox}の -いずれかに展開される\emph{マクロ}となっている(これらについては\autoref{tab:strutbox}参照). -同様に\cs{strut}もこの3\nobreak ボックスのいずれかを組方向によって使い分けるようになっている. +\subsection{\Pkg{luatexja-adjust}} +\label{ssec-adj} +\begin{figure}[t] +\def\sq{% + \hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{% +  \hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw% + \hskip\dimexpr.5\zw-.2pt\relax}\hss}} +\def\sb{\hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{% + ■\hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw% + \hskip\dimexpr.5\zw-.2pt\relax}\hss}} +\newbox\gridbox +\def\outbox#1{{\Large% + \ltjsetparameter{kanjiskip=0pt plus .2\zw minus .2\zw}% + \setbox\gridbox=\hbox to 20\zw{\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb}% + \hbox{\textcolor{cyan}{\copy\gridbox}\hskip-20\zw% + \vbox{\hsize=20\zw\noindent\leftskip0pt\rightskip0pt\parfillskip0pt#1}\vrule}% +}} + +{\centering +\begin{tabular}{lc} +\toprule +no adjustment&\outbox{以上の原理は,「包除原理」とよく呼ばれるが\hskip-.5\zw\null}\\ +without priority&% +\ltjdisableadjust +\outbox{以上の原理は,「包除原理」とよく呼ばれるが}% +\ltjenableadjust\\ +with priority&% +\outbox{以上の原理は,「包除原理」とよく呼ばれるが} +%\ltjdisableadjust +\\ +\bottomrule +\end{tabular}\par} +\smallskip + +Note: the value of +\Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure, +for making the difference obvious. +%\caption{行長調整}\label{fig:adj} +%\caption{Line adjustment}\label{fig:adj} +\end{figure} -\cs{zstrutbox}はutod方向(\pTeX でいう縦数式ディレクション)で使われる支柱ボックスであるが, -実際に使われるのは\cs{zstrut}が明示的に発行された時,そして -\Pkg{lltjext}パッケージで追加される組方向指定で \texttt{} を指定した時,および -周囲が縦組の状況で \texttt{} を指定した時に限られている. -% %<*en> -\section{Addon packages} -\LuaTeX-ja has several addon packages. -These addons are written as \LaTeX\ packages, but -\Pkg{luatexja-otf} and~\Pkg{luatexja-adjust} can be loaded in plain \LuaTeX\ -by \cs{input}. -% -%<*ja> -\section{拡張パッケージ} -\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している. -これらは\LaTeX のパッケージとして制作しているが, -\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\ -\cs{input} で読み込み可能である. -% -\subsection{\Pkg{luatexja-fontspec}} -\label{ssec-fontspec2} -%<*en> -As described in Subsection~\ref{ssec-fontspec}, this optional package -provides the counterparts for several commands defined in the -\Pkg{fontspec} package (requires \Pkg{fontspec}~v2.4). -In addition to OpenType font features in the original \Pkg{fontspec}, -the following ``font features'' specifications are allowed for -the commands of Japanese version: +(see Japanese version of this manual) % %<*ja> -\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}% -パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する. +この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい. +\begin{description} +\item[行末文字の位置調整] + \pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように + 行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった. + 和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず, + 前の文に書いたことを実現するには +\begin{lstlisting} +\def\。{% + \penalty10000 % 禁則ペナルティ + \hbox to0pt{。\hss}\penalty0 % ぶら下げの場合 + \kern.5\zw\penalty0 % 二分取りの場合 + \kern.5\zw\penalty0 % 全角取りの場合 +} +\end{lstlisting} + のような命令を定義し,文中の全ての句点を \lstinline+\。+ で書くことが必要だった. -\Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには -以下の「フォント機能」を指定することができる: -% +\Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を +2通り以上から自動的に選択する機能を提供する. +\pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と + 「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした( +\Pkg{luatexja-adjust}パッケージの既定では前者). + +\item[優先順位付きの行長調整] +\pTeX では,行長調整において優先度の概念が存在しなかったため,図 +\ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵 +括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し +かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい +ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文 +文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている. +\Pkg{luatexja-adjust}パッケージの提供する第2の機能は, +\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き +の行長調整である. +\begin{itemize} + \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである. +そのため,行分割の位置は変化することはない. + +\verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である. + \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は +一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を +行う場合には注意が必要である. +\end{itemize} +\end{description} +\Pkg{luatexja-adjust}パッケージは,上記で述べた2機能を有効化/無効化するための +以下の命令を提供する.これらはすべてグローバルに効力を発揮する. \begin{cslist} -\item[CID=\textrm{, }JFM=\textrm{, }JFM-var=] +\item[\cs{ltjenableadjust[...]}] +\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」を有効化/無効化する. +指定できるキーは以下の通り. +\begin{description} + \item[\texttt{lineend=[false,true,extended]}] + 行末文字の位置調整の機能を無効化(\texttt{false}),「行分割後に調整」の形で有効化(\texttt{true}), + 「行分割の仮定で考慮」(\texttt{extended})する. + \item[\texttt{priority=[false,true]}] + 優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true})する. +\end{description} +両キーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる. -%<*en> -These 3 keys correspond to \texttt{cid}, \texttt{jfm} and -\texttt{jfmvar} keys for \cs{jfont}~and~\cs{tfont} respectively. -See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details - of \texttt{cid}, \texttt{jfm} and -\texttt{jfmvar} keys. +互換性の為,オプション無しでただ\cs{ltjenableadjust}が呼び出された場合は, +\begin{lstlisting} +\ltjenableadjust[lineend=true,priority=true] +\end{lstlisting} +と扱われる. + +\item[\cs{ltjdisableadjust}] +\Pkg{luatexja-adjust}パッケージの機能を無効化する. +\begin{lstlisting} +\ltjenableadjust[lineend=false,priority=false] +\end{lstlisting} +と同義. +\end{cslist} -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 -will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} keys. -% -%<*ja> -これら3つのキーはそれぞれ \cs{jfont},~\cs{tfont}に対する -\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する. -\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節 - と\ref{ssec-psft}節を参照. +また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で +追加される.両パラメータともグローバルに効力を発揮する. +\begin{cslist}[style=standard] +\item[\DParam{stretch\_priority}\,=\{\}] +\Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を, +「行を自然長より伸ばす」場合の調整に用いる優先度を指定する. -\texttt{CID} キーは下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である. -また,横組用JFMと縦組用JFMは共用できないため,実際に \texttt{JFM} キーを用いる際は -後に述べる\ \texttt{YokoFeatures} キーや \texttt{TateFeatures}\ の中で用いる -ことになる. +指定方法は,の中にkey-value listの形で +\begin{lstlisting} +stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50} +\end{lstlisting} +のようにして行う.キー名\texttt{kanjiskip},~\texttt{xkanjiskip}については +そのままの意味であり, +\texttt{others}キーが「\textbf{JAglue}以外のグルー」を表す. +各キーの値は,JFMグルーにおける「優先度$i$」を$10i$に対応させた整数値であり, + 大きい方が先に伸ばされることを意味している. + +\item[\DParam{shrink\_priority}\,=\{\}] +同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する. +それ以外は\Param{stretch\_priority}と指定の形式は変わらない. +\end{cslist} +初期値は\Param{stretch\_priority}, \Param{shrink\_priority}とも +\begin{lstlisting} +{kanjiskip=-35,xkanjiskip=-25,others=50} +\end{lstlisting} +であり,「優先度$-4$」と指定されているJFMグルーが最も伸び(縮み)にくいようになっている. % -\item[NoEmbed] +\subsection{\Pkg{luatexja-ruby}} %<*en> -By specifying this key, one can use ``name-only'' Japanese font which -will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}. +This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations +using callbacks of \LuaTeX-ja. +There is no detailed manual of \Pkg{luatexja-ruby.sty} in English. +(Japanese manual is another PDF file, \url{luatexja-ruby.pdf}.) % %<*ja> -これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが -できる.\ref{ssec-psft}節を参照. -% - -\begin{figure}[!tb] -\begin{LTXexample}[width=0.25\textwidth] -\jfontspec[ - YokoFeatures={Color=007F00}, TateFeatures={Color=00007F}, - TateFont=KozGoPr6N-Regular -]{KozMinPr6N-Regular} -\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト} -\addjfontfeatures{Color=FF0000} -\hbox{\yoko 横組}\hbox{\tate 縦組} -\end{LTXexample} -%\caption{\texttt{TateFeatures} 等の使用例} -%\caption{An example of \texttt{TateFeatures} etc.} -\label{fig:yokotate-fontspec} -\end{figure} +この追加パッケージは,\LuaTeX-jaの機能を利用したルビ(振り仮名)の組版機能を提供する. +前後の文字種に応じた前後への自動進入や, +行頭形・行中形・行末形の自動的な使い分けが特徴である. -\item[Kanjiskip=] -%<*ja> -\pageref{pg:ltjksp}ページで説明した \verb+\jfont+ 中での \texttt{ltjksp} 指定と -同一の効力を持ち, -JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ -\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の有効/無効を切り替える. -標準値は \texttt{true} である. +ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は +使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている. +この節では簡単な使用方法のみ述べる. % -\item[TateFeatures=\{\}\textrm{, }TateFont=] +\begin{description} %<*en> -The \texttt{TateFeatures} key specifies font features which are only turned~on in -vertical writing, such as \texttt{Style=VerticalKana}~(\texttt{vkna} feature). -Similarly, the \texttt{TateFont} key specifies the Japanese font which will be used only - in vertical writing. -A demonstrarion is shown in \autoref{fig:yokotate-fontspec}. + \item[Group-ruby] +By default, ruby characters (the second argument of \cs{ruby}) +are attached to base characters (the first argument), as one object. +This type of ruby is called \emph{group-ruby}. % %<*ja> -縦組において使用されるフォントや,縦組においてのみ適用されるフォント機能達を -指定する.使用例は\autoref{fig:yokotate-fontspec}参照. + \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字, +第2引数にルビを記述する. % +\begin{LTXexample}[width=0.3\textwidth] +東西線\ruby{妙典}{みようでん}駅は……\\ +東西線の\ruby{妙典}{みようでん}駅は……\\ +東西線の\ruby{妙典}{みようでん}という駅……\\ +東西線\ruby{葛西}{かさい}駅は…… +\end{LTXexample} +%<*en> +As the above example, ruby hangover is allowed on the Hiragana before/after +its base characters. +% +% この例のように,標準では前後の平仮名にルビ全角までかかるようになっている. -\item[YokoFeatures=\{\}] %<*en> -The \texttt{YokoFeatures} key specifies font features which are only turned~on in -horizontal writing,. -A demonstrarion is shown in \autoref{fig:yokotate-fontspec}. +\item[Mono-ruby] +To attach ruby characters to each base characters (\emph{mono-ruby}), +one should use \cs{ruby} multiple times: % %<*ja> -同様に,横組においてのみ適用されるフォント機能達を -指定する.使用例は\autoref{fig:yokotate-fontspec}参照. + \item[モノルビ] 親文字を1文字にするとモノルビとなる. +2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも +その数だけ \cs{ruby} を書く必要がある. % - - -\begin{figure}[!tb] -\begin{LTXexample}[pos=b] -\jfontspec[ - AltFont={ - {Range="4E00-"67FF, Color=007F00}, - {Range="6800-"9EFF, Color=0000FF}, - {Range="3040-"306F, Font=KozGoPr6N-Regular}, - } -]{KozMinPr6N-Regular} -日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、 -諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、…… +\begin{LTXexample}[width=0.3\textwidth] +東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は…… \end{LTXexample} -%\caption{\texttt{AltFont} の使用例} -%\caption{An example of \texttt{AltFont}} -\label{fig:altkanji-fontspec} -\end{figure} - -\item[AltFont] %<*en> -As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}) and -\cs{DeclareAlternateKanjiFont}~(Subsection~\ref{ssec-nfsspat}), -with this key, one can typeset some Japanese characters -by a different font and/or using different features. -The \texttt{AltFont} feature takes a comma-separated list of comma-separated lists, -as the following: + \item[Jukugo-ruby] +Vertical bar~\verb+|+ denotes a boundary of \emph{groups}. % %<*ja> -\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や, -\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に, -このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる. -\texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである: + \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し, +複数グループのルビは熟語ルビとして組まれる. +\cite{x4051}にあるように, +どのグループでも「親文字」が対応するルビ以上の長さの場合は +各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる. +\cite{jlreq}で規定されている組み方とは異なるので注意. % -\begin{lstlisting}[escapechar=\#] -AltFont = { - ... - { Range=#\LARG range>#, #\LARG features>#}, - { Range=#\LARG range>#, Font=#\LARG font~name>#, #\LARG features># }, - { Range=#\LARG range>#, Font=#\LARG font~name># }, - ... +\begin{LTXexample} +\ruby{妙|典}{みよう|でん}\ +\ruby{葛|西}{か|さい}\ +\ruby{神楽|坂}{かぐら|ざか} +\end{LTXexample} +%<*en> +If there are multiple groups in one \cs{ruby} call, +A linebreak between two groups is allowed. +% +% 複数ルビではグループとグループの間で改行が可能である. +\begin{LTXexample}[width=0.3\textwidth] +\vbox{\hsize=6\zw\noindent + \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} + \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} + \hbox to 3\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} } -\end{lstlisting} +\end{LTXexample} +\end{description} + %<*en> -Each sublist should have the \texttt{Range} key -(sublist which does not contain \texttt{Range} key is simply ignored). -A demonstrarion is shown in \autoref{fig:altkanji-fontspec}. +If the width of ruby characters are longer than that of base characters, +\cs{ruby} automatically selects the appropriate form +among the line-head form, the line-middle form, and the line-end form. % %<*ja> -各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは -単純に無視される).指定例は\autoref{fig:altkanji-fontspec}に示した. +また,ルビ文字のほうが親文字よりも長い場合は,自動的に +行頭形・行中形・行末形のいずれか適切なものを選択する. % -\end{cslist} +\begin{LTXexample}[width=0.3\textwidth] +\vbox{\hsize=8\zw\noindent +\null\kern3\zw ……を\ruby{承}{うけたまわ}る + \kern1\zw ……を\ruby{承}{うけたまわ}る\\ +\null\kern5\zw ……を\ruby{承}{うけたまわ}る +} +\end{LTXexample} + %<*ja> -なお,\Pkg{luatexja-fontspec} 読み込み時には和文フォント定義ファイル% -\texttt{.fd}は全く参照されなくなる. -% +\subsection{\Pkg{lltjext}} +\pLaTeX では縦組用の拡張として \Pkg{plext} パッケージが用意されていたが, +それを\LuaTeX-ja用に書きなおしたものが本追加パッケージ \Pkg{lltjext} である. +従来の \Pkg{plext} パッケージとの違いは, +{\catcode`\<=12 +\begin{itemize} + \item 組方向オプション \texttt{}(横組),\texttt{}(縦組), +\texttt{}\ の他に\ \texttt{}(dtou方向),\texttt{}(utod方向)を追加した. +\texttt{} と \texttt{} の違いは,\texttt{} が(\Pkg{plext} パッケージと同様に) +周囲の組方向が縦組のときにしか意味を持たない + \footnote{% + 周囲の組方向が縦組以外のときは,\texttt{} を指定しても中身の組方向は周囲の組方向と変わらない. + }% +のに対し,\texttt{} にはそのような制限がないことである. + \item 連数字用命令 \cs{rensuji} における位置合わせオプション \texttt{[l]}, \texttt{[c]}, + \texttt{[r]} の挙動を若干変更した. +\end{itemize} +} +% %<*en> -\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, +\subsection{\texttt{lltjext.sty}} +\pLaTeX\ supplies additional macros for vertical writing in the \Pkg{plext} package. +The \Pkg{lltjext} package which we want to describe here is the \LuaTeX-ja +counterpart of the \Pkg{plext} package. +% + +%<*ja> +念の為,本 \Pkg{lltjext} パッケージで追加・変更している命令の一覧を載せておく. +\begin{cslist} +\item[tabular\textrm{, }array\textrm{, }minipage環境] +これらの環境は, \begin{lstlisting} -AltFont = { - { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, - Range="3000-"30FF, BoldFeatures={Color=007F00} } -} +\begin{tabular}[pos]{table spec} ... \end{tabular} +\begin{array}[pos]{table spec} ... \end{array} +\begin{minipage}[pos]{width} ... \end{minipage} \end{lstlisting} -does \emph{not} work. Instead, one have to write +のように,組方向オプション \texttt{\} が拡張されている. +既に述べたように,組方向オプションに指定できる値は以下の5つであり, +それ以外を指定した時や無指定時は周囲の組方向と同じ組方向になる. +\begin{description} + \item[y] 横組(\cs{yoko}) + \item[t] 縦組(\cs{tate}) + \item[z] 周囲が縦組の時はutod方向,それ以外はそのまま + \item[d] dtou方向 + \item[u] utod方向 +\end{description} +\item[\cs{parbox}\<\>{[]}\{\}\{\}] +\cs{parbox} 命令も同様に,組方向の指定ができるように拡張されている. + +\item[\cs{pbox}\<\>{[][]}\{\}] +組方向の中身をLRモードで組む命令である. +が正の値であるときは,ボックス全体の幅がその値となる. +その際,中身はの値に従い,左寄せ(\texttt{l}),右揃え(\texttt{r}), +中央揃え(それ以外)される. +\item[picture環境] +図表作成に用いる\texttt{picture}環境も, \begin{lstlisting} -UprightFeatures = { - AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } }, -}, -BoldFeatures = { - AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } }, -} +\begin{picture}(x_size, y_size)(x_offset,y_offset) + ... +\end{picture} \end{lstlisting} +と組方向が指定できるように拡張されている. +$x$成分の増加方向は字送り方向,$y$成分の増加方向は行送り方向の\emph{反対方向}となる. +\Pkg{plext} パッケージと同様に +内部ではベースライン補正(\Param{yalbaselineshift}パラメータなど)の影響を受けないように, +\cs{put},~\cs{line}, \cs{vector}, \cs{dashbox}, \cs{oval},~\cs{circle}も +ベースライン補正を受けないように再定義されている. -On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and \texttt{TateFont} -keys can be specified in each list in the \texttt{AltFont} key. Also, -one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}. +\item[\cs{rensuji}{[]}\{\}\textrm{, }\cs{rensujiskip}] -Note that features which are specified in \texttt{YokoFeatures}~and~\texttt{TateFeatures} -are always interpreted \emph{after} other ``direction-independent'' features. -This explains why \cs{addjfontfeatures} at~line~6 in~\autoref{fig:yokotate-fontspec} -has no effect, because a color specification is already done in -\texttt{YokoFeatures}~and~\texttt{TateFeatures} keys. -% -%<*ja> -\paragraph{\texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} 等の制限} -\texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures}の各キーは -シェイプ別に指定されるべきものであり, -内部では \texttt{BoldFeatures} などのシェイプ別の指定は行うことが出来ない. -例えば. +\item[\cs{Kanji}\{\}] + +\item[\cs{kasen}\{\}\textrm{, }\cs{bou}\{\}\textrm{, + }\cs{boutenchar}] + +\item[参照番号] +\end{cslist} +% +%<*en> +\begin{cslist} +\item[tabular\textrm{, }array\textrm{, }minipage\textrm{ environments}] +These environments are extended by \texttt{\}, which specifies the direction, +as follows: \begin{lstlisting} -AltFont = { - { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, - Range="3000-"30FF, BoldFeatures={Color=007F00} } -} +\begin{tabular}[pos]{table spec} ... \end{tabular} +\begin{array}[pos]{table spec} ... \end{array} +\begin{minipage}[pos]{width} ... \end{minipage} \end{lstlisting} -のように指定することは出来ず, +This option permits one of the following five values. If none of them is specified, +the direction inside the environment is same as that outside the enviromnent. +\begin{description} + \item[y] \emph{yoko} direction (horizontal writing) + \item[t] \emph{tate} direction (vertical writing) + \item[z] \emph{utod} direction if direction outside the env.\ is \emph{tate}. + \item[d] \emph{dtou} direction + \item[u] \emph{utod} direction +\end{description} +\item[\cs{parbox}\<\>{[]}\{\}\{\}] +\cs{parbox} command is also extended by \texttt{\<\>}. + +\item[\cs{pbox}\<\>{[][]}\{\}] +This commands typeset in LR-mode, in direction. +If is positive, the width of the box becomes this . +In this case, will be aligned to left (when is \texttt{l}), +center (\texttt{c}), or~right (\texttt{r}). + +\item[picture\textrm{\ environment}] +\texttt{picture} environment also extended by \texttt{\<\>}, as follows: \begin{lstlisting} -UprightFeatures = { - AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } }, -}, -BoldFeatures = { - AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=007F00 } }, -} +\begin{picture}(x_size, y_size)(x_offset,y_offset) + ... +\end{picture} \end{lstlisting} -のように指定しなければならない. -一方,\texttt{AltFont} キー内の各リストでは -\ \texttt{YokoFeatures},~\texttt{TateFeatures} 及び \texttt{TateFont} キーを -指定することは可能であり.また\ \texttt{YokoFeatures},~\texttt{TateFeatures} キーの -中身に \texttt{AltFont} を指定することができる. +\item[\cs{rensuji}{[]}\{\}\textrm{, }\cs{rensujiskip}] -また,\autoref{fig:yokotate-fontspec}後半部では6行目の色の指定が効かず, -2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による色の指定が有効になっ -たままである.これは\emph{\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による -OpenType機能指定は -組方向に依存しないOpenType機能の指定より後に解釈される}からである. +\item[\cs{Kanji}\{\}] + +\item[\cs{kasen}\{\}\textrm{, }\cs{bou}\{\}\textrm{, + }\cs{boutenchar}] + +\item[参照番号] +\end{cslist} +% + +%<*ja> +\paragraph{表組他の揃え位置} +表組(\texttt{array}, \texttt{tabular}環境),\cs{parbox}命令,\cs{minipage}環境の +揃え位置については\autoref{tab:lltjext_dir}を参照.\pLaTeX~2017-07-29と +できるだけ同じ挙動になるようにしている.\autoref{tab:lltjext_dir}中のA--Dの意味は次の通り. + +\begin{table} + \caption{\Pkg{lltjext}パッケージにおける表組・\cs{parbox}命令他の揃え位置} + \label{tab:lltjext_dir} + {\centering + \begin{tabular}{lcccc} + \toprule + ↓中身\周囲→&\cs{yoko}&\cs{tate}&\cs{utod}&\cs{dtou}\\ + \midrule + \cs{yoko}&A&B&B&B\\ + \cs{tate}&B&A&D&C\\ + \cs{utod}&B&D&A&C\\ + \cs{dtou}&B&C&C&A\\ + \bottomrule + \end{tabular}\par} +\end{table} +\begin{description} + \item[A] 周囲の組方向と中身の組方向が同じ場合. + \begin{itemize} + \item \texttt{[t]}指定のとき: + 中身の先頭行のベースラインが周囲のベースラインと一致する. + 表組で先頭行の上に罫線があった場合は,それがベースラインの位置 + \footnote{\LuaTeX-jaでは和文側のベースラインの位置も上下移動できることに注意. + そのため「和文ベースライン」の位置に来るとは限らない.}となる. + \item \texttt{[c]}指定のとき: + 中身の上下の中心が周囲の数式の軸を通る. + \item \texttt{[b]}指定のとき: + 中身の最終行のベースラインが周囲のベースラインと一致する. + 表組で最終行の下に罫線があった場合は,それがベースラインの位置となる. + \end{itemize} + \item[B] 周囲の組方向と中身の組方向が90度ずれている場合. + \begin{itemize} + \item \texttt{[t]}指定のとき: + 表組においては,上端が周囲のベースラインと一致する. + \cs{parbox}や\cs{minipage}環境においては,上端が周囲の和文文字の上端と一致する. + \item \texttt{[c]}指定のとき: + 中身の上下の中心が周囲の数式の軸を通る. + \item \texttt{[b]}指定のとき: + 表組においては,下端が周囲のベースラインと一致する. + \cs{parbox}や\cs{minipage}環境においては,下端が周囲の和文文字の下端と一致する. + \end{itemize} + \item[C] 周囲の組方向と中身の組方向が180度ずれている場合. + \cs{parbox}や\cs{minipage}環境においては,上のBの場合と同じ挙動である.表組においては, + Aで\texttt{[t]}と\texttt{[b]}を入れ替えた + \begin{itemize} + \item \texttt{[t]}指定のとき: + 中身の最終行のベースラインが周囲のベースラインと一致する. + 最終行の下に罫線があった場合は,それがベースラインの位置となる. + \item \texttt{[c]}指定のとき: + 中身の上下の中心が周囲の数式の軸を通る. + \item \texttt{[b]}指定のとき: + 中身の先頭行のベースラインが周囲のベースラインと一致する. + 表組で先頭行の上に罫線があった場合は,それがベースラインの位置となる. + \end{itemize} + \item[D] 通常の縦組(\cs{tate})と「縦数式ディレクション」に相当する\cs{utod}方向が絡んだ場合. + \cs{parbox}や\cs{minipage}環境においては,上のBの場合と同じ挙動である.表組においては, + \begin{itemize} + \item \texttt{[t]}指定のとき: + 中身の先頭行の欧文ベースラインが周囲の欧文ベースラインと一致する. + \item \texttt{[c]}指定のとき: + 中身の上下の中心が周囲の数式の軸を通る. + \item \texttt{[b]}指定のとき: + 中身の最終行の欧文ベースラインが周囲の欧文ベースラインと一致する. + \end{itemize} +\end{description} % +\subsection{\Pkg{luatexja-preset}} +\label{ssec:preset} -\subsection{\Pkg{luatexja-otf}} -\label{ssec-ltjotf} %<*en> -This optional package supports typesetting characters in -Adobe-Japan1 character collection -(or other CID character collection, if the font is supported). -The package \Pkg{luatexja-otf} offers the following 2~low-level -commands: +As described in Subsection~\ref{ssec:preset-abst}, +One can load the \Pkg{luatexja-preset} +package to use several ``presets'' of Japanese fonts. +This package provides functions in a part of \Pkg{japanese-otf} package (changing fonts) +and a part of \Pkg{PXchfon} package (presets) by Takayuki Yato. + +One can specified other options other than listed below. +These are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is +\emph{not} specified; in this case these options are simply ignored.}. +For example, the line~5 in below example is equivalent to lines 1--3. % %<*ja> -この追加パッケージはAdobe-Japan1(フォント自身が持っていれば, -別のCID文字セットでも可)の文字の出力をサポートする. -\Pkg{luatexja-otf}は以下の2つの低レベルコマンドを提供する: +\ref{ssec:preset-abst}節で述べたように,よく使われている和文フォント設定を一行で指定できるようにしたのが +\Pkg{luatexja-preset}パッケージである.このパッケージは, +\Pkg{otf}パッケージの一部(多書体化)と八登崇之氏による\Pkg{PXchfon}パッケージの一部(プリセット指定) +とを合わせたような格好をしている. + +オプションとして,以下のリストにないものも指定することができるが,それらは +\Pkg{luatexja-fontspec}パッケージに渡される\footnote{\texttt{nfssonly} オプションが +指定されていた場合は,\Pkg{luatexja-fontspec}パッケージは読み込まれないので単純に無視され +る.}.例えば,下の1--3行目は5行目のように一行にまとめることができる. % -\begin{cslist} -\item[\cs{CID}\{\}] +\begin{lstlisting} +\usepackage[no-math]{fontspec} +\usepackage[match]{luatexja-fontspec} +\usepackage[kozuka-pr6n]{luatexja-preset} +%%-------- +\usepackage[no-math,match,kozuka-pr6n]{luatexja-preset} +\end{lstlisting} + +\begin{cslist}[before*=] +\item[fontspec% +%\textrm{~(enabled by default)} +%\emph{\gtfamily (既定)} +] +%<*en> +With this option, Japanese fonts are selected using functionality of +the \Pkg{luatexja-fontspec} package. This means that the \Pkg{fontspec} package is + automatically loaded by this package. + +If you need to pass some options to \Pkg{fontspec}, you can load \Pkg{fontspec} manually +before \Pkg{luatexja-preset}: +% +%<*ja> +\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する. +これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する. + +もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある +\footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の +斜体大文字が出なくなる,など.}場合は, +次のように\Pkg{luatexja-preset}の前に\Pkg{fontspec}を手動で読みこめば良い: +% +\begin{lstlisting} +\usepackage[no-math]{fontspec} +\usepackage[...]{luatexja-preset} +\end{lstlisting} + +\item[nfssonly] %<*en> -Typeset a character whose CID number is . +With this option, selecting Japanese fonts won't be performed using the functionality of + the \Pkg{fontspec} package, but only standard NFSS2 (hence without + \cs{addjfontfeatures} etc.). +This option is ignored when \Pkg{luatexja-fontspec} package is loaded. + +When this option is specified, \Pkg{fontspec}~and~\Pkg{luatexja-fontspec} are +\emph{not} loaded by default. Nevertheless, +the package\Pkg{fontspec} can coexist with the option, as the following: +\begin{lstlisting} +\usepackage{fontspec} +\usepackage[hiragino-pron,nfssonly]{luatexja-preset} +\end{lstlisting} +In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fonts. % %<*ja> -CID番号がの文字を出力する. +\LaTeX 標準のフォント選択機構(NFSS2)を用いて +\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ + ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という +3つの和文フォントファミリを定義し,これらを用いる. + +本オプション指定時には\Pkg{fontspec}・\Pkg{luatexja-fontspec}パッケージは +自動では読み込まれない,しかし, +\begin{lstlisting} +\usepackage{fontspec} +\usepackage[hiragino-pron,nfssonly]{luatexja-preset} +\end{lstlisting} +のようにすれば,このオプションを指定すれば +欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる. +一方, +パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて + いる場合は \texttt{nfssonly} オプションは無視される. % -\item[\cs{UTF}\{\}] +\item[match] %<*en> -Typeset a character whose character code is (in hexadecimal). -This command is similar to \verb+\char"+,\ %" -but please remind remarks below. +If this option is specified, usual family-changing commands such as +\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family. +This option is passed to \Pkg{luatexja-fontspec}, if \texttt{fontspec} +option is specifed. % -%<*ja> -文字コードが(16進で)の文字を出力する. -このコマンドは \verb+\char"+と似ているが,下の注意を参照すること.%" -% -\end{cslist} %<*ja> -このパッケージは,マクロ集 \texttt{luatexja-ajmacros.sty}\footnote{\Pkg{otf}パッケージ付属の井上浩一氏によるマクロ集 -\texttt{ajmacros.sty} に対して -漢字コードをUTF-8にしたり,plain \LuaTeX でも利用可能にするという -修正を加えたものである.}\ も自動的に読み込む. -\texttt{luatexja-ajmacros.sty} は, -そのため,\Pkg{luatexja-otf} を読みこめば \texttt{ajmacros.sty} マクロ集にある \cs{aj半角} などのマクロもそのまま使うことができる. +このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\ +\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が +欧文フォントだけでなく和文フォントも変更するようになる. +\ \texttt{fontspec}\ +オプションが有効になっている場合は,このオプションは \Pkg{luatexja-fontspec} パッケージへと渡される. % -%<*en> -This package automatically loads \texttt{luatexja-ajmacros.sty}, which is slightly -modified version of \texttt{ajmacros.sty}\footnote{Useful macros by iNOUE Koich!, for the -\Pkg{japanese-otf} package.}. -Hence one can use macros which sre defined in \texttt{ajmacros.sty}, such as~\cs{aj半角}. -% -%\paragraph{Remarks} -%\paragraph{注意} + +\item[nodeluxe% +%\textrm{~(enabled by default)} +%\emph{\gtfamily (既定)} +] %<*en> -Characters by \cs{CID} and \cs{UTF} commands are different from -ordinary characters in the following points: +The nagation of \texttt{deluxe} option. +Use one-weighted \textit{mincho} and \textit{gothic} font families. +This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and +\verb+\gtfamily\mdseries+ use the same font. % %<*ja> -\cs{CID} と \cs{UTF} コマンドによって出力される文字は -以下の点で通常の文字と異なる: +\texttt{deluxe}オプションの否定. +\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する. +より具体的に言うと,この設定の下では +\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+, +\verb+\gtfamily\mdseries+はみな同じフォントとなる. % -\begin{itemize} +\item[deluxe] %<*en> -\item Always treated as \textbf{JAchar}s. +Use the mincho family with three weights (light, medium, and~bold), +the gothic family with three weights (medium, bold, and extra~bold), and \textit{rounded gothic}% +\footnote{Provided by \cs{mgfamily} and \cs{textmg}, +because ``rounded gothic'' is called \textit{maru gothic} (丸ゴシック) in Japanese.}. +Mincho light and gothic extra~bold can be by +\cs{mcfamily}\cs{ltseries}~and~\cs{gtfamily}\cs{ebseries}, respectively. + +\begin{itemize} + \item Some presets do not have the light weight of mincho. + In this case, we substitute the medium weight for the light weight. + \item \Pkg{luatexja-preset} does not produce an error (only produces a warning), even if + (one of) fonts for \cs{mcfamily}\cs{ltseries}, \cs{gtfamily}\cs{ebseries}, \cs{mgfamily} + do not exist. +\end{itemize} % %<*ja> -\item 常に\textbf{JAchar}として扱われる. +明朝体・ゴシック体各3ウェイトと, +丸ゴシック体 (\cs{mgfamily}, \verb+\textmg{...}+) を利用可能にする. +明朝体は細字・中字・太字の3ウェイトがあり, +明朝体の細字は \cs{mcfamily}\cs{ltseries} で利用できる. +また,ゴシック体は中字・太字・極太の3ウェイトがあり, +ゴシック体の極太は \cs{gtfamily}\cs{ebseries} で利用できる% +\footnote{過去との互換性のため,\cs{gtebfamily}, \cs{textgteb\{...\}} も + 依然として利用可能である.}. + +\begin{itemize} + \item プリセット設定によっては明朝体細字が用意されていないものもある.その場合は + 明朝体中字が代用される. + \item 明朝体細字,ゴシック体極太,丸ゴシック体の3フォントについては + 実際にフォントをロードする前に存在するかチェックを行う. + 存在しなかったものについては警告を発し, + それぞれ明朝体中字.ゴシック体太字,ゴシック体太字で代用する. +\end{itemize} % +\item[expert] %<*en> -\item Processing codes for supporting OpenType features (\textit{e.g.}, - glyph replacement and kerning) by the \Pkg{luaotfload} package - is not performed to these characters. +Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana +characters designed for ruby. % %<*ja> -\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための - \Pkg{luaotfload}パッケージのコードはこれらの文字には働かない. +横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{% + \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では + font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え). +}. % -\end{itemize} - -%\paragraph{Additional syntax of JFM} -%\paragraph{JFMへの記法の追加} - +\item[bold] %<*en> -The package \Pkg{luatexja-otf} extends the syntax of JFM; the entries of \texttt{ -chars} table in JFM now allows a string in the form -\verb+'AJ1-xxx'+, which stands for the character -whose CID number in Adobe-Japan1 is \verb+xxx+. - -This extended notation is used in the standard JFM \texttt{jfm-ujis.lua} -to typeset halfwidth Hiragana glyphs (CID~516--598) in halfwidth. +Substitute bold series of gothic for bold series of mincho. +If \texttt{nodeluxe} option is enabled, medium series of gothic is also changed, +since we use same font for both series of gothic. % %<*ja> -\Pkg{luatexja-otf}パッケージを読み込むと, -JFMの\texttt{chars}テーブルのエントリとして \verb+'AJ1-xxx'+ の形の文字列が -使えるようになる.これはAdobe-Japan1におけるCID番号が \verb+xxx+ の文字を表す. - -この拡張記法は,標準JFM~\texttt{jfm-ujis.lua}で,半角ひらがなのグリフ(CID~516--598)を -正しく半角幅で組むために利用されている. +「明朝の太字」をゴシック体の太字によって代替する. +もし\texttt{nodeluxe}オプションが指定されている場合は,ゴシック体は1ウェイトしか使用されな + いため, +「ゴシック体の中字」も同時に変更されることになる. % - +\item[90jis] +%Use 90JIS glyph variants if possible. +%出来る限り90JISの字形を使う. +\item[jis2004] +%Use JIS2004 glyph variants if possible. +%出来る限りJIS2004の字形を使う. +\item[jfm\_yoko=] %<*en> -\paragraph{IVS support} -Recent fonts support Ideographic Variation Selector (IVS). -\Pkg{luaotfload} and \Pkg{fontspec} packages used to be not supported IVS, -so we implemented experimental IVS support in \Pkg{luatexja-otf}, -which is activated by -\begin{lstlisting} -\directlua{luatexja.otf.enable_ivs()} -\end{lstlisting} -However, recent \Pkg{luaotfload} and \Pkg{fontspec} packages seem to support IVS, -so we don't execute above command anymore. -% -%<*ja> -\paragraph{IVSサポート} -最近のOpenTypeフォントやTrueTypeフォントには, -\texttt{U+E0100}--\texttt{U+E01EF}の範囲の「文字」 -(漢字用異体字セレクタ)を後置することによって -字形を指定する仕組み(IVS)が含まれている. -執筆時点の2013年12月では,\Pkg{luaotfload}や\Pkg{fontspec}パッケージ類は -IVSに対応してはいないようであったため, -\Pkg{luatexja-otf}パッケージ内に試験的なIVS対応を実装した.これは以下の命令の実行で有効になる: -\begin{lstlisting} -\directlua{luatexja.otf.enable_ivs()} -\end{lstlisting} -しかし,現在の\Pkg{luaotfload}や\Pkg{fontspec}パッケージは -IVSに対応しているようであるので,もはや上の命令を実行する必要はない. +Use the JFM \texttt{jfm-.lua} for horizontal direction, instead of \texttt{jfm-ujis.lua}~(default JFM). +% +%<*ja> +横組用和文フォントで用いるJFMを\texttt{jfm-.lua}にする.このオプションがない時は +\LuaTeX\nobreakdash -ja標準の\texttt{jfm-ujis.lua}が用いられる. % - -\subsection{\Pkg{luatexja-adjust}} -\label{ssec-adj} -\begin{figure}[t] -\def\sq{% - \hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{% -  \hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw% - \hskip\dimexpr.5\zw-.2pt\relax}\hss}} -\def\sb{\hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{% - ■\hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw% - \hskip\dimexpr.5\zw-.2pt\relax}\hss}} -\newbox\gridbox -\def\outbox#1{{\Large% - \ltjsetparameter{kanjiskip=0pt plus .2\zw minus .2\zw}% - \setbox\gridbox=\hbox to 20\zw{\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb}% - \hbox{\textcolor{cyan}{\copy\gridbox}\hskip-20\zw% - \vbox{\hsize=20\zw\noindent\leftskip0pt\rightskip0pt\parfillskip0pt#1}\vrule}% -}} - -{\centering -\begin{tabular}{lc} -\toprule -no adjustment&\outbox{以上の原理は,「包除原理」とよく呼ばれるが\hskip-.5\zw\null}\\ -without priority&% -\ltjdisableadjust -\outbox{以上の原理は,「包除原理」とよく呼ばれるが}% -\ltjenableadjust\\ -with priority&% -\outbox{以上の原理は,「包除原理」とよく呼ばれるが} -%\ltjdisableadjust -\\ -\bottomrule -\end{tabular}\par} -\smallskip - -Note: the value of -\Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure, -for making the difference obvious. -%\caption{行長調整}\label{fig:adj} -%\caption{Line adjustment}\label{fig:adj} -\end{figure} - - +\item[jfm\_tate=] %<*en> -(see Japanese version of this manual) +Use the JFM \texttt{jfm-.lua} for vertical direction, instead of \texttt{jfm-ujisv.lua}~(default JFM). % %<*ja> -この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい. -\begin{description} -\item[行末文字の位置調整] - \pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように - 行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった. - 和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず, - 前の文に書いたことを実現するには -\begin{lstlisting} -\def\。{% - \penalty10000 % 禁則ペナルティ - \hbox to0pt{。\hss}\penalty0 % ぶら下げの場合 - \kern.5\zw\penalty0 % 二分取りの場合 - \kern.5\zw\penalty0 % 全角取りの場合 -} -\end{lstlisting} - のような命令を定義し,文中の全ての句点を \lstinline+\。+ で書くことが必要だった. - -\Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を -2通り以上から自動的に選択する機能を提供する. -\pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と - 「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした( -\Pkg{luatexja-adjust}パッケージの既定では前者). - -\item[優先順位付きの行長調整] -\pTeX では,行長調整において優先度の概念が存在しなかったため,図 -\ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵 -括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し -かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい -ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文 -文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている. -\Pkg{luatexja-adjust}パッケージの提供する第2の機能は, -\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き -の行長調整である. -\begin{itemize} - \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである. -そのため,行分割の位置は変化することはない. - -\verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である. - \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は -一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を -行う場合には注意が必要である. -\end{itemize} -\end{description} - -\Pkg{luatexja-adjust}パッケージは,上記で述べた2機能を有効化/無効化するための -以下の命令を提供する.これらはすべてグローバルに効力を発揮する. - -\begin{cslist} -\item[\cs{ltjenableadjust[...]}] -\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」を有効化/無効化する. -指定できるキーは以下の通り. -\begin{description} - \item[\texttt{lineend=[false,true,extended]}] - 行末文字の位置調整の機能を無効化(\texttt{false}),「行分割後に調整」の形で有効化(\texttt{true}), - 「行分割の仮定で考慮」(\texttt{extended})する. - \item[\texttt{priority=[false,true]}] - 優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true})する. -\end{description} -両キーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる. +縦用和文フォントで用いるJFMを\texttt{jfm-.lua}にする.このオプションがない時は +\LuaTeX-ja標準の\texttt{jfm-ujisv.lua}が用いられる. +% + +\item[jis] +%Same as \texttt{jfm\_yoko=jis}. +%\texttt{jfm\_yoko=jis}と同じ.ここで用いるJFM\texttt{jfm-jis.lua}はJISフォントメトリックを元にしたものである. -互換性の為,オプション無しでただ\cs{ltjenableadjust}が呼び出された場合は, -\begin{lstlisting} -\ltjenableadjust[lineend=true,priority=true] -\end{lstlisting} -と扱われる. - -\item[\cs{ltjdisableadjust}] -\Pkg{luatexja-adjust}パッケージの機能を無効化する. -\begin{lstlisting} -\ltjenableadjust[lineend=false,priority=false] -\end{lstlisting} -と同義. \end{cslist} +%<*en> +Note that \texttt{90jis} and \texttt{jis2004} only affect with mincho, +gothic (and, possibly rounded gothic) families defined by this package. +We didn't taken account of when both \texttt{90jis} and \texttt{jis2004} are specified. +% +%<*ja> +\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された +明朝体・ゴシック体(・丸ゴシック体)にのみ有効である. +両オプションが同時に指定された場合の動作については全く考慮していない. +% -また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で -追加される.両パラメータともグローバルに効力を発揮する. +%\paragraph{Presets for multi weight} +%\paragraph{多ウェイト用プリセットの一覧} +%<*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[\DParam{stretch\_priority}\,=\{\}] -\Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を, -「行を自然長より伸ばす」場合の調整に用いる優先度を指定する. - -指定方法は,の中にkey-value listの形で -\begin{lstlisting} -stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50} -\end{lstlisting} -のようにして行う.キー名\texttt{kanjiskip},~\texttt{xkanjiskip}については -そのままの意味であり, -\texttt{others}キーが「\textbf{JAglue}以外のグルー」を表す. -各キーの値は,JFMグルーにおける「優先度$i$」を$10i$に対応させた整数値であり, - 大きい方が先に伸ばされることを意味している. + \item[kozuka-pro] Kozuka Pro (Adobe-Japan1-4) fonts. +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[kozuka-pr6] Kozuka Pr6 (Adobe-Japan1-6) fonts. +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[kozuka-pr6n] Kozuka Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts. -\item[\DParam{shrink\_priority}\,=\{\}] -同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する. -それ以外は\Param{stretch\_priority}と指定の形式は変わらない. -\end{cslist} -初期値は\Param{stretch\_priority}, \Param{shrink\_priority}とも -\begin{lstlisting} -{kanjiskip=-35,xkanjiskip=-25,others=50} -\end{lstlisting} -であり,「優先度$-4$」と指定されているJFMグルーが最も伸び(縮み)にくいようになっている. +%<*en> +Kozuka Pro/Pr6N fonts are bundled with Adobe's software, such as Adobe~InDesign. +There is not rounded gothic family in Kozuka fonts. +% +%<*ja> +小塚Pro書体・Pr6N書体はAdobe InDesign等のAdobe製品にバンドルされている. +「小塚丸ゴシック」は存在しないので,便宜的に小塚ゴシックHによって代用している. % +\begin{center}\small +\begin{tabular}{lllll} +\toprule +\bfseries family&\bfseries series&\ttfamily kozuka-pro&\ttfamily kozuka-pr6&\ttfamily kozuka-pr6n\\ +\midrule + &light&KozMinPro-Light&KozMinProVI-Light&KozMinPr6N-Light\\ +%\textit{mincho}% +%\textgt{明朝}% + &medium&KozMinPro-Regular&KozMinProVI-Regular&KozMinPr6N-Regular\\ + &bold&KozMinPro-Bold&KozMinProVI-Bold&KozMinPr6N-Bold\\ +\midrule + &&KozGoPro-Regular*&KozGoProVI-Regular*&KozGoPr6N-Regular*\\ + &\smash{\raisebox{1.5ex}{medium}} + &KozGoPro-Medium&KozGoProVI-Medium&KozGoPr6N-Medium\\ +\cmidrule(l){2-5} +%\smash{\raisebox{2ex}{\textit{gothic}}}% +%\smash{\raisebox{2ex}{\gt ゴシック}}% + &bold&KozGoPro-Bold&KozGoProVI-Bold&KozGoPr6N-Bold\\ + &extra bold&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&KozGoPro-Heavy&KozGoProVI-Heavy&KozGoPr6N-Heavy\\ +\bottomrule +\end{tabular} +\end{center} + +%\newpage + \item[hiragino-pro] Hiragino Pro (Adobe-Japan1-5) fonts. +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts. -\subsection{\Pkg{luatexja-ruby}} %<*en> -This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations -using callbacks of \LuaTeX-ja. -There is no detailed manual of \Pkg{luatexja-ruby.sty} in English. -(Japanese manual is another PDF file, \url{luatexja-ruby.pdf}.) +Hiragino fonts (except Hiragino~Mincho~W2) are bundled with Mac OS~X 10.5 or later. +Some editions of a Japanese word-processor ``一太郎2012'' includes Hiragino ProN fonts. +Note that fonts for gothic extra~bold (HiraKakuStd[N]-W8) only contains characters in +Adobe-Japan1-3 character collection, while others contains those in +Adobe-Japan1-5 character collection. % %<*ja> -この追加パッケージは,\LuaTeX-jaの機能を利用したルビ(振り仮名)の組版機能を提供する. -前後の文字種に応じた前後への自動進入や, -行頭形・行中形・行末形の自動的な使い分けが特徴である. +ヒラギノフォントは,Mac OS~X以外にも,一太郎2012の上位エディションにもバンドルされている. +極太ゴシック体として用いるヒラギノ角ゴW8は,Adobe-Japan1-3の範囲しかカバーしていない +Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. + +なお,明朝体細字として用いるヒラギノ明朝体W2はOS~Xや一太郎にはバンドルされておらず, +別途購入する必要がある. +% +\begin{center}\small +\begin{tabular}{llll} +\toprule +\bf family&\bf series&\tt hiragino-pro&\tt hiragino-pron\\ +\midrule + &light&Hiragino~Mincho~Pro~W2&Hiragino~Mincho~ProN~W2\\ +%\textit{mincho}% +%\textgt{明朝}% + &medium&Hiragino~Mincho~Pro~W3&Hiragino~Mincho~ProN~W3\\ + &bold&Hiragino~Mincho~Pro~W6&Hiragino~Mincho~ProN~W6\\ +\midrule + &&Hiragino~Kaku~Gothic~Pro~W3*&Hiragino~Kaku~Gothic~ProN~W3*\\ + &\smash{\raisebox{1.5ex}{medium}} + &Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\ +\cmidrule(l){2-4} +%\smash{\raisebox{2ex}{\textit{gothic}}}% +%\smash{\raisebox{2ex}{\gt ゴシック}}% + &bold&Hiragino~Kaku~Gothic~Pro~W6&Hiragino~Kaku~Gothic~ProN~W6\\ + &extra bold&Hiragino~Kaku~Gothic~Std~W8&Hiragino~Kaku~Gothic~StdN~W8\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&Hiragino~Maru~Gothic~Pro~W4&Hiragino~Maru~Gothic~ProN~W4\\ +\bottomrule +\end{tabular} +\end{center} + + \item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts. +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[morisawa-pr6n] Morisawa Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts. +\begin{center}\small +\begin{tabular}{ll>{\tt}l>{\tt}l} +\toprule +\bf family&\bf series&morisawa-pro&morisawa-pr6n\\ +\midrule + &medium&A-OTF-RyuminPro-Light.otf&A-OTF-RyuminPr6N-Light.otf\\ +%\smash{\raisebox{1.5ex}{\textit{mincho}}}% +%\smash{\raisebox{1.5ex}{\gt 明朝}}% + &bold&A-OTF-FutoMinA101Pro-Bold.otf&A-OTF-FutoMinA101Pr6N-Bold.otf\\ +\midrule + &medium + &A-OTF-GothicBBBPro-Medium.otf&A-OTF-GothicBBBPr6N-Medium.otf\\ +%\textit{gothic}% +%\gt ゴシック + &bold&A-OTF-FutoGoB101Pro-Bold.otf&A-OTF-FutoGoB101Pr6N-Bold.otf\\ + &extra bold&A-OTF-MidashiGoPro-MB31.otf&A-OTF-MidashiGoPr6N-MB31.otf\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&A-OTF-Jun101Pro-Light.otf&A-OTF-ShinMGoPr6N-Light.otf\\ +\bottomrule +\end{tabular} +\end{center} + + + \item[yu-win] Yu fonts bundled with Windows~8.1. +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[yu-win10] Yu fonts bundled with Windows~10. +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[yu-osx] Yu fonts bundled with OSX~Mavericks. +\begin{center}\small +\begin{tabular}{lllll} +\toprule +\bf family&\bf series&\texttt{yu-win}&\texttt{yu-win10}&\texttt{yu-osx}\\ +\midrule + &light&YuMincho-Light&YuMincho-Light&(YuMincho~Medium)\\ +%\textit{mincho}% +%\textgt{明朝}% + &medium&YuMincho-Regular&YuMincho-Regular&YuMincho~Medium\\ + &bold&YuMincho-Demibold&YuMincho-Demibold&YuMincho~Demibold\\ +\midrule + &&YuGothic-Regular*&YuGothic-Regular*&YuGothic~Medium*\\ + &\smash{\raisebox{1.5ex}{medium}}% + &YuGothic-Regular&YuGothic-Medium&YuGothic~Medium\\ +\cmidrule(l){2-5} +%\textit{gothic}% +%\gt ゴシック + &bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\ + &extra bold&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&YuGothic-Bold&YuGothic-Bold&YuGothic~Bold\\ +\bottomrule +\end{tabular} +\end{center} + +\item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic. +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] +\item[moga-mobo-ex] MogaExMincho, MogaExGothic, and MoboExGothic. +%\par These fonts can be downloaded from \url{http://yozvox.web.fc2.com/}. +%これらのフォントは \url{http://yozvox.web.fc2.com/} からダウンロードできる. +\begin{center}\small +\begin{tabular}{llll} +\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 + &medium&Moga90Gothic&MogaGothic\\ +%\textit{gothic}% +%\gt ゴシック + &bold&Moga90Gothic Bold&MogaGothic Bold\\ + &extra bold&Moga90Gothic Bold&MogaGothic Bold\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&Mobo90Gothic&MoboGothic\\ +\bottomrule +\end{tabular} +\end{center} +%When \texttt{moga-mobo-ex} is specified, the font ``MogaEx90Mincho'' etc.\ are used. +%\texttt{moga-mobo-ex}オプション指定時にはMogaEx90MinchoなどのExが名前についたフォントが使われる. + +\item[ume] Ume Mincho and Ume Gothic. +%\par These fonts can be downloaded from\\\hfill \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage}. +%これらのフォントは \url{https://ja.osdn.net/projects/ume-font/wiki/FrontPage} からダウンロードできる. +\begin{center}\small +\begin{tabular}{lll} +\toprule +\bf family&\bf series&\bf default\\ +\midrule + &medium&Ume Mincho\\ +%\smash{\raisebox{1.5ex}{\textit{mincho}}}% +%\smash{\raisebox{1.5ex}{\gt 明朝}}% + &bold&Ume Mincho\\ +\midrule + &&Ume Gothic*\\ + &\smash{\raisebox{1.5ex}{medium}}&Ume Gothic O5\\ +\cmidrule(l){2-3} +%\textit{gothic}% +%\gt ゴシック + &bold&Ume Gothic O5\\ + &extra bold&Ume Gothic O5\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&Ume Gothic O5\\ +\bottomrule +\end{tabular} +\end{center} + + \item[sourcehan] Source Han Serif and Source Han Sans fonts (Language-specific OTF \textit{or} OTC) +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[sourcehan-jp] Source Han Serif JP and Source Han Sans JP fonts (Region-specific Subset OTF) +\begin{center}\small +\def\AD#1#2{Source Han #1 #2&Source Han #1 JP #2}% +\begin{tabular}{lllll} +\toprule +\bf family&\bf series&\texttt{sourcehan}&\texttt{sourcehan-jp}\\ +\midrule + &light&\AD{Serif}{Light}\\ +%\textit{mincho}% +%\textgt{明朝}% + &medium&\AD{Serif}{Regular}\\ + &bold&\AD{Serif}{Bold}\\ +\midrule + &&\AD{Sans}{Regular*}\\ + &\smash{\raisebox{1.5ex}{medium}} + &\AD{Sans}{Medium}\\ +\cmidrule(l){2-4} +%\smash{\raisebox{2ex}{\textit{gothic}}}% +%\smash{\raisebox{2ex}{\gt ゴシック}}% + &bold&\AD{Sans}{Bold}\\ + &extra bold&\AD{Sans}{Heavy}\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&\AD{Sans}{Heavy}\\ +\bottomrule +\end{tabular} +\end{center} + + + \item[noto-otc] Noto Serif CJK and Noto Sans CJK fonts (OTC) +% \\*[-\dimexpr\medskipamount+\baselineskip\relax] + \item[noto-otf] Noto Serif CJK and Noto Sans CJK fonts (Language-specific OTF) +\begin{center}\small +\def\AD#1#2{Noto #1 CJK #2&Noto #1 CJK JP #2}% +\begin{tabular}{lllll} +\toprule +\bf family&\bf series&\texttt{noto-otc}&\texttt{noto-otf}\\ +\midrule + &light&\AD{Serif}{Light}\\ +%\textit{mincho}% +%\textgt{明朝}% + &medium&\AD{Serif}{Regular}\\ + &bold&\AD{Serif}{Bold}\\ +\midrule + &&\AD{Sans}{Regular*}\\ + &\smash{\raisebox{1.5ex}{medium}} + &\AD{Sans}{Medium}\\ +\cmidrule(l){2-4} +%\smash{\raisebox{2ex}{\textit{gothic}}}% +%\smash{\raisebox{2ex}{\gt ゴシック}}% + &bold&\AD{Sans}{Bold}\\ + &extra bold&\AD{Sans}{Black}\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&\AD{Sans}{Black}\\ +\bottomrule +\end{tabular} +\end{center} -ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は -使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている. -この節では簡単な使用方法のみ述べる. -% -\begin{description} + +\end{cslist} +%\paragraph{Presets for single weight} +%\paragraph{単ウェイト用プリセット一覧} %<*en> - \item[Group-ruby] -By default, ruby characters (the second argument of \cs{ruby}) -are attached to base characters (the first argument), as one object. -This type of ruby is called \emph{group-ruby}. +Next, we describe settings for using only single weight. % %<*ja> - \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字, -第2引数にルビを記述する. +次に,単ウェイト用の設定を述べる.この4設定では +明朝体太字・丸ゴシック体はゴシック体と同じフォントが用いられる. % -\begin{LTXexample}[width=0.3\textwidth] -東西線\ruby{妙典}{みようでん}駅は……\\ -東西線の\ruby{妙典}{みようでん}駅は……\\ -東西線の\ruby{妙典}{みようでん}という駅……\\ -東西線\ruby{葛西}{かさい}駅は…… -\end{LTXexample} -%<*en> -As the above example, ruby hangover is allowed on the Hiragana before/after -its base characters. -% -% この例のように,標準では前後の平仮名にルビ全角までかかるようになっている. - +\par\nobreak\medskip +{\centering\small +\begin{tabular}{lllll} +\toprule +&\tt noembed&\tt ipa&\tt ipaex&\tt ms\\ +\midrule %<*en> -\item[Mono-ruby] -To attach ruby characters to each base characters (\emph{mono-ruby}), -one should use \cs{ruby} multiple times: +\it mincho&Ryumin-Light (non-embedded) +&IPA Mincho&IPAex Mincho&MS Mincho\\ +\it gothic&GothicBBB-Medium (non-embedded) +&IPA Gothic&IPAex Gothic&MS Gothic\\ % %<*ja> - \item[モノルビ] 親文字を1文字にするとモノルビとなる. -2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも -その数だけ \cs{ruby} を書く必要がある. +\gtfamily 明朝体&Ryumin-Light(非埋込) +&IPA明朝&IPAex明朝&MS明朝\\ +\gtfamily ゴシック体&GothicBBB-Medium(非埋込) +&IPAゴシック&IPAexゴシック&MSゴシック\\ % -\begin{LTXexample}[width=0.3\textwidth] -東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は…… -\end{LTXexample} +\bottomrule +\end{tabular}\par\medskip} +%\paragraph{Using HG fonts} +%\paragraph{HGフォントの利用} %<*en> - \item[Jukugo-ruby] -Vertical bar~\verb+|+ denotes a boundary of \emph{groups}. +We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights. +In the table below, starred fonts (e.g., IPA~Gothic*) are used +only if \texttt{jis2004} or \texttt{nodeluxe} option is spefified. % %<*ja> - \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し, -複数グループのルビは熟語ルビとして組まれる. -\cite{x4051}にあるように, -どのグループでも「親文字」が対応するルビ以上の長さの場合は -各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる. -\cite{jlreq}で規定されている組み方とは異なるので注意. +すぐ前に書いた単ウェイト用設定を,Microsoft Office等に付属するHGフォントを使って +多ウェイト化した設定もある.以下の表では,*~付きのフォント(例:IPAゴシック*)は +\texttt{jis2004}と\texttt{nodeluxe}のいずれかのオプションが有効になっているときに使われる. % -\begin{LTXexample} -\ruby{妙|典}{みよう|でん}\ -\ruby{葛|西}{か|さい}\ -\ruby{神楽|坂}{かぐら|ざか} -\end{LTXexample} -%<*en> -If there are multiple groups in one \cs{ruby} call, -A linebreak between two groups is allowed. -% -% 複数ルビではグループとグループの間で改行が可能である. -\begin{LTXexample}[width=0.3\textwidth] -\vbox{\hsize=6\zw\noindent - \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} - \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} - \hbox to 3\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} -} -\end{LTXexample} -\end{description} - +\par\nobreak\medskip +{\centering\small +\begin{tabular}{lllll} +\toprule +\textbf{family}&\textbf{series}&\tt ipa-hg&\tt ipaex-hg&\tt ms-hg\\ +\midrule %<*en> -If the width of ruby characters are longer than that of base characters, -\cs{ruby} automatically selects the appropriate form -among the line-head form, the line-middle form, and the line-end form. -% -%<*ja> -また,ルビ文字のほうが親文字よりも長い場合は,自動的に -行頭形・行中形・行末形のいずれか適切なものを選択する. +&medium&IPA Mincho&IPAex Mincho&MS Mincho\\ +\smash{\raisebox{1.5ex}{\textit{mincho}}}% +&bold&HG Mincho E&HG Mincho E&HG Mincho E\\\midrule +&&IPA Gothic*&IPAex Gothic*&MS Gothic*\\ +&\smash{\raisebox{1.5ex}{medium}}% +&HG Gothic M&HG Gothic M&HG Gothic M\\\cmidrule{2-5} +\textit{gothic}&bold&HG Gothic E&HG Gothic E&HG Gothic E\\\cmidrule{2-5} +&extra bold&HG Soei Kaku Gothic UB&HG Soei Kaku Gothic UB&HG Soei Kaku Gothic UB\\\midrule +\textit{rounded gothic}&& +HG MaruGothic M PRO&HG MaruGothic M PRO&HG MaruGothic M PRO\\ +% +%<*ja> +&medium&IPA明朝&IPAex明朝&MS明朝\\ +\smash{\raisebox{1.5ex}{\textgt{明朝体}}}% +&bold&HG明朝E&HG明朝E&HG明朝E\\\midrule +&&IPAゴシック*&IPAexゴシック*&MSゴシック*\\ +&\smash{\raisebox{1.5ex}{medium}}% +&HGゴシックM&HGゴシックM&HGゴシックM\\\cmidrule{2-5} +\textgt{ゴシック体}&bold&HGゴシックE&HGゴシックE&HGゴシックE\\\cmidrule{2-5} +&extra bold&HG創英角ゴシックUB&HG創英角ゴシックUB&HG創英角ゴシックUB\\\midrule +\textgt{丸ゴシック体}&& +HG丸ゴシックM-PRO&HG丸ゴシックM-PRO&HG丸ゴシックM-PRO\\ % -\begin{LTXexample}[width=0.3\textwidth] -\vbox{\hsize=8\zw\noindent -\null\kern3\zw ……を\ruby{承}{うけたまわ}る - \kern1\zw ……を\ruby{承}{うけたまわ}る\\ -\null\kern5\zw ……を\ruby{承}{うけたまわ}る -} -\end{LTXexample} - - -%<*ja> -\subsection{\Pkg{lltjext}} -\pLaTeX では縦組用の拡張として \Pkg{plext} パッケージが用意されていたが, -それを\LuaTeX-ja用に書きなおしたものが本追加パッケージ \Pkg{lltjext} である. - -従来の \Pkg{plext} パッケージとの違いは, -{\catcode`\<=12 -\begin{itemize} - \item 組方向オプション \texttt{}(横組),\texttt{}(縦組), -\texttt{}\ の他に\ \texttt{}(dtou方向),\texttt{}(utod方向)を追加した. -\texttt{} と \texttt{} の違いは,\texttt{} が(\Pkg{plext} パッケージと同様に) -周囲の組方向が縦組のときにしか意味を持たない - のに対し,\texttt{} にはそのような制限がないことである. - - \item \Pkg{plext} パッケージでは,表組(\texttt{tabular} 環境,\texttt{align} 環境等)や -\texttt{minipage} 環境,\cs{parbox} 命令において, -垂直位置指定 \texttt{[t]},~\texttt{[b]} の挙動が非読み込み時と微妙に変わることがあった. - -\Pkg{lltjext} パッケージでは,垂直位置指定が\LaTeXe と同様の挙動(以下に示す)に -なるように修正した. -\begin{itemize} - \item \texttt{[t]} オプション指定時は,ボックスのベースラインが中身の1行目のベースライン - (1行目の上に罫線などが来た時は,ボックスの上端)に一致するように配置する. - \item \texttt{[b]} オプション指定時は,ボックスのベースラインが中身の最終行のベースライン - (中身の最後が罫線などの時は,ボックスの下端)に一致するように配置する. - \item それ以外のときは,ボックスの中央が「数式の軸」に一致するように配置する. -\end{itemize} - - \item 連数字用命令 \cs{rensuji} における位置合わせオプション \texttt{[l]}, \texttt{[c]}, - \texttt{[r]} の挙動を若干変更した. +\bottomrule +\end{tabular}\par\medskip} -\end{itemize} -} -% %<*en> -\subsection{\texttt{lltjext.sty}} -\pLaTeX\ supplies additional macros for vertical writing in the \Pkg{plext} package. -The \Pkg{lltjext} package which we want to describe here is the \LuaTeX-ja -counterpart of the \Pkg{plext} package. +Note that HG~Mincho~E, HG~Gothic~E, HG Soei Kaku Gothic UB, and HG Maru Gothic PRO +are internally specified by: +\begin{description} +\item[default] by font name (\texttt{HGMinchoE}, etc.). +\item[{\tt 90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}). +\item[{\tt jis2004}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}). +\end{description} % - %<*ja> -念の為,本 \Pkg{lltjext} パッケージで追加・変更している命令の一覧を載せておく. -\begin{cslist} -\item[tabular\textrm{, }array\textrm{, }minipage環境] -これらの環境は, -\begin{lstlisting} -\begin{tabular}[pos]{table spec} ... \end{tabular} -\begin{array}[pos]{table spec} ... \end{array} -\begin{minipage}[pos]{width} ... \end{minipage} -\end{lstlisting} -のように,組方向オプション \texttt{\} が拡張されている. -既に述べたように,組方向オプションに指定できる値は以下の5つであり, -それ以外を指定した時や無指定時は周囲の組方向と同じ組方向になる. +なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で \begin{description} - \item[y] 横組(\cs{yoko}) - \item[t] 縦組(\cs{tate}) - \item[z] 周囲が縦組の時はutod方向,それ以外はそのまま - \item[d] dtou方向 - \item[u] utod方向 +\item[標準] フォント名(\texttt{HGMinchoE} など) +\item[{\tt 90jis}指定時] ファイル名 (% +\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}) +\item[{\tt jis2004}指定時] ファイル名 (% +\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}) \end{description} -\item[\cs{parbox}\<\>{[]}\{\}\{\}] -\cs{parbox} 命令も同様に,組方向の指定ができるように拡張されている. - -\item[\cs{pbox}\<\>{[][]}\{\}] -組方向の中身をLRモードで組む命令である. -が正の値であるときは,ボックス全体の幅がその値となる. -その際,中身はの値に従い,左寄せ(\texttt{l}),右揃え(\texttt{r}), -中央揃え(それ以外)される. -\item[picture環境] -図表作成に用いる \texttt{picture} 環境も, -\begin{lstlisting} -\begin{picture}(x_size, y_size)(x_offset,y_offset) - ... -\end{picture} -\end{lstlisting} -と組方向が指定できるように拡張されている. -$x$成分の増加方向は字送り方向,$y$成分の増加方向は行送り方向の\emph{反対方向}となる. -\Pkg{plext} パッケージと同様に -内部ではベースライン補正(\Param{yalbaselineshift}パラメータなど)の影響を受けないように, -\cs{put},~\cs{line}, \cs{vector}, \cs{dashbox}, \cs{oval},~\cs{circle}も -ベースライン補正を受けないように再定義されている. - -\item[\cs{rensuji}{[]}\{\}\textrm{, }\cs{rensujiskip}] - -\item[\cs{Kanji}\{\}] - -\item[\cs{kasen}\{\}\textrm{, }\cs{bou}\{\}\textrm{, - }\cs{boutenchar}] - -\item[参照番号] -\end{cslist} +として指定を行っているので注意すること. % -%<*en> -\begin{cslist} -\item[tabular\textrm{, }array\textrm{, }minipage\textrm{ environments}] -These environments are extended by \texttt{\}, which specifies the direction, -as follows: -\begin{lstlisting} -\begin{tabular}[pos]{table spec} ... \end{tabular} -\begin{array}[pos]{table spec} ... \end{array} -\begin{minipage}[pos]{width} ... \end{minipage} -\end{lstlisting} -This option permits one of the following five values. If none of them is specified, -the direction inside the environment is same as that outside the enviromnent. -\begin{description} - \item[y] \emph{yoko} direction (horizontal writing) - \item[t] \emph{tate} direction (vertical writing) - \item[z] \emph{utod} direction if direction outside the env.\ is \emph{tate}. - \item[d] \emph{dtou} direction - \item[u] \emph{utod} direction -\end{description} -\item[\cs{parbox}\<\>{[]}\{\}\{\}] -\cs{parbox} command is also extended by \texttt{\}. - -\item[\cs{pbox}\<\>{[][]}\{\}] -This commands typeset in LR-mode, in direction. -If is positive, the width of the box becomes this . -In this case, will be aligned \dots - -\item[picture\textrm{\ environment}] - -\item[\cs{rensuji}{[]}\{\}\textrm{, }\cs{rensujiskip}] - -\item[\cs{Kanji}\{\}] - -\item[\cs{kasen}\{\}\textrm{, }\cs{bou}\{\}\textrm{, - }\cs{boutenchar}] - -\item[参照番号] -\end{cslist} -% - - +\clearpage %\part{Implementations} %\part{実装} \label{part-imp} @@ -7787,7 +8037,7 @@ for its label before the actual contents. So \dots % %<*ja> 「段落の開始」を意味するノード. -list環境,itemize環境などにおいて,\cs{item} で始まる各項目は…… +\texttt{list}環境,\texttt{itemize}環境などにおいて,\cs{item} で始まる各項目は…… % \item[\textit{direction}] @@ -7803,7 +8053,7 @@ These whatsits will be removed during the process of inserting \textbf{JAglue}s. %\subsection{Stack system of \LuaTeX-ja} %\subsection{\LuaTeX-jaのスタックシステム} -\label{ssec-stack} +\label{ssec:stack} %\paragraph{Background} %\paragraph{背景} @@ -7827,7 +8077,7 @@ source: \end{LTXexample} %<*en> -As described in Subsection~\ref{ssec-param}, the only effective value of +As described in Subsection~\ref{ssec:param}, the only effective value of \Param{kanjiskip} in an hbox is the latest value, so the value of \Param{kanjiskip} which applied in the entire hbox should be 5\,pt. However, by the implementation method of \LuaTeX, this ``5\,pt'' cannot be @@ -7835,7 +8085,7 @@ known from any callbacks. In the \texttt{tex/packaging.w}, which is a file in the source of \LuaTeX, there are the following codes: % %<*ja> -\ref{ssec-param}節で述べたように,あるhboxの中で効力を持つ +\ref{ssec:param}節で述べたように,あるhboxの中で効力を持つ \Param{kanjiskip}の値は最後に現れた値のみであり,したがってボックス全体に適用される \Param{kanjiskip}は5\,ptであるべきである.しかし,\LuaTeX の実 装を観察すると,この5\,ptという長さはどのコールバックからも知ることはできないことがわかる. @@ -8132,7 +8382,7 @@ function luatexja.unary_pars.hoge (t) end \end{lstlisting} Here the argument of \verb+luatexja.unary_pars.hoge+ is -the stack level of \LuaTeX-ja's stack system (see Subsection~\ref{ssec-stack}). +the stack level of \LuaTeX-ja's stack system (see Subsection~\ref{ssec:stack}). On the other hand, for parameters that need an additional argument (this must be an integer), one have to define a function in @@ -8163,7 +8413,7 @@ function luatexja.unary_pars.hoge (t) end \end{lstlisting} を実行すると,\verb+\ltjgetparameter{hoge}+ は \texttt{42} という\emph{文字列}を返す. -関数 \verb+luatexja.unary_pars.hoge+ の引数$t$は,\ref{ssec-stack}節で述べた +関数 \verb+luatexja.unary_pars.hoge+ の引数$t$は,\ref{ssec:stack}節で述べた \LuaTeX-jaのスタックシステムにおけるスタックレベルである. 戻り値はいかなる値であっても,最終的には文字列として出力されることに注意. @@ -8475,6 +8725,8 @@ u \def\OA{$\text{\sf O}_{\text{\sf A}}$} \def\OB{$\text{\sf O}_{\text{\sf B}}$} +\def\NA{$\text{\sf N}_{\text{\sf A}}$} +\def\NB{$\text{\sf N}_{\text{\sf B}}$} \begin{defn} %<*en> A \emph{cluster} is consecutive nodes in one of the following forms, @@ -8669,7 +8921,7 @@ JFMグルーの挿入が行われない(\Param{xkanjiskip},~\Param{kanjiskip} \item[欧文] リスト中に直接/hboxの中身として出現している「\textbf{JAchar}以外の文字」.次の3つの場合が該当: \begin{itemize} \item \textit{id}が\textit{id\_glyph}である. -\item \textit{id}が\textit{id\_math}である. +\item \textit{id}が\textit{id\_math}である(つまりこのクラスタは1つの文中数式をなす). \item \textit{id}が\textit{id\_pbox}か\textit{id\_hlist}か\textit{id\_disc}であって,$\mathit{Np}.\mathit{head}$が\textbf{ALchar}. \end{itemize} \item[箱] box,またはそれに類似するもの.次の2つが該当: @@ -8725,7 +8977,7 @@ $g$は「文字コード \texttt{'boxbdd'} の文字」と\textit{Np}の間に \Param{kcatcode}の最下位ビットはこの\Param{jcharwidowpenalty}用にのみ利用される.}. \subsection{概観と典型例:2つの「和文A」の場合} -\label{ssec-cluster-wa} +\label{ssec:cluster-wa} 先に述べたように,2つの隣り合ったクラスタ,\textit{Nq}と\textit{Np}の間には, ペナルティ,\cs{vadjust},whatsitなど,行組版には関係しないものがある.模式的に表すと, \[ @@ -8891,7 +9143,7 @@ $a$は禁則処理用に\textit{Nq}と\textit{Np}の間に加えられるべき \sf 和文A& \gkf{E}{M→K}{PN}& \gkf{---}{\OA →K}{PN}& -\gkf{---}{\OA →X}{PN}& +\gkf{---}{\NA →X}{PN}& \gkf{---}{\OA}{PA}& \gkf{---}{\OA}{PN}& \gkf{---}{\OA}{PS}\\ @@ -8900,7 +9152,7 @@ $a$は禁則処理用に\textit{Nq}と\textit{Np}の間に加えられるべき \gkf{---}{K}{PS}& \gkf{---}{X}{PS}\\ \sf 欧文& -\gkf{E}{\OB →X}{PA}& +\gkf{E}{\NB →X}{PA}& \gkf{---}{X}{PS}\cr \sf 箱&\gkf{E}{\OB}{PA}\\ \sf glue&\gkf{E}{\OB}{PN}\\ @@ -8951,21 +9203,29 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] \paragraph{和文Aと欧文の間} \textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{欧文}の場合,JFMグルー挿入処理は次のようにして行われる. \begin{itemize} -\item 「右空白」については,まず以下に述べる\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる. +\item 「右空白」については,まず以下に述べる\textsf{欧文境界B~[\NB]}により空白を決定しようと試みる. それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める. %\item 「左空白」については,既に述べた\textsf{line-end~[E]}をそのまま採用する.それに伴う「右空白」の補正も%同じ. \item 禁則用ペナルティも,以前述べた\textsf{P-normal~[PN]}と同じである. \end{itemize} \begin{description} -\item[Boundary-B~{[\OB]}] \textbf{JAchar}と「\textbf{JAchar}でないもの」との間に入る空白を以下によって求め, -未定義でなければそれを「右空白」として採用する. -\textsf{JFM-origin~[M]}の変種と考えて良い. -これによって定まる空白の典型例は,和文の閉じ括弧と欧文文字の間に入る半角アキである. +\item[欧文境界B~{[\NB]}] 以下で求めた量を「右空白」として採用する. +この処理は\textsf{JFM-origin~[M]}の変種と考えて良く, +典型例は「和文の閉じ括弧と欧文文字の間に入る半角アキ」である. \begin{enumerate} \item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合% -(証としてwhatsitノードが自動挿入される),「右空白」は未定義. +(証としてwhatsitノードが自動挿入される),未定義. \item そうでなければ, -\textit{Nq}と「文字コードが {\tt'jcharbdd'} の文字」との間に入るグルー/カーンとして定まる. +\textit{Nq}と「文字コードが$x$の文字」との間に入るグルー/カーンとする. +この$x$は次の場合分けによる: + \begin{itemize} + \item $\mathit{Np}.\mathit{id}$が\textit{id\_math}のとき(つまりクラスタ\textit{Np}が文中数式を表す) + ときは,$x=-1$. + \item \textit{Np}の中身の中身の文字コードについて,「直前への\Param{xkanjiskip}の挿入」が禁止されている +(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが偶数)ときは, + $x=\text{\texttt{'nox\_alchar'}}$. + \item 以上のいずれでもないときは,$x=\text{\texttt{'alchar'}}$. + \end{itemize} \end{enumerate} \item[\Param{xkanjiskip}~{[X]}] この段階では,\textsf{\Param{kanjiskip}~[K]}のときと同じように, @@ -8989,22 +9249,29 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] \paragraph{欧文と和文Aの間} \textit{Nq}が\textsf{欧文}で,\textit{Np}が\textsf{和文A}の場合,JFMグルー挿入処理は上の場合とほぼ同じである. -\textsf{和文A}のクラスタが逆になるので,\textsf{Boundary-A~[\OA]}の部分が変わるだけ. +\textsf{和文A}のクラスタが逆になるので,\textsf{欧文境界B~[\NB]}の部分が変わるだけである. \begin{itemize} -\item 「右空白」については,まず以下に述べる\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる. +\item 「右空白」については,まず以下に述べる\textsf{欧文境界A~[\OA]}により空白を決定しようと試みる. それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める. %\item \textit{Nq}が和文でないので,「左空白」は算出されない. \item 禁則用ペナルティは,以前述べた\textsf{P-normal~[PN]}と同じである. \end{itemize} \begin{description} -\item[Boundary-A~{[\OA]}] 「\textbf{JAchar}でないもの」と\textbf{JAchar}との間に入る空白を以下によって求め, -未定義でなければそれを「右空白」として採用する. -\textsf{JFM-origin~[M]}の変種と考えて良い. -これによって定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである. +\item[欧文境界A~{[\NA]}] これは\textsf{欧文境界B~[\NB]}で\textit{Np}と\textit{Nq}の役割が + 交換されたものと思えば良い. + この処理で定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである. \begin{enumerate} -\item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合(証としてwhatsitノードが自動挿入される),次へ. +\item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合(証としてwhatsitノードが自動挿入される), + 未定義. \item そうでなければ, -「文字コードが {\tt'jcharbdd'} の文字」と\textit{Np}との間に入るグルー/カーンとして定まる. +「文字コードが$x$の文字」と\textit{Np}との間に入るグルー/カーンと定める. +$x$は\textit{Nq}から\textsf{欧文境界B~[\NB]}におけるそれと同じ方法で定めるが, +\texttt{'nox\_alchar'}か\texttt{'alchar'}は +\begin{quote} + \textit{Nq}の中身の文字コードについて,「直後への\Param{xkanjiskip}の挿入」が禁止されている +(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが2以上). +\end{quote} + か否かで判断する. \end{enumerate} \end{description} @@ -9012,9 +9279,8 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] \textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{箱}・グルー・カーンのいずれかであった場合, 両者の間に挿入されるJFMグルーについては同じ処理である.しかし,そこでの行分割に対する仕様が異なるので, ペナルティの挿入処理は若干異なったものとなっている. - \begin{itemize} -\item 「右空白」については,既に述べた\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる. +\item 「右空白」については,以下に述べる\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる. それが失敗した場合は,「右空白」は挿入されない. %\item 「左空白」については,既に述べた\textsf{line-end~[E]}の算出方法をそのまま採用する.それに伴う「右空白」の補正も同じ. \item 禁則用ペナルティの処理は,後ろのクラスタ\textit{Np}の種類によって異なる. @@ -9037,6 +9303,12 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] \end{itemize} \begin{description} +\item[Boundary-B~{[\OB]}] この処理は\textsf{欧文境界B~[\NB]}と同様であり, + $x$が次によって決まることのみが異なる: + \begin{itemize} + \item \textit{Np}がグルーやカーンのときは,$x=\text{\texttt{'glue'}}$. + \item そうでない(\textit{Np}が\textsf{箱})ときは,$x=\text{\texttt{'jcharbdd'}}$. + \end{itemize} \item[P-allow~{[PA]}] \textit{Nq}と\textit{Np}の間の(a)部分にペナルティがあれば,\textsf{P-normal~[PN]}と同様に, それらの各ノードにおいてペナルティ値を$a$だけ増加させる. @@ -9065,7 +9337,7 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] すぐ上の(\textit{Nq}と\textit{Np}の順序が逆になっている)場合と同じである. %が,「左空白」がなくなることにのみ注意. \begin{itemize} -\item 「右空白」については,既に述べた\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる. +\item 「右空白」については,以下に述べる\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる. それが失敗した場合は,「右空白」は挿入されない. %\item \textit{Nq}が和文でないので,「左空白」は算出されない. \item 禁則用ペナルティの処理は,\textit{Nq}の種類によって異なる. @@ -9080,12 +9352,21 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, \end{description} \end{itemize} +\begin{description} +\item[Boundary-A~{[\OA]}] この処理は\textsf{欧文境界A~[\NA]}と同様であり, + $x$が次によって決まることのみが異なる: + \begin{itemize} + \item \textit{Nq}がグルーやカーンのときは,$x=\text{\texttt{'glue'}}$. + \item そうでない(\textit{Nq}が\textsf{箱})ときは,$x=\text{\texttt{'jcharbdd'}}$. + \end{itemize} +\end{description} + \paragraph{和文Aと和文Bの違い} 先に述べたように,\textsf{和文B}はhboxの中身の先頭(or 末尾)として出現している \textbf{JAchar}である.リスト内に直接ノードとして現れている\textbf{JAchar}(\textsf{和文A})との違いは, \begin{itemize} \item \textsf{和文B}に対しては,JFMの文字クラス指定から定まる空白 -\textsf{JFM-origin~[M]},\textsf{Boundary-A~[\OA]},\textsf{Boundary-B~[\OB]})の挿入は行われない. +(\textsf{JFM由来[M]},\textsf{Boundary-A~[\OA]}など)の挿入は行われない. %「左空白」の算出も行われない. 例えば, \begin{itemize} @@ -9108,12 +9389,12 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, あ.A \end{LTXexample} \begin{itemize} -\item 1行目の\cs{inhibitglue}は\textsf{Boundary-B~[\OB]}の処理のみを抑止するので,ピリオドと「A」の間には +\item 1行目の\cs{inhibitglue}は\textsf{欧文境界B~[\NB]}の処理のみを抑止するので,ピリオドと「A」の間には \Param{xkanjiskip}(四分アキ)が入ることに注意. \item 2行目のピリオドと「A」の間においては,前者が\textsf{和文B}となる(hboxの中身の末尾として登場しているから)ので, -そもそも\textsf{Boundary-B~[\OB]}の処理は行われない.よって,\Param{xkanjiskip}が入ることとなる. +そもそも\textsf{欧文境界B~[\NB]}の処理は行われない.よって,\Param{xkanjiskip}が入ることとなる. \item 3行目では,ピリオドの属するクラスタは\textsf{和文A}である.これによって, -ピリオドと「A」の間には\textsf{Boundary-B~[\OB]}由来の半角アキが入ることになる. +ピリオドと「A」の間には\textsf{欧文境界B~[\NB]}由来の半角アキが入ることになる. \end{itemize} % @@ -9295,7 +9576,7 @@ variation selectors are ``combined'' with the previous character. \texttt{vsraw}は,ブール値の値をとるキーであり,標準ではfalseである. \begin{itemize} \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される. -もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は, +もしもIVSサポート(\ref{ssec:ltjotf}節)が有効になっていた場合は, 以下の例(左側は入力,右側はその出力)のようになる. % \begin{LTXexample} @@ -9580,7 +9861,7 @@ the \texttt{lstlisting} environment or other environments/commands. \begin{itemize} \item \textbf{JAglue}ではないグルー \item JFMグルー(優先度\footnote{% - \ref{ssec-jfm-str}節にあるように, + \ref{ssec:jfm-str}節にあるように, 各JFMグルーには$-4$から3までの優先度がついている.場合によっては 伸びと縮みで異なる優先度が付いているかもしれない.}% 別にまとめられる) diff --git a/Master/texmf-dist/source/luatex/luatexja/tool/jisx0208table.tex b/Master/texmf-dist/source/luatex/luatexja/tool/jisx0208table.tex deleted file mode 100644 index f3de6b982ec..00000000000 --- a/Master/texmf-dist/source/luatex/luatexja/tool/jisx0208table.tex +++ /dev/null @@ -1,112 +0,0 @@ -%#! euptex -% cat jisx0208table.log | tr -s '\n' > ../src/luatexja/jisx0208.lua -% の後,少々修正 -\catcode`\!=1 -\catcode`\?=2 - -\catcode`@11 -\def\@firstoftwo#1#2{#1} -\def\@secondoftwo#1#2{#2} -\def\ifnumcomp#1#2#3{% - \ifnum\numexpr#1\relax#2\numexpr#3\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} -\def\truncdiv#1#2{% - \ifnumcomp{#1}<{(#1)/(#2)*(#2)}{% - \numexpr(#1)/(#2)-1% - }{% - \numexpr(#1)/(#2)% - }% -} -\def\hex#1{% - \ifnumcomp{#1}<0{}{\hn@i{#1}{}}% -} -\def\hn@i#1#2{% - \ifnumcomp{#1}<{16} - {% - \hn@digit{#1}#2% - }{% - \expandafter\hn@ii\expandafter{% - \the\numexpr\truncdiv{#1}{16}% - }{#1}{#2}% - }% -} -\def\hn@ii#1#2#3{% - \expandafter\hn@i\expandafter{% - \number\numexpr#1\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter\expandafter}% - \expandafter\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter{% - \hn@digit{(#2)-16*(#1)}#3}% -} -\begingroup -\catcode`012\catcode`112\catcode`212\catcode`312\catcode`412 -\catcode`512\catcode`612\catcode`712\catcode`812\catcode`912 -\catcode`A12\catcode`B12\catcode`C12\catcode`D12\catcode`E12 -\catcode`F12 -\gdef\hn@digit#1{% - \ifcase\numexpr#1\relax 0% - \or \expandafter 1% - \or \expandafter 2% - \or \expandafter 3% - \or \expandafter 4% - \or \expandafter 5% - \or \expandafter 6% - \or \expandafter 7% - \or \expandafter 8% - \or \expandafter 9% - \or \expandafter A% - \or \expandafter B% - \or \expandafter C% - \or \expandafter D% - \or \expandafter E% - \or \expandafter F% - \fi -} -\endgroup - - -\catcode`\{=12 -\catcode`\}=12 -\def\folio!? - -\newcount\ku -\newcount\ten -\newcount\tmp -\newcount\tmpa -\newcount\tmpb -\font\tt=cmtt10 at 10pt\tt\baselineskip=12pt\parindent=0pt\parskip=0pt - -\catcode`\_=12 -\message!^^Jluatexbase.provides_module({? -\message!^^J name = 'luatexja.jisx0208'})? -\message!^^Jmodule('luatexja.jisx0208', package.seeall)? -\message!^^Jtable_jisx0208_uptex = {? - -\ku=1 -\loop - \tmp=\ku \multiply\tmp"100 \advance\tmp"2020 %" - ! \ten=1 - \loop - \advance\tmp1 - \tmpa=\jis\tmp \tmpb=\tmp\advance\tmpb-"2020%" - \ifnum\tmpa=0\else - \ifnum\tmpa>256 - \kansujichar1=\tmpa - \message!^^J [0x\hex\tmpb] = 0x\hex\tmpa, --(\kansuji1)? - \else - \message!^^J [0x\hex\tmpb] = 0x\hex\tmpa, ? - \fi - \fi - \advance\ten 1 - \ifnum\ten<95\relax\repeat - ? - \advance\ku 1 -\ifnum\ku<95\relax\repeat - -\message!^^J}? - -\end diff --git a/Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua b/Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua new file mode 100644 index 00000000000..cf898a47b21 --- /dev/null +++ b/Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua @@ -0,0 +1,32 @@ +print([[ +return { +version = 2, +table_ivd_aj1 = {]]) + +local f = io.open('IVD_Sequences.txt') +local t, maxcid = {}, 0 +local s = f:read() +while s do + if s:match('#') then + print('-- ' .. s) + elseif s:match('Adobe.Japan.') then + local c1,c2,c3 = s:match('(%x+)%s+(%x+);%s+Adobe.Japan.;%s+CID%+(%d+)') + c1, c2, c3 = tonumber(c1, 16), tonumber(c2, 16), tonumber(c3) + if c2 and c2>=0xE0100 then + c2 = c2 - 0xE00FF + if maxcid ../src/luatexja/jisx0208.lua +% の後,少々修正 +\catcode`\!=1 +\catcode`\?=2 + +\catcode`@11 +\def\@firstoftwo#1#2{#1} +\def\@secondoftwo#1#2{#2} +\def\ifnumcomp#1#2#3{% + \ifnum\numexpr#1\relax#2\numexpr#3\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\truncdiv#1#2{% + \ifnumcomp{#1}<{(#1)/(#2)*(#2)}{% + \numexpr(#1)/(#2)-1% + }{% + \numexpr(#1)/(#2)% + }% +} +\def\hex#1{% + \ifnumcomp{#1}<0{}{\hn@i{#1}{}}% +} +\def\hn@i#1#2{% + \ifnumcomp{#1}<{16} + {% + \hn@digit{#1}#2% + }{% + \expandafter\hn@ii\expandafter{% + \the\numexpr\truncdiv{#1}{16}% + }{#1}{#2}% + }% +} +\def\hn@ii#1#2#3{% + \expandafter\hn@i\expandafter{% + \number\numexpr#1\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\expandafter}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter{% + \hn@digit{(#2)-16*(#1)}#3}% +} +\begingroup +\catcode`012\catcode`112\catcode`212\catcode`312\catcode`412 +\catcode`512\catcode`612\catcode`712\catcode`812\catcode`912 +\catcode`A12\catcode`B12\catcode`C12\catcode`D12\catcode`E12 +\catcode`F12 +\gdef\hn@digit#1{% + \ifcase\numexpr#1\relax 0% + \or \expandafter 1% + \or \expandafter 2% + \or \expandafter 3% + \or \expandafter 4% + \or \expandafter 5% + \or \expandafter 6% + \or \expandafter 7% + \or \expandafter 8% + \or \expandafter 9% + \or \expandafter A% + \or \expandafter B% + \or \expandafter C% + \or \expandafter D% + \or \expandafter E% + \or \expandafter F% + \fi +} +\endgroup + + +\catcode`\{=12 +\catcode`\}=12 +\def\folio!? + +\newcount\ku +\newcount\ten +\newcount\tmp +\newcount\tmpa +\newcount\tmpb +\font\tt=cmtt10 at 10pt\tt\baselineskip=12pt\parindent=0pt\parskip=0pt + +\catcode`\_=12 +\message!^^Jluatexbase.provides_module({? +\message!^^J name = 'luatexja.jisx0208'})? +\message!^^Jmodule('luatexja.jisx0208', package.seeall)? +\message!^^Jtable_jisx0208_uptex = {? + +\ku=1 +\loop + \tmp=\ku \multiply\tmp"100 \advance\tmp"2020 %" + ! \ten=1 + \loop + \advance\tmp1 + \tmpa=\jis\tmp \tmpb=\tmp\advance\tmpb-"2020%" + \ifnum\tmpa=0\else + \ifnum\tmpa>256 + \kansujichar1=\tmpa + \message!^^J [0x\hex\tmpb] = 0x\hex\tmpa, --(\kansuji1)? + \else + \message!^^J [0x\hex\tmpb] = 0x\hex\tmpa, ? + \fi + \fi + \advance\ten 1 + \ifnum\ten<95\relax\repeat + ? + \advance\ku 1 +\ifnum\ku<95\relax\repeat + +\message!^^J}? + +\end diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-24.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-24.sty deleted file mode 100644 index dd6bd5b284c..00000000000 --- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-24.sty +++ /dev/null @@ -1,358 +0,0 @@ -% -% luatexja-fontspec-24.sty -% - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luatexja-fontspec-24}[2017/04/19 fontspec support of LuaTeX-ja] -\RequirePackage{l3keys2e,luatexja} -\ExplSyntaxOn - -%%%%%%%% Change Japanese font family by \rmfamily or not -\cs_new:Npn \ltj_fontspec_match_cmd { - \renewcommand\jttdefault{\gtdefault} - \@ltj@match@familytrue - \DeclareDocumentCommand \setmonojfont { O{} m } { - \ltj_fontspec_set_family:Nnn \jttdefault {##1}{##2} - \normalfont - } -} -\bool_if:NT \ltj_fontspec_match_bool \ltj_fontspec_match_cmd -%%%%%%%% Messages - -\msg_new:nnn {luatexja-fontspec} {addjfontfeatures-ignored} -{ - \string\addjfontfeature (s)~ ignored;\\ - it~ cannot~ be~ used~ with~ a~ font~ that~ wasn't~ selected~ by~ luatexja-fontspec. -} - -\msg_new:nnn {luatexja-fontspec} {altfont-ignored-by-norange} -{ - ignored~ sublist~ `#1'~ in~ AltFont~ (no~ range~ is~ specified). -} - -\msg_new:nnn {luatexja-fontspec} {altfont-ignored-by-rangeonly} -{ - ignored~ sublist~ `#1'~ in~ AltFont~ (only~ range~ is~ specified). -} - -\cs_generate_variant:Nn \prg_new_conditional:Nnn {Nnx} - -%%%%%%%% Internal control sequences -%% Each CS is ltj_fontspec version that corresponds to original CS of fontspec. -\cs_new:Nn \ltj_fontspec_define_option:nn { - \__fontspec_keys_define_code:nnn {fontspec} {#1} {#2} -} -\cs_new:Nn \ltj_fontspec_define_preparse_external:nn { - \__fontspec_keys_define_code:nnn {fontspec-preparse-external} {#1} {#2} -} -\cs_new:Nn \ltj_fontspec_define_altfont_option:nn { - \__fontspec_keys_define_code:nnn {fontspec-ltjaltfont} {#1} {#2} -} - -%% Alternate Fonts -%% Spec: AltFont = { -%% ... -%% { Range = , }, -%% { Range = , Font = , }, -%% { Range = , Font = }, -%% ... -%% } -\tl_new:N \l_ltj_fontspec_altname_tl -\tl_new:N \l_ltj_fontspec_altrange_tl -\clist_new:N \l_ltj_fontspec_altfont_clist -\clist_new:N \l_ltj_fontspec_altfont_leftover_clist -\int_new:N \g_ltj_fontspec_altnumber_int - -\ltj_fontspec_define_altfont_option:nn {Range} { - \tl_set:Nn \l_ltj_fontspec_altrange_tl {#1} -} -\ltj_fontspec_define_altfont_option:nn {Font} { - \fontspec_complete_fontname:Nn \l_ltj_fontspec_altname_tl {#1} -} -\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {AltFont} { - \clist_put_right:Nn \l_ltj_fontspec_altfont_clist { #1 } -} -\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {YokoFeatures} { - \clist_put_right:Nn \l_ltj_fontspec_fontfeat_yoko_clist { #1 } -} -\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {TateFeatures} { - \clist_put_right:Nn \l_ltj_fontspec_fontfeat_tate_clist { #1 } -} -\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {TateFont} { - \tl_if_empty:nF {#1} { - \fontspec_complete_fontname:Nn \l_ltj_fontspec_fontname_tate_tl {#1} - } -} -%% -\clist_new:N \l_ltj_fontspec_fontfeat_yoko_clist -\clist_new:N \l_ltj_fontspec_fontfeat_tate_clist -\tl_new:N \l_ltj_fontspec_fontname_tate_tl - -\cs_new:Npn \ltj_fontspec_DeclareFontFamily #1 #2 #3 { - \DeclareKanjiFamily {JY3} {#2} {#3} - \DeclareKanjiFamily {JT3} {#2} {#3} -} - -\cs_set_eq:NN \__ltj_orig_fontspec_select:nn \fontspec_select:nn -\cs_new:Nn \ltj_fontspec_select:nn { - \group_begin: - \ltj_fontspec_define_option:nn {AltFont} { - \clist_put_right:Nn \l_ltj_fontspec_altfont_clist {##1} - } - \ltj_fontspec_define_option:nn {CID} { - \__fontspec_update_featstr:n {cid=##1} - } - \ltj_fontspec_define_option:nn {Kanjiskip} { - \str_if_eq_x:nnTF {false} { \str_lower_case:n { ##1 } }{ - \__fontspec_update_featstr:n {-ltjksp} - } { - \__fontspec_update_featstr:n {+ltjksp} - } - } - \ltj_fontspec_define_option:nn {JFM} { - \__fontspec_update_featstr:n {jfm=##1} - } - % vary by shape - \ltj_fontspec_define_option:nn {YokoFeatures} { - \clist_put_right:Nn \l_ltj_fontspec_fontfeat_yoko_clist { ##1 } - } - \ltj_fontspec_define_option:nn {TateFeatures} { - \clist_put_right:Nn \l_ltj_fontspec_fontfeat_tate_clist { ##1 } - } - \ltj_fontspec_define_option:nn {TateFont} - { - \tl_if_empty:nF {##1} { - \fontspec_complete_fontname:Nn \l_ltj_fontspec_fontname_tate_tl {##1} - } - } - \ltj_fontspec_define_option:nn {JFM-var} { - \__fontspec_update_featstr:n {jfmvar=##1} - } - \ltj_fontspec_define_preparse_external:nn {NoEmbed} { - \cs_set:Nn \__fontspec_namewrap:n {psft:####1} - } - %% Omit the warning message - %% "OpenType feature 'Kerning=Off' (-kern) not available ..." - \ltj_fontspec_define_option:nn {Kerning/Off} { - \__fontspec_update_featstr:n {-kern} - } - \clist_set:Nx \g__fontspec_default_fontopts_clist { - YokoFeatures = { JFM=ujis }, TateFeatures = { JFM=ujisv }, - Scale=\fp_use:N \g_ltj_fontspec_scale_fp, Kerning=Off, Script=CJK, - \g__ltj_fontspec_default_fontopts_clist - } - \prop_set_eq:NN \g__fontspec_fontopts_prop \g__ltj_fontspec_fontopts_prop - \cs_set_eq:NN \__fontspec_make_font_shapes:Nnnnn \ltj_fontspec_make_font_shapes:Nnnnn - \cs_set_eq:NN \DeclareFontFamily \ltj_fontspec_DeclareFontFamily - \tl_set:Nn \g_fontspec_encoding_tl {JY3} - \__ltj_orig_fontspec_select:nn{#1}{#2} - \group_end: -} - -%% declare_shape - -\cs_new:Nn \ltj_fontspec_declare_shape_yoko:nnnn { - \ltj_fontspec_declare_shape_aux:nnnnnn {#1} {#2} {#3} {#4} { JY3 } { \l_ltj_fontspec_fontfeat_yoko_clist } -} -\cs_new:Nn \ltj_fontspec_declare_shape_tate:nnnn { - \ltj_fontspec_declare_shape_aux:nnnnnn {#1} {#2} {#3} {#4} { JT3 } { \l_ltj_fontspec_fontfeat_tate_clist } -} -\cs_new:Nn \ltj_fontspec_declare_shape:nnnn { - \ltj_fontspec_declare_shape_yoko:nnnn {#1} {#2} {#3} {#4} - \ltj_fontspec_declare_shape_tate:nnnn {#1} {#2} {#3} {#4} -} -\cs_generate_variant:Nn \ltj_fontspec_declare_shape:nnnn {nnxx} -\cs_generate_variant:Nn \ltj_fontspec_declare_shape_yoko:nnnn {nnxx} -\cs_generate_variant:Nn \ltj_fontspec_declare_shape_tate:nnnn {nnxx} - -\cs_new:Nn \ltj_fontspec_declare_shape_aux:nnnnnn - { - \tl_clear:N \l__fontspec_nfss_tl - \tl_clear:N \l__fontspec_nfss_sc_tl - \tl_set_eq:NN \l__fontspec_saved_fontname_tl \l_fontspec_fontname_tl - - \tl_set:Nn \g_fontspec_encoding_tl {#5} - \tl_set:Nn \l__fontspec_nfss_enc_tl {#5} - \exp_args:Nx \clist_map_inline:nn {#4} - { - \tl_clear:N \l__fontspec_size_tl - \tl_set_eq:NN \l__fontspec_sizedfont_tl \l__fontspec_saved_fontname_tl % in case not spec'ed - - \keys_set_known:nxN {fontspec-sizing} { \exp_after:wN \use:n ##1 } - \l__fontspec_sizing_leftover_clist - \tl_if_empty:NT \l__fontspec_size_tl { \__fontspec_error:n {no-size-info} } - - \str_if_eq:nnTF { #5 } { JY3 } { - % "normal" - \__fontspec_load_fontname:n {\l__fontspec_sizedfont_tl} - } { - \tl_if_empty:NTF \l_ltj_fontspec_fontname_tate_tl - { \__fontspec_load_fontname:n {\l__fontspec_sizedfont_tl} } - { \__fontspec_load_fontname:n {\l_ltj_fontspec_fontname_tate_tl} } - } - \__fontspec_setup_nfss:Nnn \l__fontspec_nfss_tl {#3} {#6} - } - \bool_set_true:N \l__fontspec_nosc_bool - \__fontspec_declare_shapes_normal:nn {#1} {#2} - \__fontspec_declare_shape_slanted:nn {#1} {#2} - } - -\cs_new:Nn \ltj_fontspec_set_family:Nnn { - \cs_set_eq:NN \fontspec_select:nn \ltj_fontspec_select:nn - \__ltj_orig_fontspec_set_family:Nnn #1 {#2} {#3} - \cs_set_eq:NN \fontspec_select:nn \__ltj_orig_fontspec_select:nn -} -\cs_set_eq:NN \__ltj_orig_fontspec_set_family:Nnn \fontspec_set_family:Nnn -\cs_set_eq:NN \__ltj_orig_fontspec_make_font_shapes:Nnnnn \__fontspec_make_font_shapes:Nnnnn -\cs_set_eq:NN \__ltj_fontspec_orig_DeclareFontShape \DeclareFontShape - -\cs_new:Nn \ltj_fontspec_make_font_shapes:Nnnnn { - \group_begin: - %% 基底フォント - \cs_set_eq:NN \__fontspec_font_set:Nnn \use_none:nnn - \cs_set_eq:NN \__fontspec_font_if_null:NT \use_none:nn - \cs_set_eq:NN \__fontspec_declare_shape:nnxx \ltj_fontspec_declare_shape:nnxx - \__ltj_orig_fontspec_make_font_shapes:Nnnnn {#1} {#2} {#3} {#4} {#5} - %% - \ltj_fontspec_make_font_shapes_alt:Nnnnnn {#1}{#2}{#3} - {#4, \l_ltj_fontspec_fontfeat_yoko_clist}{#5} {JY3 } - \ltj_fontspec_make_font_shapes_alt:Nnnnnn {#1}{#2}{#3} - {#4, \l_ltj_fontspec_fontfeat_tate_clist}{#5} {JT3} - \group_end: - } - -%%% Altfont 内部処理部 -\cs_new:Nn \ltj_fontspec_make_font_shapes_alt:Nnnnnn { - \group_begin: - \str_if_eq:nnTF { #6 } { JY3 } { - \cs_set_eq:NN \__fontspec_declare_shape:nnxx \ltj_fontspec_declare_shape_yoko:nnxx - }{ - \cs_set_eq:NN \__fontspec_declare_shape:nnxx \ltj_fontspec_declare_shape_tate:nnxx - } - \keys_set_known:nn {fontspec-ltjaltfont-reparse} { #4 } - \clist_if_empty:NF \l_ltj_fontspec_altfont_clist { - \int_gzero:N \g_ltj_fontspec_altnumber_int - \clist_map_inline:Nn \l_ltj_fontspec_altfont_clist { - \tl_clear:N \l_ltj_fontspec_altrange_tl - \tl_set:Nn \l_ltj_fontspec_altname_tl { #1 } - \tl_set:Nn \l_tmpa_tl { #1 } - - \keys_set_known:nxN {fontspec-ltjaltfont} { \exp_after:wN \use:n ##1 } - \l_ltj_fontspec_altfont_leftover_clist - \keys_set_known:nn {fontspec-ltjaltfont-reparse} { \exp_after:wN \use:n ##1 } - - \tl_if_empty:NT \l_ltj_fontspec_altrange_tl { - \msg_warning:nnn {luatexja-fontspec} {altfont-ignored-by-norange} { ##1 } - } { - \bool_if:nTF { - \tl_if_eq_p:NN \l_ltj_fontspec_altname_tl \l_tmpa_tl - && - \tl_if_empty_p:N \l_ltj_fontspec_altfont_leftover_clist - } { - \msg_warning:nnn {luatexja-fontspec} {altfont-ignored-by-rangeonly} { ##1 } - } { - \__ltj_orig_fontspec_make_font_shapes:Nnnnn - { \l_ltj_fontspec_altname_tl } {#2} - {#3 _ alt \int_use:N \g_ltj_fontspec_altnumber_int } - {#4, \l_ltj_fontspec_altfont_leftover_clist } - {#5} - \DeclareAlternateKanjiFont - { #6 }{ \l_fontspec_family_tl }{#2}{#3}% - { #6 }{ \l_fontspec_family_tl }{#2} - { #3 _alt \int_use:N \g_ltj_fontspec_altnumber_int } - { \l_ltj_fontspec_altrange_tl } - \int_gincr:N \g_ltj_fontspec_altnumber_int - } - } - } - } - \group_end: -} - - -%%%%%%%% User commands -\DeclareDocumentCommand \jfontspec { O{} m O{} } { - \ltj_fontspec_set_family:Nnn \k@family {#1,#3}{#2} - \selectfont - \ignorespaces -} - -\DeclareDocumentCommand \setmainjfont { O{} m O{} } { - \ltj_fontspec_set_family:Nnn \mcdefault {#1,#3}{#2} - \DeclareSymbolFont{mincho}{JY3}{\l_fontspec_family_tl}{m}{n} - \SetSymbolFont{mincho}{bold}{JY3}{\l_fontspec_family_tl}{bx}{n} - \normalfont -} - -\DeclareDocumentCommand \setsansjfont { O{} m O{} } { - \ltj_fontspec_set_family:Nnn \gtdefault {#1,#3}{#2} - \DeclareMathAlphabet{\mathgt}{JY3}{\l_fontspec_family_tl}{m}{n} - \normalfont -} - -\DeclareDocumentCommand \newjfontfamily { m O{} m O{} } { - \cs_set_eq:NN \fontspec_set_family:Nnn \ltj_fontspec_set_family:Nnn - \newfontfamily #1 [#2,#4] {#3} - \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn -} - -\DeclareDocumentCommand \newjfontface { m O{} m O{} } { - \newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} -} - -\clist_new:N \g__ltj_fontspec_default_fontopts_clist -\prop_new:N \g__ltj_fontspec_fontopts_prop -\DeclareDocumentCommand \defaultjfontfeatures { t+ o m } - { - \IfNoValueTF {#2} - { \__ltj_fontspec_set_default_features:nn {#1} {#3} } - { \__ltj_fontspec_set_font_default_features:nnn {#1} {#2} {#3} } - \ignorespaces - } -\cs_new:Nn \__ltj_fontspec_set_default_features:nn - { - \clist_set_eq:NN \l__ltj_fontspec_tmp_clist \g__fontspec_default_fontopts_clist - \clist_set_eq:NN \g__fontspec_default_fontopts_clist \g__ltj_fontspec_default_fontopts_clist - \__fontspec_set_default_features:nn {#1} {#2} - \clist_set_eq:NN \g__ltj_fontspec_default_fontopts_clist \g__fontspec_default_fontopts_clist - \clist_set_eq:NN \g__fontspec_default_fontopts_clist \l__ltj_fontspec_tmp_clist - } -\cs_new:Nn \__ltj_fontspec_set_font_default_features:nnn - { - \prop_set_eq:NN \l__ltj_fontspec_tmp_prop \g__fontspec_fontopts_prop - \prop_set_eq:NN \g__fontspec_fontopts_prop \g__ltj_fontspec_fontopts_prop - \__fontspec_set_font_default_features:nnn {#1} {#2} {#3} - \prop_set_eq:NN \g__ltj_fontspec_fontopts_prop \g__fontspec_fontopts_prop - \prop_set_eq:NN \g__fontspec_fontopts_prop \l__ltj_fontspec_tmp_prop - } - -\DeclareDocumentCommand \addjfontfeatures {m} { - \ltj_fontspec_if_fontspec_font:TF - { - \group_begin: - \tl_set_eq:NN \f@family \k@family - \cs_set_eq:NN \fontspec_select:nn \ltj_fontspec_select:nn - \addfontfeatures {#1} - \group_end: - \fontfamily\l_fontspec_family_tl\selectfont - }{ - \msg_warning:nn {luatexja-fontspec} {addjfontfeatures-ignored} - } - \ignorespaces -} - -\cs_set_eq:NN \addjfontfeature \addjfontfeatures - -\prg_new_conditional:Nnn \ltj_fontspec_if_fontspec_font: {TF,T,F} -{ - \cs_if_exist:cTF {g__fontspec_ \k@family _prop} \prg_return_true: \prg_return_false: -} - -%%% CJKShape=JIS2004 -\__fontspec_define_feature_option:nnnnn{CJKShape}{JIS2004}{20}{100}{+jp04} -%%% CharacterWidth={VerticalAlternateProportional, VerticalAlternateHalf} -\__fontspec_define_feature_option:nnnnn{CharacterWidth}{VerticalAlternateProportional}{22}{100}{+vpal} -\__fontspec_define_feature_option:nnnnn{CharacterWidth}{VerticalAlternateHalf}{22}{101}{+vhal} -\__fontspec_define_feature_option:nnnnn{Kerning}{Vertical} {}{}{+vkrn} - -\endinput diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec.sty index c3ae22a79f2..848eedbd68a 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luatexja-fontspec}[2017/05/05 fontspec support of LuaTeX-ja] +\ProvidesPackage{luatexja-fontspec}[2017/06/25 fontspec support of LuaTeX-ja] \RequirePackage{l3keys2e,luatexja} \ExplSyntaxOn @@ -26,10 +26,11 @@ unknown .code:n = \PassOptionsToPackage { \l_keys_key_tl } {fontspec}, } \ProcessKeysOptions{ luatexja-fontspec } -\RequirePackage{fontspec}[2014/06/01]% v2.4 -\@ifpackagelater{fontspec}{2017/01/01}% - {\RequirePackage{luatexja-fontspec-25c}}% v2.5c - {\RequirePackage{luatexja-fontspec-24}}% --v2.5a +\RequirePackage{fontspec}[2017/01/01]% v2.5c +\RequirePackage{luatexja-fontspec-25c} +%\@ifpackagelater{fontspec}{2017/01/01}% +% {\RequirePackage{luatexja-fontspec-25c}}% v2.5c +% {\RequirePackage{luatexja-fontspec-24}}% --v2.5a \ExplSyntaxOff %%%%%%%% Now we completely ignore kanjifont definition file. diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-otf.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-otf.sty index 845b1a2aa74..ad421d0e1d4 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-otf.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-otf.sty @@ -64,7 +64,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-otf}[2017/05/05] + \ProvidesPackage{luatexja-otf}[2017/05/20] \fi % % Load core module if not yet. @@ -97,8 +97,107 @@ \RequirePackage{luatexja-ajmacros} \else %<*!LaTeX> \input luatexja-ajmacros.sty % + % \bou is defined in lltjext, \mbox is defined in LaTeX kernel + \def\boutenchar{\char\euc"A1A2}%" + \def\bou#1{\ifvmode\leavevmode\fi\@bou#1\end} + \def\@bou#1{% + \ifx#1\end \let\next=\relax + \else + \ifnum\ltjgetparameter{direction}=3\relax + \hbox to\z@{\vbox to\z@{\boxmaxdepth\maxdimen + \vss\moveleft0.2\zw\hbox{\yoko\boutenchar}\nointerlineskip + \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax + \else + \hbox to\z@{\vbox to\z@{\boxmaxdepth\maxdimen + \vss\moveleft-0.2\zw\hbox{\boutenchar}\nointerlineskip + \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax + \fi + \let\next=\@bou + \fi\next} + \long\def\mbox#1{\leavevmode\hbox{#1}} \fi % +% macros from otf.sty +%for literature +\protected\def\ajKunoji{% + \ifnum\ltjgetparameter{direction}=3 \mbox{\UTF{3033}\UTF{3035}}\else + \@PackageError{luatexja-otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12 + \fi} +\protected\def\ajKunojiwithBou{% + \ifnum\ltjgetparameter{direction}=3 \mbox{\bou{\mbox{\UTF{3033}}}\bou{\mbox{\UTF{3035}}}}\else + \@PackageError{luatexja-otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12 + \fi} +\protected\def\ajDKunoji{% + \ifnum\ltjgetparameter{direction}=3 \mbox{\UTF{3034}\UTF{3035}}\else + \@PackageError{luatexja-otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12 + \fi} +\protected\def\ajDKunojiwithBou{% + \ifnum\ltjgetparameter{direction}=3 \mbox{\bou{\mbox{\UTF{3034}}}\bou{\mbox{\UTF{3035}}}}\else + \@PackageError{luatexja-otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12 + \fi} +\protected\def\ajNinoji{\CID{12106}} +\protected\def\ajvarNinoji{% + \ifnum\ltjgetparameter{direction}=3 \CID{12107}\else + \@PackageError{luatexja-otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12 + \fi} +\protected\def\ajYusuriten{% + \ifnum\ltjgetparameter{direction}=3 \CID{16193}\else + \@PackageError{luatexja-otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12 + \fi} +\protected\def\ajMasu{\UTF{303c}} +\protected\def\ajYori{\UTF{309f}} +\protected\def\ajKoto{\UTF{30ff}} +\protected\def\ajUta{\UTF{303d}} +%dingbats +\protected\def\ajCommandKey{\UTF{2318}} +\protected\def\ajReturnKey{\UTF{23ce}} +\protected\def\ajCheckmark{\UTF{2713}} +\protected\def\ajVisibleSpace{\UTF{2423}} +\protected\def\ajSenteMark{\UTF{2617}} +\protected\def\ajGoteMark{\UTF{2616}} +\protected\def\ajClub{\UTF{2663}} +\protected\def\ajHeart{\UTF{2661}} +\protected\def\ajSpade{\UTF{2660}} +\protected\def\ajDiamond{\UTF{2662}} +\protected\def\ajvarClub{\UTF{2667}} +\protected\def\ajvarHeart{\UTF{2665}} +\protected\def\ajvarSpade{\UTF{2664}} +\protected\def\ajvarDiamond{\UTF{2666}} +\protected\def\ajPhone{\UTF{260e}} +\protected\def\ajPostal{\UTF{3020}} +\protected\def\ajvarPostal{\UTF{3036}} +\protected\def\ajSun{\UTF{2600}} +\protected\def\ajCloud{\UTF{2601}} +\protected\def\ajUmbrella{\UTF{2602}} +\protected\def\ajSnowman{\UTF{2603}} +\protected\def\ajJIS{\UTF{3004}} +\protected\def\ajJAS{\CID{12088}} +\protected\def\ajBall{\CID{12097}} +\protected\def\ajHotSpring{\UTF{2668}} +\protected\def\ajWhiteSesame{\UTF{fe46}} +\protected\def\ajBlackSesame{\UTF{fe45}} +\protected\def\ajWhiteFlorette{\UTF{2740}} +\protected\def\ajBlackFlorette{\UTF{273f}} +\protected\def\ajRightBArrow{\CID{8206}} +\protected\def\ajLeftBArrow{\CID{8207}} +\protected\def\ajUpBArrow{\CID{8208}} +\protected\def\ajDownBArrow{\CID{8209}} +\protected\def\ajRightHand{\CID{8219}} +\protected\def\ajLeftHand{\CID{8220}} +\protected\def\ajUpHand{\CID{8221}} +\protected\def\ajDownHand{\CID{8222}} +\protected\def\ajRightScissors{\CID{12176}} +\protected\def\ajLeftScissors{\CID{12175}} +\protected\def\ajUpScissors{\CID{12177}} +\protected\def\ajDownScissors{\CID{12178}} +\protected\def\ajRightWArrow{\CID{12197}} +\protected\def\ajLeftWArrow{\CID{12196}} +\protected\def\ajUpWArrow{\CID{12198}} +\protected\def\ajDownWArrow{\CID{12199}} +\protected\def\ajRightDownArrow{\CID{12202}} +\protected\def\ajLeftDownArrow{\CID{12203}} +\protected\def\ajLeftUpArrow{\CID{12204}} +\protected\def\ajRightUpArrow{\CID{12205}} %%------------------ all done \ltj@otf@AtEnd diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty index 6a71e23d24f..d5c3d1a07bf 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty @@ -1,5 +1,5 @@ % luatexja-preset.sty -\ProvidesPackage{luatexja-preset}[2017/05/05 Japanese font presets] +\ProvidesPackage{luatexja-preset}[2017/07/30 Japanese font presets] \RequirePackage{expl3,l3keys2e} \RequirePackage{luatexja} @@ -58,22 +58,40 @@ % font preset \bool_new:N \l_ltjpreset_office_bool % MS Office の HG 系フォントを使っているか \bool_new:N \l_ltjpreset_noembed_bool % 非埋込か -\clist_new:N \l_ltjpreset_font_list + +\prop_new:N \l_ltjpreset_font_prop +\keys_define:nn { ltjpreset_set_font_list } { + mc .code:n = + \prop_put:Nnn \l_ltjpreset_font_prop { mc-l } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { mc-m } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { mc-bx } {#1}, + gt .code:n = + \prop_put:Nnn \l_ltjpreset_font_prop { gt-u } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { gt-m } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { gt-bx } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { gt-eb } {#1}, + unknown .code:n = + \prop_put:Non \l_ltjpreset_font_prop { \l_keys_key_tl } {#1} +} + + \cs_new:Npn \ltjpreset_set_uni:nn #1#2 { - \ltjpreset_set_multi:n { #1, #2, #2, #2, #2, #2, #2 } + \keys_set:nn { ltjpreset_set_font_list } { + mc = #1, gt = #2, mc-bx = #2, mg-m = #2, + } } \cs_new:Npn \ltjpreset_set_multi:n #1 { - \clist_set:Nn \l_ltjpreset_font_list { #1 } + \keys_set:nn { ltjpreset_set_font_list } { #1 } \bool_set_false:N \l_ltjpreset_office_bool \bool_set_false:N \l_ltjpreset_noembed_bool } \cs_new:Npn \ltjpreset_set_office:nn #1 #2{ \ltjpreset_set_multi:n { - #1, HGMinchoE , % mc/m, mc/bx - HGGothicM , HGGothicE , % gt/m, gt/bx (multiweight)) - #2 , HGSoeiKakugothicUB , % gt/m (uni), gt/eb - HGMaruGothicMPRO % mg/m + mc-m = #1, mc-bx = HGMinchoE , + gt-m = HGGothicM , gt-bx = HGGothicE , + gt-u = #2 , gt-eb = HGSoeiKakugothicUB , + mg-m = HGMaruGothicMPRO } \bool_set_true:N \l_ltjpreset_office_bool } @@ -93,98 +111,83 @@ %% Pro \ltjpreset_declare_option:nn{kozuka-pro}{ \ltjpreset_set_multi:n { - KozMinPro-Regular , % mc/m - KozMinPro-Bold , % mc/bx - KozGoPro-Regular , % gt/m (multi) - KozGoPro-Bold , % gt/bx - KozGoPro-Medium , % gt/m (uni) - KozGoPro-Heavy , % gt/eb - KozGoPro-Heavy % mg/m + mc-m = KozMinPro-Regular, mc-bx = KozMinPro-Bold, + gt-m = KozGoPro-Regular, gt-bx = KozGoPro-Bold, + gt-u = KozGoPro-Medium, gt-eb = KozGoPro-Heavy, + mg-m = KozGoPro-Heavy, mc-l = KozMinPro-Light, } } %% Pr6 \ltjpreset_declare_option:nn{kozuka-pr6}{ \ltjpreset_set_multi:n { - KozMinProVI-Regular , % mc/m - KozMinProVI-Bold , % mc/bx - KozGoProVI-Regular , % gt/m (multi) - KozGoProVI-Bold , % gt/bx - KozGoProVI-Medium , % gt/m (uni) - KozGoProVI-Heavy , % gt/eb - KozGoProVI-Heavy % mg/m + mc-m = KozMinProVI-Regular, mc-bx = KozMinProVI-Bold, + gt-m = KozGoProVI-Regular, gt-bx = KozGoProVI-Bold, + gt-u = KozGoProVI-Medium, gt-eb = KozGoProVI-Heavy, + mg-m = KozGoProVI-Heavy, mc-l = KozMinProVI-Light, } } %% Pr6N \ltjpreset_declare_option:nn{kozuka-pr6n}{ \ltjpreset_set_multi:n { - KozMinPr6N-Regular , % mc/m - KozMinPr6N-Bold , % mc/bx - KozGoPr6N-Regular , % gt/m (multi) - KozGoPr6N-Bold , % gt/bx - KozGoPr6N-Medium , % gt/m (uni) - KozGoPr6N-Heavy , % gt/eb - KozGoPr6N-Heavy % mg/m + mc-m = KozMinPr6N-Regular, mc-bx = KozMinPr6N-Bold, + gt-m = KozGoPr6N-Regular, gt-bx = KozGoPr6N-Bold, + gt-u = KozGoPr6N-Medium, gt-eb = KozGoPr6N-Heavy, + mg-m = KozGoPr6N-Heavy, mc-l = KozMinPr6N-Light, } } % ヒラギノ (OSX) \ltjpreset_declare_option:nn{hiragino-pro}{ \ltjpreset_set_multi:n { - HiraMinPro-W3 , - HiraMinPro-W6 , - HiraKakuPro-W3 , % gt/m (multi) - HiraKakuPro-W6 , - HiraKakuPro-W6 , % gt/m (uni) - HiraKakuStd-W8 , - HiraMaruPro-W4 , + mc-m = HiraMinPro-W3, mc-bx = HiraMinPro-W6, + gt-m = HiraKakuPro-W3, gt-bx = HiraKakuPro-W6, + gt-u = HiraKakuPro-W6, gt-eb = HiraKakuStd-W8, + mg-m = HiraMaruPro-W4, mc-l = HiraMinPro-W2, } } \ltjpreset_declare_option:nn{hiragino-pron}{ \ltjpreset_set_multi:n { - HiraMinProN-W3 , - HiraMinProN-W6 , - HiraKakuProN-W3 , % gt/m (multi) - HiraKakuProN-W6 , - HiraKakuProN-W6 , % gt/m (uni) - HiraKakuStdN-W8 , - HiraMaruProN-W4 , + mc-m = HiraMinProN-W3, mc-bx = HiraMinProN-W6, + gt-m = HiraKakuProN-W3, gt-bx = HiraKakuProN-W6, + gt-u = HiraKakuProN-W6, gt-eb = HiraKakuStdN-W8, + mg-m = HiraMaruProN-W4, mc-l = HiraMinProN-W2, } } % モリサワ \ltjpreset_declare_option:nn{morisawa-pro}{ \ltjpreset_set_multi:n { - A-OTF-RyuminPro-Light.otf , A-OTF-FutoMinA101Pro-Bold.otf , % mc/m, mc/bx - A-OTF-GothicBBBPro-Medium.otf , A-OTF-FutoGoB101Pro-Bold.otf , % gt/m, gt/bx (multiweight)) - A-OTF-GothicBBBPro-Medium.otf , A-OTF-MidashiGoPro-MB31.otf , % gt/m (uni), gt/eb - A-OTF-Jun101Pro-Light.otf % mg/m + mc = A-OTF-RyuminPro-Light.otf, mc-bx = A-OTF-FutoMinA101Pro-Bold.otf, + gt-m = A-OTF-GothicBBBPro-Medium.otf , gt-bx = A-OTF-FutoGoB101Pro-Bold.otf, + gt-u = A-OTF-GothicBBBPro-Medium.otf , gt-eb = A-OTF-MidashiGoPro-MB31.otf, + mg-m = A-OTF-Jun101Pro-Light.otf, } } \ltjpreset_declare_option:nn{morisawa-pr6n}{ \ltjpreset_set_multi:n { - A-OTF-RyuminPr6N-Light.otf , A-OTF-FutoMinA101Pr6N-Bold.otf , % mc/m, mc/bx - A-OTF-GothicBBBPr6N-Medium.otf , A-OTF-FutoGoB101Pr6N-Bold.otf , % gt/m, gt/bx (multiweight)) - A-OTF-GothicBBBPr6N-Medium.otf , A-OTF-MidashiGoPr6N-MB31.otf , % gt/m (uni), gt/eb - A-OTF-ShinMGoPr6N-Light.otf % mg/m + mc = A-OTF-RyuminPr6N-Light.otf, mc-bx = A-OTF-FutoMinA101Pr6N-Bold.otf, + gt-m = A-OTF-GothicBBBPr6N-Medium.otf , gt-bx = A-OTF-FutoGoB101Pr6N-Bold.otf, + gt-u = A-OTF-GothicBBBPr6N-Medium.otf , gt-eb = A-OTF-MidashiGoPr6N-MB31.otf, + mg-m = A-OTF-Jun101Pr6N-Light.otf, } } % 游明朝/游ゴシック (Win8.1) \ltjpreset_declare_option:nn{yu-win}{ \ltjpreset_set_multi:n { - YuMincho-Regular , YuMincho-Demibold , % mc/m, mc/bx - YuGothic-Regular , YuGothic-Bold , % gt/m, gt/bx (multiweight)) - YuGothic-Regular , YuGothic-Bold , % gt/m (uni), gt/eb - YuGothic-Bold % mg/m + mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold, + gt-m = YuGothic-Regular, gt-bx = YuGothic-Bold, + gt-u = YuGothic-Regular, gt-eb = YuGothic-Bold, + mg-m = YuGothic-Bold, mc-l = YuMincho-Light } } % Win10 \ltjpreset_declare_option:nn{yu-win10}{ \ltjpreset_set_multi:n { - YuMincho-Regular , YuMincho-Demibold , % mc/m, mc/bx - YuGothic-Regular , YuGothic-Bold , % gt/m, gt/bx (multiweight)) - YuGothic-Medium , YuGothic-Bold , % gt/m (uni), gt/eb - YuGothic-Bold % mg/m + mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold, + gt-m = YuGothic-Regular, gt-bx = YuGothic-Bold, + gt-u = YuGothic-Medium, gt-eb = YuGothic-Bold, + mg-m = YuGothic-Bold, mc-l = YuMincho-Light } } @@ -192,51 +195,88 @@ % according to http://support.apple.com/kb/HT5944 \ltjpreset_declare_option:nn{yu-osx}{ \ltjpreset_set_multi:n { - YuMincho~Medium , YuMincho~Demibold , % mc/m, mc/bx - YuGothic~Medium , YuGothic~Bold , % gt/m, gt/bx (multiweight)) - YuGothic~Medium , YuGothic~Bold , % gt/m (uni), gt/eb - YuGothic~Bold % mg/m + mc = YuMincho~Medium, mc-bx = YuMincho~Demibold, + gt-m = YuGothic~Medium, gt-u = YuGothic~Medium, + gt-bx = YuGothic~Bold, gt-eb = YuGothic~Bold, + mg-m = YuGothic~Bold } } % moga-mobo \ltjpreset_declare_option:nn{moga-mobo}{ \ltjpreset_set_multi:n { - Moga90Mincho, Moga90Mincho~Bold , % mc/m, mc/bx - Moga90Gothic, Moga90Gothic~Bold, % gt/m, gt/bx (multiweight)) - Moga90Gothic, Moga90Gothic~Bold, % gt/m (uni), gt/eb - Mobo90Gothic % mg/m + mc = Moga90Mincho, mc-bx = Moga90Mincho~Bold, + gt-m = Moga90Gothic, gt-bx = Moga90Gothic~Bold, + gt-u = Moga90Gothic, gt-eb = Moga90Gothic~Bold, + mg-m = Mobo90Gothic } } \ltjpreset_declare_option:nn{moga-mobo-ex}{ \ltjpreset_set_multi:n { - MogaEx90Mincho, MogaEx90Mincho~Bold , % mc/m, mc/bx - MogaEx90Gothic, MogaEx90Gothic~Bold, % gt/m, gt/bx (multiweight)) - MogaEx90Gothic, MogaEx90Gothic~Bold, % gt/m (uni), gt/eb - MoboEx90Gothic % mg/m + mc = MogaEx90Mincho, mc-bx = MogaEx90Mincho~Bold, + gt-m = MogaEx90Gothic, gt-bx = MogaEx90Gothic~Bold, + gt-u = MogaEx90Gothic, gt-eb = MogaEx90Gothic~Bold, + mg-m = MoboEx90Gothic } } % Ume fones \ltjpreset_declare_option:nn{ume}{ \ltjpreset_set_multi:n { - Ume~Mincho, Ume~Mincho, - Ume~Gothic, Ume~Gothic~O5, - Ume~Gothic~O5, Ume~Gothic~O5, - Ume~Gothic~O4 + mc = Ume~Mincho, + gt-m = Ume~Gothic, gt-bx = Ume~Gothic~O5, + gt-u = Ume~Gothic~O5, gt-eb = Ume~Gothic~O5, + mg-m = Ume~Gothic~O4 } } % Source Han {Serif,Sans} \ltjpreset_declare_option:nn{sourcehan}{ \ltjpreset_set_multi:n { - Source~Han~Serif~Regular, % mc/m - Source~Han~Serif~Bold, % mc/bx - Source~Han~Sans~Normal, % gt/m (multi) - Source~Han~Sans~Bold, % gt/bx - Source~Han~Sans~Medium, % gt/m (uni) - Source~Han~Sans~Heavy, % gt/eb - Source~Han~Sans~Heavy % mg/m + mc-m = Source~Han~Serif~Regular, + mc-bx = Source~Han~Serif~Bold, + gt-m = Source~Han~Sans~Regular, + gt-bx = Source~Han~Sans~Bold, + gt-u = Source~Han~Sans~Medium, + gt-eb = Source~Han~Sans~Heavy, + mg-m = Source~Han~Sans~Heavy, + mc-l = Source~Han~Serif~Light, + } +} +\ltjpreset_declare_option:nn{sourcehan-jp}{ + \ltjpreset_set_multi:n { + mc-m = Source~Han~Serif~JP~Regular, + mc-bx = Source~Han~Serif~JP~Bold, + gt-m = Source~Han~Sans~JP~Regular, + gt-bx = Source~Han~Sans~JP~Bold, + gt-u = Source~Han~Sans~JP~Medium, + gt-eb = Source~Han~Sans~JP~Heavy, + mg-m = Source~Han~Sans~JP~Heavy, + mc-l = Source~Han~Serif~JP~Light, + } +} +\ltjpreset_declare_option:nn{noto-otc}{ + \ltjpreset_set_multi:n { + mc-m = Noto~Serif~CJK~Regular, + mc-bx = Noto~Serif~CJK~Bold, + gt-m = Noto~Sans~CJK~Regular, + gt-bx = Noto~Sans~CJK~Bold, + gt-u = Noto~Sans~CJK~Medium, + gt-eb = Noto~Sans~CJK~Black, + mg-m = Noto~Sans~CJK~Black, + mc-l = Noto~Serif~CJK~Light, + } +} +\ltjpreset_declare_option:nn{noto-otf}{ + \ltjpreset_set_multi:n { + mc-m = Noto~Serif~CJK~JP~Regular, + mc-bx = Noto~Serif~CJK~JP~Bold, + gt-m = Noto~Sans~CJK~JP~Regular, + gt-bx = Noto~Sans~CJK~JP~Bold, + gt-u = Noto~Sans~CJK~JP~Medium, + gt-eb = Noto~Sans~CJK~JP~Black, + mg-m = Noto~Sans~CJK~JP~Black, + mc-l = Noto~Serif~CJK~JP~Light, } } @@ -289,56 +329,54 @@ %% KozMinPr6N, HiraMinProN-W3 の場合はjp04 feature がないので,nlck にする \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 } \tl_if_eq:NNTF \l_ltjpreset_kanji_shape_tl \l_tmpa_tl { - \clist_if_in:NnT \l_ltjpreset_font_list { KozMinPr6N-Regular } + \tl_set:Nx \l_tmpb_tl { \prop_item:Nn \l_ltjpreset_font_prop { mc-m } } + \tl_if_in:NnT \l_tmpb_tl { KozMinPr6N-Regular } { \bool_set_true:N \l_ltjpreset_shape_nlck_bool } - \clist_if_in:NnT \l_ltjpreset_font_list { HiraMinProN-W3 } + \tl_if_in:NnT \l_tmpb_tl { HiraMinProN-W3 } { \bool_set_true:N \l_ltjpreset_shape_nlck_bool } - \clist_if_in:NnT \l_ltjpreset_font_list { Moga90Mincho } + \tl_if_in:NnT \l_tmpb_tl { Moga90Mincho } { - \tl_remove_all:Nn \l_ltjpreset_font_list {90} + \prop_clear:N \l_tmpa_prop + \prop_map_inline:Nn \l_ltjpreset_font_prop { + \tl_set:Nn \l_tmpb_tl { #2 } + \tl_remove_all:Nn \l_tmpb_tl {90} + \prop_put:Nnx \l_tmpa_prop { #1 } { \tl_use:N \l_tmpb_tl } + } + \prop_set_eq:NN \l_ltjpreset_font_prop \l_tmpa_prop \tl_clear:N \l_ltjpreset_kanji_shape_tl } - \clist_if_in:NnT \l_ltjpreset_font_list { MogaEx90Mincho } + \tl_if_in:NnT \l_tmpb_tl { MogaEx90Mincho } { - \tl_remove_all:Nn \l_ltjpreset_font_list {90} + \prop_clear:N \l_tmpa_prop + \prop_map_inline:Nn \l_ltjpreset_font_prop { + \tl_set:Nn \l_tmpb_tl { #2 } + \tl_remove_all:Nn \l_tmpb_tl {90} + \prop_put:Nnx \l_tmpa_prop { #1 } { \tl_use:N \l_tmpb_tl } + } + \prop_set_eq:NN \l_ltjpreset_font_prop \l_tmpa_prop \tl_clear:N \l_ltjpreset_kanji_shape_tl } }{ \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 } \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl { - \clist_if_in:NnT \l_ltjpreset_font_list { Moga90Mincho } - { \tl_clear:N \l_ltjpreset_kanji_shape_tl } + \tl_set:Nx \l_tmpb_tl { \prop_item:Nn \l_ltjpreset_font_prop { mc-m } } + \tl_if_in:NnT \l_tmpb_tl { Moga90Mincho } + { \tl_clear:N \l_ltjpreset_kanji_shape_tl } } } %%%% リストからの展開 % mc/m -\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl -\cs_set:Nx \ltjpreset_font_mc_m: { \tl_use:N \l_tmpa_tl } - -% mc/bx -\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl -\cs_set:Nx \ltjpreset_font_mc_bx: { \tl_use:N \l_tmpa_tl } - -% gt/m -\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl -\cs_set:Nx \ltjpreset_font_gt_m: { \tl_use:N \l_tmpa_tl } - -% gt/bx -\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl -\cs_set:Nx \ltjpreset_font_gt_bx: { \tl_use:N \l_tmpa_tl } +\cs_set:Nx \ltjpreset_font_mc_l: { \prop_item:Nn \l_ltjpreset_font_prop { mc-l } } +\cs_set:Nx \ltjpreset_font_mc_m: { \prop_item:Nn \l_ltjpreset_font_prop { mc-m } } +\cs_set:Nx \ltjpreset_font_mc_bx: { \prop_item:Nn \l_ltjpreset_font_prop { mc-bx } } +\cs_set:Nx \ltjpreset_font_gt_m: { \prop_item:Nn \l_ltjpreset_font_prop { gt-m } } +\cs_set:Nx \ltjpreset_font_gt_u: { \prop_item:Nn \l_ltjpreset_font_prop { gt-u } } +\cs_set:Nx \ltjpreset_font_gt_bx: { \prop_item:Nn \l_ltjpreset_font_prop { gt-bx } } +\cs_set:Nx \ltjpreset_font_gt_eb: { \prop_item:Nn \l_ltjpreset_font_prop { gt-eb } } +\cs_set:Nx \ltjpreset_font_mg_m: { \prop_item:Nn \l_ltjpreset_font_prop { mg-m } } -% gt/m-uni -\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl -\cs_set:Nx \ltjpreset_font_gt_n_uni: { \tl_use:N \l_tmpa_tl } - -% gt/eb -\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl -\cs_set:Nx \ltjpreset_font_gt_eb: { \tl_use:N \l_tmpa_tl } - -% mg/m -\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl -\cs_set:Nx \ltjpreset_font_mg: { \tl_use:N \l_tmpa_tl } +%\prop_show:N \l_ltjpreset_font_prop %% HG 系フォント + JIS2004/90JIS のときはフォント名を置換 \bool_if:NT \l_ltjpreset_office_bool { @@ -347,8 +385,8 @@ \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme04.ttc } \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge04.ttc } \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu04.ttc } - \cs_set:Nx \ltjpreset_font_mg: { hgrsmp04.ttf } - \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni: + \cs_set:Nx \ltjpreset_font_mg_m: { hgrsmp04.ttf } + \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_u: % HG ゴシックM のときはそうはいかないので 1 ウェイト時のゴシック体を使う } \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 } @@ -356,10 +394,17 @@ \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme.ttc } \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge.ttc } \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu.ttc } - \cs_set:Nx \ltjpreset_font_mg: { hgrsmp.ttf } + \cs_set:Nx \ltjpreset_font_mg_m: { hgrsmp.ttf } } } +% mc/l +\tl_set:Nx \l_tmpa_tl { \ltjpreset_font_mc_l: } +\tl_if_empty:NT \l_tmpa_tl {\tl_set:Nn \l_tmpa_tl {~}} +\cs_set:Nx \ltjpreset_font_mc_l: { + \tl_if_blank:nTF \l_tmpa_tl { \ltjpreset_font_mc_m: } {\tl_use:N \l_tmpa_tl } +} + %% 90JIS/JIS2004 字形指定のオプション \bool_if:NTF \l_ltjpreset_nfssonly_bool { \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 } @@ -380,6 +425,30 @@ } } + +%%%%%%%% 存在判定 +\cs_new:Nn \ltjpreset_substitute:nnnn { + \group_begin: + \suppressfontnotfounderror=1 + \font \l_ltjpreset_font_test: = "\cs:w ltjpreset_font_#1_#2: \cs_end:"\relax + \ifx \l_ltjpreset_font_test: \nullfont + \msg_warning:nnxxxx { luatexja-preset }{ no-font } + { \cs:w ltjpreset_font_#1_#2: \cs_end: }{ #1/#2 } + { \cs:w ltjpreset_font_#3_#4: \cs_end: }{ #3/#4 } + \cs_gset_eq:cc { ltjpreset_font_#1_#2: } { ltjpreset_font_#3_#4: } + \fi + \group_end: +} + +\msg_new:nnn { luatexja-preset }{ no-font }{ + Font~ #1~ (#2)~ is~ not~found.~ Hence~ I~ substitute~ #3~ (#4)~ for~ it. +} +\bool_if:NT \l_ltjpreset_deluxe_bool { + \ltjpreset_substitute:nnnn { gt } { eb } { gt } { bx } + \ltjpreset_substitute:nnnn { mg } { m } { gt } { bx } + \ltjpreset_substitute:nnnn { mc } { l } { mc } { m } +} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% nfss only \bool_if:NTF \l_ltjpreset_nfssonly_bool { @@ -392,23 +461,23 @@ \DeclareFontShape{JY3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl - ; script=cjk \bool_if:NT \l_ltjpreset_expert_bool { ;+hkna }} + ; script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+hkna }} } {} \DeclareFontShape{JT3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl; - ; script=cjk \bool_if:NT \l_ltjpreset_expert_bool { ;+vkna }} + ; script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+vkna }} } {} \bool_if:NT \l_ltjpreset_expert_bool { \DeclareFontShape{JY3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl ;+ruby - ; script=kana } + ; script=kana} } {} \DeclareFontShape{JT3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl ;+ruby - ; script=kana } + ; script=kana} } {} } } @@ -424,7 +493,7 @@ \bool_if:NTF \l_ltjpreset_bold_bool { \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_bx: }{ - \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni: + \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_u: } \cs_set_eq:NN \ltjpreset_font_gt_bx: \ltjpreset_font_gt_m: \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_m: @@ -448,14 +517,17 @@ \bool_if:NTF \l_ltjpreset_deluxe_bool { \DeclareKanjiFamily{JY3}{ltjpmg}{}\DeclareKanjiFamily{JT3}{ltjpmg}{} - \ltj_preset_define_family:nnn {ltjpmg} {m} {\ltjpreset_font_mg:} - \ltj_preset_define_family:nnn {ltjpg} {eb} {\ltjpreset_font_gt_eb:} + \def\ltdefault{l} + \DeclareRobustCommand\ltseries { \not@math@alphabet\ltseries\relax\fontseries\ltdefault\selectfont } + \ltj_preset_define_family:nnn {ltjpm} {l} {\ltjpreset_font_mc_l:} \def\ebdefault{eb} - \DeclareRobustCommand\ebseries { \not@math@alphabet\ebseries\relaxfontseries\ebdefault\selectfont } - \DeclareRobustCommand\gtebfamily { \kanjifamily{ltjpg}\fontseries{eb}\selectfont } + \DeclareRobustCommand\ebseries { \not@math@alphabet\ebseries\relax\fontseries\ebdefault\selectfont } + \DeclareRobustCommand\gtebfamily { \kanjifamily{ltjpg}\fontseries{\ebdefault}\selectfont } \DeclareTextFontCommand{\textgteb}{\gtebfamily} + \ltj_preset_define_family:nnn {ltjpg} {eb} {\ltjpreset_font_gt_eb:} \DeclareRobustCommand\mgfamily { \not@math@alphabet\mgfamily\relax\kanjifamily{ltjpmg}\selectfont } \DeclareTextFontCommand{\textmg}{\mgfamily} + \ltj_preset_define_family:nnn {ltjpmg} {m} {\ltjpreset_font_mg_m:} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -493,20 +565,19 @@ \bool_if:NTF \l_ltjpreset_deluxe_bool { %% mg \newjfontfamily \mgfamily [ - BoldFont = \ltjpreset_font_mg:, + BoldFont = \ltjpreset_font_mg_m:, \bool_if:NT \l_ltjpreset_noembed_bool { NoEmbed, } \tl_use:N \l_ltjpreset_add_features_tl - ] { \ltjpreset_font_mg: } + ] { \ltjpreset_font_mg_m: } \DeclareTextFontCommand{\textmg}{\mgfamily} %% gt/eb -%% 注意: ファミリは 'gteb'.シリーズは \mdseries のまま. -%% \bfseries を追加したほうが良い? - \newjfontfamily \gtebfamily [ - BoldFont = \ltjpreset_font_gt_eb:, - \bool_if:NT \l_ltjpreset_noembed_bool { NoEmbed, } - \tl_use:N \l_ltjpreset_add_features_tl - ] { \ltjpreset_font_gt_eb: } + \def\ebdefault{eb} + \DeclareRobustCommand\ebseries { \not@math@alphabet\ebseries\relax\fontseries\ebdefault\selectfont } + \DeclareRobustCommand\gtebfamily { \kanjifamily{\gtdefault}\fontseries{\ebdefault}\selectfont } \DeclareTextFontCommand{\textgteb}{\gtebfamily} +%% mc/l + \def\ltdefault{l} + \DeclareRobustCommand\ltseries { \not@math@alphabet\ltseries\relax\fontseries\ltdefault\selectfont } \bool_if:NT \l_ltjpreset_bold_bool { \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_bx: } @@ -514,7 +585,7 @@ \bool_if:NTF \l_ltjpreset_bold_bool { \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_bx: }{ - \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni: + \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_u: } \cs_set_eq:NN \ltjpreset_font_gt_bx: \ltjpreset_font_gt_m: \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_m: @@ -526,11 +597,17 @@ \addjfontfeature{ Kerning=Off } \setmainjfont [ + \bool_if:NT \l_ltjpreset_deluxe_bool { + FontFace={l}{n}{\ltjpreset_font_mc_l:}, + } BoldFont = \ltjpreset_font_mc_bx: \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }, \tl_use:N \l_ltjpreset_add_features_tl ] { \ltjpreset_font_mc_m: } \setsansjfont [ + \bool_if:NT \l_ltjpreset_deluxe_bool { + FontFace={eb}{n}{\ltjpreset_font_gt_eb:}, + } BoldFont = \ltjpreset_font_gt_bx: \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }, \tl_use:N \l_ltjpreset_add_features_tl diff --git a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua index 61e48024685..476f063db9b 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua @@ -8,6 +8,7 @@ local t = { + version = 3, dir = 'yoko', zw = 1.0, zh = 1.0, kanjiskip = { 0.0, 0.25, 0 }, @@ -260,10 +261,7 @@ local t = { [99] = { -- box末尾 - chars = {'boxbdd', 'parbdd'}, - glue = { - [3] = { 0.25, 0.0, 0.25, priority=1 }, - } + chars = {'boxbdd', 'parbdd', 'glue'}, }, } @@ -277,4 +275,13 @@ for i=9758,9778 do ht[#ht+1] = 'AJ1-' .. tostring(i) end local ht = t[207].chars for i=9738,9757 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +t[100]=table.fastcopy(t[0]) +t[100].chars={'nox_alchar'} +for i,v in pairs(t) do + if i~=6 and type(i)=='number' and type(v)=='table' then -- 感嘆符以外 + if v.glue and v.glue[0] then v.glue[100] = v.glue[0] end + if v.kern and v.kern[0] then v.kern[100] = v.kern[0] end + end +end + luatexja.jfont.define_jfm(t) diff --git a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua index 4ea0b3b5bc5..a4b1333b698 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua @@ -8,6 +8,7 @@ local t = { + version = 3, dir = 'tate', zw = 1.0, zh = 1.0, kanjiskip = { 0.0, 0.25, 0 }, @@ -259,10 +260,7 @@ local t = { }, [99] = { -- box末尾 - chars = {'boxbdd', 'parbdd'}, - glue = { - [3] = { 0.25, 0.0, 0.25, priority=1 }, - } + chars = {'boxbdd', 'parbdd', 'glue'}, }, } @@ -274,5 +272,13 @@ for i=13274,13294 do ht[#ht+1] = 'AJ1-' .. tostring(i) end local ht = t[207].chars for i=13254,13273 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +t[100]=table.fastcopy(t[0]) +t[100].chars={'nox_alchar'} +for i,v in pairs(t) do + if i~=6 and type(i)=='number' and type(v)=='table' then -- 感嘆符以外 + if v.glue and v.glue[0] then v.glue[100] = v.glue[0] end + if v.kern and v.kern[0] then v.kern[100] = v.kern[0] end + end +end luatexja.jfont.define_jfm(t) diff --git a/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty b/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty index cc8f8a4c4c8..31d218cbc3f 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty @@ -3,9 +3,9 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjext}[2017/05/05 v1.2g-ltj-5 Macros for vertical writing] +\ProvidesPackage{lltjext}[2017/07/26 v1.2g-ltj-7 Macros for vertical writing] \RequirePackage{luatexja} - +\newcount\ltj@ext@dir {\catcode`\*=11 \global\let\ltj@lltjext@orig@tabularS=\tabular* }% @@ -15,19 +15,20 @@ %%% array and tabular \def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz \let\@classiv\@arrayclassiv - \let\\\@arraycr\let\@halignto\@empty\X@tabarray} + \let\\\@arraycr\let\@halignto\@empty + \ltj@ext@dir=\ltjgetparameter{direction}\relax\X@tabarray} \def\tabular{\let\@halignto\@empty\X@tabular} \@namedef{tabular*}{\@ifnextchar<%> - {\@stabular}{\@stabular}} + {\@stabular}{\@stabular}} \def\X@tabarray{\@ifnextchar<%> - {\p@tabarray}{\p@tabarray}} + {\p@tabarray}{\p@tabarray}} \def\X@tabular{\@ifnextchar<%> - {\p@tabular}{\p@tabular}} + {\p@tabular}{\p@tabular}} \def\@stabular<#1>#2{% \setlength\dimen@{#2}% \edef\@halignto{to\the\dimen@}\p@tabular<#1>} \def\p@tabular<#1>{\leavevmode \hbox \bgroup - \count@=\ltjgetparameter{direction}$\let\@acol\@tabacol + \ltj@ext@dir=\ltjgetparameter{direction}$\let\@acol\@tabacol \let\@classz\@tabclassz \let\@classiv\@tabclassiv \let\\\@tabularcr\p@tabarray<#1>} \def\p@tabarray<#1>{\m@th\@ifnextchar[%] @@ -36,7 +37,7 @@ \def\p@array<#1>[#2]#3{% \let\box@dir\relax \if #1z\relax - \ifnum\count@=3\relax + \ifnum\ltj@ext@dir=3\relax \let\box@dir\utod\@tempcnta=\zstrutbox \fi \else @@ -51,7 +52,7 @@ \fi\fi\fi\fi \fi \ifx\box@dir\relax - \ifcase\count@ + \ifcase\ltj@ext@dir \or \let\box@dir\dtou\@tempcnta=\dstrutbox% dtou \or\or\let\box@dir\tate\@tempcnta=\tstrutbox% tate \or \let\box@dir\yoko\@tempcnta=\ystrutbox% yoko @@ -65,7 +66,8 @@ \fork@array@option<#1>[#2]% \@mkpream{#3}\edef\@preamble{\ialign \noexpand\@halignto \bgroup\@arstrut \@preamble \tabskip\z@skip \cr}% - \let\tabularnewline\\% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \let\tabularnewline\\% \@begin@alignbox\bgroup\box@dir\adjustbaseline \let\par\@empty \let\@sharp##\let\protect\relax @@ -73,137 +75,86 @@ \def\endarray{\crcr\egroup\egroup\@end@alignbox} \def\endtabular{\endarray$\egroup} \expandafter \let \csname endtabular*\endcsname = \endtabular -% コミュニティ版では、アスキー版で不自然だった表組(array環境およびtabular環境)と -% 周囲の本文との揃え位置を修正し、以下のように設計しました。 -% \begin{itemize} -% \item 周囲の組方向が横組かつ組方向が||, ||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\一行目のベースラインが周囲のそれと一致(罫線の場合は和文ベースラインの位置) -% \item |[c]|指定のとき\\表組の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\最終行のベースラインが周囲のそれと一致(罫線の場合は和文ベースラインの位置) -% \end{itemize} -% \item 周囲の組方向が横組かつ組方向が||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\表組の上端が周囲の和文ベースラインと一致 -% \item |[c]|指定のとき\\表組の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\表組の下端が周囲の和文ベースラインと一致 -% \end{itemize} -% \item 周囲の組方向が縦組かつ組方向が||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\表組の上端が周囲の和文ベースラインと一致 -% \item |[c]|指定のとき\\表組の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\表組の下端が周囲の和文ベースラインと一致 -% \end{itemize} -% \item 周囲の組方向が縦組かつ組方向が||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\一行目のベースラインが周囲のそれと一致(罫線の場合は和文ベースラインの位置) -% \item |[c]|指定のとき\\表組の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\最終行のベースラインが周囲のそれと一致(罫線の場合は和文ベースラインの位置) -% \end{itemize} -% \item 周囲の組方向が縦組かつ組方向が||指定の場合 -% [TODO] 未定! -%^^A \begin{itemize} -%^^A \item |[t]|指定のとき\\表組の上端が周囲の和文ベースラインと一致 -%^^A \item |[c]|指定のとき\\表組の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -%^^A \item |[b]|指定のとき\\表組の下端が周囲の和文ベースラインと一致 -%^^A \end{itemize} -\def\fork@array@option<#1>[#2]{% -\ifnum\ltjgetparameter{direction}=4 % yoko - \ifx\box@dir\yoko - \if #2t\relax - \let\@begin@alignbox\vtop - \let\@end@alignbox\relax - \else\if #2b\relax - \let\@begin@alignbox\vbox - \let\@end@alignbox\relax - \else - \let\@begin@alignbox\vcenter - \let\@end@alignbox\relax - \fi\fi +% ↓中身\周囲→ yoko tate utod dtou +% yoko A* B* B B +% tate B* A* D C +% utod B D* A C +% dtou B C C A +% A: 周囲と中身の組方向が一致.そのまま \vtop/\vcenter/\vbox +% B: 周囲と中身が90度ずれ.上端/下端がベースラインに揃うように +% C: 周囲と中身が180度ずれ.\vtop, \vbox 入れ替え +% D: 欧文ベースライン同士を揃えるようにする + +\def\fork@array@option@@A#1{% + \let\@end@alignbox\relax + \if #1t\relax \let\@begin@alignbox\vtop + \else\if #1b\relax\let\@begin@alignbox\vbox + \else \let\@begin@alignbox\vcenter + \fi\fi} +\def\fork@array@option@@B#1{% + \if #1t\relax + \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}% + \let\@end@alignbox\egroup + \else\if #1b\relax + \def\@begin@alignbox{\vbox\bgroup\vbox}% + \def\@end@alignbox{\kern\z@\egroup}% \else - \if #2t\relax - \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}% - \let\@end@alignbox\egroup - \else\if #2b\relax - \def\@begin@alignbox{\vbox\bgroup\vbox}% - \def\@end@alignbox{\kern\z@\egroup}% - \else - \let\@begin@alignbox\vcenter - \let\@end@alignbox\relax - \fi\fi + \let\@begin@alignbox\vcenter + \let\@end@alignbox\relax + \fi\fi} +\def\fork@array@option@@C#1{% + \let\@end@alignbox\relax + \if #1t\relax \let\@begin@alignbox\vbox + \else\if #1b\relax\let\@begin@alignbox\vtop + \else \let\@begin@alignbox\vcenter + \fi\fi} +\def\fork@array@option<#1>[#2]{% +\ifnum\ltj@ext@dir=4 % yoko + \ifx\box@dir\yoko \fork@array@option@@A{#2}% + \else \fork@array@option@@B{#2}% \fi -\else\ifnum\ltjgetparameter{direction}=1 % dtou - \ifx\box@dir\yoko - \if #2t\relax - \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}% - \let\@end@alignbox\egroup - \else\if #2b\relax - \def\@begin@alignbox{\vbox\bgroup\vbox}% - \def\@end@alignbox{\kern\z@\egroup}% - \else - \let\@begin@alignbox\vcenter - \let\@end@alignbox\relax - \fi\fi - \else\ifx\box@dir\dtou - \if #2t\relax - \let\@begin@alignbox\vtop - \let\@end@alignbox\relax - \else\if #2b\relax - \let\@begin@alignbox\vbox - \let\@end@alignbox\relax - \else - \let\@begin@alignbox\vcenter - \let\@end@alignbox\relax - \fi\fi - \else % 180 度回転→vtop, vbox を入れ替える - \if #2t\relax - \let\@begin@alignbox\vbox %%% !!! - \let\@end@alignbox\relax - \else\if #2b\relax - \let\@begin@alignbox\vtop %%% !!! - \let\@end@alignbox\relax - \else - \let\@begin@alignbox\vcenter - \let\@end@alignbox\relax - \fi\fi +\else\ifnum\ltj@ext@dir=1 % dtou + \ifx\box@dir\yoko \fork@array@option@@B{#2}% + \else\ifx\box@dir\dtou \fork@array@option@@A{#2}% + \else \fork@array@option@@C{#2}% \fi\fi -\else % tate, utod - \ifx\box@dir\yoko +\else\ifnum\ltj@ext@dir=3 % tate + \ifx\box@dir\yoko \fork@array@option@@B{#2}% + \else\ifx\box@dir\tate \fork@array@option@@A{#2}% + \else\ifx\box@dir\dtou \fork@array@option@@C{#2}% + \else \if #2t\relax - \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}% - \let\@end@alignbox\egroup + \def\@begin@alignbox{\lower\dimexpr + \ltjgetparameter{talbaselineshift}-\ltjgetparameter{yalbaselineshift}\vtop} + \let\@end@alignbox\relax \else\if #2b\relax - \def\@begin@alignbox{\vbox\bgroup\vbox}% - \def\@end@alignbox{\kern\z@\egroup}% + \def\@begin@alignbox{\lower\dimexpr + \ltjgetparameter{talbaselineshift}-\ltjgetparameter{yalbaselineshift}\vbox} + \let\@end@alignbox\relax \else \let\@begin@alignbox\vcenter \let\@end@alignbox\relax \fi\fi - \else\ifx\box@dir\dtou % 180 度回転→vtop, vbox を入れ替える + \fi\fi\fi +\else % utod + \ifx\box@dir\yoko \fork@array@option@@B{#2}% + \else\ifx\box@dir\utod \fork@array@option@@A{#2}% + \else\ifx\box@dir\dtou \fork@array@option@@C{#2}% + \else \if #2t\relax - \let\@begin@alignbox\vbox %%% !!! + \def\@begin@alignbox{\lower\dimexpr + \ltjgetparameter{yalbaselineshift}-\ltjgetparameter{talbaselineshift}\vtop} \let\@end@alignbox\relax \else\if #2b\relax - \let\@begin@alignbox\vtop %%% !!! + \def\@begin@alignbox{\lower\dimexpr + \ltjgetparameter{yalbaselineshift}-\ltjgetparameter{talbaselineshift}\vbox} \let\@end@alignbox\relax \else \let\@begin@alignbox\vcenter \let\@end@alignbox\relax \fi\fi - \else - \if #2t\relax - \let\@begin@alignbox\vtop - \let\@end@alignbox\relax - \else\if #2b\relax - \let\@begin@alignbox\vbox - \let\@end@alignbox\relax - \else - \let\@begin@alignbox\vcenter - \let\@end@alignbox\relax - \fi\fi - \fi\fi -\fi\fi% -} + \fi\fi\fi +\fi\fi\fi} %%% caption \newbox\@floatbox @@ -414,45 +365,53 @@ \let\hss\vss\let\unhbox\unvbox \csname bm@#4\endcsname}\@end@parbox \@end@tempboxa} -% コミュニティ版では、アスキー版で不自然だった|\parbox|の箱と -% 周囲の本文との揃え位置を修正し、以下のように設計しました。 -% \begin{itemize} -% \item 周囲の組方向が横組かつ組方向が||, ||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\一行目のベースラインが周囲のそれと一致 -% \item |[c]|指定のとき\\箱の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\最終行のベースラインが周囲のそれと一致 -% \end{itemize} -% \item 周囲の組方向が横組かつ組方向が||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\箱の上端が周囲の和文文字の高さと一致 -% \item |[c]|指定のとき\\箱の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\箱の下端が周囲の和文文字の深さと一致 -% \end{itemize} -% \item 周囲の組方向が縦組かつ組方向が||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\箱の上端が周囲の和文文字の高さと一致 -% \item |[c]|指定のとき\\箱の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\箱の下端が周囲の和文文字の深さと一致 -% \end{itemize} -% \item 周囲の組方向が縦組かつ組方向が||指定の場合 -% \begin{itemize} -% \item |[t]|指定のとき\\一行目のベースラインが周囲のそれと一致 -% \item |[c]|指定のとき\\箱の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -% \item |[b]|指定のとき\\最終行のベースラインが周囲のそれと一致 -% \end{itemize} -% \item 周囲の組方向が縦組かつ組方向が||指定の場合 -% [TODO] 未定! -%^^A \begin{itemize} -%^^A \item |[t]|指定のとき\\箱の上端が周囲の和文ベースラインと一致 -%^^A \item |[c]|指定のとき\\箱の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下) -%^^A \item |[b]|指定のとき\\箱の下端が周囲の和文ベースラインと一致 -%^^A \end{itemize} -% \end{itemize} + + +% ↓中身\周囲→ yoko tate utod dtou +% yoko A* B* B B +% tate B* A* D C +% utod B D* A C +% dtou B C C A +% A: 周囲と中身の組方向が一致.そのまま \vtop/\vcenter/\vbox +% B: 周囲と中身が90度ずれ.上端が和文の高さ or 下端が和文の深さに揃うように +% C: 周囲と中身が180度ずれ.(コードは B のものを流用) +% D: 上端が和文の高さ or 下端が和文の深さに揃うように(コードは B のものを流用) + +\def\fork@parbox@option@@A#1{% + \let\@end@parbox\relax + \if #1t\relax \let\@begin@parbox\vtop + \else\if #1b\relax\let\@begin@parbox\vbox + \else + \ifmmode + \let\@begin@parbox\vcenter\let\@end@parbox\relax + \else + \def\@begin@parbox{\null$\vcenter}% + \def\@end@parbox{\m@th$\null}% + \fi + \fi\fi} +\def\lltjext@getjablshift{% + \ifnum\ltj@ext@dir=3 \ltjgetparameter{tjabaselineshift}\else + \ltjgetparameter{yjabaselineshift}\fi} +\def\fork@parbox@option@@B#1{% + \if #1t\relax + \def\@begin@parbox{\raise\dimexpr\cht-\lltjext@getjablshift\vtop\bgroup\kern\z@\vbox}% + \let\@end@parbox\egroup + \else\if #1b\relax + \def\@begin@parbox{\lower\dimexpr\cdp+\lltjext@getjablshift\vbox\bgroup\vbox}% + \def\@end@parbox{\kern\z@\egroup}% + \else + \ifmmode + \let\@begin@parbox\vcenter\let\@end@parbox\relax + \else + \def\@begin@parbox{\null$\vcenter}% + \def\@end@parbox{\m@th$\null}% + \fi + \fi\fi} +\let\fork@parbox@option@@C=\fork@parbox@option@@B \def\fork@parbox@option<#1>[#2]{% - \let\box@dir\relax + \let\box@dir\relax \ltj@ext@dir=\ltjgetparameter{direction}\relax \if #1z\relax - \ifnum\ltjgetparameter{direction}=3\relax + \ifnum\ltj@ext@dir=3\relax \let\box@dir\utod \fi \else @@ -463,141 +422,35 @@ \fi\fi\fi\fi \fi \ifx\box@dir\relax - \ifcase\ltjgetparameter{direction}\relax + \ifcase\ltj@ext@dir \or \let\box@dir\dtou \or\or\let\box@dir\tate \or \let\box@dir\yoko \else \let\box@dir\utod \fi \fi -\ifnum\ltjgetparameter{direction}=4 % yoko - \ifx\box@dir\yoko - \if #2t\relax - \let\@begin@parbox\vtop - \let\@end@parbox\relax - \else\if #2b\relax - \let\@begin@parbox\vbox - \let\@end@parbox\relax - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi - \else - \if #2t\relax - \def\@begin@parbox{\raise\cht\vtop\bgroup\kern\z@\vbox}% - \let\@end@parbox\egroup - \else\if #2b\relax - \def\@begin@parbox{\lower\cdp\vbox\bgroup\vbox}% - \def\@end@parbox{\kern\z@\egroup}% - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi +\ifnum\ltj@ext@dir=4 % yoko + \ifx\box@dir\yoko \fork@parbox@option@@A{#2}% + \else \fork@parbox@option@@B{#2}% \fi -\else\ifnum\ltjgetparameter{direction}=1 % dtou - \ifx\box@dir\yoko - \if #2t\relax - \def\@begin@parbox{\raise\cht\vtop\bgroup\kern\z@\vbox}% - \let\@end@parbox\egroup - \else\if #2b\relax - \def\@begin@parbox{\lower\cdp\vbox\bgroup\vbox}% - \def\@end@parbox{\kern\z@\egroup}% - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi - \else\ifx\box@dir\dtou - \if #2t\relax - \let\@begin@parbox\vtop - \let\@end@parbox\relax - \else\if #2b\relax - \let\@begin@parbox\vbox - \let\@end@parbox\relax - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi - \else % 180 度回転→vtop, vbox を入れ替える - \if #2t\relax - \let\@begin@parbox\vbox %%% !!! - \let\@end@parbox\relax - \else\if #2b\relax - \let\@begin@parbox\vtop %%% !!! - \let\@end@parbox\relax - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi +\else\ifnum\ltj@ext@dir=1 % dtou + \ifx\box@dir\yoko \fork@parbox@option@@B{#2}% + \else\ifx\box@dir\dtou \fork@parbox@option@@A{#2}% + \else \fork@parbox@option@@C{#2}% \fi\fi -\else % tate, utod - \ifx\box@dir\yoko - \if #2t\relax - \def\@begin@parbox{\raise\cht\vtop\bgroup\kern\z@\vbox}% - \let\@end@parbox\egroup - \else\if #2b\relax - \def\@begin@parbox{\lower\cdp\vbox\bgroup\vbox}% - \def\@end@parbox{\kern\z@\egroup}% - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi - \else\ifx\box@dir\dtou % 180 度回転→vtop, vbox を入れ替える - \if #2t\relax - \let\@begin@parbox\vbox %%% !!! - \let\@end@parbox\relax - \else\if #2b\relax - \let\@begin@parbox\vtop %%% !!! - \let\@end@parbox\relax - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi - \else - \if #2t\relax - \let\@begin@parbox\vtop - \let\@end@parbox\relax - \else\if #2b\relax - \let\@begin@parbox\vbox - \let\@end@parbox\relax - \else - \ifmmode - \let\@begin@parbox\vcenter\let\@end@parbox\relax - \else - \def\@begin@parbox{\null$\vcenter}% - \def\@end@parbox{\m@th$\null}% - \fi - \fi\fi - \fi\fi -\fi\fi% -} +\else\ifnum\ltj@ext@dir=3 % tate + \ifx\box@dir\yoko \fork@parbox@option@@B{#2}% + \else\ifx\box@dir\tate \fork@parbox@option@@A{#2}% + \else\ifx\box@dir\dtou \fork@parbox@option@@C{#2}% + \else \fork@parbox@option@@B{#2}% D + \fi\fi\fi +\else % utod + \ifx\box@dir\yoko \fork@parbox@option@@B{#2}% + \else\ifx\box@dir\utod \fork@parbox@option@@A{#2}% + \else\ifx\box@dir\dtou \fork@parbox@option@@C{#2}% + \else \fork@parbox@option@@B{#2}% D + \fi\fi\fi +\fi\fi\fi} %%% pbox \DeclareRobustCommand\pbox{\leavevmode\@ifnextchar<{\X@makePbox}{\X@makePbox}} @@ -798,19 +651,21 @@ \def\ltj@lltjext@patch@array{% \patchcmd{\@tabular}{\hbox\bgroup}{% - \hbox\bgroup\count@=\ltjgetparameter{direction}}{}{} + \hbox\bgroup\ltj@ext@dir=\ltjgetparameter{direction}}{}{} + \pretocmd{\array}% + {\ltj@ext@dir=\ltjgetparameter{direction}\relax}{}{} \def\@startpbox##1{\bgroup \box@dir\adjustbaseline%%% これを追加 - \hsize=##1\@arrayparboxrestore + \setlength\hsize{##1}\@arrayparboxrestore \everypar{% \vrule \@height \ltjgetht\@arstrutbox \@width \z@ \everypar{}}% } - \def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray}} + \def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray}} \def\p@array<##1>[##2]##3{% \let\box@dir\relax \if ##1z\relax - \ifnum\count@=3\relax + \ifnum\ltj@ext@dir=3\relax \let\box@dir\utod\@tempcnta=\zstrutbox \fi \else @@ -825,7 +680,7 @@ \fi\fi\fi\fi \fi \ifx\box@dir\relax - \ifcase\count@ + \ifcase\ltj@ext@dir \or \let\box@dir\dtou\@tempcnta=\dstrutbox% dtou \or\or\let\box@dir\tate\@tempcnta=\tstrutbox% tate \or \let\box@dir\yoko\@tempcnta=\ystrutbox% yoko @@ -868,7 +723,7 @@ %%%%%%%%%%%%%%%% LuaTeX-ja original -\define@key[ltj]{japaram}{autouprightnum}{% %COUNT - \ltj@@set@stack{AURN}{0}{10000}\z@#1 } +%%\define@key[ltj]{japaram}{autouprightnum}{% %COUNT +%% \ltj@@set@stack{AURN}{0}{10000}\z@#1 } \endinput diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua index 52286624ca9..9d650f2020a 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua @@ -530,7 +530,7 @@ do start_time_measure('box_primitive_hook') local list_dir = get_dir_count()%dir_math_mod local b = getbox(tex_getcount('ltj@tempcnta')) - if b then + if b and getlist(to_direct(b)) then local box_dir = get_box_dir(to_direct(b), dir_yoko) if box_dir%dir_math_mod ~= list_dir then ltjb.package_error( @@ -1159,7 +1159,6 @@ do finalize_inner(shipout_temp) setbox('global', "AtBeginShipoutBox", copy(getlist(shipout_temp))) setfield(shipout_temp, 'head',nil) - -- garbage collect --local m = collectgarbage('count') --if m>lua_mem_kb+20480 then diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua new file mode 100644 index 00000000000..709cfb33075 --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua @@ -0,0 +1,23091 @@ +return { +version = 2, +table_ivd_aj1 = { +-- # IVD_Sequences +-- # +-- # History: +-- # +-- # 2016-08-15 Combined registration of the MSARG collection and of +-- # sequences in that collection. +-- # +-- # 2014-05-16 Combined registration of the Moji_Joho collection and of +-- # sequences in that collection. +-- # +-- # 2012-07-02 File restored due to corruption on the server. +-- # +-- # 2012-03-02 Registration of additional sequences in the Adobe-Japan1 +-- # collection. Registration of additional sequences in the +-- # Hanyo-Denshi collection. +-- # +-- # 2010-11-14 Combined registration of the Hanyo-Denshi collection and +-- # of sequences in that collection. +-- # +-- # 2007-12-14 Combined registration of the Adobe-Japan1 collection and +-- # of sequences in that collection. +-- # +-- # This file is part of the Unicode Ideographic Variation Database (IVD). +-- # For more details on the IVD, see UTS #37: +-- # http://www.unicode.org/reports/tr37/ +-- # +-- # Copyright 2006-2016 Unicode, Inc. +-- # For terms of use, see: http://www.unicode.org/terms_of_use.html +-- # +-- # EOF + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 2117341, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 2117276, + 2118934, + 2120195, + 2135615, + 2118848, + 2122011, + 2122536, + 2120182, + 2134050, + 2131061, + 2130716, + 2128464, + 2121898, + 2122721, + 2125349, + 2123245, + 2131046, + 2130598, + 2137077, + 2123923, + 2119463, + 2123169, + 2122353, + 2120603, + 2120144, + 2131579, + 2136308, + 2129250, + 2129342, + 2136974, + 2122262, + 2129055, + 2132151, + 2120585, + 2121397, + 2122505, + 2123415, + 2123848, + 2135495, + 2135949, + 2123599, + 2117349, + 2117386, + 2117453, + 2117533, + 2117705, + 2119410, + 2119991, + 2120148, + 2120193, + 2120713, + 2121951, + 2121999, + 2122096, + 2123283, + 2124037, + 2126010, + 2127183, + 2127216, + 2128379, + 2129325, + 2129391, + 2130115, + 2130958, + 2132067, + 2132738, + 2134101, + 2134138, + 2118459, + 2117269, + 2117285, + 2119647, + 2130098, + 2134209, + 2128111, + 2117120, + 2119921, + 2125474, + 2134072, + 2128434, + 2130728, + 2130571, + 2137135, + 2117953, + 2118512, + 2118845, + 2118881, + 2119392, + 2120187, + 2121493, + 2136306, + 2125291, + 2130148, + 2131245, + 2135650, + 2135664, + 2135712, + 2136059, + 2118667, + 2118643, + 2120583, + 2126031, + 4227005, + 2133954, + 2135784, + 2118511, + 2137436, + 2128570, + 2117137, + 2128019, + 2130428, + 2125350, + 2119192, + 2118916, + 2124573, + 2131226, + 2137147, + 2120165, + 2118569, + 2125158, + 2127068, + 2135439, + 2119234, + 2117265, + 2134091, + 2135794, + 2130767, + 2136332, + 2118625, + 2119094, + 2120496, + 2121585, + 2123296, + 2123507, + 2123780, + 2124856, + 2125043, + 2125097, + 2126939, + 2127560, + 2128462, + 2136116, + 2130673, + 2132059, + 2132576, + 2134765, + 2125234, + 2127275, + 2127562, + 2136517, + 2121894, + 4229889, + 2133386, + 2135474, + 2124174, + 2118573, + 2118022, + 2119442, + 2119728, + 2120004, + 2120628, + 2121462, + 2121768, + 2122665, + 2122740, + 4222143, + 2125588, + 2125966, + 2126100, + 2126169, + 2126293, + 2126655, + 2129409, + 2130550, + 2130641, + 2131351, + 2134112, + 2134619, + 2137371, + 2119785, + 2123196, + 2124890, + 2127141, + 2118137, + 2119982, + 2120037, + 2121600, + 2121692, + 2122428, + 2123258, + 2124330, + 2124583, + 2124724, + 2126731, + 2129857, + 2132310, + 2137388, + 2137358, + 2137796, + 2120865, + 2124950, + 2130811, + 2117892, + 2120779, + 2122166, + 2130374, + 2123894, + 2126433, + 2117209, + 2117626, + 2118520, + 2121833, + 2125353, + 2128463, + 2136051, + 2117131, + 2118422, + 2117358, + 2117461, + 2117437, + 2117537, + 2117491, + 2118304, + 2118639, + 2119177, + 2119951, + 2120385, + 2120630, + 2120673, + 2128337, + 2123399, + 2123676, + 2123702, + 2124620, + 2124979, + 2125931, + 2126786, + 4225421, + 2128318, + 2128444, + 2128775, + 2130609, + 2130651, + 2130692, + 2130807, + 2130927, + 2130899, + 2131814, + 2132658, + 2119209, + 2133160, + 2133990, + 2134094, + 2135838, + 2131594, + 2117572, + 2120936, + 2122257, + 2126425, + 2127163, + 2130405, + 4227773, + 2131710, + 2133184, + 2135749, + 2136339, + 2136533, + 2117323, + 2117402, + 2132451, + 2119390, + 2119754, + 2119882, + 2121467, + 2121707, + 2121770, + 4219028, + 2121826, + 2122192, + 2122258, + 2122448, + 2123065, + 2136897, + 2123366, + 2123952, + 4222327, + 2125936, + 2127180, + 2127494, + 2129269, + 2130597, + 2131961, + 2135435, + 2135694, + 2133149, + 2118129, + 2118334, + 2119958, + 2118835, + 2120627, + 2120982, + 2122088, + 2124162, + 2125231, + 2128013, + 2131147, + 2132055, + 2132594, + 2134951, + 2136760, + 2125164, + 2136488, + 2131673, + 2119587, + 2123775, + 2131662, + 2134542, + 2118275, + 2119303, + 2118660, + 2121427, + 2122465, + 2122937, + 2123836, + 2123832, + 2124731, + 2126706, + 2128058, + 2128491, + 2132378, + 4229586, + 2133355, + 2133763, + 2134253, + 2135459, + 2135700, + 2135913, + 2120550, + 2120883, + 2124157, + 2136141, + 2136142, + 2122651, + 2128672, + 2124331, + 2124415, + 2123958, + 2137101, + 2125663, + 4215410, + 2119069, + 2121840, + 2122476, + 2125115, + 2125319, + 2125521, + 2131035, + 2132240, + 2133828, + 2117140, + 2137145, + 2118646, + 2124059, + 2124346, + 2135940, + 2123818, + 2117980, + 2128579, + 2131122, + 2134492, + 2134924, + 2119259, + 2137384, + 2123810, + 2130693, + 2130993, + 2129061, + 2118152, + 2130629, + 2127078, + 2117246, + 2117507, + 2118048, + 2120658, + 2118154, + 2118360, + 2118375, + 2121211, + 2119066, + 2119722, + 2120166, + 2120588, + 2120600, + 2120667, + 2121330, + 2121337, + 2121891, + 2122015, + 2122083, + 2122174, + 2122715, + 2123106, + 2123729, + 2123859, + 2124026, + 2124606, + 2124627, + 2124887, + 2125602, + 2125719, + 2125637, + 2127024, + 2127128, + 2127587, + 2127627, + 2128639, + 2128801, + 2128929, + 2129385, + 2129718, + 2129904, + 2130077, + 2130534, + 2130846, + 2132403, + 2132684, + 2133163, + 2134148, + 2135121, + 2135443, + 2135441, + 2135458, + 2135653, + 2136019, + 2136360, + 2130456, + 2117176, + 2118699, + 2120888, + 2121164, + 2126761, + 2127436, + 2127676, + 2120873, + 2129899, + 2133259, + 2135745, + 2136081, + 2136148, + 2136152, + 2117377, + 2117390, + 2118513, + 2119068, + 2119272, + 2119674, + 2120007, + 2120457, + 2120644, + 2120848, + 2121228, + 2121342, + 2121676, + 2122734, + 2123578, + 2123223, + 4220386, + 2123551, + 2123979, + 2123972, + 2124383, + 2121264, + 2124741, + 2124823, + 2124925, + 2127231, + 4225352, + 2120547, + 2128384, + 2129152, + 2121661, + 2132367, + 2132504, + 2133172, + 2133367, + 2133708, + 2133789, + 2136290, + 2136590, + 2136892, + 2117248, + 2117757, + 2117888, + 2120083, + 2120604, + 2122287, + 2122368, + 2122988, + 2124602, + 2126496, + 2127249, + 2128199, + 2129833, + 2131963, + 2132668, + 2132848, + 2122668, + 2130890, + 2135968, + 2118665, + 2118659, + 2119083, + 2123860, + 2124376, + 2132592, + 2127911, + 2123637, + 2137805, + 2118516, + 2120610, + 2130202, + 2131536, + 2134022, + 2117144, + 2117189, + 2117319, + 2117393, + 2118602, + 2118712, + 2120622, + 2121491, + 2121765, + 2123089, + 2123581, + 2124866, + 2124914, + 2125027, + 2125944, + 2126851, + 2128502, + 2128558, + 2128648, + 2129178, + 2129150, + 2129254, + 2123239, + 2126427, + 2118587, + 2120773, + 2121192, + 2122450, + 2122464, + 2122521, + 2125344, + 2131546, + 2132529, + 2133469, + 2134776, + 2125569, + 2128294, + 2136922, + 2117288, + 2117291, + 2117292, + 2117531, + 2117536, + 2117841, + 2117959, + 2128630, + 2118001, + 2118134, + 2118484, + 2118433, + 4215679, + 2118635, + 2119084, + 2119811, + 2120929, + 2121527, + 2121546, + 2121775, + 2121808, + 2121837, + 2122527, + 2123097, + 2124363, + 2124993, + 2126530, + 2126573, + 2127855, + 2130168, + 2130181, + 2130440, + 2131278, + 2134263, + 2135009, + 2136063, + 2136407, + 2136666, + 2117360, + 2118109, + 2120749, + 2123393, + 2124141, + 2120768, + 2123506, + 2124149, + 2126729, + 2123856, + 2129025, + 2117829, + 2118372, + 2119495, + 2121214, + 2134822, + 2123172, + 2124579, + 2124605, + 2126900, + 2128257, + 2128317, + 2128715, + 2129354, + 2130617, + 2130892, + 2132095, + 2132319, + 4229945, + 2133969, + 2134481, + 2118687, + 2134656, + 2117213, + 2117686, + 2118629, + 2118458, + 2126551, + 2126742, + 2127849, + 2130662, + 2133679, + 2136518, + 2136520, + 2136530, + 2118007, + 2122010, + 2131550, + 2119088, + 2128506, + 2117750, + 2120659, + 2134087, + 2135685, + 2117170, + 4221659, + 2134503, + 2120785, + 2120776, + 2122648, + 2128543, + 2124947, + 2135924, + 2133857, + 2128554, + 2126218, + 2135688, + 2129026, + 2123799, + 2129520, + 2123857, + 2134892, + 2118386, + 2118683, + 2131371, + 2132499, + 2129828, + 2133709, + 2134241, + 2118502, + 2132104, + 2128193, + 2117570, + 2117822, + 2118161, + 2117956, + 2118995, + 2119469, + 2126826, + 2119563, + 2120017, + 2121570, + 2121604, + 2121845, + 2122102, + 2122087, + 2122153, + 2122674, + 2122810, + 2123116, + 2123375, + 2123842, + 2125331, + 2127206, + 2128445, + 2129147, + 2129228, + 2129305, + 2129483, + 2129771, + 2130702, + 2130762, + 2131661, + 2132488, + 2132579, + 2132838, + 2133757, + 2136090, + 2137487, + 2130616, + 2133966, + 2137064, + 2118279, + 2122271, + 2122883, + 2125760, + 2135705, + 2123841, + 2117777, + 2124576, + 2124922, + 2125652, + 2128500, + 2129232, + 2132032, + 2132515, + 2123528, + 2117366, + 2117689, + 2117670, + 2117733, + 2118012, + 2118200, + 2118243, + 2119079, + 2119439, + 2119685, + 2120396, + 2121466, + 2122162, + 2122232, + 2122483, + 2122610, + 2124060, + 2124329, + 2126461, + 2126508, + 2126638, + 2127892, + 2127983, + 2129273, + 2127628, + 2130089, + 2132363, + 2132761, + 2133218, + 2133714, + 2134115, + 2134901, + 2135674, + 2136149, + 2136595, + 2137720, + 2117955, + 2118559, + 2118579, + 2121339, + 2121510, + 2125339, + 2125456, + 2126724, + 2126846, + 2129219, + 2130487, + 2132480, + 2132730, + 2135632, + 2117198, + 2117643, + 2118628, + 2118780, + 2119418, + 2120145, + 2120548, + 2121201, + 2121387, + 2121511, + 2122296, + 2123077, + 2123695, + 2125398, + 2126544, + 2129098, + 2132148, + 2130081, + 2130145, + 2130928, + 2131534, + 2132615, + 2133480, + 2134583, + 2135751, + 2136167, + 2137875, + 2117268, + 2117266, + 2117389, + 2118472, + 2118729, + 2118718, + 2120239, + 2121612, + 2121633, + 2121887, + 2123943, + 2124430, + 2126938, + 2128001, + 2132638, + 2132644, + 2132855, + 2134416, + 2117214, + 2137033, + 2117284, + 2117500, + 2117551, + 2117657, + 2117654, + 2117961, + 2117996, + 2118303, + 2118329, + 2118398, + 2118554, + 2118627, + 2118673, + 2118670, + 2119049, + 2119505, + 2119586, + 2120061, + 2120532, + 2120541, + 2120591, + 2121189, + 2121191, + 2121207, + 2121336, + 2121347, + 2121370, + 2121399, + 2121496, + 2121810, + 2122060, + 2122391, + 2122456, + 2122663, + 2123067, + 2123266, + 2123331, + 2123508, + 2123629, + 2123809, + 2123927, + 2124235, + 2124895, + 2125098, + 2125161, + 2125359, + 2125469, + 2127154, + 2127495, + 2127980, + 2128447, + 2129120, + 2129157, + 2129176, + 2129246, + 2129329, + 2129941, + 2129923, + 2130095, + 2130097, + 2130260, + 2130319, + 2130474, + 2130770, + 2132044, + 2132065, + 2132763, + 2133154, + 2133244, + 2134218, + 2134389, + 2134641, + 2127935, + 2134780, + 2135460, + 2135629, + 2136069, + 2136473, + 2136792, + 2137403, + 2118235, + 2118315, + 2118647, + 2118664, + 2119893, + 2122487, + 2125792, + 2133098, + 2133855, + 2137785, + 2117963, + 2118203, + 2118730, + 2119421, + 4225600, + 2134391, + 2137440, + 2137810, + 2126660, + 2125577, + 2130288, + 2127121, + 2121725, + 2121946, + 2136744, + 2126555, + 2133948, + 2124644, + 2136067, + 2117322, + 2119408, + 2119524, + 2119870, + 2120282, + 2121832, + 2122183, + 2123279, + 2123270, + 2123833, + 2123953, + 2125303, + 2127317, + 2129210, + 2130542, + 2136898, + 2117275, + 2117456, + 2118601, + 2118918, + 2121071, + 2121190, + 2121198, + 2123771, + 2124953, + 2126963, + 2127874, + 2132560, + 2134934, + 2132191, + 2119504, + 2121383, + 2122539, + 2117813, + 2117804, + 4215181, + 2123520, + 2118857, + 2119774, + 2120123, + 2120624, + 2121577, + 2122317, + 2122657, + 2123837, + 2124659, + 2125320, + 2125949, + 2134471, + 2126464, + 2127893, + 2127910, + 2128237, + 2123150, + 2129200, + 2130908, + 2132161, + 2133769, + 2135707, + 2118244, + 2119464, + 2123600, + 2129770, + 2133153, + 2118068, + 2119490, + 2135594, + 2119738, + 2124170, + 2130100, + 2118834, + 2120974, + 2119676, + 2128021, + 2137594, + 2117468, + 2118218, + 2118795, + 2122814, + 2123304, + 2123540, + 2123765, + 2128516, + 2128726, + 2129186, + 2134831, + 2123868, + 2137005, + 2128697, + 2118425, + 2118026, + 2118199, + 2120671, + 2122486, + 2122926, + 2122982, + 2123565, + 4221882, + 2131369, + 2135761, + 2127504, + 2137046, + 2122572, + 2134790, + 2137003, + 2127551, + 2123346, + 2117129, + 2117784, + 2118594, + 2120817, + 2121960, + 2122898, + 2123107, + 2123871, + 2126310, + 2126794, + 2127139, + 2128791, + 2129538, + 2131605, + 2132867, + 2133211, + 2134392, + 2136336, + 2123180, + 2123435, + 2124683, + 2117333, + 2117332, + 2117434, + 2117503, + 2118202, + 2118648, + 2118642, + 2119139, + 2119387, + 2119915, + 2120139, + 2120137, + 2120191, + 2120528, + 2120781, + 2121218, + 2121259, + 2121687, + 2121757, + 2122503, + 2123055, + 2120540, + 2123183, + 2123197, + 2123240, + 2123677, + 2124642, + 2124667, + 2124815, + 2126661, + 2128201, + 2128321, + 2129144, + 2129177, + 2129195, + 2130082, + 2130178, + 2130419, + 2132374, + 2132574, + 2132585, + 2132582, + 2132620, + 2132718, + 2133191, + 2133212, + 2135756, + 2136316, + 2124655, + 2117259, + 2117436, + 2117517, + 2117968, + 2120535, + 2120698, + 2122056, + 2122497, + 2123330, + 2124577, + 2125515, + 2124987, + 2126398, + 2127037, + 2127316, + 2128065, + 4225338, + 2129932, + 2129971, + 2130410, + 2131092, + 2133918, + 2124880, + 2137727, + 2121487, + 2132824, + 2137387, + 2128634, + 2133752, + 2120589, + 2135787, + 2117123, + 2118641, + 2119671, + 2119985, + 2120393, + 2120612, + 2121865, + 2125439, + 2125574, + 2127294, + 2133226, + 2120607, + 2131200, + 2128864, + 2117746, + 2123764, + 2130589, + 2120801, + 2131274, + 2129438, + 2130446, + 2118041, + 2120708, + 2122600, + 2133350, + 2123164, + 4223342, + 2128190, + 2129175, + 2129925, + 2132765, + 2133706, + 2134126, + 2131655, + 2134186, + 2117663, + 4215546, + 2120762, + 2123603, + 2125948, + 4223541, + 2134348, + 2134472, + 2134827, + 2130661, + 2120642, + 2121521, + 2121977, + 2117179, + 2118614, + 2120584, + 2122315, + 2123569, + 2124682, + 2126569, + 2126816, + 2128430, + 2130283, + 2133411, + 2134354, + 2136470, + 2117906, + 2118615, + 2118762, + 2120703, + 2122632, + 2124345, + 2129324, + 2135808, + 2119386, + 2118606, + 4215912, + 2120599, + 2120753, + 2121182, + 2117614, + 2121985, + 2122494, + 2125106, + 2128320, + 2128331, + 2129218, + 2129485, + 2129874, + 2130413, + 2130463, + 2131088, + 2132038, + 2132338, + 2132880, + 2133620, + 2133807, + 2134065, + 2134347, + 2134380, + 2135750, + 2134428, + 2117312, + 2117455, + 2117957, + 2118465, + 2121619, + 2122254, + 2123732, + 2124865, + 2125323, + 2126691, + 2129446, + 2134477, + 2134659, + 2118612, + 2119961, + 2120639, + 2125265, + 4225373, + 2129454, + 2129051, + 2119806, + 2126239, + 2118138, + 2132051, + 2134000, + 2117578, + 2120955, + 2123301, + 2127788, + 2128611, + 2130460, + 2136575, + 2118086, + 2121642, + 2123244, + 2124143, + 2124681, + 2125299, + 2125462, + 2125668, + 2127614, + 2129172, + 2121185, + 2134133, + 2134407, + 2136070, + 2118118, + 2118173, + 2122304, + 2123409, + 2123481, + 4222490, + 2121398, + 2129362, + 4226930, + 2123512, + 2131375, + 2131447, + 4229880, + 2118313, + 2118617, + 2120051, + 2121359, + 2121616, + 2121813, + 2134756, + 2135652, + 2117815, + 2117919, + 2118365, + 2118432, + 2118471, + 2118636, + 2118888, + 2118982, + 2118961, + 2119191, + 2120040, + 2120126, + 2120252, + 2120629, + 4217862, + 2120719, + 2120721, + 2120730, + 2121348, + 2121354, + 2121440, + 2121584, + 2122367, + 2122372, + 2122459, + 2122636, + 2122615, + 2123271, + 2123276, + 2123309, + 2123382, + 2123646, + 2123938, + 2124319, + 2124341, + 2124988, + 2125192, + 2125321, + 2125400, + 2126140, + 2126118, + 2126183, + 2127303, + 2127617, + 2127965, + 2128129, + 4225381, + 2128368, + 2128608, + 2128657, + 2129063, + 2129209, + 2130070, + 2130902, + 2131083, + 2131273, + 2132061, + 2132211, + 2132511, + 2132540, + 2132564, + 2132595, + 2133089, + 2133214, + 2134436, + 2134630, + 2134910, + 2135064, + 2135708, + 2135960, + 2117130, + 2117128, + 2117150, + 2117207, + 2118039, + 2118256, + 4216782, + 2119732, + 2119884, + 2120482, + 2121272, + 2121925, + 2123006, + 2123617, + 2123606, + 2125124, + 2126518, + 2127219, + 2128483, + 2131128, + 2132850, + 2134456, + 2134816, + 2119217, + 2119668, + 2136318, + 2122477, + 2124045, + 2124694, + 2126317, + 2129492, + 2130039, + 2130546, + 2132454, + 2136287, + 2131797, + 2133937, + 2120763, + 2117432, + 2117601, + 2117557, + 2118919, + 2120224, + 2120669, + 2120681, + 2121667, + 2122062, + 2122543, + 2123184, + 2123339, + 2124014, + 2124187, + 2125176, + 2125297, + 2127155, + 2127289, + 2127647, + 4225374, + 2128358, + 2129203, + 2130403, + 2130607, + 2131370, + 2132394, + 2132538, + 2133675, + 2133915, + 2134066, + 2134493, + 2135815, + 2117306, + 2117313, + 2118147, + 2119797, + 2119916, + 2120715, + 2127130, + 2120765, + 2130254, + 2132490, + 2133957, + 2135651, + 2135917, + 2128677, + 2132687, + 2136072, + 2134370, + 2119411, + 2118568, + 2134039, + 2118713, + 2119554, + 2121253, + 2122664, + 2124852, + 2125962, + 2127713, + 2129035, + 2129888, + 2132080, + 2134082, + 2134356, + 2134800, + 2134808, + 2135695, + 2126942, + 2136772, + 2120967, + 2121065, + 2123120, + 2123682, + 2133416, + 2135771, + 2122606, + 2123593, + 2124057, + 2130885, + 2136087, + 2135744, + 2132222, + 2125700, + 2122874, + 2120696, + 2117142, + 2125868, + 2127197, + 2123311, + 2118084, + 2118198, + 2118370, + 2120147, + 2121601, + 2121767, + 2122256, + 2123071, + 2123124, + 2123295, + 4220532, + 2124018, + 2123798, + 2124643, + 2125317, + 2126450, + 2127135, + 2127579, + 4226238, + 2130006, + 2119920, + 2132221, + 2132351, + 2132640, + 2132627, + 2132683, + 2134045, + 2134418, + 2135890, + 2135897, + 2123145, + 2128398, + 2130182, + 2135739, + 2121261, + 2121948, + 2122266, + 2123173, + 2123284, + 2123664, + 2127859, + 2128461, + 2128973, + 2129470, + 2130186, + 2133164, + 2133348, + 2133473, + 2133599, + 2128041, + 2118151, + 2122457, + 2122661, + 2122818, + 2122392, + 2132525, + 2128515, + 2128832, + 2132652, + 2135786, + 2129270, + 2130444, + 2131785, + 2117337, + 2117960, + 2118467, + 2118496, + 2120611, + 2120706, + 2120726, + 2121181, + 2122278, + 2122311, + 2122928, + 2123795, + 2123828, + 2125001, + 2125125, + 2125079, + 2123731, + 2125660, + 2126158, + 2126205, + 2123211, + 2128511, + 2128813, + 2129370, + 2129482, + 2129832, + 2130298, + 2130459, + 2130489, + 2131366, + 2132590, + 2133198, + 2133493, + 2134136, + 2134135, + 2134701, + 2134673, + 2135427, + 2137006, + 2118221, + 2119044, + 2125624, + 2126134, + 2117992, + 2128261, + 2129493, + 2130355, + 2129102, + 2119244, + 2119761, + 2120872, + 2122666, + 2123518, + 2123517, + 2124122, + 2126553, + 2127247, + 2127246, + 2128142, + 2128214, + 2128351, + 2129047, + 2129184, + 2129220, + 2131463, + 2132532, + 2135611, + 2134113, + 2137888, + 2117863, + 2118261, + 2118604, + 2118626, + 2117641, + 2119082, + 2119918, + 2120015, + 2126397, + 2120587, + 2120804, + 2118429, + 2121955, + 2121971, + 2122588, + 2122627, + 2122559, + 2122683, + 2122957, + 2123241, + 2123513, + 2121187, + 2124237, + 2124285, + 2125589, + 2126309, + 2117257, + 2127337, + 2127608, + 2128531, + 2129119, + 2129359, + 2129308, + 2130017, + 2130761, + 2130776, + 2131052, + 2131132, + 2131451, + 2132165, + 2133360, + 2134017, + 2134125, + 2134935, + 2135836, + 2136594, + 2117839, + 2119831, + 4219278, + 2130387, + 2131253, + 2133256, + 2134048, + 2117571, + 2117748, + 2118215, + 2118515, + 2121839, + 2122569, + 2123615, + 2125356, + 2133427, + 2134047, + 2117591, + 2120798, + 2133194, + 2123215, + 2129306, + 2118482, + 2132118, + 2118006, + 2122691, + 2120536, + 2120555, + 2120714, + 2122765, + 2123601, + 2134108, + 2117334, + 2119962, + 2119978, + 2124912, + 2132561, + 2118974, + 2119701, + 2120101, + 2121968, + 2122323, + 2123713, + 2130485, + 2124117, + 2135616, + 2136516, + 2136616, + 2117459, + 2119686, + 2120702, + 2129936, + 2120881, + 2121263, + 2121605, + 2121760, + 2122059, + 2122292, + 2123519, + 2125040, + 2125534, + 2130126, + 2130303, + 2130644, + 2132107, + 2133176, + 2134016, + 2134062, + 2135690, + 2137819, + 2137051, + 2117347, + 2118640, + 2119975, + 2128684, + 2134413, + 2136140, + 2137593, + 2125533, + 2125863, + 2118483, + 2118980, + 2120581, + 2122328, + 2122398, + 2122451, + 2124962, + 2125807, + 4224034, + 2132503, + 2135096, + 2125761, + 2132734, + 2130744, + 2118119, + 2131704, + 2118634, + 2118633, + 2117446, + 2134100, + 2133936, + 2120042, + 2130225, + 4218365, + 2128618, + 2133951, + 2123994, + 2133047, + 2126584, + 2137160, + 2124349, + 2132656, + 2117177, + 2118488, + 4216326, + 2119526, + 2122437, + 2122658, + 2123238, + 2124622, + 2125281, + 2125403, + 2125997, + 2127853, + 2128623, + 2128810, + 2129339, + 2129981, + 2130118, + 2131659, + 2132629, + 2134875, + 2119395, + 2119879, + 2121534, + 2123181, + 2123414, + 2124416, + 2124725, + 2127159, + 2132679, + 2117668, + 2127845, + 2119472, + 2121499, + 2121829, + 2123386, + 2124896, + 2127348, + 2128410, + 2129774, + 2130420, + 2131736, + 2134085, + 2136499, + 2128841, + 2127196, + 2128633, + 2128721, + 2131140, + 2134032, + 2128361, + 2128530, + 2130742, + 2120417, + 2127680, + 2117165, + 2117362, + 2120601, + 2121696, + 2122429, + 2123324, + 2123761, + 2125032, + 2131563, + 2132087, + 2132539, + 2134350, + 2134771, + 2136528, + 2124311, + 2125862, + 4223786, + 2130663, + 2131031, + 2133167, + 2117121, + 2117958, + 2118091, + 2119051, + 2120693, + 2121238, + 2121267, + 2121345, + 2121492, + 2121525, + 2121579, + 2121652, + 2122226, + 2122513, + 2123426, + 2123549, + 4222830, + 2126418, + 2127162, + 2127674, + 2130036, + 2130233, + 2130296, + 2131830, + 2132671, + 2132700, + 2133381, + 2133491, + 2134682, + 2135415, + 2136066, + 2137317, + 2118341, + 2122583, + 2127604, + 2123541, + 2124936, + 2126797, + 2133187, + 2134958, + 2135667, + 2125093, + 2119836, + 2124046, + 2124236, + 2134013, + 2134938, + 2127323, + 2134042, + 2119770, + 2123778, + 2122676, + 2124283, + 2117443, + 2125612, + 2123736, + 2133947, + 2131238, + 2129332, + 2134868, + 2124095, + 2125680, + 2119530, + 2119927, + 2120492, + 2129196, + 2126378, + 2118666, + 2134499, + 4234676, + 2117293, + 2117454, + 2117724, + 2117749, + 2118211, + 2133150, + 2118728, + 2119716, + 2120602, + 2121245, + 2121365, + 2121389, + 2121463, + 2121503, + 2121868, + 2122421, + 2122554, + 2122704, + 2123951, + 2124864, + 2128007, + 2128270, + 2128395, + 2129376, + 2130503, + 2132482, + 2132710, + 2133572, + 2134035, + 2134200, + 2134317, + 2134488, + 2137870, + 2125029, + 2122840, + 2122978, + 2123125, + 2125556, + 2127492, + 2128667, + 2134121, + 2134993, + 2125498, + 2118898, + 2121657, + 2122916, + 2133837, + 2133997, + 2134596, + 2118008, + 2119787, + 2119977, + 2120789, + 2121367, + 2125307, + 2129551, + 2127132, + 2133180, + 2133730, + 2136155, + 2126009, + 2117405, + 2124735, + 2125745, + 2127152, + 2135803, + 2117966, + 2118672, + 2119733, + 2119767, + 2120108, + 2120800, + 2121618, + 2123159, + 2123612, + 2125345, + 2127483, + 2130911, + 2133229, + 2134036, + 4231421, + 2134861, + 2127909, + 2127930, + 2118314, + 2121382, + 2119455, + 2120052, + 2121746, + 2117650, + 2117978, + 4215212, + 2118093, + 2118144, + 2118928, + 2119764, + 2119768, + 2120023, + 2120597, + 2120950, + 2121099, + 2121916, + 2122389, + 2122797, + 2123633, + 2123843, + 2123964, + 2123999, + 2127575, + 2125272, + 2125423, + 2125211, + 2125935, + 2126280, + 2121555, + 2127320, + 2128247, + 2128713, + 2128724, + 2128722, + 4226262, + 2129265, + 2118192, + 2131043, + 2131305, + 2131428, + 2132494, + 2132740, + 2133062, + 2133519, + 2134019, + 2134031, + 2135065, + 2135670, + 2136109, + 2136624, + 2135512, + 2117837, + 2118357, + 2118668, + 2119682, + 2120718, + 2122151, + 2122910, + 2125086, + 2127795, + 2128613, + 2130164, + 2130948, + 2134099, + 2134661, + 2120928, + 2137351, + 2118463, + 2121623, + 2121651, + 2125212, + 2126457, + 2127715, + 2128319, + 2128868, + 2124754, + 2126572, + 2132653, + 2123779, + 2124385, + 2118136, + 2128513, + 2124084, + 2120778, + 2137334, + 2130667, + 2120645, + 2134345, + 2125854, + 2119288, + 2120815, + 2121927, + 2123110, + 2124940, + 2133082, + 2134081, + 2136083, + 2118737, + 2123463, + 2134541, + 2120008, + 2134179, + 2118021, + 2117197, + 2118122, + 2131353, + 2132750, + 2125912, + 2122618, + 2134859, + 2124130, + 2136500, + 2129412, + 2127223, + 2118487, + 2124128, + 2133727, + 4232931, + 2124893, + 2117260, + 2120764, + 2121488, + 2133993, + 2118402, + 2133201, + 2130057, + 2131577, + 2121471, + 2123237, + 2117235, + 2117989, + 2120066, + 2120767, + 2136046, + 2117371, + 2120074, + 2121677, + 2132621, + 2125793, + 2128304, + 2128226, + 4217831, + 2131057, + 2126635, + 2126257, + 2121332, + 2121717, + 2122619, + 2122906, + 2126275, + 2129048, + 2117187, + 2121468, + 2117195, + 2119644, + 2119330, + 2121897, + 2125763, + 2129165, + 2130173, + 2130227, + 2130367, + 2133938, + 2132375, + 2131620, + 2121204, + 2122378, + 2122925, + 2132359, + 2123639, + 2125026, + 2125118, + 2126902, + 2127924, + 2120262, + 2129781, + 2130605, + 2136492, + 2117619, + 2121411, + 2122461, + 2122642, + 2123095, + 2123631, + 2127555, + 2126412, + 2130124, + 2130106, + 2133801, + 2134349, + 2117645, + 2119673, + 2120338, + 4221061, + 2124147, + 2126180, + 2126589, + 2133175, + 2119922, + 2133216, + 2135658, + 2134041, + 2131839, + 2128356, + 2127847, + 2130985, + 2117423, + 2118245, + 2118490, + 2122445, + 2123727, + 2125002, + 2127485, + 2128788, + 2129045, + 2130486, + 2131332, + 2133995, + 2123485, + 2125600, + 2126342, + 2129435, + 2130859, + 2136513, + 2137766, + 2118141, + 2128817, + 2127986, + 2128824, + 2130055, + 2128712, + 2124520, + 2121313, + 2130060, + 2127185, + 2127200, + 2117995, + 2134626, + 2125452, + 2127482, + 2134423, + 2136810, + 2117392, + 2129776, + 2122396, + 2128719, + 2135461, + 2137321, + 2119290, + 2119769, + 2131684, + 2135740, + 2117428, + 2118180, + 2118474, + 2118605, + 2118619, + 2121222, + 2122796, + 2123153, + 2123647, + 2124862, + 2124878, + 2126408, + 2126511, + 2126829, + 2127188, + 2129473, + 2130476, + 2131433, + 2133161, + 2128836, + 2134470, + 2126185, + 2136082, + 4233455, + 2122557, + 2123369, + 2127210, + 2127588, + 2128080, + 2131267, + 2131694, + 2118442, + 4215633, + 2118694, + 2120067, + 2121351, + 2121596, + 2121906, + 2122313, + 2122361, + 2122411, + 2123152, + 2124756, + 2125004, + 2127282, + 2127534, + 4225169, + 2128344, + 2129355, + 2129783, + 2130085, + 2132139, + 2132665, + 2133179, + 2134143, + 2135902, + 2136283, + 2124299, + 2128952, + 2117785, + 2120766, + 2121646, + 2123655, + 2124760, + 2126901, + 2127625, + 2129806, + 2137915, + 2123722, + 2128407, + 2118457, + 2127243, + 2136813, + 2121574, + 2130333, + 2130929, + 2130072, + 2121532, + 2121669, + 2127202, + 2128710, + 2134076, + 2123879, + 2120171, + 2120347, + 2129168, + 2127486, + 2132780, + 2117621, + 2121578, + 2124313, + 2124855, + 2125570, + 2127074, + 2128232, + 2132072, + 2132565, + 2133113, + 2121439, + 2122703, + 2127301, + 2128338, + 2130647, + 2134824, + 2134770, + 2131100, + 2131693, + 2137133, + 2118849, + 2121580, + 2123148, + 2125148, + 2125845, + 2133159, + 4230355, + 4233275, + 4220239, + 2127094, + 2117133, + 2117336, + 2119648, + 2119979, + 2120294, + 2120652, + 2118056, + 2121219, + 2121372, + 2121750, + 2122358, + 2123127, + 2123175, + 2123374, + 2125166, + 2126390, + 2128678, + 2130256, + 2130330, + 2130585, + 2132828, + 2133152, + 2133222, + 2133364, + 2135580, + 2135620, + 2117550, + 2122923, + 2124646, + 2130462, + 2131041, + 2131306, + 2134248, + 2120705, + 2124115, + 2136232, + 2131066, + 2131287, + 2117391, + 2118255, + 2121641, + 2121285, + 2123533, + 2128271, + 2130297, + 2132231, + 2132358, + 2125301, + 2121495, + 2122325, + 2124984, + 2117327, + 2126441, + 2136978, + 2118150, + 2118715, + 2119284, + 2119859, + 2122148, + 2122350, + 2126106, + 2120046, + 2129033, + 2129118, + 2129179, + 2135792, + 2123143, + 2130014, + 2117145, + 2117493, + 2118005, + 2119744, + 2121315, + 2121331, + 2121482, + 2123716, + 2117158, + 2131261, + 2135433, + 2135643, + 2129011, + 2136065, + 2117883, + 2119873, + 2127446, + 2128039, + 2118181, + 2127781, + 2131217, + 2128774, + 2117711, + 2119945, + 2126407, + 2128839, + 2129384, + 2133946, + 2133972, + 2134093, + 2117567, + 4215497, + 2120233, + 2121473, + 2135981, + 2117597, + 2130455, + 2134762, + 2119427, + 2122581, + 2124649, + 2127147, + 2132188, + 2133780, + 2128450, + 2118367, + 2119827, + 2122069, + 2122250, + 2123438, + 2124749, + 2128959, + 2130921, + 2117667, + 2117624, + 2118405, + 2118726, + 2119729, + 2120009, + 2120605, + 2120944, + 2120943, + 2121001, + 2121366, + 2122417, + 2122599, + 2123070, + 2123193, + 2123531, + 2125013, + 2125025, + 2126073, + 2127922, + 2129451, + 2130142, + 2130611, + 2130956, + 2131180, + 2131714, + 2132242, + 2132522, + 2133066, + 2134182, + 2134738, + 2136317, + 2137331, + 2137452, + 2117199, + 2117281, + 2117773, + 2118230, + 2119498, + 2120104, + 2121277, + 2121688, + 2121689, + 2122303, + 2123444, + 2123547, + 2123728, + 2123986, + 2118034, + 2129185, + 2130090, + 2130344, + 2132736, + 2133132, + 2133183, + 2134654, + 2135602, + 2118688, + 2136108, + 2118423, + 2117845, + 2118492, + 4217000, + 2122930, + 2123572, + 2126439, + 2127718, + 2128454, + 2134502, + 2118339, + 2124961, + 2124678, + 2119680, + 2121292, + 2120020, + 2123564, + 2129915, + 2118113, + 2127558, + 2122857, + 2128104, + 2136916, + 2137787, + 2119627, + 2120121, + 2123303, + 2123674, + 2124750, + 2118889, + 2124249, + 2121301, + 2130332, + 2123669, + 2137002, + 2123774, + 2137170, + 2123869, + 2117286, + 2117603, + 2118600, + 2122425, + 2123563, + 2124971, + 2133956, + 2117549, + 2129517, + 2137791, + 2117127, + 2122082, + 2125440, + 2125611, + 2131219, + 2118771, + 2123562, + 2136901, + 2121203, + 2128789, + 2120876, + 2120646, + 2131740, + 2125386, + 2131153, + 2128404, + 2130184, + 2120089, + 2129037, + 2124817, + 2127648, + 2118361, + 2119970, + 2126113, + 2126431, + 2127835, + 2135847, + 2137441, + 2124043, + 2120319, + 2120216, + 2118053, + 2118669, + 2118781, + 2123278, + 2127583, + 2134007, + 2134680, + 2137332, + 2120170, + 2126429, + 2125509, + 2117965, + 2123977, + 2129343, + 2129388, + 2135906, + 2137786, + 2122872, + 2124321, + 2130690, + 2120068, + 2120543, + 2124763, + 2126619, + 2127602, + 2129330, + 2129943, + 2131097, + 2117938, + 2123560, + 2137817, + 2127598, + 2123618, + 2118399, + 2136325, + 2120740, + 2122299, + 2129022, + 2133168, + 2118991, + 2121910, + 2129163, + 2135424, + 2118401, + 2117215, + 2118070, + 2119964, + 2126394, + 2129974, + 2134478, + 2121509, + 2127842, + 2118532, + 2121593, + 2129156, + 2131372, + 2132531, + 2133645, + 2135894, + 2123763, + 2131374, + 2135123, + 2121993, + 2121992, + 2124985, + 2127442, + 4229869, + 2133816, + 2118959, + 2117457, + 2117930, + 2118343, + 2118603, + 2120613, + 2121341, + 2121888, + 2122114, + 2122710, + 2123529, + 2123738, + 2125415, + 2125196, + 2126646, + 2126647, + 2127153, + 4225360, + 2132181, + 2132632, + 2134090, + 2134161, + 2134261, + 2135748, + 2131853, + 2119957, + 2117256, + 2117465, + 2117134, + 2132617, + 2133823, + 2136080, + 2117805, + 2121340, + 2120086, + 2120633, + 2121400, + 2122714, + 2122746, + 2122945, + 2123484, + 2124106, + 2124248, + 2125067, + 2125494, + 2126228, + 2127144, + 2128559, + 4226954, + 2129920, + 2131017, + 2131145, + 2132353, + 2132769, + 2133514, + 2134117, + 2135677, + 2136330, + 2122110, + 2122385, + 2124594, + 2124931, + 2125172, + 2129868, + 2129916, + 2125248, + 2129797, + 2131898, + 2132216, + 2123621, + 2130865, + 2136124, + 2135799, + 2125083, + 2129249, + 2131005, + 2134378, + 2117233, + 2118517, + 2121040, + 4221700, + 2125803, + 2131405, + 2131501, + 2132391, + 2118185, + 2118671, + 2120805, + 2123598, + 2123944, + 2126854, + 2126979, + 2127330, + 2132175, + 2132193, + 2134476, + 2135778, + 2135672, + 2121611, + 2126727, + 2128587, + 2131022, + 2122656, + 2127205, + 2118281, + 2125121, + 2125468, + 2126857, + 2127193, + 2127979, + 2129042, + 2135686, + 2128604, + 2137997, + 2117558, + 2122094, + 2123205, + 4228700, + 2117254, + 2117294, + 2117850, + 2117153, + 2118092, + 2120686, + 2123161, + 2123905, + 2125244, + 2126623, + 2127426, + 2127789, + 2128412, + 2129127, + 2130543, + 2132690, + 2134140, + 2134479, + 2135669, + 2136088, + 2118299, + 2129361, + 2117675, + 2118552, + 2123671, + 2125259, + 2126288, + 2126899, + 2130408, + 2133802, + 2135715, + 2137175, + 2137759, + 2126944, + 2119745, + 2125209, + 2129199, + 4233310, + 2117348, + 2117430, + 2117515, + 2118071, + 2118321, + 2121146, + 2121756, + 2126770, + 2128188, + 2130643, + 2134580, + 2135735, + 2135798, + 2135818, + 2137751, + 2137954, + 2123430, + 2124660, + 2118167, + 2118307, + 2126024, + 2132162, + 4218569, + 2121803, + 2122128, + 4222755, + 4223305, + 2128958, + 4226548, + 2130031, + 4228334, + 4231203, + 2134828, + 2118722, + 2136943, + 2124499, + 2125961, + 2133186, + 2133487, + 2135858, + 2118324, + 2120257, + 2121418, + 2121476, + 4220695, + 2124156, + 2124180, + 2125162, + 2125583, + 2126434, + 2126588, + 2128877, + 2129921, + 2130046, + 2131787, + 2134222, + 2117997, + 2137747, + 2128260, + 2130059, + 2134834, + 2132694, + 2117677, + 2118796, + 2132593, + 2124650, + 2133188, + 2130183, + 2121937, + 2123680, + 2137586, + 2117273, + 2117272, + 2137104, + 2132587, + 2131393, + 2131304, + 2124032, + 2125438, + 2128023, + 2130261, + 2121484, + 2117136, + 2117141, + 2117162, + 2117169, + 2117174, + 2117180, + 2117183, + 2117186, + 2117206, + 2117208, + 2117250, + 2117253, + 2133099, + 2117258, + 2130450, + 2121485, + 2117262, + 2117278, + 2117279, + 2117280, + 2117282, + 2117296, + 2117299, + 2117302, + 2117326, + 2117325, + 2117316, + 2117318, + 2117314, + 2117335, + 2117342, + 2117357, + 2117343, + 2117367, + 2117385, + 2117466, + 2117424, + 2117467, + 2117469, + 2117463, + 2117447, + 2117494, + 2117512, + 2117519, + 2117528, + 2117499, + 2117481, + 2117488, + 2117521, + 2117487, + 2117510, + 2117526, + 2117912, + 2117588, + 2117599, + 2117582, + 2117592, + 2117595, + 2117585, + 2117594, + 2117584, + 2117604, + 2117605, + 2117658, + 2117672, + 2117652, + 2117674, + 2117669, + 2117637, + 2117404, + 2117622, + 2117665, + 2117673, + 2117676, + 2117630, + 2117615, + 2117649, + 2117638, + 2117699, + 2117703, + 2123523, + 2117717, + 2117712, + 2117704, + 2117722, + 2117718, + 2117740, + 2117752, + 2117760, + 2117786, + 2117765, + 2117812, + 2117810, + 2117833, + 2117834, + 2117811, + 2117826, + 2117846, + 2117854, + 2117861, + 2117869, + 2117859, + 2117870, + 2117881, + 2117877, + 2117897, + 2117889, + 2117890, + 2117910, + 2117909, + 2117908, + 2117914, + 2117921, + 2117946, + 2117943, + 2117948, + 2117947, + 2117951, + 2117952, + 2117970, + 2117964, + 4215124, + 2117986, + 2128632, + 2117993, + 2117994, + 2117998, + 2118016, + 2118018, + 2119384, + 2118028, + 2118025, + 2118031, + 2118033, + 2118035, + 4215189, + 2118038, + 2118052, + 2118054, + 2118050, + 2118057, + 2118058, + 2118059, + 2118067, + 2118065, + 2118066, + 2118064, + 2118069, + 2118077, + 2118085, + 2118089, + 2118107, + 2118112, + 2131541, + 2118121, + 2118125, + 2118128, + 2118133, + 2118142, + 2118148, + 2118155, + 2118164, + 2118158, + 2118183, + 2118186, + 2118190, + 2118195, + 2118201, + 2118223, + 2118212, + 2118219, + 2118220, + 2118238, + 2118228, + 2118250, + 2118260, + 2118249, + 2118259, + 2118271, + 2118269, + 2118285, + 2118292, + 2118290, + 2118257, + 2118280, + 2118289, + 2133928, + 2133927, + 2118316, + 2118317, + 2118332, + 2118325, + 2118337, + 2118349, + 2118359, + 2118366, + 2118371, + 2118374, + 2136301, + 2118368, + 2118387, + 2118389, + 2118392, + 2118393, + 2118406, + 2118408, + 2127160, + 2118413, + 2118416, + 2118415, + 2118421, + 2118426, + 2118435, + 2118447, + 2118449, + 2118451, + 2118456, + 2118464, + 2118470, + 2118469, + 2117143, + 2118473, + 2118477, + 2118102, + 2118494, + 2118505, + 2118510, + 2119960, + 2118523, + 2118519, + 2118530, + 2118550, + 2118560, + 2118566, + 2118565, + 2118574, + 2118576, + 2118582, + 2118595, + 2128914, + 2135769, + 2118623, + 2123516, + 2126318, + 2118638, + 2118632, + 2118637, + 2118650, + 2118657, + 2118717, + 2118720, + 2118700, + 2118701, + 2118716, + 2118702, + 2118710, + 2118697, + 2118685, + 2118734, + 2118799, + 2118773, + 2118798, + 2118751, + 2118769, + 2118775, + 2118768, + 2118802, + 2118779, + 2118784, + 2118774, + 2118788, + 2118800, + 2118790, + 2118855, + 2118818, + 2118840, + 2118821, + 2118828, + 2118852, + 2118856, + 2118824, + 2118827, + 2118850, + 2118820, + 2118846, + 2118844, + 2118872, + 2118885, + 2118886, + 2118927, + 2118932, + 2118909, + 2118894, + 2118893, + 2118906, + 2118882, + 2118969, + 2118976, + 2119011, + 2118988, + 2118958, + 2119004, + 2118981, + 2118998, + 2118999, + 2118968, + 2118963, + 2119005, + 2119065, + 2119040, + 2118831, + 2119050, + 2119071, + 2119035, + 2119038, + 2119064, + 2119070, + 2119086, + 2119036, + 2119043, + 2119081, + 2119047, + 2119080, + 2119130, + 2119109, + 2119135, + 2119108, + 2119132, + 2119140, + 2119124, + 2119188, + 2119159, + 2119190, + 2119166, + 2119165, + 2119195, + 2119161, + 2119246, + 2119248, + 2126303, + 2119220, + 2119222, + 2119218, + 2119224, + 2119275, + 2119268, + 2119215, + 2119276, + 2119274, + 2119302, + 2119296, + 2119306, + 2119328, + 2119316, + 2119311, + 2119333, + 2119342, + 2119350, + 2119348, + 2119362, + 2119356, + 2119361, + 2119363, + 2119360, + 2119368, + 2119374, + 2119377, + 2119379, + 2119383, + 2119406, + 2119417, + 2119424, + 2119423, + 2119428, + 2119433, + 2119432, + 2119435, + 2119437, + 2119443, + 2119448, + 2119446, + 2119111, + 2119452, + 2119462, + 2119479, + 2119480, + 2119502, + 2119483, + 2119488, + 2119503, + 2119529, + 2119616, + 2119560, + 2119521, + 2119551, + 2119561, + 2119571, + 2119584, + 2119603, + 2119588, + 2119594, + 2119600, + 2119619, + 2119622, + 2119636, + 2119634, + 2119635, + 2119690, + 2119638, + 2119651, + 2119691, + 2119705, + 2119709, + 2119794, + 2119713, + 2119778, + 2119755, + 2119792, + 2124736, + 2119762, + 2119741, + 2119801, + 2119813, + 2119865, + 2119839, + 2119851, + 2119866, + 2119902, + 2119867, + 2119864, + 2119854, + 2119877, + 2119891, + 2119889, + 2119895, + 2119897, + 2119896, + 2119909, + 2119900, + 2119908, + 2119903, + 2119919, + 2119930, + 2119929, + 2119931, + 2119932, + 2119933, + 2119938, + 2119946, + 2119952, + 2119963, + 2123942, + 2119973, + 2119980, + 2119981, + 2119986, + 2119992, + 2119998, + 2128594, + 2120021, + 2120016, + 2120014, + 2120026, + 2120024, + 2120034, + 2120032, + 2120039, + 2120044, + 2120041, + 2120056, + 2120065, + 2120093, + 2117470, + 2117547, + 2120099, + 2120114, + 2120134, + 2120168, + 2120156, + 2120077, + 2120153, + 2120154, + 2120229, + 2120223, + 2120209, + 2120220, + 2120201, + 2120218, + 2120256, + 2120300, + 2120265, + 2120245, + 2120246, + 2120290, + 2120298, + 2120346, + 2120380, + 2120382, + 2120395, + 2120386, + 2120381, + 2120419, + 2120407, + 2120422, + 2120425, + 2120406, + 2120442, + 2120443, + 2120460, + 2120459, + 2120470, + 2120498, + 2120400, + 2120490, + 2120502, + 2120510, + 2120515, + 2120517, + 2120512, + 2120529, + 2120533, + 2120538, + 2120539, + 2120549, + 2120553, + 2120560, + 2120563, + 2120565, + 2120568, + 2123144, + 2120570, + 2120576, + 2120579, + 2120614, + 2120632, + 2120643, + 2120647, + 2120649, + 2120660, + 2120656, + 2120676, + 2120678, + 2120674, + 2120670, + 2120677, + 2120683, + 2120688, + 2120694, + 2120691, + 2120709, + 2120711, + 2120712, + 2120717, + 2120723, + 2120736, + 2120738, + 2120744, + 2120760, + 2120761, + 2120769, + 2120774, + 2120782, + 2120787, + 2120784, + 2120783, + 2120561, + 2120812, + 4217966, + 2117218, + 2120822, + 2120825, + 2120844, + 2120849, + 2120852, + 2120091, + 2120875, + 2120891, + 2120886, + 2120892, + 2120887, + 2120901, + 2120894, + 2120903, + 2120921, + 2120937, + 2120957, + 2120954, + 2120941, + 2121100, + 2120938, + 2120971, + 2120981, + 2120983, + 2121052, + 2120991, + 2120987, + 2120977, + 2120980, + 2120994, + 2120986, + 2120985, + 2120984, + 2121036, + 2121042, + 2121038, + 2121035, + 2121068, + 2121075, + 2121078, + 2121095, + 2121092, + 2121090, + 2121122, + 2121117, + 2121132, + 2121134, + 2121149, + 2121104, + 2121143, + 2121148, + 2121161, + 2121165, + 2121171, + 2121170, + 2121174, + 2121179, + 2121195, + 2121202, + 2121205, + 2121227, + 2121242, + 2121241, + 2121233, + 2121243, + 2121270, + 2121271, + 2121284, + 2121283, + 2121280, + 2121294, + 2121303, + 2121300, + 2121311, + 2121314, + 2121316, + 2121287, + 2121333, + 2121334, + 2121338, + 2137788, + 2121343, + 2121376, + 2121409, + 2121410, + 2121416, + 2121424, + 2121423, + 2121430, + 2121443, + 2121437, + 2121434, + 2121435, + 2121442, + 2121441, + 2121448, + 2121449, + 2121452, + 2121457, + 2121459, + 2121456, + 2121460, + 2121464, + 2121470, + 2121475, + 2121481, + 2121565, + 2121564, + 2121483, + 2121489, + 2121494, + 2121513, + 2121517, + 2121528, + 2121537, + 2121544, + 2121548, + 2121550, + 2121519, + 2121553, + 2121558, + 2121559, + 2121561, + 2121569, + 2121581, + 2121587, + 2121591, + 2121603, + 2121602, + 2121599, + 2121610, + 2121608, + 2121617, + 2121607, + 2121630, + 2121625, + 2121624, + 2121632, + 2121640, + 2121645, + 2121660, + 2121686, + 2121723, + 2121700, + 2121720, + 2121713, + 2121693, + 2121907, + 2121727, + 2121761, + 2121824, + 2121753, + 2121744, + 2121769, + 2121742, + 2121777, + 2121755, + 2121749, + 2121771, + 2121766, + 2121743, + 2121786, + 2121818, + 2121793, + 2121834, + 2121847, + 2121823, + 2121802, + 2121798, + 2121805, + 2121827, + 2121795, + 2121828, + 2121794, + 2121836, + 2121835, + 2121817, + 2121857, + 2121869, + 2121959, + 2121859, + 2121882, + 2121860, + 2121883, + 2121878, + 2121879, + 2121874, + 2121895, + 2121867, + 2121953, + 2121912, + 2121952, + 2121939, + 2121908, + 2121712, + 2121917, + 2121926, + 2121909, + 2121944, + 2122061, + 2122005, + 2121990, + 2121974, + 2121975, + 2121984, + 2121972, + 2121978, + 2121987, + 2122017, + 2121979, + 2121969, + 2121997, + 2121998, + 2122055, + 2122046, + 2122024, + 2122023, + 2122058, + 2122047, + 2122044, + 2122028, + 2122036, + 2122045, + 2122050, + 2122052, + 2122099, + 2122103, + 2122072, + 2122073, + 2122074, + 2122091, + 2122100, + 2122095, + 2122085, + 2122097, + 2122079, + 2122077, + 2122067, + 2122101, + 2122137, + 2122134, + 2122119, + 2122156, + 2122132, + 2122138, + 2122122, + 2122129, + 2122155, + 2122158, + 2122188, + 2122186, + 2122185, + 2122231, + 2122184, + 2122179, + 2122182, + 2122170, + 2122187, + 2129785, + 2122189, + 2122214, + 2122211, + 2122230, + 2122234, + 2122228, + 2122239, + 2122237, + 2122236, + 2122238, + 2122240, + 2122248, + 2122249, + 2122253, + 2122252, + 2122260, + 2122267, + 2122270, + 2122273, + 2122282, + 2122286, + 2122288, + 2122290, + 2122291, + 2122305, + 2122318, + 2122334, + 2122339, + 2122331, + 2122336, + 2122344, + 2122364, + 2122370, + 2122377, + 2122366, + 2122386, + 2122387, + 2122390, + 4219604, + 2122371, + 2122388, + 2122455, + 2122449, + 2122427, + 2122447, + 2122495, + 2122438, + 2122964, + 2122440, + 2122460, + 2122444, + 2122442, + 2122434, + 2122439, + 2122395, + 2122441, + 2122508, + 2122478, + 2122481, + 2122535, + 2122498, + 2122504, + 2122479, + 2122485, + 2122576, + 2122558, + 2122573, + 2122780, + 2122575, + 2122646, + 2122638, + 2122624, + 2122667, + 2122614, + 2122659, + 2122639, + 2122633, + 2122655, + 2122677, + 2122603, + 2122601, + 2122686, + 2122729, + 2122688, + 2122694, + 2122723, + 2122697, + 2122706, + 2122742, + 2122692, + 2122774, + 2122804, + 2122758, + 2122771, + 2122790, + 2122806, + 2123037, + 2122775, + 2122792, + 2122767, + 2122855, + 2122863, + 2122870, + 2122830, + 2123050, + 2122901, + 2122899, + 2122917, + 2122921, + 2122888, + 2122940, + 2122970, + 2122962, + 2122949, + 2122951, + 2122939, + 2122968, + 2122946, + 2122993, + 2122983, + 2130441, + 2122976, + 2122977, + 2122412, + 2122979, + 2122991, + 2123052, + 2122998, + 2122996, + 2122994, + 2123002, + 2123008, + 2123005, + 2123032, + 2123036, + 2123013, + 2123044, + 2123043, + 2123051, + 2123060, + 2123061, + 2123063, + 2123062, + 2123064, + 2127179, + 2123080, + 2123094, + 2123093, + 2123085, + 2123096, + 2123102, + 2123101, + 2123122, + 2123128, + 2123138, + 2123139, + 2132874, + 2123163, + 2123167, + 2123179, + 2123191, + 2123203, + 2123206, + 2123201, + 2123204, + 2123212, + 2123218, + 2123227, + 2123225, + 2123232, + 2123233, + 2123249, + 2123634, + 2123274, + 2123267, + 2123259, + 2123635, + 2123317, + 2123318, + 2123316, + 2123292, + 2123343, + 2123332, + 2123337, + 2123329, + 2123358, + 2123357, + 2123364, + 2123367, + 2123368, + 2123359, + 2123362, + 2123376, + 2123395, + 2123400, + 2123406, + 2123401, + 2123396, + 2123416, + 2123421, + 2123457, + 2123449, + 2123465, + 2123454, + 2123452, + 2123460, + 2123448, + 2123478, + 2123482, + 2123488, + 2123327, + 2123494, + 2123497, + 2123504, + 2123509, + 2123511, + 2123535, + 2123542, + 2123550, + 2123558, + 2123559, + 2135864, + 2123566, + 2123583, + 2123574, + 2123585, + 2123576, + 2123575, + 2123590, + 2123614, + 2123616, + 2123609, + 2123619, + 2123620, + 2123657, + 2123632, + 2123689, + 2123644, + 2123626, + 2123660, + 2123659, + 2123686, + 2123681, + 2123653, + 2123703, + 2123759, + 2123700, + 2123756, + 2123699, + 2123753, + 2123704, + 2123748, + 2123742, + 2123741, + 2123746, + 2123758, + 2123705, + 2123726, + 2123718, + 2123751, + 2124444, + 2123806, + 2123846, + 2123817, + 2123840, + 2123853, + 2123826, + 2123854, + 2123955, + 2123819, + 2123865, + 2123875, + 2123895, + 2123903, + 2123935, + 2123919, + 2123949, + 2123924, + 2123933, + 2123931, + 2123907, + 2124462, + 2123961, + 2123892, + 2123957, + 2123936, + 2123962, + 2124047, + 2123917, + 2123902, + 2124033, + 2123978, + 2124040, + 2123992, + 2124066, + 2124070, + 2124001, + 2124044, + 2123981, + 2123988, + 2124007, + 2123989, + 2124086, + 2124050, + 2124036, + 2123991, + 2124003, + 2124069, + 2124025, + 2124000, + 2124015, + 2124072, + 2124074, + 2124058, + 2124067, + 2124065, + 2123974, + 2124153, + 2124151, + 2124124, + 2124152, + 2124139, + 2124116, + 2124158, + 2124142, + 2124089, + 2124148, + 2124093, + 2124121, + 2124080, + 2124129, + 2124126, + 2124125, + 2124161, + 2124138, + 2124210, + 2124206, + 2124240, + 2124223, + 2124225, + 2124243, + 2124222, + 2124238, + 2120680, + 2124234, + 2124253, + 2124219, + 2124227, + 2124199, + 2124334, + 2124177, + 2124192, + 2124188, + 2124181, + 2124212, + 2124254, + 2124264, + 2124290, + 2124315, + 2124287, + 2124554, + 2124281, + 2124274, + 2124263, + 2124293, + 2124209, + 2124318, + 2124269, + 2124308, + 2124267, + 2124298, + 2124306, + 2124481, + 2124323, + 2124307, + 2124356, + 2124300, + 2124402, + 2124342, + 2124408, + 2124359, + 2124386, + 2124377, + 2124390, + 2124360, + 2124344, + 2124322, + 2124432, + 2124429, + 2124448, + 2124420, + 2124450, + 2124451, + 2124439, + 2131479, + 2124475, + 2124483, + 2124482, + 2124472, + 2124467, + 2124460, + 2124510, + 2124497, + 2124511, + 2124458, + 2124506, + 2124522, + 2124539, + 2124549, + 2131478, + 2124538, + 2124562, + 2124566, + 2136881, + 2124575, + 2124600, + 2124599, + 2127580, + 2124601, + 2136302, + 2124615, + 2124611, + 2124617, + 2124624, + 2124633, + 2124628, + 2124635, + 2124639, + 2124641, + 2124664, + 2124665, + 2124671, + 2124672, + 2124676, + 2124675, + 2124685, + 2124696, + 2124693, + 2124702, + 2124708, + 2124714, + 2124715, + 2124719, + 2124722, + 2124721, + 2124723, + 2124727, + 2124732, + 2124742, + 2124747, + 2124755, + 2124767, + 2124780, + 2124779, + 2124787, + 2124783, + 2137790, + 2124808, + 2124819, + 2124820, + 2124827, + 2124836, + 2124835, + 2124894, + 2124885, + 2124898, + 2124906, + 2124930, + 2124941, + 2124954, + 2124929, + 2124955, + 2124926, + 2124904, + 2124915, + 2124946, + 2124944, + 2124996, + 2125041, + 2125011, + 2124989, + 2125015, + 2124997, + 2125021, + 2124974, + 2124977, + 2124990, + 2124986, + 2125019, + 2125039, + 2125017, + 2125034, + 2125087, + 2132045, + 2125110, + 2125099, + 2125117, + 2125112, + 2125081, + 2125109, + 2125107, + 2125074, + 2125068, + 2125155, + 2125203, + 2125156, + 2125146, + 2125177, + 2125145, + 2125198, + 2125205, + 2125796, + 2125189, + 2125305, + 2125333, + 2125322, + 2125237, + 2125255, + 2125286, + 2125240, + 2125254, + 2125292, + 2125278, + 2125260, + 2125288, + 2125266, + 2125253, + 2125306, + 2125273, + 2125284, + 2125269, + 2125290, + 2125294, + 2125357, + 2125422, + 2125358, + 2125337, + 2125426, + 2125407, + 2125374, + 2125347, + 2125419, + 2125355, + 2125430, + 2125389, + 2125343, + 2125379, + 2125370, + 2125390, + 2125348, + 2125567, + 2125341, + 2125368, + 2125442, + 2125482, + 2125464, + 2125513, + 2125495, + 2125523, + 2125501, + 2125487, + 2125508, + 2125490, + 2125524, + 2125525, + 2125455, + 2125477, + 2125506, + 2125471, + 2125633, + 2125585, + 2125900, + 2125548, + 2125560, + 2125566, + 2125631, + 2125554, + 2125617, + 2125551, + 2125618, + 2125516, + 2125630, + 2125587, + 2125559, + 2125702, + 2125690, + 2125688, + 2125697, + 2125696, + 2125679, + 2125659, + 2125811, + 2125677, + 2125698, + 2125692, + 2125656, + 2125710, + 2125713, + 2125762, + 2125670, + 2125747, + 2125731, + 2125729, + 2125732, + 2125753, + 2125766, + 2125738, + 2125791, + 2125781, + 2125804, + 2125780, + 2125784, + 2125809, + 2125806, + 2125787, + 2125833, + 2125835, + 2125818, + 2125841, + 2125825, + 2125839, + 2125822, + 2125851, + 2125850, + 2125684, + 2125853, + 2125848, + 2125855, + 2125872, + 2125886, + 2125874, + 2125905, + 2125923, + 2125977, + 2125970, + 2125999, + 2126065, + 2125996, + 2126008, + 2126003, + 2125998, + 2126047, + 2126027, + 2126045, + 2126041, + 2126089, + 2126077, + 2126108, + 2126105, + 2126181, + 2126165, + 2126216, + 2126182, + 2126178, + 2126156, + 2126166, + 2126188, + 2126223, + 2126331, + 2126212, + 2126229, + 2126248, + 2126252, + 2126295, + 2126265, + 2126270, + 2126290, + 2126281, + 2126292, + 2126286, + 2126304, + 2126316, + 2126311, + 2126325, + 2126332, + 2126329, + 2126335, + 2126349, + 2126352, + 2126363, + 4223528, + 2126381, + 2126380, + 2126384, + 2126386, + 2126395, + 2126396, + 2126399, + 2126400, + 2126406, + 2126411, + 2126424, + 2126452, + 2126462, + 2126466, + 2126465, + 2126471, + 2126482, + 2126486, + 2126498, + 2126503, + 2126521, + 2126514, + 2126531, + 2126534, + 2126532, + 2126542, + 2126546, + 2126562, + 2126560, + 2126561, + 2126585, + 2126583, + 2117647, + 2126615, + 2126602, + 2126620, + 2126614, + 2126621, + 2126644, + 2126639, + 2126633, + 2126629, + 2126654, + 2126670, + 2126671, + 2137816, + 2126679, + 2126698, + 2126696, + 2126704, + 2126712, + 2126709, + 2126715, + 2126714, + 2126792, + 2126771, + 2126798, + 2126779, + 2126784, + 2126821, + 2126830, + 2126814, + 2127010, + 2126853, + 2126959, + 2126885, + 2126840, + 2126898, + 2126906, + 2126933, + 2126911, + 2126943, + 2126937, + 2126913, + 2126940, + 2126953, + 2126960, + 2126947, + 2126954, + 2126966, + 2126974, + 2126987, + 2127006, + 2127015, + 2127050, + 2127055, + 2127060, + 2126833, + 2127072, + 2127075, + 2127079, + 2127081, + 2127086, + 2127090, + 2127088, + 2127089, + 2127096, + 2127095, + 2127108, + 2127107, + 2127109, + 2127116, + 2127118, + 2127117, + 2127125, + 2127123, + 2127134, + 2127142, + 2127148, + 2127164, + 2127172, + 2127181, + 2127178, + 2127177, + 2127195, + 2127174, + 2127194, + 2127209, + 2127204, + 2127207, + 2127211, + 2127213, + 2127224, + 2127222, + 2127238, + 2127239, + 2127220, + 2127242, + 2127241, + 2127234, + 2127252, + 2127258, + 2127261, + 2127269, + 2127267, + 2127298, + 2127283, + 2127299, + 2127285, + 2127293, + 2127288, + 2127292, + 2127281, + 2127309, + 2127306, + 2127314, + 2127321, + 2127331, + 2127326, + 2127358, + 2127359, + 2127356, + 2127361, + 2127344, + 2127354, + 2127346, + 2127347, + 2127371, + 2127373, + 2127369, + 2127391, + 2127399, + 2127392, + 2127393, + 2127394, + 2127396, + 2127412, + 2127408, + 2127419, + 2127431, + 2127432, + 2127430, + 2127452, + 2127448, + 2127457, + 2127458, + 2127464, + 2127465, + 2127466, + 2127463, + 2127468, + 2127472, + 2127474, + 2127478, + 2127480, + 2127484, + 2127488, + 2127491, + 2127496, + 2127499, + 2127502, + 2127510, + 2127507, + 2127513, + 2127514, + 2127536, + 2127540, + 2127544, + 2127545, + 2127546, + 2127554, + 2127565, + 2127574, + 2127570, + 2127582, + 2127585, + 2127589, + 2127591, + 2127594, + 2131503, + 2127611, + 2127624, + 2127623, + 2127620, + 2127657, + 2127652, + 4224798, + 2127653, + 2127654, + 2127643, + 2127671, + 2127672, + 2127687, + 2127706, + 2127720, + 2127723, + 2127707, + 2127717, + 2127743, + 2127742, + 2127737, + 2127758, + 2127755, + 2127761, + 2127776, + 2127774, + 2127792, + 2127798, + 2127801, + 2127807, + 2127804, + 2127805, + 2127803, + 2127815, + 2127821, + 2127831, + 2127834, + 2127836, + 2127843, + 2127854, + 2127868, + 2127884, + 2127890, + 2128166, + 2127904, + 2128170, + 2127941, + 2128014, + 2127988, + 2128006, + 2127996, + 2128026, + 2128012, + 2128035, + 2128053, + 2128042, + 2128047, + 2128081, + 2128070, + 2128075, + 2128084, + 2128062, + 2128060, + 2128069, + 2128074, + 2128108, + 2128103, + 2128090, + 2128125, + 2128116, + 2128135, + 2128146, + 2128145, + 2128153, + 2128172, + 2128171, + 2128192, + 2128224, + 2128215, + 2128223, + 2128218, + 2128213, + 2128211, + 2128250, + 2128255, + 2128266, + 2128285, + 2128295, + 2137931, + 2128298, + 2128302, + 2128307, + 2128313, + 2128314, + 2128329, + 2128341, + 2128359, + 2128364, + 2128353, + 2128355, + 2128392, + 2128397, + 2128408, + 2128409, + 2128416, + 2128415, + 2128256, + 2128433, + 2128443, + 2128446, + 2128439, + 2128451, + 2128471, + 2128457, + 2128481, + 2128482, + 2128489, + 2138013, + 2128496, + 2128505, + 2128509, + 2128520, + 2128535, + 2128533, + 2128536, + 2128534, + 2128553, + 2128584, + 2128560, + 2128566, + 2128581, + 2128580, + 2128575, + 2134147, + 2128583, + 2128586, + 2128589, + 2128591, + 2128597, + 2128595, + 2128601, + 2128602, + 2128605, + 2128609, + 2128610, + 2128614, + 2128621, + 2128624, + 2128642, + 2128655, + 2128650, + 2128646, + 2128691, + 2128664, + 2128665, + 2128670, + 2128693, + 2128680, + 2128694, + 2128720, + 2128762, + 2128644, + 2128717, + 2128651, + 2128716, + 2128709, + 2128757, + 2128741, + 2128756, + 2128743, + 2128752, + 2128753, + 2128748, + 2128750, + 2128797, + 2128792, + 2128799, + 2128781, + 2128796, + 2128794, + 2128779, + 2128786, + 2128783, + 2128733, + 2128793, + 2128843, + 2128833, + 2128844, + 2128847, + 2128820, + 2128838, + 2128861, + 2128873, + 2128913, + 2128916, + 2128870, + 2128869, + 2128992, + 2128896, + 2128903, + 2128915, + 2128883, + 2128887, + 2128919, + 2128909, + 2128886, + 2128931, + 2128935, + 2128938, + 2128927, + 2128951, + 2128939, + 2128957, + 2128972, + 2128963, + 2128980, + 2128975, + 2128960, + 2128976, + 2128984, + 2128991, + 2128996, + 2128982, + 2128997, + 2129004, + 2129013, + 2129027, + 2129040, + 2129060, + 2129069, + 2129058, + 2129067, + 2129057, + 2129064, + 2129075, + 2129074, + 2129073, + 2129070, + 2129081, + 2129085, + 2129088, + 2129093, + 2129090, + 2129112, + 2129106, + 2129116, + 2129122, + 2136891, + 2129135, + 2129138, + 2129140, + 2129142, + 2129146, + 2129158, + 2129154, + 2129180, + 2129173, + 2129162, + 2129221, + 2129227, + 2129198, + 2129202, + 2129215, + 2129205, + 2129222, + 2129267, + 2129238, + 2129230, + 2129266, + 2129256, + 2129262, + 2129231, + 2129251, + 2129299, + 2129289, + 2129243, + 2129295, + 2129277, + 2129307, + 2129338, + 2129326, + 2129315, + 2129333, + 2129351, + 2129341, + 2129323, + 2129469, + 2129314, + 2129327, + 2129372, + 2129336, + 2129311, + 2129328, + 2129368, + 2129373, + 2129380, + 2129374, + 2129403, + 2129394, + 2129377, + 2129413, + 2129418, + 2129443, + 2129441, + 2129426, + 2129457, + 2129439, + 2129417, + 2129419, + 2129442, + 2129478, + 2129510, + 2129467, + 2129461, + 2129465, + 2129475, + 2129463, + 2129458, + 2129466, + 2129511, + 2129501, + 2129494, + 2129502, + 2129497, + 2129498, + 2129529, + 2129514, + 2129513, + 2129532, + 2129531, + 2129539, + 2129365, + 2129533, + 2133934, + 2129535, + 2129544, + 2129545, + 2129548, + 2129554, + 2129552, + 2129555, + 2129556, + 2129558, + 2129550, + 2129563, + 2129564, + 2129720, + 2129722, + 2129733, + 2129740, + 2129741, + 2129742, + 2129744, + 2129745, + 2129749, + 2129748, + 2129752, + 2129759, + 2129760, + 2129768, + 2129769, + 2129767, + 2129784, + 2129794, + 2129798, + 2129795, + 2129800, + 2129799, + 2129804, + 2129812, + 2129822, + 2129821, + 2129818, + 2129827, + 2129839, + 2129842, + 2129849, + 2129838, + 2129846, + 2129848, + 2132849, + 2129861, + 2129862, + 2129866, + 2129877, + 2129876, + 2129889, + 2129894, + 2129897, + 2129907, + 2129913, + 2136284, + 2129926, + 2129924, + 2129931, + 2129938, + 2129944, + 2129945, + 2129948, + 2129953, + 2129960, + 2129983, + 2129979, + 2129994, + 2129990, + 2130002, + 2130008, + 2130010, + 2130015, + 2130018, + 2130024, + 2130035, + 2130034, + 2130032, + 2130038, + 2130041, + 2130045, + 2130047, + 2130052, + 2130054, + 2130053, + 2130075, + 2130067, + 2130074, + 2130093, + 2118032, + 2130092, + 2130139, + 2130149, + 2130137, + 2130141, + 2130116, + 2130138, + 2130134, + 2130185, + 2130159, + 2130161, + 2130203, + 2130217, + 2130211, + 2130223, + 2130251, + 2135691, + 2130246, + 2130238, + 2130259, + 2130257, + 2130172, + 2130289, + 2130286, + 2130277, + 2130278, + 2130292, + 2130307, + 2130312, + 2130314, + 2130304, + 2130306, + 2130336, + 2130325, + 2130340, + 2130339, + 2130271, + 2130323, + 2130345, + 2130352, + 2130357, + 2130366, + 2130360, + 2130365, + 2130368, + 2130370, + 2130362, + 2130377, + 2130381, + 2130385, + 2130393, + 2130392, + 2130376, + 2130394, + 2130399, + 2130400, + 2130407, + 2130426, + 2130427, + 2130430, + 2130433, + 2130434, + 2130437, + 2130439, + 2130442, + 2130445, + 2130448, + 2130454, + 2130473, + 2130475, + 2130488, + 2130483, + 2130496, + 2130521, + 2130520, + 2130525, + 2130522, + 2130527, + 2130532, + 2130530, + 2130536, + 2130538, + 2130539, + 2130478, + 2130545, + 2130551, + 2130552, + 2130558, + 2130573, + 2130578, + 2130603, + 2130591, + 2130619, + 2130604, + 2130657, + 2130659, + 2130655, + 2130642, + 2130676, + 2130675, + 2130682, + 2130835, + 2130691, + 2130683, + 2130681, + 2130654, + 2130694, + 2130652, + 2130697, + 2130649, + 2130741, + 2130740, + 2130710, + 2130738, + 2130737, + 2130752, + 2130745, + 2130768, + 2130757, + 2130735, + 2130731, + 2130711, + 2130712, + 2130821, + 2130842, + 2130858, + 2130847, + 2130850, + 2130838, + 2130723, + 2130830, + 2130823, + 2130826, + 2130812, + 2130869, + 2130803, + 2130805, + 2130848, + 2130825, + 2130856, + 2130932, + 2130963, + 2130923, + 2130894, + 2130941, + 2130947, + 2130904, + 2130955, + 2130881, + 2130935, + 2130951, + 2130912, + 2130930, + 2130957, + 2130978, + 2130976, + 2130877, + 2131000, + 2131206, + 2130939, + 2131053, + 2130986, + 2131004, + 2131290, + 2131076, + 2131063, + 2131051, + 2131117, + 2131054, + 2131074, + 2131049, + 2131014, + 2130988, + 2131055, + 2131065, + 2130997, + 2131146, + 2131042, + 2131129, + 2131135, + 2131103, + 2131161, + 2131149, + 2131131, + 2131162, + 2131152, + 2131137, + 2131142, + 2131158, + 2131105, + 2131233, + 2131199, + 2131188, + 2131223, + 2131224, + 2131244, + 2131231, + 2131221, + 2131220, + 2131196, + 2131264, + 2131299, + 2131288, + 2131272, + 2131265, + 2131458, + 2131275, + 2131285, + 2131328, + 2131364, + 2131336, + 2131345, + 2131338, + 2131368, + 2131309, + 2131348, + 2131355, + 2131434, + 2131335, + 2131356, + 2131319, + 2131326, + 2131344, + 2131401, + 2131386, + 2131407, + 2131385, + 2131408, + 2131413, + 2131421, + 2131429, + 2131420, + 2131449, + 2131466, + 2131475, + 2131467, + 2131454, + 2131450, + 2131462, + 2131490, + 2131482, + 2131504, + 2131519, + 2131533, + 2117205, + 2131540, + 2131551, + 2131559, + 2131569, + 2131603, + 2131619, + 2131625, + 2131626, + 2131595, + 2131596, + 2131638, + 2131631, + 2131652, + 2131654, + 2131632, + 2131657, + 2132003, + 2131627, + 2131668, + 2131678, + 2131689, + 2131692, + 2131679, + 2131675, + 2131695, + 2131730, + 2131718, + 2131720, + 2131712, + 2131715, + 2131707, + 2131729, + 2131721, + 2131725, + 2131705, + 2131722, + 2131764, + 2131775, + 2131767, + 2131771, + 2131749, + 2131753, + 2131738, + 2131808, + 2131807, + 2131832, + 2131788, + 2131790, + 2131828, + 2131799, + 2131816, + 2131822, + 2131801, + 2131795, + 2131811, + 2131818, + 2131973, + 2131874, + 2131871, + 2131842, + 2131887, + 2131915, + 2131901, + 2131904, + 2131920, + 2135766, + 2131883, + 2131908, + 2131891, + 2131911, + 2131910, + 2131899, + 2131951, + 2131954, + 2131936, + 2131983, + 2131981, + 2131966, + 2131958, + 2131959, + 2131982, + 2131922, + 2131985, + 2131990, + 2131989, + 2132002, + 2132001, + 2132017, + 2132022, + 2132025, + 2132007, + 2132027, + 2132036, + 2132034, + 2132050, + 2132057, + 2132062, + 2132066, + 2132075, + 2132097, + 2132094, + 2132126, + 2132085, + 2132093, + 2132149, + 2132082, + 2132098, + 2132119, + 2132114, + 2132142, + 2132121, + 2132130, + 2132109, + 2132132, + 2132144, + 2132159, + 2132145, + 2132163, + 2132164, + 2132180, + 2132184, + 2132185, + 2132189, + 2132217, + 2132226, + 2132220, + 2132212, + 2132200, + 2132210, + 2132228, + 2132236, + 2132234, + 2132243, + 2132291, + 2132254, + 2132261, + 2132266, + 2132267, + 2132289, + 2132292, + 2132283, + 2132278, + 2132280, + 2132300, + 2132253, + 2132320, + 2132318, + 2132326, + 2132324, + 2132333, + 2132330, + 2132335, + 2132340, + 2132343, + 2132350, + 2132355, + 2132360, + 2132362, + 2132371, + 2132376, + 2132385, + 2132393, + 2132390, + 2132396, + 2132399, + 2132402, + 2132410, + 2132413, + 2132415, + 2132416, + 2132442, + 2132444, + 2132445, + 2132455, + 2132468, + 2132472, + 2132483, + 2132502, + 2132496, + 2132492, + 2132507, + 2132509, + 2132517, + 2132534, + 2132545, + 2132571, + 2132562, + 2132550, + 2132552, + 2132604, + 2132589, + 2132588, + 2132578, + 2132613, + 2132610, + 2132612, + 2132648, + 2132641, + 2132625, + 2132645, + 2132646, + 2132634, + 2132643, + 2132676, + 2132685, + 2132674, + 2132698, + 2132715, + 2132723, + 2132711, + 2132708, + 2132721, + 2132756, + 2132704, + 2132706, + 2132727, + 2132702, + 2132699, + 2132748, + 2132743, + 2132762, + 2132705, + 2132758, + 2132752, + 2132759, + 2132768, + 2132787, + 2135979, + 2132774, + 2132779, + 2132798, + 2132776, + 2132801, + 2132812, + 2132815, + 2132814, + 2132809, + 2132822, + 2132827, + 2132826, + 2132843, + 2132831, + 2132844, + 2132847, + 2132852, + 2132861, + 2132864, + 2132876, + 2132878, + 2132882, + 2132883, + 2132886, + 2132889, + 2132890, + 2133050, + 2133057, + 2133055, + 2133064, + 2133068, + 2133070, + 2133072, + 2133077, + 2133090, + 2133100, + 2133112, + 2133114, + 2133122, + 2133129, + 2133125, + 2133130, + 2133133, + 2133134, + 2133140, + 2133116, + 2133144, + 2122269, + 2133165, + 2133162, + 2133181, + 2133170, + 2133171, + 2133166, + 2133174, + 2133192, + 2133185, + 2133220, + 2133219, + 2133210, + 2133245, + 2133242, + 2133243, + 2133252, + 2133253, + 2133258, + 2133255, + 2133263, + 2133261, + 2133264, + 2137934, + 2133267, + 2133197, + 2133268, + 2133270, + 2133351, + 2133357, + 2133361, + 2133363, + 2133377, + 2133401, + 2133442, + 2133438, + 2133434, + 2133455, + 2133466, + 2133462, + 2133452, + 2133467, + 2133451, + 2133482, + 2133483, + 2133471, + 2133475, + 2133500, + 2133512, + 2133513, + 2133503, + 2133533, + 2133534, + 2133520, + 2133535, + 2133570, + 2133557, + 2133552, + 2133556, + 2133578, + 2133575, + 2133577, + 2133580, + 2133584, + 2133576, + 2133593, + 2133604, + 2133600, + 2133546, + 2133603, + 2133589, + 2133622, + 2133618, + 2133628, + 2133633, + 2133639, + 2133637, + 2133636, + 2133643, + 2133642, + 2133651, + 2133649, + 2133652, + 2133657, + 2133674, + 2133665, + 2133676, + 2133680, + 2133702, + 2133681, + 2133694, + 2133701, + 2133704, + 2133707, + 2133723, + 2133731, + 2133756, + 2133755, + 2133739, + 2133758, + 2133770, + 2133765, + 2133781, + 2133778, + 2133785, + 2133779, + 2133788, + 2133791, + 2133787, + 2133772, + 2133798, + 2133811, + 2133819, + 2133817, + 2133829, + 2133826, + 2133822, + 2133836, + 2133833, + 2133830, + 2133838, + 2133847, + 2133852, + 2133858, + 2133859, + 2133860, + 2133916, + 2133919, + 2133923, + 2133933, + 2133935, + 2133943, + 2133978, + 2133989, + 2133986, + 2133994, + 2133999, + 2134151, + 2134004, + 2134021, + 2134009, + 2134010, + 2134033, + 2134037, + 2134049, + 2134029, + 2134046, + 2134038, + 2134027, + 2134055, + 2134070, + 2134069, + 2134073, + 2134008, + 2134095, + 2134096, + 2134097, + 2134098, + 2134030, + 2134089, + 2134078, + 2134102, + 2134104, + 2134110, + 2134120, + 2134127, + 2134134, + 2135720, + 2134130, + 2134146, + 2134141, + 2134145, + 2134144, + 2134154, + 2134153, + 2134159, + 2134184, + 2134191, + 2134193, + 2134197, + 2134242, + 2134244, + 2122312, + 2134235, + 2134274, + 2134290, + 2134297, + 2134322, + 2134320, + 2134346, + 2134358, + 2134360, + 2134371, + 2134373, + 2134377, + 2134387, + 2134386, + 2134411, + 2134409, + 2134402, + 2134434, + 2134443, + 2134447, + 2134442, + 2134453, + 2134452, + 2134458, + 2134464, + 2134465, + 2134473, + 2134475, + 2134480, + 2134486, + 2134495, + 2134497, + 2134491, + 2134524, + 2134517, + 2134518, + 2134558, + 2134527, + 2134548, + 2134572, + 2134549, + 2134545, + 2134622, + 2134615, + 2134597, + 2134601, + 2134628, + 2134600, + 2134677, + 2134591, + 2134603, + 2134608, + 2134684, + 2134678, + 2134675, + 2134683, + 2134618, + 2134735, + 2134713, + 2134711, + 2134761, + 2134799, + 2134778, + 2134852, + 2134830, + 2134809, + 2134818, + 2134810, + 2134819, + 2134842, + 2134837, + 2134843, + 2134876, + 2134880, + 2134908, + 2134894, + 2134870, + 2134960, + 2134956, + 2134957, + 2134932, + 2134969, + 2134998, + 2134999, + 2135016, + 2135013, + 2135000, + 2134979, + 2135005, + 2134992, + 2134984, + 2135012, + 2135066, + 2135060, + 2135059, + 2135043, + 2135047, + 2135056, + 2135094, + 2135083, + 2135093, + 2135073, + 2135098, + 2135105, + 2135122, + 2135108, + 2135131, + 2135136, + 2135138, + 2135134, + 2135146, + 2134569, + 2135152, + 2135157, + 2135159, + 2135165, + 2135130, + 2135164, + 2135166, + 2135169, + 2135167, + 2135426, + 2135431, + 2135434, + 2135444, + 2135446, + 2135448, + 2135449, + 2135456, + 2135464, + 2135463, + 2135469, + 2135484, + 2135483, + 2135481, + 2135486, + 2135498, + 2125814, + 2135491, + 2135501, + 2135500, + 2135509, + 2135508, + 2135510, + 2135516, + 2135521, + 2135525, + 2135522, + 2135585, + 2135592, + 2135598, + 2135599, + 2135618, + 2135628, + 2135631, + 2135627, + 2135671, + 2135644, + 2135646, + 2135645, + 2135647, + 2135654, + 2135666, + 2135660, + 2135693, + 2135704, + 2135701, + 2135703, + 2135722, + 2135719, + 2135729, + 2135730, + 2135728, + 2135732, + 2135734, + 2135736, + 2135737, + 2135758, + 2135755, + 2135753, + 2135757, + 2132301, + 2135772, + 2135821, + 2135765, + 2135801, + 2135812, + 2135814, + 2135816, + 2135827, + 2135822, + 2135825, + 2135823, + 2135830, + 2135833, + 2135844, + 2135850, + 2135856, + 2135865, + 2135869, + 2135870, + 2135876, + 2135878, + 2135880, + 2135874, + 2135881, + 2135900, + 2135904, + 2135908, + 2135910, + 2135912, + 2118354, + 2135915, + 2135921, + 2135929, + 2135941, + 2135932, + 2135937, + 2135930, + 2135942, + 2135947, + 2135951, + 2135952, + 2135964, + 2135976, + 2135974, + 2135971, + 2135987, + 2135988, + 2136003, + 2136006, + 2136008, + 2136011, + 2136028, + 2136045, + 2137935, + 2136050, + 2128607, + 2136054, + 2136053, + 2136079, + 2136076, + 2136120, + 2136100, + 2136097, + 2136119, + 2136125, + 2136134, + 2136143, + 2136139, + 2136171, + 2136175, + 2136176, + 2136177, + 2136180, + 2136179, + 2136234, + 2136239, + 2136241, + 2136246, + 2136260, + 2136259, + 2136262, + 2136297, + 2136299, + 2136323, + 2136329, + 2136338, + 2136340, + 2136344, + 2136353, + 2136349, + 2136350, + 2136356, + 2136352, + 2136364, + 2136366, + 2136381, + 2136382, + 2136386, + 2136393, + 2136389, + 2136400, + 2136395, + 2136401, + 2136402, + 2136396, + 2136405, + 2136471, + 2136472, + 2136485, + 2136493, + 2136494, + 2136508, + 2136543, + 2136539, + 2136541, + 2136536, + 2136529, + 2136557, + 2136558, + 2136561, + 2136562, + 2136571, + 2136568, + 2136577, + 2136591, + 2136581, + 2136546, + 2136601, + 2136619, + 2136631, + 2136645, + 2136642, + 2136640, + 2136643, + 2136638, + 2136661, + 2136653, + 2136667, + 2136663, + 2136671, + 2136674, + 2136677, + 2136676, + 2136681, + 2136683, + 2136682, + 2136749, + 2136752, + 2136764, + 2136768, + 2136783, + 2136785, + 2136787, + 2136788, + 2136798, + 2136799, + 2136802, + 2136803, + 2136806, + 2136815, + 2136811, + 2136814, + 2136820, + 2136817, + 2136823, + 2136827, + 2136838, + 2136856, + 2136858, + 2136863, + 2136866, + 2136867, + 2136869, + 2136871, + 2136872, + 2136873, + 2136874, + 2136878, + 2136879, + 2136882, + 2136900, + 2136899, + 2136911, + 2136909, + 2136910, + 2136913, + 2136920, + 2136948, + 2136979, + 2136963, + 2136977, + 2136982, + 2136983, + 2136991, + 2136992, + 2137000, + 2137012, + 2137024, + 2137034, + 2137017, + 2137030, + 2137039, + 2137041, + 2137042, + 2137059, + 2137058, + 2137060, + 2137044, + 2137057, + 2137146, + 2137074, + 2137073, + 2137072, + 2137109, + 2137108, + 2137097, + 2137107, + 2137100, + 2137094, + 2137096, + 2137106, + 2137098, + 2137092, + 2137134, + 2137115, + 2137125, + 2137124, + 2137121, + 2137136, + 2137159, + 2137138, + 2137158, + 2137150, + 2137178, + 2137184, + 2137191, + 2137206, + 2137208, + 2137319, + 2137324, + 2137328, + 2137353, + 2137352, + 2137323, + 2137347, + 2137350, + 2137386, + 2137382, + 2137519, + 2137379, + 2137375, + 2137412, + 2137365, + 2137362, + 2137409, + 2137407, + 2137406, + 2137414, + 2137416, + 2137437, + 2137438, + 2137444, + 2137425, + 2137424, + 2137433, + 2137458, + 2137481, + 2137479, + 2137515, + 2137455, + 2137466, + 2137498, + 2137508, + 2137513, + 2137522, + 2137540, + 2137537, + 2137531, + 2137528, + 2137530, + 2137542, + 2137551, + 2137538, + 2137561, + 2137555, + 2137592, + 2137574, + 2137581, + 2137583, + 2137597, + 2137626, + 2137627, + 2137630, + 2137717, + 2137721, + 2137725, + 2137729, + 2137736, + 2137739, + 2137740, + 2137746, + 2137749, + 2137745, + 2137757, + 2137765, + 2137769, + 2137784, + 2137770, + 2137773, + 2135905, + 2137804, + 2137806, + 2137807, + 2137808, + 2137812, + 2137820, + 2137822, + 2137821, + 2137824, + 2137829, + 2137832, + 2137839, + 2137844, + 2137846, + 2137847, + 2137849, + 2137851, + 2137852, + 2137853, + 2137863, + 2137864, + 2127543, + 2137877, + 2137889, + 2137900, + 2137918, + 2137930, + 2137938, + 2137940, + 2137955, + 2137951, + 2137952, + 2137953, + 2137958, + 2137959, + 2137964, + 2137962, + 2137975, + 2137970, + 2137974, + 2138005, + 2138012, + 2138016, + 2119727, + 2124231, + 2134105, + 2126948, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 2119006, + 4233460, + 4222626, + 4234287, + 4222443, + 4231106, + 4221725, + 4215721, + 2264285, + 4216386, + 4233484, + 2126128, + 4229462, + 2137559, + 4231142, + 4218978, + 4219600, + 4220518, + 4216221, + 4228187, + 4233092, + 2119321, + 2112846, + 4227056, + 4227051, + 4218813, + 4225351, + 2117600, + 6312831, + 4214981, + 2133696, + 4216240, + 2124507, + 4217937, + 4233076, + 4225345, + 4219239, + 2250868, + 2129515, + 2130758, + 2264822, + 4214822, + 4217548, + 4219762, + 2137724, + 4229882, + 4218359, + 2123323, + 4222621, + 2137780, + 4234592, + 4224273, + 4231623, + 4221322, + 2123781, + 4228521, + 4234198, + 4231942, + 4223946, + 4215793, + 2120802, + 4231278, + 4220755, + 4223100, + 2129505, + 4231499, + 4220633, + 2125338, + 4228527, + 4228599, + 4216040, + 4218592, + 4221090, + 2131235, + 2134444, + 4233112, + 4228949, + 4233073, + 4231191, + 4227040, + 4220026, + 4231197, + 2131948, + 4220080, + 4220947, + 4223310, + 4223357, + 4229742, + 4216396, + 4231265, + 4215413, + 2122772, + 4224550, + 4231260, + 2136658, + 4227455, + 4234971, + 4216132, + 4222959, + 2126882, + 4228856, + 2121213, + 4231103, + 4221146, + 4234312, + 4221501, + 2128926, + 4229691, + 4223014, + 4215243, + 4219735, + 4221388, + 4232090, + 4216922, + 2122833, + 4231469, + 4220130, + 4222650, + 2119777, + 2136154, + 4216885, + 4217952, + 4228063, + 4230381, + 4216920, + 2128305, + 4234503, + 2125830, + 4223006, + 4216440, + 4231233, + 4233235, + 4231331, + 4229902, + 4223064, + 4221282, + 4225456, + 2119370, + 4223564, + 4231193, + 4225508, + 2118237, + 4225976, + 2125649, + 2134449, + 4219709, + 4219465, + 4221451, + 4220874, + 4225559, + 4231228, + 4217499, + 4229932, + 4218591, + 4222997, + 2136123, + 4228413, + 4224933, + 4217385, + 4218518, + 4222177, + 4228332, + 2136112, + 4234322, + 2137781, + 4215090, + 4233477, + 4226174, + 4232275, + 4219144, + 4224594, + 4223799, + 4223380, + 4227072, + 2130954, + 4231292, + 2125603, + 2126153, + 2131182, + 4221332, + 2131999, + 2117972, + 4215177, + 2118037, + 4215204, + 4216121, + 4216115, + 4216292, + 4216370, + 4216485, + 4216843, + 4217534, + 2234906, + 2120795, + 4218468, + 4219031, + 4219753, + 4219910, + 2123042, + 4220291, + 4220838, + 2123770, + 4221083, + 2123918, + 4222574, + 2245584, + 2126376, + 4223950, + 4224260, + 4224269, + 4224277, + 4224659, + 4225148, + 4225585, + 4235165, + 4225945, + 4226192, + 4226222, + 4226459, + 4226478, + 4226463, + 4227028, + 4227630, + 4227725, + 4227794, + 4227875, + 4227957, + 4228375, + 2131262, + 4228994, + 4229074, + 4229386, + 4229551, + 4229854, + 4229953, + 4230618, + 4230665, + 4230931, + 4231146, + 4231145, + 4231256, + 4219464, + 4231617, + 4232635, + 2127714, + 4232996, + 4233056, + 4233069, + 4233252, + 4234030, + 4234135, + 4234226, + 4234922, + 4235164, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 4227750, + 4227880, + 2119251, + 6312873, + 4223577, + 4222066, + 4225800, + 4233559, + 4219635, + 4233488, + 6330221, + 6320509, + 4225663, + 4225965, + 4219843, + 6325215, + 4225378, + 4215771, + 4225991, + 4231108, + 4226110, + 4214986, + 4215573, + 4216233, + 4216494, + 4216857, + 4217115, + 4217896, + 4218576, + 4218575, + 4219457, + 4220609, + 4221960, + 4222499, + 4222700, + 4225687, + 4226013, + 4227049, + 4228130, + 4228953, + 4229134, + 6326226, + 4233753, + 4234925, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 4231202, + 4231099, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 2118108, + 2126233, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 2129546, + 2132252, + 2134856, + 2134664, + 2131164, + 2117577, + 2126011, + 2123313, + 2123976, + 2134777, + 2123515, + 2121541, + 2117160, + 2117345, + 2117372, + 2117376, + 2117379, + 2117433, + 2117462, + 2117522, + 2117514, + 2117530, + 2117524, + 2117581, + 2117696, + 2117666, + 2117631, + 2117662, + 2117702, + 2117744, + 2117698, + 2117780, + 2117876, + 2117848, + 2117962, + 2117988, + 2118045, + 2118078, + 2118124, + 2118165, + 2118300, + 2118310, + 2118336, + 2118363, + 2118400, + 4215559, + 2118436, + 2118514, + 2118547, + 2118578, + 2118621, + 2161166, + 2118812, + 2118794, + 2118825, + 2118911, + 2119046, + 2119513, + 2119525, + 2119596, + 2119624, + 2119623, + 2161167, + 6314074, + 2119838, + 2119858, + 2119947, + 2120019, + 2120027, + 2120029, + 2120035, + 2120100, + 2120122, + 2120534, + 2120640, + 2127151, + 2120664, + 4217819, + 2120734, + 2120870, + 2120890, + 2120949, + 2120999, + 2121043, + 4258321, + 2121026, + 2121069, + 2121144, + 2121145, + 2121168, + 2121505, + 2121524, + 2121575, + 2121655, + 2121694, + 2121821, + 2121861, + 2121866, + 2121950, + 2121941, + 2122016, + 2121970, + 2122001, + 2122039, + 2122032, + 2122136, + 2122259, + 2122406, + 2122741, + 2122848, + 2122909, + 2122958, + 2123086, + 2123264, + 2123285, + 2123273, + 2123310, + 4220446, + 2123300, + 2123365, + 2123351, + 2123353, + 2123380, + 2123379, + 2123417, + 2123424, + 2123442, + 2123455, + 2123514, + 2123534, + 6317847, + 2123622, + 2123707, + 4221010, + 2123712, + 4220929, + 2123844, + 2123983, + 2161171, + 2124136, + 2161172, + 2124184, + 2124258, + 2124336, + 2124395, + 2124358, + 2124403, + 2124414, + 2124514, + 2124516, + 2124758, + 2124863, + 2124892, + 2124934, + 2124911, + 2125018, + 2125060, + 2125191, + 2125167, + 2125206, + 2125228, + 2125263, + 2125304, + 2125298, + 2125308, + 2125369, + 2125404, + 2125351, + 2125372, + 2125503, + 2125704, + 2125749, + 2125813, + 2125829, + 2125831, + 2125864, + 2125957, + 2125995, + 2126095, + 2126084, + 2126172, + 2126150, + 2126151, + 10506718, + 2126273, + 2126334, + 2126513, + 2126526, + 2126628, + 2126634, + 2126711, + 2126781, + 2126793, + 2126806, + 2126819, + 2126802, + 2126855, + 2126837, + 2126886, + 2126890, + 2126889, + 2126894, + 4224098, + 2126985, + 2127007, + 2127105, + 2127215, + 2127490, + 2127516, + 2127518, + 2127515, + 2127526, + 4224714, + 2127686, + 2118319, + 2127905, + 2127950, + 2127972, + 2127994, + 2128176, + 4225340, + 2128222, + 2128229, + 2128276, + 4225423, + 2128283, + 2128593, + 2128615, + 4233046, + 2128619, + 2128798, + 2129086, + 2129224, + 4226396, + 2129335, + 2129312, + 2129366, + 2129490, + 2129735, + 2129825, + 2129853, + 2130689, + 2130786, + 2130815, + 2130887, + 2130934, + 2131016, + 2131124, + 2131283, + 2131289, + 2131307, + 2161183, + 2131376, + 4228626, + 2161185, + 2131975, + 2132213, + 2132498, + 2132535, + 2132601, + 2132647, + 2132670, + 2132703, + 2132728, + 2132726, + 2132819, + 2132863, + 2133232, + 2133236, + 2133266, + 2133366, + 2161187, + 2133711, + 4258340, + 6328376, + 2134119, + 2134238, + 2134269, + 2134293, + 2134311, + 2134490, + 2134487, + 2134494, + 2134509, + 2134510, + 2134500, + 2134501, + 2134534, + 2134544, + 2134538, + 2134586, + 2134592, + 2134588, + 2134606, + 2134617, + 2134609, + 2134585, + 2134631, + 2134695, + 2134647, + 2134648, + 2134759, + 2134743, + 2134745, + 2134736, + 2161191, + 2134741, + 2134752, + 2134739, + 2134821, + 2134817, + 2134779, + 2161192, + 2134814, + 2134783, + 2134813, + 2134786, + 2134896, + 2134871, + 2134948, + 2134982, + 2135006, + 2135032, + 2135089, + 2135109, + 2135112, + 2135442, + 6329990, + 2161193, + 2135709, + 2135727, + 2135859, + 2135867, + 2135875, + 2135885, + 2135887, + 2135889, + 4233045, + 2136151, + 2136165, + 2136303, + 4233468, + 2136359, + 4233512, + 2136478, + 2136654, + 2136793, + 2136796, + 2136949, + 2136946, + 2136975, + 2137009, + 2137019, + 2137088, + 2137456, + 2137451, + 2137524, + 2137625, + 2137809, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 6319336, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 4231224, + 2132737, + 2129379, + 2137795, + 2125483, + 2128269, + 2121876, + 2125175, + 4219240, + 2124266, + 2125364, + 4229392, + 4222754, + 4216424, + 2123234, + 2128200, + 2131547, + 4233215, + 4215524, + 2132793, + 2122733, + 2122954, + 2127951, + 2128448, + 2124730, + 4225353, + 4229526, + 2126190, + 4225342, + 4227077, + 4227565, + 2128221, + 4220561, + 2129778, + 2125193, + 2126528, + 4219214, + 2127646, + 4225984, + 4225366, + 4215015, + 4217956, + 2121186, + 2122126, + 4230408, + 2118525, + 2119174, + 4228183, + 2121653, + 4219378, + 4232110, + 4225422, + 4234029, + 4225665, + 2135779, + 2123909, + 4226625, + 2123354, + 2118481, + 2128017, + 2133203, + 2123087, + 4214702, + 4214645, + 4216896, + 2118345, + 2124645, + 2119848, + 2124751, + 4215117, + 2122302, + 2128208, + 2124548, + 4232838, + 2131548, + 2125274, + 2136158, + 2123462, + 2124663, + 2129396, + 2134858, + 6315722, + 2134788, + 4221314, + 4215220, + 4219724, + 4228827, + 4231305, + 6328354, + 4214857, + 4226543, + 4231253, + 8410025, + 6330636, + 4229211, + 4218614, + 6319295, + 4231771, + 4227009, + 6324925, + 4232901, + 4217779, + 6316392, + 6318466, + 4221883, + 4220258, + 4230315, + 4218316, + 4233233, + 4218416, + 4230860, + 4225710, + 4216647, + 4214929, + 4225652, + 4214885, + 4218618, + 4231735, + 4221582, + 4214436, + 4215148, + 4220660, + 4220961, + 4225132, + 4226398, + 4227075, + 4230396, + 4232781, + 4219639, + 4226922, + 4214655, + 4215794, + 4217289, + 4229917, + 4231338, + 4215758, + 4230959, + 4220884, + 4224940, + 4227612, + 4221295, + 4220798, + 4229663, + 4214280, + 4216820, + 4221197, + 4227191, + 4229546, + 4231234, + 4219758, + 4219970, + 4227641, + 4226511, + 4227169, + 4214991, + 4229781, + 4218981, + 4215110, + 4224826, + 4227188, + 4230643, + 4218541, + 4218615, + 4227655, + 4220995, + 4231171, + 4222270, + 4219794, + 4230953, + 4223981, + 4233234, + 4219058, + 6316617, + 4220304, + 4226507, + 4229817, + 4230311, + 4223542, + 4228218, + 4215302, + 4216436, + 4219300, + 4226185, + 4226331, + 4232944, + 6325565, + 4214719, + 4219751, + 4224710, + 4221021, + 4227336, + 4227126, + 4227068, + 4215823, + 4232867, + 4234911, + 4234903, + 4227183, + 4227198, + 4222590, + 4214917, + 4215187, + 4215259, + 2230542, + 4215616, + 4232921, + 6313385, + 4216513, + 4216589, + 4217003, + 4217306, + 4217398, + 6314686, + 4218190, + 4218247, + 4218313, + 4218323, + 4218669, + 4218776, + 4219096, + 4219197, + 4219390, + 4219496, + 4219599, + 4220189, + 4219919, + 4220146, + 4220253, + 4220511, + 4220841, + 4220903, + 4221291, + 4221232, + 4221351, + 4221508, + 4221584, + 6319112, + 4221971, + 6319651, + 4222737, + 4222718, + 4222782, + 4223487, + 4223973, + 4224050, + 4224095, + 4224224, + 4224268, + 4224626, + 4225322, + 4225236, + 4225466, + 4225561, + 4225685, + 4226290, + 4226419, + 4226525, + 4226613, + 4226990, + 4227041, + 4227162, + 4227167, + 4227187, + 4227184, + 4227190, + 4227411, + 4227466, + 4227509, + 4227533, + 4228082, + 4228437, + 4228565, + 4228890, + 4229174, + 4229278, + 4229336, + 4229364, + 4229419, + 4229435, + 4229482, + 4229487, + 4229661, + 4230405, + 4230415, + 4235086, + 4230801, + 4230817, + 4231250, + 4231182, + 4231472, + 4231510, + 4231512, + 4231525, + 4231539, + 4231538, + 4231586, + 4231599, + 4231594, + 4231604, + 4231610, + 4232311, + 4232856, + 4233021, + 6330208, + 6330225, + 4233228, + 4233331, + 4233411, + 4233797, + 4234061, + 4234072, + 4234182, + 4234209, + 4234225, + 4234568, + 4234703, + 4235016, + 4219505, + 4220567, + 4219151, + 4229219, + 6328405, + 4231290, + 4225263, + 2133151, + 4232936, + 2255185, + 10507177, + 4224220, + 4231243, + 8427788, + 2275288, + 2134707, + 2135473, + 6315766, + 4219892, + 2124991, + 4223321, + 4231264, + 6328923, + 4220348, + 4218752, + 6324161, + 4215672, + 4233203, + 4215574, + 4227761, + 4228051, + 4230312, + 4231246, + 2130621, + 6330053, + 4233491, + 4218619, + 4223088, + 6314931, + 8413544, + 10510696, + 12607848, + 4221418, + 8415618, + 2123630, + 2132434, + 4232852, + 2118258, + 4230980, + 4232076, + 4227781, + 4217810, + 4224176, + 4226537, + 2253346, + 4231300, + 4232594, + 4233171, + 4227608, + 4215665, + 4207618, + 2110466, + 6304770, + 4218494, + 2123235, + 4220703, + 4221535, + 4230519, + 4233442, + 2231223, + 4216235, + 4228688, + 4231174, + 4215754, + 4215864, + 4218917, + 4226330, + 4218344, + 4219602, + 4230621, + 2268491, + 4365643, + 2118527, + 2121530, + 4218960, + 4221377, + 4339258, + 2275214, + 4231415, + 6330367, + 6330711, + 4220545, + 4223883, + 4231121, + 2117617, + 4225001, + 4215159, + 4228702, + 4225658, + 4231239, + 6318811, + 4216147, + 4217169, + 4218997, + 6316391, + 4231118, + 6312081, + 4222804, + 6322804, + 4220680, + 4227615, + 4215164, + 4215352, + 4219314, + 2123587, + 4227241, + 4229913, + 4231267, + 2230884, + 2132481, + 2122294, + 4232903, + 4233319, + 2118707, + 2120219, + 4229796, + 4218341, + 4219212, + 2122373, + 4219815, + 4221387, + 4222313, + 4222511, + 4227093, + 4227412, + 4227922, + 4229915, + 6327548, + 2118719, + 4231543, + 4227440, + 6321425, + 4231100, + 2275142, + 4232086, + 2275191, + 4218729, + 4219809, + 2124658, + 4228060, + 6312372, + 4215986, + 4215370, + 2127138, + 2116408, + 4217343, + 6314495, + 2121215, + 4229870, + 6327022, + 4230343, + 6327495, + 4221729, + 6318881, + 4222667, + 2126778, + 2231199, + 4219752, + 4220316, + 6328490, + 2118394, + 6320693, + 2126389, + 4231500, + 4218673, + 4214331, + 4215767, + 4219784, + 2118760, + 4226370, + 4227026, + 4229190, + 4231217, + 4214607, + 4229203, + 4231152, + 4218337, + 4231285, + 6328437, + 4219456, + 4220664, + 4217203, + 4215517, + 4216134, + 4217781, + 2120710, + 4217871, + 6315023, + 2120729, + 4222344, + 4225117, + 4227222, + 2228235, + 2120578, + 2119630, + 4219077, + 6313972, + 4233470, + 6318349, + 4221846, + 4233439, + 2136288, + 2266751, + 2111373, + 4214709, + 2111738, + 4222328, + 4224799, + 4231218, + 2117307, + 2228642, + 4215299, + 4217867, + 4229642, + 6326794, + 4231109, + 4229232, + 6328386, + 2110751, + 2275153, + 4219408, + 4224731, + 4227158, + 2132352, + 4229792, + 4229835, + 4233052, + 6330204, + 2128389, + 4227334, + 4232891, + 4226125, + 6323136, + 2132650, + 4232938, + 2129237, + 4219463, + 2125720, + 4226977, + 6324793, + 4231288, + 4231287, + 4215373, + 4215144, + 4219779, + 2122743, + 2127398, + 4230512, + 4231169, + 4231277, + 4231200, + 2260919, + 4231199, + 4230346, + 4217866, + 6315018, + 4217253, + 2243838, + 4231168, + 4231214, + 4232842, + 4234203, + 4217127, + 2110503, + 4223015, + 4231252, + 2130219, + 4214329, + 4221774, + 4223149, + 6326933, + 4220566, + 4214820, + 4226926, + 4225993, + 2251479, + 4225873, + 4231184, + 4220913, + 4222184, + 4233680, + 4218731, + 4218805, + 6316530, + 4220701, + 2125678, + 4229823, + 4224756, + 4220693, + 6317845, + 4216988, + 4231165, + 4231194, + 4216682, + 4231651, + 4215880, + 4218397, + 4225547, + 4224644, + 4231273, + 4231149, + 4222459, + 4215118, + 4231188, + 4225082, + 2119457, + 2232893, + 2118060, + 4216080, + 2129110, + 4228580, + 4229892, + 6328323, + 4231183, + 4233776, + 4217870, + 4231251, + 2118686, + 2112392, + 2117991, + 4227209, + 4214387, + 4218829, + 4229773, + 2120679, + 4226317, + 4229511, + 6319422, + 4227258, + 4215642, + 4228484, + 4231147, + 4226587, + 4227207, + 2117175, + 4222801, + 4231601, + 4214580, + 4215332, + 4215626, + 4218374, + 4224340, + 4220521, + 4228419, + 4231295, + 4218798, + 4235067, + 4215609, + 2247956, + 2121573, + 2120172, + 4217324, + 4229717, + 2121369, + 4224453, + 4217446, + 4220279, + 4222318, + 4230304, + 6327456, + 4220685, + 4229510, + 4214297, + 4218467, + 4218483, + 4218634, + 4228369, + 4214863, + 4226536, + 4231124, + 4231245, + 4226111, + 4215557, + 4218153, + 4219569, + 4220683, + 4225074, + 4226603, + 4227294, + 4228108, + 4231334, + 6328486, + 4233469, + 4234604, + 4214433, + 4218429, + 4218840, + 4218841, + 4219455, + 4220699, + 6317851, + 4215186, + 4220009, + 4227067, + 4215265, + 4225256, + 4234068, + 4234939, + 4221401, + 6318173, + 2110568, + 2138036, + 4226669, + 4234943, + 6324488, + 4220430, + 4224735, + 4231159, + 4217220, + 2118352, + 4224754, + 4227095, + 4219451, + 4226315, + 2135528, + 4226308, + 4230797, + 2275209, + 6318202, + 2123777, + 4219145, + 2132717, + 4230968, + 4215495, + 4220681, + 4223798, + 6320950, + 6320951, + 2250367, + 4231242, + 4220636, + 2129802, + 4229505, + 4233482, + 4227020, + 6324220, + 2133686, + 4228653, + 4223879, + 4235149, + 6332301, + 4220357, + 2138052, + 4223440, + 6330019, + 4234327, + 6332063, + 2129019, + 2121417, + 4219280, + 2134051, + 8414999, + 2129922, + 2254512, + 6312138, + 4215066, + 6312276, + 6312341, + 2229800, + 4215437, + 4215511, + 2228362, + 2230660, + 2110782, + 4215775, + 4220668, + 6313267, + 6313444, + 2118741, + 4216512, + 2119993, + 4217372, + 4217538, + 2120566, + 4217795, + 2120724, + 2111458, + 2120934, + 4218452, + 2117192, + 4218595, + 6316183, + 2122452, + 4219596, + 4219932, + 4219846, + 4219944, + 2255257, + 2122523, + 6317663, + 8414815, + 2123363, + 4220661, + 2241484, + 4221085, + 4221069, + 2124278, + 2124166, + 2271718, + 4217832, + 4221371, + 2124748, + 6319889, + 2125335, + 4222872, + 4222122, + 2124970, + 4223003, + 4223330, + 4223547, + 2117164, + 4223772, + 4224202, + 2127087, + 2127221, + 2127340, + 2127438, + 2113457, + 2127722, + 2127785, + 4225344, + 2138054, + 6322515, + 4235083, + 4225454, + 4231299, + 2128723, + 2275261, + 4226068, + 2114148, + 4226128, + 4226136, + 4226374, + 4226403, + 4226594, + 6323746, + 2129480, + 6323765, + 4226627, + 4226700, + 4226896, + 2229567, + 2253418, + 4350576, + 4227013, + 4227014, + 6324201, + 2130241, + 2114643, + 4227672, + 2130553, + 6324857, + 4227705, + 4227811, + 2118009, + 2130778, + 4228128, + 4228029, + 4228340, + 2114853, + 4228487, + 2131444, + 2228400, + 4228919, + 4228923, + 4229125, + 4229053, + 2131581, + 6326326, + 2110510, + 2132166, + 4229565, + 4229851, + 4229950, + 4229978, + 4230515, + 4230553, + 2115558, + 4230708, + 4230730, + 4231151, + 4231303, + 4231162, + 4231198, + 4231221, + 4231248, + 2133960, + 4231297, + 4231306, + 6328458, + 8425610, + 10522762, + 12619914, + 14717066, + 6328457, + 8425609, + 10522761, + 12619913, + 14717065, + 16814217, + 18911369, + 21008521, + 23105673, + 25202825, + 27299977, + 29397129, + 2263431, + 4232157, + 4232636, + 2264599, + 4232882, + 4233049, + 2136121, + 4233451, + 4233475, + 4233481, + 4233541, + 6330693, + 4233547, + 2136584, + 4233823, + 4233829, + 4233967, + 4234008, + 2137055, + 4234505, + 4234504, + 4234917, + 4234956, + 6332168, + 4235082, + 2275354, + 4235111, + 4367898, + 4342510, + 2245358, + 4229404, + 4221128, + 4220667, + 4218693, + 4215552, + 2118537, + 4217171, + 2161169, + 2123858, + 4221555, + 2243774, + 2229777, + 4229650, + 2117124, + 2117125, + 2117151, + 2117163, + 2117167, + 2117168, + 2117184, + 2117185, + 2117188, + 2117210, + 2117247, + 2117261, + 2117270, + 2117305, + 2117328, + 2117344, + 2117373, + 2117375, + 2117387, + 2117397, + 2117472, + 2117435, + 2117449, + 2117460, + 2117498, + 2117501, + 2117502, + 2117527, + 2117566, + 2117583, + 2117629, + 2117632, + 2117633, + 2117648, + 2117659, + 2117671, + 2117678, + 2117719, + 2117734, + 2117738, + 2117691, + 2117775, + 2117782, + 2117788, + 2117836, + 2117862, + 2117865, + 2117871, + 2117896, + 2117899, + 2117904, + 2117915, + 2117918, + 2117983, + 2118049, + 2118076, + 6312414, + 2118126, + 2118132, + 2118145, + 2118146, + 2118163, + 2118217, + 2118241, + 2118246, + 2118291, + 2118344, + 2118384, + 2118410, + 2118411, + 2118462, + 2118476, + 2118475, + 2118497, + 2118508, + 2118571, + 2118618, + 2118630, + 2118645, + 2118695, + 2118733, + 2118758, + 2118763, + 2118772, + 2118797, + 2118806, + 2118817, + 2118829, + 2118841, + 2118847, + 2118854, + 2118861, + 2118926, + 2118955, + 2118965, + 2118986, + 2119008, + 4216161, + 2119048, + 2119054, + 2119176, + 2119182, + 2119183, + 2119223, + 2119231, + 2119241, + 2119243, + 2119247, + 2119270, + 2119273, + 2119279, + 2119281, + 2119282, + 2119317, + 2119322, + 2119340, + 2119341, + 2119345, + 2119369, + 2119389, + 2119396, + 2119434, + 2119445, + 2119459, + 2119471, + 2119475, + 2119476, + 2119500, + 2119536, + 2119564, + 2119580, + 2119608, + 2119654, + 2119661, + 2119669, + 2119670, + 2119679, + 2119689, + 2119712, + 2119730, + 2119804, + 2119808, + 2119849, + 2119886, + 2119888, + 2119892, + 2119898, + 2119913, + 2119948, + 2119972, + 2119983, + 2120033, + 2120045, + 2120138, + 2120146, + 2120157, + 2120163, + 2120164, + 2120196, + 2120204, + 2120227, + 2120263, + 2120277, + 2120291, + 2120301, + 2120318, + 2120350, + 2120359, + 2120364, + 2120371, + 2120416, + 2120448, + 2120473, + 2120485, + 2120493, + 2120513, + 2120572, + 2120574, + 2120575, + 2120586, + 2120739, + 2120747, + 2120752, + 2120803, + 2120809, + 2120828, + 2120907, + 2120914, + 2120948, + 2120996, + 2120998, + 2121027, + 2121030, + 2121034, + 2121106, + 2121108, + 2121113, + 2121120, + 2121176, + 2121184, + 2121208, + 2121216, + 2121234, + 2121236, + 2121237, + 2121240, + 2121262, + 2121304, + 2121323, + 2121324, + 2121384, + 2121386, + 2121406, + 2121407, + 4218571, + 2121426, + 2121479, + 2121486, + 2121500, + 2121501, + 2121506, + 2121512, + 2121526, + 2121531, + 2121536, + 2121552, + 2121560, + 2121572, + 2121609, + 2121628, + 2121639, + 2121636, + 2121647, + 2121656, + 2121668, + 2121673, + 2121697, + 2121705, + 2121709, + 2121724, + 2121751, + 2121754, + 2121779, + 2121825, + 2121855, + 2121886, + 2121892, + 2121904, + 2121931, + 2121947, + 2121976, + 2122002, + 2122003, + 2122004, + 2122012, + 2122108, + 2122125, + 2122143, + 2122152, + 2122178, + 2122207, + 2122261, + 2122281, + 2122307, + 2122310, + 2122316, + 2122321, + 2122326, + 2122436, + 2122492, + 2122506, + 2122509, + 2122520, + 2122553, + 2122562, + 2122563, + 2122597, + 2122612, + 2122621, + 2122628, + 2122631, + 2122640, + 2122654, + 2122705, + 2122716, + 2122761, + 2122768, + 2122786, + 2122836, + 2122843, + 2122861, + 2122875, + 2122942, + 2122943, + 2122981, + 2122999, + 2123003, + 2123012, + 2123030, + 2123033, + 2123079, + 2123111, + 2123137, + 2123141, + 2123202, + 2123248, + 2123250, + 2123308, + 2123340, + 2123355, + 2123356, + 2123361, + 2123371, + 4220535, + 2123428, + 2123464, + 2123500, + 2123525, + 2123539, + 2123571, + 2123592, + 2123596, + 2123638, + 2123643, + 2123696, + 2123698, + 2123769, + 2123735, + 2123737, + 2123760, + 2123820, + 2123824, + 2123825, + 2123867, + 2123890, + 2123893, + 2123898, + 2123908, + 2123941, + 2123954, + 2123984, + 2123990, + 2124008, + 2124013, + 2124016, + 2124017, + 2124028, + 2124049, + 2124051, + 2124085, + 2124091, + 2124119, + 2124131, + 2124146, + 2124159, + 2124160, + 2124198, + 2124205, + 2124215, + 2124246, + 2124247, + 2124289, + 2124303, + 2124309, + 2124328, + 2124340, + 2124350, + 2124357, + 2124368, + 2124369, + 2124374, + 2124379, + 2124419, + 2124425, + 2124433, + 2124445, + 2124446, + 2124447, + 2124508, + 2124519, + 2124524, + 2124574, + 2124580, + 2124597, + 2124614, + 2124630, + 2124640, + 2124674, + 2124734, + 2124769, + 2124785, + 2124816, + 2124851, + 2124853, + 4222010, + 2124889, + 2124918, + 2124923, + 2124933, + 2124949, + 2124956, + 2125008, + 2125012, + 2125014, + 2125024, + 2125035, + 2125036, + 2125038, + 2125066, + 2125070, + 2125073, + 2125102, + 2125143, + 2125150, + 2125157, + 2125186, + 2125247, + 2125252, + 2125258, + 2125270, + 2125289, + 2125346, + 2125393, + 2125511, + 2125514, + 2125518, + 2125565, + 2125594, + 2125610, + 2125615, + 2125619, + 2125658, + 2125662, + 2125666, + 2125693, + 2125707, + 2125709, + 2125714, + 2125716, + 2125722, + 2125735, + 2125736, + 2125750, + 2125786, + 2125790, + 4222969, + 2125881, + 2125884, + 4223050, + 2125908, + 2125917, + 2125918, + 2125924, + 2125932, + 2125950, + 2125953, + 2125973, + 2126007, + 2126035, + 2126036, + 2126040, + 2126044, + 2126087, + 2126112, + 2126129, + 2126154, + 2126162, + 2126176, + 2126201, + 2126226, + 4223411, + 2126283, + 2126291, + 2126294, + 2126336, + 2126365, + 2126379, + 2126392, + 2126401, + 2126419, + 2126421, + 2126422, + 2126428, + 2126477, + 2126509, + 2126516, + 2126535, + 2126587, + 2126596, + 2126597, + 2126632, + 2126641, + 2126659, + 2126700, + 2126716, + 2126723, + 2126725, + 2126726, + 2126741, + 2126750, + 2126751, + 2126752, + 2126758, + 2126763, + 2126773, + 2126775, + 2126780, + 2126799, + 2126809, + 2126825, + 2126836, + 2126845, + 2126852, + 2126858, + 2126874, + 2126875, + 2126884, + 2126888, + 2126892, + 2126895, + 2126896, + 2126897, + 2126905, + 2126916, + 2126919, + 2126923, + 2126925, + 2126929, + 2126935, + 2126950, + 2126955, + 2126961, + 2126976, + 2126981, + 2126982, + 2126983, + 2126992, + 2127000, + 2127004, + 2127008, + 2127011, + 2127016, + 2127019, + 2127029, + 2127039, + 2127048, + 2127066, + 2127070, + 2127182, + 2127225, + 2127233, + 2127248, + 2127250, + 2127251, + 2127284, + 2127332, + 2127353, + 2127360, + 2127370, + 2127381, + 2127382, + 2127385, + 2127390, + 2127405, + 2127413, + 2127427, + 2127435, + 2127461, + 2127469, + 2127471, + 2127473, + 2127476, + 2127524, + 2127525, + 2127557, + 2127564, + 2127596, + 2127612, + 2127668, + 2127670, + 2127708, + 2127711, + 2127712, + 2127730, + 2127741, + 2127765, + 2127786, + 2127846, + 2127856, + 2127860, + 2127878, + 2127906, + 2127917, + 2127918, + 2127920, + 2127925, + 2127976, + 2128030, + 2128072, + 2128076, + 2128078, + 2128100, + 2128096, + 2128097, + 2128114, + 2128119, + 2128123, + 2128177, + 4225332, + 2128187, + 2128189, + 2128197, + 2128219, + 2128220, + 2128267, + 2128278, + 2128280, + 2128312, + 2128315, + 2128330, + 2128346, + 2128387, + 2128393, + 2128401, + 2128414, + 2128429, + 2128441, + 2128453, + 2128460, + 2128477, + 4225632, + 2128493, + 2128504, + 2128544, + 2128547, + 2128563, + 2128571, + 2128572, + 2128582, + 2128647, + 2128660, + 2128679, + 2128689, + 2128711, + 2128718, + 2128736, + 2128745, + 2128749, + 2128754, + 2128785, + 2128815, + 2128855, + 2128857, + 2128907, + 2128911, + 2128928, + 2128934, + 2128945, + 2128950, + 2128977, + 2128985, + 2128999, + 2129006, + 2129008, + 2129084, + 2129087, + 2129096, + 2129097, + 2129111, + 2129113, + 2129117, + 2129131, + 2129159, + 2129160, + 2129161, + 2129171, + 2129181, + 2129187, + 2129217, + 2129235, + 2129241, + 2129245, + 2129274, + 2129286, + 2129291, + 2129292, + 2129356, + 2129387, + 2129393, + 2129401, + 2129416, + 2129425, + 2129429, + 2129440, + 2129479, + 2129506, + 2129518, + 2129523, + 2129549, + 2129553, + 2129560, + 2129732, + 2129743, + 2129746, + 2129747, + 2129761, + 2129809, + 2129855, + 2129870, + 2129887, + 2129893, + 2129900, + 2129902, + 2129903, + 2129914, + 2129934, + 2129937, + 2129940, + 2129956, + 2129958, + 2129978, + 2129980, + 2130016, + 2130033, + 2130037, + 2130078, + 2130086, + 2130091, + 2130135, + 2130136, + 2130198, + 2130200, + 2130234, + 2130250, + 2130252, + 2130305, + 2130308, + 2130356, + 2130383, + 2130425, + 2130435, + 2130465, + 2130482, + 2130484, + 2130502, + 2130507, + 2130511, + 2130574, + 2130606, + 2130615, + 2130622, + 2130630, + 2130686, + 2130755, + 2130769, + 2130773, + 2130822, + 2130829, + 2130834, + 2130840, + 2130857, + 2130879, + 2130880, + 2130922, + 2130959, + 2130961, + 2131018, + 2131062, + 2131112, + 2131119, + 2131136, + 2131138, + 2131184, + 2131197, + 2131212, + 2131252, + 2131294, + 2131343, + 2131383, + 2131406, + 2131373, + 2131474, + 2131497, + 2131538, + 2131555, + 2131564, + 2131567, + 2131578, + 2131597, + 2131601, + 2131608, + 2131623, + 2131624, + 2131706, + 2131709, + 2131723, + 2131731, + 2131737, + 2131742, + 2131752, + 2131774, + 2131825, + 2131848, + 2131865, + 2131884, + 2131885, + 2131893, + 2131926, + 2131947, + 2131949, + 2131969, + 4229123, + 2131974, + 2131979, + 2131988, + 2131996, + 2132054, + 2132063, + 2132068, + 2132120, + 2132138, + 2132157, + 2132158, + 2132170, + 2132178, + 2132187, + 2132208, + 2132209, + 2132230, + 2132248, + 2132249, + 2132250, + 2132263, + 2132272, + 2132286, + 2132347, + 2132436, + 2132438, + 2132453, + 2132465, + 2132487, + 2132495, + 2132501, + 2132514, + 2132558, + 2132607, + 2132724, + 2132767, + 2132791, + 2132803, + 2132804, + 2132820, + 2132892, + 2132894, + 2133063, + 2133076, + 2133107, + 2133156, + 2133209, + 2133217, + 2133240, + 2133246, + 2133275, + 2133353, + 2133356, + 2133380, + 2133389, + 2133397, + 2133414, + 2133446, + 2133454, + 2133476, + 2133484, + 2133536, + 2133579, + 2133612, + 2133616, + 2133626, + 2133650, + 2133678, + 2133683, + 2133713, + 4230868, + 2133753, + 2133783, + 2133814, + 2133926, + 2133941, + 2133942, + 4231110, + 2133984, + 2133988, + 2134006, + 2134018, + 2134060, + 2134084, + 2134152, + 2134165, + 2134169, + 2134171, + 2134178, + 2134196, + 2134231, + 2134237, + 2134260, + 2134295, + 2134300, + 2134321, + 2134330, + 2134333, + 2134344, + 2134363, + 2134369, + 2134372, + 2134414, + 2134430, + 2134440, + 2134445, + 2134446, + 2134450, + 2134460, + 2134512, + 2134519, + 2134523, + 2134535, + 2134568, + 2134579, + 2134584, + 2134595, + 2134599, + 2134607, + 2134624, + 2134722, + 2134731, + 2134732, + 2134751, + 2134797, + 2134805, + 2134815, + 2134823, + 2134855, + 2134866, + 4232037, + 2134890, + 2134893, + 2134939, + 2134970, + 2134953, + 2134977, + 2134986, + 2135010, + 2135034, + 2135037, + 2135055, + 2135092, + 2135103, + 2135125, + 2135147, + 2135154, + 2135416, + 2135462, + 2135465, + 4232619, + 2135476, + 2135485, + 2135514, + 2135581, + 2135617, + 2135640, + 2135684, + 2135716, + 2135721, + 2135762, + 2121138, + 2135774, + 2135785, + 2135793, + 2135810, + 2135817, + 2135898, + 2135907, + 2135918, + 2135923, + 2135962, + 2135970, + 2135989, + 2135990, + 2136025, + 2136030, + 2136052, + 2136074, + 2136078, + 2136094, + 2136099, + 2136107, + 2136126, + 2136146, + 2136147, + 2136153, + 2136172, + 2136248, + 2136250, + 2136255, + 2136264, + 2136293, + 2136370, + 2136371, + 2136384, + 2136397, + 2136412, + 2136415, + 2136497, + 2136505, + 2136506, + 2136521, + 2136578, + 2136598, + 2136612, + 2136615, + 2136621, + 2136622, + 2136630, + 2136632, + 2136650, + 2136662, + 2136757, + 2136758, + 2136825, + 2136835, + 2136864, + 2136883, + 2136884, + 2136947, + 2136953, + 2136999, + 2137025, + 2137031, + 2137047, + 2137063, + 2137067, + 2137079, + 2137082, + 2137085, + 2137099, + 2137127, + 2137130, + 2137142, + 2137153, + 2137171, + 2137187, + 2137200, + 2137207, + 2137346, + 2137410, + 2137415, + 2137443, + 2137449, + 2137468, + 2137470, + 2137485, + 2137521, + 2137539, + 2137543, + 2137558, + 2137567, + 2137579, + 2137588, + 2137621, + 2137629, + 2137764, + 2137768, + 2137772, + 2137831, + 2137838, + 2137872, + 2137874, + 2137879, + 2137881, + 2137903, + 2137911, + 2137913, + 2137921, + 2137925, + 2137943, + 2137960, + 2137969, + 2137973, + 2138000, + 2138004, + 2138018, + 4214320, + 2110469, + 4214624, + 2119200, + 2121419, + 4218704, + 4219044, + 2242106, + 4221732, + 2125817, + 2125542, + 2126259, + 4223531, + 4225734, + 4226913, + 4227185, + 4227230, + 4231094, + 4231676, + 4218290, + 4233182, + 2117587, + 2117849, + 2117872, + 2118083, + 2119286, + 2124372, + 2125057, + 2125264, + 2125378, + 2125529, + 2126820, + 2126881, + 2127212, + 2127953, + 2131957, + 2241534, + 2126760, + 2112243, + 2110683, + 2114572, + 2113162, + 4339140, + 2138045, + 2116584, + 2138044, + 2113242, + 2112290, + 2138046, + 2114938, + 2113683, + 4365885, + 2115173, + 2113795, + 2114195, + 2115246, + 2110600, + 2237961, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 2117448, + 2117471, + 2117482, + 2117484, + 2117646, + 2117656, + 2117697, + 2117874, + 2117840, + 2117894, + 2117891, + 2117941, + 2117973, + 2117975, + 2110645, + 2118090, + 2118114, + 2118231, + 2118348, + 2118358, + 2118395, + 2118428, + 2118499, + 2118557, + 2118674, + 2118783, + 2118792, + 2118992, + 2119041, + 2119085, + 2119118, + 2119227, + 2119326, + 2119337, + 2119347, + 2119543, + 2119548, + 2233115, + 2119631, + 2119652, + 2119780, + 2119817, + 2233454, + 2119890, + 2119904, + 2131521, + 2120075, + 2120082, + 2120131, + 2120211, + 2120295, + 2120311, + 2120324, + 2120388, + 2234557, + 2120573, + 2120595, + 2120722, + 2120814, + 2234036, + 2120826, + 2120847, + 2120863, + 2120867, + 2120874, + 2120912, + 2235956, + 2120973, + 2121031, + 2121089, + 2121124, + 2121127, + 2121163, + 2121310, + 2121465, + 2121472, + 2121474, + 2121507, + 2121533, + 2121556, + 2121597, + 2121741, + 2121748, + 2121752, + 2121781, + 2121799, + 2121885, + 2121940, + 2121949, + 2122027, + 2122172, + 2122169, + 2122274, + 2122330, + 2122351, + 2122454, + 2122620, + 2122725, + 2122873, + 2122948, + 2122960, + 2123049, + 2123165, + 2123322, + 2123298, + 2123307, + 2123312, + 2123315, + 2123336, + 2240964, + 2123383, + 2123384, + 2123405, + 2123451, + 2123483, + 2123496, + 2123591, + 2123649, + 2123667, + 2123672, + 2123675, + 2123772, + 2123805, + 2123939, + 2124042, + 2124105, + 2241988, + 2124098, + 2124132, + 2124197, + 2124239, + 2112438, + 2112451, + 2124265, + 2124277, + 2242367, + 2124347, + 2242403, + 2124436, + 2124453, + 2112527, + 2124571, + 2124588, + 2124647, + 2124713, + 2124717, + 2124759, + 2124799, + 2124805, + 2124916, + 2124952, + 2125051, + 2124998, + 2125105, + 2125113, + 2125119, + 2125144, + 2125204, + 2125226, + 2125275, + 2125277, + 2125380, + 2125406, + 2125489, + 2125505, + 2125584, + 2125657, + 2125665, + 2125694, + 2125708, + 2125728, + 2125756, + 2125767, + 2125770, + 2125808, + 2125902, + 2125941, + 2125988, + 2126052, + 2126123, + 2126110, + 2126126, + 2126161, + 2126184, + 2126213, + 2126215, + 2126266, + 2126276, + 2126357, + 2113087, + 2126491, + 2246641, + 2126631, + 2126672, + 2126694, + 2126754, + 2126891, + 2126918, + 2126946, + 2126957, + 2127014, + 2127017, + 2127049, + 2127103, + 2127127, + 2113394, + 2127310, + 2127362, + 2127368, + 2127460, + 2127489, + 2127517, + 2127530, + 2127542, + 2127566, + 2127572, + 2127590, + 2127601, + 2127626, + 2127641, + 2127693, + 2127694, + 2127738, + 2127744, + 2127764, + 2127840, + 2249870, + 2127939, + 2127982, + 2128048, + 2249998, + 2128045, + 2128128, + 2128156, + 2128174, + 2128180, + 2128198, + 2128249, + 2128328, + 2250609, + 2128340, + 2128350, + 2128363, + 2128365, + 2128517, + 2251204, + 2128590, + 2128637, + 2128658, + 2128685, + 2128699, + 2128751, + 2128897, + 2128947, + 2252193, + 2129005, + 2129017, + 2129039, + 2129044, + 2129056, + 2129109, + 2129201, + 2129244, + 2129283, + 2129318, + 2129346, + 2129448, + 2129815, + 2129883, + 2129973, + 2129975, + 2130122, + 2130144, + 2130163, + 2130272, + 2130279, + 2130280, + 2130285, + 2130363, + 2130378, + 2130391, + 2114651, + 2130528, + 2130548, + 2255615, + 2130593, + 2130595, + 2130596, + 2130601, + 2130623, + 2130645, + 2130685, + 2130688, + 2130722, + 2130733, + 2130746, + 2130759, + 2130813, + 2130855, + 2130895, + 2130897, + 2130913, + 2130945, + 2130950, + 2131039, + 2131056, + 2131059, + 2131077, + 2131102, + 2131130, + 2256448, + 2131250, + 2131230, + 2131247, + 2131300, + 2131322, + 2131340, + 2131362, + 2131403, + 2131437, + 2131455, + 2131460, + 2131461, + 2131472, + 2257140, + 2131480, + 2131512, + 2131543, + 2131554, + 2114973, + 2131573, + 2131640, + 2131708, + 2131847, + 2115050, + 2131978, + 2131984, + 2132174, + 2258564, + 2132274, + 2132281, + 2132288, + 2132372, + 2132470, + 2132551, + 2132573, + 2132577, + 2132597, + 2132688, + 2132806, + 2132825, + 2132841, + 2132893, + 2133065, + 2133096, + 2133423, + 2133457, + 2133463, + 2133539, + 2133565, + 2133627, + 2261623, + 2115652, + 2133754, + 2133790, + 2133805, + 2133844, + 2261965, + 2133992, + 2133998, + 2134024, + 2134061, + 2134167, + 2134195, + 2134206, + 2134212, + 2134213, + 2134215, + 2134255, + 2134292, + 2134294, + 2134306, + 2134307, + 2134319, + 2134324, + 2134403, + 2134513, + 2134857, + 2134884, + 2134885, + 2134947, + 2135007, + 2135044, + 2135091, + 2135114, + 2135139, + 2135153, + 2135438, + 2135455, + 2135468, + 2135478, + 2135499, + 2135504, + 2135507, + 2116016, + 2135518, + 2135717, + 2135791, + 2135886, + 2135957, + 2135982, + 2135994, + 2136001, + 2136009, + 2136027, + 2136150, + 2136295, + 2136408, + 2136579, + 2136769, + 2136771, + 2136782, + 2136790, + 2136834, + 2136840, + 2116631, + 2136877, + 2136926, + 2136934, + 2136964, + 2136970, + 2136990, + 2137038, + 2137061, + 2137080, + 2137123, + 2137167, + 2137168, + 2137189, + 2137373, + 2137374, + 2137411, + 2137426, + 2137482, + 2137494, + 2137536, + 2137516, + 2137532, + 2269584, + 2137575, + 2137607, + 2137758, + 2137775, + 2138007, + 2228361, + 2117122, + 2117135, + 2117138, + 2117161, + 2117166, + 2117191, + 2228386, + 2117201, + 2110470, + 2228388, + 2117225, + 2117277, + 2110508, + 2117308, + 2117315, + 2117320, + 2117355, + 2117338, + 2117361, + 2117365, + 2117398, + 2117476, + 2117431, + 2117438, + 2117464, + 2228755, + 2117495, + 2117496, + 2117506, + 2117509, + 2117606, + 2117554, + 2117573, + 2117579, + 2117586, + 2110570, + 2117618, + 2117651, + 2117660, + 2117710, + 2117715, + 2117731, + 2117795, + 2117768, + 2117778, + 2117779, + 2117781, + 2117802, + 2229035, + 2117809, + 2117818, + 2117819, + 2117828, + 2117831, + 2117875, + 2229121, + 2117838, + 2229105, + 2117844, + 2117857, + 2110610, + 2229241, + 2117911, + 2229322, + 2117984, + 2229513, + 2118003, + 2118019, + 2118027, + 2110652, + 2118040, + 2118051, + 2118061, + 2110663, + 2229718, + 2118131, + 2118162, + 2118166, + 2230095, + 2118229, + 2118236, + 2118252, + 2118263, + 2118276, + 2118274, + 2230279, + 2118296, + 2230330, + 2118308, + 2118330, + 2118331, + 2118346, + 2118353, + 2230457, + 2118391, + 2118453, + 2118466, + 2230652, + 2230685, + 2118503, + 2118522, + 2118564, + 2118580, + 2230995, + 2118583, + 2118592, + 2231069, + 2110813, + 2110814, + 2118613, + 2110819, + 2118644, + 2118692, + 2118696, + 2110830, + 2118723, + 2118754, + 2118764, + 2118805, + 2118816, + 2118822, + 2118830, + 2118839, + 2118842, + 2118851, + 2231621, + 2118892, + 2118895, + 2118897, + 2118899, + 2118912, + 2118913, + 2118921, + 2118972, + 2118977, + 2110886, + 2118983, + 2110888, + 2119012, + 2231777, + 2119037, + 2119042, + 2119057, + 2110917, + 2119122, + 2231957, + 2231917, + 2119103, + 2119113, + 2119116, + 2119121, + 2119133, + 2110938, + 2119138, + 2231908, + 2119145, + 2119208, + 2232159, + 2119175, + 2119184, + 2119216, + 2110964, + 2119229, + 2119232, + 2119239, + 2119262, + 2119264, + 2119277, + 2110981, + 2119304, + 2119308, + 2119325, + 2119336, + 2119346, + 2119365, + 2119373, + 2119391, + 2119400, + 2119414, + 2119415, + 2232833, + 2232917, + 2119465, + 2232955, + 2119493, + 2119494, + 2119501, + 2232948, + 2119528, + 2119535, + 2119539, + 2119540, + 2119541, + 2119547, + 2233060, + 2233047, + 2119578, + 2119581, + 2119582, + 2119592, + 2119639, + 2233085, + 2119628, + 2233142, + 2233156, + 2119646, + 2119664, + 2111050, + 2119672, + 2119675, + 2119677, + 2119684, + 2119710, + 2119719, + 2119737, + 2233284, + 2119753, + 2119756, + 2119783, + 2119818, + 2119819, + 2119821, + 2119823, + 2119824, + 2119828, + 2119837, + 2119850, + 2119857, + 2233453, + 2119875, + 2119885, + 2119906, + 2119923, + 2119924, + 2119941, + 2119942, + 2119949, + 2119956, + 2233815, + 2111121, + 2119997, + 2111129, + 2120006, + 2111126, + 2255913, + 2120031, + 2233927, + 2120053, + 2120054, + 2120060, + 2120095, + 2120110, + 2120124, + 2120136, + 2120141, + 2120158, + 2120167, + 2120174, + 2234118, + 2234178, + 2111183, + 2120205, + 2120215, + 2120231, + 2120237, + 2120293, + 2120314, + 2120331, + 2120348, + 2120351, + 2120352, + 2120354, + 2120369, + 2120373, + 2120378, + 2120383, + 2120410, + 2120412, + 2120421, + 2120432, + 2120430, + 2120437, + 2120456, + 2120471, + 2120500, + 2120524, + 2120530, + 2120552, + 2120559, + 2120577, + 2120580, + 2234819, + 2120598, + 2120620, + 2111329, + 2111330, + 2120654, + 2120662, + 2111340, + 2111339, + 2120689, + 2120701, + 2111349, + 2120707, + 2120745, + 2235478, + 2120799, + 2120807, + 2120808, + 2120816, + 2235693, + 2235717, + 2235768, + 2235746, + 2120840, + 2120842, + 2111425, + 2235809, + 2235804, + 2120864, + 2120866, + 2120871, + 2235794, + 2120877, + 2120885, + 2235831, + 2120905, + 2235872, + 2235955, + 2120966, + 2120976, + 2121003, + 2120989, + 2120992, + 2121009, + 2121017, + 2111464, + 2121057, + 2121066, + 2111476, + 2121072, + 2236190, + 2111485, + 2121096, + 2111488, + 2121111, + 2121136, + 2121140, + 2236278, + 2121169, + 2121175, + 2236410, + 2121188, + 2121193, + 2111535, + 2111542, + 2111552, + 2121247, + 2121278, + 2121289, + 2111580, + 2121302, + 2111585, + 2121325, + 2121326, + 2236795, + 2121381, + 2121388, + 2121401, + 2121414, + 2121433, + 2237214, + 2121469, + 2121480, + 2237357, + 2121502, + 2121543, + 2121571, + 2121586, + 2121598, + 2121615, + 2121634, + 2121671, + 2121675, + 2121682, + 2121683, + 2121684, + 2121698, + 2121710, + 2121711, + 2121715, + 2111767, + 2121762, + 2121764, + 2111770, + 2121804, + 2121877, + 2121896, + 2238195, + 2121905, + 2121918, + 2121928, + 2121945, + 2121966, + 2121973, + 2122000, + 2122009, + 2122014, + 2122042, + 2111855, + 2122049, + 2122054, + 2122080, + 2238555, + 2122130, + 2122131, + 2122135, + 2122149, + 2122157, + 2238635, + 2122197, + 2122205, + 2122229, + 2238863, + 2122275, + 2122322, + 2122337, + 2122340, + 2122363, + 2122349, + 2122355, + 2122393, + 2122453, + 2239160, + 2122493, + 2122499, + 2122512, + 2239311, + 2239312, + 2122546, + 2122549, + 2122555, + 2122556, + 2122561, + 2122564, + 2122574, + 2239302, + 2122585, + 2239517, + 2239398, + 2122604, + 2122649, + 2239524, + 2122644, + 2122685, + 2122708, + 2122709, + 2122720, + 2122731, + 2122732, + 2122738, + 2122782, + 2122789, + 2122793, + 2122799, + 2122842, + 2122845, + 2122867, + 2122877, + 2122887, + 2122897, + 2122911, + 2122955, + 2122956, + 2122965, + 2122967, + 2239969, + 2122980, + 2123007, + 2112110, + 2123023, + 2123028, + 2112115, + 2123038, + 2123058, + 2123076, + 2123092, + 2123115, + 2123130, + 2123140, + 2123146, + 2123186, + 2123189, + 2123192, + 2123199, + 2123209, + 2123220, + 2112214, + 2123257, + 2123260, + 2123268, + 2123272, + 2123297, + 2123306, + 2123333, + 2123345, + 2123342, + 2112234, + 2240963, + 2241013, + 2240950, + 2123370, + 2123372, + 2123373, + 2123387, + 2123392, + 2123408, + 2123410, + 2112270, + 2123437, + 2123441, + 2123445, + 2112282, + 2112284, + 2112215, + 2123521, + 2123538, + 2241394, + 2123545, + 2241491, + 2241490, + 2123597, + 2123604, + 2123613, + 2241488, + 2241508, + 2241493, + 2123636, + 2241498, + 2123666, + 2241503, + 2130787, + 2123792, + 2123715, + 2123720, + 2123730, + 2123739, + 2123767, + 2241610, + 2241617, + 2241611, + 2123800, + 2123807, + 2123821, + 2241637, + 2123827, + 2123835, + 2123838, + 2123845, + 2123849, + 2123852, + 2123861, + 2123863, + 2112375, + 2123883, + 2123886, + 2123900, + 2123906, + 2123920, + 2123926, + 2112365, + 2123928, + 2123929, + 2123930, + 2123932, + 2123946, + 2123947, + 2123956, + 2123963, + 2124027, + 2241764, + 2241882, + 2123971, + 2123973, + 2123980, + 2123993, + 2124004, + 2124005, + 2124012, + 2124023, + 2124035, + 2124039, + 2112391, + 2241940, + 2112397, + 2124102, + 2124137, + 2124140, + 2124154, + 2124178, + 2112420, + 2124182, + 2124208, + 2124218, + 2124220, + 2124224, + 2124241, + 2242105, + 2242119, + 2242104, + 2124259, + 2124270, + 2124271, + 2124275, + 2112461, + 2124276, + 2124286, + 2124305, + 2124314, + 2124317, + 2242332, + 2124338, + 2124339, + 2124351, + 2124361, + 2124410, + 2124366, + 2124370, + 2124388, + 2242316, + 2124427, + 2112496, + 2124449, + 2242404, + 2124459, + 2124477, + 2124486, + 2124500, + 2124496, + 2124509, + 2242559, + 2242535, + 2124529, + 2124530, + 2124531, + 2124541, + 2242596, + 2124555, + 2124559, + 2124560, + 2124561, + 2242621, + 2124567, + 2112550, + 2124591, + 2124618, + 2124632, + 2124652, + 2124661, + 2124666, + 2124673, + 2124699, + 2124718, + 2243224, + 2124733, + 2124743, + 2124744, + 2124745, + 2124762, + 2124774, + 2124775, + 2124782, + 2124802, + 2124810, + 2124814, + 2124854, + 2243711, + 2124877, + 2124891, + 2124909, + 2124932, + 2124937, + 2112707, + 2124948, + 2124951, + 2124973, + 2124994, + 2112722, + 2125020, + 2125033, + 2125037, + 2243840, + 2125056, + 2125092, + 2125094, + 2125095, + 2124903, + 2125103, + 2125116, + 2125147, + 2125152, + 2125168, + 2125184, + 2125185, + 2125194, + 2125197, + 2125201, + 2125208, + 2243904, + 2244090, + 2244089, + 2244051, + 2125227, + 2125230, + 2125236, + 2125250, + 2125108, + 2125256, + 2125262, + 2125279, + 2125302, + 2125366, + 2125342, + 2112785, + 2125362, + 2125384, + 2125385, + 2125387, + 2125388, + 2125391, + 2125395, + 2125396, + 2125399, + 2125411, + 2112798, + 2125459, + 2125479, + 2125492, + 2125507, + 2125621, + 2125547, + 2125561, + 2125563, + 2125578, + 2125580, + 2125592, + 2125605, + 2125622, + 2125628, + 2244478, + 2125650, + 2125655, + 2125664, + 2125672, + 2125712, + 2125718, + 2125758, + 2125727, + 2125733, + 2125743, + 2112868, + 2125768, + 2125769, + 2125801, + 2244758, + 2125820, + 2125824, + 2125834, + 2125859, + 2244867, + 2125882, + 2125891, + 2125895, + 2125899, + 2112922, + 2125925, + 2125929, + 2125934, + 2125942, + 2125958, + 2125975, + 2245062, + 2125983, + 2126001, + 2245118, + 2126060, + 2126026, + 2126033, + 2126083, + 2126086, + 2126088, + 2126092, + 2112960, + 2126127, + 2126160, + 2126163, + 2126174, + 2112980, + 2126230, + 2126208, + 2126235, + 2126240, + 2126242, + 2126254, + 2126255, + 2245564, + 2126297, + 2126300, + 2126343, + 2113029, + 2126388, + 2126393, + 2126402, + 2126423, + 2126435, + 2246185, + 2126446, + 2126447, + 2126456, + 2126463, + 2126478, + 2246309, + 2126510, + 2126512, + 2126529, + 2113120, + 2126540, + 2113126, + 2113128, + 2126579, + 2126586, + 2126599, + 2126610, + 2126616, + 2126617, + 2113155, + 2126649, + 2126636, + 2126643, + 2126653, + 2126674, + 2113172, + 2126699, + 2246806, + 2126702, + 2126703, + 2126705, + 2126721, + 2126730, + 2126740, + 2126744, + 2126748, + 2126757, + 2126777, + 2126783, + 2126789, + 2126795, + 2126817, + 2126823, + 2126841, + 2126867, + 2126842, + 2126849, + 2126931, + 2126912, + 2126915, + 2126930, + 2126941, + 2126977, + 2126984, + 2247245, + 2126994, + 2126999, + 2127001, + 2127009, + 2127013, + 2127018, + 2127033, + 2127035, + 2127034, + 2127062, + 2127064, + 2127083, + 2247510, + 2127098, + 2247535, + 2127136, + 2127140, + 2127146, + 2113367, + 2247702, + 2127165, + 2127166, + 2127168, + 2127176, + 2127184, + 2127186, + 2127218, + 2127217, + 2127226, + 2127229, + 2127230, + 2127244, + 2113397, + 2127266, + 2113399, + 2127280, + 2127287, + 2127295, + 2127296, + 2127302, + 2127311, + 2127315, + 2127325, + 2127327, + 2127328, + 2127335, + 2127342, + 2127345, + 2127363, + 2127384, + 2127367, + 2127375, + 2113454, + 2248206, + 2127379, + 2127387, + 2127388, + 2248247, + 2127397, + 2127400, + 2127420, + 2127411, + 2248298, + 2113481, + 2127425, + 2248331, + 2127433, + 2127445, + 2113495, + 2127470, + 2127509, + 2127521, + 2127520, + 2127527, + 2127528, + 2127535, + 2248778, + 2127561, + 2248789, + 2127592, + 2248994, + 2127639, + 2127642, + 2127661, + 2127669, + 2249129, + 2113593, + 2249189, + 2249165, + 2127704, + 2249246, + 2127740, + 2249292, + 2113624, + 2127770, + 2127775, + 2127778, + 2127780, + 2127838, + 2127839, + 2127844, + 2127850, + 2127852, + 2127867, + 2249774, + 2127877, + 2127881, + 2127885, + 2127897, + 2127916, + 2127943, + 2127978, + 2249945, + 2128010, + 2128020, + 2128036, + 2128029, + 2128031, + 2128059, + 2128085, + 2128102, + 2128121, + 2128122, + 2128126, + 2250151, + 2128144, + 2128155, + 2128165, + 2128202, + 2128216, + 2113797, + 2128231, + 2128242, + 2128277, + 2128289, + 2128297, + 2128308, + 2128322, + 2128327, + 2128332, + 2128333, + 2128342, + 2113864, + 2250665, + 2250676, + 2113871, + 2128394, + 2128405, + 2128411, + 2113891, + 2128440, + 2128455, + 2128470, + 2128473, + 2128476, + 2128479, + 2128487, + 2128490, + 2128501, + 2128514, + 2128522, + 2128528, + 2128556, + 2251220, + 2113972, + 2128569, + 2128574, + 2113983, + 2128588, + 2128616, + 2128628, + 2251492, + 2251491, + 2251505, + 2128701, + 2128682, + 2128686, + 2128687, + 2114022, + 2114035, + 2128767, + 2128705, + 2114030, + 2128725, + 2128761, + 2128740, + 2128742, + 2128755, + 2251698, + 2114055, + 2128784, + 2128795, + 2114062, + 2128821, + 2128828, + 2128837, + 2128842, + 2251851, + 2251876, + 2128852, + 2128854, + 2128858, + 2128874, + 2128880, + 2128899, + 2128910, + 2128965, + 2128970, + 2128983, + 2128990, + 2128993, + 2129001, + 2129007, + 2252334, + 2252374, + 2252389, + 2129062, + 2252386, + 2129078, + 2129079, + 2252504, + 2129092, + 2252482, + 2129101, + 2252520, + 2252579, + 2129126, + 2252636, + 2129141, + 2129155, + 2114246, + 2129170, + 2129182, + 2252768, + 2252756, + 2129213, + 2129214, + 2129216, + 2129223, + 2252812, + 2252795, + 2114262, + 2129242, + 2129258, + 2129264, + 2114269, + 2129279, + 2252823, + 2129288, + 2129303, + 2252896, + 2129309, + 2129319, + 2129322, + 2129334, + 2129344, + 2129367, + 2129369, + 2129382, + 2114306, + 2253037, + 4226569, + 2129424, + 2129431, + 2129437, + 2129447, + 2129452, + 2129477, + 2129525, + 2129534, + 2129542, + 2129543, + 2114347, + 2129562, + 2114371, + 2129724, + 2129723, + 2129726, + 2129731, + 2110657, + 2253424, + 2253446, + 2129763, + 2129764, + 2129773, + 2129789, + 2129790, + 2129808, + 2118011, + 2243854, + 2129814, + 2129820, + 2129837, + 2253826, + 2129859, + 2129871, + 2129891, + 2129906, + 2129930, + 2129928, + 2129942, + 2129964, + 2129968, + 2129987, + 2130022, + 2130043, + 2130073, + 2130076, + 2130084, + 2130087, + 2130104, + 2254462, + 2130117, + 2130133, + 2130150, + 2130189, + 2130165, + 2130171, + 2114542, + 2130229, + 2130206, + 2114544, + 2130212, + 2130215, + 2130220, + 2254621, + 2130237, + 2114568, + 2130281, + 2114583, + 2114588, + 2130309, + 2114594, + 2130328, + 2130354, + 2130369, + 2130371, + 2130390, + 2130395, + 2255069, + 2130404, + 2255082, + 2130412, + 2130429, + 2130431, + 2255215, + 2130436, + 2255325, + 2130457, + 2130466, + 2255390, + 2130492, + 2130505, + 2130501, + 2255448, + 2114678, + 2114682, + 2130519, + 2255500, + 2130524, + 2130531, + 2255543, + 2114705, + 2130557, + 2130559, + 2130563, + 2130570, + 2130579, + 2130599, + 2130600, + 2130610, + 2130612, + 2130618, + 2130620, + 2130658, + 2130664, + 2130679, + 2130695, + 2130696, + 2130700, + 2130772, + 2130715, + 2130717, + 2130736, + 2130748, + 2130756, + 2130775, + 2114750, + 2114772, + 2114739, + 2130836, + 2130837, + 2130843, + 2130845, + 2130889, + 2130896, + 2130900, + 2130909, + 2130917, + 2130937, + 2130965, + 2255987, + 2130967, + 2131001, + 2131023, + 2131025, + 2131026, + 2131033, + 2131034, + 2131036, + 2256093, + 2131045, + 2131064, + 2131068, + 2131073, + 2114829, + 2131095, + 2131110, + 2131134, + 2114824, + 2131150, + 2131151, + 2131155, + 2256485, + 2131175, + 2131178, + 2131183, + 2131185, + 2131194, + 2131227, + 2131236, + 2131237, + 2131243, + 2131279, + 2131311, + 2114883, + 2131281, + 2131297, + 2131298, + 2256788, + 2131323, + 2131325, + 2131327, + 2131329, + 2131334, + 2131347, + 2131357, + 2131359, + 2256888, + 2256886, + 2256887, + 2131388, + 2131399, + 2131402, + 2131416, + 2131417, + 2131423, + 2131425, + 2131430, + 2131446, + 2131456, + 2131473, + 2131486, + 2131489, + 2131492, + 2131495, + 2257165, + 2131513, + 2131516, + 2257209, + 2131520, + 2131539, + 2131542, + 2131575, + 2131591, + 2131593, + 2131612, + 2131613, + 2131633, + 2131635, + 2131649, + 2131651, + 2131665, + 2131669, + 2131671, + 2131683, + 2131686, + 2115000, + 2131717, + 2131719, + 2131726, + 2131728, + 2131743, + 2131745, + 2131747, + 2131761, + 2131770, + 2131776, + 2131779, + 2131793, + 2131800, + 2131812, + 2131813, + 2131826, + 2131836, + 2257883, + 2257882, + 2131879, + 2131849, + 2131851, + 2131859, + 2131872, + 2257918, + 2115045, + 2131902, + 2257936, + 2131905, + 2131918, + 2131935, + 2257993, + 2131939, + 2131941, + 2131942, + 2131946, + 2131987, + 2132008, + 2132014, + 2132018, + 2132028, + 2115087, + 2132042, + 2132056, + 2258453, + 2258452, + 2132073, + 2258481, + 2132079, + 2132128, + 2132156, + 2132160, + 2258579, + 2132177, + 2132179, + 2115137, + 2132225, + 2258702, + 2132279, + 2258723, + 2132290, + 2132293, + 2132297, + 2258770, + 2132322, + 2132361, + 2132368, + 2132383, + 2132400, + 2132407, + 2132440, + 2132459, + 2115233, + 2132467, + 2132477, + 2132479, + 2115247, + 2132497, + 2132500, + 2259333, + 2132513, + 2132533, + 2132542, + 2132549, + 2132557, + 2132568, + 2132654, + 2132624, + 2132663, + 2132695, + 2132732, + 2259588, + 2132746, + 2132741, + 2132749, + 2132764, + 2132781, + 2115340, + 2132817, + 2132830, + 2132854, + 2132865, + 2132875, + 2132884, + 2132885, + 2133049, + 2259891, + 2133053, + 2259902, + 2259911, + 2133061, + 2133071, + 2133079, + 2133097, + 2133101, + 2260152, + 2133139, + 2133138, + 2133145, + 2115428, + 2133147, + 2133206, + 2133205, + 2260384, + 2133233, + 2260496, + 2133257, + 2133262, + 2133448, + 2133465, + 2133516, + 2115581, + 2133501, + 2133510, + 2261130, + 2133524, + 2133526, + 2133537, + 2133538, + 2133543, + 2261179, + 2115606, + 2133558, + 2133561, + 2133588, + 2133602, + 2133613, + 2133615, + 2133656, + 2133662, + 2133685, + 2133691, + 2261634, + 2115662, + 2261747, + 2133760, + 2133768, + 2133803, + 2133824, + 2133834, + 2133848, + 2262028, + 2133924, + 2133940, + 2262101, + 2133953, + 2133958, + 2161188, + 2133962, + 2133965, + 2133971, + 2133973, + 2134001, + 2134005, + 2134011, + 2134028, + 2134071, + 2262379, + 2134083, + 2134109, + 2262472, + 2262473, + 2134149, + 2134156, + 2134160, + 2134177, + 2115765, + 2134192, + 2134198, + 2134211, + 2134216, + 2262743, + 2134236, + 2134239, + 2262778, + 2134262, + 2134258, + 2134272, + 2134251, + 2134270, + 2134271, + 2134276, + 2134278, + 2134296, + 2134302, + 2134327, + 2134329, + 2134342, + 2134343, + 2134359, + 2134361, + 2134388, + 2134393, + 2134405, + 2134451, + 2134454, + 2134467, + 2134468, + 2263369, + 2263366, + 2134508, + 2134529, + 2134550, + 2134551, + 2263403, + 2134594, + 2134602, + 2134614, + 2134625, + 2134629, + 2134632, + 2263432, + 2134652, + 2134653, + 2134655, + 2134665, + 2134669, + 2134679, + 2134681, + 2134687, + 2134699, + 2263482, + 2263483, + 2134706, + 2134719, + 2134720, + 2134726, + 2134734, + 2134757, + 2134801, + 2263582, + 2263593, + 2134775, + 2134825, + 2263665, + 2263619, + 2134865, + 2134874, + 2134891, + 2134897, + 2134899, + 2134945, + 2263705, + 2263757, + 2134920, + 2134923, + 2134927, + 2134942, + 2135029, + 2263780, + 2263773, + 2135025, + 2134983, + 2135004, + 2135015, + 2135049, + 2135062, + 2135063, + 2135035, + 2135090, + 2135099, + 2264001, + 2264047, + 2135149, + 2135151, + 2135417, + 2135430, + 2135436, + 2135437, + 2264336, + 2264433, + 2135496, + 2264571, + 2264607, + 2135596, + 2135603, + 2135604, + 2264630, + 2135612, + 2135649, + 2264713, + 2135682, + 2264811, + 2135706, + 2264882, + 2116071, + 2135731, + 2135738, + 2135741, + 2116090, + 2265080, + 2135768, + 2135770, + 2135773, + 2116100, + 2135828, + 2135843, + 2116137, + 2135862, + 2135873, + 2135879, + 2135895, + 2135899, + 2135914, + 2265760, + 2265777, + 2135958, + 2135966, + 2135985, + 2135986, + 2135998, + 2136012, + 2136017, + 2136020, + 2136024, + 2136033, + 2136049, + 2136068, + 2136077, + 2136084, + 2136086, + 2116284, + 2266256, + 2136114, + 2136115, + 2136101, + 2136135, + 2136166, + 2136235, + 2136237, + 2136240, + 2266575, + 2136247, + 2136251, + 2136252, + 2136258, + 2136263, + 2136267, + 2136289, + 2136291, + 2136298, + 2136304, + 2136305, + 2136307, + 2136328, + 2116411, + 2266864, + 2136342, + 2136343, + 2266905, + 2136346, + 2136347, + 2136348, + 2266960, + 2136369, + 2136378, + 2136379, + 2136380, + 2136385, + 2136390, + 2136398, + 2136416, + 2136483, + 2136486, + 2136509, + 2136511, + 2136515, + 2136532, + 2136537, + 2136542, + 2267334, + 2136560, + 2136569, + 2136572, + 2136586, + 2136593, + 2136602, + 2136608, + 2136625, + 2136644, + 2136652, + 2136664, + 2116546, + 2136751, + 2116554, + 2136759, + 2116562, + 2136761, + 2267762, + 2136774, + 2136784, + 2136786, + 2136789, + 2136800, + 2136805, + 2136809, + 2136844, + 2136848, + 2136850, + 2136854, + 2136860, + 2136875, + 2136893, + 2116640, + 2136907, + 2136931, + 2136933, + 2136939, + 2136940, + 2136950, + 2136951, + 2136998, + 2137004, + 2268635, + 2137010, + 2137016, + 2137022, + 2137075, + 2137048, + 2137053, + 2137066, + 2137071, + 2137070, + 2268693, + 2268810, + 2268745, + 2137110, + 2137112, + 2137113, + 2137114, + 2137117, + 2137122, + 2137129, + 2268868, + 2137137, + 2137143, + 2137157, + 2137180, + 2268905, + 2137161, + 2137162, + 2268891, + 2137172, + 2137176, + 2137179, + 2137181, + 2137183, + 2137193, + 2137194, + 2137195, + 2137197, + 2137198, + 2137202, + 2137205, + 2137210, + 2137318, + 2137330, + 2137355, + 2269143, + 2137361, + 2137367, + 2137368, + 2269231, + 2116804, + 2269210, + 2137394, + 2116817, + 2137418, + 2137439, + 2137442, + 2269433, + 2269314, + 2137459, + 2137462, + 2137463, + 2137476, + 2137497, + 2137505, + 2137535, + 2137525, + 2137529, + 2137533, + 2137545, + 2137562, + 2137568, + 2137571, + 2116871, + 2137610, + 2137602, + 2137613, + 2137628, + 2137723, + 2236952, + 2137728, + 2137733, + 2137755, + 2270092, + 2137789, + 2270263, + 2137823, + 2137855, + 2137858, + 2116983, + 2137859, + 2137914, + 2137917, + 2137926, + 2137939, + 2137941, + 2137944, + 2270705, + 2137949, + 2270722, + 2137961, + 2137965, + 2137968, + 2270898, + 2128186, + 2110996, + 2111661, + 2112972, + 2113500, + 2115006, + 2115088, + 2116478, + 2116664, + 2116833, + 2117132, + 2117155, + 2117156, + 2117241, + 2117363, + 2117388, + 2117401, + 2117419, + 2117422, + 2117425, + 2117508, + 2117534, + 2117559, + 2117636, + 2117644, + 2117708, + 2117727, + 2117730, + 2117751, + 2117774, + 2117790, + 2117794, + 2117827, + 2117864, + 2117873, + 2117886, + 2117895, + 2117900, + 2117901, + 2117902, + 2117939, + 2117944, + 2118004, + 2118020, + 2118072, + 2118074, + 2118088, + 2118095, + 2118097, + 2118099, + 2118100, + 2118104, + 2118111, + 2118149, + 2118182, + 2118184, + 2118187, + 2118193, + 2118194, + 2118197, + 2118204, + 2118234, + 2118240, + 2118254, + 2118264, + 2118265, + 2118282, + 2118284, + 2118369, + 2118377, + 2118385, + 2118403, + 2118417, + 2118431, + 2118445, + 2118450, + 2118461, + 2118501, + 2118509, + 2118521, + 2118526, + 2118548, + 2118553, + 2118570, + 2118575, + 2118586, + 2118593, + 2118596, + 2118597, + 2118624, + 2118675, + 2118698, + 2118705, + 2118708, + 2118709, + 2118732, + 2118823, + 2118826, + 2118833, + 2118843, + 2118862, + 2118890, + 2118908, + 2118917, + 2118920, + 2118933, + 2118951, + 2118954, + 2118966, + 2118993, + 2119014, + 2119055, + 2119058, + 2119060, + 2119076, + 2119090, + 2119107, + 2119110, + 2119123, + 2119131, + 2119148, + 2119150, + 2119153, + 2119158, + 2119160, + 2119173, + 2119181, + 2119185, + 2119186, + 2119212, + 2119221, + 2119225, + 2119245, + 2119252, + 2119301, + 2119327, + 2119334, + 2119351, + 2119372, + 2119375, + 2119385, + 2119393, + 2119403, + 2119405, + 2119409, + 2119431, + 2119436, + 2119450, + 2119451, + 2119453, + 2119468, + 2119470, + 2119485, + 2119486, + 2119519, + 2119531, + 2119533, + 2119546, + 2119555, + 2119575, + 2119598, + 2119637, + 2119655, + 2119693, + 2119718, + 2119757, + 2119759, + 2119775, + 2119789, + 2119807, + 2119809, + 2119832, + 2119868, + 2119967, + 2119971, + 2120025, + 2120057, + 2120087, + 2120111, + 2120115, + 2120159, + 2120177, + 2120184, + 2120370, + 2120376, + 2120426, + 2120438, + 2120475, + 2120477, + 2120481, + 2120504, + 2120631, + 2120663, + 2120672, + 2120735, + 2120746, + 2120748, + 2120758, + 2120793, + 2120796, + 2120813, + 2120925, + 2120961, + 2121012, + 2121021, + 2121049, + 2121086, + 2121091, + 2121159, + 2121209, + 2121256, + 2121266, + 2121269, + 2121307, + 2121320, + 2121322, + 2121335, + 2121344, + 2121355, + 2121395, + 2121405, + 2121425, + 2121428, + 2121429, + 2121549, + 2121644, + 2121706, + 2121735, + 2121801, + 2121812, + 2121831, + 2121915, + 2121924, + 2121981, + 2121994, + 2122006, + 2122026, + 2122038, + 2122078, + 2122084, + 2122107, + 2122109, + 2122111, + 2122141, + 2122168, + 2122204, + 2122210, + 2122213, + 2122216, + 2122244, + 2122247, + 2122289, + 2122297, + 2122301, + 2122362, + 2122384, + 2122408, + 2122458, + 2122484, + 2122518, + 2122538, + 2122550, + 2122566, + 2122571, + 2122579, + 2122609, + 2122613, + 2122623, + 2122626, + 2122634, + 2122670, + 2122671, + 2122730, + 2122744, + 2122745, + 2122770, + 2122776, + 2122784, + 2122788, + 2122794, + 2122805, + 2122813, + 2122815, + 2122834, + 2122847, + 2122868, + 2122896, + 2122904, + 2122905, + 2122924, + 2122931, + 2122989, + 2122992, + 2123035, + 2123039, + 2123054, + 2123081, + 2123104, + 2123154, + 2123157, + 2123188, + 2123198, + 2123208, + 2123214, + 2123216, + 2123231, + 2123390, + 2123403, + 2123404, + 2123443, + 2123456, + 2123471, + 2123557, + 2123573, + 2123605, + 2123648, + 2123663, + 2123665, + 2123684, + 2123697, + 2123701, + 2123710, + 2123816, + 2123910, + 2124011, + 2124021, + 2124055, + 2124083, + 2124088, + 2124123, + 2124133, + 2124200, + 2124203, + 2124207, + 2124261, + 2124273, + 2124362, + 2124373, + 2124391, + 2124401, + 2124463, + 2124488, + 2124489, + 2124547, + 2124603, + 2124607, + 2124669, + 2124670, + 2124720, + 2124791, + 2124793, + 2124804, + 2124809, + 2124813, + 2124844, + 2124874, + 2124882, + 2124884, + 2124921, + 2124972, + 2124980, + 2125010, + 2125153, + 2125180, + 2125241, + 2125296, + 2125381, + 2125427, + 2125435, + 2125437, + 2125449, + 2125500, + 2125530, + 2125531, + 2125606, + 2125609, + 2125616, + 2125703, + 2125725, + 2125742, + 2125751, + 2125837, + 2125856, + 2125897, + 2125976, + 2126000, + 2126037, + 2126038, + 2126149, + 2126258, + 2126324, + 2126359, + 2126367, + 2126403, + 2126415, + 2126416, + 2126426, + 2126432, + 2126440, + 2126455, + 2126468, + 2126537, + 2126565, + 2126580, + 2126594, + 2126603, + 2126622, + 2126626, + 2126650, + 2126651, + 2126669, + 2126680, + 2126695, + 2126962, + 2127023, + 2127071, + 2127076, + 2127092, + 2127099, + 2127126, + 2127137, + 2127167, + 2127198, + 2127257, + 2127268, + 2127297, + 2127300, + 2127308, + 2127319, + 2127324, + 2127329, + 2127343, + 2127364, + 2127372, + 2127389, + 2127410, + 2127416, + 2127429, + 2127434, + 2127455, + 2127533, + 2127549, + 2127577, + 2127595, + 2127600, + 2127609, + 2127616, + 2127630, + 2127650, + 2127656, + 2127663, + 2127673, + 2127678, + 2127685, + 2127690, + 2127695, + 2127710, + 2127716, + 2127719, + 2127724, + 2127748, + 2127756, + 2127757, + 2127766, + 2127783, + 2127791, + 2127799, + 2127806, + 2127817, + 2127825, + 2127833, + 2127857, + 2127927, + 2127964, + 2127998, + 2128024, + 2128033, + 2128049, + 2128051, + 2128073, + 2128083, + 2128140, + 2128159, + 2128167, + 2128168, + 2128191, + 2128194, + 2128212, + 2128235, + 2128252, + 2128299, + 2128324, + 2128362, + 2128386, + 2128396, + 2128432, + 2128442, + 2128452, + 2128512, + 2128518, + 2128532, + 2128565, + 2128573, + 2128638, + 2128683, + 2128759, + 2128800, + 2128812, + 2128816, + 2128872, + 2128882, + 2128888, + 2128892, + 2128894, + 2128905, + 2128936, + 2128943, + 2128962, + 2128978, + 2128979, + 2128987, + 2128988, + 2128989, + 2129010, + 2129021, + 2129031, + 2129054, + 2129082, + 2129095, + 2129107, + 2129114, + 2129212, + 2129229, + 2129282, + 2129285, + 2129293, + 2129297, + 2129310, + 2129331, + 2129337, + 2129360, + 2129381, + 2129397, + 2129398, + 2129455, + 2129462, + 2129476, + 2129519, + 2129528, + 2129537, + 2129725, + 2129755, + 2129757, + 2129765, + 2129777, + 2129791, + 2129792, + 2129803, + 2129826, + 2129917, + 2129918, + 2129919, + 2129927, + 2129933, + 2129950, + 2129977, + 2130056, + 2130062, + 2130127, + 2130132, + 2130157, + 2130160, + 2130167, + 2130170, + 2130174, + 2130179, + 2130199, + 2130224, + 2130263, + 2130287, + 2130291, + 2130315, + 2130320, + 2130331, + 2130334, + 2130379, + 2130389, + 2130397, + 2130398, + 2130401, + 2130415, + 2130422, + 2130432, + 2130443, + 2130451, + 2130452, + 2130458, + 2130490, + 2130500, + 2130541, + 2130564, + 2130569, + 2130577, + 2130602, + 2130608, + 2130640, + 2130666, + 2130671, + 2130678, + 2130774, + 2130808, + 2130936, + 2130940, + 2131032, + 2131091, + 2131121, + 2131133, + 2131195, + 2131270, + 2131286, + 2131293, + 2131333, + 2131352, + 2131522, + 2131526, + 2131648, + 2131732, + 2131746, + 2131758, + 2131769, + 2131805, + 2131835, + 2131852, + 2131854, + 2131863, + 2131864, + 2131870, + 2131875, + 2131886, + 2131903, + 2131913, + 2131930, + 2131992, + 2131995, + 2132013, + 2132026, + 2132037, + 2132043, + 2132046, + 2132053, + 2132058, + 2132078, + 2132122, + 2132123, + 2132124, + 2132173, + 2132192, + 2132207, + 2132238, + 2132239, + 2132262, + 2132277, + 2132314, + 2132316, + 2132331, + 2132336, + 2132348, + 2132389, + 2132405, + 2132412, + 2132437, + 2132553, + 2132567, + 2132583, + 2132606, + 2132614, + 2132630, + 2132662, + 2132681, + 2132689, + 2132701, + 2132716, + 2132725, + 2132742, + 2132751, + 2132753, + 2132805, + 2132818, + 2132845, + 2132856, + 2132860, + 2132862, + 2132869, + 2132895, + 2133067, + 2133075, + 2133115, + 2133178, + 2133189, + 2133193, + 2133202, + 2133228, + 2133237, + 2133239, + 2133249, + 2133251, + 2133271, + 2133276, + 2133358, + 2133393, + 2133407, + 2133419, + 2133426, + 2133461, + 2133479, + 2133489, + 2133490, + 2133492, + 2133505, + 2133515, + 2133542, + 2133553, + 2133568, + 2133569, + 2133581, + 2133583, + 2133596, + 2133601, + 2133609, + 2133617, + 2133621, + 2133623, + 2133641, + 2133648, + 2133653, + 2133658, + 2133671, + 2133673, + 2133677, + 2133736, + 2133744, + 2133767, + 2133784, + 2133797, + 2133799, + 2133804, + 2133813, + 2133818, + 2133827, + 2133831, + 2133841, + 2133845, + 2133920, + 2133921, + 2133922, + 2133925, + 2134020, + 2134043, + 2134063, + 2134092, + 2134107, + 2134128, + 2134132, + 2134137, + 2134155, + 2134168, + 2134176, + 2134194, + 2134205, + 2134217, + 2134256, + 2134277, + 2134309, + 2134362, + 2134375, + 2134394, + 2134410, + 2134417, + 2134421, + 2134448, + 2134459, + 2134461, + 2134466, + 2134469, + 2134528, + 2134537, + 2134563, + 2134646, + 2134670, + 2134703, + 2134715, + 2134716, + 2134721, + 2134723, + 2134725, + 2134728, + 2134804, + 2134835, + 2134838, + 2134872, + 2134911, + 2134914, + 2134922, + 2134971, + 2134988, + 2135014, + 2135033, + 2135042, + 2135053, + 2135054, + 2135086, + 2135116, + 2135432, + 2135457, + 2135487, + 2135494, + 2135497, + 2135505, + 2135506, + 2135520, + 2135524, + 2135526, + 2135588, + 2135601, + 2135608, + 2135613, + 2135636, + 2135668, + 2135675, + 2135679, + 2135681, + 2135683, + 2135689, + 2135702, + 2135726, + 2135811, + 2135835, + 2135841, + 2135842, + 2135848, + 2135857, + 2135911, + 2135926, + 2135933, + 2135935, + 2135961, + 2135967, + 2135980, + 2135993, + 2136013, + 2136032, + 2136047, + 2136071, + 2136102, + 2136110, + 2136162, + 2136163, + 2136244, + 2136261, + 2136322, + 2136337, + 2136341, + 2136373, + 2136392, + 2136404, + 2136414, + 2136545, + 2136588, + 2136592, + 2136611, + 2136641, + 2136657, + 2136765, + 2136766, + 2136833, + 2136841, + 2136843, + 2136845, + 2136846, + 2136857, + 2136885, + 2136904, + 2136917, + 2136936, + 2136960, + 2136966, + 2136976, + 2136989, + 2137008, + 2137023, + 2137032, + 2137087, + 2137090, + 2137116, + 2137141, + 2137156, + 2137174, + 2137185, + 2137192, + 2137392, + 2137405, + 2137450, + 2137467, + 2137573, + 2137577, + 2137587, + 2137722, + 2137730, + 2137731, + 2137732, + 2137776, + 2137828, + 2137840, + 2137842, + 2137865, + 2137871, + 2137876, + 2137883, + 2137890, + 2137894, + 2137898, + 2137899, + 2137908, + 2137946, + 2137967, + 2138014, + 2138021, + 2228469, + 2248196, + 2248690, + 2260339, + 2118029, + 4216196, + 4218722, + 4219208, + 4220959, + 2133716, + 2110942, + 2138047, + 2138048, + 2138049, + 2138050, + 2269874, + 4214286, + 4214310, + 2228568, + 4214643, + 4214870, + 4215021, + 4215147, + 2229681, + 8409566, + 4215293, + 2229996, + 4215396, + 4215409, + 6312562, + 4215615, + 2275155, + 4215872, + 2231640, + 4216220, + 6313387, + 4216329, + 6313646, + 8410798, + 2275162, + 2275164, + 4216526, + 4216558, + 4216790, + 4216893, + 4216921, + 4217167, + 6314321, + 4217184, + 4217186, + 4217562, + 4217690, + 4217715, + 4217724, + 8412083, + 2251212, + 4218435, + 2275190, + 6315747, + 4218680, + 4218785, + 4218845, + 4219234, + 6316466, + 4219384, + 2111908, + 2111928, + 2240066, + 2275196, + 4220150, + 2112092, + 2230216, + 4220254, + 2240491, + 4220295, + 4220297, + 2259380, + 4220302, + 2112196, + 2112203, + 4220385, + 4220519, + 4220526, + 6317761, + 2275202, + 2112133, + 4220672, + 4220769, + 4220868, + 4220930, + 4221245, + 4221278, + 2275211, + 4221596, + 2112499, + 2242545, + 2275220, + 4222008, + 6319274, + 2138060, + 4222436, + 2112817, + 4222472, + 4222578, + 6319819, + 4222677, + 4222683, + 4222811, + 6319963, + 4222820, + 4222836, + 2244683, + 4223550, + 2113088, + 2111649, + 6321098, + 4224189, + 4224349, + 4224444, + 2275244, + 4224520, + 4224612, + 4224617, + 2275247, + 4224823, + 4224894, + 4225447, + 4225457, + 4225726, + 4226016, + 6323280, + 4226313, + 4226482, + 6323634, + 4226878, + 6324193, + 4227090, + 2275273, + 4227286, + 4227337, + 4227369, + 4227596, + 4227611, + 4227648, + 2275279, + 4228052, + 4228111, + 2275282, + 4228330, + 2256030, + 4228433, + 4228451, + 4228559, + 4228686, + 4228706, + 4228746, + 4229186, + 4229239, + 4229441, + 4229974, + 6327126, + 4229980, + 2115359, + 2260028, + 4230250, + 4230265, + 6327498, + 4230503, + 2115614, + 4230915, + 6328132, + 6328261, + 6328276, + 4231158, + 6328439, + 8425591, + 31494281, + 16814218, + 4231336, + 4231501, + 4231913, + 4231989, + 4232075, + 2275312, + 4232653, + 4232746, + 6330008, + 4232871, + 8427519, + 10524671, + 2275173, + 4233505, + 8427863, + 4234152, + 4234158, + 4234169, + 4234248, + 4234276, + 4234299, + 2275341, + 4234470, + 4234688, + 4234690, + 2275351, + 6330607, + 4339773, + 6322952, + 4220015, + 6323262, + 4225909, + 6321429, + 6326813, + 6316130, + 4223096, + 12604329, + 4226178, + 4232857, + 4228692, + 4227441, + 4232053, + 4215980, + 4223713, + 4221079, + 4234155, + 4215753, + 4220758, + 4224294, + 8418577, + 4225736, + 4219706, + 6328385, + 4233665, + 4220327, + 4231644, + 4233133, + 4227730, + 6323326, + 4223546, + 6326277, + 4228867, + 2136861, + 2136876, + 2117634, + 2118110, + 2118407, + 2120684, + 4218570, + 2123294, + 2123543, + 2125898, + 4215262, + 2119009, + 2124858, + 2128480, + 2253644, + 2131971, + 2135467, + 2135893, + 2268733, + 2270746, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + 6319778, + 8413682, + 6325778, + 4230015, + 2117173, + 2117212, + 2117219, + 2117224, + 2117236, + 2117237, + 2117271, + 2117295, + 2117339, + 2117346, + 2117352, + 2117359, + 2117374, + 2117378, + 2117384, + 2117394, + 2117399, + 2117427, + 2117429, + 2117440, + 2117442, + 2117451, + 2117452, + 2117458, + 2117475, + 2117486, + 2117489, + 2117497, + 2117505, + 2117513, + 2117516, + 2117518, + 2117520, + 2117523, + 2117529, + 2117535, + 2117561, + 2117563, + 2117564, + 2117565, + 2117568, + 2117569, + 2117574, + 2117576, + 2117580, + 2117596, + 2117602, + 2117616, + 2117628, + 2117639, + 2117642, + 2117655, + 2117661, + 2117680, + 2117682, + 2117683, + 2117685, + 2117701, + 2117706, + 2117713, + 2117714, + 2117721, + 2117728, + 2117735, + 2117741, + 2117745, + 2117761, + 2117763, + 2117764, + 2117766, + 2117770, + 2117776, + 2117787, + 2117791, + 2117792, + 2117793, + 2117807, + 2117808, + 2117817, + 2117821, + 2117824, + 2117843, + 2117852, + 2117853, + 2117855, + 2117858, + 2117860, + 2117878, + 2117882, + 4215026, + 2117913, + 2117916, + 2117917, + 2117923, + 2117927, + 2117928, + 2117932, + 2117933, + 2117935, + 2117937, + 2117940, + 2117945, + 2117954, + 2117967, + 2117971, + 2117976, + 2117990, + 2118014, + 2118030, + 2118079, + 2118082, + 2118098, + 2118101, + 2118117, + 2118130, + 2118135, + 2118168, + 2118178, + 2118213, + 2118232, + 2118239, + 2118272, + 2118277, + 2118293, + 2118294, + 2118295, + 2118298, + 2118309, + 2118311, + 2118320, + 2118326, + 2118327, + 2118328, + 2118333, + 2118340, + 2118342, + 2118351, + 2118356, + 2118364, + 2118373, + 2118376, + 2118378, + 2118380, + 2118388, + 2118390, + 2118412, + 2118419, + 2118424, + 2118427, + 2118430, + 2118437, + 2118439, + 2118440, + 2118441, + 2118443, + 2118444, + 2118448, + 2118460, + 2118489, + 2118491, + 4215653, + 2118531, + 2118535, + 2118536, + 2118542, + 2118561, + 2118581, + 2118584, + 2118589, + 2118607, + 2118610, + 2118611, + 2118622, + 4215776, + 2118631, + 2118658, + 2118682, + 2118689, + 2118703, + 2118724, + 2118727, + 2118735, + 2118750, + 2118756, + 2118759, + 2118761, + 2118765, + 2118766, + 2118785, + 2118787, + 2118789, + 2118793, + 2118801, + 2118815, + 2118858, + 2118880, + 2118902, + 2118910, + 2118924, + 2118925, + 2118962, + 2118971, + 2118973, + 2118985, + 2118989, + 2119000, + 2119002, + 2119003, + 2119039, + 2119059, + 2119063, + 2119075, + 2119105, + 2119115, + 2119127, + 2119128, + 2119134, + 2119167, + 4216325, + 2119178, + 2119193, + 2119219, + 2119228, + 2119233, + 2119235, + 2119236, + 2119238, + 2119265, + 2119266, + 2119267, + 2119285, + 2119300, + 2119307, + 2119335, + 2119339, + 2119358, + 2119371, + 2119376, + 2119388, + 2119397, + 2119398, + 2119399, + 2119425, + 2119426, + 2119441, + 2119456, + 2119458, + 2119460, + 2119461, + 2119466, + 2119487, + 2119506, + 2119522, + 2119527, + 2119534, + 2119537, + 2119545, + 2119550, + 2119553, + 2119572, + 2119577, + 2119583, + 2119585, + 2119573, + 2119591, + 2119593, + 2119613, + 2119645, + 2119657, + 2119678, + 2119683, + 2119688, + 2119649, + 2119692, + 2119707, + 2119711, + 2119725, + 2119743, + 2119760, + 2119765, + 2119784, + 2119800, + 2119815, + 2119816, + 2119820, + 2119830, + 2119840, + 2119841, + 2119842, + 2119846, + 2119876, + 2119874, + 2119880, + 2119894, + 2119901, + 2119905, + 4217094, + 2119954, + 2119955, + 2119965, + 2119969, + 2119976, + 2119984, + 2119987, + 2119989, + 2119990, + 2119999, + 2120003, + 2120018, + 2120030, + 2120043, + 2120047, + 2120050, + 2120059, + 2120076, + 2120078, + 2120085, + 2120103, + 2120109, + 2120112, + 2120119, + 2120129, + 2120132, + 2120175, + 2120178, + 2120180, + 2120183, + 2120192, + 2120206, + 2120210, + 2120222, + 2120228, + 2120232, + 2120234, + 2120240, + 2120260, + 2120261, + 2120264, + 2120268, + 2120272, + 2120286, + 2120315, + 2120336, + 2120339, + 2120342, + 2120345, + 2120379, + 2120390, + 2120392, + 2120399, + 2120445, + 2120449, + 2120523, + 2120542, + 2120558, + 2120582, + 2120590, + 2120592, + 2120593, + 2120596, + 2120616, + 2120617, + 2120621, + 2120623, + 2120625, + 2120626, + 2120634, + 2120636, + 2120641, + 2120653, + 2120655, + 2120665, + 2120666, + 2120687, + 2120692, + 2120716, + 2120727, + 2120742, + 2120750, + 2120754, + 2120757, + 2120794, + 2120820, + 2120821, + 2120827, + 2120829, + 2120839, + 2120850, + 2120861, + 2120882, + 2120884, + 2120919, + 2120942, + 2120945, + 2120946, + 2120978, + 2120995, + 2121023, + 2121032, + 2121045, + 2121041, + 2121055, + 2121056, + 2121058, + 2121060, + 2121081, + 2121082, + 2121087, + 2121098, + 2121107, + 2121109, + 2121115, + 2121119, + 2121131, + 2121155, + 2121166, + 2121177, + 2121223, + 2121229, + 2121248, + 2121291, + 2121296, + 2121297, + 2121308, + 2121328, + 2121358, + 2121378, + 2121380, + 2121393, + 2121420, + 2121422, + 2121436, + 2121438, + 2121445, + 2121451, + 2121478, + 2121497, + 2121508, + 2121515, + 2121516, + 2121518, + 2121520, + 2121535, + 2121540, + 2121563, + 2121568, + 2121583, + 2121588, + 2121589, + 2121592, + 2121594, + 2121613, + 2121622, + 2121629, + 2121643, + 2121648, + 2121649, + 2121672, + 2121680, + 2121681, + 2121704, + 2121708, + 2121714, + 2121718, + 2121722, + 2121738, + 2121747, + 2121759, + 2121773, + 2121792, + 2121800, + 2121809, + 2121814, + 2121815, + 2121841, + 2121854, + 2121858, + 2121862, + 2121864, + 2121870, + 2121873, + 2121875, + 2121880, + 4219038, + 2121890, + 2121893, + 2121911, + 2121922, + 2121929, + 2121930, + 2121934, + 2121935, + 2121954, + 2121957, + 2121980, + 2121986, + 2121991, + 2121996, + 2122007, + 2122018, + 2122033, + 2122037, + 2122041, + 2122053, + 2122057, + 2122092, + 2122098, + 2122104, + 2122112, + 2122113, + 2122115, + 2122116, + 2122123, + 2122140, + 2122144, + 2122154, + 2122176, + 2122177, + 2122190, + 2122191, + 2122206, + 2122209, + 2122215, + 2122217, + 2122220, + 2122221, + 2122223, + 2122241, + 2122243, + 2122268, + 2122272, + 2122279, + 2122283, + 2122306, + 2122308, + 2122320, + 2122324, + 2122332, + 2122365, + 2122381, + 2122382, + 2122383, + 2122419, + 2122422, + 2122423, + 2122426, + 2122430, + 2122431, + 2122446, + 2122474, + 2122482, + 2122500, + 2122507, + 2122515, + 2122537, + 2122541, + 2122570, + 2122578, + 2122580, + 2122584, + 2122587, + 2122598, + 2122605, + 2122616, + 2122645, + 2122650, + 2122660, + 2122662, + 2122669, + 2122689, + 2122693, + 2122696, + 2122702, + 2122707, + 2122739, + 2122762, + 2122800, + 2122827, + 2122831, + 2122835, + 2122844, + 2122849, + 2122851, + 2122885, + 2122895, + 2122907, + 2122913, + 2122915, + 2122918, + 2122920, + 2122941, + 2122953, + 2122961, + 2122985, + 2122986, + 2122997, + 2123009, + 2123016, + 2123017, + 2123018, + 2123027, + 2123046, + 2123057, + 2123066, + 2123068, + 2123069, + 2123075, + 2123088, + 2123090, + 2123103, + 2123133, + 2123160, + 2123168, + 2123171, + 2123174, + 2123182, + 2123187, + 2123222, + 2123224, + 4220383, + 2123252, + 2123253, + 2123262, + 2123263, + 2123277, + 2123281, + 2123282, + 2123286, + 2123293, + 2123299, + 2123302, + 2123305, + 2123321, + 2123319, + 2123328, + 2123334, + 2123338, + 2123352, + 2123360, + 2123381, + 2123391, + 2123385, + 2123388, + 2123418, + 2123419, + 2123420, + 2123423, + 4220597, + 2123458, + 2123459, + 2123468, + 2123470, + 2123476, + 2123487, + 2123499, + 2123502, + 2123527, + 2123548, + 2123552, + 2123554, + 2123582, + 2123589, + 2123628, + 2123652, + 2123662, + 2123670, + 2123673, + 2123708, + 2123709, + 2123714, + 2123717, + 2123721, + 2123740, + 2123745, + 2123750, + 2123762, + 2123766, + 2123796, + 2123801, + 2123815, + 2123823, + 2123839, + 2123850, + 2123864, + 2123887, + 2123888, + 2123889, + 2123897, + 2123899, + 2123912, + 2123937, + 2123945, + 2123950, + 2123985, + 2123987, + 2123996, + 2123997, + 2124010, + 2124022, + 2124029, + 2124038, + 2124041, + 2124048, + 2124054, + 2124081, + 2124101, + 2124110, + 2124134, + 2124144, + 2124145, + 2124155, + 2124173, + 2124193, + 2124216, + 2124229, + 2124232, + 4221438, + 2124288, + 2124291, + 2124320, + 2124324, + 2124343, + 4221525, + 2124394, + 2124417, + 2124422, + 2124423, + 2124443, + 2124464, + 2124465, + 2124468, + 2124478, + 2124479, + 2124492, + 2124501, + 2124502, + 2124528, + 2124540, + 2124546, + 2124550, + 2124551, + 2124553, + 2124584, + 2124587, + 2124598, + 2124621, + 2124626, + 2124637, + 2124651, + 2124654, + 2124656, + 2124677, + 2124695, + 2124703, + 2124704, + 2124706, + 2124707, + 2124712, + 2124716, + 2124728, + 2124729, + 2124739, + 2124740, + 2124771, + 2124818, + 2124825, + 2124831, + 2124838, + 2124839, + 2124840, + 2124846, + 2124859, + 2124875, + 2124879, + 2124907, + 2124920, + 2124935, + 2124959, + 2124976, + 2124978, + 2125005, + 2125007, + 2125009, + 2125031, + 2125042, + 2125044, + 2125063, + 2125071, + 2125075, + 2125082, + 2125096, + 2125151, + 2125159, + 2125202, + 2125207, + 2125239, + 2125245, + 2125280, + 2125282, + 2125285, + 2125295, + 2125300, + 2125312, + 2125316, + 2125371, + 2125394, + 2125405, + 2125410, + 2125416, + 2125453, + 2125465, + 2125472, + 2125485, + 2125486, + 2125491, + 2125499, + 2125504, + 2125512, + 2125517, + 2125519, + 2125549, + 2125550, + 2125572, + 2125576, + 2125581, + 2125590, + 2125595, + 2125627, + 2125613, + 2125647, + 2125651, + 2125661, + 2125676, + 2125699, + 2125715, + 2125734, + 2125744, + 2125765, + 2125800, + 2125821, + 2125847, + 2125871, + 2125876, + 2125879, + 2125892, + 2125896, + 2125909, + 2125972, + 2125974, + 2125979, + 2126004, + 2126074, + 2126085, + 2126091, + 2126125, + 2126136, + 2126145, + 2126155, + 4223314, + 2126167, + 2126170, + 2126220, + 2126234, + 2126256, + 2126271, + 2126272, + 2126284, + 2126298, + 2126328, + 2126344, + 2126345, + 2126355, + 2126362, + 2126372, + 2126383, + 2126405, + 2126414, + 2126430, + 2126443, + 2126449, + 2126459, + 2126460, + 2126473, + 2126483, + 2126504, + 2126549, + 2126550, + 2126552, + 2126559, + 2126590, + 2126605, + 2126611, + 2126642, + 2126645, + 2126678, + 2126685, + 2126686, + 2126687, + 2126688, + 2126697, + 2126713, + 2126720, + 2126734, + 2126736, + 2126739, + 2126743, + 2126762, + 2126765, + 2126790, + 2126796, + 2126803, + 2126813, + 2126822, + 2126839, + 2126843, + 2126847, + 2126848, + 2126865, + 2126893, + 2126951, + 2126952, + 2126958, + 2126991, + 2126993, + 2127002, + 2127022, + 2127025, + 2127026, + 2127052, + 2127056, + 2127059, + 4224216, + 2127067, + 2127080, + 2127082, + 4224239, + 2127100, + 2127110, + 2127122, + 2127143, + 2127145, + 2127158, + 2127161, + 2127171, + 2127175, + 2127191, + 2127199, + 2127201, + 2127227, + 2127228, + 2127237, + 2127253, + 2127260, + 2127290, + 2127378, + 2127395, + 2127401, + 2127417, + 2127418, + 2127424, + 2127428, + 2127449, + 2127493, + 2127500, + 2127501, + 2127519, + 2127522, + 2127523, + 2127553, + 2127563, + 4224724, + 2127584, + 2127606, + 2127622, + 2127634, + 2127636, + 2127637, + 2127644, + 2127662, + 2127677, + 2127682, + 2127698, + 2127702, + 2127703, + 2127728, + 2127731, + 2127732, + 4224909, + 4224930, + 2127790, + 2127793, + 2127797, + 2127811, + 2127826, + 2127829, + 2127864, + 2127886, + 2127889, + 2127901, + 2127907, + 2127940, + 2127944, + 2127948, + 2127954, + 2127966, + 2127968, + 2127969, + 2127971, + 2128015, + 2128040, + 2128044, + 2128050, + 2128061, + 2128063, + 2128071, + 2128082, + 2128086, + 2128091, + 2128095, + 2128106, + 2128115, + 2128118, + 2128127, + 2128134, + 2128154, + 2128158, + 2128160, + 2128169, + 2128173, + 2128181, + 2128196, + 2128203, + 2128207, + 2128209, + 2128233, + 2128251, + 2128254, + 2128268, + 2128273, + 2128275, + 2128284, + 2128296, + 2128303, + 2128335, + 2128349, + 2128352, + 2128354, + 2128357, + 2128369, + 2128376, + 2128380, + 2128391, + 2128417, + 2128423, + 2128427, + 2128431, + 2128436, + 2128437, + 2128456, + 2128469, + 2128485, + 2128510, + 2128523, + 2128529, + 2128542, + 2128585, + 2128603, + 2128617, + 2128620, + 2128625, + 2128635, + 2128671, + 2128675, + 2128681, + 2128688, + 2128692, + 2128703, + 2128704, + 2128746, + 2128772, + 2128777, + 2128782, + 2128790, + 2128805, + 2128818, + 2128822, + 2128826, + 2128827, + 2128829, + 2128834, + 2128840, + 2128859, + 2128884, + 2128885, + 2128889, + 2128890, + 2128898, + 2128900, + 2128902, + 2128908, + 2128921, + 2128923, + 2128933, + 2128940, + 2128948, + 2128953, + 2128954, + 2128966, + 2128981, + 2128986, + 2128995, + 4226153, + 2129020, + 2129030, + 2129072, + 2129083, + 2129103, + 2129108, + 2129129, + 2129167, + 2129169, + 2129174, + 2129190, + 2129194, + 2129197, + 2129233, + 2129239, + 2129253, + 2129255, + 2129272, + 2129275, + 2129281, + 2129302, + 2129347, + 2129348, + 2129349, + 2129350, + 2129357, + 2129358, + 2129408, + 2129378, + 2129386, + 2129389, + 2129402, + 2129436, + 2129453, + 2129459, + 2129471, + 2129486, + 2129488, + 2129496, + 2129503, + 2129509, + 2129557, + 2129565, + 2129566, + 2129727, + 2129756, + 2129766, + 4226944, + 2129805, + 2129807, + 2129830, + 2129834, + 2129844, + 2129852, + 2129856, + 2129864, + 2129896, + 2129935, + 2129939, + 2129949, + 2129951, + 2129952, + 2129966, + 2129972, + 2129982, + 2129984, + 2129988, + 2130020, + 2130029, + 2130049, + 2130105, + 2130120, + 2130125, + 2130130, + 2130158, + 2130162, + 2130166, + 2130169, + 2130187, + 2130204, + 2130208, + 2130236, + 2130245, + 2130247, + 2130258, + 2130273, + 2130295, + 2130310, + 2130318, + 2130326, + 2130338, + 2130350, + 2130373, + 2130382, + 2130411, + 2130416, + 2130417, + 2130418, + 2130421, + 2130424, + 4227584, + 2130447, + 2130461, + 2130472, + 2130499, + 2130510, + 2130513, + 2130518, + 2130535, + 2130555, + 2130560, + 2130561, + 2130567, + 2130580, + 2130582, + 2130584, + 2130586, + 2130587, + 2130592, + 2130650, + 2130656, + 2130660, + 2130669, + 2130698, + 2130699, + 2130718, + 2130719, + 2130721, + 2130732, + 2130734, + 2130739, + 2130743, + 2130749, + 2130754, + 2130765, + 2130766, + 2130800, + 2130816, + 2130818, + 2130820, + 2130841, + 2130844, + 2130854, + 2130860, + 2130878, + 2130771, + 2130920, + 2130969, + 2130861, + 2130991, + 2131013, + 2131015, + 2131021, + 2131030, + 4228188, + 2131040, + 2131044, + 2131047, + 2131050, + 2131060, + 2131069, + 2131090, + 2131093, + 2131113, + 2131114, + 2131143, + 2131144, + 2131148, + 2131186, + 2131191, + 2131202, + 2131203, + 2131207, + 2131214, + 2131216, + 2131228, + 2131234, + 2131239, + 2131242, + 2131251, + 2131254, + 2131263, + 2131280, + 2131282, + 2131292, + 4228445, + 2131295, + 2131296, + 2131321, + 2131337, + 2131339, + 2131360, + 2131365, + 2131367, + 2131380, + 2131382, + 2131384, + 2131389, + 2131390, + 2131391, + 2131394, + 2131418, + 2131424, + 2131432, + 2131443, + 2131452, + 2131469, + 2131470, + 2131481, + 2131483, + 2131510, + 2131514, + 2131517, + 2131544, + 2131545, + 2131549, + 2131552, + 2131553, + 2131556, + 2131561, + 2131574, + 2131606, + 2131610, + 2131617, + 2131622, + 2131629, + 2131636, + 2131637, + 2131639, + 2131641, + 2131647, + 2131653, + 2131666, + 2131674, + 2131676, + 2131680, + 2131685, + 2131687, + 2131592, + 2131716, + 2131727, + 2131759, + 2131762, + 2131772, + 2131773, + 2131781, + 2131789, + 2131809, + 2131823, + 2131843, + 2131844, + 2131845, + 2131846, + 2131856, + 2131861, + 4229027, + 2131889, + 2131912, + 2131914, + 2131925, + 2131929, + 2131932, + 2131938, + 2131940, + 2131953, + 2131955, + 2131960, + 2131962, + 2131967, + 2131977, + 2131993, + 2131986, + 2131994, + 2131998, + 2132016, + 2132021, + 2132033, + 2132035, + 2132040, + 2132041, + 4229195, + 2132049, + 2132060, + 2132064, + 2132081, + 2132089, + 2132091, + 2132096, + 2132127, + 2132136, + 2132154, + 2132171, + 2132172, + 2132190, + 2132199, + 2132215, + 2132237, + 2132245, + 2132246, + 2132256, + 2132264, + 2132273, + 2132282, + 2132294, + 2132303, + 2132306, + 2132311, + 2132315, + 2132321, + 2132323, + 2132334, + 2132339, + 2132341, + 2132346, + 2132349, + 2132365, + 2132373, + 2132379, + 2132380, + 2132384, + 2132404, + 2132406, + 2132439, + 2132457, + 2132461, + 2132473, + 2132484, + 2132485, + 2132510, + 2132512, + 2132516, + 2132518, + 2132523, + 2132524, + 2132527, + 2132541, + 2132544, + 2132547, + 2132563, + 2132566, + 2132572, + 2132581, + 2132598, + 2132599, + 2132602, + 2132603, + 2132608, + 2132611, + 2132619, + 2132623, + 2132626, + 2132631, + 2132633, + 2132639, + 2132649, + 2132655, + 2132659, + 2132667, + 2132675, + 2132678, + 2132680, + 2132682, + 2132691, + 2132692, + 2132693, + 2132720, + 2132735, + 2132747, + 2132766, + 2132784, + 2132796, + 2132802, + 2132808, + 2132813, + 2132835, + 2132857, + 2132868, + 2132877, + 2132879, + 2133048, + 2133054, + 2133073, + 2133080, + 2133083, + 2133085, + 2133081, + 2133091, + 2133092, + 2133094, + 2133109, + 2133110, + 2133118, + 2133126, + 2133127, + 2133131, + 2133136, + 4230299, + 2133148, + 2133177, + 2133190, + 2133195, + 2133199, + 2133213, + 2133224, + 2133231, + 2133234, + 2133247, + 2133349, + 2133375, + 2133378, + 2133384, + 2133392, + 2133406, + 2133408, + 2133420, + 2133429, + 2133431, + 2133433, + 2133435, + 2133440, + 2133445, + 2133447, + 2133450, + 2133460, + 2133477, + 2133488, + 2133436, + 2133508, + 2133509, + 2133521, + 2133555, + 2133559, + 2133560, + 2133582, + 2133595, + 2133597, + 2133598, + 2133625, + 2133634, + 2133635, + 2133659, + 2133661, + 2133666, + 2133690, + 2133697, + 2133699, + 2133700, + 2133703, + 2133724, + 2133742, + 2133745, + 2133751, + 2133741, + 2133762, + 2133775, + 2133776, + 2133782, + 2133792, + 2133793, + 2133795, + 2133800, + 2133806, + 2133812, + 2133815, + 2133825, + 2133839, + 2133842, + 2133843, + 2133853, + 2133854, + 2133861, + 2133917, + 2133944, + 2133950, + 2133952, + 2133963, + 2133968, + 2133970, + 2133987, + 2134014, + 2134040, + 2134056, + 2134057, + 2134058, + 2134067, + 2134068, + 2134079, + 2134114, + 2134118, + 2134124, + 2134158, + 2134181, + 2134220, + 2134229, + 2134232, + 2134233, + 2134245, + 2134226, + 2134280, + 2134285, + 2134288, + 2134298, + 2134304, + 2134313, + 2134318, + 2134326, + 2134332, + 2134339, + 2134351, + 2134355, + 2134381, + 2134395, + 2134401, + 2134406, + 2134419, + 2134420, + 2134424, + 2134433, + 2134438, + 2134463, + 2134483, + 2134484, + 2134489, + 2134505, + 2134506, + 2134511, + 2134521, + 2134525, + 2134532, + 2134533, + 2134540, + 2134546, + 2134547, + 2134552, + 2134556, + 2134557, + 2134564, + 2134565, + 2134566, + 2134574, + 2134575, + 2134576, + 2134581, + 2134582, + 2134590, + 2134598, + 2134605, + 2134616, + 2134620, + 2134621, + 2134633, + 2134638, + 2134639, + 2134640, + 2134645, + 2134649, + 2134651, + 2134666, + 2134674, + 2134688, + 2134692, + 2134693, + 2134696, + 2134710, + 2134712, + 2134714, + 2134717, + 2134727, + 2134733, + 2134744, + 2134748, + 2134749, + 2134753, + 2134755, + 2134760, + 2134764, + 2134766, + 2134768, + 2134784, + 2134792, + 2134812, + 2134820, + 2134826, + 2134836, + 2134839, + 2134864, + 2134869, + 2134878, + 2134887, + 2134889, + 2134895, + 2134900, + 2134902, + 2134906, + 2134909, + 2134912, + 2134913, + 2134925, + 2134930, + 2134933, + 2134936, + 4232097, + 2134950, + 2134952, + 2134955, + 2134964, + 2134965, + 2134966, + 2134980, + 2134981, + 2134985, + 2134987, + 2134989, + 2134995, + 2135001, + 2135031, + 2135041, + 2135048, + 2135061, + 2135071, + 2135087, + 2135101, + 2135107, + 2135129, + 2135132, + 2135135, + 2135137, + 2135144, + 2135150, + 2135172, + 2135171, + 2135422, + 2135428, + 2135453, + 2135454, + 2135482, + 2135513, + 2135517, + 2135519, + 2135582, + 2135586, + 2135589, + 2135590, + 2135607, + 2135609, + 2135610, + 2135634, + 2135638, + 2135639, + 2135662, + 2135676, + 2135678, + 2135697, + 2135711, + 2135718, + 2135754, + 4232922, + 2135775, + 2135802, + 2135813, + 2135834, + 2135837, + 4232993, + 2135882, + 2135896, + 2135927, + 2135928, + 2135931, + 2135936, + 2135945, + 2135959, + 2135992, + 2135996, + 2135999, + 2136004, + 2136005, + 2136007, + 2136010, + 2136014, + 2136016, + 2136023, + 2136029, + 2136036, + 2136055, + 2136056, + 2136058, + 2136089, + 2136092, + 2136096, + 2136111, + 2136117, + 2136132, + 2136138, + 2136145, + 2136170, + 2136238, + 2136268, + 2136294, + 2136310, + 2136327, + 2136351, + 2136354, + 2136358, + 2136363, + 2136372, + 2136377, + 2136391, + 2136409, + 2136411, + 2136475, + 2136477, + 2136479, + 2136496, + 2136498, + 2136501, + 2136531, + 2136538, + 2136540, + 2136551, + 2136554, + 2136555, + 2136556, + 2136564, + 2136565, + 2136573, + 2136574, + 2136580, + 2136587, + 2136606, + 2136610, + 2136627, + 2136629, + 2136647, + 4233802, + 2136651, + 2136660, + 2136669, + 2136746, + 2136748, + 2136750, + 2136754, + 2136756, + 2136763, + 2136767, + 2136776, + 2136791, + 2136795, + 2136804, + 2136807, + 2136812, + 2136818, + 2136819, + 2136821, + 2136826, + 2136829, + 2136831, + 2136832, + 2136836, + 2136837, + 2136859, + 2136870, + 4234037, + 2136887, + 2136889, + 2136890, + 2136908, + 2136918, + 2136919, + 2136923, + 2136929, + 2136938, + 2136941, + 2136942, + 2136952, + 2136959, + 2136965, + 2136967, + 2136969, + 2136971, + 2136973, + 2136980, + 2136986, + 2137001, + 2137015, + 2137020, + 2137040, + 2137081, + 2137103, + 2137105, + 2137118, + 2137126, + 2137128, + 2137149, + 2137155, + 2137166, + 2137182, + 2137211, + 2137335, + 2137337, + 2137372, + 2137391, + 2137395, + 2137396, + 2137402, + 2137404, + 2137413, + 2137427, + 2137428, + 2137445, + 2137475, + 2137478, + 2137486, + 2137490, + 2137491, + 2137493, + 2137495, + 2137496, + 2137514, + 2137518, + 4234687, + 2137546, + 2137556, + 2137557, + 2137566, + 2137582, + 2137584, + 2137598, + 2137614, + 2137616, + 2137617, + 2137618, + 2137622, + 2137735, + 2137742, + 2137743, + 2137750, + 2137752, + 2137774, + 2137779, + 2137798, + 2137800, + 2137803, + 2137813, + 2137836, + 2137837, + 2137841, + 2137845, + 2137848, + 2137873, + 2137878, + 2137882, + 2137887, + 2137905, + 2137906, + 2137916, + 2137919, + 2137923, + 2137924, + 2137927, + 2137942, + 2137950, + 2137966, + 2137971, + 2137978, + 2137981, + 2137999, + 2138001, + 2138002, + 2138006, + 2138017, + 2138019, +}} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua index 93e92ab5dec..531a5c75433 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua @@ -207,6 +207,7 @@ local function check_box(box_ptr, box_end) if getfield(p, 'shift')==0 then last_char = nil if check_box(getlist(p), nil) then found_visible_node = true end + find_first_char = false else find_first_char = false; last_char = nil end @@ -832,7 +833,9 @@ do end get_kanjiskip = function() - if Np.auto_kspc or Nq.auto_kspc then + if Np.auto_kspc==0 or Nq.auto_kspc==0 then + return nil + elseif Np.auto_kspc or Nq.auto_kspc then local pm, qm = Np.met, Nq.met if (pm.char_type==qm.char_type) and (qm.var==pm.var) then return get_kanjiskip_low(true, qm, 1, 1, 1) @@ -841,7 +844,7 @@ do local ga = get_kanjiskip_low(true, pm, 1, 1, 1) return calc_ja_ja_aux(gb, ga, 0, 1) end - else + else local g = node_new(id_glue) set_attr(g, attr_icflag, kanjiskip_jfm_flag and KANJI_SKIP_JFM or KANJI_SKIP) return g @@ -912,7 +915,9 @@ do end get_xkanjiskip = function(Nn) - if (Nq.xspc>=2) and (Np.xspc%2==1) and (Nq.auto_xspc or Np.auto_xspc) then + if Np.auto_xspc==0 or Nq.auto_xspc==0 then + return nil + elseif (Nq.xspc>=2) and (Np.xspc%2==1) and (Nq.auto_xspc or Np.auto_xspc) then return get_xkanjiskip_low(true, Nn.met, 1, 1, 1) else local g = node_new(id_glue) @@ -924,18 +929,44 @@ end -------------------- 隣接した「塊」間の処理 +local function combine_spc(name) + return (Np[name] or Nq[name]) and ((Np[name]~=0) and (Nq[name]~=0)) +end + +-- NA, NB: alchar or math +local function get_NA_skip() + local pm = Np.met + local g, _, kn, kp, kh = new_jfm_glue( + pm.char_type, + fast_find_char_class( + (Nq.id == id_math and -1 or (Nq.xspc>=2 and 'alchar' or 'nox_alchar')), pm), + Np.class) + local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc('auto_xspc')) + and get_xkanjiskip_low(false, pm, kn, kp, kh) + return g, k +end +local function get_NB_skip() + local qm = Nq.met + local g, _, kn, kp, kh = new_jfm_glue( + qm.char_type, Nq.class, + fast_find_char_class( + (Np.id == id_math and -1 or (Np.xspc%2==1 and 'alchar' or 'nox_alchar')), qm) + ) + local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc('auto_xspc')) + and get_xkanjiskip_low(false, qm, kn, kp, kh) + return g, k +end + local function get_OA_skip(is_kanji) local pm = Np.met local g, _, kn, kp, kh = new_jfm_glue( pm.char_type, - fast_find_char_class((Nq.id == id_math and -1 or 'jcharbdd'), pm), + fast_find_char_class( + (((Nq.id==id_glue)or(Nq.id==id_kern)) and 'glue' or 'jcharbdd'), pm), Np.class) local k if is_kanji==0 then - k = (Np.auto_kspc or Nq.auto_kspc) and get_kanjiskip_low(false, pm, kn, kp, kh) - elseif is_kanji==1 then - k = ((Nq.xspc>=2) and (Np.xspc%2==1) and (Nq.auto_xspc or Np.auto_xspc)) - and get_xkanjiskip_low(false, pm, kn, kp, kh) + k = combine_spc('auto_kspc') and get_kanjiskip_low(false, pm, kn, kp, kh) end return g, k end @@ -943,13 +974,11 @@ local function get_OB_skip(is_kanji) local qm = Nq.met local g, _, kn, kp, kh = new_jfm_glue( qm.char_type, Nq.class, - fast_find_char_class((Np.id == id_math and -1 or'jcharbdd'), qm)) + fast_find_char_class( + (((Np.id==id_glue)or(Np.id==id_kern)) and 'glue' or 'jcharbdd'), qm)) local k if is_kanji==0 then - k = (Np.auto_kspc or Nq.auto_kspc) and get_kanjiskip_low(false, qm, kn, kp, kh) - elseif is_kanji==1 then - k = ((Nq.xspc>=2) and (Np.xspc%2==1) and (Nq.auto_xspc or Np.auto_xspc)) - and get_xkanjiskip_low(false, qm, kn, kp, kh) + k = combine_spc('auto_kspc') and get_kanjiskip_low(false, qm, kn, kp, kh) end return g, k end @@ -970,7 +999,7 @@ local function handle_np_jachar(mode) handle_penalty_normal(0, Np.pre, g); real_insert(g); real_insert(k) elseif Nq.pre then local g, k - if non_ihb_flag then g, k = get_OA_skip(1) end -- O_A->X + if non_ihb_flag then g, k = get_NA_skip() end -- N_A->X if not g then g = get_xkanjiskip(Np) end handle_penalty_normal((qid==id_hlist and 0 or Nq.post), Np.pre, g); real_insert(g); real_insert(k) @@ -991,7 +1020,7 @@ end -- jachar .. (anything) local function handle_nq_jachar() if Np.pre then - local g = non_ihb_flag and get_OB_skip(1) or get_xkanjiskip(Nq) -- O_B->X + local g = non_ihb_flag and get_NB_skip() or get_xkanjiskip(Nq) -- N_B->X handle_penalty_normal(Nq.post, (Np.id==id_hlist and 0 or Np.pre), g); real_insert(g) else local g =non_ihb_flag and (get_OB_skip()) -- O_B @@ -1180,6 +1209,8 @@ end -- main interface function main(ahead, mode, dir) if not ahead then return ahead end + --luatexja.ext_show_node_list(to_node(ahead ), '>B ', print) + --print() head = ahead; local lp, last, par_indented, TEMP = init_var(mode,dir) lp = calc_np(last, lp) @@ -1203,6 +1234,8 @@ function main(ahead, mode, dir) end handle_list_tail(mode, last) end + --luatexja.ext_show_node_list(to_node(ahead ), '>A ', print) + --print() return cleanup(mode, TEMP) end end @@ -1251,10 +1284,10 @@ do Np.first = lp; Np.nuc = lp; Np.last = lp if Nq then if Nq.met then - Np.class = fast_find_char_class('parbdd', Nq.met) + Np.class = fast_find_char_class('boxbdd', Nq.met) end Np.met = Nq.met; Np.pre = 0; Np.post = 0; Np.xspc = 0 - Np.auto_xspc = false + Np.auto_xspc, Np.auto_kspc = 0, 0 end return Np else @@ -1271,7 +1304,7 @@ do Nq.class = fast_find_char_class('parbdd', Np.met) end Nq.met = Np.met; Nq.pre = 0; Nq.post = 0; Nq.xspc = 0 - Nq.auto_xspc = false + Nq.auto_xspc, Nq.auto_kspc = 0, 0 end head = node_remove(head, y) node_free(y) @@ -1283,7 +1316,7 @@ do Nq.class = fast_find_char_class('boxbdd', Np.met) end Nq.met = Np.met; Nq.pre = 0; Nq.post = 0; Nq.xspc = 0 - Nq.auto_xspc = false + Nq.auto_xspc, Nq.auto_kspc = 0, 0 end head = node_remove(head, y) node_free(y) diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua index 77855f5374a..c7f8593e646 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua @@ -155,13 +155,22 @@ function define_jfm(t) if type(x)=='number' then v.kern[j] = {x, 0.5} elseif type(x)=='table' then - v.kern[j] = { x[1], ratio=x.ratio or (x[2] and 0.5*(1+x[2]) or 0.5) } + v.kern[j] = { x[1], (x.ratio or (x[2] and 0.5*(1+x[2]) or 0.5)) } end end t.char_type[i] = v t[i] = nil end end + if t.version<3 then + -- In version 3, 'jcharbdd' is divided into + -- 'alchar': ALchar (or math boundary) + -- 'nox_alchar': ALchar (or math boundary), where xkanjiskip won't inserted + -- 'glue': glue/kern, 'jcharbdd': other cases (和文B, rule, ...) + t.chars.alchar = t.chars.jcharbdd + t.chars.nox_alchar = t.chars.jcharbdd + t.chars.glue = t.chars.jcharbdd + end t = luatexbase.call_callback("luatexja.load_jfm", t, jfm_file_name) t.size_cache = {} defjfm_res = t @@ -804,7 +813,13 @@ do return dest end prepare_fl_data = function (dest, id) - local fl = fontloader.open(id.filename) + local t = fontloader.info(id.filename) + local fl + if t.filename then + fl = fontloader.open(id.filename) + else + fl = fontloader.open(id.filename, id.fullname) + end local ind_to_uni, unicodes = {}, {} for i,v in pairs(id.characters) do ind_to_uni[v.index] = i @@ -856,16 +871,16 @@ end -- do - local cache_ver = 11 + local cache_ver = 12 local checksum = file.checksum local function prepare_extra_data_base(id) if (not id) or (not id.filename) then return end - local bname = file.nameonly(id.filename) + local bname = id.psname or file.nameonly(id.filename) if not font_extra_basename[bname] then -- if the cache is present, read it local newsum = checksum(id.filename) -- MD5 checksum of the fontfile - local v = "extra_" .. string.lower(file.nameonly(id.filename)) + local v = "extra_" .. string.lower(bname) local dat = ltjb.load_cache( v, function (t) return (t.version~=cache_ver) or (t.chksum~=newsum) end @@ -888,8 +903,8 @@ do end end local function prepare_extra_data_font(id, res) - if type(res)=='table' and res.shared and res.filename then - font_extra_info[id] = font_extra_basename[file.nameonly(res.filename)] + if type(res)=='table' and res.shared and (res.psname or res.filename) then + font_extra_info[id] = font_extra_basename[res.psname or file.nameonly(res.filename)] end end luatexbase.add_to_callback( diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty index 16b5c2b38dc..0176d446a70 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty @@ -12,9 +12,10 @@ \def\luatexjalatexLoaded{\endinput} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ltj-latex}[2017/05/05 LaTeX support of LuaTeX-ja] +\ProvidesPackage{ltj-latex}[2017/06/18 LaTeX support of LuaTeX-ja] % LaTeX2e 2017/05/01 で行われる対策 +% 本 sty からは 2018/05/01 削除予定 \ifx\document@default@language \@undefined \let\document@default@language\m@ne \fi @@ -78,6 +79,8 @@ \ltj@asc@temp\let\ltj@asc@temp=\relax }{}}% ascmac \ltj@pkgpatch{stfloats} +\ltj@pkgpatch{preview} +\ltj@pkgpatch{array} \RequirePackage{lltjp-geometry} \RequirePackage{filehook} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua index 6a1447aebf6..fdb308348f5 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua @@ -55,16 +55,33 @@ local ltjd_get_dir_count = ltjd.get_dir_count local dir_tate = luatexja.dir_table.dir_tate luatexja.userid_table.OTF = luatexbase.newuserwhatsitid('char_by_cid', 'luatexja') -luatexja.userid_table.VSR = luatexbase.newuserwhatsitid('replace_vs', 'luatexja') -local OTF, VSR = luatexja.userid_table.OTF, luatexja.userid_table.VSR +local OTF = luatexja.userid_table.OTF +local tex_get_attr = tex.getattribute + +local cache_var = 2 +local cache_outdate_fn = function (t) return t.version~=cache_ver end +local ivd_aj1 = ltjb.load_cache('ltj-ivd_aj1',cache_outdate_fn) +if not ivd_aj1 then -- make cache + ivd_aj1 = require('ltj-ivd_aj1.lua') + ltjb.save_cache_luc('ltj-ivd_aj1', ivd_aj1) +end + local function get_ucs_from_rmlgbm(c) - local v = ltjr_cidfont_data["Adobe-Japan1"].resources.unicodes["Japan1." .. tostring(c)] - if not v then -- AJ1 範囲外 - return 0 + local v = (ivd_aj1 and ivd_aj1.table_ivd_aj1[c] + or ltjr_cidfont_data["Adobe-Japan1"].resources.unicodes["Japan1." .. tostring(c)]) + or 0 + if v>=0x200000 then -- table + local curjfnt_num = tex_get_attr((ltjd_get_dir_count()==dir_tate) + and attr_curtfnt or attr_curjfnt) + local curjfnt = identifiers[curjfnt_num].resources + local base, ivs = v % 0x200000, 0xE00FF + math.floor(v/0x200000) + curjfnt = curjfnt and curjfnt.variants + curjfnt = curjfnt and curjfnt[ivs] + return curjfnt and curjfnt[base] or base elseif v<0xF0000 then -- 素直に Unicode にマップ可能 return v - else + else -- privete use area local w = ltjr_cidfont_data["Adobe-Japan1"].characters[v]. tounicode -- must be non-nil! local i = string.len(w) @@ -93,7 +110,6 @@ end local cid do - local tex_get_attr = tex.getattribute cid = function (key) if key==0 then return append_jglyph(char) end local curjfnt_num = tex_get_attr((ltjd_get_dir_count()==dir_tate) @@ -137,17 +153,18 @@ local function extract(head) if getid(p)==id_whatsit then if getsubtype(p)==sid_user then local puid = getfield(p, 'user_id') - if puid==OTF or puid==VSR then + if puid==OTF then + --if puid==OTF or puid==VSR then local g = node_new(id_glyph) setfield(g, 'subtype', 0) setfield(g, 'char', getfield(p, 'value')) local v = has_attr(p, attr_curfnt); setfield(g, 'font',v) - if puid==OTF then + --if puid==OTF then setfield(g, 'lang', lang_ja) set_attr(g, attr_kblshift, has_attr(p, attr_kblshift)) - else - set_attr(g, attr_ablshift, has_attr(p, attr_ablshift)) - end + --else + -- set_attr(g, attr_ablshift, has_attr(p, attr_ablshift)) + --end head = node_insert_after(head, p, g) head = node_remove(head, p) node_free(p); p = g @@ -206,86 +223,12 @@ end luatexbase.add_to_callback("luatexja.find_char_class", cid_set_char_class, "ltj.otf.find_char_class", 1) --------------------- IVS -local enable_ivs, disable_ivs -do - local is_ivs_enabled = false --- 組版時 - local function ivs_jglyph(char, bp, pf, uid) - local p = node_new(id_whatsit,sid_user) - setfield(p, 'user_id', uid) - setfield(p, 'type', 100) - setfield(p, 'value', char) - return p - end - - local function do_ivs_repr(h) - local head = to_direct(h) - local p, r = head - local is_dir_tate = (ltjs.list_dir == dir_tate) - local attr_ablshift = is_dir_tate and attr_tablshift or attr_yablshift - local attr_kblshift = is_dir_tate and attr_tkblshift or attr_ykblshift - local attr_curfnt = is_dir_tate and attr_curtfnt or attr_curjfnt - while p do - local pid = getid(p) - if pid==id_glyph then - local q = node_next(p) -- the next node of p - if q and getid(q)==id_glyph then - local qc = getchar(q) - if (qc>=0xFE00 and qc<=0xFE0F) or (qc>=0xE0100 and qc<0xE01F0) then - -- q is a variation selector - if qc>=0xE0100 then qc = qc - 0xE0100 end - local pf = getfont(p) - local pt = ltjf_font_extra_info[pf] - pt = pt and pt[getchar(p)]; pt = pt and pt[qc] - head, r = node_remove(head,q) - node_free(q) - if pt then - local is_jachar = (getfield(p, 'lang')==lang_ja) - local np = ivs_jglyph(pt, p, pf, - is_jachar and OTF or VSR) - if is_jachar then - set_attr(np, attr_curfnt, pf) - set_attr(np, attr_kblshift, has_attr(p, attr_kblshift)) - end - head = node_insert_after(head, p, np) - head = node_remove(head,p) - node_free(p) - end - p = r - else - p = q - end - else - p = node_next(p) - end - else - p = node_next(p) - end - end - return to_node(head) - end - - enable_ivs = function () - if is_ivs_enabled then - ltjb.package_warning('luatexja-otf', - 'luatexja.otf.enable_ivs() was already called, so this call is ignored', '') - else - ltjb.add_to_callback('hpack_filter', do_ivs_repr, 'ltj.do_ivs', - luatexbase.priority_in_callback('hpack_filter', 'luaotfload.node_processor')) - ltjb.add_to_callback('pre_linebreak_filter', do_ivs_repr, 'ltj.do_ivs', - luatexbase.priority_in_callback('pre_linebreak_filter', 'luaotfload.node_processor')) - is_ivs_enabled = true - end - end - disable_ivs = function () - if is_ivs_enabled then - luatexbase.remove_from_callback('hpack_filter', 'ltj.do_ivs') - luatexbase.remove_from_callback('pre_linebreak_filter', 'ltj.do_ivs') - is_ivs_enabled = false - end - end +--IVS +local function enable_ivs() + ltjb.package_warning('luatexja-otf', + 'luatexja.otf.enable_ivs() has now no effect.') end +local disable_ivs = enable_ivs luatexja.otf = { append_jglyph = append_jglyph, @@ -294,4 +237,5 @@ luatexja.otf = { cid = cid, } + -- EOF diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty b/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty index ce109e42706..91544ddc6f6 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty @@ -79,6 +79,7 @@ \RequirePackage{pdftexcmds} [2011/11/29] % v0.20 \RequirePackage{xkeyval} [2012/10/14] % v2.6b \RequirePackage{atbegshi} + \AtBeginShipoutInit \IfFileExists{everyhook.sty}{\RequirePackage{everyhook}\ltj@everyhook@availtrue}{} \else %<*!LaTeX> \input luatexbase.sty diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua b/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua index 28c1a98d913..d6d83e61437 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua @@ -177,18 +177,23 @@ end -- EXT: print parameters that don't need arguments do + local tex_getattr = tex.getattribute + local function getattr(a) + local r = tex.getattribute(a) + return (r==-0x7FFFFFFF) and 0 or r + end luatexja.unary_pars = { yalbaselineshift = function(t) - return print_scaled(tex.getattribute('ltj@yablshift'))..'pt' + return print_scaled(getattr('ltj@yablshift'))..'pt' end, yjabaselineshift = function(t) - return print_scaled(tex.getattribute('ltj@ykblshift'))..'pt' + return print_scaled(getattr('ltj@ykblshift'))..'pt' end, talbaselineshift = function(t) - return print_scaled(tex.getattribute('ltj@tablshift'))..'pt' + return print_scaled(getattr('ltj@tablshift'))..'pt' end, tjabaselineshift = function(t) - return print_scaled(tex.getattribute('ltj@tkblshift'))..'pt' + return print_scaled(getattr('ltj@tkblshift'))..'pt' end, kanjiskip = function(t) return print_spec(ltjs.get_stack_skip(stack_table_index.KSK, t)) @@ -200,10 +205,10 @@ do return ltjs.get_stack_table(stack_table_index.JWP, 0, t) end, autospacing = function(t) - return tex.getattribute('ltj@autospc') + return getattr('ltj@autospc') end, autoxspacing = function(t) - return tex.getattribute('ltj@autoxspc') + return getattr('ltj@autoxspc') end, differentjfm = function(t) local f, r = luatexja.jfmglue.diffmet_rule, '???' @@ -409,8 +414,10 @@ local function debug_show_node_X(p,print_fn, limit) .. tostring(p.font) .. ' (' .. print_scaled(p.height) .. '+' .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) - .. ' off: (' .. print_scaled(p.xoffset) - .. ',' .. print_scaled(p.yoffset) .. ')' + if p.xoffset~=0 or p.yoffset~=0 then + s = s .. ' off: (' .. print_scaled(p.xoffset) + .. ',' .. print_scaled(p.yoffset) .. ')' + end print_fn(s) elseif pt=='hlist' or pt=='vlist' or pt=='unset'or pt=='ins' then if pt=='ins' then diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty b/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty index 4dc2125e6df..3c378360e2e 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty @@ -37,7 +37,7 @@ \ProvidesPackage{luatexja}[2017/05/05 Japanese Typesetting with Lua(La)TeX] \fi % %%%% VERSION -\def\LuaTeXjaversion{20170505.0} +\def\LuaTeXjaversion{20170730.0} \directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty index 2e0be5dc847..86bb36babee 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjcore}[2017/05/05 Patch to LaTeX2e Kernel for LuaTeX-ja] +\ProvidesPackage{lltjcore}[2017/06/18 Patch to LaTeX2e Kernel for LuaTeX-ja] \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page @@ -304,4 +304,36 @@ \fi \fi} +%%%%%% \@tabclassz +\def\ltj@sharp{\ltjfakeboxbdd\ignorespaces\@sharp\unskip\ltjfakeboxbdd} +\def\@tabclassz{% + \ifcase\@lastchclass + \@acolampacol + \or + \@ampacol + \or + \or + \or + \@addamp + \or + \@acolampacol + \or + \@firstampfalse\@acol + \fi + \edef\@preamble{% + \@preamble{% + \ifcase\@chnum + \hfil\ltj@sharp\hfil + \or + \hskip1sp\ltj@sharp\hfil + \or + \hfil\hskip1sp\ltj@sharp + \fi}}} +\patchcmd\@classv{% + \ignorespaces\@sharp +}{% + \everypar\expandafter{\the\everypar\ltjfakeboxbdd}\ignorespaces\@sharp\unskip +}{}{} + + \endinput diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty new file mode 100644 index 00000000000..f3361904845 --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty @@ -0,0 +1,16 @@ +% +% lltjp-array.sty +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{lltjp-array}[2017/06/18 Patch to preview for LuaTeX-ja] + +\RequirePackage{etoolbox,array,luatexja} + +\patchcmd\insert@column{% + \ignorespaces\@sharp\unskip +}{% + \ltj@sharp +}{}{} + +\endinput diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-preview.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-preview.sty new file mode 100644 index 00000000000..f8a90efa05f --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-preview.sty @@ -0,0 +1,16 @@ +% +% lltjp-preview.sty +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{lltjp-preview}[2017/05/08 Patch to preview for LuaTeX-ja] + +\RequirePackage{etoolbox,preview,luatexja} + +\patchcmd\pr@endbox{% + \pr@ship@end +}{% + \setbox\pr@box\hbox{\yoko\box\pr@box}\pr@ship@end +}{}{} + +\endinput -- cgit v1.2.3