OSDN Git Service

Merge branch 'kitagawa_test' into kitagawa_ruby2
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 27 Mar 2014 02:03:00 +0000 (11:03 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 27 Mar 2014 02:03:00 +0000 (11:03 +0900)
14 files changed:
doc/luatexja-en.pdf
doc/luatexja-ja.pdf
doc/luatexja.dtx
src/addons/luatexja-fontspec.sty
src/jfm-ujis.lua
src/ltjsarticle.cls
src/ltjsbook.cls
src/ltjsclasses.dtx
src/ltjskiyou.cls
src/ltjspf.cls
src/patches/lltjdefs.sty
src/patches/lltjfont.sty
test/test20a-mfont-fontspec.pdf [new file with mode: 0644]
test/test20a-mfont-fontspec.tex [new file with mode: 0644]

index 2bcf114..3f87190 100644 (file)
Binary files a/doc/luatexja-en.pdf and b/doc/luatexja-en.pdf differ
index 3ead437..938ebdf 100644 (file)
Binary files a/doc/luatexja-ja.pdf and b/doc/luatexja-ja.pdf differ
index c9bbbbd..07abd1e 100644 (file)
 \usepackage{luatexja-otf}
 %<ja>\usepackage{lmodern}
 \directlua{luatexja.otf.enable_ivs()}
+\usepackage[match]{luatexja-fontspec}
 \usepackage[kozuka-pr6n]{luatexja-preset}
+\setmonojfont{KozGoPr6N-Regular.otf}
 %<*ja>
 \def\emph#1{\textbf{\textgt{#1}}}
 \def\headfont{\normalfont\bfseries\gtfamily}
 \setmathfont{xits-math.otf}
 \frenchspacing
 %</en>
-\DeclareRobustCommand\ttfamily
-        {\not@math@alphabet\ttfamily\mathtt
-         \romanfamily\ttdefault\ttjfam\selectfont}
-\newjfontfamily\ttjfam{KozGoPr6N-Regular.otf}
-
 
 %%%%%%%% logo
 \usepackage{metalogo}
@@ -932,7 +929,7 @@ Okumura), namely, \Pkg{ltjclasses} and \Pkg{ltjsclasses}.
 日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった
 欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい.
 現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses}
-ï¼\88奥æ\9d\91æ\99´å½¦æ°\8fã\81«ã\82\88ã\82\8bã\82¯ã\83©ã\82¹ã\83\95ã\82¡ã\82¤ã\83«)に対応するものとして,\Pkg{ltjclasses},
+ï¼\88奥æ\9d\91æ\99´å½¦æ°\8fã\81«ã\82\88ã\82\8bã\80\8c\pLaTeXe æ\96°ã\83\89ã\82­ã\83¥ã\83¡ã\83³ã\83\88ã\82¯ã\83©ã\82¹ã\80\8d)に対応するものとして,\Pkg{ltjclasses},
 \Pkg{ltjsclasses}がそれぞれ用意されている.
 %</ja>
 
@@ -940,7 +937,7 @@ Okumura), namely, \Pkg{ltjclasses} and \Pkg{ltjsclasses}.
 %<ja>\section{フォントの変更}
 
 \subsection{plain \TeX~and~\LaTeXe}
-\label{ssub-chgfnt}
+\label{ssec-chgfnt}
 
 \paragraph{plain \TeX}
 %<*en>
@@ -1014,7 +1011,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
       alphabetic fonts to \texttt{T1}.
       \verb+\fontfamily+ also changes the current Japanese font family, 
       the current alphabetic font family, \emph{or both}. 
-      For the detail, see Subsection~\ref{ssub-nfsspat}.
+      For the detail, see Subsection~\ref{ssec-nfsspat}.
 %</en>
 %<*ja>
       ここで,\verb+\fontencoding{+<encoding>\verb+}+ は,引数により和文側か欧文
@@ -1023,7 +1020,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
       \texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を
       \texttt{T1}へと変更する.\verb+\fontfamily+ も引数により和文側,欧文
       側,\emph{あるいは両方}のフォントファミリを変更する.詳細は
-      \ref{ssub-nfsspat}節を参照すること.
+      \ref{ssec-nfsspat}節を参照すること.
 %</ja>
 
 %<*en>
@@ -1046,7 +1043,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
 %<*ja>
 仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は
 \ref{ssec-altfont}節の \verb+\ltjdeclarealtfont+ と,その\LaTeX 版の\ 
-\verb+\DeclareAlternateKanjiFont+(\ref{ssub-nfsspat}節)を参照せよ.
+\verb+\DeclareAlternateKanjiFont+(\ref{ssec-nfsspat}節)を参照せよ.
 %</ja>
 \end{itemize}
 
@@ -1114,13 +1111,21 @@ this chapter. For the method, please see Subsection~\ref{ssec-math}.
 \label{ssec-fontspec}
 %<*en>
 To coexist with the \Pkg{fontspec} package, it is needed to load
-\Pkg{luatexja-fontspec} package in the preamble. This additional
-package automatically loads \Pkg{luatexja} and \Pkg{fontspec}
+\Pkg{luatexja-fontspec} package in the preamble, as follows:
+\begin{quote}
+\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
+\end{quote}
+This \Pkg{luatexja-fontspec} package 
+automatically loads \Pkg{luatexja} and \Pkg{fontspec}
 package, if needed.
 %</en>
 %<*ja>
-\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いるためには,
-\Pkg{luatexja-fontspec}パッケージをプリアンブルで読み込む必要がある.このパッケージ
+\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合,
+\Pkg{luatexja-fontspec}パッケージを読み込む:
+\begin{quote}
+\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
+\end{quote}
+このパッケージ
 は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む.
 %</ja>
 
@@ -1132,20 +1137,21 @@ counterparts of original commands in the \Pkg{fontspec} package:
 \Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec}
 パッケージの元のコマンドに対応するものとして定義している:
 %</ja>
-
 %<*en>
 \begin{center}\small
 \begin{tabular}{ccccc}
 \toprule
 Japanese fonts
-&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\
+&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\setmonojfont+$^*$\\
 alphabetic fonts
-&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\
+&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\setmonofont+\\
 \midrule
 Japanese fonts
-&\verb+\newjfontface+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
+&\verb+\newjfontfamily+&\verb+\newjfontface+
+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
 alphabetic fonts
-&\verb+\newfontface+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
+&\verb+\newfontfamily+&\verb+\newfontface+
+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
 \bottomrule
 \end{tabular}
 \end{center}
@@ -1172,31 +1178,54 @@ alphabetic fonts
 \end{tabular}
 \end{center}
 %</ja>
-\begin{LTXexample}[width=0.4\textwidth]
-\fontspec[Numbers=OldStyle]{LMSans10-Regular}
-\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular}
-JIS~X~0213:2004→辻
+%<*en>
+The package option of \Pkg{luatexja-fontspec} are the followings:
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+ \item[match] If this option is specified, usual family-changing commands such as
+\verb+\rmfamily+,~\verb+\textrm+, \verb+\sffamily+,~\dots\ also change Japanese font family.
 
-\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular}
-JIS~X~0208:1990→辻
-\end{LTXexample}
+Note that \emph{\texttt{\textup{\textbackslash setmonojfont}} is defined 
+if and only if this \texttt{\textup{match}} option is specified}.
 
-%<*en>
-Note that there is no command named \verb+\setmonojfont+, since it is
-popular for Japanese fonts that nearly all Japanese glyphs have same
+ \item[pass=<opts>] 
+Specify options <opts> which will be passed to the \Pkg{fontspec} package.
+\end{list} 
+The reason that \verb+\setmonojfont+ is not defined by default is that
+it is popular for Japanese fonts that nearly all Japanese glyphs have same
 widths.  Also note that kerning information in a font is not used
-(that is, \texttt{kern} feature is set off) by default in these seven commands.
+(that is, \texttt{kern} feature is set off) by default in these seven (or~eight) commands.
 This is because of the compatibility with previous versions of \LuaTeX-ja
 (see \ref{para-kern}).
 %</en>
 %<*ja>
-和文フォントについては全ての和文文字のグリフがほぼ等幅であるのが普通であるため,
-\verb+\setmonojfont+ コマンドは存在しないことに注意.また,これらの和文用の7つのコマ
-ンドではフォント内のペアカーニング情報は標準では使用されない,
+\Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである:
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+ \item[match] このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
+\verb+\rmfamily+, \verb+\textrm{...}+, \verb+\sffamily+ 等が
+欧文フォントだけでなく和文フォントも変更するようになる.
+
+\emph{なお,{\tt \textbackslash setmonojfont} はこの \texttt{match} オプションが
+指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する.
+
+ \item[pass=<opts>] 
+\Pkg{fontspec} パッケージに渡すオプション <opts> を指定する.
+\end{list}
+標準で \verb+\setmonojfont+ コマンドが定義されないのは,
+和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる.
+また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
 言い換えれば \texttt{kern} featureは標準では無効化となっている.
 これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照).
 %</ja>
 
+\begin{LTXexample}[width=0.4\textwidth]
+\fontspec[Numbers=OldStyle]{LMSans10-Regular}
+\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular}
+JIS~X~0213:2004→辻
+
+\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular}
+JIS~X~0208:1990→辻
+\end{LTXexample}
+
 %<en>\subsection{Presets}
 %<ja>\subsection{プリセット設定}
 \label{ssec-preset}
@@ -1615,7 +1644,7 @@ If you want to use these functions, load \Pkg{luatexja-otf} package.
 
 これら3オプションについては,
 \Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか,
-あるいは対応する内容を\ref{ssub-chgfnt}節,\ref{ssub-nfsspat}節 (NFSS2) や
+あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や
 \ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
 %</ja>
 
@@ -2176,7 +2205,7 @@ For the detail, see Table~\ref{table-kcat}.
 \small
 \caption{\texttt{\textbackslash kcatcode} in \upTeX}
 \label{table-kcat}
-\medskip
+%<en>\medskip
 
 \noindent\hfill
 \begin{tabular}{ccccc}
@@ -2541,46 +2570,60 @@ JFMの名前を指定する.もし以前に指定されたJFMが読み込ま
 %</en>
 %<*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}では横長の長方形状である.
+  \verb+jis.tfm+ に相当するJFMである.\texttt{jfm-ujis.lua} とこの
+  \texttt{jfm-jis.lua} の主な違いは,\texttt{jfm-ujis.lua} ではほとんどの文字が
+  正方形状であるのに対し,\texttt{jfm-jis.lua} では横長の長方形状であることと,
+  \texttt{jfm-ujis.lua} では「?」「!」の直後に半角空白が挿入されることである.
 %</ja>
 %<*en>
 \item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
-  of the default Japanese font metric shipped with \pTeX. There
-  are notable difference between this JFM and other 2~JFMs, as
-  shown in Table~\ref{tab-difjfm}.
+  of the default Japanese font metric shipped with \pTeX. 
 %</en>
-%<*ja>
+%<*ja> 
 \item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM
-  である \verb+min10.tfm+ に相当するJFMである.このJFMと他の2つのJFMの間には
-  表\ref{tab-difjfm}に示すような特筆すべき違いがある.
+  である \verb+min10.tfm+ に相当する.
 %</ja>
 \end{description}
-
 %<*en>
-\item[jfmvar=<string>] Sometimes there is a need that \ldots.
+The difference among these three~JFMs is  shown in Table~\ref{tab-difjfm}.
 %</en>
 %<*ja>
-\item[jfmvar=<string>] 標準では,JFMとサイズが同じで,
-  実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
-下の例において,最初の「)」と「【」の実フォントは異なるが,
-JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
-
-しかし,時には……
-
+これら3つのJFMの違いは表\ref{tab-difjfm}に示した.
 %</ja>
+
+\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>
+\item[jfmvar=<string>] Sometimes there is a need that \ldots.
+%</en>
+%<*ja>
+\item[jfmvar=<string>] 標準では,JFMとサイズが同じで,
+  実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
+図\ref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが,
+JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
+
+しかし,JFMとサイズが同じであっても,\texttt{jfmvar} キーの異なる
+2つの和文フォント,例えば図\ref{fig:jfmvar}で言う \verb+\F+ と \verb+\H+,
+は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て,
+かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば,
+\pTeX と似た状況で組版されることになる.
+%</ja>
 \end{list}
 
 \begin{figure}
@@ -2623,7 +2666,7 @@ because of the compatibility with previous versions of \LuaTeX-ja.
 図\ref{fig:kern-jfm}を参照.
 \begin{itemize}
  \item \emph{\texttt{\textbackslash jfont} や,
-NFSS2用の命令(\ref{ssub-chgfnt}節,\ref{ssub-nfsspat}節)における指定では
+NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では
 カーニング情報は標準で使用する}ことになっているようである.
 言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
 \begin{verbatim}
@@ -3050,8 +3093,8 @@ Furthermore, the glyph is shifted according to values of fields
 \medskip
 
 \caption{%
-%<en>The position of the real glyph.
-%<ja>「実際の」グリフの位置
+%<en>The position of the real glyph
+%<ja>「実際の」グリフの位置
 }
 \label{fig-pos}
 \end{figure}
@@ -3357,6 +3400,7 @@ you can set both \verb+\fam+ and \verb+\jfam+ to the same value.
 %<en>\caption{Commands for Japanese math fonts}
 %<ja>\caption{和文数式フォントに対する命令}
 \label{tab-math}
+%<en>\medskip
 \centering
 \def\{{\char`\{}\def\}{\char`\}}\small
 \begin{tabular}{ll}
@@ -4250,30 +4294,19 @@ are typeset by \verb+\piyo+.
 
 %<en>\subsection{Patch for NFSS2}
 %<ja>\subsection{NFSS2へのパッチ}
-\label{ssub-nfsspat}
+\label{ssec-nfsspat}
 
 \begin{figure}[!tb]
-\begin{lstlisting}[numberstyle=\tiny, numbers=left, numbersep=1em]
-\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n}    {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
-\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=007F00}{}
-\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=0000FF}{}
-\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}}
-\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF}
-{\kanjifamily{edm}\selectfont
-日本国民は、正当に選挙された国会における代表者を通じて行動し、……}
-\end{lstlisting}
-\begin{quote}
+\begin{LTXexample}[pos=b]
 \DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n}    {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
-\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=007F00}{}
-\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=0000FF}{}
+\DeclareFontShape{JY3}{edm}{m}{n}    {<-> s*KozMinPr6N-Regular:jfm=ujis;}{}
+\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;color=007F00}{}
+\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;color=0000FF}{}
 \DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}}
 \DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF}
-
 {\kanjifamily{edm}\selectfont
 日本国民は、正当に選挙された国会における代表者を通じて行動し、……}
-\end{quote}
+\end{LTXexample}
 %<ja>\caption{\texttt{\textbackslash DeclareAlternateKanjiFont} の使用例}
 %<en>\caption{An example of \texttt{\textbackslash DeclareAlternateKanjiFont}}
 \label{fig:altkanji}
@@ -4283,13 +4316,13 @@ are typeset by \verb+\piyo+.
 Japanese patch for NFSS2 in \LuaTeX-ja
 is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe.
 We will describe
-commands which are not described in Subsection~\ref{ssub-chgfnt}.
+commands which are not described in Subsection~\ref{ssec-chgfnt}.
 %</en>
 %<*ja>
 \LuaTeX-jaのNFSS2への日本語パッチは
 \pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに,
 和文エンコーディングの管理等をLuaで書きなおしたものである.
-ここでは\ref{ssub-chgfnt}節で述べていなかった命令について
+ここでは\ref{ssec-chgfnt}節で述べていなかった命令について
 記述しておく.
 %</ja>
 
@@ -4527,7 +4560,7 @@ In this case, the default family for font substitution is used for
 \item[DeclareAlternateKanjiFont\{<base-encoding>\}\{<base-family>\}\{<base-series>\}\{<base-shape>\}\\
   \null\hfill\{<alt-encoding>\}\{<alt-family>\}\{<alt-series>\}\{<alt-shape>\}\{<range>\}]
 %<*ja>
-\ref{ssec-altfont}節の
+\ref{ssec-altfont}節の\
 \verb+\ltjdeclarealtfont+ と同様に,前半の4引数の和文フォント(基底フォント)のうち<range>中の文字を
 第5--第8引数の和文フォントを使って組むように指示する.使用例を図\ref{fig:altkanji}に載せた.
 
@@ -4605,6 +4638,7 @@ by \verb+\input+.
 \verb+\input+ で読み込み可能である.
 %</ja>
 \subsection{\texttt{luatexja-fontspec.sty}}
+\label{ssec-fontspec2}
 %<*en>
 As described in Subsection~\ref{ssec-fontspec}, this optional package
 provides the counterparts for several commands defined in the
@@ -4651,6 +4685,50 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}.
 これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが
 できる.\ref{ssec-psft}節を参照.
 %</ja>
+
+
+\begin{figure}[!tb]
+\begin{LTXexample}[width=0.35\textwidth]
+\jfontspec[
+  AltFontFeatures={ Color=00003F, CharacterWidth=Half }, 
+  AltFont = KozMinPr6N-Regular.otf, 
+  AltFontRange={ "3000-"30FF },
+]{KozGoPr6N-Regular.otf}
+  あいうえお医学アイウエオ医学\par
+\addjfontfeatures{ AltFontFeatures={ Color=0000FF } }     
+  あいうえお医学アイウエオ医学\par
+\addjfontfeatures{JFM=prop,CharacterWidth=Proportional }
+  あいうえお医学アイウエオ医学
+\end{LTXexample}
+%<ja>\caption{\texttt{AltFont}, \texttt{AltFontRange}, \texttt{AltFontFeatures} の使用例}
+%<en>\caption{An example of \texttt{AltFont}, \texttt{AltFontRange}~and~\texttt{AltFontFeatures}}
+\label{fig:altkanji-fontspec}
+\end{figure}
+
+\item[AltFont=<font\ name>]
+\item[AltFontFeatures=\{<features>\}]
+\item[AltFontRange=<range>]\ 
+
+%<*en>
+As \verb+\ltjdeclarealtfont+~(Subsection~\ref{ssec-altfont}) and
+\verb+\DeclareAlternateKanjiFont+~(Subsection~\ref{ssec-nfsspat}),
+these three keys make that characters in <range> of the Japanese font
+are typeset by a different font and/or using different features.
+%</en>
+%<*ja>
+\ref{ssec-altfont}節の \verb+\ltjdeclarealtfont+ や,
+\ref{ssec-nfsspat}節の \verb+\DeclareAlternateKanjiFont+ のように,
+これらのキーを用いると<range>内の文字は異なったフォントやfont featureを使って組まれる.
+\texttt{AltFont} と \texttt{AltFontFeatures} はどちらか片方指定指定してあればよい.
+
+また,図\ref{fig:altkanji-fontspec}に示すように,
+\begin{itemize}
+ \item \texttt{AltFontFeatures} の指定は\emph{累積しない}.
+ \item \texttt{AltFontFeatures} が指定されたフォントを使用中に,
+\verb+\addjfontfeatures+ で追加の属性を指定した場合は,\verb+\addjfontfeatures+ の指定が
+優先適用となる.
+\end{itemize}
+%</ja>
 \end{list}
 
 %<*ja>
@@ -4659,7 +4737,6 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}.
 %</ja>
 
 
-
 \subsection{\texttt{luatexja-otf.sty}}
 \label{ssec-ltjotf}
 %<*en>
@@ -5053,15 +5130,15 @@ assigned to this attribute:
 \begin{description}
 \item[\textit{italic} (1)]
 %<*en>
-Glues from an italic correction
-          (\verb+\/+). This distinction of origins of glues
-          (from explicit \verb+\kern+, or from \verb+\/+)
-          is needed in the insertion process of \Param{\hyperlink{fld:xks}{xkanjiskip}}.
+Kerns from italic correction (\verb+\/+), or from kerning information of a Japanese font.
+These kerns are ``ignored'' in the insertion process of \textbf{JAglue},
+unlike explicit \verb+\kern+.
 %</en>
 %<*ja>
-イタリック補正(\verb+\/+)によるグルー.このグルーの由来の区別(\verb+\kern+ か
-\hskip\ltjgetparameter{xkanjiskip}
-\verb+\/+ か)は\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入過程において必要になる.
+イタリック補正(\verb+\/+)によるカーン,
+または \Pkg{luaotfload} によって挿入されたフォントのカーニング情報由来のカーン.
+これらのカーンは通常の \verb+\kern+ とは異なり,
+\textbf{JAglue}の挿入処理においては透過する.
 %</ja>
 
 \item[\textit{packed} (2)]
@@ -6226,6 +6303,7 @@ $a$は禁則処理用に\textit{Nq}と\textit{Np}の間に加えられるべき
 %<en>\caption{Summary of JFM glues}
 %<ja>\caption{JFM グルーの概要}
 \label{tab-jfmglue}
+%<en>\medskip
 \begin{center}
 \small
 \begin{tabular}{c|cccccc}
@@ -6582,7 +6660,7 @@ instead of ``\verb+\ほげ+''.
 しかし,\Pkg{lltjp-listings} が実際にロードされるのは \verb+\begin{document}+\ 
 のところであるので,プリアンブル内ではこれらの追加キーは使用できない.
 
-\texttt{ivsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
+\texttt{vsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
 \begin{itemize}
  \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
 もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は,
@@ -6614,7 +6692,9 @@ instead of ``\verb+\ほげ+''.
 }}}
 \lstset{vscmd=\IVSB}
 \end{lstlisting}
-\end{itemize} 
+\end{itemize}
+既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\ 
+とすれば良い.
 %</ja>
 
 %<en>\subsection{Class of Characters}
@@ -6915,7 +6995,7 @@ JFM中にある文字クラス$n$の定義の
 %</ja>
 
 %<*ja>
-\section{IVS対応(未完)}
+\section{IVS対応}
 \verb+luatexja.otf.enable_ivs()+ を実行し,IVS対応を有効にした状態では,
 \verb+pre_linebreak_filter+ や \verb+hpack_filter+ コールバックには
 次の4つが順に実行される状態となっている:
@@ -6959,6 +7039,7 @@ OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されて
 %%% to_table を使わなくしたことで,メモリ使用量は減った
 IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
 
+
 \section{複数フォントの「合成」(未完)}
 
 \section{\LuaTeX-jaにおけるキャッシュ}
index 39f4eba..f351ce8 100644 (file)
@@ -3,11 +3,41 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec}[2014/01/23 fontspec support of LuaTeX-ja]
-
-\RequirePackage{fontspec,luatexja}
+\ProvidesPackage{luatexja-fontspec}[2014/03/25 fontspec support of LuaTeX-ja]
+\RequirePackage{l3keys2e,luatexja}
 \ExplSyntaxOn
 
+\bool_new:N \ltj_fontspec_match
+\cs_set:Nn  \ltj_fontspec_pass_opts: {}
+\keys_define:nn { luatexja-fontspec }
+  {
+    match .bool_set:N = \ltj_fontspec_match,
+    match .default:n  = true,
+    pass .code:n = \cs_set:Nn \ltj_fontspec_pass_opts: {#1},
+  }
+\ProcessKeysOptions { luatexja-fontspec }
+\RequirePackage[\ltj_fontspec_pass_opts:]{fontspec}[2011/09/13]
+
+%%%%%%%% Change Japanese font family by \rmfamily or not
+\bool_if:NTF  \ltj_fontspec_match 
+{
+  \renewcommand\jttdefault{\gtdefault}
+  \DeclareRobustCommand\rmfamily
+  {\not@math@alphabet\rmfamily\mathrm
+     \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
+  \DeclareRobustCommand\sffamily
+  {\not@math@alphabet\sffamily\mathsf
+     \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
+  \DeclareRobustCommand\ttfamily
+  {\not@math@alphabet\ttfamily\mathtt
+     \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
+  \DeclareDocumentCommand \setmonojfont { O{} m } {
+    \ltj_fontspec_set_family:Nnn \jttdefault {#1}{#2}
+    \normalfont
+  }
+}{
+}
+
 %%%%%%%% Messages
 \cs_new:Npn \ltj_fontspec_warning:n   { \msg_warning:nn   {ltj-fontspec} }
 
 
 \cs_generate_variant:Nn \prg_new_conditional:Nnn {Nnx}
 
-%%%%%%%% For compatibility with old fontspec.
-\prg_new_conditional:Nnx \ltj_fontspec_if_liiikeys: {TF,F} {
-  \@ifpackagelater {fontspec} {2011/09/13}
-  { \exp_not:N \prg_return_true: }  % fontspec >= 2.2 (l3keys)
-  { \exp_not:N \prg_return_false: } % fontspec <  2.2 (xkeyval)
-}
-
 %%%%%%%% \g_ltj_fontspec_scale_fp
 %% Default scale value for jfont.
 \group_begin:
 %%%%%%%% Internal control sequences
 %% Each CS is ltj_fontspec version that corresponds to original CS of fontspec.
 \cs_new:Nn \ltj_fontspec_define_option:nn {
-  \ltj_fontspec_if_liiikeys:TF {
-    \keys_define:nn {fontspec} { #1 .code:n = {#2}}
-  } {
-    \define@key[zf]{options}{#1}{#2}
-  }
+  \keys_define:nn {fontspec} { #1 .code:n = {#2}}
 }
 
 \cs_new:Nn \ltj_fontspec_define_preparse_external:nn {
-  \ltj_fontspec_if_liiikeys:TF {
-    \keys_define:nn {fontspec-preparse-external} { #1 .code:n = {#2}}
-  } {
-    \define@key[zf]{preparse-external}{#1}{#2}
-  }
+  \keys_define:nn {fontspec-preparse-external} { #1 .code:n = {#2}}
 }
 
+%% Alternate Fonts
+\bool_new:N \l_fontspec_alt_bool
+\tl_clear:N \ltj_fontspec_fontname_alt_tl
+\tl_clear:N \ltj_fontspec_fontfeat_alt_clist
+\tl_clear:N \ltj_fontspec_altrange_clist
+
+\cs_new:Nn \__ltj_fontspec_altfontrange_key_code:n
+ {
+  \bool_if:NF \l_fontspec_firsttime_bool
+   {
+    \tl_set:Nn \ltj_fontspec_altrange_clist {#1}
+   }
+ }
+\cs_new:Nn \__ltj_fontspec_altfontfeature_key_code:n
+ {
+  \fontspec_update_fontid:n {altfeat:#1}
+  \bool_if:NF \l_fontspec_firsttime_bool
+   {
+     \tl_if_empty:nTF {#1}
+      { \bool_set_false:N \ltj_fontspec_alt_bool }
+      { \bool_set_true:N \ltj_fontspec_alt_bool  }
+     \tl_set:Nn \ltj_fontspec_fontfeat_alt_clist {, #1}
+   }
+ }
+\cs_new:Nn \__ltj_fontspec_altfont_key_code:n
+ {
+  \tl_if_empty:nF {#1}
+   {
+    \fontspec_complete_fontname:Nn \ltj_fontspec_fontname_alt_tl {#1}
+    \fontspec_update_fontid:n {alt:#1}
+   }
+ }
+
 \cs_new:Nn \ltj_fontspec_select:nn {
   \group_begin:
+  \bool_set_false:N \ltj_fontspec_alt_bool
+  \ltj_fontspec_define_option:nn {AltFont} {
+    \__ltj_fontspec_altfont_key_code:n { ##1 }
+  }
+  \ltj_fontspec_define_option:nn {AltFontFeatures} {
+    \__ltj_fontspec_altfontfeature_key_code:n { ##1 }
+  }
+  \ltj_fontspec_define_option:nn {AltFontRange} {
+    \__ltj_fontspec_altfontrange_key_code:n { ##1 }
+  }
   \ltj_fontspec_define_option:nn {CID} {
     \fontspec_update_fontid:n  {+cid=##1}
     \fontspec_update_featstr:n {cid=##1}
     \fontspec_update_fontid:n  {-kern}
     \fontspec_update_featstr:n {-kern}
   }
-  \ltj_fontspec_if_liiikeys:TF {
-    \tl_set:Nn \g_fontspec_encoding_tl {JY3}
-  } {
-    \tl_set:Nn \zf@enc {JY3}
-  }
+  \tl_set:Nn \g_fontspec_encoding_tl {JY3}
   \tl_set:Nx \g_fontspec_default_fontopts_tl
-             {JFM=ujis,Scale=\fp_use:N \g_ltj_fontspec_scale_fp,Kerning=Off,\g_ltj_fontspec_default_fontopts_tl}
+             {JFM=ujis, Scale=\fp_use:N \g_ltj_fontspec_scale_fp,
+              Kerning=Off, \g_ltj_fontspec_default_fontopts_tl}
   \prop_set_eq:NN \g__fontspec_fontopts_prop \g__ltj_fontspec_fontopts_prop
+  \cs_set_eq:NN \fontspec_make_font_shapes:nnnn \ltj_fontspec_make_font_shapes:nnnn
   \cs_set_eq:NN \DeclareFontFamily \DeclareKanjiFamily
   \fontspec_select:nn{#1}{#2}
   \group_end:
-  \ltj_fontspec_if_liiikeys:F {
-    \tl_set_eq:NN \l_fontspec_family_tl \zf@family
-  }
 }
 
 \cs_new:Nn \ltj_fontspec_set_family:Nnn {
   \ltj_fontspec_select:nn{#2}{#3}
   \tl_set_eq:NN #1 \l_fontspec_family_tl
 }
+\cs_set_eq:NN \ltj_orig_fontspec_make_font_shapes:nnnn \fontspec_make_font_shapes:nnnn
+\cs_set_eq:NN \ltj_fontspec_orig_DeclareFontShape \DeclareFontShape
+\def \ltj_fontspec_dummy_DeclareFontShape #1#2#3#4#5#6 {}
+\cs_new:Nn \ltj_fontspec_make_font_shapes:nnnn {
+  \ltj_orig_fontspec_make_font_shapes:nnnn {#1} {#2} {#3} {#4}
+  \group_begin:
+    %% Parse font features. However, we have to avoid redefine already defined shape.
+    \__fontspec_load_fontname:n {#1}
+    \cs_set_eq:NN \DeclareFontShape \ltj_fontspec_dummy_DeclareFontShape
+    \fontspec_declare_shape:nnn {#2}{#3}
+     { \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,} #4 }
+    \cs_set_eq:NN \DeclareFontShape \ltj_fontspec_orig_DeclareFontShape
+    \tl_if_empty:NTF \ltj_fontspec_fontname_alt_tl
+     {
+      \bool_if:NT \ltj_fontspec_alt_bool
+       {
+         \fontspec_declare_shape:nnn {#2} { #3 _alt }
+          {
+            \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,}
+            #4 , \ltj_fontspec_fontfeat_alt_clist
+          }
+          \DeclareAlternateKanjiFont {JY3}{ \l_fontspec_family_tl }{#2}{#3}%
+            {JY3}{ \l_fontspec_family_tl }{#2}{ #3 _alt }{ \ltj_fontspec_altrange_clist }
+       }
+     }
+     {
+       \__fontspec_load_fontname:n {\ltj_fontspec_fontname_alt_tl}
+       \fontspec_declare_shape:nnn {#2} { #3 _alt }
+        {
+          \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,}
+          #4 , \ltj_fontspec_fontfeat_alt_clist
+        }
+        \DeclareAlternateKanjiFont {JY3}{ \l_fontspec_family_tl }{#2}{#3}%
+          {JY3}{ \l_fontspec_family_tl }{#2}{ #3 _alt }{ \ltj_fontspec_altrange_clist }
+     }
+  \group_end:
+ }
 
 %%%%%%%% User commands
 \DeclareDocumentCommand \jfontspec { O{} m } {
     \ifin@\edef\k@family{#1}\else%
       \directlua{luatexja.jfont.is_Nffam(\tmp@enc, \tmp@item)}%
       \ifin@\@notffamtrue\else%
-        \def\@temp##1+{\lowercase{\def\@@temp{##1#1.fd}}}\expandafter\@temp\f@encoding+%
-        \message{(I search kanjifont definition file: \@@temp)}%
-        \IfFileExists{\@@temp}{\@tempswztrue}{\@tempswzfalse}%
+        % filename of font definition file is always lowercase
+        \edef\@temp{\lowercase{\noexpand\IfFileExists{\f@encoding#1.fd}}}%
+        \message{(I search font definition file)}%
+        \@temp{\@tempswztrue}{\@tempswzfalse}%
         \if@tempswz
           \directlua{luatexja.jfont.add_ffam_list(\tmp@enc, \tmp@item)}%
          \edef\f@family{#1}%
index bf17237..d957a2d 100644 (file)
@@ -131,13 +131,13 @@ luatexja.jfont.define_jfm {
       align = 'left', left = 0.0, down = 0.0,
       width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-         [0] = {0, 0, 0},
+         [0] = { 0.5 , 0.0, 0.5, 0, 1 },
         [1] = { 0.5 , 0.0, 0.5, 0, 1 },
         [2] = {0, 0, 0},
-        [3] = { 0.25, 0.0, 0.25, 1, 1 },
+        [3] = { 0.75, 0.0, 0.25, 1, 1 },
         [4] = {0, 0, 0},
         [6] = {0, 0, 0},
-        [7] = {0, 0, 0},
+        [7] = { 0.5 , 0.0, 0.5, 0, 1 },
         [8] = {0, 0, 0},
         [9] = {0, 0, 0},
       },
index 518f152..52e48c3 100644 (file)
 %% \DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\renewcommand\jttdefault{\gtdefault}
 \DeclareRobustCommand\rmfamily
         {\not@math@alphabet\rmfamily\mathrm
          \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
          \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
 \DeclareRobustCommand\ttfamily
         {\not@math@alphabet\ttfamily\mathtt
-         \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+         \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
 %%
 \AtBeginDocument{%
   \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
index 9910bae..2cbdc98 100644 (file)
 %% \DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\renewcommand\jttdefault{\gtdefault}
 \DeclareRobustCommand\rmfamily
         {\not@math@alphabet\rmfamily\mathrm
          \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
          \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
 \DeclareRobustCommand\ttfamily
         {\not@math@alphabet\ttfamily\mathtt
-         \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+         \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
 %%
 \AtBeginDocument{%
   \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
index f8acc83..b436bed 100644 (file)
 %   これがあると |grfext.sty| を読み込んだ際にエラーを引き起こすので削除しました。
 % \end{itemize}
 %
-% [2014-02-07] jsclasses 2014-02-07 ベースにしました.
+% [2014-02-07 LTJ] jsclasses 2014-02-07 ベースにしました.
 %
 % \StopEventually{}
 %
 % 和文でイタリック体,斜体,サンセリフ体,
 % タイプライタ体の代わりにゴシック体を使うことにします。
 %
+% [2014-03-25 LTJ] タイプライタ体に合わせるファミリを |\jttdefault| とし,
+% 通常のゴシック体と別にできるようにしました.|\jttdefault| は,標準で
+% |\gtdefault| と定義しています.
+%
 % [2003-03-16] イタリック体,斜体について,和文でゴシックを当てていましたが,
 % 数学の定理環境などで多量のイタリック体を使うことがあり,ゴシックに
 % すると黒々となってしまうという弊害がありました。
 %% \DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\renewcommand\jttdefault{\gtdefault}
 \DeclareRobustCommand\rmfamily
         {\not@math@alphabet\rmfamily\mathrm
          \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
          \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
 \DeclareRobustCommand\ttfamily
         {\not@math@alphabet\ttfamily\mathtt
-         \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+         \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
 %    \end{macrocode}
 %%
 % Lua\TeX-jaでは和文組版に伴うグルーはノードベースで挿入するようになり,また
 % はトンボの内側に |1in| のスペース(|1truein| ではなく)を挿入するので,
 % 場合分けしています。
 %
-% [2011-10-03] Lua\TeX{} (pdf\TeX?) では |1truein| ではなく
+% [2011-10-03 LTJ] Lua\TeX{} (pdf\TeX?) では |1truein| ではなく
 % |1in| になるようです。
 %
 %    \begin{macrocode}
 % [2003-06-26] |\headheight| を |\topskip| に直しました。
 % 以前はこの二つは値が同じであったので,変化はないはずです。
 %
-% [2011-10-03] ここも |\oddsidemargin| のときと同様に |-\inv@mag in| ではなく
+% [2011-10-03 LTJ] ここも |\oddsidemargin| のときと同様に |-\inv@mag in| ではなく
 % |-1in| にします。
 %
 %    \begin{macrocode}
 % 二つ挿入した |\everyparhook| のうち後者が |\paragraph| 類の後で2回実行され,
 % それ以降は前者が実行されます。
 %
-% [2011-10-05] Lua\TeX-jaでは |\everyparhook| は不要なので削除。
+% [2011-10-05 LTJ] Lua\TeX-jaでは |\everyparhook| は不要なので削除。
 %
 %    \begin{macrocode}
 \def\@xsect#1{%
 %
 % 段落頭のかぎかっこなどを見かけ1字半下げから全角1字下げに直します。
 %
-% [2012-04-24] LuaTeX-jaではJFMに段落開始時の括弧類の字下げ幅をコントロール
+% [2012-04-24 LTJ] LuaTeX-jaではJFMに段落開始時の括弧類の字下げ幅をコントロール
 % する機能がありますが,|\item| 直後ではラベル用のボックスが段落先頭になる
 % ため,うまく働きませんでした.形を変えて復活させます.
 %
index c33b141..4aa492f 100644 (file)
 %% \DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\renewcommand\jttdefault{\gtdefault}
 \DeclareRobustCommand\rmfamily
         {\not@math@alphabet\rmfamily\mathrm
          \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
          \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
 \DeclareRobustCommand\ttfamily
         {\not@math@alphabet\ttfamily\mathtt
-         \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+         \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
 %%
 \AtBeginDocument{%
   \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
index 251d916..a13ca73 100644 (file)
 %% \DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\renewcommand\jttdefault{\gtdefault}
 \DeclareRobustCommand\rmfamily
         {\not@math@alphabet\rmfamily\mathrm
          \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
          \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
 \DeclareRobustCommand\ttfamily
         {\not@math@alphabet\ttfamily\mathtt
-         \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+         \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
 %%
 \AtBeginDocument{%
   \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
index 9d04afe..9cd7643 100644 (file)
@@ -17,6 +17,7 @@
 
 \newcommand\mcdefault{mc}
 \newcommand\gtdefault{gt}
+\newcommand\jttdefault{\gtdefault}
 \newcommand\kanjiencodingdefault{JY3}
 \newcommand\kanjifamilydefault{\mcdefault}
 \newcommand\kanjiseriesdefault{\mddefault}
@@ -30,7 +31,6 @@
 \DeclareFontShape{JY3}{mc}{bx}{n}{<-> ssub*gt/m/n}{}
 \DeclareFontShape{JY3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
 
-%fontencoding{JT3}\selectfont
 \kanjiencoding{JY3}\selectfont\adjustbaseline
 
 \DeclareTextFontCommand{\textmc}{\mcfamily}
index a6e6625..5839110 100644 (file)
      \ifin@\edef\k@family{#1}\else%
        \directlua{luatexja.jfont.is_Nkfam(\tmp@enc, \tmp@item)}%
        \ifin@\@notkfamtrue\else%
-         \def\@temp##1+{\lowercase{\def\@@temp{##1#1.fd}}}\expandafter\@temp\k@encoding+%
-         \message{(I search kanjifont definition file: \@@temp)}%
-         \IfFileExists{\@@temp}{\@tempswztrue}{\@tempswzfalse}%
+         % filename of font definition file is always lowercase
+         \edef\@temp{\lowercase{\noexpand\IfFileExists{\k@encoding#1.fd}}}%
+         \message{(I search kanjifont definition file)}%
+         \@temp{\@tempswztrue}{\@tempswzfalse}%
          \if@tempswz
            \directlua{luatexja.jfont.add_kfam_list(\tmp@enc, \tmp@item)}%
           \edef\k@family{#1}%
      \ifin@\edef\f@family{#1}\else
        \directlua{luatexja.jfont.is_Nffam(\tmp@enc, \tmp@item)}%
        \ifin@\@notffamtrue\else
-         \def\@temp##1+{\lowercase{\def\@@temp{##1#1.fd}}}\expandafter\@temp\f@encoding+%
-         \message{(I search font definition file: \@@temp)}%
-         \IfFileExists{\@@temp}{\@tempswztrue}{\@tempswzfalse}%
+         % filename of font definition file is always lowercase
+         \edef\@temp{\lowercase{\noexpand\IfFileExists{\f@encoding#1.fd}}}%
+         \message{(I search font definition file)}%
+         \@temp{\@tempswztrue}{\@tempswzfalse}%
          \if@tempswz
            \directlua{luatexja.jfont.add_ffam_list(\tmp@enc, \tmp@item)}%
           \edef\f@family{#1}%
 %%%% \DeclareAlternateKanjiFont<Benc><Bfam><Bser><Bshape><Aenc><Afam><Aser><Ashape><range>
 % いつも global
 \def\DeclareAlternateKanjiFont#1#2#3#4#5#6#7#8#9{%
-  {\def\ltj@temp@bfont{#1/#2/#3/#4}\def\ltj@temp@afont{#5/#6/#7/#8}%
-   \expandafter\ltj@@altfont@latex#9,,}\ignorespaces}
+  \edef\@temp{#9}%
+  \ifx\@temp\@empty\else
+    {\def\ltj@temp@bfont{#1/#2/#3/#4}\def\ltj@temp@afont{#5/#6/#7/#8}%
+     \expandafter\ltj@@altfont@latex#9,,}\ignorespaces
+  \fi}
 \def\ltj@@altfont@latex#1,{\def\ltj@temp{#1}%
   \ifx\ltj@temp\empty\let\@next=\relax\else
   \ltj@@altfont@latexA{#1}\let\@next=\ltj@@altfont@latex\fi\@next}
diff --git a/test/test20a-mfont-fontspec.pdf b/test/test20a-mfont-fontspec.pdf
new file mode 100644 (file)
index 0000000..37ca514
Binary files /dev/null and b/test/test20a-mfont-fontspec.pdf differ
diff --git a/test/test20a-mfont-fontspec.tex b/test/test20a-mfont-fontspec.tex
new file mode 100644 (file)
index 0000000..ecd0e3a
--- /dev/null
@@ -0,0 +1,40 @@
+%#!luajitlatex
+\documentclass{ltjsarticle}
+\usepackage{luatexja-fontspec,luatexja-otf}
+\setmainjfont[
+  AltFontFeatures={ Color=00003F, CharacterWidth=Half },
+  BoldFont = { KozMinPr6N-Bold.otf }, 
+  BoldFeatures = { AltFont={ KozGoPr6N-Bold.otf } }, 
+  AltFontRange = { "3000-"30FF }, 
+]{KozMinPr6N-Regular.otf}
+
+\setsansjfont{KozGoPr6N-Regular.otf}
+
+\long\def\test{%
+  あいうえお医学アイウエオ医学
+  \textbf{あいうえお医学アイウエオ医学}
+  \textgt{あいうえお医学アイウエオ医学}\par
+%
+  日本国民は、正当に選挙された国会における代表者を通じて行動し、
+  われらとわれらの子孫のために、諸国民との協和による成果と、
+  わが国全土にわたつて自由のもたらす恵沢を確保し、政府の行為によつて
+  再び戦争の惨禍が起ることのないやうにすることを決意し、
+  ここに主権が国民に存することを宣言し、この憲法を確定する。
+  そもそも国政は、国民の厳粛な信託によるものであつて、その権威は国民に由来し、
+  その権力は国民の代表者がこれを行使し、その福利は国民がこれを享受する。
+  これは人類普遍の原理であり、この憲法は、かかる原理に基くものである。
+  われらは、これに反する一切の憲法、法令及び詔勅を排除する。
+}
+\begin{document}
+
+\test
+
+\paragraph{addfontfeatures}\ \par
+\addjfontfeatures{
+  AltFontFeatures={ Color=0000FF }, AltFontRange= { "3040-"304F },
+  Color=001F00, CJKShape=Traditional
+}
+% AltFontFeature, AltFontRange は累積しない
+\test
+
+\end{document}
\ No newline at end of file