summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty')
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty278
1 files changed, 278 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty
new file mode 100644
index 00000000000..d4fd53bbfc9
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty
@@ -0,0 +1,278 @@
+% luatexja-preset.sty
+\ProvidesPackage{luatexja-preset}
+ [2012/05/18 v0.0]
+
+\RequirePackage{expl3}
+\RequirePackage{luatexja-fontspec}
+\ExplSyntaxOn
+
+%%%% message
+
+
+\bool_new:N \l_ltjpreset_bold_bool % bold
+\bool_set_false:N \l_ltjpreset_bold_bool
+\DeclareOption{bold} {\bool_set_true:N \l_ltjpreset_bold_bool}
+\DeclareOption{nobold}{\bool_set_false:N \l_ltjpreset_bold_bool}
+
+\bool_new:N \l_ltjpreset_expert_bool % expert
+\bool_set_false:N \l_ltjpreset_expert_bool
+\DeclareOption{expert} {\bool_set_true:N \l_ltjpreset_expert_bool}
+\DeclareOption{noexpert}{\bool_set_false:N \l_ltjpreset_expert_bool}
+
+\int_new:N \l_ltjpreset_deluxe_int % expert
+\int_set:Nn \l_ltjpreset_deluxe_int { 0 }
+\DeclareOption{deluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 2 }} % 7 fonts
+\DeclareOption{nodeluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 0 }} % 2 fonts
+
+% scale
+{ \fontsize{1024}{1024}\selectfont
+ \fp_set_from_dim:Nn \l_ltjpreset_scale_fp \zw
+ \fp_gdiv:Nn \l_ltjpreset_scale_fp {1024}
+}
+\msg_new:nnn { luatexja-preset }{ scale }{
+ 日本語フォントは~\fp_use:N \l_ltjpreset_scale_fp~倍にスケーリングされます.
+}
+\msg_warning:nn { luatexja-preset }{ scale }
+
+% JFM
+\cs_set:Npn \ltjpreset_use_jfm: {ujis} % 使用する JFM
+%%% \DeclareOption{min}{\cs_set:Npn \ltjpreset_use_jfm: {min}} % min
+%%% ↑jfm-min.lua が横組み・縦組み専用仮名に追いついていないので使用禁止
+\DeclareOption{jis}{\cs_set:Npn \ltjpreset_use_jfm: {jis}} % jis
+\DeclareOption{ujis}{\cs_set:Npn \ltjpreset_use_jfm: {ujis}} % ujis
+
+% 漢字字形
+\tl_new:N \l_ltjpreset_kanji_shape_tl
+\DeclareOption{90jis}{ \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , RawFeature = +jp90 }} % 90jis
+\DeclareOption{jis2004}{\tl_set:Nn \l_ltjpreset_kanji_shape_tl { , RawFeature = +jp04 }} % jis2004
+
+% font preset
+\bool_new:N \l_ltjpreset_office_bool % MS Office の HG 系フォントを使っているか
+\bool_new:N \l_ltjpreset_noembed_bool % 非埋込か
+\clist_new:N \l_ltjpreset_font_list
+
+\cs_new:Npn \ltjpreset_set_uni:nn #1#2 {
+ \ltjpreset_set_multi:n { #1, #1, #2, #2, #2, #2, #1 }
+}
+\cs_new:Npn \ltjpreset_set_multi:n #1 {
+ \clist_set:Nn \l_ltjpreset_font_list { #1 }
+ \bool_set_false:N \l_ltjpreset_office_bool
+ \bool_set_false:N \l_ltjpreset_noembed_bool
+}
+\cs_new:Npn \ltjpreset_set_office:nn #1 #2{
+ \ltjpreset_set_multi:n {
+ #1, HGMinchoE , % mc/m, mc/bx
+ HGGothicM , HGGothicE , % gt/m, gt/bx (multiweight))
+ #2 , HGSoeiKakugothicUB , % gt/m (uni), gt/eb
+ HGMaruGothicMPRO % mg/m
+ }
+ \bool_set_true:N \l_ltjpreset_office_bool
+}
+
+% kozuka
+\DeclareOption{kozuka4}{
+ \ltjpreset_set_multi:n {
+ KozMinPro-Regular.otf , KozMinPro-Bold.otf, % mc/m, mc/bx
+ KozGoPro-Regular.otf , KozGoPro-Bold.otf, % gt/m, gt/bx (multiweight))
+ KozGoPro-Medium.otf , KozGoPro-Heavy.otf, % gt/m (uni), gt/eb
+ KozGoPro-Heavy.otf % mg/m
+ }
+}
+\DeclareOption{kozuka6}{
+ \ltjpreset_set_multi:n {
+ KozMinProVI-Regular.otf , KozMinProVI-Bold.otf, % mc/m, mc/bx
+ KozGoProVI-Regular.otf , KozGoProVI-Bold.otf, % gt/m, gt/bx (multiweight))
+ KozGoProVI-Medium.otf , KozGoProVI-Heavy.otf, % gt/m (uni), gt/eb
+ KozGoProVI-Heavy.otf % mg/m
+ }
+}
+\DeclareOption{kozuka6n}{
+ \ltjpreset_set_multi:n {
+ KozMinPr6N-Regular.otf , KozMinPr6N-Bold.otf, % mc/m, mc/bx
+ KozGoPr6N-Regular.otf , KozGoPr6N-Bold.otf, % gt/m, gt/bx (multiweight))
+ KozGoPr6N-Medium.otf , KozGoPr6N-Heavy.otf, % gt/m (uni), gt/eb
+ KozGoPr6N-Heavy.otf % mg/m
+ }
+}
+
+% hiragino
+\DeclareOption{hiragino}{
+ \ltjpreset_set_multi:n {
+ HiraMinPro-W3.otf , HiraMinPro-W6.otf, % mc/m, mc/bx
+ HiraKakuPro-W3.otf , HiraKakuPro-W6.otf, % gt/m, gt/bx (multiweight))
+ HiraKakuPro-W3.otf , HiraKakuStd-W8.otf, % gt/m (uni), gt/eb
+ HiraMaruPro-W4.otf % mg/m
+ }
+}
+\DeclareOption{hiraginon}{
+ \ltjpreset_set_multi:n {
+ HiraMinProN-W3.otf , HiraMinProN-W6.otf, % mc/m, mc/bx
+ HiraKakuProN-W3.otf , HiraKakuProN-W6.otf, % gt/m, gt/bx (multiweight))
+ HiraKakuProN-W3.otf , HiraKakuStdN-W8.otf, % gt/m (uni), gt/eb
+ HiraMaruProN-W4.otf % mg/m
+ }
+}
+
+% morisawa?
+\DeclareOption{morisawa4}{
+ \ltjpreset_set_multi:n {
+ A-OTF-RyuminPro-Light.otf , A-OTF-FutoMinA101Pro-Bold.otf , % mc/m, mc/bx
+ A-OTF-GothicBBBPro-Medium.otf , A-OTF-FutoGoB101Pro-Bold.otf , % gt/m, gt/bx (multiweight))
+ A-OTF-GothicBBBPro-Medium.otf , A-OTF-MidashiGoPro-MB31.otf , % gt/m (uni), gt/eb
+ A-OTF-Jun101Pro-Light.otf % mg/m
+ }
+}
+\DeclareOption{morisawa6n}{
+ \ltjpreset_set_multi:n {
+ A-OTF-RyuminPr6N-Light.otf , A-OTF-FutoMinA101Pr6N-Bold.otf , % mc/m, mc/bx
+ A-OTF-GothicBBBPr6N-Medium.otf , A-OTF-FutoGoB101Pr6N-Bold.otf , % gt/m, gt/bx (multiweight))
+ A-OTF-GothicBBBPr6N-Medium.otf , A-OTF-MidashiGoPr6N-MB31.otf , % gt/m (uni), gt/eb
+ A-OTF-Jun101Pr6N-Light.otf % mg/m
+ }
+}
+
+
+% ipa, ipaex, ms
+\DeclareOption{ipa}{
+ \ltjpreset_set_uni:nn { IPAMincho } { IPAGothic }
+}
+\DeclareOption{ipaex}{
+ \ltjpreset_set_uni:nn { IPAExMincho } { IPAExGothic }
+}
+\DeclareOption{ms}{
+ \ltjpreset_set_uni:nn { MS-Mincho } { MS-Gothic }
+}
+
+% {ipa,ipaex,ms}-dx % Office 付属フォントを利用
+\DeclareOption{ipaex-dx}{
+ \ltjpreset_set_office:nn { IPAExMincho } { IPAExGothic }
+}
+\DeclareOption{ipa-dx}{
+ \ltjpreset_set_office:nn { IPAMincho } { IPAGothic }
+}
+\DeclareOption{ms-dx}{
+ \ltjpreset_set_office:nn { MS-Mincho } { MS-Gothic }
+}
+
+
+% 非埋込
+\DeclareOption{noembed}{
+ \ltjpreset_set_uni:nn { Ryumin-Light } { GothicBBB-Medium }
+ \bool_set_true:N \l_ltjpreset_noembed_bool
+}
+
+\ExecuteOptions{noembed}
+\ProcessOptions*
+
+%% KozMinPr6N の場合はjp04 feature がないので,nlck にする
+\clist_if_in:NnT \l_ltjpreset_font_list { KozMinPr6N-Regular.otf } {
+ \tl_set:Nn \l_tmpa_tl {, RawFeature = +jp04}
+ \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
+ \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , RawFeature = +nlck }
+ }
+}
+
+%%%%%%%% main routine
+
+%%%% リストからの展開
+% mc/m
+\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
+\cs_set:Nx \ltjpreset_font_mc_m: { \tl_use:N \l_tmpa_tl }
+
+% mc/bx
+\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
+\cs_set:Nx \ltjpreset_font_mc_bx: { \tl_use:N \l_tmpa_tl }
+
+% gt/m
+\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
+\cs_set:Nx \ltjpreset_font_gt_m: { \tl_use:N \l_tmpa_tl }
+
+% gt/bx
+\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
+\cs_set:Nx \ltjpreset_font_gt_bx: { \tl_use:N \l_tmpa_tl }
+
+% gt/m-uni
+\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
+\cs_set:Nx \ltjpreset_font_gt_n_uni: { \tl_use:N \l_tmpa_tl }
+
+% gt/eb
+\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
+\cs_set:Nx \ltjpreset_font_gt_eb: { \tl_use:N \l_tmpa_tl }
+
+% mg/m
+\clist_pop:NN \l_ltjpreset_font_list \l_tmpa_tl
+\cs_set:Nx \ltjpreset_font_mg: { \tl_use:N \l_tmpa_tl }
+
+%% HG 系フォント + JIS2004/90JIS のときはフォント名を置換
+\bool_if:NT \l_ltjpreset_office_bool {
+ \tl_set:Nn \l_tmpa_tl {, RawFeature = +jp04}
+ \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
+ \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme04.ttc }
+ \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge04.ttc }
+ \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu04.ttc }
+ \cs_set:Nx \ltjpreset_font_mg: { hgrsmp04.ttf }
+ \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni:
+ % HG ゴシックM のときはそうはいかないので 1 ウェイト時のゴシック体を使う
+ }
+ \tl_set:Nn \l_tmpa_tl {, RawFeature = +jp90}
+ \tl_if_eq:NNT \l_ltjpreset_kanji_shape_tl \l_tmpa_tl {
+ \cs_set:Nx \ltjpreset_font_mc_bx: { hgrme.ttc }
+ \cs_set:Nx \ltjpreset_font_gt_bx: { hgrge.ttc }
+ \cs_set:Nx \ltjpreset_font_gt_eb: { hgrsgu.ttc }
+ \cs_set:Nx \ltjpreset_font_mg: { hgrsmp.ttf }
+ }
+}
+
+%%%% expert 用設定
+\tl_new:N \l_ltjpreset_add_features_tl
+
+\tl_set:Nx \l_ltjpreset_add_features_tl {
+ Scale = \fp_use:N \l_ltjpreset_scale_fp ,
+ \tl_use:N \l_ltjpreset_kanji_shape_tl,
+ JFM = \ltjpreset_use_jfm:
+}
+
+\bool_if:NT \l_ltjpreset_expert_bool {
+ \cs_set:Npn \rubyfamily { \addfontfeatures { Style = Ruby} }
+ \tl_put_left:Nn \l_ltjpreset_add_features_tl { Style = HorizontalKana, }
+}
+
+%%%% (丸)ゴシック体の設定: bold option もここで
+\int_compare:nTF { \l_ltjpreset_deluxe_int == 2 } {
+ \newjfontfamily \mgfamily [
+ \tl_use:N \l_ltjpreset_add_features_tl
+ \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }
+ ] { \ltjpreset_font_mg: }
+ \newjfontfamily \gtebfamily [
+ \tl_use:N \l_ltjpreset_add_features_tl
+ \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }
+ ] { \ltjpreset_font_gt_eb: }
+ \bool_if:NT \l_ltjpreset_bold_bool {
+ \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_bx:
+ }
+}{
+ \bool_if:NTF \l_ltjpreset_bold_bool {
+ \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_bx:
+ }{
+ \cs_set_eq:NN \ltjpreset_font_gt_m: \ltjpreset_font_gt_n_uni:
+ }
+ \cs_set_eq:NN \ltjpreset_font_gt_bx: \ltjpreset_font_gt_m:
+ \cs_set_eq:NN \ltjpreset_font_mc_bx: \ltjpreset_font_gt_m:
+}
+
+
+%%%% 実際の fontspec の呼びだし
+
+\defaultjfontfeatures{ Kerning=Off, \tl_use:N \l_ltjpreset_add_features_tl }
+
+\setmainjfont [
+ BoldFont = \ltjpreset_font_mc_bx:
+ \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }
+] { \ltjpreset_font_mc_m: }
+\setsansjfont [
+ BoldFont = \ltjpreset_font_gt_bx:
+ \bool_if:NT \l_ltjpreset_noembed_bool { , NoEmbed }
+] { \ltjpreset_font_gt_m: }
+
+\ExplSyntaxOff
+\endinput \ No newline at end of file