X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=doc%2Fluatexja.dtx;h=313d56f2ca6403827eb5bff96cad629eb98326f4;hb=0f0921ced2b53537326ad20ce546020b3cae2670;hp=b0d68756a471c16a1082d40ba4605c4a310f2ffd;hpb=d33eb2f6279c6609b0095ce38f3a45f45d72043c;p=luatex-ja%2Fluatexja.git
diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx
index b0d6875..313d56f 100644
--- a/doc/luatexja.dtx
+++ b/doc/luatexja.dtx
@@ -21,11 +21,24 @@
\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}}{%
+ \directlua{%
+ if jit then
+ local k = collectgarbage("count")
+ if k>900000 then
+ collectgarbage("collect")
+ texio.write_nl("term and log", "GC: ", math.floor(k), math.floor(collectgarbage("count")))
+ end
+ end
+ }%
+ \stepcounter{page}%
+}{}{}
%%%%%%%% 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,
@@ -44,7 +57,7 @@
\def\headfont{\normalfont\bfseries\gtfamily}\normalsize
%
%<*en>
-\frenchspacing
+\frenchspacing\sloppy
\usepackage[margin=25mm,lmargin=30mm,rmargin=30mm,footskip=6mm]{geometry}
\usepackage{luatexja-adjust}\ltjdisableadjust
\parskip=\smallskipamount
@@ -103,10 +116,12 @@
%<*en>
\title{The \LuaTeX-ja package}
\author{The \LuaTeX-ja project team}
+\date{\LuaTeXjaversion~(\today)}
%
%<*ja>
\title{\LuaTeX-jaããã±ã¼ã¸}
\author{\LuaTeX-jaããã¸ã§ã¯ããã¼ã }
+\date{\LuaTeXjaversionï¼\todayï¼}
%
\hypersetup{%
unicode,
@@ -122,6 +137,16 @@
pdftitle={LuaTeX-jaããã±ã¼ã¸}
%
}
+%<*ja>
+\def\HyRef@autoref#1#2{%
+ \begingroup
+ \Hy@safe@activestrue
+ \expandafter\HyRef@autosetref\csname r@#2\endcsname{#2}{#1}%
+ \endgroup\ltjalchar"200C %" 欧æã´ã¼ã¹ã
+}
+\def\figureautorefname{å³}
+\def\tableautorefname{表}
+%
%%%%%%%% definition env.
\usepackage{amsthm}
@@ -164,8 +189,8 @@
\def\_{\leavevmode \kern .06em\vbox {\hrule \@width .333em}}
\def\cs#1{\texttt{\upshape
- \texorpdfstring{\textbackslash\ltjsetparameter{autoxspacing=false}#1}{\textbackslash#1}}}
-
+ \texorpdfstring{\textbackslash\hbox{\ltjsetparameter{autoxspacing=false}#1}}{\textbackslash#1}}}
+\ltjsetparameter{alxspmode={`\\,allow}}
%%%%%%%%
\makeatother
%%%%%%%%
@@ -177,10 +202,11 @@
width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr
}}}}}\,}
-\protected\def\Param#1{\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}} % parameter name
-\protected\def\DParam#1{\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}} % parameter name (definition)
+\def\myghost{\ifmmode\else\ltjalchar"200C \fi}
+\protected\def\Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name
+\protected\def\DParam#1{\myghost\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name (definition)
\protected\def\Pkg#1{\textsf{#1}} % packages/classes
-
+\ltjsetparameter{alxspmode={"200C,allow}}
\begin{document}
\lstset{
@@ -309,7 +335,7 @@ For more detailed information, see Part~\ref{part-imp} or other sections of this
%<*en>
\paragraph{Command names} \pTeX\ addes several primitives, such as \cs{kanjiskip},
-\cs{prebreakpenalty},~and,~\cs{ifydir}. They can be used as follows:
+\cs{prebreakpenalty},~and \cs{ifydir}. They can be used as follows:
%
%<*ja>
\paragraph{å½ä»¤ã®å称} ä¾ãã°\pTeX ã§è¿½å ããã次ã®ãããªããªããã£ã
@@ -433,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$æµã®çµæ¹åããµãã¼ããã¦ãããï¼ããã¨ã¯å
¨ãã®å¥ç©ã§ãããã¨
ã«æ³¨æãã¦ã»ããï¼
ç¹ã«ï¼ç°ãªã£ãçµæ¹åã®ããã¯ã¹ãæ±ãå ´åã«ã¯
@@ -458,9 +484,10 @@ By default, \LuaTeX-ja uses Japanese fonts to typeset Greek and Cyrillic letters
put \verb!\ltjsetparameter{jacharrange={-2,-3}}! in the preamble.
For the detailed description, see Subsection~\ref{ssec-setrange}.
-From this version, characters which belongs both ISO~8859-1 and JIS~X~0208,
- such as \P~and~\S, are now typeset in alphabetic fonts. This means that
- without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package, these characters are not typeset correctly.
+From version~20150906.0, characters which belongs both ISO~8859-1 and JIS~X~0208,
+such as \P~and~\S, are now typeset in alphabetic fonts.
+If you are using \LaTeXe\ prior to 2017/01/01, these characters are not typeset correctly
+without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package.
%
%<*ja>
\paragraph{ã®ãªã·ã£æåã»ããªã«æåã¨ISO~8859-1ã®è¨å·}
@@ -475,10 +502,13 @@ From this version, characters which belongs both ISO~8859-1 and JIS~X~0208,
詳ãã説æã¯\ref{ssec-setrange}ç¯ãåç
§ãã¦ã»ããï¼
ã¾ãï¼\P,~\S ã¨ãã£ãISO~8859-1ã®ä¸ä½é åã¨JIS~X~0208ã®å
±éé¨åã®æåã¯
- æ¬ãã¼ã¸ã§ã³ããæ¨æºã§æ¬§ææ±ãã¨ãªãï¼\emph{ã½ã¼ã¹ä¸ã«ç´æ¥è¨è¿°ãã¦ã
- \Pkg{fontspec}ããã±ã¼ã¸ï¼ããã³\Pkg{luatexja-fontspec}ããã±ã¼ã¸ï¼éèªã¿è¾¼ã¿ã®ç¶æ
ã§ã¯åºåãããªããªã£ã}ï¼
- åææ±ãã§åºåããã«ã¯ \verb+\ltjjachar`§+ ã®ããã« \cs{ltjjachar} å½ä»¤
- ã使ãã°ããï¼
+ ãã¼ã¸ã§ã³20150906.0ããæ¨æºã§æ¬§ææ±ãã¨ãªã£ãï¼\LaTeXe\ 2017/01/01以éã§ã¯
+æ¨æºã§TUã¨ã³ã³ã¼ãã£ã³ã°ã®Latin Modernãã©ã³ãã使ãããã®ã§ï¼
+ç¹ã«ä½ãããã½ã¼ã¹ä¸ã«ãã®ã¾ã¾è¨è¿°ãã¦ããããã®æåãåºåããã
+\footnote{\LaTeXe\ 2017/01/01ããåã§ã¯ï¼ã½ã¼ã¹ä¸ã«ç´æ¥è¨è¿°ãã¦ã
+ \Pkg{fontspec}ããã±ã¼ã¸ï¼ããã³\Pkg{luatexja-fontspec}ããã±ã¼ã¸ï¼éèªã¿è¾¼ã¿ã®ç¶æ
ã§ã¯åºåãããªãï¼}ï¼
+åææ±ãã§åºåããã«ã¯ \verb+\ltjjachar`§+ ã®ããã« \cs{ltjjachar} å½ä»¤
+ã使ãã°ããï¼
%
%\subsection{Notations}
@@ -542,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}
@@ -606,14 +636,15 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
\item \LuaTeX\ beta-0.85.0 (or later)
\item \Pkg{luaotfload} v2.6 (or later)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
-\item \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
-\item \Pkg{fontspec} v2.4
+\item \Pkg{etoolbox}, \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
+\item \Pkg{ltxcmds}, \Pkg{pdftexcmds}, \Pkg{filehook}, \Pkg{atbegshi}
+\item \Pkg{fontspec} v2.4 (or later)
%\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/})
%\item \emph{IPAexãã©ã³ã(\url{http://ipafont.ipa.go.jp/})}
\end{itemize}
-%In summary, this version of \LuaTeX-ja no longer supports \TeX~Live~2015 (or older version).
+%In summary, \LuaTeX-ja version 20160404.0 (or~later) no longer supports \TeX~Live~2015.
%<*ja>
-è¦ç´ããã¨ï¼æ¬ãã¼ã¸ã§ã³ã®\LuaTeX-jaã¯\TeX~Live~2015以åã§ã¯åä½ããªã\footnote{%
+è¦ç´ããã¨ï¼ãã¼ã¸ã§ã³20160404.0以éã®\LuaTeX-jaã¯\TeX~Live~2015以åã§ã¯åä½ããªã\footnote{%
ãã£ã¨ãï¼èªåã§\LuaTeX ã®ãã¤ããªãSubversionãªãã¸ããªãããã«ããã¦ããã°è©±ã¯å¥ã§ããï¼
}ï¼
%
@@ -781,14 +812,25 @@ For changes from \pTeX, see Subsection~\ref{ssec:chgptex}.
%
%<*en>
\item \LuaTeX-ja is very slower than \pTeX.
-Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja
-about 30\% faster than \LuaTeX, but not always.
+ Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja
+ about 30\% faster than \LuaTeX, but not always%
+ \footnote{%
+ LuaJIT has the 1\,GB~(or~2\,GB) memory limitation. So typesetting a large source by LuaJIT\TeX\
+ may cause an ``out of memory'' error.
+ }.
%
%<*ja>
\item \LuaTeX-jaã¯åä½ã\pTeX ã«æ¯ã¹ã¦é常ã«é
ãï¼
ã³ã¼ãã調æ´ãã¦å¾ã
ã«éããã¦ãããï¼ã¾ã æºè¶³ã§ããé度ã§ã¯ãªãï¼
LuaJIT\TeX ãç¨ããã¨\LuaTeX ã®ã ããã1.3åã®é度ã§åãããã§ãããï¼
-IPA mjææãªã©ã®å¤§ãããã©ã³ããç¨ããå ´åã«ã¯\LuaTeX ãããé
ããªããã¨ãããï¼
+IPA mjææãªã©ã®å¤§ãããã©ã³ããç¨ããå ´åã«ã¯\LuaTeX ãããé
ããªããã¨ããã
+ \footnote{%
+ LuaJITã¯1\,GBï¼ãããã¯2\,GBï¼ã®ã¡ã¢ãªå¶éããããã¨ãç¥ããã¦ããï¼ãã®ããï¼
+ 大ããã½ã¼ã¹ãã¡ã¤ã«ãLuaJIT\TeX ã§ã¿ã¤ãã»ããããã¨Luaã®å´ã§``out of memory''ã¨ã©ã¼ãçºçãã¦ãã¾ãï¼
+ æ¬ããã¥ã¡ã³ãã®ããã«ï¼ãåãã¼ã¸ãã¨ã«Luaã§ä½¿ã£ã¦ããã¡ã¢ãªå®¹éããã§ãã¯ãï¼
+ å¿
è¦ãªã\texttt{collectgarbage("collect")}ã§ã¬ãã¼ã¸ã³ã¬ã¯ã¿ãå®è¡ãããã¨
+ ç¶æ³ãå¤å°æ¹åããããããããªãï¼
+ }ï¼
%
\item%
@@ -849,7 +891,7 @@ and finally delete the temporary directory.
\begin{tabular}{cccccc}
\toprule
\textbf{direction}&
-\textbf{classification}&\textbf{font name}&\bf ``10\,pt''&\bf``7\,pt''&\bf``5\,pt''\\\midrule
+\textbf{classification}&\textbf{font name}&\bfseries ``10\,pt''&\bfseries ``7\,pt''&\bfseries ``5\,pt''\\\midrule
\smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}&
\emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
&\emph{gothic}&IPAex Gothic&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
@@ -866,7 +908,7 @@ and finally delete the temporary directory.
\begin{center}\small
\begin{tabular}{cccccc}
\toprule
-\emph{çµæ¹å}&\emph{åä½}&\emph{ãã©ã³ãå}&\bf ``10\,pt''&\bf``7\,pt''&\bf``5\,pt''\\\midrule
+\emph{çµæ¹å}&\emph{åä½}&\emph{ãã©ã³ãå}&\bfseries``10\,pt''&\bfseries``7\,pt''&\bfseries``5\,pt''\\\midrule
\smash{\raisebox{-1ex}{横çµ}}&
ææä½&IPAexææ&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
&ã´ã·ãã¯ä½&IPAexã´ã·ãã¯&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
@@ -942,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>
@@ -951,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
@@ -974,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}.
%
@@ -989,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
@@ -999,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})ã§ä½¿ããããã©ã³ãã¨åãã§ãããã¨ã«æ³¨æï¼
ã¾ãï¼ã©ã¡ãã®ãã¡ããªã§ãã¤ã¿ãªãã¯ä½ã»ã¹ã©ã³ãä½ã¯å®ç¾©ãããªãï¼
%
@@ -1015,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} ç°å¢ä¸ã®åææåã«ä½¿ãããåæãã©ã³ããã¡ããªã¯
@@ -1032,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}ã¯ã©ã¹ãæ¢å®ã®ãã©ã³ãè¨å®ã§ä½¿ãå ´åï¼æ¢å®æ¬§æãã©ã³ãããµã³ã»ãªããªã®
@@ -1056,9 +1098,9 @@ classes in \pLaTeX) and \Pkg{jsclasses} (classes by Haruhiko
Okumura), namely, \Pkg{ltjclasses}\footnote{%
\texttt{ltjarticle.cls},~\texttt{ltjbook.cls}, \texttt{ltjreport.cls},
\texttt{ltjtarticle.cls}, \texttt{ltjtbook.cls}, \texttt{ltjtreport.cls}.
- The latter \texttt{ltjt*.cls} are for vertically writtened Japanese documents.
+ The latter \texttt{ltjt*.cls} are for vertically written Japanese documents.
} and \Pkg{ltjsclasses}\footnote{%
- \texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls},~\texttt{ltjskiyou.cls}.}.
+ \texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls}, \texttt{ltjsreport.cls},~\texttt{ltjskiyou.cls}.}.
Original \Pkg{jsclasses} use \cs{mag}~primitive to set the main document font size.
However, \LuaTeX\ beta-0.87.0~or~later does not support \cs{mag} in PDF~output,
@@ -1077,7 +1119,7 @@ to set the main document font size.
縦çµç¨ã¯ \texttt{ltjtarticle.cls}, \texttt{ltjtbook.cls}, \texttt{ltjtreport.cls} ã§ããï¼
}ï¼
\Pkg{ltjsclasses}\footnote{%
- \texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls},~\texttt{ltjskiyou.cls}.}%
+ \texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls}, \texttt{ltjsreport.cls},~\texttt{ltjskiyou.cls}.}%
ãããããç¨æããã¦ããï¼
å
ã
ã®\Pkg{ltjsclasses}ã§ã¯ãã©ã³ããµã¤ãºãæå®ããã®ã«\cs{mag}ããªããã£ãã使ããã¦ãããï¼
@@ -1089,17 +1131,41 @@ to set the main document font size.
%<*ja>
\paragraph{è注ã¨ããã ããã¼ãã®åºåé åº}
-ãªãªã¸ãã«ã®\LaTeX ã§ã¯è注ãããã ããã¼ãã®ä¸ã«æ¥ãããã«ãªã£ã¦ããï¼
-\pLaTeX ã§ã¯è注ãããã ããã¼ãã®ä¸ã«æ¥ãããã«å¤æ´ããã¦ããï¼
+ãªãªã¸ãã«ã®\LaTeX ã§ã¯è注ã¯ããã ããã¼ãã®ä¸ã«åºåããï¼ã¾ã\cs{raggedbottom}å½ä»¤ã§ãã¼ã¸ã®é«ããä¸æãã§ãããã¨ã許ããå ´åã«ã¯
+è注ã®ä¸ç«¯ã®åç´ä½ç½®ããã¼ã¸ã«å¿ãã¦å¤ããããã«ãªã£ã¦ããï¼
+ä¸æ¹ï¼æ¥æ¬èªã®çµçã§ã¯è注ã¯ããã ããã¼ãã®ä¸ã«æ¥ãã®ãä¸è¬çã§ããã®ã§ï¼
+\pLaTeX ã§ã¯ãã®ããã«å¤æ´ããã¦ããï¼
+ããã«\cs{raggedbottom}å½ä»¤ãå®è¡ããå¾ã§ãè注ã¯å¸¸ã«ãã¼ã¸ã®ä¸ç«¯ã«åºå®ãããããã«ãªã£ã¦ããï¼
\LuaTeX-jaã§ã¯ã欧æã¯ã©ã¹ã®ä¸ã«ã¡ãã£ã¨ã ãæ¥æ¬èªãå
¥ãããã¨ããå©ç¨ãèæ
®ãï¼
-è注ã¨ããã ããã¼ãã®é åºã¯\LaTeX éãã¨ããï¼ãã\pLaTeX ã®åºåé åºã好ã¿ãªãã°ï¼
-\Pkg{stfloats}ããã±ã¼ã¸ãå©ç¨ãã¦
-\begin{lstlisting}
- \usepackage{stfloats}\fnbelowfloat
-\end{lstlisting}
-ã®ããã«ããã°ããï¼\Pkg{footmisc}ããã±ã¼ã¸ã \texttt{bottom}\ ãªãã·ã§ã³ãæå®ãã¦
-èªã¿è¾¼ãã¨ããæ¹æ³ããããï¼ããã ã¨ããã ããã¼ãã¨è注ã®éãéãã¦ãã¾ãï¼
+è注ã¨ããã ããã¼ãã®é åºï¼åã³\cs{raggedbottom}æã®è注ã®åç´ä½ç½®ã¯\LaTeX éãã¨ããï¼
+ããããå¶å¾¡ããã«ã¯ä»¥ä¸ã®æ段ãããï¼
+\begin{itemize}
+ \item \pLaTeX ã®ããã«ï¼è注ãããã ããã¼ãã®ä¸ã«çµãå ´åã«ã¯
+ \Pkg{stfloats}ããã±ã¼ã¸ãå©ç¨ãã¦
+ \begin{lstlisting}
+ \usepackage{stfloats}\fnbelowfloat
+ \end{lstlisting}
+ ã¨ããï¼ãã®ç¶æ³ãããè注ãããã ããã¼ãã®ä¸ã«çµããã¨ãã\LaTeX ã®æ¨æºã®æåã«æ»ããããã°ï¼
+ \Pkg{stfloats}ããã±ã¼ã¸ã®\cs{fnunderfloat}å½ä»¤ã使ç¨ããï¼
+ \item \cs{raggedbottom}æã®è注ã®åç´ä½ç½®ã¯ï¼\cs{iffnfixbottom}ã¨ããçå½å¤ã§å¶å¾¡ããï¼
+ \begin{description}
+ \item[å½(\cs{fnfixbottomfalse})ã®å ´å] \LaTeX æ¨æºã¨åããï¼æ¬æã¨è注ã®éã®ç©ºç½ã¯\cs{skip}\cs{footins}ã®ã¿ï¼
+ å¾ã£ã¦è注ã®åç´ä½ç½®ã¯ãã¼ã¸ã«ããå¤åããï¼
+ \item[ç(\cs{fnfixbottomtrue})ã®å ´å] \pLaTeX ã\Pkg{footmisc}ããã±ã¼ã¸ã\texttt{bottom}ãªãã·ã§ã³ã§
+ èªã¿è¾¼ãã å ´åã®ããã«ï¼è注ã¯å¸¸ã«ãã¼ã¸ã®ä¸ç«¯ã«åºå®ãããï¼
+ \end{description}
+\item ãã ãï¼\LuaTeX-jaãæä¾ãããäºæã¯ã©ã¹ã(\Pkg{ltjclasses}, \Pkg{ltjsclasses})ã§ã¯ï¼
+ \pLaTeX ã¨åãããããã«ä»¥ä¸ã®ããã«ãã¦ããï¼
+ \begin{itemize}
+ \item \cs{fnfixbottomtrue}ãèªåçã«å®è¡ããã
+ \item \Pkg{stfloats}ããã±ã¼ã¸ã\LuaTeX ããåç
§ã§ããå ´æã«ãã£ãå ´åã¯
+ èªåçã«èªã¿è¾¼ã¿ï¼\cs{fnbelowfloat}ãå®è¡ããï¼
+ \end{itemize}
+\end{itemize}
+ãªãï¼\Pkg{stfloats}ããã±ã¼ã¸ã使ã代ããã«ï¼
+\Pkg{footmisc}ããã±ã¼ã¸ã \texttt{bottom}ãªãã·ã§ã³ãæå®ãã¦èªã¿è¾¼ã
+ã¨ããã解決æ³ããããï¼
%
%%% âã¯è±è¨³ããªã
@@ -1366,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}
@@ -1468,5736 +1531,6197 @@ 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ã´ã·ãã¯ã¸ã¨å¤
+æ´ãããï¼
+
+
+ãªãï¼20140906.0以åã®ãã¼ã¸ã§ã³ã®ããã«ï¼
+Ryumin-Light, GothicBBB-Mediumã¨ããååã®éåè¾¼ãã©ã³ããç¨ããå ´åã¯
+\begin{lstlisting}
+\def\ltj@stdmcfont{psft:Ryumin-Light}
+\def\ltj@stdgtfont{psft:GothicBBB-Medium}
+\end{lstlisting}
+ã¨è¨è¿°ããã°ããï¼
%
-\item[match]
+
+%\section{Changing Internal Parameters}
+%\section{ãã©ã¡ã¼ã¿ã®å¤æ´}
+
%<*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.
+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>
-ãã®ãªãã·ã§ã³ãæå®ãããã¨ï¼ã\pLaTeXe æ°ããã¥ã¡ã³ãã¯ã©ã¹ãã®ããã«\
-\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} çã
-欧æãã©ã³ãã ãã§ãªãåæãã©ã³ããå¤æ´ããããã«ãªãï¼
-\ \texttt{fontspec}\
-ãªãã·ã§ã³ãæå¹ã«ãªã£ã¦ããå ´åã¯ï¼ãã®ãªãã·ã§ã³ã¯ \Pkg{luatexja-fontspec} ããã±ã¼ã¸ã¸ã¨æ¸¡ãããï¼
+\LuaTeX-jaã«ã¯å¤ãã®ãã©ã¡ã¼ã¿ãåå¨ããï¼ããã¦\LuaTeX ã®ä»æ§ã®ããã«ï¼
+ãã®å¤ãã¯\TeX ã®ã¬ã¸ã¹ã¿ã«ã§ã¯ãªãï¼\LuaTeX-jaç¬èªã®æ¹æ³ã§ä¿æããã¦ããï¼
+ãããã®ãã©ã¡ã¼ã¿ãè¨å®ã»åå¾ããããã«ã¯ \cs{ltjsetparameter} 㨠\cs{ltjgetparameter} ã
+ç¨ããï¼
%
+%\subsection{Range of \textbf{JAchar}s}
+%\subsection{\textbf{JAchar}ã®ç¯å²}
+\label{ssec-setrange}
-\item[nodeluxe%
-%\textrm{~(enabled by default)}
-%\emph{\gtfamily ï¼æ¢å®ï¼}
-]
%<*en>
-The nagation of \texttt{deluxe} option.
-Use one-weighted \textit{mincho} and \textit{gothic} font families.
-This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and
-\verb+\gtfamily\mdseries+ use the same font.
+\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>
-\texttt{deluxe}ãªãã·ã§ã³ã®å¦å®ï¼
-\LaTeXe ç°å¢ä¸ã®æ¨æºè¨å®ã®ããã«ï¼ææä½ã»ã´ã·ãã¯ä½ãå1ã¦ã§ã¤ãã§ä½¿ç¨ããï¼
-ããå
·ä½çã«è¨ãã¨ï¼ãã®è¨å®ã®ä¸ã§ã¯
-\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+,
-\verb+\gtfamily\mdseries+ã¯ã¿ãªåããã©ã³ãã¨ãªãï¼
+\LuaTeX-jaã¯ï¼Unicodeã® \texttt{U+0080}--\texttt{U+10FFFF} ã®ç©ºéã
+1çªãã217çªã¾ã§ã®\emph{æåç¯å²}ã«åå²ãã¦ããï¼
+åºåã㯠\cs{ltjdefcharrange} ãç¨ãããã¨ã§ï¼ã°ãã¼ãã«ã«ï¼å¤æ´ãããã¨ãã§ãï¼
+ä¾ãã°ï¼æ¬¡ã¯è¿½å æ¼¢åé¢(SIP)ã«ããå
¨ã¦ã®æåã¨ãæ¼¢ããã100çªã®æåç¯å²ãã«è¿½å ããï¼
%
-\item[deluxe]
+\begin{lstlisting}
+\ltjdefcharrange{100}{"20000-"2FFFF,`æ¼¢}
+\end{lstlisting}
+
%<*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}).
+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>
-ææä½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})ããæ±ããªãã£ãåæ®ã§ããï¼
+åæåã¯ãã ä¸ã¤ã®æåç¯å²ã«æå±ãããã¨ãã§ããï¼
+ä¾ãã°ï¼SIPå
ã®æåã¯å
¨ã¦\LuaTeX-jaã®ããã©ã«ãã§ã¯4çªã®æåç¯å²ã«
+å±ãã¦ãããï¼ä¸è¨ã®æå®ãè¡ãã°SIPå
ã®æåã¯100çªã«å±ãããã«ãªãï¼4çªããã¯é¤ãããï¼
%
-\item[expert]
+
%<*en>
-Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana
-characters designed for ruby.
+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>
-横çµã»ç¸¦çµå°ç¨ä»®åãç¨ããï¼ã¾ãï¼\cs{rubyfamily} ã§ã«ãç¨ä»®åã使ç¨å¯è½ã¨ãªã\footnote{%
- \cs{rubyfamily}ã¨ã¯ããã¤ã¤ï¼å®éã«ã¯ãã©ã³ããã¡ããªãåãæ¿ããã®ã§ã¯ãªãï¼é常ã§ã¯
- font featureã®è¿½å ï¼\texttt{nfssonly} æå®æã«ã¯ã·ã§ã¤ãã \texttt{rb} ã«åãæ¿ãï¼ï¼
-}ï¼
-%
-\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}.
-%
-%<*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[jis]
+\begin{lstlisting}
+\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}}
+\end{lstlisting}
%<*en>
-Use the JFM \texttt{jfm-jis.lua}, instead of \texttt{jfm-ujis.lua}, which is the default JFM of
-\LuaTeX-ja.
+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ãï¼JISãã©ã³ãã¡ããªãã¯é¡ä¼¼ã®ï¼\texttt{jfm-jis.lua}ã«ããï¼ãã®ãªãã·ã§ã³ããªãæã¯
-\LuaTeX-jaæ¨æºã®\texttt{jfm-ujis.lua}ãç¨ããããï¼
+\textsf{jacharrange}ãã©ã¡ã¼ã¿ã®å¼æ°ã¯éé¶ã®æ´æ°ã®ãªã¹ãã§ããï¼
+ãªã¹ãä¸ã®è² ã®æ´æ°$-n$ã¯ãæåç¯å²$n$ã«å±ããæåã¯\textbf{ALchar}ã¨ãã¦
+æ±ãããã¨ãæå³ãï¼æ£ã®æ´æ°$+n$ã¯ã\textbf{JAchar}ã¨ãã¦æ±ãããã¨ãæå³ããï¼
%
-\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.
+Note that characters \texttt{U+0000}--\texttt{U+007F} are always treated as an
+\textbf{ALchar} (this cannot be customized).
%
%<*ja>
-\texttt{90jis}ã¨\texttt{jis2004}ã«ã¤ãã¦ã¯æ¬ããã±ã¼ã¸ã§å®ç¾©ããã
-ææä½ã»ã´ã·ãã¯ä½ï¼ã»ä¸¸ã´ã·ãã¯ä½ï¼ã«ã®ã¿æå¹ã§ããï¼
-両ãªãã·ã§ã³ãåæã«æå®ãããå ´åã®åä½ã«ã¤ãã¦ã¯å
¨ãèæ
®ãã¦ããªãï¼
+ãªãï¼\texttt{U+0000}--\texttt{U+007F} ã¯å¸¸ã«\textbf{ALchar}ã¨ãã¦æ±ãããï¼å©ç¨è
ãå¤æ´ã
+ããã¨ã¯åºæ¥ãªãï¼ï¼
%
-%\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}.
+\paragraph{Default character ranges}
+\LuaTeX-ja predefines eight character ranges for convenience. They are
+determined from the following data:
%
%<*ja>
-\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以å¤ã¯ãã©ã³ãã®æå®ã¯
-ï¼ãã¡ã¤ã«åã§ãªãï¼ãã©ã³ãåã§è¡ãããï¼
-以ä¸ã®è¡¨ã«ããã¦ï¼*\,ã¤ãã®ãã©ã³ã(e,g,~KozGo\dots-Regular)ã¯ï¼\emph{\texttt{deluxe}ãªãã·ã§ã³æå®æã«}
-ã´ã·ãã¯ä½ä¸åã¨ãã¦ç¨ãããããã®ã示ãã¦ããï¼
+\paragraph{æåç¯å²ã®åæå¤}
+\LuaTeX-jaã§ã¯8ã¤ã®æåç¯å²ãäºãå®ç¾©ãã¦ããï¼
+ãããã¯ä»¥ä¸ã®ãã¼ã¿ã«åºã¥ãã¦æ±ºå®ãã¦ããï¼
%
-\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{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>
-Kozuka Pro/Pr6N fonts are bundled with Adobe's software, such as Adobe~InDesign.
-There is not rounded gothic family in Kozuka fonts.
+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>
-å°å¡Proæ¸ä½ã»Pr6Næ¸ä½ã¯Adobe InDesignçã®Adobe製åã«ãã³ãã«ããã¦ããï¼
-ãå°å¡ä¸¸ã´ã·ãã¯ãã¯åå¨ããªãã®ã§ï¼ä¾¿å®çã«å°å¡ã´ã·ãã¯Hã«ãã£ã¦ä»£ç¨ãã¦ããï¼
+以ä¸ã§ã¯ããã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{center}\small
-\begin{tabular}{cllll}
-\toprule
-\bf family&\bf series&\tt kozuka-pro&\tt kozuka-pr6&\tt 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{description}
%<*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~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>
-ãã©ã®ããã©ã³ãã¯ï¼Mac OS~X以å¤ã«ãï¼ä¸å¤ªé2012ã®ä¸ä½ã¨ãã£ã·ã§ã³ã«ããã³ãã«ããã¦ããï¼
-極太ã´ã·ãã¯ã¨ãã¦ç¨ãããã©ã®ãè§ã´W8ã¯ï¼Adobe-Japan1-3ã®ç¯å²ããã«ãã¼ãã¦ããªã
-Std/StdNãã©ã³ãã§ããï¼ãã®ä»ã¯Adobe-Japan1-5対å¿ã§ããï¼
+\item[ç¯å²8${}^{\text{A}}$] ISO~8859-1ã®ä¸ä½é åï¼ã©ãã³1è£å©ï¼ã¨
+ JIS~X~0208ã®å
±éé¨åï¼ãã®æåç¯å²ã¯
+ 以ä¸ã®æåã§æ§æãããï¼
%
-\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}
-
-%\newpage
-
- \item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts.
-% \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[morisawa-pr6n] Morisawa Pr6N (Adobe-Japan1-6, JIS04-savvy) fonts.
-
-\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
-\end{tabular}
-\end{center}
-
- \item[yu-win] Yu fonts bundled with Windows~8.1.
-% \\*[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[yu-osx] Yu fonts bundled with OSX~Mavericks.
-
-\begin{center}\small
-\begin{tabular}{clll}
-\toprule
-\bf family&\bf series&\tt yu-win&\tt yu-osx\\
-\midrule
- &medium&YuMincho-Regular&YuMincho~Medium\\
-%\smash{\raisebox{1.5ex}{\textit{mincho}}}%
-%\smash{\raisebox{1.5ex}{\gt ææ}}%
- &bold&YuMincho-Demibold&YuMincho~Demibold\\
-\midrule
- &&YuGothic-Regular*&YuGothic~Medium*\\
- &\smash{\raisebox{1.5ex}{medium}}
- &YuGothic-Bold&YuGothic~Bold\\
-\cmidrule(l){2-4}
-%\textit{gothic}%
-%\gt ã´ã·ãã¯
- &bold&YuGothic-Bold&YuGothic~Bold\\
- &heavy&YuGothic-Bold&YuGothic~Bold\\
-\midrule
-%\textit{rounded gothic}
-%\gt 丸ã´ã·ãã¯
-&&YuGothic-Bold&YuGothic~Bold\\
-\bottomrule
-\end{tabular}
-\end{center}
-
-%\newpage
-\item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic.
-%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
- &&Moga90Gothic*&MogaGothic*\\
- &\smash{\raisebox{1.5ex}{medium}}
- &Moga90Gothic Bold&MogaGothic Bold\\
-\cmidrule(l){2-4}
-%\textit{gothic}%
-%\gt ã´ã·ãã¯
- &bold&Moga90Gothic Bold&MogaGothic Bold\\
- &heavy&Moga90Gothic Bold&MogaGothic Bold\\
-\midrule
-%\textit{rounded gothic}
-%\gt 丸ã´ã·ãã¯
-&&Mobo90Gothic&MoboGothic\\
-\bottomrule
-\end{tabular}
-\end{center}
-
+\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}
-\end{cslist}
-%\paragraph{Presets for single weight}
-%\paragraph{åã¦ã§ã¤ãç¨ããªã»ããä¸è¦§}
%<*en>
-Next, we describe settings for using only single weight.
+\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>
-次ã«ï¼åã¦ã§ã¤ãç¨ã®è¨å®ãè¿°ã¹ãï¼ãã®4è¨å®ã§ã¯
-ææä½å¤ªåã»ä¸¸ã´ã·ãã¯ä½ã¯ã´ã·ãã¯ä½ã¨åããã©ã³ããç¨ããããï¼
+\item[ç¯å²1${}^{\text{A}}$] ã©ãã³æåã®ãã¡ï¼Adobe-Japan1-6ã¨ã®å
±éé¨åããããã®ï¼
+ ãã®ç¯å²ã¯ä»¥ä¸ã®Unicodeã®ãããã¯ã®ãã¡
+ \emph{ç¯å²8ãé¤ãã}é¨åã§æ§æããã¦ããï¼
%
-\par\nobreak\medskip
-{\centering\small
-\begin{tabular}{lllll}
-\toprule
-&\tt noembed&\tt ipa&\tt ipaex&\tt ms\\
-\midrule
-%<*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\\
+\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>
-\gtfamily ææä½&Ryumin-Lightï¼éåè¾¼ï¼
-&IPAææ&IPAexææ&MSææ\\
-\gtfamily ã´ã·ãã¯ä½&GothicBBB-Mediumï¼éåè¾¼ï¼
-&IPAã´ã·ãã¯&IPAexã´ã·ãã¯&MSã´ã·ãã¯\\
+\item[ç¯å²2${}^{\text{\kern.1emJ}}$] ã®ãªã·ã£æåã¨ããªã«æåï¼JIS~X~0208ï¼ãããã£ã¦ã»ã¨ãã©ã®
+ åæãã©ã³ãï¼ã«ã¯ï¼ãããã®æåã®ä¸é¨ãå«ã¾ãã¦ããï¼
%
-\bottomrule
-\end{tabular}\par\medskip}
-
-%\paragraph{Using HG fonts}
-%\paragraph{HGãã©ã³ãã®å©ç¨}
+\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>
-We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights.
+\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is
+ indicated in \autoref{tab:rng3}.
%
%<*ja>
-ããåã«æ¸ããåã¦ã§ã¤ãç¨è¨å®ãï¼Microsoft Officeçã«ä»å±ããHGãã©ã³ãã使ã£ã¦
-å¤ã¦ã§ã¤ãåããè¨å®ãããï¼
+\item[ç¯å²3${}^{\text{\kern.1emJ}}$] å¥èªç¹ã¨è¨å·é¡ï¼ãããã¯ã®ãªã¹ãã¯\autoref{tab:rng3}%
+ ã«ç¤ºãã¦ããï¼
%
-\par\nobreak\medskip
-{\centering\small
+\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}
-\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}\\
-%
-\bottomrule
-\end{tabular}\par\medskip}
-
+"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{table}
%<*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[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>
-ãªãï¼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[ç¯å²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>
-\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[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>
-\subsection{\cs{CID}, \cs{UTF}ã¨\Pkg{otf}ããã±ã¼ã¸ã®ãã¯ã}
-\pLaTeX ã§ã¯ï¼JIS~X~0208ã«ãªãAdobe-Japan1-6ã®æåãåºåããããã«ï¼
-é½è¤ä¿®ä¸éæ°ã«ãã\Pkg{otf}ããã±ã¼ã¸ãç¨ãããã¦ããï¼ãã®ããã±ã¼ã¸ã¯
-åºãç¨ãããã¦ããããï¼\LuaTeX-jaã«ããã¦ã\Pkg{otf}ããã±ã¼ã¸ã®æ©è½ã®
-ä¸é¨ãï¼\Pkg{luatexja-otf}ã¨ããå¥ã®ããã±ã¼ã¸ã¨ãã¦ï¼å®è£
ããï¼
+\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}
-\begin{LTXexample}
-\jfontspec{KozMinPr6N-Regular.otf}
-森\UTF{9DD7}å¤ã¨å
ç°ç¾\UTF{9592}ã¨ã\UTF{9AD9}島å±ã«è¡ãã
+%<*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.
-\CID{7652}飾åºã®\CID{13706}é家ï¼
-\CID{1481}åå¸ï¼è西é§
ï¼
-é«å´ã¨\CID{8705}\UTF{FA11}
+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).
-\ajåè§{ã¯ãããã«ã¿ã«ã}
-\end{LTXexample}
+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>
-\Pkg{otf}ããã±ã¼ã¸ã§ã¯ï¼ãããã次ã®ãããªãªãã·ã§ã³ãåå¨ããï¼
-\begin{cslist}
-\item[deluxe] ææä½ã»ã´ã·ãã¯ä½å3ã¦ã§ã¤ãã¨ï¼ä¸¸ã´ã·ãã¯ä½ãæ±ããããã«ãªãï¼
-\item[expert] ä»®åã横çµã»ç¸¦çµå°ç¨ã®ãã®ã«åãæ¿ããï¼ã«ãç¨ä»®åã
-\ \cs{rubyfamily}\ ã«ãã£ã¦æ±ããããã«ãªãï¼
-\item[bold] ã´ã·ãã¯ä½ãæ¨æºã§å¤ªãã¦ã§ã¤ãã®ãã®ã«è¨å®ããï¼
-\end{cslist}
-ããããããã®ãªãã·ã§ã³ã¯\Pkg{luatexja-otf}ããã±ã¼ã¸ã«ã¯åå¨ããªãï¼
-\Pkg{otf}ããã±ã¼ã¸ãææ¸ä¸ã§ä½¿ç¨ããåæç¨TFMãèªåã®ç©ã«ç½®ãæãã¦ããã®ã«å¯¾ãï¼
-\Pkg{luatexja-otf}ããã±ã¼ã¸ã§ã¯ï¼ãã®ãããªãã¨ã¯è¡ããªãããã§ããï¼
+\paragraph{\texttt{U+0080}--\texttt{U+00FF}ã«ã¤ãã¦ã®æ³¨æ}
+\LuaTeX-jaã§ï¼\Pkg{marvosym}ããã±ã¼ã¸çï¼Unicodeãã©ã³ãã§ãªã
+ä¼çµ±çãª8ããããã©ã³ããç¨ããå ´åã«ã¯æ³¨æãå¿
è¦ã§ããï¼
-ããã3ãªãã·ã§ã³ã«ã¤ãã¦ã¯ï¼
-\Pkg{luatexja-preset} ããã±ã¼ã¸ã«ããªã»ããã使ãæã«ä¸ç·ã«æå®ãããï¼
-ãããã¯å¯¾å¿ããå
容ã\ref{ssec-chgfnt}ç¯ï¼\ref{ssec-nfsspat}ç¯ (NFSS2) ã
-\ref{ssec-fontspec}ç¯ (\Pkg{fontspec}) ã®æ¹æ³ã§æåã§æå®ããå¿
è¦ãããï¼
+ä¾ãã°ï¼\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}
%
-%\subsection{Changing default Japanese fonts}
-%\subsection{æ¨æºåæãã©ã³ãã®å¤æ´}
-\label{ssec-cfg}
-%<*en>
-If \texttt{luatexja.cfg} can be seen from \LuaTeX, \LuaTeX-ja automatically reads it.
-The main use of \texttt{luatexja.cfg} is for changing default Japanese fonts,
-when IPAex fonts cannot be installed in \TeX~system.
-One should not overuse this \texttt{luatexja.cfg}; fonts which will be used in
-a document should be specified in its source.
-For example,
-\begin{lstlisting}
-\def\ltj@stdmcfont{IPAMincho}
-\def\ltj@stdgtfont{IPAGothic}
-\end{lstlisting}
-makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of
-IPAex~Mincho and IPAex~Gothic.
+%\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
+%\subsection{\Param{kanjiskip}ã¨\Param{xkanjiskip}}
+\label{subs-kskip}
-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}
+%\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>
-\LuaTeX ããè¦ããä½ç½®ã« \texttt{luatexja.cfg} ãããã°ï¼\LuaTeX-jaã¯ãããèªã¿è¾¼ãï¼
-ãã®ãã¡ã¤ã«ãç¨ããã¨plain~\TeX, \LaTeXe ã«ãããæ¨æºåæãã©ã³ãã
-IPAexææã»IPAexã´ã·ãã¯ããå¤æ´ãããã¨ãã§ããï¼
-ãããï¼åºæ¬çã«ã¯\emph{æç« ä¸ã§ç¨ãããã©ã³ãã¯ï¼ä¾ãã° \Pkg{luatexja-preset} ãªã©ã§ï¼
-ææ¸ã½ã¼ã¹å
ã§æå®ããã¹ã}ã§ããï¼ãã® \texttt{luatexja.cfg} ã¯ï¼
-ãIPAexãã©ã³ããã¤ã³ã¹ãã¼ã«ã§ããªãããªã©ï¼IPAexãã©ã³ãã使ç¨ã§ããªãå ´åã«ã®ã¿
-å¿æ¥å¦ç½®çã«ç¨ããã¹ãã§ããï¼
-
-ä¾ãã°
+\item JFMã§æå®ãããã°ã«ã¼ï¼ã«ã¼ã³ï¼ãã \cs{inhibitglue} ã\textbf{JAchar}ã®å¨ãã§
+ çºè¡ããã¦ããã°ï¼ãã®ã°ã«ã¼ã¯æ¿å
¥ãããªãï¼
+%
+%<*en>
+\item The default glue which inserted between two \textbf{JAchar}s (\Param{%
+ kanjiskip}).
+%
+%<*ja>
+\item ããã©ã«ãã§2ã¤ã®\textbf{JAchar}ã®éã«æ¿å
¥ãããã°ã«ã¼(\Param{kanjiskip})ï¼
+%
+%<*en>
+\item The default glue which inserted between a \textbf{JAchar} and an
+ \textbf{ALchar} (\Param{xkanjiskip}).
+%
+%<*ja>
+\item ããã©ã«ãã§\textbf{JAchar}ã¨\textbf{ALchar}ã®éã«æ¿å
¥ãããã°ã«ã¼(\Param{xkanjiskip})ï¼
+%
+\end{itemize}
+%<*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.
+}
+%
+%<*ja>
+\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>
-
-\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:
+\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}
+
+%<*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}
+
+ãªãï¼ãã¼ã¸ã§ã³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~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is
- indicated in Table~\ref{table-rng3}.
+\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[ç¯å²3${}^{\text{\kern.1emJ}}$] å¥èªç¹ã¨è¨å·é¡ï¼ãããã¯ã®ãªã¹ãã¯è¡¨\ref{table-rng3}%
- ã«ç¤ºãã¦ããï¼
+\newpage
+\subsection{ç¦åå¦çé¢é£ãã©ã¡ã¼ã¿ã¨OpenTypeã®font feature}
+ç¦åå¦çã \Param{kanjiskip}, \Param{xkanjiskip} ã®æ¿å
¥ã«é¢é£ãããã©ã¡ã¼ã¿ã®ãã¡
+\begin{quote}
+ \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
+ \Param{postbreakpenalty}, \Param{kcatcode}
+\end{quote}
+ã¯ï¼æåã³ã¼ããã¨ã«è¨å®ããéã§ããï¼
+
+\Pkg{fontspec}ããã±ã¼ã¸ã使ãï¼\ref{ssec-fontspec}ç¯ï¼å ´åãªã©ï¼
+å種ã®OpenType featureãé©ç¨ãããã¨ãããã¨æããï¼å段è½ã«è¿°ã¹ããã©ã¡ã¼ã¿é¡ã¯ï¼
+\emph{OpenType featureã®é©ç¨åã®æåã³ã¼ãã«ãã£ã¦é©ç¨ãããï¼}
+ä¾ãã°ï¼ä»¥ä¸ã®ä¾ã«ããã¦10è¡ç®ã®ãã¢ãã¯ï¼\verb+hwid+ featureã®é©ç¨ã«ããåè§ã«ã¿ã«ãã®ãï½±ã
+ã«ç½®ãæããï¼ãããï¼ãã®ç´å¾ã«æ¿å
¥ããã \Param{postbreakpenalty}ã¯ï¼ç½®æåã®ãã¢ãã«å¯¾ããå¤10ã§ããï¼
+%
+
+\begin{LTXexample}[width=0.2\textwidth]
+\ltjsetparameter{postbreakpenalty={`ã¢, 10}}
+\ltjsetparameter{postbreakpenalty={`ï½±, 20}}
+
+\newcommand\showpostpena[1]{%
+ \leavevmode\setbox0=\hbox{#1\hbox{}}%
+ \unhbox0\setbox0=\lastbox\the\lastpenalty}
+
+\showpostpena{ã¢},
+\showpostpena{ï½±},
+{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ã¢}}
+\end{LTXexample}
+
+\clearpage
+%\part{Reference}
+%\part{ãªãã¡ã¬ã³ã¹}
+\label{part-ref}
+\suppressfloats[t]
+%<*ja>
+\section{\LuaTeX-jaã«ããã \cs{catcode}}
+\label{sec-catcode}
+\subsection{äºåç¥èï¼\pTeX ã¨\upTeX ã«ããã \cs{kcatcode}}
+\pTeXï¼\upTeX ã«ããã¦ã¯ï¼åææåãå¶å¾¡ç¶´å
ã§å©ç¨ã§ãããã©ãã
+㯠\cs{kcatcode} ã®å¤ã«ãã£ã¦æ±ºå®ãããã®ã§ãã£ãï¼
+詳細ã¯\autoref{tab:kcat}ãåç
§ããããï¼
%
-\begin{table}[!tb]
-%\caption{Unicode blocks in predefined character range~3.}\medskip
-%\caption{æåç¯å²3ã«æå®ããã¦ããUnicodeãããã¯ï¼}
-\label{table-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{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:
+\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}
+%\medskip
+
+\noindent\hfill
+\begin{tabular}{ccccc}
+\toprule
+\bfseries \cs{kcatcode}&
+%<*en>
+\bfseries meaning&
+\bfseries control word&
+\bfseries widow penalty&
+\bfseries linebreak\\
%
%<*ja>
-\item[ç¯å²4${}^{\text{A}}$] é常åæãã©ã³ãã«ã¯å«ã¾ãã¦ããªãæåï¼
- ãã®ç¯å²ã¯ä»ã®ç¯å²ã«ãªãã»ã¨ãã©å
¨ã¦ã®Unicodeãããã¯
- ã§æ§æããã¦ããï¼ãããã£ã¦ï¼ãããã¯ã®ãªã¹ãã示ã
- 代ããã«ï¼ç¯å²ã®å®ç¾©ãã®ãã®ã示ãï¼
+\bfseries æå³&
+\bfseries å¶å¾¡ç¶´ä¸ã«ä½¿ç¨&
+\bfseries æåã¦ã£ãã¦å¦ç&
+\bfseries ç´å¾ã§ã®æ¹è¡\\
%
-\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 Table~\ref{table-rng6}.
-%\item[ç¯å²6${}^{\text{\kern.1emJ}}$] æ¥æ¬èªã§ç¨ããããæåï¼ãããã¯ã®ãªã¹ãã¯è¡¨\ref{table-rng6}ã«ç¤ºãï¼
-\begin{table}[!tb]
-%\caption{Unicode blocks in predefined character range~6.}\medskip
-%\caption{æåç¯å²6ã«æå®ããã¦ããUnicodeãããã¯ï¼}
-\label{table-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 Table~\ref{table-rng7}.
-%
-%<*ja>
-\item[ç¯å²7${}^{\text{\kern.1emJ}}$] CJKè¨èªã§ç¨ããããæåã®ãã¡ï¼Adobe-Japan1-6ã«
- å«ã¾ãã¦ããªããã®ï¼
- ãããã¯ã®ãªã¹ãã¯è¡¨\ref{table-rng7}ã«ç¤ºãï¼
-%
-\begin{table}[!tb]
-%\caption{Unicode blocks in predefined character range~7.}\medskip
-%\caption{æåç¯å²7ã«æå®ããã¦ããUnicodeãããã¯ï¼}
-\label{table-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{textcomp} package or the
-\Pkg{marvosym} package.
-
-For example, the codepoint \cs{textparagraph} which is provided by the \Pkg{textcomp}
-package is 182. This codepoint corresponds \P\ (\text{U+00B6}) in Unicode.
-Similarly, \cs{Frowny} which is provided by the \Pkg{marvosym} package has
-the same codepoint as \S\ (\text{U+00A7}).
-Hence, as previous versions of \LuaTeX-ja, if these characters are treated as
-\text{JAchar}s, then \cs{textparagraph} produces ``ltjjachar`¶'' (in a Japanese font),
-and \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font).
+\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
-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}.
+\medskip
-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{textcomp}ããã±ã¼ã¸ã\Pkg{marvosym}ããã±ã¼ã¸çï¼Unicodeãã©ã³ãã§ãªã
-ä¼çµ±çãª8ããããã©ã³ããç¨ããå ´åã«ã¯æ³¨æãå¿
è¦ã§ããï¼
-
-ä¾ãã°ï¼\Pkg{textcomp}ããã±ã¼ã¸ã®æä¾ãã \cs{textparagraph} ã¯ï¼
-符å·ä½ç½®ã182ï¼ã¤ã¾ã \texttt{0xB6} ã§ããï¼Unicodeã§ã¯ãã®ç¬¦å·ä½ç½®ã§ã¯\P\ (\text{U+00B6}) ã«å¯¾å¿ããï¼
-ã¾ãï¼\Pkg{marvosym}ããã±ã¼ã¸ã®æä¾ãã \cs{Frowny} ãï¼ç¬¦å·ä½ç½®ã¯167ï¼ã¤ã¾ãUnicodeã«ããã
-\S\ (\text{U+00A7}) ã¨åã符å·ä½ç½®ã«ããï¼
-å³ã¡ï¼ä»¥åã®ãã¼ã¸ã§ã³ã®ããã«ï¼ãåç¯ã®æåç¯å²8å
ã®æåã¯\textbf{JAchar}ãã¨ããè¨å®ã§
-ãã£ãã¨ããã¨ï¼ä¸è¨ã® \cs{textparagraph} ã¯åæãã©ã³ãã§ã\ltjjachar`¶ããåºåãï¼
-ã¾ã \cs{Frowny} ã¯åæãã©ã³ãã§ã\ltjjachar`§ããåºåãããã¨ã«ãªãï¼
-
-ãã®ãããªäºæ
ãé¿ããããã«ï¼æ¬ãã¼ã¸ã§ã³ãã㯠\texttt{U+0080}--\texttt{U+00FF} ã®ç¯å²ã®
-æåã¯å
¨ã¦\textbf{ALchar}ã¨ãªãããã«åæè¨å®ãå¤æ´ãã¦ããï¼
-ç¹ã«å½±é¿ãåããã®ãï¼JIS~X~0208ã®ä¸é¨åã§ããæåç¯å²8å
ã®æåã§ããï¼
-\emph{\Pkg{fontspec}ããã±ã¼ã¸ãèªã¿è¾¼ãã ããã¦æ¬§æè¨å·ã¨ãã¦ãããã®æåã®åºåç°å¢ãæ´ã
-ãªãã¨ï¼ã½ã¼ã¹ä¸ã«ç´æ¥è¨è¿°ãã¦ãåºåãããªã}ãã¨ã«ãªãï¼
-
-ãªãï¼æåç¯å²ã®è¨å®ã«é¢ããã1ã¤ã®æåã\textbf{ALchar}, \textbf{JAchar}ã§åºåãããå ´åã«ã¯ï¼
-以ä¸ã®ä¾ã®ããã«ãããã \cs{ltjalchar},~\cs{ltjjachar} ã«è©²å½æåã®æåã³ã¼ãã渡ãã°ããï¼
-\begin{LTXexample}[width=0.3\textwidth]
-\gtfamily\large % default, ALchar, JAchar
-¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar
-α, \ltjalchar`α, \ltjjachar`α % default: JAchar
-\end{LTXexample}
+æåã¦ã£ãã¦å¦çï¼ãæ¼¢åãä¸æåã ã次ã®è¡ã«è¡ãã®ãé²ãã
+\cs{jcharwidowpenalty} ãï¼
+ãã®æåã®ç´åã«æ¿å
¥ãããããå¦ãï¼ã示ãï¼
%
+\end{table}
-%\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}).
+\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>
-\item ããã©ã«ãã§2ã¤ã®\textbf{JAchar}ã®éã«æ¿å
¥ãããã°ã«ã¼(\Param{kanjiskip})ï¼
+\pTeX ã§ã¯ \cs{kcatcode} ã¯JIS~X~0208ã®åºåä½ï¼
+\upTeX ã§ã¯æ¦ãUnicodeãããã¯åä½\footnote{%
+ \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)ã¯
+ ãå
¨è§è±æ°åããåè§ã«ããããã®ä»ãã¨3ã¤ã«åå²ããã¦ããï¼
+ ããããå¥ã
ã« \cs{kcatcode} ãæå®ã§ããããã«ãªã£ã¦ããï¼
+}ã§è¨å®å¯è½ã«ãªã£ã¦ããï¼ãã®ããï¼\pTeX ã¨\upTeX ã®åæç¶æ
ã§ã¯
+å¶å¾¡ç¶´å
ã§ä½¿ç¨å¯è½ãªæåãå¾®å¦ã«ç°ãªã£ã¦ããï¼
%
+
%<*en>
-\item The default glue which inserted between a \textbf{JAchar} and an
- \textbf{ALchar} (\Param{xkanjiskip}).
-%
-%<*ja>
-\item ããã©ã«ãã§\textbf{JAchar}ã¨\textbf{ALchar}ã®éã«æ¿å
¥ãããã°ã«ã¼(\Param{xkanjiskip})ï¼
-%
+\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}
-%<*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.
-}
%
%<*ja>
-\Param{kanjiskip}ã\Param{xkanjiskip}ã®å¤
-ã¯ä»¥ä¸ã®ããã«ãã¦å¤æ´å¯è½ã§ããï¼
+\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{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.
+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}
-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).
+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+\ï¼å¹´ç®è¥¿æ¦+ 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>
-ããã§ï¼\cs{zw} ã¯ç¾å¨ã®åæãã©ã³ãã®å
¨è§å¹
ã表ãé·ãã§ããï¼
-\pTeX ã«ãããé·ãåä½ \texttt{zw} ã¨åãããã«ä½¿ç¨ã§ããï¼
+ãã¤ãã£ãã«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 ã®ä¸¡æ¹ãç¨ãã¦ããï¼
-ãããã®ãã©ã¡ã¼ã¿ã®å¤ã¯ä»¥ä¸ã®ããã«åå¾ã§ããï¼
-æ»ãå¤ã¯å
é¨å¤ã§ã¯ãªã\emph{æåå}ã§ããï¼\cs{the} ã¯åç½®ã§ããªãï¼ãã¨ã«æ³¨æãã¦ã»ããï¼
+ã ãï¼\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+\ï¼å¹´ç®è¥¿æ¦+\footnote{ç§ç è²»\LaTeX ã§ä½¿ç¨ããã¦ããããã§ãï¼}ãªã©ã使ããªããã¨ã¨ãªãï¼
+\LuaTeX-jaã¸ã®ç§»è¡ã§æéãçããï¼ãã®ããï¼\LuaTeX-jaã§ã¯
+\texttt{unicode-letters.tex} ã®å¾åé¨ã«ãããå
容ãèªåã§ããããï¼
+çµæã¨ãã¦\textbf{\XeTeX ã«ãããåæè¨å®ã¨åãã«ãªãããã«ãã¦ããï¼}
%
-\begin{LTXexample}
-kanjiskip: \ltjgetparameter{kanjiskip},\\
-xkanjiskip: \ltjgetparameter{xkanjiskip}
-\end{LTXexample}
+
+\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}
%<*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}).
+\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>
-JFMã¯ãæã¾ãã\Param{kanjiskip}ã®å¤ãã
-ãæã¾ãã\Param{xkanjiskip}ã®å¤ããæã£ã¦ãããã¨ãããï¼
-ãããã®ãã¼ã¿ã使ãããã«ã¯ï¼\Param{kanjiskip}ã%
-\Param{xkanjiskip}ã®å¤ã \cs{maxdimen} ã®å¤ã«è¨å®ããã°ãããï¼
-\cs{ltjgetparameter} ã«ãã£ã¦åå¾ãããã¨ã¯ã§ããªãã®ã§æ³¨æãå¿
è¦ã§ããï¼
+\subsection{å¶å¾¡ç¶´ä¸ã«ä½¿ç¨åºæ¥ãJISéæ¼¢åã®éã}
+
+ã¨ã³ã¸ã³ãç°ãªãã®ã§ï¼\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} ãªã©ãåç
§ãããã¨ï¼
%
-%\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.
+\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>
-\Param{xkanjiskip}ããã¹ã¦ã®\textbf{JAchar}ã¨\textbf{ALchar}ã®å¢çã«
-æ¿å
¥ãããã®ã¯æã¾ãããã¨ã§ã¯ãªãï¼ä¾ãã°ï¼\Param{xkanjiskip}ã¯éãæ¬å¼§ã®
-å¾ã«ã¯æ¿å
¥ãããã¹ãã§ã¯ãªãï¼ã(ããã¨ã(\hskip\ltjgetparameter{xkanjiskip}ããã
-æ¯ã¹ã¦ã¿ãï¼ï¼
-\LuaTeX-jaã§ã¯\Param{xkanjiskip}ãããæåã®åï¼å¾ã«æ¿å
¥ãããã©ãããï¼
-\textbf{JAchar}ã«å¯¾ãã¦ã¯\Param{jaxspmode}ãï¼\textbf{ALchar}ã«å¯¾ãã¦ã¯
-\Param{alxspmode}ãããããå¤ãããã¨ã§å¶å¾¡ãããã¨ãã§ããï¼
+\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})ã§çµãã ããã¯ã¹ãå転ãããæ¹å¼ã§
+縦çµãå®è£
ããï¼
%
-\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}.
-%
+%\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>
-2ã¤ç®ã®å¼æ°ã® \texttt{preonly}ã¯ã\Param{xkanjiskip}ã®æ¿å
¥ã¯ãã®æåã®
-åã§ã®ã¿è¨±ããï¼å¾ã§ã¯è¨±ããªãããã¨ãæå³ããï¼ä»ã«æå®å¯è½ãªå¤ã¯
-\texttt{postonly}, \texttt{allow}, \texttt{inhibit}ã§ããï¼
+\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}
+
+\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
%
%<*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:
+\begin{tabular}{>{\bfseries}lcccc}
+\toprule
+&horizontal (\emph{yoko}~direction)&vertical (\emph{tate}~direction)&%
+ \emph{dtou} direction&\emph{utod} direction\\
+\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\\
+\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
%
-%<*ja>
-ãªãï¼ç¾è¡ã®
-ä»æ§ã§ã¯ï¼\Param{jaxspmode}, \Param{alxspmode}ã¯ãã¼ãã«ãå
±æãã¦ããï¼
-ä¸ã®ã³ã¼ãã®1è¡ç®ã次ã®ããã«å¤ãã¦ãåããã¨ã«ãªãï¼
-%
-\begin{lstlisting}
-\ltjsetparameter{alxspmode={`ã,preonly}, jaxspmode={`\!,postonly}}
-\end{lstlisting}
+\end{table}
+
%<*en>
-One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}).
+\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.
+
+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>
-ã¾ãï¼ããã2ãã©ã¡ã¼ã¿ã«ã¯æ°å¤ã§å¤ãæå®ãããã¨ãã§ããï¼\ref{ssec-param}ç¯ãåç
§ï¼ï¼
+\LuaTeX-jaããµãã¼ãããçµæ¹åã¯\autoref{tab-dir}ã«ç¤ºã4ã¤ã§ããï¼
+4åç®ã® \cs{dtou} ã¯èãæ
£ããªãå½ä»¤ã ã¨æããï¼
+å®ã¯\pTeX ã«ååã®å½ä»¤ãï¼ããã¥ã¡ã³ãã«ã¯æ¸ããã¦ããªããï¼åå¨ããï¼
+Down-TO-Upã®æå³ãªã®ã ããï¼\cs{dtou} ã使ç¨ããæ©ä¼ã¯ãªãã ãããï¼
+\LuaTeX-jaã§ã¯ãããã°ç¨ã«å®è£
ãã¦ããï¼
+5åç®ã® \cs{utod} ã¯ï¼\pTeX ã§è¨ãã縦æ°å¼ãã£ã¬ã¯ã·ã§ã³ãã«ç¸å½ãããã®ã§ããï¼
+
+çµæ¹åã¯ï¼\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} ããããã使ç¨ãããã¨ã§ï¼
+ç¾å¨ä½æä¸ã®ãªã¹ããããã¯ã¹ã空ã®æã«ã®ã¿å¤æ´å¯è½ã§ããï¼
+ã¾ãï¼ç¸¦çµä¸ã®æ°å¼å
ã®ããã¯ã¹ã¯\pTeX ã¨åãããã«çµæ¹åã \cs{utod} ã¨ãªãï¼
%
%<*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.
+\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}
+
+\autoref{tab-diffdir} shows how a box is arranged when
+the direction inside the box and that outside the box differ.
%
%<*ja>
-ããå
¨ã¦ã®\Param{kanjiskip}ã¨\Param{xkanjiskip}ã®æ¿å
¥ãæå¹åï¼ç¡å¹å
-ããããã°ï¼ãããã\Param{autospacing}ã¨\Param{autoxspacing}ã
-\texttt{true}/\texttt{false}ã«è¨å®ããã°ããï¼
-%
-
-%\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}
-\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>
-åæãã©ã³ãã¨æ¬§æãã©ã³ããåãããããã«ã¯ï¼æã
ã©ã¡ããã®ãã¼ã¹ã©ã¤ã³ã®ç§»åã
-å¿
è¦ã«ãªãï¼\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}
-%
+\subsection{ç°æ¹åã®ããã¯ã¹}
-%<*en>
-Here the horizontal line in the below example is the baseline of a line.
-%
-%<*ja>
-ä¸ã®ä¾ã«ããã¦å¼ããã¦ããæ°´å¹³ç·ããã¼ã¹ã©ã¤ã³ã§ããï¼
-%
+縦çµã®ä¸ã«ã42ããªã©ã®2æ¡ä»¥ä¸ã®ç®ç¨æ°åã横çµã§çµããªã©ï¼
+ç°ãªãçµæ¹åãæ··å¨ããããã¨ããã°ãã°è¡ãããï¼
+çµæ¹åã®æ··å¨ã\pTeX ã¨åãããã«ã§ããï¼
\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}
-
-%<*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ã¤ã®ãã©ã¡ã¼ã¿ãé©åã«è¨å®ãããã¨ã§ï¼ãµã¤ãºã®
-ç°ãªãæåãä¸å¿ç·ã«æãããã¨ãã§ããï¼
-以ä¸ã¯ä¸ã¤ã®ä¾ã§ããï¼å¤ã¯ãã¾ã調æ´ããã¦ããªããã¨ã«æ³¨æï¼ï¼
-%
-\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.
-%
-%<*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}ãã©ã¡ã¼ã¿ã«ã¤ãã¦ã¯ãã®ãããªåé¡ã¯èµ·ãããªãï¼
-%
-
-%<*ja>
-\paragraph{æ°å¼ã«ãããæåï¼\pTeX ã¨ã®éã}
-\textbf{ALchar}ã®ãã¼ã¹ã©ã¤ã³ãè£æ£ãã \Param{yalbaselineshift} ãã©ã¡ã¼ã¿ã¯
-ã»ã¼\pTeX ã«ããã \cs{ybaselineshift} ã«å¯¾å¿ãã¦ãããã®ã§ãããï¼
-æ°å¼ä¸ã®æåã¯ç°ãªã£ã¦ããã®ã§æ³¨æãå¿
è¦ã§ããï¼
-ä¾ãã°ï¼è¡¨\ref{tab:math_bsa}ã®ããã«ï¼æ°å¼ä¸ã«æ示çã«ç¾ãã \cs{hbox} ã¯ï¼
-\begin{itemize}
- \item 2015年以åã®\pTeX ã§ã¯ï¼ããã¯ã¹å
¨ä½ã \cs{ybaselineshift} ã ã¨ã·ãããããã®ã§ï¼
- 表\ref{tab:math_bsa}ä¸ã®``ã''ã®ããã«ï¼ããã¯ã¹ä¸ã®åææåã¯
- \ \cs{ybaselineshift} ã ãã·ããããï¼ä¸æ¹ï¼``for all''ã®ããã«ï¼
- ããã¯ã¹å
ã®æ¬§ææåã¯2éã«ã·ããããããã¨ã«ãªãï¼
- \item ä¸æ¹ï¼\LuaTeX-jaã§ã¯ãã®ãããªãã¨ã¯ããããï¼
- æ°å¼ä¸ã«æ示çã«ç¾ãã \cs{hbox} ã¯ã·ããããªãï¼ãã®ããï¼
- 表\ref{tab:math_bsa}ä¸ã®``ã''ã``for all''ãï¼ããããæ¬æä¸ã«
- æ¸ãããã¨ãã¨åãä¸ä¸ä½ç½®ã«çµã¾ããï¼
-
- ãªãï¼\TeX~Live~2016以éã®\pTeX ã§ã¯æ¹ä¿®ããªããï¼\LuaTeX-jaã¨
- è¿ãæåã«ãªãããã«ãã¦ãããï¼æ°å¼ä¸ã«ç´ã«æ¸ããã``ã''ã®ãã¼ã¹ã©ã¤ã³ã«ã¤ãã¦ã¯
- ã¾ã éããè¦ãããï¼
-\end{itemize}
-\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>
-\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>
-\subsection{ç¦åå¦çé¢é£ãã©ã¡ã¼ã¿ã¨OpenTypeã®font feature}
-ç¦åå¦çã \Param{kanjiskip}, \Param{xkanjiskip} ã®æ¿å
¥ã«é¢é£ãããã©ã¡ã¼ã¿ã®ãã¡
-\begin{quote}
- \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty},
- \Param{postbreakpenalty}, \Param{kcatcode}
-\end{quote}
-ã¯ï¼æåã³ã¼ããã¨ã«è¨å®ããéã§ããï¼
-
-\Pkg{fontspec}ããã±ã¼ã¸ã使ãï¼\ref{ssec-fontspec}ç¯ï¼å ´åãªã©ï¼
-å種ã®OpenType featureãé©ç¨ãããã¨ãããã¨æããï¼å段è½ã«è¿°ã¹ããã©ã¡ã¼ã¿é¡ã¯ï¼
-\emph{OpenType featureã®é©ç¨åã®æåã³ã¼ãã«ãã£ã¦é©ç¨ãããï¼}
-ä¾ãã°ï¼ä»¥ä¸ã®ä¾ã«ããã¦10è¡ç®ã®ãã¢ãã¯ï¼\verb+hwid+ featureã®é©ç¨ã«ããåè§ã«ã¿ã«ãã®ãï½±ã
-ã«ç½®ãæããï¼ãããï¼ãã®ç´å¾ã«æ¿å
¥ããã \Param{postbreakpenalty}ã¯ï¼ç½®æåã®ãã¢ãã«å¯¾ããå¤10ã§ããï¼
-%
-
-\begin{LTXexample}[width=0.2\textwidth]
-\ltjsetparameter{postbreakpenalty={`ã¢, 10}}
-\ltjsetparameter{postbreakpenalty={`ï½±, 20}}
-
-\newcommand\showpostpena[1]{%
- \leavevmode\setbox0=\hbox{#1\hbox{}}%
- \unhbox0\setbox0=\lastbox\the\lastpenalty}
-
-\showpostpena{ã¢},
-\showpostpena{ï½±},
-{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ã¢}}
+ããã¯æ¨ªçµ% yoko
+\hbox{\tate % tate
+ \hbox{縦çµ}% tate
+ ã®ä¸ã«
+ \hbox{\yoko 横çµã®å
容}% yoko
+ ãæ¿å
¥ãã
+}
+ã¾ã横çµã«æ»ã% yoko
\end{LTXexample}
-\clearpage
-%\part{Reference}
-%\part{ãªãã¡ã¬ã³ã¹}
-\label{part-ref}
-\suppressfloats[t]
-%<*ja>
-\section{\LuaTeX-jaã«ããã \cs{catcode}}
-\label{sec-catcode}
-\subsection{äºåç¥èï¼\pTeX ã¨\upTeX ã«ããã \cs{kcatcode}}
-\pTeXï¼\upTeX ã«ããã¦ã¯ï¼åææåãå¶å¾¡ç¶´å
ã§å©ç¨ã§ãããã©ãã
-㯠\cs{kcatcode} ã®å¤ã«ãã£ã¦æ±ºå®ãããã®ã§ãã£ãï¼
-詳細ã¯è¡¨\ref{table-kcat}ãåç
§ããããï¼
+ç°ãªãçµæ¹åã®ããã¯ã¹ãé
ç½®ããå ´åã«ã©ãçµã¾ãããã®ä»æ§ãï¼\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 Table~\ref{table-kcat}.
-%
\begin{table}[t]
-\small
-\caption{\cs{kcatcode} in \upTeX}
-\label{table-kcat}
+%\caption{ç°æ¹åã®ããã¯ã¹ã®é
ç½®}
+%\caption{Boxes in different direction}
%\medskip
-
-\noindent\hfill
-\begin{tabular}{ccccc}
-\toprule
-\bfseries \cs{kcatcode}&
-%<*en>
-\bfseries meaning&
-\bfseries control word&
-\bfseries widow penalty&
-\bfseries linebreak\\
-%
-%<*ja>
-\bfseries æå³&
-\bfseries å¶å¾¡ç¶´ä¸ã«ä½¿ç¨&
-\bfseries æåã¦ã£ãã¦å¦ç&
-\bfseries ç´å¾ã§ã®æ¹è¡\\
-%
+\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
-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\\
+Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\
\bottomrule
-\end{tabular}\hfill\null
+\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
+\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>
-æåã¦ã£ãã¦å¦çï¼ãæ¼¢åãä¸æåã ã次ã®è¡ã«è¡ãã®ãé²ãã
-\cs{jcharwidowpenalty} ãï¼
-ãã®æåã®ç´åã«æ¿å
¥ãããããå¦ãï¼ã示ãï¼
+\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:
+%
+%<*ja>
+ãã©ã³ããï¼æ¨ªçµç¨ï¼åæãã©ã³ãã¨ãã¦èªã¿è¾¼ãããã«ã¯ï¼\cs{jfont} ã
+\ \cs{font} ããªããã£ãã®ä»£ããã«ç¨ããï¼
+\cs{jfont} ã®ææ³ã¯ \cs{font} ã¨åãã§ããï¼
+\LuaTeX-jaã¯\Pkg{luaotfload}ããã±ã¼ã¸ãèªåçã«èªã¿è¾¼ãã®ã§ï¼
+TrueType/OpenTypeãã©ã³ãã«featureãæå®ãããã®ãåæãã©ã³ãã¨ãã¦ç¨ãã
+ãã¨ãã§ããï¼
+%
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\tradgt={file:KozMinPr6N-Regular.otf:script=latn;%
+ +trad;-kern;jfm=ujis} at 14pt
+\tradgt å½ï¼ä½ï¼å»ï¼åº
+\end{LTXexample}
+
+%<*en>
+Note that the defined control sequence
+(\cs{tradgt} in the example above) using \cs{jfont} is not a
+\textit{font\_def} token, but a macro.
+Hence the input like \verb+\fontname\tradgt+
+causes a error. We denote control sequences which are defined in
+\cs{jfont} by .
+%
+%<*ja>
+ãªãï¼\cs{jfont} ã§å®ç¾©ãããå¶å¾¡ç¶´ï¼ä¸ã®ä¾ã 㨠\cs{tradgt}ï¼
+ã¯\textit{font\_def}ãã¼ã¯ã³ã§ã¯ãªããã¯ãã§ããï¼å¾ã£ã¦ï¼\verb+\fontname\tradgt+ ã®ãããª
+å
¥åã¯ã¨ã©ã¼ã¨ãªãï¼ä»¥ä¸ã§ã¯ \cs{jfont} ã§å®ç¾©ããã
+å¶å¾¡ç¶´ãã§è¡¨ãï¼
+%
+
+\paragraph{JFM}
+%<*en>
+a JFM has measurements of characters and
+glues/kerns that are automatically inserted for Japanese
+typesetting. The structure of JFM will be described in the next
+subsection. At the calling of \cs{jfont}, you must specify
+which JFM will be used for this font by the following keys:
+%
+%<*ja>
+JFMã¯æåã¨åæçµçã§èªåçã«æ¿å
¥ããã
+ã°ã«ã¼ï¼ã«ã¼ã³ã®å¯¸æ³æ
å ±ãæã£ã¦ããï¼JFMã®æ§é ã¯æ¬¡ã®ç¯ã§è¿°ã¹ãï¼
+\cs{jfont} å½ä»¤ã®å¼ã³åºãã®éã«ã¯ï¼ã©ã®JFMãç¨ããã®ãã以ä¸ã®ãã¼ã§
+æå®ããå¿
è¦ãããï¼
+%
+
+
+\begin{table}[t]
+%\caption{Differences between horizontal JFMs shipped with \LuaTeX-ja}
+%\caption{\LuaTeX-ja ã«å梱ããã¦ãã横çµç¨JFMã®éã}
+%\medskip
+\label{tab-difjfm}
+\ltjsetparameter{jacharrange={+3}}
+\centering\small
+\def\r#1#2{%
+ \hbox{\Large\vrule
+ \parbox[b]{7\zw}{%
+ \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ âââââââ
+ ããæ¥ã¢ã¢ã¡ãããã使ãã§è¿·åã«ãªã£ã¦æ³£ãã¾ããï¼
+ }\vrule}}
+\def\s#1#2{%
+ \Large
+ \parbox[b]{7\zw}{%
+ \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ ã¡ãã£ã¨ï¼ä½
+ }}
+\def\t#1#2#3{\hbox to 0pt{\hss%
+ \setbox0=\hbox{\addjfontfeatures{YokoFeatures={JFM=#1}}\huge #3}%
+ \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
+ \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
+ \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+ \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+ \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
+{\Large\tabcolsep0pt
+\begin{tabular}{m{8\zw}m{8\zw}m{8\zw}}
+\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{jis}{black}&
+\leavevmode\hbox to 0pt{\r{jis}{black}\hss}\r{min}{red}&
+\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{min}{red}\\
+\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{jis}{black}&
+\leavevmode\hbox to 0pt{\s{jis}{black}\hss}\s{min}{red}&
+\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{min}{red}\\
+\leavevmode\qquad\t{ujis}{blue}{æ¼¢}\t{jis}{black}{æ¼¢}\qquad
+ \t{ujis}{blue}{ã£}\t{jis}{black}{ã£}&
+\leavevmode\qquad\t{jis}{black}{æ¼¢}\t{min}{red}{æ¼¢}\qquad
+ \t{jis}{black}{ã£}\t{min}{red}{ã£}&
+\leavevmode\qquad\t{ujis}{blue}{æ¼¢}\t{min}{red}{æ¼¢}\qquad
+ \t{ujis}{blue}{ã£}\t{min}{red}{ã£}\\
+\end{tabular}\par}
+
+(\textcolor{blue}{Blue: \texttt{jfm-ujis.lua}},
+\textcolor{black}{Black: \texttt{jfm-jis.lua}},
+\textcolor{red}{Red: \texttt{jfm-min.lua}})
+\ltjsetparameter{jacharrange={-3}}
+\end{table}
+
+\begin{cslist}
+\item[jfm=]
+%<*en>
+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 horizontal JFMs are shipped with \LuaTeX-ja:
+%
+%<*ja>
+ç¨ããï¼æ¨ªçµç¨ï¼JFMã®ååãæå®ããï¼ãã以åã«æå®ãããJFMãèªã¿è¾¼ã¾ãã¦ããªããã°ï¼
+\texttt{jfm-.lua}ãèªã¿è¾¼ãï¼ä»¥ä¸ã®æ¨ªçµç¨JFMã\LuaTeX-jaã«ã¯å梱ããã¦ããï¼
+%
+\begin{description}
+%<*en>
+\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.
+%
+%<*ja>
+\item[\tt jfm-ujis.lua] \LuaTeX-jaã®æ¨æºJFMã§ããï¼ãã®JFMã¯\upTeX ã§
+ ç¨ããããUTF/OTFããã±ã¼ã¸ç¨ã®åæç¨TFMã§ãã \verb+upnmlminr-h.tfm+ ã
+ å
ã«ãã¦ããï¼\Pkg{luatexja-otf}ããã±ã¼ã¸ã使ãã¨ãã¯ãã®JFMãæå®ããã¹ãã§ããï¼
+%
+%<*en>
+\item[\tt jfm-jis.lua] A counterpart for \verb+jis.tfm+, ``JIS font
+ metric'' which is widely used in \pTeX. A major difference between
+ \texttt{jfm-ujis.lua} and this \texttt{jfm-jis.lua} is that
+ most characters under \texttt{jfm-ujis.lua} are square-shaped,
+ while that under \texttt{jfm-jis.lua} are horizontal
+ rectangles.
+%
+%<*ja>
+\item[\tt jfm-jis.lua] \pTeX ã§åºãç¨ãããã¦ãããJISãã©ã³ãã¡ããªãã¯ã
+ \verb+jis.tfm+ ã«ç¸å½ããJFMã§ããï¼\texttt{jfm-ujis.lua} ã¨ãã®
+ \texttt{jfm-jis.lua} ã®ä¸»ãªéãã¯ï¼\texttt{jfm-ujis.lua} ã§ã¯ã»ã¨ãã©ã®æåã
+ æ£æ¹å½¢ç¶ã§ããã®ã«å¯¾ãï¼\texttt{jfm-jis.lua} ã§ã¯æ¨ªé·ã®é·æ¹å½¢ç¶ã§ãããã¨ã¨ï¼
+ \texttt{jfm-ujis.lua} ã§ã¯ãï¼ããï¼ãã®ç´å¾ã«åè§ç©ºç½ãæ¿å
¥ããããã¨ã§ããï¼
+%
+%<*en>
+\item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
+ of the default Japanese font metric shipped with \pTeX.
+%
+%<*ja>
+\item[\tt jfm-min.lua] \pTeX ã«å梱ããã¦ããããã©ã«ãã®åæç¨TFM
+(\verb+min10.tfm+)ã«ç¸å½ãï¼è¡æ«ã§æåãæãããã«ããããã«ãã£ããªã©ä¸é¨ã®æåå¹
ãå¤ãã£
+ ã¦ããï¼\verb+min10.tfm+ ã«ã¤ãã¦ã¯\cite{min10}ã詳ããï¼
%
-\end{table}
-
+\end{description}
%<*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.
+The difference among these three~JFMs is shown in \autoref{tab-difjfm}.
%
%<*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 ã®åæç¶æ
ã§ã¯
-å¶å¾¡ç¶´å
ã§ä½¿ç¨å¯è½ãªæåãå¾®å¦ã«ç°ãªã£ã¦ããï¼
+ããã3ã¤ã®JFMã®éãã¯\autoref{tab-difjfm}ã«ç¤ºããï¼è¡¨ä¸ã®æä¾ã®ä¸é¨ã«ã¯ï¼
+\cite{min10}ã®å³3,~4ã®ãã®ãç¨ããï¼
%
+\begin{figure}
+\begin{LTXexample}[width=0.3\textwidth]
+\ltjsetparameter{differentjfm=both}
+\jfont\F=file:KozMinPr6N-Regular.otf:jfm=ujis
+\jfont\G=file:KozGoPr6N-Medium.otf:jfm=ujis
+\jfont\H=file:KozGoPr6N-Medium.otf:jfm=ujis;jfmvar=hoge
+\F ï¼{\G ãã}ï¼ % halfwidth space
+ ï¼{\H ãã}ï¼ % fullwidth space
+
+ã»ãï¼{\G ãã»ãã}ï¼ã»ãï¼\par
+ã»ãï¼{\H ãã»ãã}ï¼ã»ãï¼% pTeX-like
+
+\ltjsetparameter{differentjfm=paverage}
+\end{LTXexample}
+\caption{Example of \texttt{jfmvar} key}
+\label{fig:jfmvar}
+\end{figure}
+
%<*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}
+\item[jfmvar=]
+Sometimes there is a need that \ldots.
%
%<*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}
+\item[jfmvar=]
+æ¨æºã§ã¯ï¼JFMã¨ãµã¤ãºãåãã§ï¼
+ å®ãã©ã³ãã ããç°ãªã2ã¤ã®åæãã©ã³ãã¯ãåºå¥ãããªããï¼ä¾ãã°
+\autoref{fig:jfmvar}ã«ããã¦ï¼æåã®ãï¼ãã¨ãããã®å®ãã©ã³ãã¯ç°ãªããï¼
+JFMããµã¤ãºãåããªã®ã§ï¼æ®éã«ãï¼ããã¨å
¥åããæã¨åãããã«åè§ç©ºãã¨ãªãï¼
+
+ãããï¼JFMã¨ãµã¤ãºãåãã§ãã£ã¦ãï¼\texttt{jfmvar} ãã¼ã®ç°ãªã
+2ã¤ã®åæãã©ã³ãï¼ä¾ãã°\autoref{fig:jfmvar}ã§è¨ã \cs{F} 㨠\cs{H}ï¼
+ã¯ãåºå¥ããããï¼ç°ãªãåæãã©ã³ãã«ç°ãªã \texttt{jfmvar} ãã¼ãå²ãå½ã¦ï¼
+ãã¤\Param{differentjfm}ãã©ã¡ã¼ã¿ã \texttt{both} ã«è¨å®ããã°ï¼
+\pTeX ã¨ä¼¼ãç¶æ³ã§çµçããããã¨ã«ãªãï¼
%
+\end{cslist}
+
+\begin{figure}
+\begin{LTXexample}[pos=t]
+\newcommand\test{\vrule ãã¤ãããã¯ãã¤ã¯ã\vrule\\}
+\jfont\KMFW = KozMinPr6N-Regular:jfm=prop;-kern at 17pt
+\jfont\KMFK = KozMinPr6N-Regular:jfm=prop at 17pt % kern is activated
+\jfont\KMPW = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;-kern at 17pt
+\jfont\KMPK = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;+kern at 17pt
+\begin{multicols}{2}
+\ltjsetparameter{kanjiskip=0pt}
+{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+
+\ltjsetparameter{kanjiskip=3pt}
+{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+\end{multicols}
+\end{LTXexample}
+\caption{Kerning information and \Param{kanjiskip}}
+\label{fig:kern-jfm}
+\end{figure}
+%\paragraph{Using kerning information in a font}
+%\paragraph{ãã¢ã«ã¼ãã³ã°æ
å ±ã®ä½¿ç¨}
+\label{para-kern}
%<*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}
+Some fonts have information for inter-glyph spacing.
+\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.
-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+\ï¼å¹´ç®è¥¿æ¦+ 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.}
+Note that in \cs{setmainjfont} etc.\ which are provided by \Pkg{luatexja-fontspec}
+package, kerning option is set \emph{off} (\texttt{Kerning=Off}) by default,
+because of the compatibility with previous versions of \LuaTeX-ja.
%
%<*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 ã®ä¸¡æ¹ãç¨ãã¦ããï¼
-
-ã ãï¼\XeTeX ã«ããã \cs{catcode} ã®åæè¨å®ã¨
-\LuaTeX ã«ãããããã¯ä¸è´ãã¦ããªãï¼
+ããã¤ãã®ãã©ã³ãã¯ã°ãªãéã®ã¹ãã¼ã¹ã«ã¤ãã¦ã®æ
å ±ãæã£ã¦ããï¼
+ãã®ã«ã¼ãã³ã°æ
å ±ã¯ä»¥åã®\LuaTeX-ja ã¨ã¯ãã¾ãç¸æ§ãè¯ããªãã£ããï¼
+ãã¼ã¸ã§ã³20140324.0以éã§ã¯ã«ã¼ãã³ã°ã«ãã空ç½ã¯ã¤ã¿ãªãã¯è£æ£ã¨åæ§ã«æ±ããã¨ã«ãªã£ã¦ããï¼
+ã¤ã¾ãï¼ã«ã¼ãã³ã°ç±æ¥ã®ç©ºç½ã¨JFMç±æ¥ã®ã°ã«ã¼ã»ã«ã¼ã³ã¯åæã«å
¥ãããï¼
+\autoref{fig:kern-jfm}ãåç
§ï¼
\begin{itemize}
- \item \texttt{luatex-unicode-letters.tex} ã®å
ã«ãªã£ã\
-\texttt{unicode-letters.tex} ãå¤ã
- \item \texttt{unicode-letters.tex} å¾åé¨ã \texttt{unicode-letters.def} å¾åé¨ã§ã¯
-\cs{XeTeXcharclass} ã®è¨å®ãè¡ãªã£ã¦ããï¼
-ããã«ãã£ã¦æ¼¢åãä»®åï¼ããã³å
¨è§è±æ°åã® \cs{catcode} ã11ã«è¨å®ããã¦ããï¼
-ãããï¼\texttt{luatex-unicode-letters.tex} ã§ã¯ãã®ãå¾åé¨ãã
-ã¾ããã¨çç¥ããã¦ããï¼ã¾ã\LuaLaTeX ã§ã \texttt{unicode-letters.def} å¾åé¨ã¯å®è¡ãããª
- ãï¼
+ \item \emph{\cs{jfont} ãï¼
+NFSS2ç¨ã®å½ä»¤ï¼\ref{ssec-chgfnt}ç¯ï¼\ref{ssec-nfsspat}ç¯ï¼ã«ãããæå®ã§ã¯
+ã«ã¼ãã³ã°æ
å ±ã¯æ¨æºã§ä½¿ç¨ãã}ãã¨ã«ãªã£ã¦ããããã§ããï¼
+è¨ãæããã°ï¼ã«ã¼ãã³ã°æ
å ±ã使ç¨ããªãè¨å®ã«ããã«ã¯ï¼é¢åã§ã
+\begin{lstlisting}
+\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
+\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
+\end{lstlisting}
+ã®ããã«ï¼\texttt{-kern} ã¨ããæå®ãèªåã§è¿½å ããªããã°ãããªãï¼
+ \item
+ä¸æ¹ï¼\emph{\Pkg{luatexja-fontspec} ã®æä¾ãã \cs{setmainjfont}\
+ãªã©ã®å½ä»¤ã®æ¨æºè¨å®ã§ã¯ã«ã¼ãã³ã°æ
å ±ã¯ä½¿ç¨ããªã}ï¼\texttt{Kerning=Off}ï¼
+ãã¨ã«ãªã£ã¦ããï¼ããã¯ä»¥åã®ãã¼ã¸ã§ã³ã®\LuaTeX-jaã¨ã®äºææ§ã®ããã§ããï¼
\end{itemize}
-è¨ãæããã¨ï¼
+%
+
+%<*ja>
+\paragraph{\texttt{extend}ã¨\texttt{slant}}
+OpenType font featureã¨è¦ããä¸åããããªå½¢å¼ã§æå®ã§ãããã®ã«ï¼
\begin{description}
- \item[plain \LuaTeX] æ¼¢åãä»®åãå¶å¾¡ç¶´å
ã«
-使ç¨ãããã¨ã¯ã§ããªãï¼
- \item[\LuaLaTeX] æè¿ã®ï¼2015-10-01以éã®ï¼
-\LuaLaTeX ã§ã¯æ¼¢åãä»®åãå¶å¾¡ç¶´å
ã«
-使ç¨ãããã¨ãå¯è½ã«ãªã£ããï¼å
¨è§è±æ°åã¯ç¸å¤ããã使ç¨ã§ããªãï¼
+\item[\texttt{extend=}] 横æ¹åã«åæ¡å¤§ããï¼
+\item[\texttt{slant=}] ã«æå®ãããå²åã ãå¾ããï¼
\end{description}
-ããã§ã¯ \pTeX ã§ä½¿ç¨ã§ãã \verb+\ï¼å¹´ç®è¥¿æ¦+\footnote{ç§ç è²»\LaTeX ã§ä½¿ç¨ããã¦ããããã§ãï¼}ãªã©ã使ããªããã¨ã¨ãªãï¼
-\LuaTeX-jaã¸ã®ç§»è¡ã§æéãçããï¼ãã®ããï¼\LuaTeX-jaã§ã¯
-\texttt{unicode-letters.tex} ã®å¾åé¨ã«ãããå
容ãèªåã§ããããï¼
-çµæã¨ãã¦\textbf{\XeTeX ã«ãããåæè¨å®ã¨åãã«ãªãããã«ãã¦ããï¼}
+ã®2ã¤ãããï¼
+\texttt{extend}ã\texttt{slant}ãæå®ããå ´åã¯ï¼ããã«å¿ããJFMãæå®ãã¹ãã§ãã%
+\footnote{\LuaTeX-jaã§ã¯ï¼ãããã«å¯¾ããJFMãç¹ã«æä¾ãããã¨ã¯ããªãäºå®ã§ããï¼}ï¼
+ä¾ãã°ï¼æ¬¡ã®ä¾ã§ã¯ç¡çããé常ã®JFMã使ã£ã¦ããããã«ï¼æåééãã¤ã¿ãªãã¯è£æ£éã
+æ£ãããªãï¼
%
+%<*en>
+\paragraph{\texttt{extend} and \texttt{slant}}
+The following setting can be specified as OpenType font features:
+\begin{cslist}[style=standard]
+\item[\texttt{extend=}] expand the font horizontally by .
+\item[\texttt{slant=}] slant the font.
+\end{cslist}
+Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
+settings; you have to write new JFMs on purpose.
+For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence
+letter-spacing and the width of italic correction are not correct:
+%
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\E=KozMinPr6N-Regular:extend=1.5;jfm=ujis;-kern
+\E ããããã
-\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{table-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}
-
-%<*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.
-Table~\ref{table-kcat-diff} shows the difference.
-Except for four characters ``ã»'',~``ã'', ``ã'',~``ã '',
-\LuaTeX-ja admits more characters in a control word than \upTeX.
+\jfont\S=KozMinPr6N-Regular:slant=1;jfm=ujis;-kern
+\S ããã\/ABC
+\end{LTXexample}
-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éæ¼¢åã®éã}
-
-ã¨ã³ã¸ã³ãç°ãªãã®ã§ï¼\pTeX, \upTeX, \LuaTeX-ja
-ã«ããã¦å¶å¾¡ç¶´ä¸ã«ä½¿ç¨å¯è½ãªJIS~X~0208ã®æåã¯ç°ãªãï¼
-ç°ãªã£ã¦ããã¨ããã ããè¼ããã¨ï¼è¡¨\ref{table-kcat-diff}ã®ããã«ãªãï¼
-ãã»ããããããããã ããé¤ãã°ï¼\LuaTeX-jaã§ã¯\upTeX ããå¤ãã®æåã
-å¶å¾¡ç¶´ã«ä½¿ç¨å¯è½ã«ãªã£ã¦ããï¼
+\paragraph{\texttt{ltjksp} æå®}
+\label{pg:ltjksp}
+\LuaTeX-jaæ¨æºã§ã¯ï¼
+JFMä¸ã«ããã \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink}ãã¼ï¼\pageref{pg:ksp_nat}ãã¼ã¸ï¼ã®ä½¿ç¨ã«ãã£ã¦ï¼
+ãJFMç±æ¥ã®ã°ã«ã¼ã®ä»ã«ï¼\Param{kanjiskip}ã®èªç¶é·/伸ã³é/縮ã¿éã®ä¸é¨ã
+åãå ´æã«æ¿å
¥ããããã¨ããç¶æ³ãèµ·ããããï¼
+ãã®æ©è½ãç¡å¹åãï¼ãã¼ã¸ã§ã³20150922.0以åã¨åããããªçµçãå¾ãããã«ã¯
+ä»ã®OpenTypeæ©è½ã¨åãããã«\ \texttt{-ltjksp}\ æå®ãè¡ãã°è¯ãï¼
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{ãããããï¼ãã}\vrule
-JIS~X~0213ã®ç¯å²ã«åºããã¨ï¼å·®ç°ã¯ããã«å¤§ãããªãï¼
-詳細ã«ã¤ãã¦ã¯ä¾ãã° \url{https://github.com/h-kitagawa/kct} ä¸ã®\
-\texttt{kct-out.pdf} ãªã©ãåç
§ãããã¨ï¼
+\jfont\G=file:KozMinPr6N-Regular.otf%
+ :jfm=ujis;-ltjksp at 9.2487pt
+\G\leavevmode%
+\vrule\hbox to 15\zw{ãããããï¼ãã}\vrule
+\end{LTXexample}
+ãªãï¼
+\begin{lstlisting}
+ \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt
+\end{lstlisting}
+ã®ããã« \texttt{+ltjksp} æå®ãè¡ã£ãå ´åã¯ï¼\texttt{kanjiskip\_natural} ãªã©
+3ãã¼ã¯åã³æå¹åãããï¼\texttt{-ltjksp}, \texttt{+ltjksp} ãè¤æ°åæå®ããå ´åã¯ï¼
+æå¾ã«æå®ãããã®ãæå¹ã¨ãªãï¼
%
-%<*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})ã§çµãã ããã¯ã¹ãå転ãããæ¹å¼ã§
-縦çµãå®è£
ããï¼
-%
+%\subsection{\cs{tfont}}
+%\subsection{\cs{tfont} å½ä»¤}
-%\subsection{ãµãã¼ãããçµæ¹å}
+
+\begin{comment}
+ {\catcode`\<=12\catcode`\>=12
\begin{table}[t]
-%\caption{\LuaTeX-ja ã®ãµãã¼ãããçµæ¹å}
-%\caption{Directions supported by \LuaTeX-ja}
+%\caption{Differences between vertical JFMs shipped with \LuaTeX-ja}
+%\caption{\LuaTeX-ja ã«å梱ããã¦ãã縦çµç¨ JFM ã®éã}
%\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}
-\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}
-
-\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
-%
-
-%<*en>
-\begin{tabular}{>{\bfseries}lcccc}
-\toprule
-&horizontal (\emph{yoko}~direction)&vertical (\emph{tate}~direction)&%
- \emph{dtou} direction&\emph{utod} direction\\
-\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\\
-\bottomrule
-\end{tabular}
+\label{tab-difjfm-tate}
+\ltjsetparameter{jacharrange={+3}}
+\small
+\def\r#1#2{%
+ \hbox{\tate\Large\vrule
+ \parbox{7\zw}{%
+ \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ âââââââ
+ ããæ¥ã¢ã¢ã¡ããããã使ããã§è¿·åã«ãªã£ã¦æ³£ãã¾ããã
+ }\vrule}}
+\def\s#1#2{%
+ \hbox{\tate\Large
+ \parbox{7\zw}{%
+ \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
+ ã¡ãã£ã¨ï¼ä½
+ }}}
+\def\t#1#2#3{\hbox to 0pt{\hss%
+ \setbox0=\hbox{\addjfontfeatures{TateFeatures={JFM=#1}}\huge #3}%
+ \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
+ \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
+ \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+ \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+ \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
-\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
-%
+\begin{minipage}{.7\textwidth}
+\centering
+\leavevmode\hbox to 0pt{\r{ujisv}{blue}\hss}\r{tmin}{red}\quad
+\leavevmode\hbox to 0pt{\s{ujisv}{blue}\hss}\s{tmin}{red}\quad
+\raise4\zw\hbox{\tate\Large\t{ujisv}{black}{æ¼¢}\t{tmin}{red}{æ¼¢}\qquad
+ \t{ujisv}{black}{ã£}\t{tmin}{red}{ã£}}
+\end{minipage}%
+\begin{minipage}{.3\textwidth}
+\textcolor{blue}{Blue: \texttt{jfm-ujisv.lua}}\\
+\textcolor{red}{Red: \texttt{jfm-tmin.lua}}
+\end{minipage}
+\ltjsetparameter{jacharrange={-3}}
\end{table}
+}
+\end{comment}
%<*en>
-\LuaTeX-ja supports four directions, as shown in Table~\ref{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.
-
-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).
+\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>
-\LuaTeX-jaããµãã¼ãããçµæ¹åã¯è¡¨\ref{tab-dir}ã«ç¤ºã4ã¤ã§ããï¼
-4åç®ã® \cs{dtou} ã¯èãæ
£ããªãå½ä»¤ã ã¨æããï¼
-å®ã¯\pTeX ã«ååã®å½ä»¤ãï¼ããã¥ã¡ã³ãã«ã¯æ¸ããã¦ããªããï¼åå¨ããï¼
-Down-TO-Upã®æå³ãªã®ã ããï¼\cs{dtou} ã使ç¨ããæ©ä¼ã¯ãªãã ãããï¼
-\LuaTeX-jaã§ã¯ãããã°ç¨ã«å®è£
ãã¦ããï¼
-5åç®ã® \cs{utod} ã¯ï¼\pTeX ã§è¨ãã縦æ°å¼ãã£ã¬ã¯ã·ã§ã³ãã«ç¸å½ãããã®ã§ããï¼
+\cs{tfont} ã¯ãã©ã³ãã縦çµç¨ã®åæãã©ã³ãã¨ãã¦èªã¿è¾¼ãå½ä»¤ã§ããï¼
+\cs{tfont} ã®ææ³ã¯ \cs{jfont} ã¨åãã§ããï¼
+\cs{tfont} ã§å®ç¾©ããã縦çµç¨åæãã©ã³ãã¯ï¼
+以ä¸ã®ç¹ã \cs{jfont} ã«ãã横çµç¨åæãã©ã³ãã¨ã¯ç°ãªãï¼
+\begin{itemize}
+ \item èªåçã« \texttt{vert}, \texttt{vrt2} ã®ä¸¡OpenType featureãæå¹åãããï¼
+ä½ãï¼ä»¥ä¸ã®ä¾ã®3è¡ç®ã«ç¤ºãããã«ï¼æ示çã« \texttt{vert}, \texttt{vrt2}ï¼ã®ããããï¼ã®
+æå¹ã»ç¡å¹ãæå®ããå ´åã¯å¥ã§ããï¼
+\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 \ref{ssec-math}ç¯ã§è¿°ã¹ãï¼æ°å¼ä¸ã®åæãã©ã³ãã«ã¯ç¸¦çµç¨åæãã©ã³ãã¯æå®ã§ããªãï¼
+ \item \texttt{jfm=}\ ã®é¨åã«ã¯ç¸¦çµç¨JFMãæå®ããï¼
+以ä¸ã®ç¸¦çµç¨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+ ã
+ å
ã«ãã¦ããï¼
+\item[\tt jfm-tmin.lua] \pTeX ã«å梱ããã¦ããããã©ã«ãã®åæç¨ç¸¦çµTFM
+ ã§ãã \verb+tmin10.tfm+ ã«ç¸å½ãï¼\texttt{min10.tfm} ã¨åæ§ã«
+ ãã£ããªã©ä¸é¨ã®æåå¹
ãçãããã¦ããï¼
+\end{description}
+\end{itemize}
-çµæ¹åã¯ï¼\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} ããããã使ç¨ãããã¨ã§ï¼
-ç¾å¨ä½æä¸ã®ãªã¹ããããã¯ã¹ã空ã®æã«ã®ã¿å¤æ´å¯è½ã§ããï¼
-ã¾ãï¼ç¸¦çµä¸ã®æ°å¼å
ã®ããã¯ã¹ã¯\pTeX ã¨åãããã«çµæ¹åã \cs{utod} ã¨ãªãï¼
+ãªãï¼\pTeX ã§ã¯ï¼\cs{font},~\cs{jfont},~\cs{tfont}ã®ã©ãã§ã欧æãã©ã³ãã»æ¨ªçµç¨åæãã©ã³
+ãã»ç¸¦çµç¨åæãã©ã³ãã®å®ç¾©ãå¯è½ã§ãã£ããï¼\LuaTeX-jaã§ã¯ããã§ãªãã®ã§æ³¨æï¼
%
-%<*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}
+%\subsection{Prefix \texttt{psft}}
+%\subsection{\texttt{psft}ããªãã£ãã¯ã¹}
+\label{ssec-psft}
+%<*en>
+Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which
+are introduced in the \Pkg{luaotfload} package,
+\LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \cs{jfont} (and~\cs{font}),
+to specify a ``name-only'' Japanese font which
+will not be embedded to PDF.
+Note that these non-embedded fonts under current \LuaTeX\ has Identity-H encoding,
+and this violates the standard ISO32000-1:2008~(\cite{pdfstd}).
-Table~\ref{tab-diffdir} shows how a box is arranged when
-the direction inside the box and that outside the box differ.
+\emph{OpenType font features, such as ``{\tt +jp90}'',
+have no meaning in name-only fonts using ``{\tt psft:}''\ prefix,
+because we can't expect what fonts are actually used by the PDF reader.}
+Note that \texttt{extend}~and~\texttt{slant} settings (see~above) are supported
+with \texttt{psft} prefix, because they are only simple linear transformations.
%
%<*ja>
-\subsection{ç°æ¹åã®ããã¯ã¹}
-
-縦çµã®ä¸ã«ã42ããªã©ã®2æ¡ä»¥ä¸ã®ç®ç¨æ°åã横çµã§çµããªã©ï¼
-ç°ãªãçµæ¹åãæ··å¨ããããã¨ããã°ãã°è¡ãããï¼
-çµæ¹åã®æ··å¨ã\pTeX ã¨åãããã«ã§ããï¼
-\begin{LTXexample}
-ããã¯æ¨ªçµ% yoko
-\hbox{\tate % tate
- \hbox{縦çµ}% tate
- ã®ä¸ã«
- \hbox{\yoko 横çµã®å
容}% yoko
- ãæ¿å
¥ãã
-}
-ã¾ã横çµã«æ»ã% yoko
-\end{LTXexample}
+\Pkg{luaotfload}ã§ä½¿ç¨å¯è½ã«ãªã£ã
+\texttt{file:}\ 㨠\texttt{name:}\ ã®ããªãã£ãã¯ã¹ã«å ãã¦ï¼
+\cs{jfont}ï¼ã¨ \cs{font} ããªããã£ãï¼ã§ã¯
+\texttt{psft:}ããªãã£ãã¯ã¹ãç¨ãããã¨ãã§ããï¼
+ãã®ããªãã£ãã¯ã¹ãç¨ãããã¨ã§ï¼PDFã«ã¯åãè¾¼ã¾ããªããååã ãã®ã
+åæãã©ã³ããæå®ãããã¨ãã§ããï¼
+ãªãï¼ç¾è¡ã®\LuaTeX ã§éåãè¾¼ã¿ãã©ã³ããä½æããã¨PDFå
ã§ã®ã¨ã³ã³ã¼ãã£ã³ã°ã
+Identity-Hã¨ãªãï¼PDFã®æ¨æºè¦æ ¼ISO32000-1:2008~(\cite{pdfstd})ã«éæºæ ã«ãªã£ã¦ãã¾ã
+ã®ã§æ³¨æãã¦ã»ããï¼
-ç°ãªãçµæ¹åã®ããã¯ã¹ãé
ç½®ããå ´åã«ã©ãçµã¾ãããã®ä»æ§ãï¼\pTeX ã
-è¸è¥²ãã¦ããï¼è¡¨\ref{tab-diffdir}ã«ç¤ºãï¼
+\emph{\texttt{psft} ããªãã£ãã¯ã¹ã®ä¸ã§ã¯
+\texttt{+jp90} ãªã©ã®OpenType font featureã®å¹åã¯ãªãï¼
+éåè¾¼ãã©ã³ããPDFã«ä½¿ç¨ããã¨ï¼å®éã«ã©ã®ãããªãã©ã³ãã
+表示ã«ç¨ãããããäºæ¸¬ã§ããªãããã§ããï¼}\
+\texttt{extend} 㨠\texttt{slant} æå®ã¯åãªãå¤å½¢ã®ãã
+\texttt{psft} ããªãã£ãã¯ã¹ã§ã使ç¨å¯è½ã§ããï¼
%
-\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}
-
+%\paragraph{\texttt{cid} key}
+%\paragraph{\texttt{cid}ãã¼}
+\label{para-cid}
+%<*en>
+The default font defined by using \texttt{psft:} prefix is for Japanese typesetting;
+it is Adobe-Japan1-6 CID-keyed font.
+One can specify \texttt{cid} key to use other CID-keyed non-embedded fonts
+for Chinese or Korean typesetting.
+%
+%<*ja>
+æ¨æºã§\texttt{psft:}ããªãã£ãã¯ã¹ã§å®ç¾©ããããã©ã³ãã¯æ¥æ¬èªç¨ã®ãã®ã§
+ããï¼Adobe-Japan1-6ã®CIDã«å¯¾å¿ãããã®ã¨ãªãï¼ãããï¼\LuaTeX-jaã¯ä¸å½èª
+ã®çµçã«ãå¨åãçºæ®ãããã¨ãåããï¼æ¥æ¬èªãã©ã³ãã§ãªãéåè¾¼ãã©ã³ã
+ã®å¯¾å¿ãå¿
è¦ã¨ãªã£ãï¼ãã®ããã«è¿½å ãããã®ã\texttt{cid}ãã¼ã§ããï¼
+\texttt{cid}ãã¼ã«å¤ãæå®ããã¨ï¼ãã®CIDãæã£ãéåè¾¼ãã©ã³ããå®ç¾©ãããã¨ãã§ããï¼
+%
+\begin{lstlisting}[numbers=left]
+\jfont\testJ={psft:Ryumin-Light:cid=Adobe-Japan1-6;jfm=jis} % Japanese
+\jfont\testD={psft:Ryumin-Light:jfm=jis} % default value is Adobe-Japan1-6
+\jfont\testC={psft:AdobeMingStd-Light:cid=Adobe-CNS1-6;jfm=jis} % Traditional Chinese
+\jfont\testG={psft:SimSun:cid=Adobe-GB1-5;jfm=jis} % Simplified Chinese
+\jfont\testK={psft:Batang:cid=Adobe-Korea1-2;jfm=jis} % Korean
+\end{lstlisting}
%<*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.
+Note that the code above specifies \texttt{jfm-jis.lua}, which is for Japanese fonts,
+as JFM for Chinese and Korean fonts.
+%
+%<*ja>
+ä¸ã®ã³ã¼ãã§ã¯ä¸å½èªã»éå½èªç¨ãã©ã³ãã«å¯¾ãã¦ãJFMã«
+æ¥æ¬èªç¨ã®\texttt{jfm-jis.lua}ãæå®ãã¦ããã®ã§æ³¨æããããï¼
+%
-\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>
+At present, \LuaTeX-ja supports only 4 values written in the sample code above.
+Specifying other values, e.g.,
+%
+%<*ja>
+ä»ã®ã¨ããï¼\LuaTeX-jaã¯ä¸ã®ãµã³ãã«ã³ã¼ãä¸ã«æ¸ãã4ã¤ã®å¤ãããµãã¼ããã¦ããªãï¼
+%
+\begin{lstlisting}
+\jfont\test={psft:Ryumin-Light:cid=Adobe-Japan2;jfm=jis}
+\end{lstlisting}
+%<*en>
+produces the following error:
+%
+%<*ja>
+ã®ããã«ããã以å¤ã®å¤ãæå®ããã¨ï¼ã¨ã©ã¼ãçºçããï¼
+%
+\begin{lstlisting}[numbers=left]
+! Package luatexja Error: bad cid key `Adobe-Japan2'.
-To access box dimensions \emph{with respect to current direction},
-one have to use the following commands instead of \cs{wd} wtc.
-\begin{cslist}
+See the luatexja package documentation for explanation.
+Type H for immediate help.
+
+ \par
+l.78
- \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
+? h
+I couldn't find any non-embedded font information for the CID
+`Adobe-Japan2'. For now, I'll use `Adobe-Japan1-6'.
+Please contact the LuaTeX-ja project team.
+?
\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.
+%\subsection{Structure of a JFM file}
+%\subsection{JFMãã¡ã¤ã«ã®æ§é }
+\label{ssec-jfm-str}
+%A JFM file is a Lua script which has only one function call:
+%JFMãã¡ã¤ã«ã¯ãã ä¸ã¤ã®é¢æ°å¼ã³åºããå«ãLuaã¹ã¯ãªããã§ããï¼
\begin{lstlisting}
-\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt
+luatexja.jfont.define_jfm { ... }
\end{lstlisting}
+%<*en>
+Real data are stored in the table which indicated above by
+\verb+{ ... }+. So, the rest of this subsection are devoted to describe the
+structure of this table. Note that all lengths in a JFM file are
+floating-point numbers in design-size unit.
+%
+%<*ja>
+å®éã®ãã¼ã¿ã¯ä¸ã§ \verb+{ ... }+ ã§ç¤ºããããã¼ãã«ã®ä¸ã«æ ¼ç´ããã¦ããï¼
+以ä¸ã§ã¯ãã®ãã¼ãã«ã®æ§é ã«ã¤ãã¦è¨ãï¼
+ãªãï¼JFMãã¡ã¤ã«ä¸ã®é·ãã¯å
¨ã¦design-sizeãåä½ã¨ããæµ®åå°æ°ç¹æ°ã§ãããã¨ã«
+注æããï¼
+%
-\end{cslist}
+\begin{cslist}[style=standard]
+
+\item[version=]
+%(optional, default value is~1)
+%ï¼ä»»æï¼æ¢å®å¤ã¯1ï¼
+
+%<*en>
+The version JFM. Currently 1,~2,~and,~3 are supported
%
%<*ja>
-\paragraph{\cs{wd} éã¨çµæ¹å}
-ããã¯ã¹ã¬ã¸ã¹ã¿ \cs{box} ã«ã»ããããã¦ããããã¯ã¹ã®å¹
ã»é«ãã»æ·±ãã®åå¾ã
-å¤æ´ã«ã¯ãããã \cs{wd},~\cs{ht},~\cs{dp} ããªããã£ããç¨ããã®ã§ãã£ãï¼
-\pTeX ã§ã¯ãããã®ããªããã£ãã¯ï¼ãç¾å¨ã®çµæ¹åã«ãããããã¯ã¹ã®å¯¸æ³ããæããã®ã§ï¼
-åãããã¯ã¹ã«å¯¾ãã¦ãç¾å¨ã®çµæ¹åã«ãã£ã¦è¿ãå¤ã¯ç°ãªããã§ãã£ãï¼
+JFMã®ãã¼ã¸ã§ã³ï¼1,~2,~3ããµãã¼ããããï¼
+%
+
+\item[dir=]
+%(required)
+%ï¼å¿
é ï¼
-\LuaTeX-jaã«ããã¦ã¯ç¶æ³ãç°ãªãï¼\cs{wd},~\cs{ht},~\cs{dp} ãè¿ãå¤ã¯
-ç¾å¨ã®çµæ¹åã«ã¯ä¾åããªãï¼ä¸ã®ä¾ã®ããã«ï¼æ¨ªçµã®ããã¯ã¹ãæ ¼ç´ããã¦ããã°
-\cs{wd}çã¯å¸¸ã«ã横çµã«ãããããã¯ã¹ã®å¯¸æ³ããæå³ããï¼
+%<*en>
+The direction of JFM. \texttt{'yoko'}~(horizontal)
+or \texttt{'tate'}~(vertical) are supported.
+%
+%<*ja>
+JFMã®æ¸åæ¹åï¼\texttt{'yoko'}ï¼æ¨ªçµï¼ã¨ \texttt{'tate'}ï¼ç¸¦çµï¼ããµãã¼ããããï¼
+%
-\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}
+\item[zw=]
+%(required)
+%ï¼å¿
é ï¼
-\pTeX ã®ããã«ç¾å¨ã®çµæ¹åã«å¿ããããã¯ã¹ã®å¯¸æ³ã®åå¾ã»è¨å®ãè¡ãã«ã¯ï¼
-代ããã«æ¬¡ã®å½ä»¤ã使ç¨ããï¼
+%The amount of the length of the ``full-width''.
+%<*ja>
+ãå
¨è§å¹
ãã®é·ãï¼ãã®éã \cs{zw} ã®é·ãã¨ãªãï¼\pTeX ã§ã¯
+ãå
¨è§å¹
ã\texttt{1zw} ã¯ãæåã¯ã©ã¹0ã®æåãã®å¹
ã¨æ±ºãããã¦ãããï¼
+\LuaTeX-jaã§ã¯ããã§æå®ããï¼
+%
-\begin{cslist}
+\item[zh=]
+%(required)
+%ï¼å¿
é ï¼
- \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}
+%The amount of the ``full-height'' (height + depth).
+%<*ja>
+ãå
¨è§é«ãã(height + depth)ã®é·ãï¼é常ã¯å
¨è§å¹
ã¨åãé·ãã«ãªãã ããï¼
+\pTeX ã§ã¯ ãå
¨è§é«ãã\texttt{1zh} ã¯ãæåã¯ã©ã¹0ã®æåãã®é«ãã¨æ·±ãã®åã¨æ±ºãããã¦ãããï¼
+\LuaTeX-jaã§ã¯ããã§æå®ããï¼
+%
- \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}
+\item[kanjiskip=\{, , \}]
+%(optional)
+%ï¼ä»»æï¼
-è¨å®å¤ã¯ã横çµãã縦çµåã³ \cs{utod} æ¹åãã\cs{dtou} æ¹åã
-ã®3種ãã¨ã«ç¬ç«ãã¦è¨é²ãããï¼åèã¨ãã¦ï¼Gitãªãã¸ããªå
ã®
- \verb+test/test55-boxdim_diffdir.{tex,pdf}+ ãæãã¦ããï¼
+%<*en>
+This field specifies the ``ideal'' amount of \Param{kanjiskip}. As noted
+ in Subsection~\ref{subs-kskip}, if the parameter
+ \Param{kanjiskip} is \cs{maxdimen}, the value specified
+ in this field is actually used (if this field is not specified in
+ JFM, it is regarded as 0\,pt). Note that and
+ fields are in design-size unit too.
+%
+%<*ja>
+çæ³çãª\Param{kanjiskip}ã®éãæå®ããï¼\ref{subs-kskip}ç¯ã§è¿°ã¹ãããã«ï¼
+ãã\Param{kanjiskip}ã \cs{maxdimen} ã®å¤ãªãã°ï¼ãã®ãã£ã¼ã«ãã§æå®ããã
+å¤ãå®éã«ã¯ç¨ããããï¼æå®ãªãã¯0\,ptã¨ãã¦æ±ãããï¼ï¼ã¨ã®ãã£ã¼ã«ããdesign-size
+ãåä½ã§ãããã¨ã«æ³¨æããï¼
+%
+\item[xkanjiskip=\{, , \}]
+%(optional)
+%ï¼ä»»æï¼
+
+%<*en>
+Like the \texttt{kanjiskip} field, this field specifies the ``ideal''
+ amount of \Param{xkanjiskip}.
+%
+%<*ja>
+\texttt{kanjiskip}ãã£ã¼ã«ãã¨åæ§ã«ï¼\Param{xkanjiskip}ã®çæ³çãªéã
+æå®ããï¼
+%
\end{cslist}
+
+%<*en>
+\paragraph{Character classes}
+Besides from above fields, a JFM file have several sub-tables those
+indices are natural numbers. The table indexed by~$i\in\omega$ stores
+information of \emph{character class}~$i$. At least, the character class~0 is
+always present, so each JFM file must have a sub-table whose index is
+\texttt{[0]}. Each sub-table (its numerical index is denoted by $i$) has
+the following fields:
+%
+%<*ja>
+\paragraph{æåã¯ã©ã¹}
+ä¸è¨ã®ãã£ã¼ã«ãã«å ãã¦ï¼JFMãã¡ã¤ã«ã¯ãã®ã¤ã³ããã¯ã¹ãèªç¶æ°ã§ããããã¤ãã®
+ãµããã¼ãã«ãæã¤ï¼ã¤ã³ããã¯ã¹ã$i\in\omega$ã§ãããã¼ãã«ã¯\emph{æåã¯ã©ã¹}$i$ã®
+æ
å ±ãæ ¼ç´ããï¼å°ãªãã¨ãï¼æåã¯ã©ã¹0ã¯å¸¸ã«åå¨ããã®ã§ï¼JFMãã¡ã¤ã«ã¯ã¤ã³ããã¯ã¹
+ã\texttt{[0]}ã®ãµããã¼ãã«ãæããªããã°ãªããªãï¼ããããã®ãµããã¼ãã«
+ï¼ãã®ã¤ã³ããã¯ã¹ã$i$ã§è¡¨ããï¼ã¯ä»¥ä¸ã®ãã£ã¼ã«ããæã¤ï¼
+%
+
+\begin{cslist}[style=standard]
+\item[chars=\{, ...\}]
+%(required except character class~0)
+%ï¼æåã¯ã©ã¹0ãé¤ãã¦å¿
é ï¼
+
+%<*en>
+This field is a list of characters which are in this character
+ type~$i$. This field is optional if $i=0$, since all
+ \textbf{JAchar} which do not belong any character classes other
+ than 0 are in the character class 0
+ (hence, the character class~0 contains most of
+ \textbf{JAchar}s). In the list, character(s) can be specified in the following form:
+\begin{itemize}
+\item a Unicode code point
+\item the character itself (as a Lua string, like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã'+})
+\item a string like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã*'+} (the character followed by an asterisk)
+\item several ``imaginary'' characters (We will describe these later.)
+\end{itemize}
+%
+%<*ja>
+ãã®ãã£ã¼ã«ãã¯æåã¯ã©ã¹$i$ã«å±ããæåã®ãªã¹ãã§ããï¼ãã®ãã£ã¼ã«ãã¯$i=0$ã®
+å ´åã«ã¯ä»»æã§ããï¼æåã¯ã©ã¹0ã«ã¯ï¼0以å¤ã®æåã¯ã©ã¹ã«å±ãããã®ã
+é¤ããå
¨ã¦ã®\textbf{JAchar}ãå±ããããï¼ï¼ãã®ãªã¹ãä¸ã§æåãæå®ããã«ã¯ï¼ä»¥ä¸ã®æ¹æ³ãããï¼
+\begin{itemize}
+\item Unicode ã«ãããã³ã¼ãçªå·
+\item ã\hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã'+}ãã®ãããªï¼æåããèªä½
+\item ã\hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã*'+}ãã®ãããªï¼æåããèªä½ã®å¾ã«ã¢ã¹ã¿ãªã¹ã¯ãã¤ãããã®
+\item ããã¤ãã®ãä»®æ³çãªæåãï¼å¾ã«èª¬æããï¼
+\end{itemize}
%
+\item[width=, height=, depth=, italic=]
+%(required)
+%ï¼å¿
é ï¼
+
%<*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}
+\begin{table}[t]
+ \centering
+\begin{tabular}{llr}
\toprule
-Direction&\emph{yoko}&\emph{tate}&\emph{dtou}&\emph{utod}&(empty)\\
+Direction of JFM&\textbf{\texttt{'yoko'} (horizontal)}&\multicolumn{1}{l}{\textbf{\texttt{'tate'} (vertical)}}\\
\midrule
-Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\
+\texttt{width} field&\multicolumn{2}{c}{the width of the ``real'' glyph}\\
+\texttt{height} field&the height of the ``real'' glyph&0.0\\
+\texttt{depth} field&the depth of the ``real'' glyph&0.0\\
+\midrule
+\texttt{italic} field&\multicolumn{2}{c}{0.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}
+\caption{Default values of \texttt{width} field and other fields}
+\label{tab-wid}
+\end{table}
+Specify the width of characters in character class~$i$, the height, the depth and
+the amount of italic correction. All characters in character class~$i$ are regarded that its width, height, and depth are
+as values of these fields. The default values are shown in \autoref{tab-wid}.
%
%<*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}
+\begin{table}[t]
+ \centering
+\begin{tabular}{llr}
\toprule
-çµæ¹å&\emph{横çµ}&\emph{tate縦çµ}&\emph{dtouæ¹å}&\emph{utodæ¹å}&(æªå²ãå½ã¦)\\
+JFMæ¸åæ¹å&\emph{\texttt{'yoko'}ï¼æ¨ªçµï¼}&\multicolumn{1}{l}{\emph{\texttt{'tate'}ï¼ç¸¦çµï¼}}\\
\midrule
-æ»ãå¤&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\
+\texttt{width}&\multicolumn{2}{c}{ãå®éã®ã°ãªããã®å¹
}\\
+\texttt{height}&ãå®éã®ã°ãªããã®é«ã&0.0\\
+\texttt{depth}&ãå®éã®ã°ãªããã®æ·±ã&0.0\\
+\midrule
+\texttt{italic}&\multicolumn{2}{c}{0.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}
+\caption{\texttt{width} ãã£ã¼ã«ãçã®æ¨æºå¤}
+\label{tab-wid}
+\end{table}
+æåã¯ã©ã¹$i$ã«å±ããæåã®å¹
ï¼é«ãï¼æ·±ãï¼ã¤ã¿ãªãã¯è£æ£ã®éãæå®ããï¼
+æåã¯ã©ã¹$i$ã«å±ããå
¨ã¦ã®æåã¯ï¼ãã®å¹
ï¼é«ãï¼æ·±ãããã®ãã£ã¼ã«ãã§æå®ãã
+å¤ã§ãããã®ã¨ãã¦æ±ãããï¼çç¥æãï¼æ°ã§ãªãå¤ãæå®ããæã«ã¯è¡¨\nobreak\ref{tab-wid}ã«
+ 示ããã¦ããå¤ãç¨ããï¼ä¾ãã°ï¼æ¨ªçµç¨JFM㧠\texttt{width} ãã£ã¼ã«ãã«ã¯æ°å¤ä»¥å¤ã®å¤ãæ
+ å®ããå ´åï¼æåã®å¹
ã¯ãã®ãå®éã®ãã°ãªãã®å¹
ã¨ãªãï¼OpenTypeã® \texttt{prop} featureã¨ä½µç¨
+ ããã°ï¼ããã«ãã£ã¦ãããã¼ã·ã§ãã«çµãè¡ããã¨ãã§ããï¼
%
-%\section{Font Metric and Japanese Font}
-%\section{ãã©ã³ãã¡ããªãã¯ã¨åæãã©ã³ã}
-%\subsection{\cs{jfont}}
-%\subsection{\cs{jfont} å½ä»¤}
-\label{ssec-jfont}
+\item[left=, down=, align=]\
%<*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:
+These fields are for adjusting the position of the ``real'' glyph. Legal
+ values of \texttt{align} field are \texttt{'left'},
+ \texttt{'middle'}, and \texttt{'right'}. If one of these
+ 3~fields are omitted, \texttt{left} and \texttt{down} are
+ treated as~0, and \texttt{align} field is treated as
+ \texttt{'left'}.
+The effects of these 3~fields are indicated in
+\autoref{fig:pos}~and~\autoref{fig:pos-tate}.
%
%<*ja>
-ãã©ã³ããï¼æ¨ªçµç¨ï¼åæãã©ã³ãã¨ãã¦èªã¿è¾¼ãããã«ã¯ï¼\cs{jfont} ã
-\ \cs{font} ããªããã£ãã®ä»£ããã«ç¨ããï¼
-\cs{jfont} ã®ææ³ã¯ \cs{font} ã¨åãã§ããï¼
-\LuaTeX-jaã¯\Pkg{luaotfload}ããã±ã¼ã¸ãèªåçã«èªã¿è¾¼ãã®ã§ï¼
-TrueType/OpenTypeãã©ã³ãã«featureãæå®ãããã®ãåæãã©ã³ãã¨ãã¦ç¨ãã
-ãã¨ãã§ããï¼
+ãããã®ãã£ã¼ã«ãã¯å®éã®ã°ãªãã®ä½ç½®ã調æ´ããããã«ããï¼
+\texttt{align} ãã£ã¼ã«ãã«æå®ã§ããå¤ã¯ \texttt{'left'}, \texttt{'middle'},
+\texttt{'right'} ã®ããããã§ããï¼ããããã3ã¤ã®ãã£ã¼ã«ãã®ãã¡ã®1ã¤ãçããã
+å ´åï¼\texttt{left} 㨠\texttt{down} ã¯0ï¼\texttt{align} ãã£ã¼ã«ãã¯
+\ \texttt{'left'} ã§ãããã®ã¨ãã¦æ±ãããï¼
+ããã3ã¤ã®ãã£ã¼ã«ãã®æå³ã«ã¤ãã¦ã¯\autoref{fig:pos}ï¼æ¨ªçµç¨åæãã©ã³ãï¼ï¼
+\autoref{fig:pos-tate}ï¼ç¸¦çµç¨åæãã©ã³ãï¼ã§èª¬æããï¼
%
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\tradgt={file:KozMinPr6N-Regular.otf:script=latn;%
- +trad;-kern;jfm=ujis} at 14pt
-\tradgt å½ï¼ä½ï¼å»ï¼åº
-\end{LTXexample}
%<*en>
-Note that the defined control sequence
-(\cs{tradgt} in the example above) using \cs{jfont} is not a
-\textit{font\_def} token, but a macro.
-Hence the input like \verb+\fontname\tradgt+
-causes a error. We denote control sequences which are defined in
-\cs{jfont} by .
+In most cases, \texttt{left} and \texttt{down} fields are~0, while
+it is not uncommon that the \texttt{align} field is \texttt{'middle'} or \texttt{'right'}.
+For example, setting the \texttt{align} field to \texttt{'right'} is practically needed
+when the current character class is the class for opening delimiters'.
%
%<*ja>
-ãªãï¼\cs{jfont} ã§å®ç¾©ãããå¶å¾¡ç¶´ï¼ä¸ã®ä¾ã 㨠\cs{tradgt}ï¼
-ã¯\textit{font\_def}ãã¼ã¯ã³ã§ã¯ãªããã¯ãã§ããï¼å¾ã£ã¦ï¼\verb+\fontname\tradgt+ ã®ãããª
-å
¥åã¯ã¨ã©ã¼ã¨ãªãï¼ä»¥ä¸ã§ã¯ \cs{jfont} ã§å®ç¾©ããã
-å¶å¾¡ç¶´ãã§è¡¨ãï¼
+å¤ãã®å ´åï¼\texttt{left}ã¨\texttt{down}ã¯0ã§ããä¸æ¹ï¼
+\texttt{align}ãã£ã¼ã«ãã\texttt{'middle'}ã\texttt{'right'}ã§ãããã¨ã¯
+çãããã¨ã§ã¯ãªãï¼
+ä¾ãã°ï¼\texttt{align}ãã£ã¼ã«ãã\texttt{'right'}ã«æå®ãããã¨ã¯ï¼
+æåã¯ã©ã¹ãéãæ¬å¼§é¡ã§ããã¨ãã«å®éå¿
è¦ã§ããï¼
%
-\paragraph{JFM}
-%<*en>
-a JFM has measurements of characters and
-glues/kerns that are automatically inserted for Japanese
-typesetting. The structure of JFM will be described in the next
-subsection. At the calling of \cs{jfont}, you must specify
-which JFM will be used for this font by the following keys:
-%
-%<*ja>
-JFMã¯æåã¨åæçµçã§èªåçã«æ¿å
¥ããã
-ã°ã«ã¼ï¼ã«ã¼ã³ã®å¯¸æ³æ
å ±ãæã£ã¦ããï¼JFMã®æ§é ã¯æ¬¡ã®ç¯ã§è¿°ã¹ãï¼
-\cs{jfont} å½ä»¤ã®å¼ã³åºãã®éã«ã¯ï¼ã©ã®JFMãç¨ããã®ãã以ä¸ã®ãã¼ã§
-æå®ããå¿
è¦ãããï¼
-%
+\begin{figure}[!tb]
+\begin{minipage}{0.4\textwidth}%
+\begin{center}\unitlength=10pt\small
+\begin{picture}(15,12)(-1,-4)
+\color{b_gray}% jfm
+\put(0,0){\vrule width 12\unitlength height 8\unitlength depth 3\unitlength}
+\color{b_pink}% step1
+\put(-1,-1.5){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
-\begin{table}[t]
-%\caption{Differences between horizontal JFMs shipped with \LuaTeX-ja}
-%\caption{\LuaTeX-ja ã«å梱ããã¦ãã横çµç¨JFMã®éã}
-%\medskip
-\label{tab-difjfm}
-\ltjsetparameter{jacharrange={+3}}
-\centering\small
-\def\r#1#2{%
- \hbox{\Large\vrule
- \parbox[b]{7\zw}{%
- \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
- âââââââ
- ããæ¥ã¢ã¢ã¡ãããã使ãã§è¿·åã«ãªã£ã¦æ³£ãã¾ããï¼
- }\vrule}}
-\def\s#1#2{%
- \Large
- \parbox[b]{7\zw}{%
- \addjfontfeatures{YokoFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
- ã¡ãã£ã¨ï¼ä½
- }}
-\def\t#1#2#3{\hbox to 0pt{\hss%
- \setbox0=\hbox{\addjfontfeatures{YokoFeatures={JFM=#1}}\huge #3}%
- \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
- \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
- \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
- \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
- \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
-{\Large\tabcolsep0pt
-\begin{tabular}{m{8\zw}m{8\zw}m{8\zw}}
-\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{jis}{black}&
-\leavevmode\hbox to 0pt{\r{jis}{black}\hss}\r{min}{red}&
-\leavevmode\hbox to 0pt{\r{ujis}{blue}\hss}\r{min}{red}\\
-\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{jis}{black}&
-\leavevmode\hbox to 0pt{\s{jis}{black}\hss}\s{min}{red}&
-\leavevmode\hbox to 0pt{\s{ujis}{blue}\hss}\s{min}{red}\\
-\leavevmode\qquad\t{ujis}{blue}{æ¼¢}\t{jis}{black}{æ¼¢}\qquad
- \t{ujis}{blue}{ã£}\t{jis}{black}{ã£}&
-\leavevmode\qquad\t{jis}{black}{æ¼¢}\t{min}{red}{æ¼¢}\qquad
- \t{jis}{black}{ã£}\t{min}{red}{ã£}&
-\leavevmode\qquad\t{ujis}{blue}{æ¼¢}\t{min}{red}{æ¼¢}\qquad
- \t{ujis}{blue}{ã£}\t{min}{red}{ã£}\\
-\end{tabular}\par}
+\color{red}% real glyph
+\thicklines
+\put(-1,-1.5){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
+\put(5,-1.5){\line(0,1){7}\line(0,-1){2.5}}
+\put(-1,5.5){\line(1,0){6}}
+\put(-1,-4){\line(1,0){6}}
-(\textcolor{blue}{Blue: \texttt{jfm-ujis.lua}},
-\textcolor{black}{Black: \texttt{jfm-jis.lua}},
-\textcolor{red}{Red: \texttt{jfm-min.lua}})
-\ltjsetparameter{jacharrange={-3}}
-\end{table}
+\color{b_green}% real glyph
+\put(3,0){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
-\begin{cslist}
-\item[jfm=]
-%<*en>
-Specify the name of (horizontal) JFM.
-If specified JFM has not been loaded, \LuaTeX-ja search and load
-a file named \texttt{jfm-.lua}.
+\color{black}% jfm
+\thicklines
+\put(0,0){\vector(0,1){8}\line(0,-1){3}\vector(1,0){12}}
+\put(12,0){\line(0,1){8}\vector(0,-1){3}}
+\put(0,8){\line(1,0){12}}
+\put(0,-3){\line(1,0){12}}
+\put(0.2,4){\makebox(0,0)[l]{\texttt{height}}}
+\put(12.2,-1.5){\makebox(0,0)[l]{\texttt{depth}}}
+\put(6,0.2){\makebox(0,0)[b]{\texttt{width}}}
-The following JFMs are shipped with \LuaTeX-ja:
-%
-%<*ja>
-ç¨ããï¼æ¨ªçµç¨ï¼JFMã®ååãæå®ããï¼ãã以åã«æå®ãããJFMãèªã¿è¾¼ã¾ãã¦ããªããã°ï¼
-\texttt{jfm-.lua}ãèªã¿è¾¼ãï¼ä»¥ä¸ã®æ¨ªçµç¨JFMã\LuaTeX-jaã«ã¯å梱ããã¦ããï¼
-%
-\begin{description}
+\color{green}% step1
+\thicklines
+\put(3,0){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
+\put(9,0){\line(0,1){7}\line(0,-1){2.5}}
+\put(3,7){\line(1,0){6}}
+\put(3,-2.5){\line(1,0){6}}
+\newsavebox{\eqdist}
+\savebox{\eqdist}(0,0)[b]{%
+ \thinlines
+ \put(-0.08,0.2){\line(0,-1){0.4}}%
+ \put(0.08,0.2){\line(0,-1){0.4}}}
+\put(1.5,0){\usebox{\eqdist}}
+\put(10.5,0){\usebox{\eqdist}}
+
+\color{blue}% shifted
+\thicklines
+\put(3,-1.5){\vector(-1,0){4}}
+\put(1,-1.7){\makebox(0,0)[t]{\texttt{left}}}
+\put(3,0){\vector(0,-1){1.5}}
+\put(3.2,-0.75){\makebox(0,0)[l]{\texttt{down}}}
+\end{picture}
+\end{center}
+\end{minipage}%
+\begin{minipage}{0.6\textwidth}%
%<*en>
-\item[\tt jfm-ujis.lua] A standard 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.
+Consider a Japanese character node which belongs to
+a character class whose the \texttt{align}
+field is \texttt{'middle'}.
%
%<*ja>
-\item[\tt jfm-ujis.lua] \LuaTeX-jaã®æ¨æºJFMã§ããï¼ãã®JFMã¯\upTeX ã§
- ç¨ããããUTF/OTFããã±ã¼ã¸ç¨ã®åæç¨TFMã§ãã \verb+upnmlminr-h.tfm+ ã
- å
ã«ãã¦ããï¼\Pkg{luatexja-otf}ããã±ã¼ã¸ã使ãã¨ãã¯ãã®JFMãæå®ããã¹ãã§ããï¼
+\texttt{align}ãã£ã¼ã«ãã®å¤ã \texttt{'middle'} ã§ãããããªæåã¯ã©ã¹ã«å±ãã
+åææåãã¼ããèãããï¼
%
+\begin{itemize}
+\item
%<*en>
-\item[\tt jfm-jis.lua] A counterpart for \verb+jis.tfm+, ``JIS font
- metric'' which is widely used in \pTeX. A major difference between
- \texttt{jfm-ujis.lua} and this \texttt{jfm-jis.lua} is that
- most characters under \texttt{jfm-ujis.lua} are square-shaped,
- while that under \texttt{jfm-jis.lua} are horizontal
- rectangles.
+The black rectangle is the imaginary body of the node.
+Its width, height, and depth are specified by JFM.
%
%<*ja>
-\item[\tt jfm-jis.lua] \pTeX ã§åºãç¨ãããã¦ãããJISãã©ã³ãã¡ããªãã¯ã
- \verb+jis.tfm+ ã«ç¸å½ããJFMã§ããï¼\texttt{jfm-ujis.lua} ã¨ãã®
- \texttt{jfm-jis.lua} ã®ä¸»ãªéãã¯ï¼\texttt{jfm-ujis.lua} ã§ã¯ã»ã¨ãã©ã®æåã
- æ£æ¹å½¢ç¶ã§ããã®ã«å¯¾ãï¼\texttt{jfm-jis.lua} ã§ã¯æ¨ªé·ã®é·æ¹å½¢ç¶ã§ãããã¨ã¨ï¼
- \texttt{jfm-ujis.lua} ã§ã¯ãï¼ããï¼ãã®ç´å¾ã«åè§ç©ºç½ãæ¿å
¥ããããã¨ã§ããï¼
+é»è²ã®é·æ¹å½¢ã¯ãã¼ãã®æ ã§ããï¼
+ãã®å¹
ï¼é«ãï¼æ·±ãã¯JFMã«ãã£ã¦æå®ããã¦ããï¼
%
+\item
%<*en>
-\item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
- of the default Japanese font metric shipped with \pTeX.
+Since the \texttt{align} field is \texttt{'middle'},
+the ``real'' glyph is centered horizontally (the green rectangle) first.
%
%<*ja>
-\item[\tt jfm-min.lua] \pTeX ã«å梱ããã¦ããããã©ã«ãã®åæç¨TFM
-(\verb+min10.tfm+)ã«ç¸å½ãï¼è¡æ«ã§æåãæãããã«ããããã«ãã£ããªã©ä¸é¨ã®æåå¹
ãå¤ãã£
- ã¦ããï¼\verb+min10.tfm+ ã«ã¤ãã¦ã¯\cite{min10}ã詳ããï¼
+\texttt{align}ãã£ã¼ã«ã㯠\texttt{'middle'} ãªã®ã§ï¼
+å®éã®ã°ãªãã®ä½ç½®ã¯ã¾ãæ°´å¹³æ¹åã«ä¸å¤®æããããã®ã¨ãªãï¼ç·è²ã®é·æ¹å½¢ï¼ï¼
%
-\end{description}
+\item
%<*en>
-The difference among these three~JFMs is shown in Table~\ref{tab-difjfm}.
+Furthermore, the glyph is shifted according to values of fields
+ \texttt{left} and \texttt{down}. The ultimate position of the real
+ glyph is indicated by the red rectangle.
%
%<*ja>
-ããã3ã¤ã®JFMã®éãã¯è¡¨\ref{tab-difjfm}ã«ç¤ºããï¼è¡¨ä¸ã®æä¾ã®ä¸é¨ã«ã¯ï¼
-\cite{min10}ã®å³3,~4ã®ãã®ãç¨ããï¼
+ããã«ï¼ã°ãªã㯠\texttt{left} 㨠\texttt{down} ã®å¤ã«å¾ã£ã¦ã·ãããããï¼
+æçµçãªå®éã®ã°ãªãã®ä½ç½®ã¯èµ¤è²ã®é·æ¹å½¢ã§ç¤ºãããä½ç½®ã«ãªãï¼
%
+\end{itemize}
+\end{minipage}
+\medskip
-\begin{figure}
-\begin{LTXexample}[width=0.3\textwidth]
-\ltjsetparameter{differentjfm=both}
-\jfont\F=file:KozMinPr6N-Regular.otf:jfm=ujis
-\jfont\G=file:KozGoPr6N-Medium.otf:jfm=ujis
-\jfont\H=file:KozGoPr6N-Medium.otf:jfm=ujis;jfmvar=hoge
-\F ï¼{\G ãã}ï¼ % halfwidth space
- ï¼{\H ãã}ï¼ % fullwidth space
+\caption{%
+%The position of the real glyph (horizontal Japanese fonts)
+%横çµåæãã©ã³ãã«ããããå®éã®ãã°ãªãã®ä½ç½®
+}
+\label{fig:pos}
+\end{figure}
+\begin{figure}[!tb]
+\begin{minipage}{0.4\textwidth}%
+\begin{center}\unitlength=10pt\small
+\begin{picture}(15,12)(-6,0)
+\color{b_gray}% jfm
+\put(-6,0){\vrule width 12\unitlength height 11\unitlength}
-ã»ãï¼{\G ãã»ãã}ï¼ã»ãï¼\par
-ã»ãï¼{\H ãã»ãã}ï¼ã»ãï¼% pTeX-like
+\color{b_pink}% real glyph
+\put(-6.5,5.5){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
-\ltjsetparameter{differentjfm=paverage}
-\end{LTXexample}
-\caption{Example of \texttt{jfmvar} key}
-\label{fig:jfmvar}
-\end{figure}
+\color{red}% real glyph
+\thicklines
+\put(-6.5,5.5){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
+\put( 1.5,5.5){\line(0,1){6}\line(0,-1){3}}
+\put(-6.5,11.5){\line(1,0){8}}
+\put(-6.5,2.5){\line(1,0){8}}
-%<*en>
-\item[jfmvar=]
-Sometimes there is a need that \ldots.
-%
-%<*ja>
-\item[jfmvar=]
-æ¨æºã§ã¯ï¼JFMã¨ãµã¤ãºãåãã§ï¼
- å®ãã©ã³ãã ããç°ãªã2ã¤ã®åæãã©ã³ãã¯ãåºå¥ãããªããï¼ä¾ãã°
-å³\ref{fig:jfmvar}ã«ããã¦ï¼æåã®ãï¼ãã¨ãããã®å®ãã©ã³ãã¯ç°ãªããï¼
-JFMããµã¤ãºãåããªã®ã§ï¼æ®éã«ãï¼ããã¨å
¥åããæã¨åãããã«åè§ç©ºãã¨ãªãï¼
+\color{b_green}% step1
+\put(-4,3){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
-ãããï¼JFMã¨ãµã¤ãºãåãã§ãã£ã¦ãï¼\texttt{jfmvar} ãã¼ã®ç°ãªã
-2ã¤ã®åæãã©ã³ãï¼ä¾ãã°å³\ref{fig:jfmvar}ã§è¨ã \cs{F} 㨠\cs{H}ï¼
-ã¯ãåºå¥ããããï¼ç°ãªãåæãã©ã³ãã«ç°ãªã \texttt{jfmvar} ãã¼ãå²ãå½ã¦ï¼
-ãã¤\Param{differentjfm}ãã©ã¡ã¼ã¿ã \texttt{both} ã«è¨å®ããã°ï¼
-\pTeX ã¨ä¼¼ãç¶æ³ã§çµçããããã¨ã«ãªãï¼
-%
-\end{cslist}
+\color{black}% jfm
+\thicklines
+\put(0,11){\vector(1,0){6}\vector(-1,0){6}\vector(0,-1){11}}
+\put(0,0){\line(1,0){6}\line(-1,0){6}}
+\put(-6,0){\line(0,1){11}}
+\put( 6,0){\line(0,1){11}}
+\put( 3,10.8){\makebox(0,0)[t]{\texttt{height}}}
+\put(-3,10.8){\makebox(0,0)[t]{\texttt{depth}}}
+\put(0.2,5.5){\makebox(0,0)[l]{\texttt{width}}}
-\begin{figure}
-\begin{LTXexample}[pos=t]
-\newcommand\test{\vrule ãã¤ãããã¯ãã¤ã¯ã\vrule\\}
-\jfont\KMFW = KozMinPr6N-Regular:jfm=prop;-kern at 17pt
-\jfont\KMFK = KozMinPr6N-Regular:jfm=prop at 17pt % kern is activated
-\jfont\KMPW = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;-kern at 17pt
-\jfont\KMPK = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;+kern at 17pt
-\begin{multicols}{2}
-\ltjsetparameter{kanjiskip=0pt}
-{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+\color{green}% step1
+\thicklines
+\put(-4,3){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
+\put( 4,3){\line(0,1){6}\line(0,-1){3}}
+\put(-4,9){\line(1,0){8}}
+\put(-4,0){\line(1,0){8}}
+\savebox{\eqdist}(0,0)[b]{%
+ \thinlines
+ \put(-0.08,0.2){\line(0,-1){0.4}}%
+ \put(0.08,0.2){\line(0,-1){0.4}}}
+\put(2,9){\usebox{\eqdist}}
+\put(-2,9){\usebox{\eqdist}}
-\ltjsetparameter{kanjiskip=3pt}
-{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
-\end{multicols}
-\end{LTXexample}
-\caption{Kerning information and \Param{kanjiskip}}
-\label{fig:kern-jfm}
-\end{figure}
-%\paragraph{Using kerning information in a font}
-%\paragraph{ãã¢ã«ã¼ãã³ã°æ
å ±ã®ä½¿ç¨}
-\label{para-kern}
+\color{blue}% shifted
+\thicklines
+\put(-4,3){\vector(0,1){2.5}}
+\put(-3.8,4.25){\makebox(0,0)[l]{\texttt{left}}}
+\put(-4,5.5){\vector(-1,0){2.5}}
+\put(-5.,5.7){\makebox(0,0)[b]{\texttt{down}}}
+\end{picture}
+\end{center}
+\end{minipage}%
+\begin{minipage}{0.6\textwidth}%
%<*en>
-Some fonts have information for inter-glyph spacing.
-This version of \LuaTeX-ja treats kerning spaces like an italic correction;
-any glue and/or kern from the JFM and a kerning space can coexist.
-See Figure~\ref{fig:kern-jfm} for detail.
-
-Note that in \cs{setmainjfont} etc.\ which are provided by \Pkg{luatexja-fontspec}
-package, kerning option is set \emph{off} (\texttt{Kerning=Off}) by default,
-because of the compatibility with previous versions of \LuaTeX-ja.
+(\dots)
%
%<*ja>
-ããã¤ãã®ãã©ã³ãã¯ã°ãªãéã®ã¹ãã¼ã¹ã«ã¤ãã¦ã®æ
å ±ãæã£ã¦ããï¼
-ãã®ã«ã¼ãã³ã°æ
å ±ã¯ä»¥åã®\LuaTeX-ja ã¨ã¯ãã¾ãç¸æ§ãè¯ããªãã£ããï¼
-æ¬ãã¼ã¸ã§ã³ã§ã¯ã«ã¼ãã³ã°ã«ãã空ç½ã¯ã¤ã¿ãªãã¯è£æ£ã¨åæ§ã«æ±ããã¨ã«ãªã£ã¦ããï¼
-ã¤ã¾ãï¼ã«ã¼ãã³ã°ç±æ¥ã®ç©ºç½ã¨JFMç±æ¥ã®ã°ã«ã¼ã»ã«ã¼ã³ã¯åæã«å
¥ãããï¼
-å³\ref{fig:kern-jfm}ãåç
§ï¼
+\texttt{align}ãã£ã¼ã«ãã®å¤ã \texttt{'right'} ã§ãããããªæåã¯ã©ã¹ã«å±ãã
+åææåãèãããï¼
\begin{itemize}
- \item \emph{\cs{jfont} ãï¼
-NFSS2ç¨ã®å½ä»¤ï¼\ref{ssec-chgfnt}ç¯ï¼\ref{ssec-nfsspat}ç¯ï¼ã«ãããæå®ã§ã¯
-ã«ã¼ãã³ã°æ
å ±ã¯æ¨æºã§ä½¿ç¨ãã}ãã¨ã«ãªã£ã¦ããããã§ããï¼
-è¨ãæããã°ï¼ã«ã¼ãã³ã°æ
å ±ã使ç¨ããªãè¨å®ã«ããã«ã¯ï¼é¢åã§ã
-\begin{lstlisting}
-\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
-\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
-\end{lstlisting}
-ã®ããã«ï¼\texttt{-kern} ã¨ããæå®ãèªåã§è¿½å ããªããã°ãããªãï¼
- \item
-ä¸æ¹ï¼\emph{\Pkg{luatexja-fontspec} ã®æä¾ãã \cs{setmainjfont}\
-ãªã©ã®å½ä»¤ã®æ¨æºè¨å®ã§ã¯ã«ã¼ãã³ã°æ
å ±ã¯ä½¿ç¨ããªã}ï¼\texttt{Kerning=Off}ï¼
-ãã¨ã«ãªã£ã¦ããï¼ããã¯ä»¥åã®ãã¼ã¸ã§ã³ã®\LuaTeX-jaã¨ã®äºææ§ã®ããã§ããï¼
+\item
+å®éã®ã°ãªãã®ãåç´ä½ç½®ãã¯ï¼ã¾ããã¼ã¹ã©ã¤ã³ãæåã®ç©ççãªå·¦å³æ¹åã®ä¸å¤®ãéã
+ä½ç½®ã¨ãªãï¼
+\item
+ã¾ãï¼ãã®å ´å \texttt{align} ãã£ã¼ã«ã㯠\texttt{'right'} ãªã®ã§ï¼
+ãæ°´å¹³ä½ç½®ãã¯åéãæ¹åã«ãå³å¯ãããããã®ã¨ãªãï¼ç·è²ã®é·æ¹å½¢ï¼ï¼
+\item
+ãã®å¾ããã« \texttt{left} 㨠\texttt{down} ã®å¤ã«å¾ã£ã¦ã·ããããã
+ã®ã¯æ¨ªçµç¨åæãã©ã³ãã¨å¤ãããªãï¼
+\end{itemize}
+%
+\end{minipage}
+\medskip
+
+\caption{%
+%The position of the real glyph (vertical Japanese fonts)
+%縦çµåæãã©ã³ãã«ããããå®éã®ãã°ãªãã®ä½ç½®
+}
+\label{fig:pos-tate}
+\end{figure}
+
+\item[kern={\{[$j$]=, [$j'$]=\{, [ratio=]\}, ...\}}]
+\nopagebreak
+\item[glue={\{[$j$]=\{, , , [ratio=, ...]\}, ...\}}]\leavevmode
+%<*ja>
+
+æåã¯ã©ã¹$i$ã®æåã¨$j$ã®æåã®éã«æ¿å
¥ãããã«ã¼ã³ãã°ã«ã¼ã®éãæå®ããï¼
+
+ã¯ï¼ã°ã«ã¼ã®èªç¶é·ã®ãã¡ã©ãã ãã®å²åããå¾ã®æåãç±æ¥ãã示ãéã§ï¼
+$0$ãã$+1$ã®å®æ°å¤ãã¨ãï¼çç¥æã®å¤ã¯$0.5$ã§ããï¼
+ãã®ãã£ã¼ã«ãã®å¤ã¯\Param{differentjfm}ã®å¤ã
+\texttt{pleft},~\texttt{pright},~\texttt{paverage}ã®å¤ã®ã¨ãã®ã¿å®éã«ç¨ããããï¼
+
+ä¾ãã°ï¼\cite{x4051}ã§ã¯ï¼å¥ç¹ã¨ä¸ç¹ã®éã«ã¯ï¼
+å¥ç¹ç±æ¥ã®äºå空ãã¨ä¸ç¹ç±æ¥ã®åå空ããæ¿å
¥ããããï¼ãã®å ´åã«ã¯
+\begin{itemize}
+\item ã«ã¯$0.5+0.25=0.75$ãæå®ããï¼
+\item ã«ã¯$0.25/(0.5+0.25)=1/3$ãæå®ããï¼
\end{itemize}
%
+%<*en>
+\
+
+Specifies the amount of kern or glue which will be inserted
+between characters in character class~$i$ and those in character class~$j$.
+
+ specifies how much the glue is originated in the ``right'' character.
+It is a real number between 0 and 1, and treated as 0.5 if omitted. For example,
+The width of a glue between an ideographic full stop ``ã''
+and a fullwidth middle dot ``ã»'' is three-fourth of fullwidth,
+namely halfwidth from the ideographic full stop, and
+quarter-width from the fullwidth middle dot. In this case,
+we specify to $0.25/(0.5+0.25)=1/3$.
+%
%<*ja>
-\paragraph{\texttt{extend}ã¨\texttt{slant}}
-OpenType font featureã¨è¦ããä¸åããããªå½¢å¼ã§æå®ã§ãããã®ã«ï¼
-\begin{description}
-\item[\texttt{extend=}] 横æ¹åã«åæ¡å¤§ããï¼
-\item[\texttt{slant=}] ã«æå®ãããå²åã ãå¾ããï¼
-\end{description}
-ã®2ã¤ãããï¼
-\texttt{extend}ã\texttt{slant}ãæå®ããå ´åã¯ï¼ããã«å¿ããJFMãæå®ãã¹ãã§ãã%
-\footnote{\LuaTeX-jaã§ã¯ï¼ãããã«å¯¾ããJFMãç¹ã«æä¾ãããã¨ã¯ããªãäºå®ã§ããï¼}ï¼
-ä¾ãã°ï¼æ¬¡ã®ä¾ã§ã¯ç¡çããé常ã®JFMã使ã£ã¦ããããã«ï¼æåééãã¤ã¿ãªãã¯è£æ£éã
-æ£ãããªãï¼
-%
-%<*en>
-\paragraph{\texttt{extend} and \texttt{slant}}
-The following setting can be specified as OpenType font features:
+ã°ã«ã¼ã®æå®ã«ããã¦ã¯ï¼ä¸è¨ã«å ãã¦å \texttt{[$j$]} ã®åãµããã¼ãã«å
ã«
+次ã®ãã¼ãæå®ã§ããï¼
\begin{cslist}[style=standard]
-\item[\texttt{extend=}] expand the font horizontally by .
-\item[\texttt{slant=}] slant the font.
-\end{cslist}
-Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
-settings; you have to write new JFMs on purpose.
-For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence
-letter-spacing and the width of italic correction are not correct:
-%
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\E=KozMinPr6N-Regular:extend=1.5;jfm=ujis;-kern
-\E ããããã
+\item[priority=]
+ \Pkg{luatexja-adjust}ã«ããåªå
é ä½ä»ã
+ è¡é·èª¿æ´ï¼\ref{ssec-adj}ç¯ï¼ã«ããã¦ï¼ãã®ã°ã«ã¼ã®åªå
度ãæå®ããï¼è¨±ãããå¤ã¯ä»¥ä¸ã®éãï¼
+ \begin{description}
+ \item[ãã¼ã¸ã§ã³1] $-4$ãã$+3$ã®éã®æ´æ°
+ \item[ãã¼ã¸ã§ã³2以é] $-4$ãã$+3$ã®éã®æ´æ°ã®2ã¤çµ\texttt{\{, \}}ãï¼
+ ã¾ãã¯$-4$ãã$+3$ã®éã®æ´æ°ï¼, ã¯ãããããã®ã°ã«ã¼ã伸ã³ãã¨ãã®åªå
度ï¼ç¸®ãã¨ãã®
+ åªå
度ã§ããï¼åã«æ´æ°$i$ãæå®ãããå ´åã¯\texttt{\{$i$, $i$\}}ã§ããã¨è§£éãããï¼
+ \end{description}
+ ããã§æå®ããå¤ã¯ï¼å¤§ããå¤ã»ã©ãå
ã«ä¼¸ã°ãããããå
ã«ç¸®ã¾ããããã¨ãæå³ãã¦ããï¼çç¥æã®å¤
+ ã¯0ã§ããï¼ç¯å²å¤ã®å¤ãæå®ãããã¨ãã®åä½ã¯æªå®ç¾©ã§ããï¼
+\item[kanjiskip\_natural=\textrm{, }%
+ kanjiskip\_stretch=\textrm{, }kanjiskip\_shrink=]\leavevmode
+ \label{pg:ksp_nat}
-\jfont\S=KozMinPr6N-Regular:slant=1;jfm=ujis;-kern
-\S ããã\/ABC
-\end{LTXexample}
+JFMã«ãã£ã¦æ¬æ¥æ¿å
¥ãããã°ã«ã¼ã®ä»ã«
+\Param{kanjiskip}åã®ç©ºç½ãèªç¶é·(\texttt{kanjiskip\_natural})ï¼ä¼¸ã³é(\texttt{kanjiskip\_stretch})ï¼
+縮ã¿é(\texttt{kanjiskip\_shrink})ãã¨ã«æ¿å
¥ãã\footnote{æ¬æ¥\Param{xkanjiskip}ãæ¿å
¥ãããå ´æã«ããã¦ã¯
+ \Param{xkanjiskip}åã®ç©ºç½ãèªç¶é·ã»ä¼¸ã³éã»ç¸®ã¿éãã¨ã«ï¼è¿½å ã§ããï¼}%
+ããã®æå®ã§ããï¼ããããçç¥ãããå ´åã®ããã©ã«ãå¤ã¯0ï¼è¿½å ããªãï¼ã§ããï¼
-%<*ja>
-\paragraph{\texttt{ltjksp} æå®}
-\label{pg:ltjksp}
-\LuaTeX-jaæ¨æºã§ã¯ï¼
-JFMä¸ã«ããã \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
-\texttt{kanjiskip\_shrink}ãã¼ï¼\pageref{pg:ksp_nat}ãã¼ã¸ï¼ã®ä½¿ç¨ã«ãã£ã¦ï¼
-ãJFMç±æ¥ã®ã°ã«ã¼ã®ä»ã«ï¼\Param{kanjiskip}ã®èªç¶é·/伸ã³é/縮ã¿éã®ä¸é¨ã
-åãå ´æã«æ¿å
¥ããããã¨ããç¶æ³ãèµ·ããããï¼
-ãã®æ©è½ãç¡å¹åãï¼20150922.0ç以åã¨åããããªçµçãå¾ãããã«ã¯
-ä»ã®OpenTypeæ©è½ã¨åãããã«\ \texttt{-ltjksp}\ æå®ãè¡ãã°è¯ãï¼
+ä¾ãã°ï¼\LuaTeX-jaã®æ¨ªçµæ¨æºJFMã® \texttt{jfm-ujis.lua} ã§ã¯ï¼
+\begin{itemize}
+ \item é常ã®æåãããã¨éãæ¬å¼§é¡ã®éã«å
¥ãã°ã«ã¼ã¯ï¼èªç¶é·ã»ç¸®ã¿éåè§ï¼ä¼¸ã³é0ã®ã°ã«ã¼
+ã¨ãªã£ã¦ãããï¼ããã«\Param{kanjiskip}ã®ä¼¸ã³éã« \texttt{kanjiskip\_stretch}ï¼ããã§ã¯1ï¼ãæã
+ ãåã ã伸ã³ããã¨ã許ãããï¼
+ \item åæ§ã«ï¼éãæ¬å¼§é¡ï¼å
¨è§ã³ã³ããï¼ããå«ãï¼ã¨é常ã®æåããããããã®éã«ã
+èªç¶é·ã»ç¸®ã¿éåè§ï¼ä¼¸ã³é0ã®ã°ã«ã¼
+ã¨ãªã£ã¦ãããï¼ããã«\Param{kanjiskip}ã®ä¼¸ã³éã« \texttt{kanjiskip\_stretch}ï¼ããã§ã¯1ï¼ãæã
+ ãåã ã伸ã³ããã¨ã許ãããï¼
+\end{itemize}
+ã¨ãªã£ã¦ããï¼å¾ã£ã¦ï¼ä»¥ä¸ã®ãããªçµççµæãå¾ãï¼
+
+\medskip
\begin{LTXexample}[width=16\zw]
\leavevmode
\ltjsetparameter{kanjiskip=0pt plus 3\zw}
\vrule\hbox to 15\zw{ãããããï¼ãã}\vrule
-
-\jfont\G=file:KozMinPr6N-Regular.otf%
- :jfm=ujis;-ltjksp at 9.2487pt
-\G\leavevmode%
-\vrule\hbox to 15\zw{ãããããï¼ãã}\vrule
\end{LTXexample}
-ãªãï¼
-\begin{lstlisting}
- \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt
-\end{lstlisting}
-ã®ããã« \texttt{+ltjksp} æå®ãè¡ã£ãå ´åã¯ï¼\texttt{kanjiskip\_natural} ãªã©
-3ãã¼ã¯åã³æå¹åãããï¼\texttt{-ltjksp}, \texttt{+ltjksp} ãè¤æ°åæå®ããå ´åã¯ï¼
-æå¾ã«æå®ãããã®ãæå¹ã¨ãªãï¼
-%
-
-%\subsection{\cs{tfont}}
-%\subsection{\cs{tfont} å½ä»¤}
+\end{cslist}
+%
+%<*en>
+In case of glue, one can specify following additional keys in each \texttt{[$j$]}
+ subtable:
+\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~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,
+and is also easy to shrink.
+\item[kanjiskip\_natural=\textrm{, }%
+ kanjiskip\_stretch=\textrm{, }kanjiskip\_shrink=]\leavevmode
+These keys specifies the amount of the natural width of \Param{kanjiskip}
+(the stretch/shrink part, respectively) which will be inserted
+in addition to the original JFM glue. Default values of them are all 0.
-\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{%
- \hbox{\tate\Large\vrule
- \parbox{7\zw}{%
- \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
- âââââââ
- ããæ¥ã¢ã¢ã¡ããããã使ããã§è¿·åã«ãªã£ã¦æ³£ãã¾ããã
- }\vrule}}
-\def\s#1#2{%
- \hbox{\tate\Large
- \parbox{7\zw}{%
- \addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
- ã¡ãã£ã¨ï¼ä½
- }}}
-\def\t#1#2#3{\hbox to 0pt{\hss%
- \setbox0=\hbox{\addjfontfeatures{TateFeatures={JFM=#1}}\huge #3}%
- \textcolor{#2}{\transparent{0.5}\vrule width 0.4pt height\ht0 depth\dp0}\kern-.2pt\copy0
- \textcolor{#2}{\transparent{0.5}\kern-\wd0\vrule width\wd0height .2pt depth .2pt
- \kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
- \kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
- \kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}\hss}}
+As an example, in \texttt{jfm-ujis.lua}, the standard JFM in horizontal writing, we have
+\begin{itemize}
+ \item Between an ordinal letter ``ã'' and an ideographic opening bracket, we have
+a glue whose natural part and shrink part are both half-width, while its stretch part is
+ zero. However, this glue also can be stretched
+ as much as the stretch part of \Param{kanjiskip} times the value of
+ \texttt{kanjiskip\_stretch} key (1 in this case).
+ \item Between an ideographic closeing brackets (the ideographic comma ``ï¼''
+ is included) and an ordinal letter, we have the same glue.
+ Again, this glue also can be stretched
+ as much as the stretch part of \Param{kanjiskip} times the value of
+ \texttt{kanjiskip\_stretch} key (1 in this case).
+\end{itemize}
+Hence we have the following result:
-\begin{minipage}{.7\textwidth}
-\centering
-\leavevmode\hbox to 0pt{\r{ujisv}{blue}\hss}\r{tmin}{red}\quad
-\leavevmode\hbox to 0pt{\s{ujisv}{blue}\hss}\s{tmin}{red}\quad
-\raise4\zw\hbox{\tate\Large\t{ujisv}{black}{æ¼¢}\t{tmin}{red}{æ¼¢}\qquad
- \t{ujisv}{black}{ã£}\t{tmin}{red}{ã£}}
-\end{minipage}%
-\begin{minipage}{.3\textwidth}
-\textcolor{blue}{Blue: \texttt{jfm-ujisv.lua}}\\
-\textcolor{red}{Red: \texttt{jfm-tmin.lua}}
-\end{minipage}
-\ltjsetparameter{jacharrange={-3}}
-\end{table}
+\medskip
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{ãããããï¼ãã}\vrule
+\end{LTXexample}
-%<*en>
-...
+\end{cslist}
%
+
+\item[end\_stretch=, end\_shrink=]
%<*ja>
-\cs{tfont} ã¯ãã©ã³ãã縦çµç¨ã®åæãã©ã³ãã¨ãã¦èªã¿è¾¼ãå½ä»¤ã§ããï¼
-\cs{tfont} ã®ææ³ã¯ \cs{jfont} ã¨åãã§ããï¼
-\cs{tfont} ã§å®ç¾©ããã縦çµç¨åæãã©ã³ãã¯ï¼
-以ä¸ã®ç¹ã \cs{jfont} ã«ãã横çµç¨åæãã©ã³ãã¨ã¯ç°ãªãï¼
-\begin{itemize}
- \item èªåçã« \texttt{vert}, \texttt{vrt2} ã®ä¸¡OpenType featureãæå¹åãããï¼
-ä½ãï¼ä»¥ä¸ã®ä¾ã®3è¡ç®ã«ç¤ºãããã«ï¼æ示çã« \texttt{vert}, \texttt{vrt2}ï¼ã®ããããï¼ã®
-æå¹ã»ç¡å¹ãæå®ããå ´åã¯å¥ã§ããï¼
-\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 \ref{ssec-math}ç¯ã§è¿°ã¹ãï¼æ°å¼ä¸ã®åæãã©ã³ãã«ã¯ç¸¦çµç¨åæãã©ã³ãã¯æå®ã§ããªãï¼
- \item \texttt{jfm=}\ ã®é¨åã«ã¯ç¸¦çµç¨JFMãæå®ããï¼
-以ä¸ã®ç¸¦çµç¨JFMã\LuaTeX-jaã«ã¯å梱ããã¦ããï¼éãã表\ref{tab-difjfm-tate}ã«ç¤ºããï¼
-\begin{description}
-\item[\tt jfm-ujisv.lua] \LuaTeX-jaã®æ¨æºç¸¦çµç¨JFMã§ããï¼ãã®JFMã¯\upTeX ã§
- ç¨ããããUTF/OTFããã±ã¼ã¸ç¨ã®åæç¨TFMã§ãã \verb+upnmlminr-v.tfm+ ã
- å
ã«ãã¦ããï¼
-\item[\tt jfm-tmin.lua] \pTeX ã«å梱ããã¦ããããã©ã«ãã®åæç¨ç¸¦çµTFM
- ã§ãã \verb+tmin10.tfm+ ã«ç¸å½ãï¼\texttt{min10.tfm} ã¨åæ§ã«
- ãã£ããªã©ä¸é¨ã®æåå¹
ãçãããã¦ããï¼
-\end{description}
-\end{itemize}
+ï¼ä»»æï¼ãã¼ã¸ã§ã³1ã®ã¿ï¼
-ãªãï¼\pTeX ã§ã¯ï¼\cs{font},~\cs{jfont},~\cs{tfont}ã®ã©ãã§ã欧æãã©ã³ãã»æ¨ªçµç¨åæãã©ã³
-ãã»ç¸¦çµç¨åæãã©ã³ãã®å®ç¾©ãå¯è½ã§ãã£ããï¼\LuaTeX-jaã§ã¯ããã§ãªãã®ã§æ³¨æï¼
+åªå
é ä½ä»ãè¡é·èª¿æ´ãæå¹ã§ããï¼ãã¤ç¾å¨ã®æåã¯ã©ã¹ã®æåãè¡
+ æ«ã«æ¥ãæã«ï¼è¡é·ãè©°ãã調æ´ã»ä¼¸ã°ã調æ´ã®ã
+ ãã«ãã®æåã¨è¡æ«ã®éã«æ¿å
¥å¯è½ãªã«ã¼ã³ã®å¤§ãããæå®ããï¼
%
-
-%\subsection{Prefix \texttt{psft}}
-%\subsection{\texttt{psft}ããªãã£ãã¯ã¹}
-\label{ssec-psft}
%<*en>
-Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which
-are introduced in the \Pkg{luaotfload} package,
-\LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \cs{jfont} (and~\cs{font}),
-to specify a ``name-only'' Japanese font which
-will not be embedded to PDF.
-Note that these non-embedded fonts under current \LuaTeX\ has Identity-H encoding,
-and this violates the standard ISO32000-1:2008~(\cite{pdfstd}).
-
-\emph{OpenType font features, such as ``{\tt +jp90}'',
-have no meaning in name-only fonts using ``{\tt psft:}''\ prefix,
-because we can't expect what fonts are actually used by the PDF reader.}
-Note that \texttt{extend}~and~\texttt{slant} settings (see~above) are supported
-with \texttt{psft} prefix, because they are only simple linear transformations.
+(optional, version~1 only)
%
-%<*ja>
-\Pkg{luaotfload}ã§ä½¿ç¨å¯è½ã«ãªã£ã
-\texttt{file:}\ 㨠\texttt{name:}\ ã®ããªãã£ãã¯ã¹ã«å ãã¦ï¼
-\cs{jfont}ï¼ã¨ \cs{font} ããªããã£ãï¼ã§ã¯
-\texttt{psft:}ããªãã£ãã¯ã¹ãç¨ãããã¨ãã§ããï¼
-ãã®ããªãã£ãã¯ã¹ãç¨ãããã¨ã§ï¼PDFã«ã¯åãè¾¼ã¾ããªããååã ãã®ã
-åæãã©ã³ããæå®ãããã¨ãã§ããï¼
-ãªãï¼ç¾è¡ã®\LuaTeX ã§éåãè¾¼ã¿ãã©ã³ããä½æããã¨PDFå
ã§ã®ã¨ã³ã³ã¼ãã£ã³ã°ã
-Identity-Hã¨ãªãï¼PDFã®æ¨æºè¦æ ¼ISO32000-1:2008~(\cite{pdfstd})ã«éæºæ ã«ãªã£ã¦ãã¾ã
-ã®ã§æ³¨æãã¦ã»ããï¼
-\emph{\texttt{psft} ããªãã£ãã¯ã¹ã®ä¸ã§ã¯
-\texttt{+jp90} ãªã©ã®OpenType font featureã®å¹åã¯ãªãï¼
-éåè¾¼ãã©ã³ããPDFã«ä½¿ç¨ããã¨ï¼å®éã«ã©ã®ãããªãã©ã³ãã
-表示ã«ç¨ãããããäºæ¸¬ã§ããªãããã§ããï¼}\
-\texttt{extend} 㨠\texttt{slant} æå®ã¯åãªãå¤å½¢ã®ãã
-\texttt{psft} ããªãã£ãã¯ã¹ã§ã使ç¨å¯è½ã§ããï¼
-%
+ \item[end\_adjust=\{, , ...\}]
+%<*ja>
+ï¼ä»»æï¼ãã¼ã¸ã§ã³2ã®ã¿ï¼
-%\paragraph{\texttt{cid} key}
-%\paragraph{\texttt{cid}ãã¼}
-\label{para-cid}
+åªå
é ä½ä»ãè¡é·èª¿æ´ãæå¹ã§ããï¼ãã¤ç¾å¨ã®æåã¯ã©ã¹ã®æåã
+ è¡æ«ã«æ¥ãæã«ï¼ãã®æåã¨è¡æ«ã®éã«ã¯æå®ãããå¤ã®ããããã®å¤§ããã®ã«ã¼ã³ã
+ æ¿å
¥ãããï¼\autoref{ssec-adj}åç
§ï¼ï¼
+ãã¼ã¸ã§ã³1ã«ããã
+\begin{lstlisting}[escapechar=\$]
+ end_stretch = $a$, end_shrink = $b$
+\end{lstlisting}
+ã¨ããæå®ã¯ï¼ãã¼ã¸ã§ã³2ã§ã¯æ¬¡ã®æå®ã¨åãã«ãªãï¼
+\begin{lstlisting}[escapechar=\$]
+ end_adjust = {$-b$, 0.0, $a$}
+\end{lstlisting}
+ããçãä¸ã® \texttt{0.0} ããªãå ´åã¯ï¼$a$ã$-b$ãããããã®ã«ã¼ã³ã常ã«è¡æ«ã«è¿½å ãããï¼
+%
%<*en>
-The default font defined by using \texttt{psft:} prefix is for Japanese typesetting;
-it is Adobe-Japan1-6 CID-keyed font.
-One can specify \texttt{cid} key to use other CID-keyed non-embedded fonts
-for Chinese or Korean typesetting.
+(optional, version~2 only)
%
-%<*ja>
-æ¨æºã§\texttt{psft:}ããªãã£ãã¯ã¹ã§å®ç¾©ããããã©ã³ãã¯æ¥æ¬èªç¨ã®ãã®ã§
-ããï¼Adobe-Japan1-6ã®CIDã«å¯¾å¿ãããã®ã¨ãªãï¼ãããï¼\LuaTeX-jaã¯ä¸å½èª
-ã®çµçã«ãå¨åãçºæ®ãããã¨ãåããï¼æ¥æ¬èªãã©ã³ãã§ãªãéåè¾¼ãã©ã³ã
-ã®å¯¾å¿ãå¿
è¦ã¨ãªã£ãï¼ãã®ããã«è¿½å ãããã®ã\texttt{cid}ãã¼ã§ããï¼
-\texttt{cid}ãã¼ã«å¤ãæå®ããã¨ï¼ãã®CIDãæã£ãéåè¾¼ãã©ã³ããå®ç¾©ãããã¨ãã§ããï¼
+\end{cslist}
+
+%<*ja>
+\paragraph{æåã¯ã©ã¹ã®æ±ºå®}
+æåãããã®æåã®å±ããæåã¯ã©ã¹ãç®åºããéç¨ã«ã¤ãã¦ï¼
+次ã®å
容ãå«ãã \texttt{jfm-test.lua} ãç¨ãã¦èª¬æããï¼
%
-\begin{lstlisting}[numbers=left]
-\jfont\testJ={psft:Ryumin-Light:cid=Adobe-Japan1-6;jfm=jis} % Japanese
-\jfont\testD={psft:Ryumin-Light:jfm=jis} % default value is Adobe-Japan1-6
-\jfont\testC={psft:AdobeMingStd-Light:cid=Adobe-CNS1-6;jfm=jis} % Traditional Chinese
-\jfont\testG={psft:SimSun:cid=Adobe-GB1-5;jfm=jis} % Simplified Chinese
-\jfont\testK={psft:Batang:cid=Adobe-Korea1-2;jfm=jis} % Korean
+%<*en>
+\paragraph{Character to character classes}
+We explain how the character class of a character is determined,
+using \texttt{jfm-test.lua} which contains the following:
+%
+\begin{lstlisting}
+ [0] = {
+ chars = { 'æ¼¢' },
+ align = 'left', left = 0.0, down = 0.0,
+ width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
+ },
+ [2000] = {
+ chars = { 'ã', 'ï¾' },
+ align = 'left', left = 0.0, down = 0.0,
+ width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
+ },
\end{lstlisting}
+%ããã§ï¼æ¬¡ã®ãããªå
¥åã¨ãã®å®è¡çµæãèããï¼
+%Now consider the following input/output:
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
+\setbox0\hbox{\a ãæ¼¢}
+\the\wd0
+\end{LTXexample}
%<*en>
-Note that the code above specifies \texttt{jfm-jis.lua}, which is for Japanese fonts,
-as JFM for Chinese and Korean fonts.
+Now we look why the above source outputs 15\,pt.
+\begin{enumerate}
+\item The character ``ã'' is converted to its half width form ``ï¾'' by \verb+hwid+ feature.
+\item According to the JFM, the character class of ``ï¾'' is 2000, hence its width is halfwidth.
+\item The character class of ``æ¼¢'' is zero, hence its width is fullwidth.
+\item Hence the width of \cs{hbox} equals to 15\,pt.
+\end{enumerate}
+This example shows that the character class of a character is generally determined \emph{after
+applying font features by \Pkg{luaotfload}}.
%
%<*ja>
-ä¸ã®ã³ã¼ãã§ã¯ä¸å½èªã»éå½èªç¨ãã©ã³ãã«å¯¾ãã¦ãJFMã«
-æ¥æ¬èªç¨ã®\texttt{jfm-jis.lua}ãæå®ãã¦ããã®ã§æ³¨æããããï¼
+ä¸è¨ã®åºåçµæãï¼15\,ptã¨ãªã£ã¦ããã®ã¯çç±ã«ãããã®ã§ããï¼
+\begin{enumerate}
+\item \verb+hwid+ featureã«ãã£ã¦ããããåè§å¹
ã®ã°ãªããï¾ãã¨ç½®ãæããï¼\Pkg{luaotfload} ã«ããå¦çï¼ï¼
+\item JFMã«ããã°ï¼ãã®ãï¾ãã®ã°ãªãã®æåã¯ã©ã¹ã¯2000ã§ããï¼
+\item 以ä¸ã«ããæåã¯ã©ã¹2000ã¨ã¿ãªãããããï¼çµæã¨ãã¦ãï¾ãã®å¹
ã¯åè§ã ã¨èªèãããï¼
+\end{enumerate}
+ãã®ä¾ã¯ï¼\emph{æåã¯ã©ã¹ã®æ±ºå®ã¯font featureã®é©ç¨ã«ããã°ãªãç½®æã®çµæã«åºã¥ã}ãã¨ã
+示ãã¦ããï¼
%
%<*en>
-At present, \LuaTeX-ja supports only 4 values written in the sample code above.
-Specifying other values, e.g.,
+However, if the class determined by the glyph after application of features is zero,
+\LuaTeX-ja adopts the class determined by the glyph \emph{before} application of features.
+The following input is an example.
%
%<*ja>
-ä»ã®ã¨ããï¼\LuaTeX-jaã¯ä¸ã®ãµã³ãã«ã³ã¼ãä¸ã«æ¸ãã4ã¤ã®å¤ãããµãã¼ããã¦ããªãï¼
+ä½ãï¼JFMã«ãã£ã¦æ±ºã¾ãç½®æå¾ã®ã°ãªãã®æåã¯ã©ã¹ã0ã§ããå ´åã¯ï¼ç½®æåã®æåã¯ã©ã¹ãæ¡ç¨ããï¼
%
-\begin{lstlisting}
-\jfont\test={psft:Ryumin-Light:cid=Adobe-Japan2;jfm=jis}
-\end{lstlisting}
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
+\a æ¼¢ã\inhibitglue æ¼¢
+\end{LTXexample}
%<*en>
-produces the following error:
+Here, the character class of the ideographic full stop ``ã''~(\texttt{U+3002}) is determined
+as follows:
+\begin{enumerate}
+\item As the case of ``ã'', the ideographic full stop ``ã'' is converted to its vertical
+ form ``\char"FE12''~(\texttt{U+FE12}) by \verb+vert+ feature.%"
+\item The character class of ``\char"FE12'', according to the JFM is \emph{zero}.
+\item However, \LuaTeX-ja remembers that this ``\char"FE12'' is obtained from ``ã'' by
+ font features. The character class of ``ã'' is \emph{non-zero value}, namely, 2000.
+\item Hence the ideographic full stop ``ã'' in above belongs the character class~2000.
+\end{enumerate}
%
%<*ja>
-ã®ããã«ããã以å¤ã®å¤ãæå®ããã¨ï¼ã¨ã©ã¼ãçºçããï¼
+ããã§ï¼å¥ç¹ããã(\texttt{U+3002})ã®æåã¯ã©ã¹ã¯ï¼ä»¥ä¸ã®ããã«ãã¦æ±ºã¾ãï¼
+\begin{enumerate}
+\item \Pkg{luaotfload} ã«ãã£ã¦ç¸¦çµç¨å¥ç¹ã®ã°ãªãã«ç½®ãæããï¼
+\item ç½®æå¾ã®ã°ãªã㯠\texttt{U+FE12} ã§ããï¼JFMã«å¾ãã°æåã¯ã©ã¹ã¯\emph{0}ã¨å¤å®ãããï¼
+\item ãã®å ´åï¼ç½®æåã®æ¨ªçµç¨å¥ç¹ã®ã°ãªãã«ãã£ã¦æåã¯ã©ã¹ãå¤å®ããï¼
+\item çµæã¨ãã¦ï¼ä¸ã®åºåä¾ä¸ã®å¥ç¹ã®æåã¯ã©ã¹ã¯2000ã¨ãªãï¼
+\end{enumerate}
%
-\begin{lstlisting}[numbers=left]
-! Package luatexja Error: bad cid key `Adobe-Japan2'.
-
-See the luatexja package documentation for explanation.
-Type H for immediate help.
-
- \par
-l.78
-? h
-I couldn't find any non-embedded font information for the CID
-`Adobe-Japan2'. For now, I'll use `Adobe-Japan1-6'.
-Please contact the LuaTeX-ja project team.
-?
-\end{lstlisting}
-%\subsection{Structure of a JFM file}
-%\subsection{JFMãã¡ã¤ã«ã®æ§é }
-\label{ssec-jfm-str}
-%A JFM file is a Lua script which has only one function call:
-%JFMãã¡ã¤ã«ã¯ãã ä¸ã¤ã®é¢æ°å¼ã³åºããå«ãLuaã¹ã¯ãªããã§ããï¼
-\begin{lstlisting}
-luatexja.jfont.define_jfm { ... }
-\end{lstlisting}
+%\paragraph{ä»®æ³çãªæå}
+%\paragraph{Imaginary characters}
%<*en>
-Real data are stored in the table which indicated above by
-\verb+{ ... }+. So, the rest of this subsection are devoted to describe the
-structure of this table. Note that all lengths in a JFM file are
-floating-point numbers in design-size unit.
+As described before, you can specify several \emph{imaginary characters} in
+\texttt{chars} field. The most of these characters are regarded as the
+characters of class 0 in \pTeX.
+As a result, \LuaTeX-ja can control typesetting finer than \pTeX.
+The following is the list of imaginary characters:
%
%<*ja>
-å®éã®ãã¼ã¿ã¯ä¸ã§ \verb+{ ... }+ ã§ç¤ºããããã¼ãã«ã®ä¸ã«æ ¼ç´ããã¦ããï¼
-以ä¸ã§ã¯ãã®ãã¼ãã«ã®æ§é ã«ã¤ãã¦è¨ãï¼
-ãªãï¼JFMãã¡ã¤ã«ä¸ã®é·ãã¯å
¨ã¦design-sizeãåä½ã¨ããæµ®åå°æ°ç¹æ°ã§ãããã¨ã«
-注æããï¼
+ä¸ã§èª¬æããéãï¼\texttt{chars}ãã£ã¼ã«ãä¸ã«ã¯ããã¤ãã®ãç¹æ®æåãã
+æå®å¯è½ã§ããï¼ãããã¯ï¼å¤§åã\pTeX ã®JFMã°ã«ã¼ã®æ¿å
¥å¦çã§ã¯ã¿ãªãæå
+ã¯ã©ã¹0ã®æåãã¨ãã¦æ±ããã¦ããæåã§ããï¼ãã®çµæã¨ãã¦\pTeX ããç´°ã
+ãçµç調æ´ãã§ããããã«ãªã£ã¦ããï¼ä»¥ä¸ã§ãã®ä¸è¦§ãè¿°ã¹ãï¼
%
-\begin{cslist}[style=standard]
+\begin{cslist}
+%%\item['diffmet']
+%%Used at a boundary between two \textbf{JAchar}s whose JFM or size is different.
+%%JFMããµã¤ãºãç°ãªã2ã¤ã®\textbf{JAchar}ã®éã®å¢çã¨ãã¦ç¨ããããï¼
-\item[dir=]
-%(required)
-%ï¼å¿
é ï¼
+\item['boxbdd']
+%The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \cs{noindent}) paragraph.
+%hboxã®å
é ã¨æ«å°¾ï¼åã³ã¤ã³ãã³ãããã¦ããªãï¼\cs{noindent} ã§éå§ãããï¼æ®µè½ã®å
é ã表ãï¼
+
+\item['parbdd']
+%The beginning of an (indented) paragraph.
+%é常ã®ï¼\cs{noindent} ã§éå§ããã¦ããªãï¼æ®µè½ã®å
é ï¼
+
+\item['jcharbdd']
+%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>
-The direction of JFM. \texttt{'yoko'}~(horizontal)
-or \texttt{'tate'}~(vertical) are supported.
+(version 3~or~later) A boundary between \textbf{JAchar} and \textbf{ALchar}.
%
%<*ja>
-JFMã®æ¸åæ¹åï¼\texttt{'yoko'}ï¼æ¨ªçµï¼ã¨ \texttt{'tate'}ï¼ç¸¦çµï¼ããµãã¼ããããï¼
+ï¼ãã¼ã¸ã§ã³3以éï¼\textbf{JAchar}ã¨\textbf{ALchar}ã¨ã®å¢çï¼
+\textbf{JAchar}ã¨\textbf{ALchar}ã®éã«\Param{xkanjiskip}ãå
¥ããã¨ãå¯è½ãªå ´åã¯
+\ \texttt{'alchar'}\ ãï¼ããã§ãªãå ´åã¯\ \texttt{'nox\_alchar'}\ ãç¨ãããã
+ï¼ãã®åºå¥ã¯\textbf{ALchar}å´ã®\Param{alxspmode}ã®å¤ã«ãã£ã¦ã®ã¿è¡ãããï¼ï¼
%
-\item[zw=]
-%(required)
-%ï¼å¿
é ï¼
+\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.
+%è¡ä¸æ°å¼ã¨å°ã®æã¨ã®å¢çï¼
+\end{cslist}
+
+%\paragraph{Porting JFM from \pTeX}
+%\paragraph{\pTeX ç¨åæç¨TFMã®ç§»æ¤}
+
+% ToDo: English version.
+
+%<*en>
+See Japanese version of this manual.
+%
-%The amount of the length of the ``full-width''.
%<*ja>
-ãå
¨è§å¹
ãã®é·ãï¼ãã®éã \cs{zw} ã®é·ãã¨ãªãï¼\pTeX ã§ã¯
-ãå
¨è§å¹
ã\texttt{1zw} ã¯ãæåã¯ã©ã¹0ã®æåãã®å¹
ã¨æ±ºãããã¦ãããï¼
-\LuaTeX-jaã§ã¯ããã§æå®ããï¼
+以ä¸ã«ï¼\pTeX ç¨ã«ä½ãããåæç¨TFMã\LuaTeX-jaç¨ã«ç§»æ¤ããå ´åã®æ³¨æç¹ãæãã¦ããï¼
+\begin{itemize}
+\item å®éã«åºåãããåæãã©ã³ãã®ãµã¤ãºãdesign sizeã¨ãªãï¼
+ãã®ããï¼ä¾ãã°$1\,\textrm{zw}$ãdesign sizeã®0.962216åã§ããJISãã©ã³
+ ãã¡ããªãã¯çã移æ¤ããå ´åã¯ï¼æ¬¡ã®ããã«ããã¹ãã§ããï¼
+\begin{itemize}
+\item JFMä¸ã®å
¨ã¦ã®æ°å¤ã$1/0.962216$åãã¦ããï¼
+\item \TeX ã½ã¼ã¹ä¸ã§ä½¿ç¨ããã¨ããã§ï¼ãµã¤ãºæå®ã0.962216åã«ããï¼
+ \LaTeX ã§ã®ãã©ã³ã宣è¨ãªãï¼ä¾ãã°æ¬¡ã®ããã«ï¼
+\begin{lstlisting}
+\DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[0.962216] psft:Ryumin-Light:jfm=jis}{}
+\end{lstlisting}
+\end{itemize}
+\item ä¸ã«è¿°ã¹ãç¹æ®æåã¯ï¼\texttt{'boxbdd'}ãé¤ãæåã¯ã©ã¹ãå
¨é¨0ã¨ãã
+ ï¼JFMä¸ã«åã«æ¸ããªããã°ããï¼ï¼
+\item \texttt{'boxbdd'}ã«ã¤ãã¦ã¯ï¼ããã®ã¿ã§ä¸ã¤ã®æåã¯ã©ã¹ãå½¢æãï¼ãã®
+ æåã¯ã©ã¹ã«é¢ãã¦ã¯ã°ã«ã¼ï¼ã«ã¼ã³ã®è¨å®ã¯ããªãï¼
+
+ããã¯ï¼\pTeX ã§ã¯ï¼
+ hboxã®å
é ã»æ«å°¾ã¨ã¤ã³ãã³ãããã¦ããªãï¼\cs{noindent} ã§éå§ã
+ ããï¼æ®µè½ã®å
é ã«ã¯JFMã°ã«ã¼ã¯å
¥ããªãã¨ããä»æ§ãå®ç¾ãããããã§ããï¼
+\item \pTeX ã®çµçãåç¾ããããã¨ããã®ãç®çã§ããã°ä»¥ä¸ã®æ³¨æãå®ãã°ååã§ããï¼
+
+ã¨ããã§ï¼\pTeX ã§ã¯é常ã®æ®µè½ã®å
é ã«JFMã°ã«ã¼ãæ®ãã¨ããä»æ§ãããã®ã§ï¼
+ 段è½å
é ã®éãæ¬å¼§ã¯å
¨è§äºåä¸ããã«ãªãï¼å
¨è§ä¸ãããå®ç¾ãããã«
+ ã¯ï¼æ®µè½ã®æåã«æå㧠\cs{inhibitglue} ã追å ãããï¼ãããã¯
+ \ \cs{everypar} ã®ããã¯ãè¡ãï¼ãããèªååããããããªãã£ãï¼
+
+ä¸æ¹ï¼\LuaTeX-jaã§ã¯ï¼\texttt{'parbdd'}ã«ãã£ã¦ï¼ãããJFMå´ã§èª¿æ´ã§ããã
+ãã«ãªã£ãï¼ä¾ãã°ï¼\LuaTeX-jaå梱ã®JFMã®ããã«ï¼\texttt{'boxbdd'}ã¨åãæåã¯ã©ã¹ã«
+\texttt{'parbdd'}ãå
¥ããã°å
¨è§ä¸ããã¨ãªãï¼
+
+\begin{LTXexample}[width=0.4\textwidth]
+\jfont\g=KozMinPr6N-Regular:jfm=test \g
+\parindent1\zw\noindent{}âââââ
+\par ãâââäºåä¸ãã
+\par ãâââå
¨è§ä¸ãã
+\par ãâââå
¨è§äºåä¸ãã
+\end{LTXexample}
+\end{itemize}
+
+ä½ãï¼\cs{everypar} ãå©ç¨ãã¦ããå ´åã«ã¯ãã®ä»çµã¿ã¯æ£ããåããªãï¼
+ãã®ãããªä¾ã¨ãã¦ã¯ç®æ¡æ¸ãä¸ã® \cs{item} ã§å§ã¾ã段è½ãããï¼\Pkg{ltjsclasses}ã§ã¯
+人工çã«ã\texttt{'parbdd'}ã®æå³ãæã¤ãwhatsitãã¼ããä½ããã¨ã«ãã£ã¦å¯¾å¦ãã¦ãã%
+\footnote{\texttt{ltjsclasses.dtx} ãåç
§ããããï¼
+JFMå´ã§ä¸é¨ã®å¯¾å¦ãã§ãããã¨ã«ããï¼\Pkg{jsclasses}ã®ããã«ifæã®å¤å®ã¯ãã¦ããªãï¼}ï¼
%
-\item[zh=]
-%(required)
-%ï¼å¿
é ï¼
-%The amount of the ``full-height'' (height + depth).
+%\subsection{Math font family}
+%\subsection{æ°å¼ãã©ã³ããã¡ããª}
+\label{ssec-math}
+
+%<*en>
+\TeX\ handles fonts in math formulas by 16~font families\footnote{Omega,
+Aleph, \LuaTeX~and $\varepsilon$-\kern-.125em(u)\pTeX\ can handles 256~families, but
+an external package is needed to support this in plain \TeX\ and
+\LaTeX.}, and each family has three fonts:
+\cs{textfont}, \cs{scriptfont} and \cs{scriptscriptfont}.
+%
%<*ja>
-ãå
¨è§é«ãã(height + depth)ã®é·ãï¼é常ã¯å
¨è§å¹
ã¨åãé·ãã«ãªãã ããï¼
-\pTeX ã§ã¯ ãå
¨è§é«ãã\texttt{1zh} ã¯ãæåã¯ã©ã¹0ã®æåãã®é«ãã¨æ·±ãã®åã¨æ±ºãããã¦ãããï¼
-\LuaTeX-jaã§ã¯ããã§æå®ããï¼
+\TeX\ ã¯æ°å¼ãã©ã³ãã16ã®ãã¡ããª\footnote{Omega, Aleph, \LuaTeXï¼ããã¦
+ $\varepsilon$-\kern-.125em(u)\pTeX\ ã§ã¯256ã®æ°å¼ãã¡ããªãæ±ããã¨ãã§ãããï¼
+ ããããµãã¼ãããããã«plain \TeX ã¨\LaTeX ã§ã¯å¤é¨ããã±ã¼ã¸ãèªã¿è¾¼ãå¿
è¦ã
+ ããï¼}ã§ç®¡çãï¼ããããã®ãã¡ããªã¯3ã¤ã®ãã©ã³ããæã£ã¦ããï¼
+\cs{textfont}, \cs{scriptfont} ãã㦠\cs{scriptscriptfont} ã§ãã.
%
-\item[kanjiskip=\{, , \}]
-%(optional)
-%ï¼ä»»æï¼
-
%<*en>
-This field specifies the ``ideal'' amount of \Param{kanjiskip}. As noted
- in Subsection~\ref{subs-kskip}, if the parameter
- \Param{kanjiskip} is \cs{maxdimen}, the value specified
- in this field is actually used (if this field is not specified in
- JFM, it is regarded as 0\,pt). Note that and
- fields are in design-size unit too.
+\LuaTeX-ja's handling of Japanese fonts in math formulas is similar;
+\autoref{tab-math} shows counterparts to \TeX's primitives for math
+font families. There is no relation between the value of
+\cs{fam} and that of \cs{jfam}; with appropriate settings,
+you can set both \cs{fam} and \cs{jfam} to the same value.
+Here in the argument of \Param{jatextfont} etc.\ is
+a control sequence which is defined by \cs{jfont}, i.e.,
+a \emph{horizontal} Japanese font.
%
%<*ja>
-çæ³çãª\Param{kanjiskip}ã®éãæå®ããï¼\ref{subs-kskip}ç¯ã§è¿°ã¹ãããã«ï¼
-ãã\Param{kanjiskip}ã \cs{maxdimen} ã®å¤ãªãã°ï¼ãã®ãã£ã¼ã«ãã§æå®ããã
-å¤ãå®éã«ã¯ç¨ããããï¼æå®ãªãã¯0\,ptã¨ãã¦æ±ãããï¼ï¼ã¨ã®ãã£ã¼ã«ããdesign-size
-ãåä½ã§ãããã¨ã«æ³¨æããï¼
+\LuaTeX-jaã®æ°å¼ä¸ã§ã®åæãã©ã³ãã®æ±ããåæ§ã§ããï¼
+\autoref{tab-math}ã¯æ°å¼ãã©ã³ããã¡ããªã«å¯¾ãã \TeX ã®ããªããã£ãã¨å¯¾å¿ãã
+ãã®ã示ãã¦ããï¼\cs{fam} 㨠\cs{jfam} ã®å¤ã®éã«ã¯é¢ä¿ã¯ãªãï¼
+é©åãªè¨å®ã®ä¸ã§ã¯ \cs{fam} 㨠\cs{jfam} ã®ä¸¡æ¹ã«åãå¤ãè¨å®ãããã¨ãã§ããï¼
+\Param{jatextfont} ä»ã®ç¬¬2å¼æ°ã¯ï¼\cs{jfont} ã§å®ç¾©ããã
+\emph{横çµç¨}åæãã©ã³ãã§ããï¼\cs{tfont} ã§å®ç¾©ããã
+\emph{縦çµç¨}åæãã©ã³ããæå®ãããã¨ã¯æ³å®ãã¦ããªãï¼
%
-\item[xkanjiskip=\{, , \}]
-%(optional)
-%ï¼ä»»æï¼
+\begin{table}[!tb]
+%\caption{Commands for Japanese math fonts}
+%\caption{åææ°å¼ãã©ã³ãã«å¯¾ããå½ä»¤}
+\label{tab-math}
+%\medskip
+\centering
+\def\{{\char`\{}\def\}{\char`\}}\small
+\begin{tabular}{ll}
+\toprule
+%\bf Japanese fonts&\bf alphabetic fonts\\
+%\bf åæãã©ã³ã&\bf 欧æãã©ã³ã\\
+\midrule
+\cs{jfam}${}\in [0,256)$&\cs{fam}\\
+\tt\Param{jatextfont}\,=\{,\}&\tt\cs{textfont}=\\
+\tt\Param{jascriptfont}\,=\{,\}&\tt\cs{scriptfont}=\\
+\tt\Param{jascriptscriptfont}\,=\{,\}&\tt\cs{scriptscriptfont}=\\
+\bottomrule
+\end{tabular}
+\end{table}
+
+%\subsection{Callbacks}
+%\subsection{ã³ã¼ã«ããã¯}
%<*en>
-Like the \texttt{kanjiskip} field, this field specifies the ``ideal''
- amount of \Param{xkanjiskip}.
+\LuaTeX-ja also has several callbacks. These callbacks can
+be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks.
%
%<*ja>
-\texttt{kanjiskip}ãã£ã¼ã«ãã¨åæ§ã«ï¼\Param{xkanjiskip}ã®çæ³çãªéã
-æå®ããï¼
+\LuaTeX èªä½ã®ãã®ã«å ãã¦ï¼\LuaTeX-jaãã³ã¼ã«ããã¯ãæã£ã¦ããï¼
+ãããã®ã³ã¼ã«ããã¯ã«ã¯ï¼ä»ã®ã³ã¼ã«ããã¯ã¨åæ§ã« \verb+luatexbase.add_to_callback+
+é¢æ°ãªã©ãç¨ãããã¨ã§ã¢ã¯ã»ã¹ãããã¨ãã§ããï¼
%
-\end{cslist}
-
+\begin{description}[font=\bfseries, style=nextline]
+%\item[\texttt{luatexja.load\_jfm} callback]
+%\item[\texttt{luatexja.load\_jfm}ã³ã¼ã«ããã¯]
%<*en>
-\paragraph{Character classes}
-Besides from above fields, a JFM file have several sub-tables those
-indices are natural numbers. The table indexed by~$i\in\omega$ stores
-information of \emph{character class}~$i$. At least, the character class~0 is
-always present, so each JFM file must have a sub-table whose index is
-\texttt{[0]}. Each sub-table (its numerical index is denoted by $i$) has
-the following fields:
+With this callback you can overwrite JFMs.
+This callback is called when a new JFM is loaded.
%
%<*ja>
-\paragraph{æåã¯ã©ã¹}
-ä¸è¨ã®ãã£ã¼ã«ãã«å ãã¦ï¼JFMãã¡ã¤ã«ã¯ãã®ã¤ã³ããã¯ã¹ãèªç¶æ°ã§ããããã¤ãã®
-ãµããã¼ãã«ãæã¤ï¼ã¤ã³ããã¯ã¹ã$i\in\omega$ã§ãããã¼ãã«ã¯\emph{æåã¯ã©ã¹}$i$ã®
-æ
å ±ãæ ¼ç´ããï¼å°ãªãã¨ãï¼æåã¯ã©ã¹0ã¯å¸¸ã«åå¨ããã®ã§ï¼JFMãã¡ã¤ã«ã¯ã¤ã³ããã¯ã¹
-ã\texttt{[0]}ã®ãµããã¼ãã«ãæããªããã°ãªããªãï¼ããããã®ãµããã¼ãã«
-ï¼ãã®ã¤ã³ããã¯ã¹ã$i$ã§è¡¨ããï¼ã¯ä»¥ä¸ã®ãã£ã¼ã«ããæã¤ï¼
+ãã®ã³ã¼ã«ããã¯ãç¨ãããã¨ã§JFMãä¸æ¸ããããã¨ãã§ããï¼
+ãã®ã³ã¼ã«ããã¯ã¯æ°ããJFMãèªã¿è¾¼ã¾ããã¨ãã«å¼ã³åºãããï¼
%
-\begin{cslist}[style=standard]
-\item[chars=\{, ...\}]
-%(required except character class~0)
-%ï¼æåã¯ã©ã¹0ãé¤ãã¦å¿
é ï¼
+\begin{lstlisting}[numbers=left]
+function ( jfm_info, jfm_name)
+ return new_jfm_info
+end
+\end{lstlisting}
%<*en>
-This field is a list of characters which are in this character
- type~$i$. This field is optional if $i=0$, since all
- \textbf{JAchar} which do not belong any character classes other
- than 0 are in the character class 0
- (hence, the character class~0 contains most of
- \textbf{JAchar}s). In the list, character(s) can be specified in the following form:
-\begin{itemize}
-\item a Unicode code point
-\item the character itself (as a Lua string, like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã'+})
-\item a string like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã*'+} (the character followed by an asterisk)
-\item several ``imaginary'' characters (We will describe these later.)
-\end{itemize}
+The argument \verb+jfm_info+ contains a table similar to the table in a JFM file, except
+this argument has \texttt{chars} field which contains character codes
+ whose character class is not~0.
%
%<*ja>
-ãã®ãã£ã¼ã«ãã¯æåã¯ã©ã¹$i$ã«å±ããæåã®ãªã¹ãã§ããï¼ãã®ãã£ã¼ã«ãã¯$i=0$ã®
-å ´åã«ã¯ä»»æã§ããï¼æåã¯ã©ã¹0ã«ã¯ï¼0以å¤ã®æåã¯ã©ã¹ã«å±ãããã®ã
-é¤ããå
¨ã¦ã®\textbf{JAchar}ãå±ããããï¼ï¼ãã®ãªã¹ãä¸ã§æåãæå®ããã«ã¯ï¼ä»¥ä¸ã®æ¹æ³ãããï¼
-\begin{itemize}
-\item Unicode ã«ãããã³ã¼ãçªå·
-\item ã\hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã'+}ãã®ãããªï¼æåããèªä½
-\item ã\hbox{\ltjsetparameter{autoxspacing=false}\verb+'ã*'+}ãã®ãããªï¼æåããèªä½ã®å¾ã«ã¢ã¹ã¿ãªã¹ã¯ãã¤ãããã®
-\item ããã¤ãã®ãä»®æ³çãªæåãï¼å¾ã«èª¬æããï¼
-\end{itemize}
+å¼æ° \verb+jfm_info+ ã¯JFMãã¡ã¤ã«ã®ãã¼ãã«ã¨ä¼¼ããã®ãæ ¼ç´ããããï¼
+ã¯ã©ã¹0ãé¤ããæåã®ã³ã¼ããå«ãã \texttt{chars}ãã£ã¼ã«ããæã¤ç¹ãç°ãªãï¼
%
-\item[width=, height=, depth=, italic=]
-%(required)
-%ï¼å¿
é ï¼
-
%<*en>
-\begin{table}[t]
- \centering
-\begin{tabular}{llr}
-\toprule
-Direction of JFM&\textbf{\texttt{'yoko'} (horizontal)}&\multicolumn{1}{l}{\textbf{\texttt{'tate'} (vertical)}}\\
-\midrule
-\texttt{width} field&the width of the ``real'' glyph&1.0~(full-width)\\
-\texttt{height} field&the height of the ``real'' glyph&0.5~(half-width)\\
-\texttt{depth} field&the depth of the ``real'' glyph&0.5~(half-width)\\
-\midrule
-\texttt{italic} field&\multicolumn{2}{c}{0.0}\\
-\bottomrule
-\end{tabular}
-\caption{Default values of \texttt{width} field and other fields}
-\label{tab-wid}
-\end{table}
-Specify the width of characters in character class~$i$, the height, the depth and
-the amount of italic correction. All characters in character class~$i$ are regarded that its width, height, and depth are
-as values of these fields. The default values are shown in Table~\ref{tab-wid}.
+An example of this callback is the \texttt{ltjarticle} class, with
+ forcefully assigning character class~0 to \texttt{'parbdd'}
+ in the JFM \texttt{jfm-min.lua}.
%
%<*ja>
-\begin{table}[t]
- \centering
-\begin{tabular}{llr}
-\toprule
-JFMæ¸åæ¹å&\emph{\texttt{'yoko'}ï¼æ¨ªçµï¼}&\multicolumn{1}{l}{\emph{\texttt{'tate'}ï¼ç¸¦çµï¼}}\\
-\midrule
-\texttt{width}&ãå®éã®ã°ãªããã®å¹
&1.0ï¼å
¨è§ï¼\\
-\texttt{height}&ãå®éã®ã°ãªããã®é«ã&0.5ï¼äºåï¼\\
-\texttt{depth}&ãå®éã®ã°ãªããã®æ·±ã&0.5ï¼äºåï¼\\
-\midrule
-\texttt{italic}&\multicolumn{2}{c}{0.0}\\
-\bottomrule
-\end{tabular}
-\caption{\texttt{width} ãã£ã¼ã«ãçã®æ¨æºå¤}
-\label{tab-wid}
-\end{table}
-æåã¯ã©ã¹$i$ã«å±ããæåã®å¹
ï¼é«ãï¼æ·±ãï¼ã¤ã¿ãªãã¯è£æ£ã®éãæå®ããï¼
-æåã¯ã©ã¹$i$ã«å±ããå
¨ã¦ã®æåã¯ï¼ãã®å¹
ï¼é«ãï¼æ·±ãããã®ãã£ã¼ã«ãã§æå®ãã
-å¤ã§ãããã®ã¨ãã¦æ±ãããï¼çç¥æãï¼æ°ã§ãªãå¤ãæå®ããæã«ã¯è¡¨\nobreak\ref{tab-wid}ã«
- 示ããã¦ããå¤ãç¨ããï¼ä¾ãã°ï¼æ¨ªçµç¨JFM㧠\texttt{width} ãã£ã¼ã«ãã«ã¯æ°å¤ä»¥å¤ã®å¤ãæ
- å®ããå ´åï¼æåã®å¹
ã¯ãã®ãå®éã®ãã°ãªãã®å¹
ã¨ãªãï¼OpenTypeã® \texttt{prop} featureã¨ä½µç¨
- ããã°ï¼ããã«ãã£ã¦ãããã¼ã·ã§ãã«çµãè¡ããã¨ãã§ããï¼
+ãã®ã³ã¼ã«ããã¯ã®ä½¿ç¨ä¾ã¯\texttt{ltjarticle}ã¯ã©ã¹ã«ããï¼
+\texttt{jfm-min.lua}ä¸ã®\texttt{'parbdd'}ãå¼·å¶çã«ã¯ã©ã¹0ã«å²ãå½ã¦ã¦ããï¼
%
-\item[left=, down=, align=]\
-
+%\item[\texttt{luatexja.define\_jfont} callback]
+%\item[\texttt{luatexja.define\_jfont}ã³ã¼ã«ããã¯]
%<*en>
-These fields are for adjusting the position of the ``real'' glyph. Legal
- values of \texttt{align} field are \texttt{'left'},
- \texttt{'middle'}, and \texttt{'right'}. If one of these
- 3~fields are omitted, \texttt{left} and \texttt{down} are
- treated as~0, and \texttt{align} field is treated as
- \texttt{'left'}.
-The effects of these 3~fields are indicated in
-Figures \ref{fig-pos}~and~\ref{fig-pos-tate}.
+This callback and the next callback form a pair, and you can assign characters
+ which do not have fixed code points in Unicode to non-zero character classes.
+This \texttt{luatexja.define\_font} callback is called just when new Japanese font is loaded.
%
%<*ja>
-ãããã®ãã£ã¼ã«ãã¯å®éã®ã°ãªãã®ä½ç½®ã調æ´ããããã«ããï¼
-\texttt{align} ãã£ã¼ã«ãã«æå®ã§ããå¤ã¯ \texttt{'left'}, \texttt{'middle'},
-\texttt{'right'} ã®ããããã§ããï¼ããããã3ã¤ã®ãã£ã¼ã«ãã®ãã¡ã®1ã¤ãçããã
-å ´åï¼\texttt{left} 㨠\texttt{down} ã¯0ï¼\texttt{align} ãã£ã¼ã«ãã¯
-\ \texttt{'left'} ã§ãããã®ã¨ãã¦æ±ãããï¼
-ããã3ã¤ã®ãã£ã¼ã«ãã®æå³ã«ã¤ãã¦ã¯å³\ref{fig-pos}ï¼æ¨ªçµç¨åæãã©ã³ãï¼ï¼
-å³\ref{fig-pos-tate}ï¼ç¸¦çµç¨åæãã©ã³ãï¼ã§èª¬æããï¼
+ãã®ã³ã¼ã«ããã¯ã¨æ¬¡ã®ã³ã¼ã«ããã¯ã¯çµããªãã¦ããï¼Unicodeä¸ã«åºå®ãããæåã³ã¼ã
+çªå·ãæããªãæåãéé¶ã®æåã¯ã©ã¹ã«å²ãå½ã¦ããã¨ãã§ããï¼
+ãã®ã³ã¼ã«ããã¯ã¯æ°ããåæãã©ã³ããèªã¿è¾¼ã¾ããã¨ãã«å¼ã³åºãããï¼
%
+\begin{lstlisting}[numbers=left]
+function ( jfont_info, font_number)
+ return new_jfont_info
+end
+\end{lstlisting}
%<*en>
-In most cases, \texttt{left} and \texttt{down} fields are~0, while
-it is not uncommon that the \texttt{align} field is \texttt{'middle'} or \texttt{'right'}.
-For example, setting the \texttt{align} field to \texttt{'right'} is practically needed
-when the current character class is the class for opening delimiters'.
+\verb+jfont_info+ has the following fields,
+\emph{which may not overwritten by a user}:
+\begin{description}
+\item[\texttt{size}]
+The font size specified at \cs{jfont} in scaled points ($1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$).
+\item[\texttt{zw}, \texttt{zh}, \texttt{kanjiskip}, \texttt{xkanjiskip}]
+These are scaled value of those specified by the JFM, by the font size.
+\item[\texttt{jfm}]
+The internal number of the JFM.
+\item[\texttt{var}]
+The value of \texttt{jfmvar}~key, which is specified at \cs{jfont}.
+The default value is the empty string.
+\item[\texttt{chars}]
+The mapping table from character codes to its character classes.\\
+The specification \texttt{[i].chars=\{, ...\}} in the JFM will be stored in this
+ field as \texttt{chars=\{[]=\,$i$, ...\}}.
+\item[\texttt{char\_type}]
+For $i\in\omega$, \texttt{char\_type[$i$]} is information of characters whose class is
+ $i$, and has the following fields:
+\begin{itemize}
+ \item \texttt{width},~\texttt{height}, \texttt{depth},
+ \texttt{italic}, \texttt{down},~\texttt{left}\ are just
+ scaled value of those specified by the JFM, by the font size.
+ \item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM:
+\[
+ \begin{cases}
+ 0&\text{\texttt{'left'} (default)}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
+ \end{cases}
+\]
+\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>
-å¤ãã®å ´åï¼\texttt{left}ã¨\texttt{down}ã¯0ã§ããä¸æ¹ï¼
-\texttt{align}ãã£ã¼ã«ãã\texttt{'middle'}ã\texttt{'right'}ã§ãããã¨ã¯
-çãããã¨ã§ã¯ãªãï¼
-ä¾ãã°ï¼\texttt{align}ãã£ã¼ã«ãã\texttt{'right'}ã«æå®ãããã¨ã¯ï¼
-æåã¯ã©ã¹ãéãæ¬å¼§é¡ã§ããã¨ãã«å®éå¿
è¦ã§ããï¼
+\verb+jfont_info+ ã¯æä½é以ä¸ã®ãã£ã¼ã«ããæã¤ãï¼ããããæ¸ãæãã¦ã¯ãªããªãï¼
+\begin{cslist}
+\item[size]
+å®éã«ä½¿ããããã©ã³ããµã¤ãºï¼spåä½ï¼ï¼$1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$ï¼
+\item[zw\textrm{, }zh\textrm{, }kanjiskip\textrm{, }xkanjiskip]
+JFMãã¡ã¤ã«ã§æå®ããã¦ããããããã®å¤ããã©ã³ããµã¤ãºã«åããã¦ã¹ã±ã¼ãªã³ã°ãããã®ã
+spåä½ã§æ ¼ç´ãã¦ããï¼
+\item[jfm]
+å©ç¨ããã¦ããJFMãèå¥ããããã®çªå·ï¼
+\item[var]
+\cs{jfont},~\cs{tfont} ã§æå®ããã \texttt{jfmvar} ãã¼ã®å¤ï¼æªæå®ã®ã¨ãã¯ç©ºæååï¼ï¼
+\item[chars]
+æåã³ã¼ãããæåã¯ã©ã¹ã¸ã®å¯¾å¿ãè¨è¿°ããããã¼ãã«ï¼\\
+JFMå
ã® \texttt{[i].chars=\{, ...\}} ã¨ããæå®ã¯\
+\texttt{chars=\{[]=\,$i$, ...\}} ã¨ããå½¢å¼ã«å¤æããã¦ããï¼
+\item[char\_type]
+$i\in\omega$ã«å¯¾ãã¦ï¼\texttt{char\_type[$i$]} ã¯æåã¯ã©ã¹$i$ã®æåã®å¯¸æ³ãæ ¼ç´ãã¦ããï¼
+以ä¸ã®ãã£ã¼ã«ããæã¤ï¼
+\begin{itemize}
+ \item \texttt{width},~\texttt{height}, \texttt{depth},
+ \texttt{italic}, \texttt{down},~\texttt{left}\ ã¯
+JFMã§æå®ããã¦ããããããã®å¤ãã¹ã±ã¼ãªã³ã°ãããã®ã§ããï¼
+ \item \texttt{align} ã¯JFMã§æå®ããã¦ããå¤ã«ãã£ã¦ï¼
+\[
+ \begin{cases}
+ 0&\text{\texttt{'left'}ãçç¥æ}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
+ \end{cases}
+\]
+ã®ããããã®å¤ãã¨ãï¼
+\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ã§ã¯ï¼åãªãèªç¶æ°ã®ããã«ã
+ ãè¦ããªããã¨ã«æ³¨æï¼
+}ï¼
+ \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}
%
-\begin{figure}[!tb]
-\begin{minipage}{0.4\textwidth}%
-\begin{center}\unitlength=10pt\small
-\begin{picture}(15,12)(-1,-4)
-\color{b_gray}% jfm
-\put(0,0){\vrule width 12\unitlength height 8\unitlength depth 3\unitlength}
-
-\color{b_pink}% step1
-\put(-1,-1.5){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
-
-\color{red}% real glyph
-\thicklines
-\put(-1,-1.5){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
-\put(5,-1.5){\line(0,1){7}\line(0,-1){2.5}}
-\put(-1,5.5){\line(1,0){6}}
-\put(-1,-4){\line(1,0){6}}
-
-\color{b_green}% real glyph
-\put(3,0){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
-
-\color{black}% jfm
-\thicklines
-\put(0,0){\vector(0,1){8}\line(0,-1){3}\vector(1,0){12}}
-\put(12,0){\line(0,1){8}\vector(0,-1){3}}
-\put(0,8){\line(1,0){12}}
-\put(0,-3){\line(1,0){12}}
-\put(0.2,4){\makebox(0,0)[l]{\texttt{height}}}
-\put(12.2,-1.5){\makebox(0,0)[l]{\texttt{depth}}}
-\put(6,0.2){\makebox(0,0)[b]{\texttt{width}}}
-
-\color{green}% step1
-\thicklines
-\put(3,0){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
-\put(9,0){\line(0,1){7}\line(0,-1){2.5}}
-\put(3,7){\line(1,0){6}}
-\put(3,-2.5){\line(1,0){6}}
-\newsavebox{\eqdist}
-\savebox{\eqdist}(0,0)[b]{%
- \thinlines
- \put(-0.08,0.2){\line(0,-1){0.4}}%
- \put(0.08,0.2){\line(0,-1){0.4}}}
-\put(1.5,0){\usebox{\eqdist}}
-\put(10.5,0){\usebox{\eqdist}}
-
-\color{blue}% shifted
-\thicklines
-\put(3,-1.5){\vector(-1,0){4}}
-\put(1,-1.7){\makebox(0,0)[t]{\texttt{left}}}
-\put(3,0){\vector(0,-1){1.5}}
-\put(3.2,-0.75){\makebox(0,0)[l]{\texttt{down}}}
-\end{picture}
-\end{center}
-\end{minipage}%
-\begin{minipage}{0.6\textwidth}%
%<*en>
-Consider a Japanese character node which belongs to
-a character class whose the \texttt{align}
-field is \texttt{'middle'}.
+The returned table \verb+new_jfont_info+ also should include these fields, but
+you are free to add more fields (to use them in the \texttt{luatexja.find\_char\_class} callback).
+The \verb+font_number+ is a font number.
%
%<*ja>
-\texttt{align}ãã£ã¼ã«ãã®å¤ã \texttt{'middle'} ã§ãããããªæåã¯ã©ã¹ã«å±ãã
-åææåãã¼ããèãããï¼
+æ»ãå¤ã® \verb+new_jfont_info+ ãã¼ãã«ãä¸ã«è¿°ã¹ããã£ã¼ã«ãããã®ã¾ã¾å«ã¾ãªããã°ãªããªããï¼
+ãã以å¤ã«ã¦ã¼ã¶ãåæã«ãã£ã¼ã«ããä»ãå ãããã¨ã¯èªç±ã§ããï¼
+\verb+font_number+ ã¯ãã©ã³ãçªå·ã§ããï¼
%
-\begin{itemize}
-\item
+
%<*en>
-The black rectangle is the imaginary body of the node.
-Its width, height, and depth are specified by JFM.
+A good example of this and the next callbacks is the \Pkg{luatexja-otf}
+ package, supporting \verb+"AJ1-xxx"+ form for Adobe-Japan1
+ CID characters in a JFM. This callback doesn't replace any
+ code of \LuaTeX-ja.
%
%<*ja>
-é»è²ã®é·æ¹å½¢ã¯ãã¼ãã®æ ã§ããï¼
-ãã®å¹
ï¼é«ãï¼æ·±ãã¯JFMã«ãã£ã¦æå®ããã¦ããï¼
+ããã¨æ¬¡ã®ã³ã¼ã«ããã¯ã®è¯ã使ç¨ä¾ã¯\Pkg{luatexja-otf}ããã±ã¼ã¸ã§ããï¼
+JFMä¸ã§Adobe-Japan1 CIDã®æåã \verb+"AJ1-xxx"+ ã®å½¢ã§æå®ããããã«
+ç¨ãããã¦ããï¼
%
-\item
+
+%\item[\texttt{luatexja.find\_char\_class} callback]
+%\item[\texttt{luatexja.find\_char\_class}ã³ã¼ã«ããã¯]
%<*en>
-Since the \texttt{align} field is \texttt{'middle'},
-the ``real'' glyph is centered horizontally (the green rectangle) first.
+This callback is called just when \LuaTeX-ja is trying to determine which
+ character class a character \verb+chr_code+ belongs.
+A function used in this callback should be in the following form:
%
%<*ja>
-\texttt{align}ãã£ã¼ã«ã㯠\texttt{'middle'} ãªã®ã§ï¼
-å®éã®ã°ãªãã®ä½ç½®ã¯ã¾ãæ°´å¹³æ¹åã«ä¸å¤®æããããã®ã¨ãªãï¼ç·è²ã®é·æ¹å½¢ï¼ï¼
+ãã®ã³ã¼ã«ããã¯ã¯\LuaTeX-jaã \verb+chr_code+ ã®æåãã©ã®æåã¯ã©ã¹ã«
+å±ãããã決å®ãããã¨ããéã«å¼ã³åºãããï¼
+ãã®ã³ã¼ã«ããã¯ã§å¼ã³åºãããé¢æ°ã¯æ¬¡ã®å½¢ããã¦ããªããã°ãªããªãï¼
%
-\item
+\begin{lstlisting}[numbers=left]
+function ( char_class, jfont_info, chr_code)
+ if char_class~=0 then return char_class
+ else
+ ....
+ return ( new_char_class or 0)
+ end
+end
+\end{lstlisting}
+
%<*en>
-Furthermore, the glyph is shifted according to values of fields
- \texttt{left} and \texttt{down}. The ultimate position of the real
- glyph is indicated by the red rectangle.
+The argument \verb+char_class+ is the result of \LuaTeX-ja's default
+ routine or previous function calls in this callback, hence
+ this argument may not be 0. Moreover, the returned
+ \verb+new_char_class+ should be as same as \verb+char_class+ when \verb+char_class+
+ is not~0, otherwise you will overwrite the \LuaTeX-ja's
+ default routine.
%
%<*ja>
-ããã«ï¼ã°ãªã㯠\texttt{left} 㨠\texttt{down} ã®å¤ã«å¾ã£ã¦ã·ãããããï¼
-æçµçãªå®éã®ã°ãªãã®ä½ç½®ã¯èµ¤è²ã®é·æ¹å½¢ã§ç¤ºãããä½ç½®ã«ãªãï¼
+å¼æ° \verb+char_class+ ã¯\LuaTeX-jaã®ããã©ã«ãã«ã¼ãã³ãï¼ãã®ã³ã¼ã«ããã¯ã®
+ç´åã®é¢æ°å¼ã³åºãã®çµæãå«ãã§ããï¼ãããã£ã¦ãã®å¤ã¯0ã§ã¯ãªããããããªãï¼
+ããã«ï¼æ»ãå¤ã® \verb+new_char_class+ 㯠\verb+char_class+ ãéé¶ã®ã¨ãã«ã¯
+\verb+char_class+ ã®å¤ã¨åãã§ããã¹ãã§ï¼ããã§ãªãã¨ãã¯\LuaTeX-jaã®
+ããã©ã«ãã«ã¼ãã³ãæ¸ãæãããã¨ã«ãªãï¼
%
-\end{itemize}
-\end{minipage}
-\medskip
-
-\caption{%
-%The position of the real glyph (horizontal Japanese fonts)
-%横çµåæãã©ã³ãã«ããããå®éã®ãã°ãªãã®ä½ç½®
-}
-\label{fig-pos}
-\end{figure}
-\begin{figure}[!tb]
-\begin{minipage}{0.4\textwidth}%
-\begin{center}\unitlength=10pt\small
-\begin{picture}(15,12)(-6,0)
-\color{b_gray}% jfm
-\put(-6,0){\vrule width 12\unitlength height 11\unitlength}
-
-\color{b_pink}% real glyph
-\put(-6.5,5.5){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
-
-\color{red}% real glyph
-\thicklines
-\put(-6.5,5.5){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
-\put( 1.5,5.5){\line(0,1){6}\line(0,-1){3}}
-\put(-6.5,11.5){\line(1,0){8}}
-\put(-6.5,2.5){\line(1,0){8}}
-
-\color{b_green}% step1
-\put(-4,3){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
-
-\color{black}% jfm
-\thicklines
-\put(0,11){\vector(1,0){6}\vector(-1,0){6}\vector(0,-1){11}}
-\put(0,0){\line(1,0){6}\line(-1,0){6}}
-\put(-6,0){\line(0,1){11}}
-\put( 6,0){\line(0,1){11}}
-\put( 3,10.8){\makebox(0,0)[t]{\texttt{height}}}
-\put(-3,10.8){\makebox(0,0)[t]{\texttt{depth}}}
-\put(0.2,5.5){\makebox(0,0)[l]{\texttt{width}}}
-
-\color{green}% step1
-\thicklines
-\put(-4,3){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
-\put( 4,3){\line(0,1){6}\line(0,-1){3}}
-\put(-4,9){\line(1,0){8}}
-\put(-4,0){\line(1,0){8}}
-\savebox{\eqdist}(0,0)[b]{%
- \thinlines
- \put(-0.08,0.2){\line(0,-1){0.4}}%
- \put(0.08,0.2){\line(0,-1){0.4}}}
-\put(2,9){\usebox{\eqdist}}
-\put(-2,9){\usebox{\eqdist}}
-
-\color{blue}% shifted
-\thicklines
-\put(-4,3){\vector(0,1){2.5}}
-\put(-3.8,4.25){\makebox(0,0)[l]{\texttt{left}}}
-\put(-4,5.5){\vector(-1,0){2.5}}
-\put(-5.,5.7){\makebox(0,0)[b]{\texttt{down}}}
-\end{picture}
-\end{center}
-\end{minipage}%
-\begin{minipage}{0.6\textwidth}%
+%\item[\texttt{luatexja.set\_width} callback]
+%\item[\texttt{luatexja.set\_width}ã³ã¼ã«ããã¯]
%<*en>
-(\dots)
+This callback is called when \LuaTeX-ja is trying to encapsule a
+ \textbf{JAchar} \textit{glyph\_node}, to adjust its
+ dimension and position.
%
%<*ja>
-\texttt{align}ãã£ã¼ã«ãã®å¤ã \texttt{'right'} ã§ãããããªæåã¯ã©ã¹ã«å±ãã
-åææåãèãããï¼
-\begin{itemize}
-\item
-å®éã®ã°ãªãã®ãåç´ä½ç½®ãã¯ï¼ã¾ããã¼ã¹ã©ã¤ã³ãæåã®ç©ççãªå·¦å³æ¹åã®ä¸å¤®ãéã
-ä½ç½®ã¨ãªãï¼
-\item
-ã¾ãï¼ãã®å ´å \texttt{align} ãã£ã¼ã«ã㯠\texttt{'right'} ãªã®ã§ï¼
-ãæ°´å¹³ä½ç½®ãã¯åéãæ¹åã«ãå³å¯ãããããã®ã¨ãªãï¼ç·è²ã®é·æ¹å½¢ï¼ï¼
-\item
-ãã®å¾ããã« \texttt{left} 㨠\texttt{down} ã®å¤ã«å¾ã£ã¦ã·ããããã
-ã®ã¯æ¨ªçµç¨åæãã©ã³ãã¨å¤ãããªãï¼
-\end{itemize}
+ãã®ã³ã¼ã«ããã¯ã¯\LuaTeX-jaã\textbf{JAchar}ã®å¯¸æ³ã¨ä½ç½®ã調ç¯ããããã«
+ãã®\textit{glyph\_node}ãã«ãã»ã«åãããã¨ããéã«å¼ã³åºãããï¼
%
-\end{minipage}
-\medskip
-
-\caption{%
-%The position of the real glyph (vertical Japanese fonts)
-%縦çµåæãã©ã³ãã«ããããå®éã®ãã°ãªãã®ä½ç½®
-}
-\label{fig-pos-tate}
-\end{figure}
-
-\item[kern={\{[$j$]=, [$j'$]=\{, [ratio=]\}, ...\}}]
-\nopagebreak
-\item[glue={\{[$j$]=\{, , , [ratio=, ...]\}, ...\}}]\leavevmode
-%<*ja>
-
-æåã¯ã©ã¹$i$ã®æåã¨$j$ã®æåã®éã«æ¿å
¥ãããã«ã¼ã³ãã°ã«ã¼ã®éãæå®ããï¼
-
-ã¯ï¼ã°ã«ã¼ã®èªç¶é·ã®ãã¡ã©ãã ãã®å²åããå¾ã®æåãç±æ¥ãã示ãéã§ï¼
-$0$ãã$+1$ã®å®æ°å¤ãã¨ãï¼çç¥æã®å¤ã¯$0.5$ã§ããï¼
-ãã®ãã£ã¼ã«ãã®å¤ã¯\Param{differentjfm}ã®å¤ã
-\texttt{pleft},~\texttt{pright},~\texttt{paverage}ã®å¤ã®ã¨ãã®ã¿å®éã«ç¨ããããï¼
+\begin{lstlisting}[numbers=left]
+function ( shift_info, jfont_info, char_type)
+ return new_shift_info
+end
+\end{lstlisting}
-ä¾ãã°ï¼\cite{x4051}ã§ã¯ï¼å¥ç¹ã¨ä¸ç¹ã®éã«ã¯ï¼
-å¥ç¹ç±æ¥ã®äºå空ãã¨ä¸ç¹ç±æ¥ã®åå空ããæ¿å
¥ããããï¼ãã®å ´åã«ã¯
-\begin{itemize}
-\item ã«ã¯$0.5+0.25=0.75$ãæå®ããï¼
-\item ã«ã¯$0.25/(0.5+0.25)=1/3$ãæå®ããï¼
-\end{itemize}
-%
%<*en>
-\
-
-Specifies the amount of kern or glue which will be inserted
-between characters in character class~$i$ and those in character class~$j$.
-
- specifies how much the glue is originated in the ``right'' character.
-It is a real number between 0 and 1, and treated as 0.5 if omitted. For example,
-The width of a glue between an ideographic full stop ``ã''
-and a fullwidth middle dot ``ã»'' is three-fourth of fullwidth,
-namely halfwidth from the ideographic full stop, and
-quarter-width from the fullwidth middle dot. In this case,
-we specify to $0.25/(0.5+0.25)=1/3$.
+The argument \verb+shift_info+ and the returned \verb+new_shift_info+ have
+\texttt{down} and \texttt{left} fields, which are the amount of shifting
+ down/left the character in a scaled point.
%
-
%<*ja>
-ã°ã«ã¼ã®æå®ã«ããã¦ã¯ï¼ä¸è¨ã«å ãã¦å \texttt{[$j$]} ã®åãµããã¼ãã«å
ã«
-次ã®ãã¼ãæå®ã§ããï¼
-\begin{cslist}[style=standard]
-\item[priority=]
- \Pkg{luatexja-adjust} ã«ããåªå
é ä½ä»ã
- è¡é·èª¿æ´ï¼\ref{ssec-adj}ç¯ï¼ã®éã«ä½¿ãããå¤ã§ããï¼
-è¡èª¿æ´å¦çã«ããããã®glueã®åªå
- 度ã$-2$ãã$+2$ã®éã®æ´æ°ã§æå®ããï¼å¤§ããå¤ã»ã©ã伸ã³ãããï¼ç¸®ã¿ãããã
- ãã¨ãæå³ããï¼çç¥æã®å¤
- ã¯0ã§ããï¼ç¯å²å¤ã®å¤ãæå®ãããã¨ãã®åä½ã¯æªå®ç¾©ã§ããï¼
-\item[kanjiskip\_natural=\textrm{, }%
- kanjiskip\_stretch=\textrm{, }kanjiskip\_shrink=]\leavevmode
- \label{pg:ksp_nat}
-
-JFMã«ãã£ã¦æ¬æ¥æ¿å
¥ãããã°ã«ã¼ã®ä»ã«
-\Param{kanjiskip}åã®ç©ºç½ãèªç¶é·(\texttt{kanjiskip\_natural})ï¼ä¼¸ã³é(\texttt{kanjiskip\_stretch})ï¼
-縮ã¿é(\texttt{kanjiskip\_shrink})ãã¨ã«æ¿å
¥ãã\footnote{æ¬æ¥\Param{xkanjiskip}ãæ¿å
¥ãããå ´æã«ããã¦ã¯
- \Param{xkanjiskip}åã®ç©ºç½ãèªç¶é·ã»ä¼¸ã³éã»ç¸®ã¿éãã¨ã«ï¼è¿½å ã§ããï¼}%
-ããã®æå®ã§ããï¼ããããçç¥ãããå ´åã®ããã©ã«ãå¤ã¯0ï¼è¿½å ããªãï¼ã§ããï¼
+å¼æ° \verb+shift_info+ ã¨æ»ãå¤ã® \verb+new_shift_info+ ã¯
+\texttt{down}ã¨\texttt{left}ã®ãã£ã¼ã«ããæã¡ï¼ãããã®å¤ã¯
+æåã®ä¸ï¼å·¦ã¸ã®ã·ããéï¼spåä½ï¼ã§ããï¼
+%
-ä¾ãã°ï¼\LuaTeX-jaã®æ¨ªçµæ¨æºJFMã® \texttt{jfm-ujis.lua} ã§ã¯ï¼
+%<*en>
+A good example is \Pkg{test/valign.lua}.
+After loading this file, the vertical position of glyphs is automatically
+adjusted; the ratio $(\hbox{height}:\hbox{depth})$ of glyphs is adjusted
+to be that of letters in the character class~0. For example, suppose that
\begin{itemize}
- \item é常ã®æåãããã¨éãæ¬å¼§é¡ã®éã«å
¥ãã°ã«ã¼ã¯ï¼èªç¶é·ã»ç¸®ã¿éåè§ï¼ä¼¸ã³é0ã®ã°ã«ã¼
-ã¨ãªã£ã¦ãããï¼ããã«\Param{kanjiskip}ã®ä¼¸ã³éã« \texttt{kanjiskip\_stretch}ï¼ããã§ã¯1ï¼ãæã
- ãåã ã伸ã³ããã¨ã許ãããï¼
- \item åæ§ã«ï¼éãæ¬å¼§é¡ï¼å
¨è§ã³ã³ããï¼ããå«ãï¼ã¨é常ã®æåããããããã®éã«ã
-èªç¶é·ã»ç¸®ã¿éåè§ï¼ä¼¸ã³é0ã®ã°ã«ã¼
-ã¨ãªã£ã¦ãããï¼ããã«\Param{kanjiskip}ã®ä¼¸ã³éã« \texttt{kanjiskip\_stretch}ï¼ããã§ã¯1ï¼ãæã
- ãåã ã伸ã³ããã¨ã許ãããï¼
+\item The setting of the JFM: $(\hbox{height})=88x$, $(\hbox{depth})=12x$
+ (the standard values of Japanese OpenType fonts);
+\item The value of the real font: $(\hbox{height})=28y$, $(\hbox{depth})=5y$
+ (the standard values of Japanese TrueType fonts).
\end{itemize}
-ã¨ãªã£ã¦ããï¼å¾ã£ã¦ï¼ä»¥ä¸ã®ãããªçµççµæãå¾ãï¼
-
-\medskip
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{ãããããï¼ãã}\vrule
-\end{LTXexample}
-
-\end{cslist}
+Then, the position of glyphs is shifted up by
+%
+%<*ja>
+è¯ãä¾ã\Pkg{test/valign.lua}ã§ããï¼ãã®ãã¡ã¤ã«ãèªã¿è¾¼ã¾ããç¶æ
ã§ã¯ï¼
+ JFMå
ã§è¦å®ãããæåã¯ã©ã¹0ã®æåã«ããã$(\hbox{é«
+ ã}):(\hbox{æ·±ã})$ã®æ¯ã«ãªãããã«ï¼å®éã®ãã©ã³ãã®åºåä¸
+ ä¸ä½ç½®ãèªå調æ´ãããï¼ä¾ãã°ï¼
+\begin{itemize}
+\item JFMå´ã®è¨å®ï¼$(\hbox{é«ã})=88x$, $(\hbox{æ·±ã})=12x$%
+ï¼åæOpenTypeãã©ã³ãã®æ¨æºå¤ï¼
+\item å®ãã©ã³ãå´ã®æ°å¤ï¼$(\hbox{é«ã})=28y$, $(\hbox{æ·±ã})=5y$ï¼åæTrueTypeãã©ã³ãã®æ¨æºå¤ï¼
+\end{itemize}
+ã¨ãªã£ã¦ããã¨ããï¼ããã¨ï¼å®éã®æåã®åºåä½ç½®ã¯ï¼ä»¥ä¸ã®éã ãä¸ã«ããããããã¨ã¨ãªãï¼
%
-%<*en>
-In case of glue, one can specify following additional keys in each \texttt{[$j$]}
- subtable:
-\begin{cslist}[style=standard]
-\item[priority=]
-An integer in $[-2,2]$ (treated as 0 if omitted), and this is
-used only in line adjustment with priority by \Pkg{luatexja-adjust}
-(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to stretch,
-and is also easy to shrink.
-\item[kanjiskip\_natural=\textrm{, }%
- kanjiskip\_stretch=\textrm{, }kanjiskip\_shrink=]\leavevmode
+\[
+ \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
+\]
+\end{description}
-These keys specifies the amount of the natural width of \Param{kanjiskip}
-(the stretch/shrink part, respectively) which will be inserted
-in addition to the original JFM glue. Default values of them are all 0.
-As an example, in \texttt{jfm-ujis.lua}, the standard JFM in horizontal writing, we have
-\begin{itemize}
- \item Between an ordinal letter ``ã'' and an ideographic opening bracket, we have
-a glue whose natural part and shrink part are both half-width, while its stretch part is
- zero. However, this glue also can be stretched
- as much as the stretch part of \Param{kanjiskip} times the value of
- \texttt{kanjiskip\_stretch} key (1 in this case).
- \item Between an ideographic closeing brackets (the ideographic comma ``ï¼''
- is included) and an ordinal letter, we have the same glue.
- Again, this glue also can be stretched
- as much as the stretch part of \Param{kanjiskip} times the value of
- \texttt{kanjiskip\_stretch} key (1 in this case).
-\end{itemize}
-Hence we have the following result:
-\medskip
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{ãããããï¼ãã}\vrule
-\end{LTXexample}
+%\section{Parameters}
+%\section{ãã©ã¡ã¼ã¿}
+\subsection{\cs{ltjsetparameter}}
+\label{ssec-param}
-\end{cslist}
+%<*en>
+As described before, \cs{ltjsetparameter} and \cs{ltjgetparameter} are
+commands for accessing most parameters of \LuaTeX-ja. One of the main
+reason that \LuaTeX-ja didn't adopted the syntax similar to that of \pTeX\
+(\textit{e.g.},~\verb+\prebreakpenalty`ï¼=10000+)
+is the position of \verb+hpack_filter+ callback in the source
+of \LuaTeX, see Section~\ref{sec-para}.
%
-
-\item[end\_stretch=, end\_shrink=]
%<*ja>
-ï¼ä»»æï¼
-
-åªå
é ä½ä»ãè¡é·èª¿æ´ãæå¹ã§ããï¼ãã¤ç¾å¨ã®æåã¯ã©ã¹ã®æåãè¡
- æ«ã«æ¥ãæã«ï¼è¡é·ãè©°ãã調æ´ã»ä¼¸ã°ã調æ´ã®ã
- ãã«ãã®æåã¨è¡æ«ã®éã«æ¿å
¥å¯è½ãªã«ã¼ã³ã®å¤§ãããæå®ããï¼
+å
ã«è¿°ã¹ãããã«ï¼\LuaTeX-jaã®å
é¨ãã©ã¡ã¼ã¿ã«ã¢ã¯ã»ã¹ããã«ã¯
+\cs{ltjsetparameter}ï¼ã¾ã㯠\cs{ltjglobalsetparameter}ï¼ã¨ \cs{ltjgetparameter} ãç¨ããï¼
+\LuaTeX-jaã\pTeX ã®ãããªææ³ï¼ä¾ãã°ï¼\verb+\prebreakpenalty`ï¼=10000+ï¼ã
+æ¡ç¨ããªãçç±ã®ä¸ã¤ã¯ï¼\LuaTeX ã®ã½ã¼ã¹ã«ããã \verb+hpack_filter+
+ã³ã¼ã«ããã¯ã®ä½ç½®ã«ããï¼\ref{sec-para}ç« ãåç
§ï¼
%
-\end{cslist}
-
-%<*ja>
-\paragraph{æåã¯ã©ã¹ã®æ±ºå®}
-æåãããã®æåã®å±ããæåã¯ã©ã¹ãç®åºããéç¨ã«ã¤ãã¦ï¼
-次ã®å
容ãå«ãã \texttt{jfm-test.lua} ãç¨ãã¦èª¬æããï¼
-%
-%<*en>
-\paragraph{Character to character classes}
-We explain how the character class of a character is determined,
-using \texttt{jfm-test.lua} which contains the following:
-%
-\begin{lstlisting}
- [0] = {
- chars = { 'æ¼¢' },
- align = 'left', left = 0.0, down = 0.0,
- width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
- },
- [2000] = {
- chars = { 'ã', 'ï¾' },
- align = 'left', left = 0.0, down = 0.0,
- width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
- },
-\end{lstlisting}
-%ããã§ï¼æ¬¡ã®ãããªå
¥åã¨ãã®å®è¡çµæãèããï¼
-%Now consider the following input/output:
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
-\setbox0\hbox{\a ãæ¼¢}
-\the\wd0
-\end{LTXexample}
%<*en>
-Now we look why the above source outputs 15\,pt.
-\begin{enumerate}
-\item The character ``ã'' is converted to its half width form ``ï¾'' by \verb+hwid+ feature.
-\item According to the JFM, the character class of ``ï¾'' is 2000, hence its width is halfwidth.
-\item The character class of ``æ¼¢'' is zero, hence its width is fullwidth.
-\item Hence the width of \cs{hbox} equals to 15\,pt.
-\end{enumerate}
-This example shows that the character class of a character is generally determined \emph{after
-applying font features by \Pkg{luaotfload}}.
+\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands
+for assigning parameters. These take one argument which is a
+\texttt{=} list.
+The difference between these two commands is the
+scope of assignment;
+\cs{ltjsetparameter} does a local assignment and
+\cs{ltjglobalsetparameter} does a global one.
+They also obey the value of \cs{globaldefs}, like other assignments.
%
%<*ja>
-ä¸è¨ã®åºåçµæãï¼15\,ptã¨ãªã£ã¦ããã®ã¯çç±ã«ãããã®ã§ããï¼
-\begin{enumerate}
-\item \verb+hwid+ featureã«ãã£ã¦ããããåè§å¹
ã®ã°ãªããï¾ãã¨ç½®ãæããï¼\Pkg{luaotfload} ã«ããå¦çï¼ï¼
-\item JFMã«ããã°ï¼ãã®ãï¾ãã®ã°ãªãã®æåã¯ã©ã¹ã¯2000ã§ããï¼
-\item 以ä¸ã«ããæåã¯ã©ã¹2000ã¨ã¿ãªãããããï¼çµæã¨ãã¦ãï¾ãã®å¹
ã¯åè§ã ã¨èªèãããï¼
-\end{enumerate}
-ãã®ä¾ã¯ï¼\emph{æåã¯ã©ã¹ã®æ±ºå®ã¯font featureã®é©ç¨ã«ããã°ãªãç½®æã®çµæã«åºã¥ã}ãã¨ã
-示ãã¦ããï¼
+\cs{ltjsetparameter} 㨠\cs{ltjglobalsetparameter} ã¯ãã©ã¡ã¼ã¿ã
+æå®ããããã®å½ä»¤ã§ï¼\texttt{=}ã®ãªã¹ãã
+å¼æ°ã¨ãã¦ã¨ãï¼ä¸¡è
ã®éãã¯ã¹ã³ã¼ãã§ããï¼
+\cs{ltjsetparameter} ã¯ãã¼ã«ã«ãªè¨å®ãè¡ãã®ã«å¯¾ãï¼
+\cs{ltjglobalsetparameter} ã¯ã°ãã¼ãã«ãªè¨å®ãè¡ãï¼
+ã¾ãï¼ä»ã®ãã©ã¡ã¼ã¿æå®ã¨åæ§ã« \cs{globaldefs} ã®å¤ã«ãå¾ãï¼
%
%<*en>
-However, if the class determined by the glyph after application of features is zero,
-\LuaTeX-ja adopts the class determined by the glyph \emph{before} application of features.
-The following input is an example.
+The following is the list of parameters which can be specified by the
+\cs{ltjsetparameter} command. [\cs{cs}] indicates the counterpart
+in \pTeX, and symbols beside each parameter has the following meaning:
%
%<*ja>
-ä½ãï¼JFMã«ãã£ã¦æ±ºã¾ãç½®æå¾ã®ã°ãªãã®æåã¯ã©ã¹ã0ã§ããå ´åã¯ï¼ç½®æåã®æåã¯ã©ã¹ãæ¡ç¨ããï¼
+以ä¸ã¯ \cs{ltjsetparameter} ã«æå®ãããã¨ãã§ãããã©ã¡ã¼ã¿ã®ä¸è¦§ã§ããï¼
+[\cs{cs}]ã¯\pTeX ã«ããã対å¿ç©ã示ãï¼
+ã¾ãï¼ããããã®ãã©ã¡ã¼ã¿ã®å³ä¸ã®è¨å·ã«ã¯æ¬¡ã®æå³ãããï¼
%
-\begin{LTXexample}[width=0.3\textwidth]
-\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
-\a æ¼¢ã\inhibitglue æ¼¢
-\end{LTXexample}
+\begin{itemize}
%<*en>
-Here, the character class of the ideographic full stop ``ã''~(\texttt{U+3002}) is determined
-as follows:
-\begin{enumerate}
-\item As the case of ``ã'', the ideographic full stop ``ã'' is converted to its vertical
- form ``\char"FE12''~(\texttt{U+FE12}) by \verb+vert+ feature.%"
-\item The character class of ``\char"FE12'', according to the JFM is \emph{zero}.
-\item However, \LuaTeX-ja remembers that this ``\char"FE12'' is obtained from ``ã'' by
- font features. The character class of ``ã'' is \emph{non-zero value}, namely, 2000.
-\item Hence the ideographic full stop ``ã'' in above belongs the character class~2000.
-\end{enumerate}
+\item ``$\ast$'' : values at the end of a paragraph or a hbox are
+adopted in the whole paragraph or the whole hbox.
%
%<*ja>
-ããã§ï¼å¥ç¹ããã(\texttt{U+3002})ã®æåã¯ã©ã¹ã¯ï¼ä»¥ä¸ã®ããã«ãã¦æ±ºã¾ãï¼
-\begin{enumerate}
-\item \Pkg{luaotfload} ã«ãã£ã¦ç¸¦çµç¨å¥ç¹ã®ã°ãªãã«ç½®ãæããï¼
-\item ç½®æå¾ã®ã°ãªã㯠\texttt{U+FE12} ã§ããï¼JFMã«å¾ãã°æåã¯ã©ã¹ã¯\emph{0}ã¨å¤å®ãããï¼
-\item ãã®å ´åï¼ç½®æåã®æ¨ªçµç¨å¥ç¹ã®ã°ãªãã«ãã£ã¦æåã¯ã©ã¹ãå¤å®ããï¼
-\item çµæã¨ãã¦ï¼ä¸ã®åºåä¾ä¸ã®å¥ç¹ã®æåã¯ã©ã¹ã¯2000ã¨ãªãï¼
-\end{enumerate}
+\item ``$\ast$''ï¼æ®µè½ãhboxã®çµç«¯ã§ã®å¤ããã®æ®µè½ï¼hboxå
¨ä½ã§ç¨ããããï¼
%
-
-
-%\paragraph{ä»®æ³çãªæå}
-%\paragraph{Imaginary characters}
%<*en>
-As described before, you can specify several \emph{imaginary characters} in
-\texttt{chars} field. The most of these characters are regarded as the
-characters of class 0 in \pTeX.
-As a result, \LuaTeX-ja can control typesetting finer than \pTeX.
-The following is the list of imaginary characters:
+\item ``\dagger'': assignments are always global.
%
%<*ja>
-ä¸ã§èª¬æããéãï¼\texttt{chars}ãã£ã¼ã«ãä¸ã«ã¯ããã¤ãã®ãç¹æ®æåãã
-æå®å¯è½ã§ããï¼ãããã¯ï¼å¤§åã\pTeX ã®JFMã°ã«ã¼ã®æ¿å
¥å¦çã§ã¯ã¿ãªãæå
-ã¯ã©ã¹0ã®æåãã¨ãã¦æ±ããã¦ããæåã§ããï¼ãã®çµæã¨ãã¦\pTeX ããç´°ã
-ãçµç調æ´ãã§ããããã«ãªã£ã¦ããï¼ä»¥ä¸ã§ãã®ä¸è¦§ãè¿°ã¹ãï¼
+\item ``\dagger''ï¼æå®ã¯å¸¸ã«ã°ãã¼ãã«ã«ãªãï¼
%
+\end{itemize}
-\begin{cslist}
-%%\item['diffmet']
-%%Used at a boundary between two \textbf{JAchar}s whose JFM or size is different.
-%%JFMããµã¤ãºãç°ãªã2ã¤ã®\textbf{JAchar}ã®éã®å¢çã¨ãã¦ç¨ããããï¼
-
-\item['boxbdd']
-%The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \cs{noindent}) paragraph.
-%hboxã®å
é ã¨æ«å°¾ï¼åã³ã¤ã³ãã³ãããã¦ããªãï¼\cs{noindent} ã§éå§ãããï¼æ®µè½ã®å
é ã表ãï¼
-
-\item['parbdd']
-%The beginning of an (indented) paragraph.
-%é常ã®ï¼\cs{noindent} ã§éå§ããã¦ããªãï¼æ®µè½ã®å
é ï¼
-
-\item['jcharbdd']
-%A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue,\,\ldots).
-%\textbf{JAchar}ã¨ããã®ä»ã®ãã®ãï¼æ¬§ææåï¼glueï¼kernçï¼ã¨ã®å¢çï¼
-
-\item[$-1$]
-%The left/right boundary of an inline math formula.
-%è¡ä¸æ°å¼ã¨å°ã®æã¨ã®å¢çï¼
-\end{cslist}
+\begin{cslist}[style=standard]
+\item[\DParam{jcharwidowpenalty}\,=$^\ast$] [\cs{jcharwidowpenalty}]\
-%\paragraph{Porting JFM from \pTeX}
-%\paragraph{\pTeX ç¨åæç¨TFMã®ç§»æ¤}
+%<*en>
+Penalty value for suppressing orphans. This penalty is inserted just
+ after the last \textbf{JAchar} which is not regarded as a
+ (Japanese) punctuation mark.
+%
+%<*ja>
+ãã©ã°ã©ãã®æå¾ã®åãå¤ç«ãã¦æ¹è¡ãããã®ãé²ãããã®ããã«ãã£ã®å¤ï¼
+ãã®ããã«ãã£ã¯ï¼æ¥æ¬èªã®ï¼å¥èªç¹ã¨ãã¦æ±ãããªãæå¾ã®\textbf{JAchar}ã®ç´å¾ã«
+æ¿å
¥ãããï¼
+%
-% ToDo: English version.
+\item[\DParam{kcatcode}\,=\{,\}$^\ast$]\
%<*en>
-See Japanese version of this manual.
+An additional attributes which each character whose character code is has.
+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}ã®è¨è¿°ãåç
§ï¼ï¼
+%
+
+\item[\DParam{prebreakpenalty}\,=\{,\}$^\ast$] [\cs{prebreakpenalty}]\
%<*ja>
-以ä¸ã«ï¼\pTeX ç¨ã«ä½ãããåæç¨TFMã\LuaTeX-jaç¨ã«ç§»æ¤ããå ´åã®æ³¨æç¹ãæãã¦ããï¼
-\begin{itemize}
-\item å®éã«åºåãããåæãã©ã³ãã®ãµã¤ãºãdesign sizeã¨ãªãï¼
-ãã®ããï¼ä¾ãã°$1\,\textrm{zw}$ãdesign sizeã®0.962216åã§ããJISãã©ã³
- ãã¡ããªãã¯çã移æ¤ããå ´åã¯ï¼æ¬¡ã®ããã«ããã¹ãã§ããï¼
-\begin{itemize}
-\item JFMä¸ã®å
¨ã¦ã®æ°å¤ã$1/0.962216$åãã¦ããï¼
-\item \TeX ã½ã¼ã¹ä¸ã§ä½¿ç¨ããã¨ããã§ï¼ãµã¤ãºæå®ã0.962216åã«ããï¼
- \LaTeX ã§ã®ãã©ã³ã宣è¨ãªãï¼ä¾ãã°æ¬¡ã®ããã«ï¼
+æåã³ã¼ãã®\textbf{JAchar}ãè¡é ã«ãããã¨ãææ¢ããããã«ï¼
+ ãã®æåã®åã«æ¿å
¥/追å ãããããã«ãã£ã®éãæå®ããï¼
+
+ä¾ãã°éãæ¬å¼§ãããã¯çµ¶å¯¾ã«è¡é ã«ãã¦ã¯ãªããªãã®ã§ï¼
\begin{lstlisting}
-\DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[0.962216] psft:Ryumin-Light:jfm=jis}{}
+\ltjsetparameter{prebreakpenalty={`ã,10000}}
\end{lstlisting}
-\end{itemize}
-\item ä¸ã«è¿°ã¹ãç¹æ®æåã¯ï¼\texttt{'boxbdd'}ãé¤ãæåã¯ã©ã¹ãå
¨é¨0ã¨ãã
- ï¼JFMä¸ã«åã«æ¸ããªããã°ããï¼ï¼
-\item \texttt{'boxbdd'}ã«ã¤ãã¦ã¯ï¼ããã®ã¿ã§ä¸ã¤ã®æåã¯ã©ã¹ãå½¢æãï¼ãã®
- æåã¯ã©ã¹ã«é¢ãã¦ã¯ã°ã«ã¼ï¼ã«ã¼ã³ã®è¨å®ã¯ããªãï¼
-
-ããã¯ï¼\pTeX ã§ã¯ï¼
- hboxã®å
é ã»æ«å°¾ã¨ã¤ã³ãã³ãããã¦ããªãï¼\cs{noindent} ã§éå§ã
- ããï¼æ®µè½ã®å
é ã«ã¯JFMã°ã«ã¼ã¯å
¥ããªãã¨ããä»æ§ãå®ç¾ãããããã§ããï¼
-\item \pTeX ã®çµçãåç¾ããããã¨ããã®ãç®çã§ããã°ä»¥ä¸ã®æ³¨æãå®ãã°ååã§ããï¼
-
-ã¨ããã§ï¼\pTeX ã§ã¯é常ã®æ®µè½ã®å
é ã«JFMã°ã«ã¼ãæ®ãã¨ããä»æ§ãããã®ã§ï¼
- 段è½å
é ã®éãæ¬å¼§ã¯å
¨è§äºåä¸ããã«ãªãï¼å
¨è§ä¸ãããå®ç¾ãããã«
- ã¯ï¼æ®µè½ã®æåã«æå㧠\cs{inhibitglue} ã追å ãããï¼ãããã¯
- \ \cs{everypar} ã®ããã¯ãè¡ãï¼ãããèªååããããããªãã£ãï¼
+ã¨ï¼æ大å¤ã®10000ãæ¨æºã§æå®ããã¦ããï¼ä»ã«ãï¼å°æ¸ãã®ã«ããªã©ï¼çµ¶å¯¾ç¦æ¢ã¨ã
+ ãããã§ã¯ãªããã§ããã°è¡é ã«ã¯ãã¦æ¬²ãããªãå ´åã«ï¼0ã¨
+ 10000ã®éã®å¤ãæå®ããã®ãæç¨ã§ãããï¼
-ä¸æ¹ï¼\LuaTeX-jaã§ã¯ï¼\texttt{'parbdd'}ã«ãã£ã¦ï¼ãããJFMå´ã§èª¿æ´ã§ããã
-ãã«ãªã£ãï¼ä¾ãã°ï¼\LuaTeX-jaå梱ã®JFMã®ããã«ï¼\texttt{'boxbdd'}ã¨åãæåã¯ã©ã¹ã«
-\texttt{'parbdd'}ãå
¥ããã°å
¨è§ä¸ããã¨ãªãï¼
+\pTeX ã§ã¯ï¼\cs{prebreakpenalty}, \cs{postbreakpenalty}ã«ããã¦ï¼
+\begin{itemize}
+\item ä¸ã¤ã®æåã«å¯¾ãã¦ï¼pre, postã©ã¡ããä¸ã¤ããæå®ãããã¨ãã§ããªã%
+ \footnote{å¾ããæå®ããæ¹ã§ä¸æ¸ããããï¼}
+\item pre, poståããã¦256æååã®æ
å ±ãæ ¼ç´ãããã¨ããã§ããªã
+\end{itemize}
+ã¨ããå¶éããã£ããï¼\LuaTeX-jaã§ã¯ãããã®å¶éã¯è§£æ¶ããã¦ããï¼
+%
+%<*en>
+Set a penalty which is inserted automatically before the character ,
+to prevent a line starts from this character. For example, a line cannot started
+with one of closing brackets ``ã'', so \LuaTeX-ja sets
+\begin{lstlisting}
+\ltjsetparameter{prebreakpenalty={`ã,10000}}
+\end{lstlisting}
+by default.
-\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=KozMinPr6N-Regular:jfm=test \g
-\parindent1\zw\noindent{}âââââ
-\par ãâââäºåä¸ãã
-\par ãâââå
¨è§ä¸ãã
-\par ãâââå
¨è§äºåä¸ãã
-\end{LTXexample}
+\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty},
+but they don't exist in \LuaTeX-ja:
+\begin{itemize}
+ \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set
+for the same character.
+ \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters.
\end{itemize}
+%
-ä½ãï¼\cs{everypar} ãå©ç¨ãã¦ããå ´åã«ã¯ãã®ä»çµã¿ã¯æ£ããåããªãï¼
-ãã®ãããªä¾ã¨ãã¦ã¯ç®æ¡æ¸ãä¸ã® \cs{item} ã§å§ã¾ã段è½ãããï¼\Pkg{ltjsclasses}ã§ã¯
-人工çã«ã\texttt{'parbdd'}ã®æå³ãæã¤ãwhatsitãã¼ããä½ããã¨ã«ãã£ã¦å¯¾å¦ãã¦ãã%
-\footnote{\texttt{ltjsclasses.dtx} ãåç
§ããããï¼
-JFMå´ã§ä¸é¨ã®å¯¾å¦ãã§ãããã¨ã«ããï¼\Pkg{jsclasses}ã®ããã«ifæã®å¤å®ã¯ãã¦ããªãï¼}ï¼
+\item[\DParam{postbreakpenalty}\,=\{,\}$^\ast$]
+ [\cs{postbreakpenalty}]\
+
+%<*ja>
+æåã³ã¼ãã®\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}]
-%\subsection{Math font family}
-%\subsection{æ°å¼ãã©ã³ããã¡ããª}
-\label{ssec-math}
+\item[\DParam{jaxspmode}\,=\{,\}$^\ast$]\
%<*en>
-\TeX\ handles fonts in math formulas by 16~font families\footnote{Omega,
-Aleph, \LuaTeX~and $\varepsilon$-\kern-.125em(u)\pTeX\ can handles 256~families, but
-an external package is needed to support this in plain \TeX\ and
-\LaTeX.}, and each family has three fonts:
-\cs{textfont}, \cs{scriptfont} and \cs{scriptscriptfont}.
+Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is .
+The followings are allowed for :
%
%<*ja>
-\TeX\ ã¯æ°å¼ãã©ã³ãã16ã®ãã¡ããª\footnote{Omega, Aleph, \LuaTeXï¼ããã¦
- $\varepsilon$-\kern-.125em(u)\pTeX\ ã§ã¯256ã®æ°å¼ãã¡ããªãæ±ããã¨ãã§ãããï¼
- ããããµãã¼ãããããã«plain \TeX ã¨\LaTeX ã§ã¯å¤é¨ããã±ã¼ã¸ãèªã¿è¾¼ãå¿
è¦ã
- ããï¼}ã§ç®¡çãï¼ããããã®ãã¡ããªã¯3ã¤ã®ãã©ã³ããæã£ã¦ããï¼
-\cs{textfont}, \cs{scriptfont} ãã㦠\cs{scriptscriptfont} ã§ãã.
+æåã³ã¼ããã®\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>
-\LuaTeX-ja's handling of Japanese fonts in math formulas is similar;
-Table~\ref{tab-math} shows counterparts to \TeX's primitives for math
-font families. There is no relation between the value of
-\cs{fam} and that of \cs{jfam}; with appropriate settings,
-you can set both \cs{fam} and \cs{jfam} to the same value.
-Here in the argument of \Param{jatextfont} etc.\ is
-a control sequence which is defined by \cs{jfont}, i.e.,
-a \emph{horizontal} Japanese font.
+This parameter is similar to the \cs{inhibitxspcode} primitive of \pTeX, but not compatible with \cs{inhibitxspcode}.
%
%<*ja>
-\LuaTeX-jaã®æ°å¼ä¸ã§ã®åæãã©ã³ãã®æ±ããåæ§ã§ããï¼
-表\ref{tab-math}ã¯æ°å¼ãã©ã³ããã¡ããªã«å¯¾ãã \TeX ã®ããªããã£ãã¨å¯¾å¿ãã
-ãã®ã示ãã¦ããï¼\cs{fam} 㨠\cs{jfam} ã®å¤ã®éã«ã¯é¢ä¿ã¯ãªãï¼
-é©åãªè¨å®ã®ä¸ã§ã¯ \cs{fam} 㨠\cs{jfam} ã®ä¸¡æ¹ã«åãå¤ãè¨å®ãããã¨ãã§ããï¼
-\Param{jatextfont} ä»ã®ç¬¬2å¼æ°ã¯ï¼\cs{jfont} ã§å®ç¾©ããã
-\emph{横çµç¨}åæãã©ã³ãã§ããï¼\cs{tfont} ã§å®ç¾©ããã
-\emph{縦çµç¨}åæãã©ã³ããæå®ãããã¨ã¯æ³å®ãã¦ããªãï¼
+ãã®ãã©ã¡ã¼ã¿ã¯\pTeX ã® \cs{inhibitxspcode} ããªããã£ãã¨ä¼¼ã¦ãããï¼
+äºææ§ã¯ãªãï¼
%
-
-\begin{table}[!tb]
-%\caption{Commands for Japanese math fonts}
-%\caption{åææ°å¼ãã©ã³ãã«å¯¾ããå½ä»¤}
-\label{tab-math}
-%\medskip
-\centering
-\def\{{\char`\{}\def\}{\char`\}}\small
-\begin{tabular}{ll}
-\toprule
-%\bf Japanese fonts&\bf alphabetic fonts\\
-%\bf åæãã©ã³ã&\bf 欧æãã©ã³ã\\
-\midrule
-\cs{jfam}${}\in [0,256)$&\cs{fam}\\
-\tt\Param{jatextfont}\,=\{,\}&\tt\cs{textfont}=\\
-\tt\Param{jascriptfont}\,=\{,\}&\tt\cs{scriptfont}=\\
-\tt\Param{jascriptscriptfont}\,=\{,\}&\tt\cs{scriptscriptfont}=\\
-\bottomrule
-\end{tabular}
-\end{table}
-
-%\subsection{Callbacks}
-%\subsection{ã³ã¼ã«ããã¯}
+\item[\DParam{alxspmode}\,=\{,\}$^\ast$] [\cs{xspcode}]\
%<*en>
-\LuaTeX-ja also has several callbacks. These callbacks can
-be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks.
+Set whether inserting \Param{xkanjiskip} is allowed before/after a
+ \textbf{ALchar} whose character code is .
+ The followings are allowed for :
%
%<*ja>
-\LuaTeX èªä½ã®ãã®ã«å ãã¦ï¼\LuaTeX-jaãã³ã¼ã«ããã¯ãæã£ã¦ããï¼
-ãããã®ã³ã¼ã«ããã¯ã«ã¯ï¼ä»ã®ã³ã¼ã«ããã¯ã¨åæ§ã« \verb+luatexbase.add_to_callback+
-é¢æ°ãªã©ãç¨ãããã¨ã§ã¢ã¯ã»ã¹ãããã¨ãã§ããï¼
+æåã³ã¼ããã®\textbf{ALchar}ã®åï¼å¾ãã«\Param{xkanjiskip}ã®
+æ¿å
¥ã許ããã©ããã®è¨å®ï¼
+以ä¸ã®ã許ãããï¼
%
-\begin{description}[font=\bfseries, style=nextline]
-%\item[\texttt{luatexja.load\_jfm} callback]
-%\item[\texttt{luatexja.load\_jfm}ã³ã¼ã«ããã¯]
+\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>
-With this callback you can overwrite JFMs.
-This callback is called when a new JFM is loaded.
+Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common table, hence these two parameters are synonyms of each other.
%
%<*ja>
-ãã®ã³ã¼ã«ããã¯ãç¨ãããã¨ã§JFMãä¸æ¸ããããã¨ãã§ããï¼
-ãã®ã³ã¼ã«ããã¯ã¯æ°ããJFMãèªã¿è¾¼ã¾ããã¨ãã«å¼ã³åºãããï¼
+\Param{jaxspmode}ã¨\Param{alxspmode}ã¯å
±éã®ãã¼ãã«ãç¨ãã¦ããããï¼
+ããã2ã¤ã®ãã©ã¡ã¼ã¿ã¯äºãã®å¥åã¨ãªã£ã¦ãããã¨ã«æ³¨æããï¼
%
-\begin{lstlisting}[numbers=left]
-function ( jfm_info, jfm_name)
- return new_jfm_info
-end
-\end{lstlisting}
+\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>
-The argument \verb+jfm_info+ contains a table similar to the table in a JFM file, except
-this argument has \texttt{chars} field which contains character codes
- whose character class is not~0.
+Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different.
+The allowed arguments are the followings:
%
%<*ja>
-å¼æ° \verb+jfm_info+ ã¯JFMãã¡ã¤ã«ã®ãã¼ãã«ã¨ä¼¼ããã®ãæ ¼ç´ããããï¼
-ã¯ã©ã¹0ãé¤ããæåã®ã³ã¼ããå«ãã \texttt{chars}ãã£ã¼ã«ããæã¤ç¹ãç°ãªãï¼
+JFMï¼ãããã¯ãµã¤ãºï¼ãç°ãªã2ã¤ã®\textbf{JAchar}ã®éã«ã°ã«ã¼ï¼ã«ã¼ã³ãã©ã®ããã«
+å
¥ããããæå®ããï¼
+許ãããå¤ã¯ä»¥ä¸ã®éãï¼
%
-
+\begin{quote}
+\texttt{average},
+\texttt{both},
+\texttt{large},
+\texttt{small},
+\texttt{pleft},
+\texttt{pright},
+\texttt{paverage}
+\end{quote}
%<*en>
-An example of this callback is the \texttt{ltjarticle} class, with
- forcefully assigning character class~0 to \texttt{'parbdd'}
- in the JFM \texttt{jfm-min.lua}.
+The default value is \texttt{paverage}. \dots
%
%<*ja>
-ãã®ã³ã¼ã«ããã¯ã®ä½¿ç¨ä¾ã¯\texttt{ltjarticle}ã¯ã©ã¹ã«ããï¼
-\texttt{jfm-min.lua}ä¸ã®\texttt{'parbdd'}ãå¼·å¶çã«ã¯ã©ã¹0ã«å²ãå½ã¦ã¦ããï¼
+ããã©ã«ãå¤ã¯ \texttt{paverage} ã§ããï¼
+åã
ã®å¤ã«ããå·®ç°ã®è©³ç´°ã¯\ref{ssec-cluster-wa}ç¯ã®ããå³ç©ºç½ãã®ç®åºããåç
§ãã¦ã»ããï¼
%
-%\item[\texttt{luatexja.define\_jfont} callback]
-%\item[\texttt{luatexja.define\_jfont}ã³ã¼ã«ããã¯]
+\item[\DParam{jacharrange}\,=]
+\item[\DParam{kansujichar}\,=\{, \}$^\ast$] [\cs{kansujichar}]
+
+\item[\DParam{direction}\,=\ \hbox{\rm (always local)}]\
+
%<*en>
-This callback and the next callback form a pair, and you can assign characters
- which do not have fixed code points in Unicode to non-zero character classes.
-This \texttt{luatexja.define\_font} callback is called just when new Japanese font is loaded.
+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>
-ãã®ã³ã¼ã«ããã¯ã¨æ¬¡ã®ã³ã¼ã«ããã¯ã¯çµããªãã¦ããï¼Unicodeä¸ã«åºå®ãããæåã³ã¼ã
-çªå·ãæããªãæåãéé¶ã®æåã¯ã©ã¹ã«å²ãå½ã¦ããã¨ãã§ããï¼
-ãã®ã³ã¼ã«ããã¯ã¯æ°ããåæãã©ã³ããèªã¿è¾¼ã¾ããã¨ãã«å¼ã³åºãããï¼
+çµæ¹åãå¤æ´ãã \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ã®ãããã§ãç¡ãã¨ãã®
+åä½ã¯æªå®ç¾©ã§ããï¼
%
-\begin{lstlisting}[numbers=left]
-function ( jfont_info, font_number)
- return new_jfont_info
-end
-\end{lstlisting}
-%<*en>
-\verb+jfont_info+ has the following fields,
-\emph{which may not overwritten by a user}:
-\begin{description}
-\item[\texttt{size}]
-The font size specified at \cs{jfont} in scaled points ($1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$).
-\item[\texttt{zw}, \texttt{zh}, \texttt{kanjiskip}, \texttt{xkanjiskip}]
-These are scaled value of those specified by the JFM, by the font size.
-\item[\texttt{jfm}]
-The internal number of the JFM.
-\item[\texttt{var}]
-The value of \texttt{jfmvar}~key, which is specified at \cs{jfont}.
-The default value is the empty string.
-\item[\texttt{chars}]
-The mapping table from character codes to its character classes.\\
-The specification \texttt{[i].chars=\{, ...\}} in the JFM will be stored in this
- field as \texttt{chars=\{[]=\,$i$, ...\}}.
-\item[\texttt{char\_type}]
-For $i\in\omega$, \texttt{char\_type[$i$]} is information of characters whose class is
- $i$, and has the following fields:
-\begin{itemize}
- \item \texttt{width},~\texttt{height}, \texttt{depth},
- \texttt{italic}, \texttt{down},~\texttt{left}\ are just
- scaled value of those specified by the JFM, by the font size.
- \item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM:
-\[
- \begin{cases}
- 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}
-\end{description}
-%
-%<*ja>
-\verb+jfont_info+ ã¯æä½é以ä¸ã®ãã£ã¼ã«ããæã¤ãï¼ããããæ¸ãæãã¦ã¯ãªããªãï¼
-\begin{cslist}
-\item[size]
-å®éã«ä½¿ããããã©ã³ããµã¤ãºï¼spåä½ï¼ï¼$1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$ï¼
-\item[zw\textrm{, }zh\textrm{, }kanjiskip\textrm{, }xkanjiskip]
-JFMãã¡ã¤ã«ã§æå®ããã¦ããããããã®å¤ããã©ã³ããµã¤ãºã«åããã¦ã¹ã±ã¼ãªã³ã°ãããã®ã
-spåä½ã§æ ¼ç´ãã¦ããï¼
-\item[jfm]
-å©ç¨ããã¦ããJFMãèå¥ããããã®çªå·ï¼
-\item[var]
-\cs{jfont},~\cs{tfont} ã§æå®ããã \texttt{jfmvar} ãã¼ã®å¤ï¼æªæå®ã®ã¨ãã¯ç©ºæååï¼ï¼
-\item[chars]
-æåã³ã¼ãããæåã¯ã©ã¹ã¸ã®å¯¾å¿ãè¨è¿°ããããã¼ãã«ï¼\\
-JFMå
ã® \texttt{[i].chars=\{, ...\}} ã¨ããæå®ã¯\
-\texttt{chars=\{[]=\,$i$, ...\}} ã¨ããå½¢å¼ã«å¤æããã¦ããï¼
-\item[char\_type]
-$i\in\omega$ã«å¯¾ãã¦ï¼\texttt{char\_type[$i$]} ã¯æåã¯ã©ã¹$i$ã®æåã®å¯¸æ³ãæ ¼ç´ãã¦ããï¼
-以ä¸ã®ãã£ã¼ã«ããæã¤ï¼
-\begin{itemize}
- \item \texttt{width},~\texttt{height}, \texttt{depth},
- \texttt{italic}, \texttt{down},~\texttt{left}\ ã¯
-JFMã§æå®ããã¦ããããããã®å¤ãã¹ã±ã¼ãªã³ã°ãããã®ã§ããï¼
- \item \texttt{align} ã¯JFMã§æå®ããã¦ããå¤ã«ãã£ã¦ï¼
-\[
- \begin{cases}
- 0&\text{\texttt{'left'}ãçç¥æ}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
- \end{cases}
-\]
-ã®ããããã®å¤ãã¨ãï¼
-\item $j\in \omega$ã«å¯¾ãã¦ï¼\texttt{[$j$]} ã¯æåã¯ã©ã¹$i$ã®æåã¨$j$ã®æåã®éã«æ¿å
¥ãããkern
- ãglueãæ ¼ç´ãã¦ããï¼
-éã«å
¥ããã®ãkernã§ããã°ï¼ãã®ãã£ã¼ã«ãã®å¤ã¯\
-\texttt{[$j$]=\{false, , \}} ã§ããï¼
-ã¯kernã表ããã¼ããã®ãã®ã§ãã\footnote{%
-æ¬ãã¼ã¸ã§ã³ã§ã¯ãã¼ãã®ã¢ã¯ã»ã¹ææ³ã«direct access
- modelãç¨ãã¦ããï¼ãã®ããï¼ä¾ãã°\LuaTeX\ beta-0.78.2ã§ã¯ï¼åãªãèªç¶æ°ã®ããã«ã
- ãè¦ããªããã¨ã«æ³¨æï¼
-}ï¼
-glueã§ããã°ï¼\texttt{[$j$]=\{false, , , \}} ã§ããï¼
-ã¯glueã®é·ãã表ããã¼ããã®ãã®ã§ããï¼
- $\text{}=\textit{from\_jfm}+\text{}$ã§ããï¼
-\end{itemize}
-\item[ascent\textrm{, }descent]
-â¦â¦
-\item[chars\_cbcache]
-â¦â¦
\end{cslist}
-%
+
+\subsection{\cs{ltjgetparameter}}
+\label{ssec-getpar}
%<*en>
-The returned table \verb+new_jfont_info+ also should include these fields, but
-you are free to add more fields (to use them in the \texttt{luatexja.find\_char\_class} callback).
-The \verb+font_number+ is a font number.
+\cs{ltjgetparameter} is a control sequence for acquiring parameters. It
+always takes a parameter name as first argument.
%
%<*ja>
-æ»ãå¤ã® \verb+new_jfont_info+ ãã¼ãã«ãä¸ã«è¿°ã¹ããã£ã¼ã«ãããã®ã¾ã¾å«ã¾ãªããã°ãªããªããï¼
-ãã以å¤ã«ã¦ã¼ã¶ãåæã«ãã£ã¼ã«ããä»ãå ãããã¨ã¯èªç±ã§ããï¼
-\verb+font_number+ ã¯ãã©ã³ãçªå·ã§ããï¼
+\cs{ltjgetparameter} ã¯ãã©ã¡ã¼ã¿ã®å¤ãåå¾ããããã®å½ä»¤ã§ããï¼
+常ã«ãã©ã¡ã¼ã¿ã®ååã第ä¸å¼æ°ã«ã¨ãï¼
%
+\begin{LTXexample}
+\ltjgetparameter{differentjfm},
+\ltjgetparameter{autospacing},
+\ltjgetparameter{kanjiskip},
+\ltjgetparameter{prebreakpenalty}{`ï¼}.
+\end{LTXexample}
%<*en>
-A good example of this and the next callbacks is the \Pkg{luatexja-otf}
- package, supporting \verb+"AJ1-xxx"+ form for Adobe-Japan1
- CID characters in a JFM. This callback doesn't replace any
- code of \LuaTeX-ja.
+\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>
-ããã¨æ¬¡ã®ã³ã¼ã«ããã¯ã®è¯ã使ç¨ä¾ã¯\Pkg{luatexja-otf}ããã±ã¼ã¸ã§ããï¼
-JFMä¸ã§Adobe-Japan1 CIDã®æåã \verb+"AJ1-xxx"+ ã®å½¢ã§æå®ããããã«
-ç¨ãããã¦ããï¼
+\emph{\cs{ltjgetparameter} ã®æ»ãå¤ã¯å¸¸ã«æååã§ããï¼}
+ããã¯\texttt{tex.write()}ã«ãã£ã¦åºåãã¦ããããã§ï¼ç©ºç½ã\texttt{\char32}ã
+(\texttt{U+0020})ãé¤ããæåã®ã«ãã´ãªã¼ã³ã¼ãã¯å
¨ã¦12~(other)ã¨ãªãï¼
+ä¸æ¹ï¼ç©ºç½ã®ã«ãã´ãªã¼ã³ã¼ãã¯10~(space)ã§ããï¼
%
-%\item[\texttt{luatexja.find\_char\_class} callback]
-%\item[\texttt{luatexja.find\_char\_class}ã³ã¼ã«ããã¯]
+\begin{itemize}
+\item
%<*en>
-This callback is called just when \LuaTeX-ja is trying to determine which
- character class a character \verb+chr_code+ belongs.
-A function used in this callback should be in the following form:
+If first argument is one of the
+following, no additional argument is needed.
%
%<*ja>
-ãã®ã³ã¼ã«ããã¯ã¯\LuaTeX-jaã \verb+chr_code+ ã®æåãã©ã®æåã¯ã©ã¹ã«
-å±ãããã決å®ãããã¨ããéã«å¼ã³åºãããï¼
-ãã®ã³ã¼ã«ããã¯ã§å¼ã³åºãããé¢æ°ã¯æ¬¡ã®å½¢ããã¦ããªããã°ãªããªãï¼
+第1å¼æ°ã次ã®ããããã®å ´åã«ã¯ï¼è¿½å ã®å¼æ°ã¯å¿
è¦ãªãï¼
%
-\begin{lstlisting}[numbers=left]
-function ( char_class, jfont_info, chr_code)
- if char_class~=0 then return char_class
- else
- ....
- return ( new_char_class or 0)
- end
-end
-\end{lstlisting}
-
+\begin{quote}
+\sffamily
+jcharwidowpenalty, yjabaselineshift, yalbaselineshift, autospacing, autoxspacing,\\
+kanjiskip, xkanjiskip, differentjfm, direction
+\end{quote}
%<*en>
-The argument \verb+char_class+ is the result of \LuaTeX-ja's default
- routine or previous function calls in this callback, hence
- this argument may not be 0. Moreover, the returned
- \verb+new_char_class+ should be as same as \verb+char_class+ when \verb+char_class+
- is not~0, otherwise you will overwrite the \LuaTeX-ja's
- default routine.
+Note that \verb+\ltjgetparameter{autospacing}+~and~\verb+\ltjgetparameter{autoxspacing}+
+returns 1 or 0, not
+\texttt{true}~nor~\texttt{false}.
%
%<*ja>
-å¼æ° \verb+char_class+ ã¯\LuaTeX-jaã®ããã©ã«ãã«ã¼ãã³ãï¼ãã®ã³ã¼ã«ããã¯ã®
-ç´åã®é¢æ°å¼ã³åºãã®çµæãå«ãã§ããï¼ãããã£ã¦ãã®å¤ã¯0ã§ã¯ãªããããããªãï¼
-ããã«ï¼æ»ãå¤ã® \verb+new_char_class+ 㯠\verb+char_class+ ãéé¶ã®ã¨ãã«ã¯
-\verb+char_class+ ã®å¤ã¨åãã§ããã¹ãã§ï¼ããã§ãªãã¨ãã¯\LuaTeX-jaã®
-ããã©ã«ãã«ã¼ãã³ãæ¸ãæãããã¨ã«ãªãï¼
+\verb+\ltjgetparameter{autospacing}+ 㨠\verb+\ltjgetparameter{autoxspacing}+ ã¯ï¼
+\texttt{true}ã\texttt{false}ãè¿ãã®\emph{ã§ã¯ãªã}ï¼
+1ã0ã®ãããããè¿ããã¨ã«æ³¨æï¼
%
-%\item[\texttt{luatexja.set\_width} callback]
-%\item[\texttt{luatexja.set\_width}ã³ã¼ã«ããã¯]
+\item
%<*en>
-This callback is called when \LuaTeX-ja is trying to encapsule a
- \textbf{JAchar} \textit{glyph\_node}, to adjust its
- dimension and position.
+If first argument is one of the
+following, an additional argument---a character code, for example---is needed.
%
%<*ja>
-ãã®ã³ã¼ã«ããã¯ã¯\LuaTeX-jaã\textbf{JAchar}ã®å¯¸æ³ã¨ä½ç½®ã調ç¯ããããã«
-ãã®\textit{glyph\_node}ãã«ãã»ã«åãããã¨ããéã«å¼ã³åºãããï¼
+第1å¼æ°ã次ã®ããããã®å ´åã«ã¯ï¼ããã«æåã³ã¼ãã第2å¼æ°ã¨ãã¦ã¨ãï¼
%
-\begin{lstlisting}[numbers=left]
-function ( shift_info, jfont_info, char_type)
- return new_shift_info
-end
-\end{lstlisting}
-
+\begin{quote}
+\sffamily
+kcatcode, prebreakpenalty, postbreakpenalty, jaxspmode, alxspmode
+\end{quote}
%<*en>
-The argument \verb+shift_info+ and the returned \verb+new_shift_info+ have
-\texttt{down} and \texttt{left} fields, which are the amount of shifting
- down/left the character in a scaled point.
+\verb+\ltjgetparameter{jaxspmode}{...}+~and~\verb+\ltjgetparameter{alxspmode}{...}+
+returns 0,~1, 2,~or~3, instead of \texttt{preonly} etc.
%
%<*ja>
-å¼æ° \verb+shift_info+ ã¨æ»ãå¤ã® \verb+new_shift_info+ ã¯
-\texttt{down}ã¨\texttt{left}ã®ãã£ã¼ã«ããæã¡ï¼ãããã®å¤ã¯
-æåã®ä¸ï¼å·¦ã¸ã®ã·ããéï¼spåä½ï¼ã§ããï¼
+\verb+\ltjgetparameter{jaxspmode}{...}+ ã \verb+\ltjgetparameter{alxspmode}{...}+\
+ã¯ï¼\texttt{preonly} ãªã©ã¨ãã£ãæååã§ã¯ãªãï¼0ãã3ã¾ã§ã®å¤ãè¿ãï¼
%
+\item
%<*en>
-A good example is \Pkg{test/valign.lua}.
-After loading this file, the vertical position of glyphs is automatically
-adjusted; the ratio $(\hbox{height}:\hbox{depth})$ of glyphs is adjusted
-to be that of letters in the character class~0. For example, suppose that
-\begin{itemize}
-\item The setting of the JFM: $(\hbox{height})=88x$, $(\hbox{depth})=12x$
- (the standard values of Japanese OpenType fonts);
-\item The value of the real font: $(\hbox{height})=28y$, $(\hbox{depth})=5y$
- (the standard values of Japanese TrueType fonts).
-\end{itemize}
-Then, the position of glyphs is shifted up by
+\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>
-è¯ãä¾ã\Pkg{test/valign.lua}ã§ããï¼ãã®ãã¡ã¤ã«ãèªã¿è¾¼ã¾ããç¶æ
ã§ã¯ï¼
- JFMå
ã§è¦å®ãããæåã¯ã©ã¹0ã®æåã«ããã$(\hbox{é«
- ã}):(\hbox{æ·±ã})$ã®æ¯ã«ãªãããã«ï¼å®éã®ãã©ã³ãã®åºåä¸
- ä¸ä½ç½®ãèªå調æ´ãããï¼ä¾ãã°ï¼
-\begin{itemize}
-\item JFMå´ã®è¨å®ï¼$(\hbox{é«ã})=88x$, $(\hbox{æ·±ã})=12x$%
-ï¼åæOpenTypeãã©ã³ãã®æ¨æºå¤ï¼
-\item å®ãã©ã³ãå´ã®æ°å¤ï¼$(\hbox{é«ã})=28y$, $(\hbox{æ·±ã})=5y$ï¼åæTrueTypeãã©ã³ãã®æ¨æºå¤ï¼
-\end{itemize}
-ã¨ãªã£ã¦ããã¨ããï¼ããã¨ï¼å®éã®æåã®åºåä½ç½®ã¯ï¼ä»¥ä¸ã®éã ãä¸ã«ããããããã¨ã¨ãªãï¼
+\verb+\ltjgetparameter{jacharrange}{+\verb+}+ ã¯ï¼ã\textbf{JAchar}éã®
+ç¯å²ãªãã°0ãï¼ããã§ãªããã°1ãè¿ãï¼ã$-1$çªã®æåç¯å²ãã¯åå¨ããªããï¼ã«$-1$ã
+æå®ãã¦ãã¨ã©ã¼ã¯çºçããªãï¼1ãè¿ãï¼ï¼
%
-\[
- \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
-\]
-\end{description}
-
-
-%\section{Parameters}
-%\section{ãã©ã¡ã¼ã¿}
-\subsection{\cs{ltjsetparameter}}
-\label{ssec-param}
+\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}ã§åºåãã
+ ãæåã®æåã³ã¼ããè¿ãï¼
+%
+\item
%<*en>
-As described before, \cs{ltjsetparameter} and \cs{ltjgetparameter} are
-commands for accessing most parameters of \LuaTeX-ja. One of the main
-reason that \LuaTeX-ja didn't adopted the syntax similar to that of \pTeX\
-(\textit{e.g.},~\verb+\prebreakpenalty`ï¼=10000+)
-is the position of \verb+hpack_filter+ callback in the source
-of \LuaTeX, see Section~\ref{sec-para}.
+\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>
-å
ã«è¿°ã¹ãããã«ï¼\LuaTeX-jaã®å
é¨ãã©ã¡ã¼ã¿ã«ã¢ã¯ã»ã¹ããã«ã¯
-\cs{ltjsetparameter}ï¼ã¾ã㯠\cs{ltjglobalsetparameter}ï¼ã¨ \cs{ltjgetparameter} ãç¨ããï¼
-\LuaTeX-jaã\pTeX ã®ãããªææ³ï¼ä¾ãã°ï¼\verb+\prebreakpenalty`ï¼=10000+ï¼ã
-æ¡ç¨ããªãçç±ã®ä¸ã¤ã¯ï¼\LuaTeX ã®ã½ã¼ã¹ã«ããã \verb+hpack_filter+
-ã³ã¼ã«ããã¯ã®ä½ç½®ã«ããï¼\ref{sec-para}ç« ãåç
§ï¼
+\verb+\ltjgetparameter{adjustdir}+ ã¯ï¼å¨å²ã®vboxã®çµæ¹åï¼è¨ãæããã°ï¼
+\cs{vadjust} ã§ç¨ããããçµæ¹åï¼ã表ãæ°å¤ãè¿ãï¼
+\Param{direction}ã¨åæ§ã«ï¼1㯠\cs{dtou} æ¹åãï¼
+3ã¯ç¸¦çµã¿ãï¼4ã¯æ¨ªçµã¿ã表ãï¼
%
+\item
%<*en>
-\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands
-for assigning parameters. These take one argument which is a
-\texttt{=} list.
-The difference between these two commands is the
-scope of assignment;
-\cs{ltjsetparameter} does a local assignment and
-\cs{ltjglobalsetparameter} does a global one.
-They also obey the value of \cs{globaldefs}, like other assignments.
+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>
-\cs{ltjsetparameter} 㨠\cs{ltjglobalsetparameter} ã¯ãã©ã¡ã¼ã¿ã
-æå®ããããã®å½ä»¤ã§ï¼\texttt{=}ã®ãªã¹ãã
-å¼æ°ã¨ãã¦ã¨ãï¼ä¸¡è
ã®éãã¯ã¹ã³ã¼ãã§ããï¼
-\cs{ltjsetparameter} ã¯ãã¼ã«ã«ãªè¨å®ãè¡ãã®ã«å¯¾ãï¼
-\cs{ltjglobalsetparameter} ã¯ã°ãã¼ãã«ãªè¨å®ãè¡ãï¼
-ã¾ãï¼ä»ã®ãã©ã¡ã¼ã¿æå®ã¨åæ§ã« \cs{globaldefs} ã®å¤ã«ãå¾ãï¼
+0--65535ã®æ°ã«å¯¾ãã¦ï¼
+\verb+\ltjgetparameter{boxdim}{+\verb+}+ ã¯ï¼\cs{box}ã«
+æ ¼ç´ããã¦ããããã¯ã¹ã®çµæ¹åã表ãï¼ãããã®ã¬ã¸ã¹ã¿ã空ã®å ´åã¯ï¼0ãè¿ãããï¼
%
+\item
%<*en>
-The following is the list of parameters which can be specified by the
-\cs{ltjsetparameter} command. [\cs{cs}] indicates the counterpart
-in \pTeX, and symbols beside each parameter has the following meaning:
+The following parameter names \emph{cannot be specified} in \cs{ltjgetparameter}.
%
%<*ja>
-以ä¸ã¯ \cs{ltjsetparameter} ã«æå®ãããã¨ãã§ãããã©ã¡ã¼ã¿ã®ä¸è¦§ã§ããï¼
-[\cs{cs}]ã¯\pTeX ã«ããã対å¿ç©ã示ãï¼
-ã¾ãï¼ããããã®ãã©ã¡ã¼ã¿ã®å³ä¸ã®è¨å·ã«ã¯æ¬¡ã®æå³ãããï¼
+次ã®ãã©ã¡ã¼ã¿åã \cs{ltjgetparameter} ã«æå®ãããã¨ã¯ã§ããªãï¼
%
-\begin{itemize}
+\begin{quote}
+\sffamily
+jatextfont, jascriptfont, jascriptscriptfont, jacharrange
+\end{quote}
+
+\item
%<*en>
-\item ``$\ast$'' : values at the end of a paragraph or a hbox are
-adopted in the whole paragraph or the whole hbox.
+\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>
-\item ``$\ast$''ï¼æ®µè½ãhboxã®çµç«¯ã§ã®å¤ããã®æ®µè½ï¼hboxå
¨ä½ã§ç¨ããããï¼
+\verb+\ltjgetparameter{chartorange}{+\verb+}+ ã«ãã£ã¦
+ã®å±ããæåç¯å²ã®çªå·ãç¥ããã¨ãã§ããï¼
+
+ã«0--127ã®å¤ãæå®ããå ´åï¼ãã®ã¨ãï¼ãå±ãã
+æåç¯å²ã¯åå¨ããªãï¼ã¯$-1$ãè¿ãï¼
+
+ãã®ããï¼ã\textbf{JAchar}ã\textbf{ALchar}ãã¯
+次ã§ç¥ããã¨ãã§ããï¼
%
+\begin{quote}
+\ttfamily \verb+\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{+%
+ \verb+}}+\\\null\hfill\verb+% 0 if JAchar, 1 if ALchar+
+\end{quote}
+
%<*en>
-\item ``\dagger'': assignments are always global.
+\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 ``\dagger''ï¼æå®ã¯å¸¸ã«ã°ãã¼ãã«ã«ãªãï¼
+\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}
-\begin{cslist}[style=standard]
-\item[\DParam{jcharwidowpenalty}\,=$^\ast$] [\cs{jcharwidowpenalty}]\
+%<*ja>
+\subsection{\cs{ltjsetparameter} ã®ä»£æ¿}
+ååã¨ãã¦å種å
é¨ãã©ã¡ã¼ã¿ã®è¨å®ã«ã¯ \cs{ltjsetparameter} ãããã¯
+\ \cs{ltjglobalsetparameter}\ ãç¨ãããã¨ã«ãªããï¼
+\cs{ltjsetparameter} ã®å®è¡ã«ã¯æéããããã¨ããé£ç¹ãããï¼
+\LuaTeX-ja ã®å
é¨ã§ã¯ããé«éã«å®è¡ã§ããå¥ã®å½¢å¼ãç¨ãã¦ããï¼
+\emph{æ¬ç¯ã¯ä¸è¬å©ç¨è
ããã®å
容ã§ã¯ãªãï¼}
+
+\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} ã®è¨å®}
+\pLaTeXe æ°ããã¥ã¡ã³ãã¯ã©ã¹ã§ã¯ï¼
+\begin{lstlisting}
+\def\@setfontsize#1#2#3{%
+ ...
+ \kanjiskip=0zw plus .1zw minus .01zw
+ \ifdim\xkanjiskip>\z@
+ \if@slide \xkanjiskip=0.1em \else
+ \xkanjiskip=0.25em plus 0.15em minus 0.06em
+ \fi
+ \fi}
+\end{lstlisting}
+ã¨ï¼ãã©ã³ããµã¤ãºãå¤æ´ãããã¨ã« \cs{kanjiskip}, \cs{xkanjiskip} ãå¤æ´ãã¦ããï¼
+ãã® \cs{@setfontsize} ã¯ææ¸ã®ä¸ã§å¤æ°åå®è¡ãããã®ã§ï¼
+\LuaTeX-ja ç¨ã«ç´ ç´ã«æ¸ãæãã
+\begin{lstlisting}
+ \ltjsetparameter{kanjiskip=0\zw plus .1\zw minus .01\zw}
+ \@tempskipa=\ltjgetparameter{xkanjiskip}
+ \ifdim\@tempskipa>\z@
+ \if@slide
+ \ltjsetparameter{xkanjiskip=0.1em}
+ \else
+ \ltjsetparameter{xkanjiskip=0.25em plus 0.15em minus 0.06em}
+ \fi
+ \fi
+\end{lstlisting}
+ã¨ããã®ã§ã¯ã¿ã¤ãã»ãããé
ããªã£ã¦ãã¾ãï¼
+ããã§ï¼\cs{ltjsetparameter} ã®ä¸ã§
+\begin{itemize}
+\item \cs{globaldefs} ã®å¤ãèªã¿åã \cs{ltj@setpar@global}
+\item \Param{kanjiskip} ã®è¨å®ãè¡ã \cs{ltjsetkanjiskip}
+\item \Param{xkanjiskip} ã®è¨å®ãè¡ã \cs{ltjsetxkanjiskip}
+\end{itemize}
+ãç¬ç«ããï¼\Pkg{ltjsclasses}ã§ã¯ï¼
+\begin{lstlisting}
+ \ltj@setpar@global
+ \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+ \@tempskipa=\ltjgetparameter{xkanjiskip}
+ \ifdim\@tempskipa>\z@
+ \if@slide
+ \ltjsetxkanjiskip.1em
+ \else
+ \ltjsetxkanjiskip.25em plus .15em minus .06em
+ \fi
+ \fi
+\end{lstlisting}
+ã¨ãã¦ããï¼
+\cs{ltj@setpar@global}ãç´åã«å®è¡ããï¼åç¬ã§
+\cs{ltjsetkanjiskip}, \cs{ltjsetxkanjiskip}ãå®è¡ãããã¨ã¯æ³å®ããã¦ããªãã®ã§æ³¨æï¼
+
+
+
+\paragraph{ãã¼ã¹ã©ã¤ã³è£æ£éã®è¨å®}
+\pLaTeX ã®\Pkg{ascmac}ããã±ã¼ã¸ã§ã¯ï¼ç¸¦çµã®æ¬§æãã¼ã¹ã©ã¤ã³è£æ£éã®ä¸æå¾
é¿ã»å¾©å¸°å¦çã«
+\ \cs{@saveybaselineshift}\ ã¨ãã寸æ³ã¬ã¸ã¹ã¿ãç¨ã
+\begin{lstlisting}
+\@savetbaselineshift\tbaselineshift\tbaselineshift\z@
+...
+\tbaselineshift\@savetbaselineshift
+\end{lstlisting}
+ã¨ããå¦çãè¡ã£ã¦ããï¼
+
+ããã\LuaTeX-ja ç¨ã« \cs{ltjsetparameter} ã使ã£ã¦æ¸ãç´ãã¨ï¼
+\begin{lstlisting}
+\@savetbaselineshift\ltjgetparameter{talbaselineshift}
+\ltjsetparameter{talbaselineshift=\z@}
+...
+\ltjsetparameter{talbaselineshift=\@savetbaselineshift}
+\end{lstlisting}
+ã¨ãªãï¼
+
+ãã¦ï¼ç¸¦çµã®æ¬§æãã¼ã¹ã©ã¤ã³è£æ£é\Param{talbaselineshift}ã¯ï¼
+å®éã«ã¯ \cs{ltj@tablshift} ã¨ããå±æ§ã¬ã¸ã¹ã¿ã«æ ¼ç´ããã¦ãã
+ï¼\ref{sec-para}\nobreak ç¯åç
§ï¼ï¼å±æ§ã¬ã¸ã¹ã¿ã¯é·ãã§ã¯ãªãæ´æ°å¤ãæ ¼ç´ãã\footnote{%
+ å¾ã£ã¦ï¼\texttt{\textbackslash @savetbaselineshift=\textbackslash ltj@tablshift}\
+ ã®ããã«è¨è¿°ãããã¨ã¯ã§ããªãï¼å±æ§ã¬ã¸ã¹ã¿ã \cs{tbaselineshift} ã¨ããå称ã«ããªãã£
+ ãã®ã¯ãã®ããã§ããï¼
+}ãã®ã§ããï¼\cs{ltj@tablshift} ã¯è£æ£éã sp åä½ã§ä¿æãããã¨ããï¼
+ä¸è¨ã®ã³ã¼ãã¨åãå
容ãããéã以ä¸ã®ã³ã¼ãã§å®ç¾ãããã¨ãã§ããï¼
+\begin{lstlisting}
+\@savetbaselineshift\ltj@tablshift sp%
+\ltj@tablshift\z@
+...
+\ltj@tablshift\@savetbaselineshift
+\end{lstlisting}
+ãã®ææ³ã¯ \Pkg{ascmac} ããã±ã¼ã¸ã®\LuaTeX-ja対å¿ããã \Pkg{lltjp-tascmac.sty} ã§
+å®éã«ç¨ãããã¦ããï¼\Pkg{lltjp-tascmac.sty} ã¯èªåçã«èªã¿è¾¼ã¾ããã®ã§ï¼
+ã¦ã¼ã¶ã¯ä½ãæ°ã«ããæ®éã« \Pkg{ascmac} ããã±ã¼ã¸ã \cs{usepackage} ã§èªã¿ããã°è¯ãï¼
+%
+
+
+%\section{Other Commands for plain \TeX\ and \LaTeXe}
+%