summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xduts/xdufont.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/xduts/xdufont.sty378
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'.