--- /dev/null
+#!/bin/env bash
+weight=Medium
+mkdir -vp fonts
+# fetch from the newest github resources
+for v in SimplifiedChinese,sc TraditionalChinese,tc TraditionalChineseHK,hk Jananese,jp Korean,kr; do
+ curl -o "fonts/NotoSansCJK${v#*,}-${weight}.otf" "https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/OTF/${v%,*}/NotoSansCJK${v#*,}-${weight}.otf"
+done
+# move jp variant as the default
+mv "fonts/NotoSansCJKjp-${weight}.otf" "fonts/NotoSansCJK-${weight}.otf"
+
--- /dev/null
+// run before setfont cfg files, e.g. font-xolonium.cfg, and after switching language
+// pick a correct cjk font variant by locale
+
+// jp variant by default
+set font_cjk_variant ""
+
+// medium weight fits the game well
+set font_cjk_weight Medium
+
+// font variants by locale
+set font_cjk_variant_zh_CN sc
+set font_cjk_variant_zh_HK hk
+set font_cjk_variant_zh_TW tc
+set font_cjk_variant_ja_JP ""
+set font_cjk_variant_ko kr
+
+// won't error expanding unset cvar for non-cjk locale
+alias font_cjk_pickvariant rpn /font_cjk_variant /font_cjk_variant_${prvm_language} load =
+font_cjk_pickvariant
+
+// use this cvar in setfont commands
+set font_cjk fonts/NotoSansCJK${font_cjk_variant}-${font_cjk_weight}.otf
+
// must be loaded AFTER config.cfg
set menu_font_cfg font-xolonium.cfg
+set font_unicode fonts/unifont
+exec font-cjk.cfg
+
loadfont console fonts/unifont,fonts/xolonium-regular.otf,gfx/vera-sans $con_textsize
-loadfont notify fonts/xolonium-regular.otf,fonts/unifont,gfx/vera-sans $con_notifysize
-loadfont chat fonts/xolonium-regular.otf,fonts/unifont,gfx/vera-sans $con_chatsize
-loadfont centerprint fonts/xolonium-regular.otf,fonts/unifont,gfx/vera-sans 9
-loadfont infobar fonts/xolonium-regular.otf,fonts/unifont,gfx/vera-sans 8 12 $scr_loadingscreen_barheight $scr_infobar_height
-loadfont user0 fonts/xolonium-regular.otf,fonts/unifont,gfx/vera-sans 12 // menu font
-loadfont user1 fonts/xolonium-regular.otf,fonts/unifont,gfx/vera-sans 4 6 8 10 12 14 16 20 24 28 32 $hud_fontsize // csqc font
-loadfont user2 fonts/xolonium-bold.otf,fonts/unifont,gfx/vera-sans 4 6 8 10 12 14 16 20 24 28 32 $hud_fontsize // csqc bold font
-loadfont user3 fonts/xolonium-bold.otf,fonts/unifont,gfx/vera-sans 12 16 // menu boldfont
+loadfont notify fonts/xolonium-regular.otf,$font_cjk,$font_unicode,gfx/vera-sans $con_notifysize
+loadfont chat fonts/xolonium-regular.otf,$font_cjk,$font_unicode,gfx/vera-sans $con_chatsize
+loadfont centerprint fonts/xolonium-regular.otf,$font_cjk,$font_unicode,gfx/vera-sans 9
+loadfont infobar fonts/xolonium-regular.otf,$font_cjk,$font_unicode,gfx/vera-sans 8 12 $scr_loadingscreen_barheight $scr_infobar_height
+loadfont user0 fonts/xolonium-regular.otf,$font_cjk,$font_unicode,gfx/vera-sans 12 // menu font
+loadfont user1 fonts/xolonium-regular.otf,$font_cjk,$font_unicode,gfx/vera-sans 4 6 8 10 12 14 16 20 24 28 32 $hud_fontsize // csqc font
+loadfont user2 fonts/xolonium-bold.otf,$font_cjk,$font_unicode,gfx/vera-sans 4 6 8 10 12 14 16 20 24 28 32 $hud_fontsize // csqc bold font
+loadfont user3 fonts/xolonium-bold.otf,$font_cjk,$font_unicode,gfx/vera-sans 12 16 // menu boldfont
scoreboard_columns_set
+