]> git.rm.cloudns.org Git - xonotic/xonotic.git/commitdiff
fix(noto-cjk-font): use generated aliases to pick cjk font, because rpn does not...
authorNaitLee <naitlee@disroot.org>
Sat, 15 Feb 2025 12:04:56 +0000 (20:04 +0800)
committerNaitLee <naitlee@disroot.org>
Sat, 15 Feb 2025 12:04:56 +0000 (20:04 +0800)
Signed-off-by: NaitLee <naitlee@disroot.org>
data/font-notosanscjk.pk3dir/fetch-fonts.sh
data/font-notosanscjk.pk3dir/font-cjk.cfg
data/font-notosanscjk.pk3dir/fonts/NotoSansCJK-Medium.otf [deleted file]
data/font-notosanscjk.pk3dir/fonts/NotoSansCJKjp-Medium.otf [new file with mode: 0644]
data/font-notosanscjk.pk3dir/make-cfg.sh [new file with mode: 0755]

index 2ca720d23705437fcaceacd29d6d8c93d3d43c36..c7f0a93eb3eee933e451754b61987d2223b2c8de 100755 (executable)
@@ -12,6 +12,3 @@ done
 # get license (SIL)
 curl -o "fonts/LICENSE" "https://raw.githubusercontent.com/notofonts/noto-cjk/refs/heads/main/Sans/LICENSE"
 
-# move jp variant as the default
-mv "fonts/NotoSansCJKjp-${weight}.otf" "fonts/NotoSansCJK-${weight}.otf"
-
index 617ea39072eadaf5e94121debbfd498f2593951c..f7eb3fb2b0e354195af8f7464dbbff4707c99b70 100644 (file)
@@ -1,23 +1,92 @@
-// run before execing font cfg files (e.g. font-xolonium.cfg) and after switching language
-// pick a correct cjk font variant by locale
+// generated by make-cfg.sh, do not edit
 
-// jp variant by default (for non-cjk languages)
-set font_cjk_variant ""
+// run before execing font cfg files (e.g. font-xolonium.cfg) and after switching language
+// pick a correct cjk font variant by locale as a cvar $font_cjk
 
 // medium weight fits the game well
-set font_cjk_weight Medium
+set _font_cjk_weight Medium
+
+// jp as default variant for non-cjk languages
+set _font_cjk_variant jp
 
-// font variants mapped 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
+alias _font_cjk_variant_ast _font_cjk_variant jp
+alias _font_cjk_variant_id_ID _font_cjk_variant jp
+alias _font_cjk_variant_de _font_cjk_variant jp
+alias _font_cjk_variant_de_CH _font_cjk_variant jp
+alias _font_cjk_variant_en _font_cjk_variant jp
+alias _font_cjk_variant_en_AU _font_cjk_variant jp
+alias _font_cjk_variant_en_GB _font_cjk_variant jp
+alias _font_cjk_variant_es _font_cjk_variant jp
+alias _font_cjk_variant_fr _font_cjk_variant jp
+alias _font_cjk_variant_gl _font_cjk_variant jp
+alias _font_cjk_variant_ga _font_cjk_variant jp
+alias _font_cjk_variant_it _font_cjk_variant jp
+alias _font_cjk_variant_la _font_cjk_variant jp
+alias _font_cjk_variant_hu _font_cjk_variant jp
+alias _font_cjk_variant_nl _font_cjk_variant jp
+alias _font_cjk_variant_pl _font_cjk_variant jp
+alias _font_cjk_variant_pt _font_cjk_variant jp
+alias _font_cjk_variant_pt_BR _font_cjk_variant jp
+alias _font_cjk_variant_ro _font_cjk_variant jp
+alias _font_cjk_variant_fi _font_cjk_variant jp
+alias _font_cjk_variant_sv _font_cjk_variant jp
+alias _font_cjk_variant_tr _font_cjk_variant jp
+alias _font_cjk_variant_cs _font_cjk_variant jp
+alias _font_cjk_variant_el _font_cjk_variant jp
+alias _font_cjk_variant_be _font_cjk_variant jp
+alias _font_cjk_variant_bg _font_cjk_variant jp
+alias _font_cjk_variant_ru _font_cjk_variant jp
+alias _font_cjk_variant_sr _font_cjk_variant jp
+alias _font_cjk_variant_uk _font_cjk_variant jp
 
-// this won't error expanding unset cvar for non-cjk locale, keeping default for non-cjk languages
-alias font_cjk_pickvariant rpn /font_cjk_variant /font_cjk_variant_${prvm_language} load =
-font_cjk_pickvariant
+// variant by cjk languages
+alias _font_cjk_variant_zh_CN _font_cjk_variant sc
+alias _font_cjk_variant_zh_HK _font_cjk_variant hk
+alias _font_cjk_variant_zh_TW _font_cjk_variant tc
+alias _font_cjk_variant_ja_JP _font_cjk_variant jp
+alias _font_cjk_variant_ko _font_cjk_variant kr
+
+// pick a variant by current language
+_font_cjk_variant_${prvm_language}
 
 // use this cvar in loadfont commands
-set font_cjk fonts/NotoSansCJK${font_cjk_variant}-${font_cjk_weight}.otf
+set font_cjk fonts/NotoSansCJK${_font_cjk_variant}-${_font_cjk_weight}.otf
+
+// clean up
+unset _font_cjk_variant
+unset _font_cjk_weight
 
+unalias _font_cjk_variant_ast
+unalias _font_cjk_variant_id_ID
+unalias _font_cjk_variant_de
+unalias _font_cjk_variant_de_CH
+unalias _font_cjk_variant_en
+unalias _font_cjk_variant_en_AU
+unalias _font_cjk_variant_en_GB
+unalias _font_cjk_variant_es
+unalias _font_cjk_variant_fr
+unalias _font_cjk_variant_gl
+unalias _font_cjk_variant_ga
+unalias _font_cjk_variant_it
+unalias _font_cjk_variant_la
+unalias _font_cjk_variant_hu
+unalias _font_cjk_variant_nl
+unalias _font_cjk_variant_pl
+unalias _font_cjk_variant_pt
+unalias _font_cjk_variant_pt_BR
+unalias _font_cjk_variant_ro
+unalias _font_cjk_variant_fi
+unalias _font_cjk_variant_sv
+unalias _font_cjk_variant_tr
+unalias _font_cjk_variant_cs
+unalias _font_cjk_variant_el
+unalias _font_cjk_variant_be
+unalias _font_cjk_variant_bg
+unalias _font_cjk_variant_ru
+unalias _font_cjk_variant_sr
+unalias _font_cjk_variant_uk
+unalias _font_cjk_variant_zh_CN
+unalias _font_cjk_variant_zh_HK
+unalias _font_cjk_variant_zh_TW
+unalias _font_cjk_variant_ja_JP
+unalias _font_cjk_variant_ko
diff --git a/data/font-notosanscjk.pk3dir/fonts/NotoSansCJK-Medium.otf b/data/font-notosanscjk.pk3dir/fonts/NotoSansCJK-Medium.otf
deleted file mode 100644 (file)
index 56c4d17..0000000
Binary files a/data/font-notosanscjk.pk3dir/fonts/NotoSansCJK-Medium.otf and /dev/null differ
diff --git a/data/font-notosanscjk.pk3dir/fonts/NotoSansCJKjp-Medium.otf b/data/font-notosanscjk.pk3dir/fonts/NotoSansCJKjp-Medium.otf
new file mode 100644 (file)
index 0000000..56c4d17
Binary files /dev/null and b/data/font-notosanscjk.pk3dir/fonts/NotoSansCJKjp-Medium.otf differ
diff --git a/data/font-notosanscjk.pk3dir/make-cfg.sh b/data/font-notosanscjk.pk3dir/make-cfg.sh
new file mode 100755 (executable)
index 0000000..fe30710
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/env bash
+cfg="font-cjk.cfg"
+languages=$(awk '{ if (substr($1, 1, 2) != "zh" && substr($1, 1, 2) != "ja" && substr($1, 1, 2) != "ko") print $1 }' <"../xonotic-data.pk3dir/languages.txt")
+
+printf "" >"$cfg"
+
+cat >>"$cfg" <<EOF
+// generated by make-cfg.sh, do not edit
+
+// run before execing font cfg files (e.g. font-xolonium.cfg) and after switching language
+// pick a correct cjk font variant by locale as a cvar \$font_cjk
+
+// medium weight fits the game well
+set _font_cjk_weight Medium
+
+// jp as default variant for non-cjk languages
+set _font_cjk_variant jp
+
+EOF
+
+for lang in $languages; do
+    echo "alias _font_cjk_variant_${lang} _font_cjk_variant jp" >>"$cfg"
+done
+
+cat >>"$cfg" <<EOF
+
+// variant by cjk languages
+alias _font_cjk_variant_zh_CN _font_cjk_variant sc
+alias _font_cjk_variant_zh_HK _font_cjk_variant hk
+alias _font_cjk_variant_zh_TW _font_cjk_variant tc
+alias _font_cjk_variant_ja_JP _font_cjk_variant jp
+alias _font_cjk_variant_ko _font_cjk_variant kr
+
+// pick a variant by current language
+_font_cjk_variant_\${prvm_language}
+
+// use this cvar in loadfont commands
+set font_cjk fonts/NotoSansCJK\${_font_cjk_variant}-\${_font_cjk_weight}.otf
+
+// clean up
+unset _font_cjk_variant
+unset _font_cjk_weight
+
+EOF
+
+for lang in $languages zh_CN zh_HK zh_TW ja_JP ko; do
+    echo "unalias _font_cjk_variant_${lang}" >>"$cfg"
+done
+