otfl_fdr= luatexbase.remove_from_callback('define_font', 'luaotfload.define_font')
luatexbase.add_to_callback('define_font',luatexja.font_callback,"luatexja.font_callback", 1)
- local match, sp = string.match, tex.sp
- local function load_jfmonly(spec, dir)
- local spec, size = match(spec,'(.+)%s+at%s*([%.%w]*)')
+ local match, sp, scan_arg = string.match, tex.sp, token.scan_argument
+ local function load_jfmonly()
+ local spec, size = match(scan_arg(), '(.+)%s+at%s*([%.%w]*)')
+ local dir = scan_arg()
size = sp(size); extract_metric(spec)
jfm_dir = dir
local i = load_jfont_metric()
end
local kfam_list, Nkfam_list = {}, {}
- function luatexja.jfont.add_kfam(fam)
- kfam_list[fam]=true
+ function luatexja.jfont.add_kfam()
+ kfam_list[scan_arg()]=true
end
- function luatexja.jfont.search_kfam(fam, use_fd)
+ function luatexja.jfont.search_kfam()
+ local fam = scan_arg()
+ local use_fd = (scan_arg() =='true')
if kfam_list[fam] then
tex.sprint(cat_lp, '\\let\\ifin@\\iftrue '); return
elseif Nkfam_list[fam] then
end
end
local ffam_list, Nffam_list = {}, {}
- function luatexja.jfont.is_ffam(fam)
- tex.sprint(cat_lp, '\\let\\ifin@\\if' .. (ffam_list[fam] or 'false '))
+ function luatexja.jfont.is_ffam()
+ tex.sprint(cat_lp, '\\let\\ifin@\\if' .. (ffam_list[scan_arg()] or 'false '))
end
- function luatexja.jfont.add_ffam(fam)
- ffam_list[fam]='true '
+ function luatexja.jfont.add_ffam()
+ ffam_list[scan_arg()]='true '
end
function luatexja.jfont.search_ffam_declared()
local s = ''
end
tex.sprint(cat_lp, s)
end
- function luatexja.jfont.search_ffam_fd(fam)
+ function luatexja.jfont.search_ffam_fd()
+ local fam = scan_arg()
if Nffam_list[fam] then
tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return
else
-- ここから先は 新 \selectfont の内部でしか実行されない
do
+ local scan_arg = token.scan_argument
local alt_font_base, alt_font_base_num
local aftl_base
-- EXT
- function luatexja.jfont.does_alt_set(bbase)
- aftl_base = alt_font_table_latex[bbase]
+ function luatexja.jfont.does_alt_set()
+ aftl_base = alt_font_table_latex[scan_arg()]
tex.sprint(cat_lp, aftl_base and '\\@firstofone' or '\\@gobble')
end
-- EXT
\newluafunction\ltj@@is@kyenc@@inner
\newluafunction\ltj@@is@ktenc@@inner
\newluafunction\ltj@@is@kenc@@inner
+\newluafunction\ltj@@is@ffam@@inner
+\newluafunction\ltj@@add@ffam@@inner
+\newluafunction\ltj@@add@kfam@@inner
\directlua{%
local lf = lua.get_functions_table()
lf[\the\ltj@@add@fenc@@inner] = luatexja.jfont.add_fenc_list
lf[\the\ltj@@is@kyenc@@inner] = luatexja.jfont.is_kyenc
lf[\the\ltj@@is@ktenc@@inner] = luatexja.jfont.is_ktenc
lf[\the\ltj@@is@kenc@@inner] = luatexja.jfont.is_kenc
+ lf[\the\ltj@@is@ffam@@inner] = luatexja.jfont.is_ffam
+ lf[\the\ltj@@add@ffam@@inner] = luatexja.jfont.add_ffam
+ lf[\the\ltj@@add@kfam@@inner] = luatexja.jfont.add_kfam
}
\luadef\ltj@@add@fenc \ltj@@add@fenc@@inner
\luadef\ltj@@add@kyenc\ltj@@add@kyenc@@inner
\luadef\ltj@@is@kyenc \ltj@@is@kyenc@@inner
\luadef\ltj@@is@ktenc \ltj@@is@ktenc@@inner
\luadef\ltj@@is@kenc \ltj@@is@kenc@@inner
+\luadef\ltj@@is@ffam \ltj@@is@ffam@@inner
+\luadef\ltj@@add@ffam \ltj@@add@ffam@@inner
+\luadef\ltj@@add@kfam \ltj@@add@kfam@@inner
{\def\cdp@elt#1#2#3#4{\ltj@@add@fenc{#1}}\cdp@list}
\@empty
\else \reserved@a
\fi
- \directlua{luatexja.jfont.add_ffam('\luatexluaescapestring{#2}')}%
+ \ltj@@add@ffam{#2}%
}%
}
\def\DeclareKanjiFamily#1#2#3{%
\@empty
\else \reserved@a
\fi
- \directlua{luatexja.jfont.add_kfam('\luatexluaescapestring{#2}')}%
+ \ltj@@add@kfam{#2}%
}%
}
\def\DeclareKanjiSubstitution#1#2#3#4{%
\DeclareRobustCommand\kanjifamily[1]{\edef\k@family{#1}}
\DeclareRobustCommand\fontfamily[1]{%
\@notkfamfalse\@notffamfalse
- \edef\tmp@item{'\luatexluaescapestring{#1}'}%
%
- \directlua{luatexja.jfont.search_kfam(\tmp@item, \@ltj@use@fd)}%
+ \directlua{luatexja.jfont.search_kfam()}{#1}{\@ltj@use@fd}%
\ifin@\edef\k@family{#1}\else\@notkfamtrue\fi
%
% alphabetic fonts part
- \directlua{luatexja.jfont.is_ffam(\tmp@item)}%
+ \ltj@@is@ffam{#1}%
\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}%
+ \ltj@@add@ffam{#1}\edef\f@family{#1}%
\else
\@tempswafalse
- \def\cdp@elt##1{\ifcsname ##1+#1\endcsname\@tempswatrue\fi}%
- \directlua{luatexja.jfont.search_ffam_declared()}%
+ \def\cdp@elt##1{\ifcsname ##1+#1\endcsname%
+ \@tempswatrue\def\cdp@elt####1\relax{}%
+ \fi}%
+ \directlua{luatexja.jfont.search_ffam_declared()}\relax%
\if@tempswz
- \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}%
+ \ltj@@add@ffam{#1}\edef\f@family{#1}%
\else
% now we search Nffam_list and font definition files.
- \directlua{luatexja.jfont.search_ffam_fd(\tmp@item)}%
+ \directlua{luatexja.jfont.search_ffam_fd()}{#1}%
\ifin@\edef\f@family{#1}\else\@notffamtrue\fi
\fi
\fi
\expandafter\globaltfont\font@name\external@font\relax\font@name
\csname \f@encoding+\f@family\endcsname
\csname\curr@fontshape\endcsname}
+
+\newluafunction\ltj@@jfont@@jfmonly@@inner
+\directlua{%
+ local lf = lua.get_functions_table()
+ lf[\the\ltj@@jfont@@jfmonly@@inner] = luatexja.jfont.load_jfmonly
+}
+\luadef\ltj@@jfont@@jfmonly \ltj@@jfont@@jfmonly@@inner
\def\extract@jfont@onlyjfm{%
\get@external@font
\csxdef{ltj@@fontjfm/\expandafter\string\font@name}{%
- \directlua{%
- luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'yoko')
- }%
+ \ltj@@jfont@@jfmonly{\external@font}{yoko}%
}}
\def\extract@tfont@onlyjfm{%
\get@external@font
\csxdef{ltj@@fontjfm/\expandafter\string\font@name}{%
- \directlua{%
- luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'tate')
- }%
+ \ltj@@jfont@@jfmonly{\external@font}{tate}%
}}
\let\ltj@@al@do@subst@correction=\do@subst@correction
%%%% \ClearAlternateKanjiFont<Benc><Bfam><Bser><Bshape>
% いつも global
+\newluafunction\ltj@@does@alt@set@@inner
+\directlua{%
+ local lf = lua.get_functions_table()
+ lf[\the\ltj@@does@alt@set@@inner] = luatexja.jfont.does_alt_set
+}
+\def\ltj@@does@alt@set#1#2{\luafunction\ltj@@does@alt@set@@inner{#1}{#2}}
\def\ClearAlternateKanjiFont#1#2#3#4{%
\directlua{luatexja.jfont.clear_alt_font_latex('\luatexluaescapestring{#1/#2/#3/#4}')}}
\directlua{luatexja.jfont.pickup_alt_font_b(\the\ltj@tempcntc,'\luatexluaescapestring{#2}')}%
}
-\def\ltj@@does@alt@set#1#2{%
- \directlua{luatexja.jfont.does_alt_set'\luatexluaescapestring{#1}'}{#2}}
-
%%%% patch \@text@composite because of {y,t}albaselineshift
% %% \pltx@isletter from plfonts.dtx