我有一个文件10-sub.conf
,用于替换特定语言环境的字体:(使用这回答)
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- file saved in /.config/fontconfig/conf.d -->
<fontconfig>
<match>
<test compare="contains" name="lang">
<string>hi</string>
</test>
<edit mode="prepend" name="family">
<string>Lohit Devanagari</string>
</edit>
</match>
<match>
<test compare="contains" name="lang">
<string>gu</string>
</test>
<edit mode="prepend" name="family">
<string>Lohit Gujarati</string>
</edit>
</match>
<match>
<test compare="contains" name="lang">
<string>kn</string>
</test>
<edit mode="prepend" name="family">
<string>Lohit Kannada</string>
</edit>
</match>
<alias>
<family>sans-serif</family>
<prefer>
<family>Ubuntu</family>
<familt>DejaVu Sans</family>
<family>Liberation Sans</family>
<family>Noto Sans</family>
<family>Arial Unicode MS</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>DejaVu Serif</family>
<family>Liberation Serif</family>
<family>Noto Serif Devanagari</family>
<family>Arial Unicode MS</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Ubuntu Mono</family>
<family>Noto Sans Mono</family>
<family>DejaVu Sans Mono</family>
<family>Liberation Mono</family>
<family>Arial Unicode MS</family>
</prefer>
</alias>
</fontconfig>
Arial Unicode 字体用于捕获系统上未安装的任何字体。此方法适用于 Devanagari 和 Gujarati,但卡纳达语脚本始终由 Arial Unicode 而不是 Lohit Kannada 呈现。我的系统上安装了 Lohit Kannada/usr/share/fonts/truetype/lohit-kannada/Lohit-Kannada.ttf
系统:GNOME 42.5 上的 Ubuntu 22.04。
参观这<match>
尽管文件中提供了 Kannada 字体,但网站仍以 Arial Unicode 格式呈现 Kannada 字体,而这网站使用 Lohit Gujarati 呈现古吉拉特语(删除<match>
古吉拉特语标签后,将使用古吉拉特语的后备字体呈现)
输出LC_CTYPE=kn_IN fc-match
答案1
我怀疑您在其他语言环境(更具体地说是LC_CTYPE
语言环境类别)下运行 Firefox,但是kn_IN
,如果是这种情况,则字体配置文件中第一个语言保护部分不会产生任何影响。
请尝试以下操作:
关闭 Firefox
按Alt+F2并使用以下命令重新启动 Firefox:
env LC_CTYPE=kn_IN firefox
希望带有卡纳达语文字的网页现在看起来更好一些。
答案2
我必须从系统中删除 Arial Unicode 才能使其正常工作。然后我稍微调整了配置文件:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Ubuntu</family>
<family>Liberation Sans</family>
<family>DejaVu Sans</family>
<family>Noto Sans</family>
<family>Lohit Devanagari</family>
<family>Lohit Gujarati</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Liberation Serif</family>
<family>DejaVu Serif</family>
<family>Noto Serif Devanagari</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Ubuntu Mono</family>
<family>Noto Sans Mono</family>
<family>Liberation Mono</family>
<family>Biryani</family>
</prefer>
</alias>
</fontconfig>
另外,由于它们不是为印度语制作的,所以被列入黑名单FreeSans
,FreeSerif
但系统还是以某种方式依赖它们(通过字体管理器轻松完成):
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<selectfont>
<rejectfont>
<pattern>
<patelt name="family">
<string>FreeSerif</string>
</patelt>
</pattern>
<pattern>
<patelt name="family">
<string>FreeSans</string>
</patelt>
</pattern>
<pattern>
<patelt name="family">
<string>FreeMono</string>
</patelt>
</pattern>
</rejectfont>
</selectfont>
</fontconfig>