diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xduts/xdufont.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xduts/xdufont.sty | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty b/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty new file mode 100644 index 00000000000..b705cb85ec0 --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty @@ -0,0 +1,378 @@ +%% +%% This is file `xdufont.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xduts.dtx (with options: `sty,xdufont') +%% +%% Copyright (C) 2022--2022 by @note286 in GitHub +%% --------------------------------------------------------------------- +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% --------------------------------------------------------------------- +%% +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3} +\ProvidesExplPackage{xdufont} + {2022/04/10}{0.6.0.0} + {Xidian University Font package} +\RequirePackage { xparse, l3keys2e } +\PassOptionsToPackage { quiet } { xeCJK } +\RequirePackage { xeCJK } +\tl_new:N \l__xdu_cjk_font_tl +\str_new:N \l__xdu_fake_bold_str +\str_new:N \l__xdu_fake_slant_str +\tl_new:N \l__xdu_latin_font_tl +\tl_new:N \l__xdu_math_font_tl +\tl_new:N \l__xdu_unicode_math_tl +\tl_new:N \l__xdu_font_type_tl +\tl_new:N \l__xdu_font_path_tl +\keys_define:nn { xdu / style } + { + cjk-font .choices:nn = + { win, adobe, founder, sinotype, fandol, none } + { \tl_set_eq:NN \l__xdu_cjk_font_tl \l_keys_choice_tl }, + cjk-fake-bold .str_set:N = \l__xdu_fake_bold_str, + cjk-fake-slant .str_set:N = \l__xdu_fake_slant_str, + latin-font .choices:nn = { tacn, thcs, none } + { \tl_set_eq:NN \l__xdu_latin_font_tl \l_keys_choice_tl }, + math-font .choices:nn = + { + asana, cambria, cm, fira, garamond, lm, libertinus, stix, + bonum, dejavu, pagella, schola, termes, xits, none + } + { \tl_set_eq:NN \l__xdu_math_font_tl \l_keys_choice_tl }, + unicode-math .tl_set:N = \l__xdu_unicode_math_tl, + font-type .choices:nn = { font, file } + { \tl_set_eq:NN \l__xdu_font_type_tl \l_keys_choice_tl }, + font-path .tl_set:N = \l__xdu_font_path_tl + } +\keys_set:nn { xdu } + { + style / cjk-font = win, + style / cjk-fake-bold = 3, + style / cjk-fake-slant = 0.2, + style / latin-font = tacn, + style / math-font = cm, + style / unicode-math = { }, + style / font-type = font, + style / font-path = fonts + } +\cs_new:Npn \__xdu_if_platform_macos:FT #1#2 + { \file_if_exist:nTF { /System/Library/Fonts/Menlo.ttc } { #2 } { #1 } } +\cs_new:Npn \__xdu_texmf_font:nn #1#2 + { \__xdu_if_platform_macos:FT { #1 } { #2 } } +\cs_new:Npn \__xdu_select_font:nn #1#2 + { + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { #1 } + { #2 } + } +\cs_new:Npn \__xdu_font_path: + { + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { } + { Path = \l__xdu_font_path_tl / , } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_b:n #1 + { + BoldFont = { #1 } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_fb:n #1 + { + BoldFont = { #1 }, + BoldFeatures = { FakeBold = \l__xdu_fake_bold_str } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_fs:n #1 + { + SlantedFont = { #1 }, + SlantedFeatures = { FakeSlant = \l__xdu_fake_slant_str } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_fbfs:n #1 + { + BoldSlantedFont = { #1 }, + BoldSlantedFeatures = + { + FakeBold = \l__xdu_fake_bold_str, + FakeSlant = \l__xdu_fake_slant_str + } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_bfs:n #1 + { + BoldSlantedFont = { #1 }, + BoldSlantedFeatures = { FakeSlant = \l__xdu_fake_slant_str } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_i:n #1 + { + ItalicFont = { #1 } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_fi:n #1 + { + ItalicFont = { #1 }, + ItalicFeatures = { FakeSlant = \l__xdu_fake_slant_str } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_ifb:n #1 + { + BoldItalicFont = { #1 }, + BoldItalicFeatures = { FakeBold = \l__xdu_fake_bold_str } + } +\cs_new:Npn \__xdu_cfg_cjk_font_sub_fifb:n #1 + { + BoldItalicFont = { #1 }, + BoldItalicFeatures = + { + FakeBold = \l__xdu_fake_bold_str, + FakeSlant = \l__xdu_fake_slant_str + } + } +\cs_new:Npn \__xdu_cfg_cjk_font_r:n #1 + { + \__xdu_cfg_cjk_font_sub_fb:n { #1 }, + \__xdu_cfg_cjk_font_sub_fs:n { #1 }, + \__xdu_cfg_cjk_font_sub_fbfs:n { #1 }, + \__xdu_cfg_cjk_font_sub_fi:n { #1 }, + \__xdu_cfg_cjk_font_sub_fifb:n { #1 } + } +\cs_new:Npn \__xdu_cfg_cjk_font_rb:nn #1#2 + { + \__xdu_cfg_cjk_font_sub_b:n { #2 }, + \__xdu_cfg_cjk_font_sub_fs:n { #1 }, + \__xdu_cfg_cjk_font_sub_bfs:n { #2 }, + \__xdu_cfg_cjk_font_sub_fi:n { #1 }, + \__xdu_cfg_cjk_font_sub_fifb:n { #1 } + } +\cs_new:Npn \__xdu_cfg_cjk_font_ri:nn #1#2 + { + \__xdu_cfg_cjk_font_sub_fb:n { #1 }, + \__xdu_cfg_cjk_font_sub_fs:n { #1 }, + \__xdu_cfg_cjk_font_sub_fbfs:n { #1 }, + \__xdu_cfg_cjk_font_sub_i:n { #2 }, + \__xdu_cfg_cjk_font_sub_ifb:n { #2 } + } +\cs_new:Npn \__xdu_cfg_cjk_font_rbi:nnn #1#2#3 + { + \__xdu_cfg_cjk_font_sub_b:n { #2 }, + \__xdu_cfg_cjk_font_sub_fs:n { #1 }, + \__xdu_cfg_cjk_font_sub_bfs:n { #2 }, + \__xdu_cfg_cjk_font_sub_i:n { #3 }, + \__xdu_cfg_cjk_font_sub_ifb:n { #3 } + } +\cs_new:Npn \__xdu_set_cjk_main_font:nn #1#2 + { + \setCJKmainfont { #1 } + [ \__xdu_font_path: \__xdu_cfg_cjk_font_ri:nn { #1 } { #2 } ] + } +\cs_new:Npn \__xdu_set_cjk_main_font:nnn #1#2#3 + { + \setCJKmainfont { #1 } + [ \__xdu_font_path: \__xdu_cfg_cjk_font_rbi:nnn { #1 } { #2 } { #3 } ] + } +\cs_new:Npn \__xdu_set_cjk_sans_font:n #1 + { + \setCJKsansfont { #1 } + [ \__xdu_font_path: \__xdu_cfg_cjk_font_r:n { #1 } ] + } +\cs_new:Npn \__xdu_set_cjk_sans_font:nn #1#2 + { + \setCJKsansfont { #1 } + [ \__xdu_font_path: \__xdu_cfg_cjk_font_rb:nn { #1 } { #2 } ] + } +\cs_new:Npn \__xdu_set_cjk_mono_font:n #1 + { + \setCJKmonofont { #1 } + [ \__xdu_font_path: \__xdu_cfg_cjk_font_r:n { #1 } ] + } +\cs_new:Npn \__xdu_load_cjk_font_win: + { + \__xdu_set_cjk_main_font:nn + { \__xdu_select_font:nn { SimSun } { simsun.ttc } } + { \__xdu_select_font:nn { KaiTi } { simkai.ttf } } + \__xdu_set_cjk_sans_font:n + { \__xdu_select_font:nn { SimHei } { simhei.ttf } } + \__xdu_set_cjk_mono_font:n + { \__xdu_select_font:nn { FangSong } { simfang.ttf } } + } +\cs_new:Npn \__xdu_load_cjk_font_adobe: + { + \__xdu_set_cjk_main_font:nn + { \__xdu_select_font:nn { Adobe~Song~Std } { adobesongstd-light.otf } } + { \__xdu_select_font:nn { Adobe~Kaiti~Std } { adobekaitistd-regular.otf } } + \__xdu_set_cjk_sans_font:n + { \__xdu_select_font:nn { Adobe~Heiti~Std } { adobeheitistd-regular.otf } } + \__xdu_set_cjk_mono_font:n + { \__xdu_select_font:nn { Adobe~Fangsong~Std } { Adobe-Fangsong-Std-R-Font.otf } } + } +\cs_new:Npn \__xdu_load_cjk_font_founder: + { + \__xdu_set_cjk_main_font:nn + { \__xdu_select_font:nn { FZShuSong-Z01 } { FZShuSong-Z01.ttf } } + { \__xdu_select_font:nn { FZKai-Z03 } { FZKai-Z03.ttf } } + \__xdu_set_cjk_sans_font:n + { \__xdu_select_font:nn { FZHei-B01 } { FZHei-B01.ttf } } + \__xdu_set_cjk_mono_font:n + { \__xdu_select_font:nn { FZFangSong-Z02 } { FZFSK.TTF } } + } +\cs_new:Npn \__xdu_load_cjk_font_sinotype: + { + \__xdu_set_cjk_main_font:nn + { \__xdu_select_font:nn { STSong } { STSONG.TTF } } + { \__xdu_select_font:nn { STKaiti } { STKAITI.TTF } } + \__xdu_set_cjk_sans_font:nn + { \__xdu_select_font:nn { STXihei } { STXIHEI.TTF } } + { \__xdu_select_font:nn { STHeiti } { STHeiti.ttf } } + \__xdu_set_cjk_mono_font:n + { \__xdu_select_font:nn { STFangsong } { STFANGSO.TTF } } + } +\cs_new:Npn \__xdu_load_cjk_font_fandol: + { + \__xdu_set_cjk_main_font:nnn + { FandolSong-Regular.otf } + { FandolSong-Bold.otf } + { FandolKai-Regular.otf } + \__xdu_set_cjk_sans_font:nn + { FandolHei-Regular.otf } + { FandolHei-Bold.otf } + \__xdu_set_cjk_mono_font:n + { FandolFang-Regular.otf } + } +\cs_new:Npn \__xdu_load_cjk_font_none: { } +\cs_new:Npn \__xdu_set_latin_font:nnn #1#2#3 + { + \__xdu_font_path: + BoldFont = { #1 }, + SlantedFont = { #2 }, + BoldSlantedFont = { #3 }, + ItalicFont = { #2 }, + BoldItalicFont = { #3 } + } +\cs_new:Npn \__xdu_set_latin_main_font:nnnnn #1#2#3#4#5 + { + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { \setmainfont { #1 } } + { \setmainfont { #2 } [ \__xdu_set_latin_font:nnn { #3 } { #4 } { #5 } ] } + } +\cs_new:Npn \__xdu_set_latin_sans_font:nnnnn #1#2#3#4#5 + { + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { \setsansfont { #1 } } + { \setsansfont { #2 } [ \__xdu_set_latin_font:nnn { #3 } { #4 } { #5 } ] } + } +\cs_new:Npn \__xdu_set_latin_mono_font:nnnnn #1#2#3#4#5 + { + \str_if_eq:NNTF { \l__xdu_font_type_tl } { font } + { \setmonofont{ #1 } } + { \setmonofont{ #2 } [ \__xdu_set_latin_font:nnn { #3 } { #4 } { #5 } ] } + } +\cs_new:Npn \__xdu_load_latin_font_tacn: + { + \__xdu_set_latin_main_font:nnnnn + { Times~New~Roman } { times.ttf } { timesbd.ttf } { timesi.ttf } { timesbi.ttf } + \__xdu_set_latin_sans_font:nnnnn + { Arial } { arial.ttf } { arialbd.ttf } { ariali.ttf } { arialbi.ttf } + \__xdu_set_latin_mono_font:nnnnn + { Courier~New } { cour.ttf } { courbd.ttf } { couri.ttf } { courbi.ttf } + } +\cs_new:Npn \__xdu_load_latin_font_thcs: + { + \__xdu_set_latin_main_font:nnnnn + { Times~New~Roman } + { times.ttf } + { timesbd.ttf } + { timesi.ttf } + { timesbi.ttf } + \__xdu_set_latin_sans_font:nnnnn + { Helvetica } + { Helvetica.ttf } + { Helvetica~Bold.ttf } + { Helvetica~Oblique.ttf } + { Helvetica~Bold~Oblique.ttf } + \__xdu_set_latin_mono_font:nnnnn + { Courier~Std } + { CourierStd.otf } + { CourierStd-Bold.otf } + { CourierStd-Oblique.otf } + { CourierStd-BoldOblique.otf } + } +\cs_new:Npn \__xdu_load_latin_font_none: { } +\cs_new:Npn \__xdu_load_unicode_math_pkg: + { + \RequirePackage + [ \l__xdu_unicode_math_tl ] + { unicode-math } + } +\cs_new:Npn \__xdu_load_math_font_cambria: + { + \__xdu_load_unicode_math_pkg: + \str_if_eq:NNTF { \l__xdu_font_type_tl} { font} + { \setmathfont { Cambria~Math} } + { \setmathfont { cambria.ttc} [ Path = \l__xdu_font_path_tl/, FontIndex = 1 ] } + } +\cs_new:Npn \__xdu_define_math_font:nn #1#2 + { + \cs_new:cpn { __xdu_load_math_font_ #1 : } + { + \__xdu_load_unicode_math_pkg: + \setmathfont { #2 } + } + } +\clist_map_inline:nn + { + { asana } { Asana-Math.otf }, + { fira } { FiraMath-Regular.otf }, + { garamond } { Garamond-Math.otf }, + { lm } { latinmodern-math.otf }, + { libertinus } { LibertinusMath-Regular.otf }, + { stix } { STIXMath-Regular.otf }, + { bonum } { texgyrebonum-math.otf }, + { dejavu } { texgyredejavu-math.otf }, + { pagella } { texgyrepagella-math.otf }, + { schola } { texgyreschola-math.otf }, + { termes } { texgyretermes-math.otf } + } + { \__xdu_define_math_font:nn #1 } +\cs_new:Npn \__xdu_load_math_font_xits: + { + \__xdu_load_unicode_math_pkg: + \__xdu_if_platform_macos:FT + { + \setmathfont { XITS~Math } + } + { + \__xdu_load_unicode_math_pkg: + \setmathfont { XITSMath-Regular.otf } + \setmathfont { XITSMath-Bold.otf } + [range= { bfup -> up, bfit -> it } ] + } + } +\cs_new:Npn \__xdu_load_math_font_cm: { } +\cs_new:Npn \__xdu_load_math_font_none: { } +\cs_new:Npn \__xdu_load_font: + { + \use:c { __xdu_load_cjk_font_ \l__xdu_cjk_font_tl : } + \use:c { __xdu_load_latin_font_ \l__xdu_latin_font_tl : } + \use:c { __xdu_load_math_font_ \l__xdu_math_font_tl : } + } +\ctex_at_end_preamble:n { \__xdu_load_font: } +\NewDocumentCommand \xdusetup { m } + { \keys_set:nn { xdu } { #1 } } +\keys_define:nn { xdu } + { + style .meta:nn = { xdu / style } { #1 }, + info .meta:nn = { xdu / info } { #1 } + } +\ProcessKeysOptions { xdu / style } +%% +%% +%% End of file `xdufont.sty'. |