リビジョン | cde2981db1536119901824da56b78766f122266d (tree) |
---|---|
日時 | 2020-04-19 09:10:18 |
作者 | Hironori Kitagawa <h_kitagawa2001@yaho...> |
コミッター | Hironori Kitagawa |
More use or token.scan_argument()
@@ -449,9 +449,10 @@ do | ||
449 | 449 | otfl_fdr= luatexbase.remove_from_callback('define_font', 'luaotfload.define_font') |
450 | 450 | luatexbase.add_to_callback('define_font',luatexja.font_callback,"luatexja.font_callback", 1) |
451 | 451 | |
452 | - local match, sp = string.match, tex.sp | |
453 | - local function load_jfmonly(spec, dir) | |
454 | - local spec, size = match(spec,'(.+)%s+at%s*([%.%w]*)') | |
452 | + local match, sp, scan_arg = string.match, tex.sp, token.scan_argument | |
453 | + local function load_jfmonly() | |
454 | + local spec, size = match(scan_arg(), '(.+)%s+at%s*([%.%w]*)') | |
455 | + local dir = scan_arg() | |
455 | 456 | size = sp(size); extract_metric(spec) |
456 | 457 | jfm_dir = dir |
457 | 458 | local i = load_jfont_metric() |
@@ -485,10 +486,12 @@ do | ||
485 | 486 | end |
486 | 487 | |
487 | 488 | local kfam_list, Nkfam_list = {}, {} |
488 | - function luatexja.jfont.add_kfam(fam) | |
489 | - kfam_list[fam]=true | |
489 | + function luatexja.jfont.add_kfam() | |
490 | + kfam_list[scan_arg()]=true | |
490 | 491 | end |
491 | - function luatexja.jfont.search_kfam(fam, use_fd) | |
492 | + function luatexja.jfont.search_kfam() | |
493 | + local fam = scan_arg() | |
494 | + local use_fd = (scan_arg() =='true') | |
492 | 495 | if kfam_list[fam] then |
493 | 496 | tex.sprint(cat_lp, '\\let\\ifin@\\iftrue '); return |
494 | 497 | elseif Nkfam_list[fam] then |
@@ -510,11 +513,11 @@ do | ||
510 | 513 | end |
511 | 514 | end |
512 | 515 | local ffam_list, Nffam_list = {}, {} |
513 | - function luatexja.jfont.is_ffam(fam) | |
514 | - tex.sprint(cat_lp, '\\let\\ifin@\\if' .. (ffam_list[fam] or 'false ')) | |
516 | + function luatexja.jfont.is_ffam() | |
517 | + tex.sprint(cat_lp, '\\let\\ifin@\\if' .. (ffam_list[scan_arg()] or 'false ')) | |
515 | 518 | end |
516 | - function luatexja.jfont.add_ffam(fam) | |
517 | - ffam_list[fam]='true ' | |
519 | + function luatexja.jfont.add_ffam() | |
520 | + ffam_list[scan_arg()]='true ' | |
518 | 521 | end |
519 | 522 | function luatexja.jfont.search_ffam_declared() |
520 | 523 | local s = '' |
@@ -523,7 +526,8 @@ do | ||
523 | 526 | end |
524 | 527 | tex.sprint(cat_lp, s) |
525 | 528 | end |
526 | - function luatexja.jfont.search_ffam_fd(fam) | |
529 | + function luatexja.jfont.search_ffam_fd() | |
530 | + local fam = scan_arg() | |
527 | 531 | if Nffam_list[fam] then |
528 | 532 | tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return |
529 | 533 | else |
@@ -645,11 +649,12 @@ end | ||
645 | 649 | |
646 | 650 | -- ここから先は 新 \selectfont の内部でしか実行されない |
647 | 651 | do |
652 | + local scan_arg = token.scan_argument | |
648 | 653 | local alt_font_base, alt_font_base_num |
649 | 654 | local aftl_base |
650 | 655 | -- EXT |
651 | - function luatexja.jfont.does_alt_set(bbase) | |
652 | - aftl_base = alt_font_table_latex[bbase] | |
656 | + function luatexja.jfont.does_alt_set() | |
657 | + aftl_base = alt_font_table_latex[scan_arg()] | |
653 | 658 | tex.sprint(cat_lp, aftl_base and '\\@firstofone' or '\\@gobble') |
654 | 659 | end |
655 | 660 | -- EXT |
@@ -91,6 +91,9 @@ | ||
91 | 91 | \newluafunction\ltj@@is@kyenc@@inner |
92 | 92 | \newluafunction\ltj@@is@ktenc@@inner |
93 | 93 | \newluafunction\ltj@@is@kenc@@inner |
94 | +\newluafunction\ltj@@is@ffam@@inner | |
95 | +\newluafunction\ltj@@add@ffam@@inner | |
96 | +\newluafunction\ltj@@add@kfam@@inner | |
94 | 97 | \directlua{% |
95 | 98 | local lf = lua.get_functions_table() |
96 | 99 | lf[\the\ltj@@add@fenc@@inner] = luatexja.jfont.add_fenc_list |
@@ -99,6 +102,9 @@ | ||
99 | 102 | lf[\the\ltj@@is@kyenc@@inner] = luatexja.jfont.is_kyenc |
100 | 103 | lf[\the\ltj@@is@ktenc@@inner] = luatexja.jfont.is_ktenc |
101 | 104 | lf[\the\ltj@@is@kenc@@inner] = luatexja.jfont.is_kenc |
105 | + lf[\the\ltj@@is@ffam@@inner] = luatexja.jfont.is_ffam | |
106 | + lf[\the\ltj@@add@ffam@@inner] = luatexja.jfont.add_ffam | |
107 | + lf[\the\ltj@@add@kfam@@inner] = luatexja.jfont.add_kfam | |
102 | 108 | } |
103 | 109 | \luadef\ltj@@add@fenc \ltj@@add@fenc@@inner |
104 | 110 | \luadef\ltj@@add@kyenc\ltj@@add@kyenc@@inner |
@@ -106,6 +112,9 @@ | ||
106 | 112 | \luadef\ltj@@is@kyenc \ltj@@is@kyenc@@inner |
107 | 113 | \luadef\ltj@@is@ktenc \ltj@@is@ktenc@@inner |
108 | 114 | \luadef\ltj@@is@kenc \ltj@@is@kenc@@inner |
115 | +\luadef\ltj@@is@ffam \ltj@@is@ffam@@inner | |
116 | +\luadef\ltj@@add@ffam \ltj@@add@ffam@@inner | |
117 | +\luadef\ltj@@add@kfam \ltj@@add@kfam@@inner | |
109 | 118 | |
110 | 119 | {\def\cdp@elt#1#2#3#4{\ltj@@add@fenc{#1}}\cdp@list} |
111 | 120 |
@@ -210,7 +219,7 @@ | ||
210 | 219 | \@empty |
211 | 220 | \else \reserved@a |
212 | 221 | \fi |
213 | - \directlua{luatexja.jfont.add_ffam('\luatexluaescapestring{#2}')}% | |
222 | + \ltj@@add@ffam{#2}% | |
214 | 223 | }% |
215 | 224 | } |
216 | 225 | \def\DeclareKanjiFamily#1#2#3{% |
@@ -223,7 +232,7 @@ | ||
223 | 232 | \@empty |
224 | 233 | \else \reserved@a |
225 | 234 | \fi |
226 | - \directlua{luatexja.jfont.add_kfam('\luatexluaescapestring{#2}')}% | |
235 | + \ltj@@add@kfam{#2}% | |
227 | 236 | }% |
228 | 237 | } |
229 | 238 | \def\DeclareKanjiSubstitution#1#2#3#4{% |
@@ -578,27 +587,28 @@ | ||
578 | 587 | \DeclareRobustCommand\kanjifamily[1]{\edef\k@family{#1}} |
579 | 588 | \DeclareRobustCommand\fontfamily[1]{% |
580 | 589 | \@notkfamfalse\@notffamfalse |
581 | - \edef\tmp@item{'\luatexluaescapestring{#1}'}% | |
582 | 590 | % |
583 | - \directlua{luatexja.jfont.search_kfam(\tmp@item, \@ltj@use@fd)}% | |
591 | + \directlua{luatexja.jfont.search_kfam()}{#1}{\@ltj@use@fd}% | |
584 | 592 | \ifin@\edef\k@family{#1}\else\@notkfamtrue\fi |
585 | 593 | % |
586 | 594 | % alphabetic fonts part |
587 | - \directlua{luatexja.jfont.is_ffam(\tmp@item)}% | |
595 | + \ltj@@is@ffam{#1}% | |
588 | 596 | \ifin@\edef\f@family{#1}\else |
589 | 597 | % checking is_stored_ffam is not sufficient, |
590 | 598 | % since LuaTeX-ja doesn't know whats fonts are defined before LuaTeX-ja is loaded. |
591 | 599 | \ifcsname \f@encoding+#1\endcsname % easy case |
592 | - \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}% | |
600 | + \ltj@@add@ffam{#1}\edef\f@family{#1}% | |
593 | 601 | \else |
594 | 602 | \@tempswafalse |
595 | - \def\cdp@elt##1{\ifcsname ##1+#1\endcsname\@tempswatrue\fi}% | |
596 | - \directlua{luatexja.jfont.search_ffam_declared()}% | |
603 | + \def\cdp@elt##1{\ifcsname ##1+#1\endcsname% | |
604 | + \@tempswatrue\def\cdp@elt####1\relax{}% | |
605 | + \fi}% | |
606 | + \directlua{luatexja.jfont.search_ffam_declared()}\relax% | |
597 | 607 | \if@tempswz |
598 | - \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}% | |
608 | + \ltj@@add@ffam{#1}\edef\f@family{#1}% | |
599 | 609 | \else |
600 | 610 | % now we search Nffam_list and font definition files. |
601 | - \directlua{luatexja.jfont.search_ffam_fd(\tmp@item)}% | |
611 | + \directlua{luatexja.jfont.search_ffam_fd()}{#1}% | |
602 | 612 | \ifin@\edef\f@family{#1}\else\@notffamtrue\fi |
603 | 613 | \fi |
604 | 614 | \fi |
@@ -1026,19 +1036,22 @@ | ||
1026 | 1036 | \expandafter\globaltfont\font@name\external@font\relax\font@name |
1027 | 1037 | \csname \f@encoding+\f@family\endcsname |
1028 | 1038 | \csname\curr@fontshape\endcsname} |
1039 | + | |
1040 | +\newluafunction\ltj@@jfont@@jfmonly@@inner | |
1041 | +\directlua{% | |
1042 | + local lf = lua.get_functions_table() | |
1043 | + lf[\the\ltj@@jfont@@jfmonly@@inner] = luatexja.jfont.load_jfmonly | |
1044 | +} | |
1045 | +\luadef\ltj@@jfont@@jfmonly \ltj@@jfont@@jfmonly@@inner | |
1029 | 1046 | \def\extract@jfont@onlyjfm{% |
1030 | 1047 | \get@external@font |
1031 | 1048 | \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% |
1032 | - \directlua{% | |
1033 | - luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'yoko') | |
1034 | - }% | |
1049 | + \ltj@@jfont@@jfmonly{\external@font}{yoko}% | |
1035 | 1050 | }} |
1036 | 1051 | \def\extract@tfont@onlyjfm{% |
1037 | 1052 | \get@external@font |
1038 | 1053 | \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% |
1039 | - \directlua{% | |
1040 | - luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'tate') | |
1041 | - }% | |
1054 | + \ltj@@jfont@@jfmonly{\external@font}{tate}% | |
1042 | 1055 | }} |
1043 | 1056 | |
1044 | 1057 | \let\ltj@@al@do@subst@correction=\do@subst@correction |
@@ -1129,6 +1142,12 @@ | ||
1129 | 1142 | |
1130 | 1143 | %%%% \ClearAlternateKanjiFont<Benc><Bfam><Bser><Bshape> |
1131 | 1144 | % いつも global |
1145 | +\newluafunction\ltj@@does@alt@set@@inner | |
1146 | +\directlua{% | |
1147 | + local lf = lua.get_functions_table() | |
1148 | + lf[\the\ltj@@does@alt@set@@inner] = luatexja.jfont.does_alt_set | |
1149 | +} | |
1150 | +\def\ltj@@does@alt@set#1#2{\luafunction\ltj@@does@alt@set@@inner{#1}{#2}} | |
1132 | 1151 | \def\ClearAlternateKanjiFont#1#2#3#4{% |
1133 | 1152 | \directlua{luatexja.jfont.clear_alt_font_latex('\luatexluaescapestring{#1/#2/#3/#4}')}} |
1134 | 1153 |
@@ -1143,9 +1162,6 @@ | ||
1143 | 1162 | \directlua{luatexja.jfont.pickup_alt_font_b(\the\ltj@tempcntc,'\luatexluaescapestring{#2}')}% |
1144 | 1163 | } |
1145 | 1164 | |
1146 | -\def\ltj@@does@alt@set#1#2{% | |
1147 | - \directlua{luatexja.jfont.does_alt_set'\luatexluaescapestring{#1}'}{#2}} | |
1148 | - | |
1149 | 1165 | %%%% patch \@text@composite because of {y,t}albaselineshift |
1150 | 1166 | |
1151 | 1167 | % %% \pltx@isletter from plfonts.dtx |