From 4ea5d1154518b3ba3f5a5bc0290c1b5fda20060c Mon Sep 17 00:00:00 2001 From: Hironori Kitagawa Date: Wed, 16 Aug 2017 08:06:37 +0900 Subject: [PATCH] luatexja-preset.sty: now works again (only test with nfssonly option) --- src/addons/luatexja-preset.sty | 224 +++++++++++++++++------------------------ 1 file changed, 95 insertions(+), 129 deletions(-) diff --git a/src/addons/luatexja-preset.sty b/src/addons/luatexja-preset.sty index a9c3618..c3f58b4 100644 --- a/src/addons/luatexja-preset.sty +++ b/src/addons/luatexja-preset.sty @@ -37,7 +37,10 @@ match .code: n = \renewcommand\jttdefault{\gtdefault}\@ltj@match@familytrue \PassOptionsToPackage { match } { luatexja-fontspec }, - match .value_forbidden:n = true + match .value_forbidden:n = true, + __custom .bool_set:N = \l_ltjpreset_custom_bool, __custom .groups:n = { preset }, + __office .bool_set:N = \l_ltjpreset_office_bool, __office .groups:n = { preset }, + __noembed .bool_set:N = \l_ltjpreset_noembed_bool, __noembed .groups:n = { preset }, } \cs_new:Nn \ltjpreset_declare_option:nn { \keys_define:nn { luatexja-preset }{ @@ -46,26 +49,23 @@ } } \cs_new:Nn \ltjpreset_declare_preset:nn { - \keys_define:nn { ltjpreset-presets }{ - #1 .code:n = { #2 }, - #1 .value_forbidden:n = true, + \keys_define:nn { luatexja-preset }{ + #1 .meta:n = { #2 }, + #1 .value_forbidden:n = true, #1 .groups:n = { preset }, } } +\cs_generate_variant:Nn \ltjpreset_declare_preset:nn {nx} \cs_new:Nn \ltjpreset_declare_bool_option:nn { \bool_new:c { l_ltjpreset_#1_bool } \bool_set_false:c { l_ltjpreset_#1_bool } \keys_define:nn { luatexja-preset }{ #1 .bool_set:c = { l_ltjpreset_#1_bool }, #2 .bool_set_inverse:c = { l_ltjpreset_#1_bool }, - #1 .default:n = true, - #2 .default:n = true, + #1 .default:n = true, #2 .default:n = true, } } %%%%%%%% bool options -\bool_new:N \l_ltjpreset_office_bool % MS Office の HG 系フォントを使っているか -\bool_new:N \l_ltjpreset_noembed_bool % 非埋込か -\bool_new:N \l_ltjpreset_custom_bool \bool_new:N \l_ltjpreset_shape_nlck_bool \ltjpreset_declare_bool_option:nn { nfssonly }{ fontspec } \ltjpreset_declare_bool_option:nn { bold }{ nobold } @@ -87,20 +87,23 @@ % font preset \prop_new:N \l_ltjpreset_font_prop -\keys_define:nn { ltjpreset-fontlist } { +\keys_define:nn { luatexja-preset } { mc .code:n = - \prop_gput:Nnn \l_ltjpreset_font_prop { mc-l } {#1} - \prop_gput:Nnn \l_ltjpreset_font_prop { mc-m } {#1} - \prop_gput:Nnn \l_ltjpreset_font_prop { mc-bx } {#1}, + \prop_put:Nnn \l_ltjpreset_font_prop { mc-l } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { mc-m } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { mc-bx } {#1}, + mc .groups:n = { preset }, mc .value_required:n = true, gt .code:n = - \prop_gput:Nnn \l_ltjpreset_font_prop { gt-u } {#1} - \prop_gput:Nnn \l_ltjpreset_font_prop { gt-m } {#1} - \prop_gput:Nnn \l_ltjpreset_font_prop { gt-bx } {#1} - \prop_gput:Nnn \l_ltjpreset_font_prop { gt-eb } {#1}, + \prop_put:Nnn \l_ltjpreset_font_prop { gt-u } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { gt-m } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { gt-bx } {#1} + \prop_put:Nnn \l_ltjpreset_font_prop { gt-eb } {#1}, + gt .groups:n = { preset }, gt .value_required:n = true, } \cs_set:Nn \l_ltjpreset_tmp_cs:n { - \keys_define:nn { ltjpreset-fontlist } { - #1 .code:n = { \prop_gput:Non \l_ltjpreset_font_prop { #1 } { ##1 } } + \keys_define:nn { luatexja-preset } { + #1 .code:n = \prop_put:Non \l_ltjpreset_font_prop { #1 } { ##1 }, + #1 .groups:n = { preset }, #1 .value_required:n = true, } } \l_ltjpreset_tmp_cs:n { mc-l } @@ -114,36 +117,22 @@ \cs_undefine:N \l_ltjpreset_tmp_cs:n \cs_new:Nn \ltjpreset_set_uni:nn { - \group_begin: \keys_set:nn { ltjpreset-fontlist } { - mc = #1, gt = #2, mc-bx = #2, mg-m = #2, - } \group_end: - \bool_set_false:N \l_ltjpreset_custom_bool -} -\cs_new:Nn \ltjpreset_set_multi:n { - \keys_set_known:nnN { ltjpreset-presets } { #1 } \l_tmpa_tl - \keys_set_known:nn { ltjpreset-fontlist } { \l_tmpa_tl } - \prop_show:N \l_ltjpreset_font_prop - \bool_set_false:N \l_ltjpreset_custom_bool - \bool_set_false:N \l_ltjpreset_office_bool - \bool_set_false:N \l_ltjpreset_noembed_bool + mc = #1, gt = #2, mc-bx = #2, mg-m = #2, + __custom = false, __office = false, __noembed = false, } \cs_new:Npn \ltjpreset_set_office:nn #1 #2{ - \ltjpreset_set_multi:n { - mc-m = #1, mc-bx = HGMinchoE , - gt-m = HGGothicM , gt-bx = HGGothicE , - gt-u = #2 , gt-eb = HGSoeiKakugothicUB , - mg-m = HGMaruGothicMPRO - } - \bool_set_false:N \l_ltjpreset_custom_bool - \bool_set_true:N \l_ltjpreset_office_bool + mc = #1, mc-bx = HGMinchoE , + gt-m = HGGothicM , gt-bx = HGGothicE , + gt-u = #2 , gt-eb = HGSoeiKakugothicUB , + mg-m = HGMaruGothicMPRO, + __custom = false, __office = true, __noembed = false, } - %%%%%%%% プリセット達 % カスタム指定 \keys_define:nn { luatexja-preset }{ - custom .code:n = \ltjpreset_set_multi:n { #1 } \bool_set_true:N \l_ltjpreset_custom_bool, + custom .meta:n = { #1, __custom = true, }, custom .value_required:n = true, jfm_yoko .tl_set:N = \ltjpreset_use_jfm_yoko_tl, jfm_tate .tl_set:N = \ltjpreset_use_jfm_tate_tl, @@ -151,130 +140,116 @@ % 小塚 (Adobe) %% Pro -\ltjpreset_declare_preset:nn{kozuka-pro}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{kozuka-pro}{ mc-m = KozMinPro-Regular, mc-bx = KozMinPro-Bold, gt-m = KozGoPro-Regular, gt-bx = KozGoPro-Bold, gt-u = KozGoPro-Medium, gt-eb = KozGoPro-Heavy, mg-m = KozGoPro-Heavy, mc-l = KozMinPro-Light, - } + __custom = false, __office = false, __noembed = false, } %% Pr6 -\ltjpreset_declare_preset:nn{kozuka-pr6}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{kozuka-pr6}{ mc-m = KozMinProVI-Regular, mc-bx = KozMinProVI-Bold, gt-m = KozGoProVI-Regular, gt-bx = KozGoProVI-Bold, gt-u = KozGoProVI-Medium, gt-eb = KozGoProVI-Heavy, mg-m = KozGoProVI-Heavy, mc-l = KozMinProVI-Light, - } + __custom = false, __office = false, __noembed = false, } %% Pr6N -\ltjpreset_declare_preset:nn{kozuka-pr6n}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{kozuka-pr6n}{ mc-m = KozMinPr6N-Regular, mc-bx = KozMinPr6N-Bold, gt-m = KozGoPr6N-Regular, gt-bx = KozGoPr6N-Bold, gt-u = KozGoPr6N-Medium, gt-eb = KozGoPr6N-Heavy, mg-m = KozGoPr6N-Heavy, mc-l = KozMinPr6N-Light, - } + __custom = false, __office = false, __noembed = false, } % ヒラギノ (OSX) -\ltjpreset_declare_preset:nn{hiragino-pro}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{hiragino-pro}{ mc-m = HiraMinPro-W3, mc-bx = HiraMinPro-W6, gt-m = HiraKakuPro-W3, gt-bx = HiraKakuPro-W6, gt-u = HiraKakuPro-W6, gt-eb = HiraKakuStd-W8, mg-m = HiraMaruPro-W4, mc-l = HiraMinPro-W2, - } + __custom = false, __office = false, __noembed = false, } -\ltjpreset_declare_preset:nn{hiragino-pron}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{hiragino-pron}{ mc-m = HiraMinProN-W3, mc-bx = HiraMinProN-W6, gt-m = HiraKakuProN-W3, gt-bx = HiraKakuProN-W6, gt-u = HiraKakuProN-W6, gt-eb = HiraKakuStdN-W8, mg-m = HiraMaruProN-W4, mc-l = HiraMinProN-W2, - } + __custom = false, __office = false, __noembed = false, } % モリサワ -\ltjpreset_declare_preset:nn{morisawa-pro}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{morisawa-pro}{ mc = A-OTF-RyuminPro-Light.otf, mc-bx = A-OTF-FutoMinA101Pro-Bold.otf, gt-m = A-OTF-GothicBBBPro-Medium.otf , gt-bx = A-OTF-FutoGoB101Pro-Bold.otf, gt-u = A-OTF-GothicBBBPro-Medium.otf , gt-eb = A-OTF-MidashiGoPro-MB31.otf, mg-m = A-OTF-Jun101Pro-Light.otf, - } + __custom = false, __office = false, __noembed = false, } -\ltjpreset_declare_preset:nn{morisawa-pr6n}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{morisawa-pr6n}{ mc = A-OTF-RyuminPr6N-Light.otf, mc-bx = A-OTF-FutoMinA101Pr6N-Bold.otf, gt-m = A-OTF-GothicBBBPr6N-Medium.otf , gt-bx = A-OTF-FutoGoB101Pr6N-Bold.otf, gt-u = A-OTF-GothicBBBPr6N-Medium.otf , gt-eb = A-OTF-MidashiGoPr6N-MB31.otf, mg-m = A-OTF-Jun101Pr6N-Light.otf, - } + __custom = false, __office = false, __noembed = false, } % 游明朝/游ゴシック (Win8.1) -\ltjpreset_declare_preset:nn{yu-win}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{yu-win}{ mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold, gt-m = YuGothic-Regular, gt-bx = YuGothic-Bold, gt-u = YuGothic-Regular, gt-eb = YuGothic-Bold, mg-m = YuGothic-Bold, mc-l = YuMincho-Light - } + __custom = false, __office = false, __noembed = false, } % Win10 -\ltjpreset_declare_preset:nn{yu-win10}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{yu-win10}{ mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold, gt-m = YuGothic-Regular, gt-bx = YuGothic-Bold, gt-u = YuGothic-Medium, gt-eb = YuGothic-Bold, mg-m = YuGothic-Bold, mc-l = YuMincho-Light - } + __custom = false, __office = false, __noembed = false, } % Yu fonts in OSX % according to http://support.apple.com/kb/HT5944 -\ltjpreset_declare_preset:nn{yu-osx}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{yu-osx}{ mc = YuMincho~Medium, mc-bx = YuMincho~Demibold, gt-m = YuGothic~Medium, gt-u = YuGothic~Medium, gt-bx = YuGothic~Bold, gt-eb = YuGothic~Bold, mg-m = YuGothic~Bold - } + __custom = false, __office = false, __noembed = false, } % moga-mobo -\ltjpreset_declare_preset:nn{moga-mobo}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{moga-mobo}{ mc = Moga90Mincho, mc-bx = Moga90Mincho~Bold, gt-m = Moga90Gothic, gt-bx = Moga90Gothic~Bold, gt-u = Moga90Gothic, gt-eb = Moga90Gothic~Bold, mg-m = Mobo90Gothic - } + __custom = false, __office = false, __noembed = false, } -\ltjpreset_declare_preset:nn{moga-mobo-ex}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{moga-mobo-ex}{ mc = MogaEx90Mincho, mc-bx = MogaEx90Mincho~Bold, gt-m = MogaEx90Gothic, gt-bx = MogaEx90Gothic~Bold, gt-u = MogaEx90Gothic, gt-eb = MogaEx90Gothic~Bold, mg-m = MoboEx90Gothic - } + __custom = false, __office = false, __noembed = false, } % Ume fones -\ltjpreset_declare_preset:nn{ume}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{ume}{ mc = Ume~Mincho, gt-m = Ume~Gothic, gt-bx = Ume~Gothic~O5, gt-u = Ume~Gothic~O5, gt-eb = Ume~Gothic~O5, mg-m = Ume~Gothic~O4 - } + __custom = false, __office = false, __noembed = false, } % Source Han {Serif,Sans} -\ltjpreset_declare_preset:nn{sourcehan}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{sourcehan}{ mc-m = Source~Han~Serif~Regular, mc-bx = Source~Han~Serif~Bold, gt-m = Source~Han~Sans~Regular, @@ -283,10 +258,9 @@ gt-eb = Source~Han~Sans~Heavy, mg-m = Source~Han~Sans~Heavy, mc-l = Source~Han~Serif~Light, - } + __custom = false, __office = false, __noembed = false, } -\ltjpreset_declare_preset:nn{sourcehan-jp}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{sourcehan-jp}{ mc-m = Source~Han~Serif~JP~Regular, mc-bx = Source~Han~Serif~JP~Bold, gt-m = Source~Han~Sans~JP~Regular, @@ -295,10 +269,9 @@ gt-eb = Source~Han~Sans~JP~Heavy, mg-m = Source~Han~Sans~JP~Heavy, mc-l = Source~Han~Serif~JP~Light, - } + __custom = false, __office = false, __noembed = false, } -\ltjpreset_declare_preset:nn{noto-otc}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{noto-otc}{ mc-m = Noto~Serif~CJK~Regular, mc-bx = Noto~Serif~CJK~Bold, gt-m = Noto~Sans~CJK~Regular, @@ -307,10 +280,9 @@ gt-eb = Noto~Sans~CJK~Black, mg-m = Noto~Sans~CJK~Black, mc-l = Noto~Serif~CJK~Light, - } + __custom = false, __office = false, __noembed = false, } -\ltjpreset_declare_preset:nn{noto-otf}{ - \ltjpreset_set_multi:n { +\ltjpreset_declare_preset:nx{noto-otf}{ mc-m = Noto~Serif~CJK~JP~Regular, mc-bx = Noto~Serif~CJK~JP~Bold, gt-m = Noto~Sans~CJK~JP~Regular, @@ -319,39 +291,40 @@ gt-eb = Noto~Sans~CJK~JP~Black, mg-m = Noto~Sans~CJK~JP~Black, mc-l = Noto~Serif~CJK~JP~Light, - } + __custom = false, __office = false, __noembed = false, } % ipa, ipaex, ms -\ltjpreset_declare_preset:nn{ipa}{ +\ltjpreset_declare_preset:nx{ipa}{ \ltjpreset_set_uni:nn { IPAMincho } { IPAGothic } } -\ltjpreset_declare_preset:nn{ipaex}{ +\ltjpreset_declare_preset:nx{ipaex}{ \ltjpreset_set_uni:nn { IPAExMincho } { IPAExGothic } } -\ltjpreset_declare_preset:nn{ms}{ +\ltjpreset_declare_preset:nx{ms}{ \ltjpreset_set_uni:nn { MS-Mincho } { MS-Gothic } } % {ipa,ipaex,ms}-dx % Office 付属フォントを利用 -\ltjpreset_declare_preset:nn{ipaex-hg}{ +\ltjpreset_declare_preset:nx{ipaex-hg}{ \ltjpreset_set_office:nn { IPAExMincho } { IPAExGothic } } -\ltjpreset_declare_preset:nn{ipa-hg}{ +\ltjpreset_declare_preset:nx{ipa-hg}{ \ltjpreset_set_office:nn { IPAMincho } { IPAGothic } } -\ltjpreset_declare_preset:nn{ms-hg}{ +\ltjpreset_declare_preset:nx{ms-hg}{ \ltjpreset_set_office:nn { MS-Mincho } { MS-Gothic } } % 非埋込 -\ltjpreset_declare_preset:nn{noembed}{ - \ltjpreset_set_uni:nn { Ryumin-Light } { GothicBBB-Medium } - \bool_set_true:N \l_ltjpreset_noembed_bool +\ltjpreset_declare_preset:nx{noembed}{ + \ltjpreset_set_uni:nn { Ryumin-Light } { GothicBBB-Medium }, + __custom = false, __office = false, __noembed = true, } +\keys_set:nn {luatexja-preset} { ipaex } \ProcessKeysOptions { luatexja-preset } \@ifpackageloaded{luatexja-fontspec}{ \bool_if:NT \l_ltjpreset_nfssonly_bool @@ -475,28 +448,24 @@ %%%%%%%% nfss only \msg_warning:nnx { luatexja-preset }{ scale }{ \fp_use:N \l_ltjpreset_scale_fp } + \cs_new:Nn \ltj_preset_declare_font_shape:nnnnnn { + \cs_if_exist:cT { #1/#2/#3/#4/10 } { \cs_undefine:c { #1/#2/#3/#4/10 } } + \DeclareFontShape{#1}{#2}{#3}{#4}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] + { \bool_if:NT \l_ltjpreset_noembed_bool {psft:} #5 + ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl #6 } } {} + } \cs_new:Nn \ltj_preset_define_family:nnn { - \DeclareFontShape{JY3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] { - \bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" - : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl - ; script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+hkna }} - } {} - \DeclareFontShape{JT3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] { - \bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" - : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl - ; script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+vkna }} - } {} + \ltj_preset_declare_font_shape:nnnnnn { JY3 } { #1 } { #2 } { n } + { "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl } + { script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+hkna } } + \ltj_preset_declare_font_shape:nnnnnn { JT3 } { #1 } { #2 } { n } + { "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl } + { script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+vkna } } \bool_if:NT \l_ltjpreset_expert_bool { - \DeclareFontShape{JY3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] { - \bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" - : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl - ; +ruby ; script=kana} - } {} - \DeclareFontShape{JT3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] { - \bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3" - : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl - ; +ruby ; script=kana} - } {} + \ltj_preset_declare_font_shape:nnnnnn { JY3 } { #1 } { #2 } { rb } + { "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl } { script=kana; +ruby } + \ltj_preset_declare_font_shape:nnnnnn { JT3 } { #1 } { #2 } { rb } + { "#3" : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl } { script=kana; +ruby } } } @@ -595,25 +564,22 @@ } \cs_set:Npn \ltjnewpreset #1 #2 { - \keys_define:nn { ltjpreset-presets } { - #1 .code:n = - { \ltjpreset_set_multi:n { #2 } \bool_set_true:N \l_ltjpreset_custom_bool }, - #1 .value_forbidden:n = true, + \keys_define:nn { luatexja-preset } { + #1 .meta:n = { #2, __custom = true, __noembed = false, __office = false, }, + #1 .value_forbidden:n = true, #1 .groups:n = { preset }, } } \tl_new:N \l_ltjpreset_residue_tl \cs_set:Npn \ltjapplypreset #1 { - \keys_set:nn { ltjpreset-presets } { #1 } + \keys_set_groups:nnn { luatexja-preset } { preset } { #1 } \prop_show:N \l_ltjpreset_font_prop \ltjpreset_extract_fonts: \ltjpreset_check_deluxe_existence: \ltjpreset_do_fontset: } - -\ltjapplypreset { ipaex } - +\ltjapplypreset {} \ExplSyntaxOff \endinput -- 2.11.0