OSDN Git Service

luatexja-preset.sty: added "moga-mobo" option.
[luatex-ja/luatexja.git] / src / addons / luatexja-preset.sty
1 % luatexja-preset.sty
2 \ProvidesPackage{luatexja-preset}[2015/04/05 Japanese font presets]
3
4 \RequirePackage{expl3}
5 \RequirePackage{luatexja}
6 \ExplSyntaxOn
7
8 %%%% message
9 \bool_new:N \l_ltjpreset_nfssonly_bool % nfssonly
10 \bool_set_false:N \l_ltjpreset_nfssonly_bool
11 \DeclareOption{nfssonly}  {\bool_set_true:N \l_ltjpreset_nfssonly_bool}
12 \DeclareOption{fontspec}  {\bool_set_false:N \l_ltjpreset_nfssonly_bool}
13
14 \bool_new:N \l_ltjpreset_bold_bool % bold
15 \bool_set_false:N \l_ltjpreset_bold_bool
16 \DeclareOption{bold}  {\bool_set_true:N \l_ltjpreset_bold_bool}
17 \DeclareOption{nobold}{\bool_set_false:N \l_ltjpreset_bold_bool}
18
19 \bool_new:N \l_ltjpreset_expert_bool % expert
20 \bool_set_false:N \l_ltjpreset_expert_bool
21 \DeclareOption{expert}  {\bool_set_true:N \l_ltjpreset_expert_bool}
22 \DeclareOption{noexpert}{\bool_set_false:N \l_ltjpreset_expert_bool}
23
24 \int_new:N \l_ltjpreset_deluxe_int % deluxe
25 \int_set:Nn \l_ltjpreset_deluxe_int { 0 }
26 \DeclareOption{deluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 2 }}   % 6 fonts
27 \DeclareOption{nodeluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 0 }} % 2 fonts
28
29 % JFM
30 \cs_set:Npn \ltjpreset_use_jfm: {ujis}  % 使用する JFM
31 %%% \DeclareOption{min}{\cs_set:Npn  \ltjpreset_use_jfm: {min}} % min
32 %%% ↑jfm-min.lua が横組み・縦組み専用仮名に追いついていないので使用禁止
33 \DeclareOption{jis}{\cs_set:Npn  \ltjpreset_use_jfm: {jis}}     % jis
34 \DeclareOption{ujis}{\cs_set:Npn  \ltjpreset_use_jfm: {ujis}}   % ujis
35
36 % 漢字字形
37 \tl_new:N \l_ltjpreset_kanji_shape_tl
38 \DeclareOption{90jis}{  \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS1990 }} % 90jis
39 \DeclareOption{jis2004}{\tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS2004 }} % jis2004
40
41 % font preset
42 \bool_new:N \l_ltjpreset_office_bool  % MS Office の HG 系フォントを使っているか
43 \bool_new:N \l_ltjpreset_noembed_bool % 非埋込か
44 \clist_new:N \l_ltjpreset_font_list
45
46 \cs_new:Npn \ltjpreset_set_uni:nn #1#2 {
47   \ltjpreset_set_multi:n { #1, #2, #2, #2, #2, #2, #2 }
48 }
49 \cs_new:Npn \ltjpreset_set_multi:n #1 {
50   \clist_set:Nn \l_ltjpreset_font_list { #1 }
51   \bool_set_false:N \l_ltjpreset_office_bool
52   \bool_set_false:N \l_ltjpreset_noembed_bool
53 }
54 \cs_new:Npn \ltjpreset_set_office:nn #1 #2{
55   \ltjpreset_set_multi:n {
56     #1, HGMinchoE ,           % mc/m, mc/bx
57     HGGothicM , HGGothicE ,   % gt/m, gt/bx (multiweight))
58     #2 , HGSoeiKakugothicUB , % gt/m (uni), gt/eb
59     HGMaruGothicMPRO          % mg/m
60   }
61   \bool_set_true:N \l_ltjpreset_office_bool
62 }
63
64
65 % 小塚 (Adobe)
66 %% Pro
67 \DeclareOption{kozuka-pro}{
68   \ltjpreset_set_multi:n {
69     KozMinPro-Regular , % mc/m
70     KozMinPro-Bold ,    % mc/bx
71     KozGoPro-Regular , % gt/m  (multi)
72     KozGoPro-Bold ,    % gt/bx
73     KozGoPro-Medium  , % gt/m  (uni)
74     KozGoPro-Heavy ,   % gt/eb
75     KozGoPro-Heavy     % mg/m
76   }
77 }
78 %% Pr6
79 \DeclareOption{kozuka-pr6}{
80   \ltjpreset_set_multi:n {
81     KozMinProVI-Regular , % mc/m
82     KozMinProVI-Bold ,    % mc/bx
83     KozGoProVI-Regular , % gt/m  (multi)
84     KozGoProVI-Bold ,    % gt/bx
85     KozGoProVI-Medium  , % gt/m  (uni)
86     KozGoProVI-Heavy ,   % gt/eb
87     KozGoProVI-Heavy     % mg/m
88   }
89 }
90 %% Pr6N
91 \DeclareOption{kozuka-pr6n}{
92   \ltjpreset_set_multi:n {
93     KozMinPr6N-Regular , % mc/m
94     KozMinPr6N-Bold ,    % mc/bx
95     KozGoPr6N-Regular , % gt/m  (multi)
96     KozGoPr6N-Bold ,    % gt/bx
97     KozGoPr6N-Medium  , % gt/m  (uni)
98     KozGoPr6N-Heavy ,   % gt/eb
99     KozGoPr6N-Heavy     % mg/m
100   }
101 }
102
103 % ヒラギノ (OSX)
104 \DeclareOption{hiragino-pro}{
105   \ltjpreset_set_multi:n {
106     HiraMinPro-W3 , 
107     HiraMinPro-W6 , 
108     HiraKakuPro-W3 , % gt/m (multi)
109     HiraKakuPro-W6 , 
110     HiraKakuPro-W6 , % gt/m (uni)
111     HiraKakuStd-W8 , 
112     HiraMaruPro-W4 , 
113   }
114 }
115 \DeclareOption{hiragino-pron}{
116   \ltjpreset_set_multi:n {
117     HiraMinProN-W3 , 
118     HiraMinProN-W6 , 
119     HiraKakuProN-W3 , % gt/m (multi)
120     HiraKakuProN-W6 , 
121     HiraKakuProN-W6 , % gt/m (uni)
122     HiraKakuStdN-W8 , 
123     HiraMaruProN-W4 , 
124   }
125 }
126
127 % モリサワ
128 \DeclareOption{morisawa-pro}{
129   \ltjpreset_set_multi:n {
130     A-OTF-RyuminPro-Light.otf , A-OTF-FutoMinA101Pro-Bold.otf ,    % mc/m, mc/bx
131     A-OTF-GothicBBBPro-Medium.otf , A-OTF-FutoGoB101Pro-Bold.otf , % gt/m, gt/bx (multiweight))
132     A-OTF-GothicBBBPro-Medium.otf , A-OTF-MidashiGoPro-MB31.otf ,  % gt/m (uni), gt/eb
133     A-OTF-Jun101Pro-Light.otf % mg/m
134   }
135 }
136 \DeclareOption{morisawa-pr6n}{
137   \ltjpreset_set_multi:n {
138     A-OTF-RyuminPr6N-Light.otf , A-OTF-FutoMinA101Pr6N-Bold.otf ,    % mc/m, mc/bx
139     A-OTF-GothicBBBPr6N-Medium.otf , A-OTF-FutoGoB101Pr6N-Bold.otf , % gt/m, gt/bx (multiweight))
140     A-OTF-GothicBBBPr6N-Medium.otf , A-OTF-MidashiGoPr6N-MB31.otf ,  % gt/m (uni), gt/eb
141     A-OTF-ShinMGoPr6N-Light.otf                                      % mg/m
142   }
143 }
144
145 % 游明朝/游ゴシック (Win8.1)
146 \DeclareOption{yu-win}{
147   \ltjpreset_set_multi:n {
148     YuMincho-Regular , YuMincho-Demibold , % mc/m, mc/bx
149     YuGothic-Regular , YuGothic-Bold ,     % gt/m, gt/bx (multiweight))
150     YuGothic-Bold    , YuGothic-Bold ,     % gt/m (uni), gt/eb
151     YuGothic-Bold                          % mg/m
152   }
153 }
154
155 % Yu fonts in OSX
156 % according to http://support.apple.com/kb/HT5944
157 \DeclareOption{yu-osx}{
158   \ltjpreset_set_multi:n {
159     "YuMincho~Medium" , "YuMincho~Demibold" , % mc/m, mc/bx
160     "YuGothic~Medium" , "YuGothic~Bold" ,     % gt/m, gt/bx (multiweight))
161     "YuGothic~Bold"   , "YuGothic~Bold" ,     % gt/m (uni), gt/eb
162     "YuGothic~Bold"                          % mg/m
163   }
164 }
165
166 % moga-mobo
167 \DeclareOption{moga-mobo}{
168   \ltjpreset_set_multi:n {
169     Moga90Mincho, "Moga90Mincho~Bold" ,       % mc/m, mc/bx
170     Moga90Gothic, "Moga90Gothic~Bold" ,       % gt/m, gt/bx (multiweight))
171     "Moga90Gothic~Bold", "Moga90Gothic~Bold", % gt/m (uni), gt/eb
172     Mobo90Gothic                            % mg/m
173   }
174 }
175
176
177 % ipa, ipaex, ms
178 \DeclareOption{ipa}{
179   \ltjpreset_set_uni:nn { IPAMincho } { IPAGothic }
180 }
181 \DeclareOption{ipaex}{
182   \ltjpreset_set_uni:nn { IPAExMincho } { IPAExGothic }
183 }
184 \DeclareOption{ms}{
185   \ltjpreset_set_uni:nn { MS-Mincho } { MS-Gothic }
186 }
187
188 % {ipa,ipaex,ms}-dx % Office 付属フォントを利用
189 \DeclareOption{ipaex-hg}{
190   \ltjpreset_set_office:nn { IPAExMincho } { IPAExGothic }
191 }
192 \DeclareOption{ipa-hg}{
193   \ltjpreset_set_office:nn { IPAMincho } { IPAGothic }
194 }
195 \DeclareOption{ms-hg}{
196   \ltjpreset_set_office:nn { MS-Mincho } { MS-Gothic }
197 }
198
199
200 % 非埋込
201 \DeclareOption{noembed}{
202   \ltjpreset_set_uni:nn { Ryumin-Light } { GothicBBB-Medium }
203   \bool_set_true:N \l_ltjpreset_noembed_bool
204 }
205
206 \ExecuteOptions{ipaex}
207
208 % match 
209 \DeclareOption{match} {
210   \bool_if:NF  \ltj_fontspec_match_bool {
211     \ltj_fontspec_match_cmd
212     \bool_set_true:N \ltj_fontspec_match_bool
213   }
214 }
215 \ProcessOptions*
216
217 %%%%%%%% main routine
218
219 \msg_new:nnn { luatexja-preset }{ ltj-fontspec }{
220   The~ luatexja-fontspec~ package~ is~ loaded~ already.~
221   Hence~ we~ ignore~ `nfssonly'~option.
222 }
223 \@ifpackageloaded{luatexja-fontspec}{
224   \bool_if:NT \l_ltjpreset_nfssonly_bool
225     { \msg_warning:nn { luatexja-preset }{ ltj-fontspec } }
226   \bool_set_false:N \l_ltjpreset_nfssonly_bool
227 }{}
228
229 \bool_new:N \l_ltjpreset_shape_nlck_bool
230 %% KozMinPr6N, HiraMinProN-W3 の場合はjp04 feature がないので,nlck にする
231 \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
232 \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
233   \clist_if_in:NnT \l_ltjpreset_font_list { KozMinPr6N-Regular }
234    { \bool_set_true:N \l_ltjpreset_shape_nlck_bool }
235   \clist_if_in:NnT \l_ltjpreset_font_list { HiraMinProN-W3 }
236    { \bool_set_true:N \l_ltjpreset_shape_nlck_bool }
237    \clist_if_in:NnT \l_ltjpreset_font_list { Moga90Mincho }
238    { \tl_remove_all:Nn \l_ltjpreset_font_list {90} }%%% これでいいのか?
239  
240 }
241
242 %%%%  リストからの展開
243 % mc/m
244 \clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
245 \cs_set:Nx \ltjpreset_font_mc_m: { \tl_use:N \l_tmpa_tl }
246
247 % mc/bx
248 \clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
249 \cs_set:Nx \ltjpreset_font_mc_bx: { \tl_use:N \l_tmpa_tl }
250
251 % gt/m
252 \clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
253 \cs_set:Nx \ltjpreset_font_gt_m: { \tl_use:N \l_tmpa_tl }
254
255 % gt/bx
256 \clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
257 \cs_set:Nx \ltjpreset_font_gt_bx: { \tl_use:N \l_tmpa_tl }
258
259 % gt/m-uni
260 \clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
261 \cs_set:Nx \ltjpreset_font_gt_n_uni: { \tl_use:N \l_tmpa_tl }
262
263 % gt/eb
264 \clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
265 \cs_set:Nx \ltjpreset_font_gt_eb: { \tl_use:N \l_tmpa_tl }
266
267 % mg/m
268 \clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
269 \cs_set:Nx \ltjpreset_font_mg: { \tl_use:N \l_tmpa_tl }
270
271 %% HG 系フォント + JIS2004/90JIS のときはフォント名を置換
272 \bool_if:NT \l_ltjpreset_office_bool {
273   \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
274   \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl { 
275     \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme04.ttc }
276     \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge04.ttc }
277     \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu04.ttc }
278     \cs_set:Nx \ltjpreset_font_mg:    { hgrsmp04.ttf }
279     \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni:
280     % HG ゴシックM のときはそうはいかないので 1 ウェイト時のゴシック体を使う
281   }
282   \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 }
283   \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl { 
284     \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme.ttc }
285     \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge.ttc }
286     \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu.ttc }
287     \cs_set:Nx \ltjpreset_font_mg:    { hgrsmp.ttf }
288   }
289 }
290
291 %% 90JIS/JIS2004 字形指定のオプション
292 \bool_if:NTF \l_ltjpreset_nfssonly_bool {
293   \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 }
294   \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
295     \tl_set:Nn \l_ltjpreset_kanji_shape_tl { +jp90 }
296   }
297   \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
298   \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
299     \bool_if:NTF \l_ltjpreset_shape_nlck_bool 
300       { \tl_set:Nn \l_ltjpreset_kanji_shape_tl { +nlck } }
301       { \tl_set:Nn \l_ltjpreset_kanji_shape_tl { +jp04 } }
302   }
303 } {
304   \tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
305   \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
306     \bool_if:NT \l_ltjpreset_shape_nlck_bool 
307       { \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=NLC } }
308   }
309 }
310
311 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
312 %%%%%%%% nfss only
313 \bool_if:NTF \l_ltjpreset_nfssonly_bool {
314
315 \fp_new:N \l_ltjpreset_scale_fp
316 \group_begin:
317 \fontsize{10}{10}\selectfont
318 \fp_gset:Nn \l_ltjpreset_scale_fp {\zw / 10}
319 \group_end:
320 \msg_new:nnn { luatexja-preset }{ scale }{
321   Japanese~fonts~will~be~scaled~by~\fp_use:N \l_ltjpreset_scale_fp.
322 }
323 \msg_warning:nn { luatexja-preset }{ scale }
324
325 \cs_new:Nn \ltj_preset_define_family:nnn {
326   \DeclareFontShape{JY3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] 
327     {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} #3
328     : jfm=\ltjpreset_use_jfm: ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl
329     ; script=latn \bool_if:NT \l_ltjpreset_expert_bool { ;+hkna }}
330   } {}
331   \DeclareFontShape{JT3}{#1}{#2}{n}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] 
332     {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} #3
333     : jfm=ujisv ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl
334     ; script=latn \bool_if:NT \l_ltjpreset_expert_bool { ;+vkna }}
335   } {}
336   \bool_if:NT \l_ltjpreset_expert_bool { 
337     \DeclareFontShape{JY3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] 
338       {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} #3
339       : jfm=\ltjpreset_use_jfm: ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl ;+ruby
340       ; script=kana}
341     } {}
342     \DeclareFontShape{JT3}{#1}{#2}{rb}{ <-> s*[\fp_use:N \l_ltjpreset_scale_fp] 
343       {\bool_if:NT \l_ltjpreset_noembed_bool {psft:} #3
344       : jfm=ujisv ;-kern;\tl_use:N \l_ltjpreset_kanji_shape_tl ;+ruby
345       ; script=kana}
346     } {}
347   }
348 }
349
350 \DeclareKanjiFamily{JY3}{ltjpm}{}\DeclareKanjiFamily{JT3}{ltjpm}{}
351 \DeclareKanjiFamily{JY3}{ltjpg}{}\DeclareKanjiFamily{JT3}{ltjpg}{}
352
353 \int_compare:nTF { \l_ltjpreset_deluxe_int ==  2 } {
354   \bool_if:NT \l_ltjpreset_bold_bool {
355     \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_bx:
356   }
357 }{
358   \bool_if:NTF \l_ltjpreset_bold_bool {
359     \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_bx:
360   }{
361     \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni:
362   }
363   \cs_set_eq:NN \ltjpreset_font_gt_bx: \ltjpreset_font_gt_m:
364   \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_m:
365 }
366
367 \ltj_preset_define_family:nnn {ltjpm} {m}  {\ltjpreset_font_mc_m:} 
368 \ltj_preset_define_family:nnn {ltjpm} {bx} {\ltjpreset_font_mc_bx:}
369 \ltj_preset_define_family:nnn {ltjpg} {m}  {\ltjpreset_font_gt_m:} 
370 \ltj_preset_define_family:nnn {ltjpg} {bx} {\ltjpreset_font_gt_bx:}
371
372 \def\mcdefault{ltjpm}\def\gtdefault{ltjpg}
373 \normalfont
374
375 \SetSymbolFont{mincho}{normal}{JY3}{ltjpm}{m}{n}
376 \SetSymbolFont{mincho}{bold}{JY3}{ltjpm}{bx}{n}
377 \DeclareMathAlphabet{\mathgt}{JY3}{ltjpg}{m}{n}
378
379 \bool_if:NT \l_ltjpreset_expert_bool { 
380   \DeclareRobustCommand\rubyfamily { \kanjishape{rb}\selectfont }
381 }
382
383 \int_compare:nTF { \l_ltjpreset_deluxe_int ==  2 } {
384   \DeclareKanjiFamily{JY3}{ltjpmg}{}\DeclareKanjiFamily{JT3}{ltjpmg}{}
385   \ltj_preset_define_family:nnn {ltjpmg} {m}  {\ltjpreset_font_mg:} 
386   \ltj_preset_define_family:nnn {ltjpg}  {eb} {\ltjpreset_font_gt_eb:}
387   \def\ebdefault{eb}
388   \DeclareRobustCommand\ebseries { \not@math@alphabet\ebseries\relaxfontseries\ebdefault\selectfont }
389   \DeclareRobustCommand\gtebfamily { \kanjifamily{ltjpg}\fontseries{eb}\selectfont }
390   \DeclareTextFontCommand{\textgteb}{\gtebfamily}
391   \DeclareRobustCommand\mgfamily { \not@math@alphabet\mgfamily\relax\kanjifamily{ltjpmg}\selectfont }
392   \DeclareTextFontCommand{\textmg}{\mgfamily}
393 }
394
395 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
396 %%%%%%%% fontspec
397 } {
398
399 \RequirePackage{luatexja-fontspec}
400 % scale
401 \msg_new:nnn { luatexja-preset }{ scale }{
402   Japanese~fonts~will~be~scaled~by~\fp_use:N \g_ltj_fontspec_scale_fp.
403 }
404 \msg_warning:nn { luatexja-preset }{ scale }
405
406 % expert 用設定
407 \tl_new:N \l_ltjpreset_add_features_tl
408
409 \tl_set:Nx \l_ltjpreset_add_features_tl {
410   \tl_use:N \l_ltjpreset_kanji_shape_tl,
411   YokoFeatures = { JFM = \ltjpreset_use_jfm: }, 
412 }
413
414 \bool_if:NT \l_ltjpreset_expert_bool {
415   \cs_set:Npn \rubyfamily { \addjfontfeatures { 
416     Style=Ruby , YokoFeatures={RawFeature=-hkna} , TateFeatures={RawFeature=-vkna}
417   } }
418   \tl_put_left:Nn \l_ltjpreset_add_features_tl { 
419     YokoFeatures = {Style = HorizontalKana}, 
420     TateFeatures = {Style = VerticalKana}, 
421   }
422 }
423
424 % (丸)ゴシック体の設定: bold option もここで
425 \int_compare:nTF { \l_ltjpreset_deluxe_int ==  2 } {
426 %% mg
427  \newjfontfamily \mgfamily [
428       BoldFont = \ltjpreset_font_mg:,
429       \tl_use:N \l_ltjpreset_add_features_tl
430       \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }, 
431       \tl_use:N \l_ltjpreset_add_features_tl 
432     ] { \ltjpreset_font_mg: }
433     \DeclareTextFontCommand{\textmg}{\mgfamily}
434 %% gt/eb
435 %% 注意: ファミリは 'gteb'.シリーズは \mdseries のまま.
436 %%       \bfseries を追加したほうが良い?
437   \newjfontfamily \gtebfamily [
438       BoldFont = \ltjpreset_font_gt_eb:, 
439       \tl_use:N \l_ltjpreset_add_features_tl
440       \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }, 
441       \tl_use:N \l_ltjpreset_add_features_tl 
442     ] { \ltjpreset_font_gt_eb: }
443   \DeclareTextFontCommand{\textgteb}{\gtebfamily}
444   \bool_if:NT \l_ltjpreset_bold_bool {
445     \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_bx:
446   }
447 }{
448   \bool_if:NTF \l_ltjpreset_bold_bool {
449     \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_bx:
450   }{
451     \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni:
452   }
453   \cs_set_eq:NN \ltjpreset_font_gt_bx: \ltjpreset_font_gt_m:
454   \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_m:
455 }
456
457
458 % 実際の fontspec の呼びだし
459
460 \addjfontfeature{ Kerning=Off }
461
462 \setmainjfont [ 
463   BoldFont = \ltjpreset_font_mc_bx:
464   \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }, 
465   \tl_use:N \l_ltjpreset_add_features_tl 
466 ] { \ltjpreset_font_mc_m: }
467 \setsansjfont [ 
468   BoldFont = \ltjpreset_font_gt_bx: 
469   \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }, 
470   \tl_use:N \l_ltjpreset_add_features_tl 
471 ] { \ltjpreset_font_gt_m: }
472
473 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
474 }
475 \ExplSyntaxOff
476 \endinput