+ \bool_if:NT \g__ltjpreset_expert_bool {
+ \DeclareRobustCommand\rubyfamily { \kanjishape{rb}\selectfont }
+ }
+ %
+ \cs_new:Nn \__ltjpreset_do_fontset: { \group_begin:
+ % ======
+ \xdef\mcdefault{ltjpmc \int_to_arabic:n { \g__ltjpreset_applycount_int }}
+ \xdef\gtdefault{ltjpgt \int_to_arabic:n { \g__ltjpreset_applycount_int }}
+ \DeclareKanjiFamily{JY3}{\mcdefault}{}
+ \DeclareKanjiFamily{JT3}{\mcdefault}{}
+ \DeclareKanjiFamily{JY3}{\gtdefault}{}
+ \DeclareKanjiFamily{JT3}{\gtdefault}{}
+ \unless\ifltj@disablejfam
+ \SetSymbolFont{mincho}{normal}{JY3}{\mcdefault}{m}{n}
+ \SetSymbolFont{mincho}{bold}{JY3}{\mcdefault}{b}{n}
+ \DeclareMathAlphabet{\mathgt}{JY3}{\gtdefault}{m}{n}
+ \fi
+ \bool_if:NT \g__ltjpreset_deluxe_bool {
+ \DeclareKanjiFamily{JY3}{ltjpmg \int_to_arabic:n { \g__ltjpreset_applycount_int }}{}
+ \DeclareKanjiFamily{JT3}{ltjpmg \int_to_arabic:n { \g__ltjpreset_applycount_int }}{}
+ }
+ % ======
+ \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 }
+ \tl_if_eq:NNT \l__ltjpreset_kanji_shape_tl \l_tmpa_tl {
+ \tl_set:Nn \l__ltjpreset_kanji_shape_tl { ;+jp90 }
+ }
+ \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
+ \tl_if_eq:NNT \l__ltjpreset_kanji_shape_tl \l_tmpa_tl {
+ \tl_set:Nx \l__ltjpreset_kanji_shape_tl { ;+jp04 }
+ }
+ \__ltjpreset_define_family:nnn {mc} {m} {\__ltjpreset_font_mc_m:}
+ \__ltjpreset_define_family:nnn {mc} {bx} {\__ltjpreset_font_mc_b:}
+ \__ltjpreset_define_family:nnn {mc} {b} {\__ltjpreset_font_mc_b:}
+ \__ltjpreset_define_family:nnn {gt} {m} {\__ltjpreset_font_gt_m:}
+ \__ltjpreset_define_family:nnn {gt} {bx} {\__ltjpreset_font_gt_b:}
+ \__ltjpreset_define_family:nnn {gt} {b} {\__ltjpreset_font_gt_b:}
+ \normalfont
+ \bool_if:NT \g__ltjpreset_deluxe_bool {
+ \__ltjpreset_define_family:nnn {mc} {l} {\__ltjpreset_font_mc_l:}
+ \__ltjpreset_define_family:nnn {gt} {eb} {\__ltjpreset_font_gt_eb:}
+ \__ltjpreset_define_family:nnn {mg} {m} {\__ltjpreset_font_mg_m:}
+ }
+ \group_end:
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%% fontspec
+} {
+ \RequirePackage{luatexja-fontspec}
+ % scale
+ \msg_warning:nnx { luatexja-preset }{ scale }{ \Cjascale }
+ \tl_new:N \l__ltjpreset_add_features_tl
+
+ \bool_if:NT \g__ltjpreset_expert_bool {
+ \cs_set:Npn \rubyfamily { \addjfontfeatures {
+ Style=Ruby , YokoFeatures={RawFeature=-hkna} , TateFeatures={RawFeature=-vkna}
+ } }
+ }
+ \addjfontfeature{ Kerning=Off }
+ % 実際の fontspec の呼びだし
+ \cs_new:Nn \__ltjpreset_do_fontset: { \group_begin:
+ \tl_gset:Nx \l__ltjpreset_add_features_tl {
+ \tl_use:N \l__ltjpreset_kanji_shape_tl,
+ YokoFeatures = { JFM = \tl_use:N \__ltjpreset_use_jfm_yoko_tl },
+ TateFeatures = { JFM = \tl_use:N \__ltjpreset_use_jfm_tate_tl },
+ Script=CJK, \bool_if:NT \g__ltjpreset_noembed_bool { , NoEmbed }
+ }
+ \group_end:
+ \bool_if:NT \g__ltjpreset_expert_bool {
+ \tl_put_left:Nn \l__ltjpreset_add_features_tl {
+ , YokoFeatures = {Style = HorizontalKana}, TateFeatures = {Style = VerticalKana}
+ }
+ }
+ \setmainjfont [
+ \bool_if:NT \g__ltjpreset_deluxe_bool {
+ FontFace={l}{n}{ Font = \__ltjpreset_font_mc_l:,
+ \cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
+ \ltjpreset_define_family_hook_fontspec:nnn
+ { mc } { l } { \__ltjpreset_font_mc_l: }
+ }
+ },
+ }
+ BoldFont = \__ltjpreset_font_mc_b: \tl_use:N \l__ltjpreset_add_features_tl,
+ \cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
+ UprightFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
+ { mc } { m } { \__ltjpreset_font_mc_m: } },
+ BoldFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
+ { mc } { b } { \__ltjpreset_font_mc_b: } },
+ }
+ ] { \__ltjpreset_font_mc_m: }
+ \setsansjfont [
+ \bool_if:NT \g__ltjpreset_deluxe_bool {
+ FontFace={eb}{n}{ Font = \__ltjpreset_font_gt_eb:,
+ \cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
+ \ltjpreset_define_family_hook_fontspec:nnn
+ { gt } { eb } { \__ltjpreset_font_gt_eb: }
+ }
+ },
+ }
+ BoldFont = \__ltjpreset_font_gt_b: \tl_use:N \l__ltjpreset_add_features_tl,
+ \cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
+ UprightFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
+ { gt } { m } { \__ltjpreset_font_gt_m: } },
+ BoldFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
+ { gt } { b } { \__ltjpreset_font_gt_b: } },
+ }
+ ] { \__ltjpreset_font_gt_m: }
+ \bool_if:NT \g__ltjpreset_deluxe_bool {
+ %% mg
+ \bool_if_exist:NTF \setfontfamily {
+ \setjfontfamily \mgfamily [
+ BoldFont = \__ltjpreset_font_mg_m: \tl_use:N \l__ltjpreset_add_features_tl,
+ \cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
+ \ltjpreset_define_family_hook_fontspec:nnn
+ { mg } { m } { \__ltjpreset_font_mg_m: },
+ }
+ ] { \__ltjpreset_font_mg_m: }
+ } {
+ \newjfontfamily \mgfamily [
+ BoldFont = \__ltjpreset_font_mg_m: \tl_use:N \l__ltjpreset_add_features_tl,
+ \cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
+ \ltjpreset_define_family_hook_fontspec:nnn
+ { mg } { m } { \__ltjpreset_font_mg_m: },
+ }
+ ] { \__ltjpreset_font_mg_m: }
+ }
+ \DeclareTextFontCommand{\textmg}{\mgfamily}
+ }
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}
+
+\def\ltjnewpreset{
+ \@ifstar{\__ltjpreset_new_preset:nnn{ true }}{\__ltjpreset_new_preset:nnn{ false }}}
+\cs_set:Nn \__ltjpreset_new_preset:nnn {
+ \keys_if_exist:nnTF { luatexja-preset } { #2 } {
+ \seq_if_in:NnTF \g__ltjpreset_presets_seq { #2 } {
+ \bool_if:cTF { c_ #1 _bool } {
+ \msg_warning:nnn { luatexja-preset }{ exist-preset-overwrite } { #2 }
+ \keys_define:nn { luatexja-preset } {
+ #2 .meta:n = { #3, __custom = true, __noembed = false, __office = false, },
+ #2 .value_forbidden:n = true, #2 .groups:n = { preset },
+ }
+ } {
+ \msg_error:nnn { luatexja-preset }{ exist-preset-nooverwrite } { #2 }
+ }
+ } {
+ \msg_error:nnn { luatexja-preset }{ illegal-preset-name } { #2 }
+ }
+ } {
+ \keys_define:nn { luatexja-preset } {
+ #2 .meta:n = { #3, __custom = true, __noembed = false, __office = false, },
+ #2 .value_forbidden:n = true, #2 .groups:n = { preset },
+ }
+ \seq_put_right:Nn \g__ltjpreset_presets_seq { #2 }