- \@notkfamfalse\@notffamfalse\edef\tmp@item{{#1}}%
- \ifcsname \k@encoding+#1\endcsname % if \k@encoding+#1 is already defined
- \edef\k@family{#1}%
- \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#1.fd}}}\expandafter\@temp\k@encoding+%
- \message{(I search kanjifont definition file: \@@temp)}%
- \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}%
- \else % search font definition file...
- \ifcsname ffam@list@\f@encoding\endcsname\else
- \expandafter\gdef\csname ffam@list@\f@encoding\endcsname{}%
- \expandafter\gdef\csname notffam@list@\f@encoding\endcsname{}%
- \fi
- \edef\@templist{\@nameuse{ffam@list@\f@encoding}}%
- \expandafter\expandafter\expandafter\inlist@\expandafter\tmp@item\expandafter{\@templist}%
- \ifin@\edef\f@family{#1}\else
- \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#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}%
- \else
- \expandafter\xdef\csname notffam@list@\f@encoding\endcsname
- {\@nameuse{notffam@list@\f@encoding}\fam@elt<#1>}\@notffamtrue%
- \fi
- \fi
- \fi
+ \@notkfamfalse\@notffamfalse
+ \edef\tmp@item{'\luatexluaescapestring{#1}'}%
+ %
+ \directlua{luatexja.jfont.search_kfam(\tmp@item, \@ltj@use@fd)}%
+ \ifin@\edef\k@family{#1}\else\@notkfamtrue\fi
+ %
+ % alphabetic fonts part
+ \directlua{luatexja.jfont.is_ffam(\tmp@item)}%
+ \ifin@\edef\f@family{#1}\else
+ % checking is_stored_ffam is not sufficient,
+ % since LuaTeX-ja doesn't know whats fonts are defined before LuaTeX-ja is loaded.
+ \ifcsname \f@encoding+#1\endcsname % easy case
+ \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}%
+ \else
+ \@tempswafalse
+ \def\cdp@elt##1{\ifcsname ##1+#1\endcsname\@tempswatrue\fi}%
+ \directlua{luatexja.jfont.search_ffam_declared()}%
+ \if@tempswz
+ \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}%
+ \else
+ % now we search Nffam_list and font definition files.
+ \directlua{luatexja.jfont.search_ffam_fd(\tmp@item)}%
+ \ifin@\edef\f@family{#1}\else\@notffamtrue\fi
+ \fi
+ \fi