Linux版Steamクライアントの文字化けを解決する
問題
SteamクライアントがNoto Sans CJK JPを表示してくれない
フォールバックも効かない
Migu 1Pは表示される
本当はNoto Sansを使いたいのでSteamにだけMigu 1Pが適用されるようにしたい
原因
SteamクライアントがVariableフォントに非対応
ウソだろ...
解決
システムフォントを非Variableフォントに置き換え
Nixpkgsに非Variable版がないので自分でNoto Fontsパッケージつくる
過去の解決策
fontconifgの<prgname>を使う
fontconfigの使い方の情報がなさすぎて困っていたので感謝
code:fonts.nix
{pkgs, ...}: {
# Fonts
fonts = {
fonts = with pkgs; [
noto-fonts-cjk-serif
noto-fonts-cjk-sans
migu
nerdfonts
twemoji-color-font
wqy_zenhei # for asian fonts in Steam
];
fontDir.enable = true;
fontconfig = {
defaultFonts = {
serif = [
"Noto Serif CJK JP"
"Twitter Color Emoji"
];
sansSerif = [
"Noto Sans CJK JP"
"Twitter Color Emoji"
];
monospace = [
"JetBrainsMono Nerd Font"
"Twitter Color Emoji"
];
};
localConf = ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<description>Change default fonts for Steam client</description>
<match>
<test name="prgname">
<string>steamwebhelper</string>
</test>
<test name="family" qual="any">
<string>sans-serif</string>
</test>
<edit mode="prepend" name="family">
<string>Migu 1P</string>
</edit>
</match>
</fontconfig>
'';
};
};
}