\item[adjustbaseline]
\ldots
-\item[fontfamily\{<fam>\}]
+\item[fontfamily\{<family>\}]
{\let\item\origitem
%<*en>
As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both})
%<*en>
\item Let current encoding scheme for Japanese fonts be
<ja-enc>. Current Japanese font family will be changed to
- <family>, if the family <fam> under the encoding <ja-enc> has been already defined by
- \verb+\DeclareKanijFamily+.
+ <family>, if one of the following two conditions is met:
%</en>
%<*ja>
\item 現在の和文フォントに対するエンコーディングが<ja-enc>であるとしよう.
- 現在の和文フォントファミリは,エンコーディング<ja-enc>におけるファミリ<fam>が
- 既に \verb+\DeclareKanjiFamily+ によって定義されているときに<family>に変更される.
-%</ja>
-%<*en>
-\item Let current encoding scheme for alphabetic fonts be
- <al-enc>. Current Alphabetic font family will be changed to
- <fam>, if one of the following two conditions is met
-%</en>
-%<*ja>
-\item 現在の欧文フォントに対するエンコーディングを<al-enc>とする.
- 現在の欧文フォントファミリは,以下の2つの条件のうちの1つが満たされているときに
- <fam>に変更される:
+ 現在の和文フォントファミリは,以下の2つの条件のうちの1つが満たされているときに
+ <family>に変更される:
%</ja>
\begin{itemize}
%<*en>
-\item The family <fam> under the encoding <al-enc> has been already defined by
- \verb+\DeclareFontFamily+.
+\item The family <fam> under the encoding <ja-enc> has been already defined by
+ \verb+\DeclareKanijFamily+.
%</en>
%<*ja>
-\item エンコーディング<al-enc>におけるファミリ<fam>が
- 既に \verb+\DeclareFontFamily+ によって定義されている.
+\item エンコーディング<ja-enc>におけるファミリ<fam>が既に \verb+\DeclareKanjiFamily+ によって定義されている.
%</ja>
%<*en>
-\item A font definition named \texttt{<al-enc><fam>.fd} exists.
+\item A font definition named \texttt{<enc><ja-enc>.fd} (the file name is
+ all lowercase) exists.
%</en>
%<*zh>
\item
%</zh>
%<*ja>
-\item フォント定義ファイル \texttt{<al-enc><fam>.fd} が存在する.
+\item フォント定義ファイル\texttt{<enc><ja-enc>.fd}(ファイル名は全て小文字)が存在する.
%</ja>
\end{itemize}
%<*en>
+\item Let current encoding scheme for alphabetic fonts be
+ <al-enc>. For alphabetic font family, the criterion as above is used.
+%</en>
+%<*ja>
+\item 現在の欧文フォントに対するエンコーディングを<al-enc>とする.
+ 欧文フォントファミリに対しても,上記の基準が用いられる.
+%</ja>
+%<*en>
\item There is a case which none of the above applies, that is, the font
family named <family> doesn't seem to be defined neither under the
encoding <ja-enc>, nor under <al-enc>.
In this case, the default family for font substitution is used for
alphabetic and Japanese fonts. Note that current encoding will not
- be set to <fam>, unlike the original implementation in \LaTeX.
+ be set to <family>, unlike the original implementation in \LaTeX.
%</en>
%<*ja>
\item 上記のいずれもが適用されない,つまり<family>が<ja-enc>と<al-enc>の
どちらでも定義されないような場合がある.
この場合,代替フォントに用いられるデフォルトのフォントファミリが欧文フォントと
和文フォントに用いられる.\LaTeX のオリジナルの実装とは異なり,
- 現在のエンコーディングは<fam>には設定されないことに注意する.
+ 現在のエンコーディングは<family>には設定されないことに注意する.
%</ja>
\end{itemize}
}
\end{cslist}
- \verb+\fontfamily+ によって和文フォントファミリを変更するかどうかの決定には,
- フォント定義ファイル \texttt{*.fd} が一切関わらないことに注意.
- これは「\Pkg{fontspec}パッケージの普及により,\texttt{*.fd} の使用は
- 徐々にされなくなっていくであろう」という勝手な予測に基づいている.
- また,\verb+\kanjifamily+ で和文フォントファミリを変更した場合でも,
- \verb+\selectfont+ によって\emph{実際に}変更が反映される際には
- 和文フォント定義ファイル \texttt{*.fd} は読み込まれない.
-%%%% OLD:
-%%%% 和文フォント用の \texttt{*.fd} をどうしても用いたい場合%
-%%%% \footnote{例えば,3ウェイト以上を1ファミリにまとめたい場合など.}には,
-%%%% \verb+\fontfamily+ の代わりに \verb+\kanjifamily+ を用いて
-%%%% 和文フォントファミリを切り替えれば良い.
-
%<*en>
As closing this subsection, we shall introduce an example of
\verb+\SetRelationFont+ and \verb+\userelfont+:
\newif\if@tempswz
\DeclareRobustCommand\romanfamily[1]{\edef\f@family{#1}}
\DeclareRobustCommand\kanjifamily[1]{\edef\k@family{#1}}
+% \notkfam@list@<enc>: list of non-defined kanji families under <enc>
+% \kfam@list@<enc>: list of kanji families under <enc>, defined in a .fd file
\DeclareRobustCommand\fontfamily[1]{%
\@notkfamfalse\@notffamfalse\edef\tmp@item{{#1}}%
\ifcsname \k@encoding+#1\endcsname % if \k@encoding+#1 is already defined
\edef\k@family{#1}%
- \else
- \@notkfamtrue
- % \ifcsname kfam@list@\k@encoding\endcsname\else
- % \expandafter\gdef\csname kfam@list@\k@encoding\endcsname{}%
- % \expandafter\gdef\csname notkfam@list@\k@encoding\endcsname{}%
- % \fi
- % \edef\@templist{\@nameuse{kfam@list@\k@encoding}}%
- % \expandafter\expandafter\expandafter\inlist@\expandafter\tmp@item\expandafter{\@templist}%
- % \ifin@\edef\k@family{#1}\else%
- % \edef\@templist{\@nameuse{notkfam@list@\k@encoding}}%
- % \expandafter\expandafter\expandafter\inlist@\expandafter\tmp@item\expandafter{\@templist}%
- % \ifin@\@notkfamtrue\else%
- % \def\@temp##1+{\lowercase{\def\@@temp{##1}}}\expandafter\@temp\k@encoding+%
- % \message{(I search kanjifont definition file: \@@temp#1.fd)}%
- % \IfFileExists{\@@temp#1.fd}{\@tempswztrue}{\@tempswzfalse}%
- % \if@tempswz
- % \expandafter\xdef\csname kfam@list@\k@encoding\endcsname
- % {\@nameuse{kfam@list@\k@encoding}\fam@elt<#1>}\edef\k@family{#1}%
- % \else
- % \expandafter\xdef\csname notkfam@list@\k@encoding\endcsname
- % {\@nameuse{notkfam@list@\k@encoding}\fam@elt<#1>}\@notkfamtrue%
- % \fi
- % \fi
- % \fi
+ \else % search font definition file...
+ \ifcsname kfam@list@\k@encoding\endcsname\else
+ \expandafter\gdef\csname kfam@list@\k@encoding\endcsname{}%
+ \expandafter\gdef\csname notkfam@list@\k@encoding\endcsname{}%
+ \fi
+ \edef\@templist{\@nameuse{kfam@list@\k@encoding}}%
+ \expandafter\expandafter\expandafter\inlist@\expandafter\tmp@item\expandafter{\@templist}%
+ \ifin@\edef\k@family{#1}\else%
+ \edef\@templist{\@nameuse{notkfam@list@\k@encoding}}%
+ \expandafter\expandafter\expandafter\inlist@\expandafter\tmp@item\expandafter{\@templist}%
+ \ifin@\@notkfamtrue\else%
+ \def\@temp##1+{\lowercase{\def\@@temp{##1}}}\expandafter\@temp\k@encoding+%
+ \message{(I search kanjifont definition file: \@@temp#1.fd)}%
+ \IfFileExists{\@@temp#1.fd}{\@tempswztrue}{\@tempswzfalse}%
+ \if@tempswz
+ \expandafter\xdef\csname kfam@list@\k@encoding\endcsname
+ {\@nameuse{kfam@list@\k@encoding}\fam@elt<#1>}\edef\k@family{#1}%
+ \else
+ \expandafter\xdef\csname notkfam@list@\k@encoding\endcsname
+ {\@nameuse{notkfam@list@\k@encoding}\fam@elt<#1>}\@notkfamtrue%
+ \fi
+ \fi
+ \fi
\fi
\ifcsname \f@encoding+#1\endcsname
\edef\f@family{#1}%
\edef\@templist{\@nameuse{notffam@list@\f@encoding}}%
\expandafter\expandafter\expandafter\inlist@\expandafter\tmp@item\expandafter{\@templist}%
\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}%
+ \def\@temp##1+{\lowercase{\def\@@temp{##1}}}\expandafter\@temp\f@encoding+%
+ \message{(I search font definition file: \@@temp#1.fd)}%
+ \IfFileExists{\@@temp#1.fd}{\@tempswztrue}{\@tempswzfalse}%
\if@tempswz
\expandafter\xdef\csname ffam@list@\f@encoding\endcsname
{\@nameuse{ffam@list@\f@encoding}\fam@elt<#1>}\edef\f@family{#1}%
\vbox{\hrule\@width.3em}}
%%%%%% LuaTeX-ja specific
-\def\try@load@fontshape{%
- \expandafter
- \ifx\csname \f@encoding+\f@family\endcsname\relax
- \edef\tmp@item{{\directlua{%
- tex.print(luatexbase.catcodetables["latex-package"], '\f@encoding')}%
- }}%
- \expandafter\expandafter\expandafter
- \inlist@\expandafter\tmp@item\expandafter{\kenc@list}%
-\ifin@
- \@font@warning{We don't search kanjifont definition
- \MessageBreak for \f@encoding/\f@family}%
-\else
- \@font@info{Try loading font information for
- \f@encoding+\f@family}%
- \global\expandafter\let
- \csname\f@encoding+\f@family\endcsname\@empty
- \nfss@catcodes
- \let\nfss@catcodes\relax
- \edef\reserved@a{%
- \lowercase{%
- \noexpand\InputIfFileExists{\f@encoding\f@family.fd}}}%
- \reserved@a\relax
- {\@input@{\f@encoding\f@family.fd}}%
-\fi
- \fi}
-
% #1 の展開結果から encoding 部分をとりだし,それが和文用かどうかの結果を \ifin@ に代入
\def\ltj@@IsFontJapanese#1{%
tex.print(luatexbase.catcodetables["latex-package"], '#1')}%
}}}
+
\let\extract@afont\extract@font
\def\pickup@jfont{%
\expandafter \ifx \font@name \relax
\let\extract@font\extract@afont
\fi
\let\getjfont\font@name}
+
\def\extract@jfont{%
\get@external@font
\expandafter\globaljfont\font@name\external@font\relax