2 \ProvidesPackage{luatexja-preset}[2017/07/30 Japanese font presets]
4 \RequirePackage{expl3,l3keys2e}
5 \RequirePackage{luatexja}
8 \fp_new:N \l_ltjpreset_scale_fp
10 \fontsize{10}{10}\selectfont
11 \fp_gset:Nn \l_ltjpreset_scale_fp {\zw / 10}
14 \keys_define:nn { luatexja-preset }{
15 unknown .code:n = \PassOptionsToPackage { \l_keys_key_tl } { luatexja-fontspec },
16 scale .fp_gset:N = \l_ltjpreset_scale_fp,
18 \renewcommand\jttdefault{\gtdefault}\@ltj@match@familytrue
19 \PassOptionsToPackage { match } { luatexja-fontspec },
20 match .value_forbidden:n = true
22 \cs_new:Nn \ltjpreset_declare_option:nn {
23 \keys_define:nn { luatexja-preset }{
25 #1 .value_forbidden:n = true
28 \cs_new:Nn \ltjpreset_declare_bool_option:nn {
29 \bool_new:c { l_ltjpreset_#1_bool }
30 \bool_set_false:c { l_ltjpreset_#1_bool }
31 \keys_define:nn { luatexja-preset }{
32 #1 .bool_set:c = { l_ltjpreset_#1_bool },
33 #2 .bool_set_inverse:c = { l_ltjpreset_#1_bool },
40 \ltjpreset_declare_bool_option:nn { nfssonly }{ fontspec }
41 \ltjpreset_declare_bool_option:nn { bold }{ nobold }
42 \ltjpreset_declare_bool_option:nn { expert }{ noexpert }
43 \ltjpreset_declare_bool_option:nn { deluxe }{ nodeluxe }
46 \tl_new:N \ltjpreset_use_jfm_yoko_tl % 使用する JFM(横)
47 \tl_set:Nn \ltjpreset_use_jfm_yoko_tl {ujis}
48 \tl_new:N \ltjpreset_use_jfm_tate_tl % 使用する JFM(縦)
49 \tl_set:Nn \ltjpreset_use_jfm_tate_tl {ujisv}
50 \ltjpreset_declare_option:nn{jis}{\tl_set:Nn \ltjpreset_use_jfm_yoko_tl {jis}} % jis
51 \ltjpreset_declare_option:nn{ujis}{\tl_set:Nn \ltjpreset_use_jfm_yoko_tl {ujis}} % ujis
54 \tl_new:N \l_ltjpreset_kanji_shape_tl
55 \ltjpreset_declare_option:nn{90jis}{ \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS1990 }} % 90jis
56 \ltjpreset_declare_option:nn{jis2004}{\tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS2004 }} % jis2004
59 \bool_new:N \l_ltjpreset_office_bool % MS Office の HG 系フォントを使っているか
60 \bool_new:N \l_ltjpreset_noembed_bool % 非埋込か
62 \prop_new:N \l_ltjpreset_font_prop
63 \keys_define:nn { ltjpreset_set_font_list } {
65 \prop_put:Nnn \l_ltjpreset_font_prop { mc-l } {#1}
66 \prop_put:Nnn \l_ltjpreset_font_prop { mc-m } {#1}
67 \prop_put:Nnn \l_ltjpreset_font_prop { mc-bx } {#1},
69 \prop_put:Nnn \l_ltjpreset_font_prop { gt-u } {#1}
70 \prop_put:Nnn \l_ltjpreset_font_prop { gt-m } {#1}
71 \prop_put:Nnn \l_ltjpreset_font_prop { gt-bx } {#1}
72 \prop_put:Nnn \l_ltjpreset_font_prop { gt-eb } {#1},
74 \prop_put:Non \l_ltjpreset_font_prop { \l_keys_key_tl } {#1}
79 \cs_new:Npn \ltjpreset_set_uni:nn #1#2 {
80 \keys_set:nn { ltjpreset_set_font_list } {
81 mc = #1, gt = #2, mc-bx = #2, mg-m = #2,
84 \cs_new:Npn \ltjpreset_set_multi:n #1 {
85 \keys_set:nn { ltjpreset_set_font_list } { #1 }
86 \bool_set_false:N \l_ltjpreset_office_bool
87 \bool_set_false:N \l_ltjpreset_noembed_bool
89 \cs_new:Npn \ltjpreset_set_office:nn #1 #2{
90 \ltjpreset_set_multi:n {
91 mc-m = #1, mc-bx = HGMinchoE ,
92 gt-m = HGGothicM , gt-bx = HGGothicE ,
93 gt-u = #2 , gt-eb = HGSoeiKakugothicUB ,
94 mg-m = HGMaruGothicMPRO
96 \bool_set_true:N \l_ltjpreset_office_bool
103 \keys_define:nn { luatexja-preset }{
104 custom .code:n = \ltjpreset_set_multi:n { #1 },
105 custom .value_required:n = true,
106 jfm_yoko .tl_set:N = \ltjpreset_use_jfm_yoko_tl,
107 jfm_tate .tl_set:N = \ltjpreset_use_jfm_tate_tl,
112 \ltjpreset_declare_option:nn{kozuka-pro}{
113 \ltjpreset_set_multi:n {
114 mc-m = KozMinPro-Regular, mc-bx = KozMinPro-Bold,
115 gt-m = KozGoPro-Regular, gt-bx = KozGoPro-Bold,
116 gt-u = KozGoPro-Medium, gt-eb = KozGoPro-Heavy,
117 mg-m = KozGoPro-Heavy, mc-l = KozMinPro-Light,
121 \ltjpreset_declare_option:nn{kozuka-pr6}{
122 \ltjpreset_set_multi:n {
123 mc-m = KozMinProVI-Regular, mc-bx = KozMinProVI-Bold,
124 gt-m = KozGoProVI-Regular, gt-bx = KozGoProVI-Bold,
125 gt-u = KozGoProVI-Medium, gt-eb = KozGoProVI-Heavy,
126 mg-m = KozGoProVI-Heavy, mc-l = KozMinProVI-Light,
130 \ltjpreset_declare_option:nn{kozuka-pr6n}{
131 \ltjpreset_set_multi:n {
132 mc-m = KozMinPr6N-Regular, mc-bx = KozMinPr6N-Bold,
133 gt-m = KozGoPr6N-Regular, gt-bx = KozGoPr6N-Bold,
134 gt-u = KozGoPr6N-Medium, gt-eb = KozGoPr6N-Heavy,
135 mg-m = KozGoPr6N-Heavy, mc-l = KozMinPr6N-Light,
140 \ltjpreset_declare_option:nn{hiragino-pro}{
141 \ltjpreset_set_multi:n {
142 mc-m = HiraMinPro-W3, mc-bx = HiraMinPro-W6,
143 gt-m = HiraKakuPro-W3, gt-bx = HiraKakuPro-W6,
144 gt-u = HiraKakuPro-W6, gt-eb = HiraKakuStd-W8,
145 mg-m = HiraMaruPro-W4, mc-l = HiraMinPro-W2,
148 \ltjpreset_declare_option:nn{hiragino-pron}{
149 \ltjpreset_set_multi:n {
150 mc-m = HiraMinProN-W3, mc-bx = HiraMinProN-W6,
151 gt-m = HiraKakuProN-W3, gt-bx = HiraKakuProN-W6,
152 gt-u = HiraKakuProN-W6, gt-eb = HiraKakuStdN-W8,
153 mg-m = HiraMaruProN-W4, mc-l = HiraMinProN-W2,
158 \ltjpreset_declare_option:nn{morisawa-pro}{
159 \ltjpreset_set_multi:n {
160 mc = A-OTF-RyuminPro-Light.otf, mc-bx = A-OTF-FutoMinA101Pro-Bold.otf,
161 gt-m = A-OTF-GothicBBBPro-Medium.otf , gt-bx = A-OTF-FutoGoB101Pro-Bold.otf,
162 gt-u = A-OTF-GothicBBBPro-Medium.otf , gt-eb = A-OTF-MidashiGoPro-MB31.otf,
163 mg-m = A-OTF-Jun101Pro-Light.otf,
166 \ltjpreset_declare_option:nn{morisawa-pr6n}{
167 \ltjpreset_set_multi:n {
168 mc = A-OTF-RyuminPr6N-Light.otf, mc-bx = A-OTF-FutoMinA101Pr6N-Bold.otf,
169 gt-m = A-OTF-GothicBBBPr6N-Medium.otf , gt-bx = A-OTF-FutoGoB101Pr6N-Bold.otf,
170 gt-u = A-OTF-GothicBBBPr6N-Medium.otf , gt-eb = A-OTF-MidashiGoPr6N-MB31.otf,
171 mg-m = A-OTF-Jun101Pr6N-Light.otf,
176 \ltjpreset_declare_option:nn{yu-win}{
177 \ltjpreset_set_multi:n {
178 mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold,
179 gt-m = YuGothic-Regular, gt-bx = YuGothic-Bold,
180 gt-u = YuGothic-Regular, gt-eb = YuGothic-Bold,
181 mg-m = YuGothic-Bold, mc-l = YuMincho-Light
185 \ltjpreset_declare_option:nn{yu-win10}{
186 \ltjpreset_set_multi:n {
187 mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold,
188 gt-m = YuGothic-Regular, gt-bx = YuGothic-Bold,
189 gt-u = YuGothic-Medium, gt-eb = YuGothic-Bold,
190 mg-m = YuGothic-Bold, mc-l = YuMincho-Light
195 % according to http://support.apple.com/kb/HT5944
196 \ltjpreset_declare_option:nn{yu-osx}{
197 \ltjpreset_set_multi:n {
198 mc = YuMincho~Medium, mc-bx = YuMincho~Demibold,
199 gt-m = YuGothic~Medium, gt-u = YuGothic~Medium,
200 gt-bx = YuGothic~Bold, gt-eb = YuGothic~Bold,
206 \ltjpreset_declare_option:nn{moga-mobo}{
207 \ltjpreset_set_multi:n {
208 mc = Moga90Mincho, mc-bx = Moga90Mincho~Bold,
209 gt-m = Moga90Gothic, gt-bx = Moga90Gothic~Bold,
210 gt-u = Moga90Gothic, gt-eb = Moga90Gothic~Bold,
214 \ltjpreset_declare_option:nn{moga-mobo-ex}{
215 \ltjpreset_set_multi:n {
216 mc = MogaEx90Mincho, mc-bx = MogaEx90Mincho~Bold,
217 gt-m = MogaEx90Gothic, gt-bx = MogaEx90Gothic~Bold,
218 gt-u = MogaEx90Gothic, gt-eb = MogaEx90Gothic~Bold,
219 mg-m = MoboEx90Gothic
224 \ltjpreset_declare_option:nn{ume}{
225 \ltjpreset_set_multi:n {
227 gt-m = Ume~Gothic, gt-bx = Ume~Gothic~O5,
228 gt-u = Ume~Gothic~O5, gt-eb = Ume~Gothic~O5,
233 % Source Han {Serif,Sans}
234 \ltjpreset_declare_option:nn{sourcehan}{
235 \ltjpreset_set_multi:n {
236 mc-m = Source~Han~Serif~Regular,
237 mc-bx = Source~Han~Serif~Bold,
238 gt-m = Source~Han~Sans~Regular,
239 gt-bx = Source~Han~Sans~Bold,
240 gt-u = Source~Han~Sans~Medium,
241 gt-eb = Source~Han~Sans~Heavy,
242 mg-m = Source~Han~Sans~Heavy,
243 mc-l = Source~Han~Serif~Light,
246 \ltjpreset_declare_option:nn{sourcehan-jp}{
247 \ltjpreset_set_multi:n {
248 mc-m = Source~Han~Serif~JP~Regular,
249 mc-bx = Source~Han~Serif~JP~Bold,
250 gt-m = Source~Han~Sans~JP~Regular,
251 gt-bx = Source~Han~Sans~JP~Bold,
252 gt-u = Source~Han~Sans~JP~Medium,
253 gt-eb = Source~Han~Sans~JP~Heavy,
254 mg-m = Source~Han~Sans~JP~Heavy,
255 mc-l = Source~Han~Serif~JP~Light,
258 \ltjpreset_declare_option:nn{noto-otc}{
259 \ltjpreset_set_multi:n {
260 mc-m = Noto~Serif~CJK~Regular,
261 mc-bx = Noto~Serif~CJK~Bold,
262 gt-m = Noto~Sans~CJK~Regular,
263 gt-bx = Noto~Sans~CJK~Bold,
264 gt-u = Noto~Sans~CJK~Medium,
265 gt-eb = Noto~Sans~CJK~Black,
266 mg-m = Noto~Sans~CJK~Black,
267 mc-l = Noto~Serif~CJK~Light,
270 \ltjpreset_declare_option:nn{noto-otf}{
271 \ltjpreset_set_multi:n {
272 mc-m = Noto~Serif~CJK~JP~Regular,
273 mc-bx = Noto~Serif~CJK~JP~Bold,
274 gt-m = Noto~Sans~CJK~JP~Regular,
275 gt-bx = Noto~Sans~CJK~JP~Bold,
276 gt-u = Noto~Sans~CJK~JP~Medium,
277 gt-eb = Noto~Sans~CJK~JP~Black,
278 mg-m = Noto~Sans~CJK~JP~Black,
279 mc-l = Noto~Serif~CJK~JP~Light,
285 \ltjpreset_declare_option:nn{ipa}{
286 \ltjpreset_set_uni:nn { IPAMincho } { IPAGothic }
288 \ltjpreset_declare_option:nn{ipaex}{
289 \ltjpreset_set_uni:nn { IPAExMincho } { IPAExGothic }
291 \ltjpreset_declare_option:nn{ms}{
292 \ltjpreset_set_uni:nn { MS-Mincho } { MS-Gothic }
295 % {ipa,ipaex,ms}-dx % Office 付属フォントを利用
296 \ltjpreset_declare_option:nn{ipaex-hg}{
297 \ltjpreset_set_office:nn { IPAExMincho } { IPAExGothic }
299 \ltjpreset_declare_option:nn{ipa-hg}{
300 \ltjpreset_set_office:nn { IPAMincho } { IPAGothic }
302 \ltjpreset_declare_option:nn{ms-hg}{
303 \ltjpreset_set_office:nn { MS-Mincho } { MS-Gothic }
308 \ltjpreset_declare_option:nn{noembed}{
309 \ltjpreset_set_uni:nn { Ryumin-Light } { GothicBBB-Medium }
310 \bool_set_true:N \l_ltjpreset_noembed_bool
313 \keys_set:nn { luatexja-preset }{ ipaex }
314 \ProcessKeysOptions { luatexja-preset }
316 %%%%%%%% main routine
318 \msg_new:nnn { luatexja-preset }{ ltj-fontspec }{
319 The~ luatexja-fontspec~ package~ is~ loaded~ already.~
320 Hence~ we~ ignore~ `nfssonly'~option.
322 \@ifpackageloaded{luatexja-fontspec}{
323 \bool_if:NT \l_ltjpreset_nfssonly_bool
324 { \msg_warning:nn { luatexja-preset }{ ltj-fontspec } }
325 \bool_set_false:N \l_ltjpreset_nfssonly_bool
328 \bool_new:N \l_ltjpreset_shape_nlck_bool
329 %% KozMinPr6N, HiraMinProN-W3 の場合はjp04 feature がないので,nlck にする
330 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
331 \tl_if_eq:NNTF \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
332 \tl_set:Nx \l_tmpb_tl { \prop_item:Nn \l_ltjpreset_font_prop { mc-m } }
333 \tl_if_in:NnT \l_tmpb_tl { KozMinPr6N-Regular }
334 { \bool_set_true:N \l_ltjpreset_shape_nlck_bool }
335 \tl_if_in:NnT \l_tmpb_tl { HiraMinProN-W3 }
336 { \bool_set_true:N \l_ltjpreset_shape_nlck_bool }
337 \tl_if_in:NnT \l_tmpb_tl { Moga90Mincho }
339 \prop_clear:N \l_tmpa_prop
340 \prop_map_inline:Nn \l_ltjpreset_font_prop {
341 \tl_set:Nn \l_tmpb_tl { #2 }
342 \tl_remove_all:Nn \l_tmpb_tl {90}
343 \prop_put:Nnx \l_tmpa_prop { #1 } { \tl_use:N \l_tmpb_tl }
345 \prop_set_eq:NN \l_ltjpreset_font_prop \l_tmpa_prop
346 \tl_clear:N \l_ltjpreset_kanji_shape_tl
348 \tl_if_in:NnT \l_tmpb_tl { MogaEx90Mincho }
350 \prop_clear:N \l_tmpa_prop
351 \prop_map_inline:Nn \l_ltjpreset_font_prop {
352 \tl_set:Nn \l_tmpb_tl { #2 }
353 \tl_remove_all:Nn \l_tmpb_tl {90}
354 \prop_put:Nnx \l_tmpa_prop { #1 } { \tl_use:N \l_tmpb_tl }
356 \prop_set_eq:NN \l_ltjpreset_font_prop \l_tmpa_prop
357 \tl_clear:N \l_ltjpreset_kanji_shape_tl
360 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 }
361 \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
362 \tl_set:Nx \l_tmpb_tl { \prop_item:Nn \l_ltjpreset_font_prop { mc-m } }
363 \tl_if_in:NnT \l_tmpb_tl { Moga90Mincho }
364 { \tl_clear:N \l_ltjpreset_kanji_shape_tl }
370 \cs_set:Nx \ltjpreset_font_mc_l: { \prop_item:Nn \l_ltjpreset_font_prop { mc-l } }
371 \cs_set:Nx \ltjpreset_font_mc_m: { \prop_item:Nn \l_ltjpreset_font_prop { mc-m } }
372 \cs_set:Nx \ltjpreset_font_mc_bx: { \prop_item:Nn \l_ltjpreset_font_prop { mc-bx } }
373 \cs_set:Nx \ltjpreset_font_gt_m: { \prop_item:Nn \l_ltjpreset_font_prop { gt-m } }
374 \cs_set:Nx \ltjpreset_font_gt_u: { \prop_item:Nn \l_ltjpreset_font_prop { gt-u } }
375 \cs_set:Nx \ltjpreset_font_gt_bx: { \prop_item:Nn \l_ltjpreset_font_prop { gt-bx } }
376 \cs_set:Nx \ltjpreset_font_gt_eb: { \prop_item:Nn \l_ltjpreset_font_prop { gt-eb } }
377 \cs_set:Nx \ltjpreset_font_mg_m: { \prop_item:Nn \l_ltjpreset_font_prop { mg-m } }
379 %\prop_show:N \l_ltjpreset_font_prop
381 %% HG 系フォント + JIS2004/90JIS のときはフォント名を置換
382 \bool_if:NT \l_ltjpreset_office_bool {
383 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
384 \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
385 \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme04.ttc }
386 \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge04.ttc }
387 \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu04.ttc }
388 \cs_set:Nx \ltjpreset_font_mg_m: { hgrsmp04.ttf }
389 \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_u:
390 % HG ゴシックM のときはそうはいかないので 1 ウェイト時のゴシック体を使う
392 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 }
393 \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
394 \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme.ttc }
395 \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge.ttc }
396 \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu.ttc }
397 \cs_set:Nx \ltjpreset_font_mg_m: { hgrsmp.ttf }
402 \tl_set:Nx \l_tmpa_tl { \ltjpreset_font_mc_l: }
403 \tl_if_empty:NT \l_tmpa_tl {\tl_set:Nn \l_tmpa_tl {~}}
404 \cs_set:Nx \ltjpreset_font_mc_l: {
405 \tl_if_blank:nTF \l_tmpa_tl { \ltjpreset_font_mc_m: } {\tl_use:N \l_tmpa_tl }
408 %% 90JIS/JIS2004 字形指定のオプション
409 \bool_if:NTF \l_ltjpreset_nfssonly_bool {
410 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 }
411 \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
412 \tl_set:Nn \l_ltjpreset_kanji_shape_tl { +jp90 }
414 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
415 \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
416 \bool_if:NTF \l_ltjpreset_shape_nlck_bool
417 { \tl_set:Nn \l_ltjpreset_kanji_shape_tl { +nlck } }
418 { \tl_set:Nn \l_ltjpreset_kanji_shape_tl { +jp04 } }
421 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
422 \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
423 \bool_if:NT \l_ltjpreset_shape_nlck_bool
424 { \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=NLC } }
430 \cs_new:Nn \ltjpreset_substitute:nnnn {
432 \suppressfontnotfounderror=1
433 \font \l_ltjpreset_font_test: = "\cs:w ltjpreset_font_#1_#2: \cs_end:"\relax
434 \ifx \l_ltjpreset_font_test: \nullfont
435 \msg_warning:nnxxxx { luatexja-preset }{ no-font }
436 { \cs:w ltjpreset_font_#1_#2: \cs_end: }{ #1/#2 }
437 { \cs:w ltjpreset_font_#3_#4: \cs_end: }{ #3/#4 }
438 \cs_gset_eq:cc { ltjpreset_font_#1_#2: } { ltjpreset_font_#3_#4: }
443 \msg_new:nnn { luatexja-preset }{ no-font }{
444 Font~ for~ #1~ (#2)~ is~ not~found.~ Hence~ I~ substitute~ #3~ (#4)~ for~ it.
446 \bool_if:NT \l_ltjpreset_deluxe_bool {
447 \ltjpreset_substitute:nnnn { gt } { eb } { gt } { bx }
448 \ltjpreset_substitute:nnnn { mg } { m } { gt } { bx }
449 \ltjpreset_substitute:nnnn { mc } { l } { mc } { m }
452 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
454 \bool_if:NTF \l_ltjpreset_nfssonly_bool {
455 \msg_new:nnn { luatexja-preset }{ scale }{
456 Japanese~fonts~will~be~scaled~by~\fp_use:N \l_ltjpreset_scale_fp.
458 \msg_warning:nn { luatexja-preset }{ scale }
460 \cs_new:Nn \ltj_preset_define_family:nnn {
461 \DeclareFontShape{JY3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp]
462 {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3"
463 : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl
464 ; script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+hkna }}
466 \DeclareFontShape{JT3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp]
467 {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3"
468 : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl;
469 ; script=hani \bool_if:NT \l_ltjpreset_expert_bool { ;+vkna }}
471 \bool_if:NT \l_ltjpreset_expert_bool {
472 \DeclareFontShape{JY3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp]
473 {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3"
474 : jfm=\tl_use:N \ltjpreset_use_jfm_yoko_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl ;+ruby
477 \DeclareFontShape{JT3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp]
478 {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} "#3"
479 : jfm=\tl_use:N \ltjpreset_use_jfm_tate_tl ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl ;+ruby
485 \DeclareKanjiFamily{JY3}{ltjpm}{}\DeclareKanjiFamily{JT3}{ltjpm}{}
486 \DeclareKanjiFamily{JY3}{ltjpg}{}\DeclareKanjiFamily{JT3}{ltjpg}{}
488 \bool_if:NTF \l_ltjpreset_deluxe_bool {
489 \bool_if:NT \l_ltjpreset_bold_bool {
490 \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_bx:
493 \bool_if:NTF \l_ltjpreset_bold_bool {
494 \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_bx:
496 \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_u:
498 \cs_set_eq:NN \ltjpreset_font_gt_bx: \ltjpreset_font_gt_m:
499 \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_m:
502 \ltj_preset_define_family:nnn {ltjpm} {m} {\ltjpreset_font_mc_m:}
503 \ltj_preset_define_family:nnn {ltjpm} {bx} {\ltjpreset_font_mc_bx:}
504 \ltj_preset_define_family:nnn {ltjpg} {m} {\ltjpreset_font_gt_m:}
505 \ltj_preset_define_family:nnn {ltjpg} {bx} {\ltjpreset_font_gt_bx:}
507 \def\mcdefault{ltjpm}\def\gtdefault{ltjpg}
510 \SetSymbolFont{mincho}{normal}{JY3}{ltjpm}{m}{n}
511 \SetSymbolFont{mincho}{bold}{JY3}{ltjpm}{bx}{n}
512 \DeclareMathAlphabet{\mathgt}{JY3}{ltjpg}{m}{n}
514 \bool_if:NT \l_ltjpreset_expert_bool {
515 \DeclareRobustCommand\rubyfamily { \kanjishape{rb}\selectfont }
518 \bool_if:NTF \l_ltjpreset_deluxe_bool {
519 \DeclareKanjiFamily{JY3}{ltjpmg}{}\DeclareKanjiFamily{JT3}{ltjpmg}{}
521 \DeclareRobustCommand\ltseries { \not@math@alphabet\ltseries\relax\fontseries\ltdefault\selectfont }
522 \ltj_preset_define_family:nnn {ltjpm} {l} {\ltjpreset_font_mc_l:}
524 \DeclareRobustCommand\ebseries { \not@math@alphabet\ebseries\relax\fontseries\ebdefault\selectfont }
525 \DeclareRobustCommand\gtebfamily { \kanjifamily{ltjpg}\fontseries{\ebdefault}\selectfont }
526 \DeclareTextFontCommand{\textgteb}{\gtebfamily}
527 \ltj_preset_define_family:nnn {ltjpg} {eb} {\ltjpreset_font_gt_eb:}
528 \DeclareRobustCommand\mgfamily { \not@math@alphabet\mgfamily\relax\kanjifamily{ltjpmg}\selectfont }
529 \DeclareTextFontCommand{\textmg}{\mgfamily}
530 \ltj_preset_define_family:nnn {ltjpmg} {m} {\ltjpreset_font_mg_m:}
533 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
536 \PassOptionsToPackage { scale = \fp_use:N \l_ltjpreset_scale_fp } { luatexja-fontspec }
537 \RequirePackage{luatexja-fontspec}
539 \msg_new:nnn { luatexja-preset }{ scale }{
540 Japanese~fonts~will~be~scaled~by~\fp_use:N \g_ltj_fontspec_scale_fp.
542 \msg_warning:nn { luatexja-preset }{ scale }
545 \tl_new:N \l_ltjpreset_add_features_tl
547 \tl_set:Nx \l_ltjpreset_add_features_tl {
548 \tl_use:N \l_ltjpreset_kanji_shape_tl,
549 YokoFeatures = { JFM = \tl_use:N \ltjpreset_use_jfm_yoko_tl },
550 TateFeatures = { JFM = \tl_use:N \ltjpreset_use_jfm_tate_tl },
554 \bool_if:NT \l_ltjpreset_expert_bool {
555 \cs_set:Npn \rubyfamily { \addjfontfeatures {
556 Style=Ruby , YokoFeatures={RawFeature=-hkna} , TateFeatures={RawFeature=-vkna}
558 \tl_put_left:Nn \l_ltjpreset_add_features_tl {
559 YokoFeatures = {Style = HorizontalKana},
560 TateFeatures = {Style = VerticalKana},
564 % (丸)ゴシック体の設定: bold option もここで
565 \bool_if:NTF \l_ltjpreset_deluxe_bool {
567 \newjfontfamily \mgfamily [
568 BoldFont = \ltjpreset_font_mg_m:,
569 \bool_if:NT \l_ltjpreset_noembed_bool { NoEmbed, }
570 \tl_use:N \l_ltjpreset_add_features_tl
571 ] { \ltjpreset_font_mg_m: }
572 \DeclareTextFontCommand{\textmg}{\mgfamily}
575 \DeclareRobustCommand\ebseries { \not@math@alphabet\ebseries\relax\fontseries\ebdefault\selectfont }
576 \DeclareRobustCommand\gtebfamily { \kanjifamily{\gtdefault}\fontseries{\ebdefault}\selectfont }
577 \DeclareTextFontCommand{\textgteb}{\gtebfamily}
580 \DeclareRobustCommand\ltseries { \not@math@alphabet\ltseries\relax\fontseries\ltdefault\selectfont }
581 \bool_if:NT \l_ltjpreset_bold_bool {
582 \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_bx:
585 \bool_if:NTF \l_ltjpreset_bold_bool {
586 \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_bx:
588 \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_u:
590 \cs_set_eq:NN \ltjpreset_font_gt_bx: \ltjpreset_font_gt_m:
591 \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_m:
597 \addjfontfeature{ Kerning=Off }
600 \bool_if:NT \l_ltjpreset_deluxe_bool {
601 FontFace={l}{n}{\ltjpreset_font_mc_l:},
603 BoldFont = \ltjpreset_font_mc_bx:
604 \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed },
605 \tl_use:N \l_ltjpreset_add_features_tl
606 ] { \ltjpreset_font_mc_m: }
608 \bool_if:NT \l_ltjpreset_deluxe_bool {
609 FontFace={eb}{n}{\ltjpreset_font_gt_eb:},
611 BoldFont = \ltjpreset_font_gt_bx:
612 \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed },
613 \tl_use:N \l_ltjpreset_add_features_tl
614 ] { \ltjpreset_font_gt_m: }
616 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%