Oma*_*ara 9 linux fonts fontconfig deepin
我在 Arch Linux,Deepin 桌面。我使用Noto Serif作为我的标准字体,但我不喜欢它的阿拉伯字符。所以我的目标是为阿拉伯字符使用另一种字体。
这是我尝试过的。我创建了一个新的配置文件,/etc/fonts/conf.d/
内容如下:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test name="lang" compare="contains">
<string>ar</string>
</test>
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>Noto Naskh Arabic</string>
</edit>
</match>
<match target="pattern">
<test name="lang" compare="contains">
<string>ar</string>
</test>
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>Noto Naskh Arabic</string>
</edit>
</match>
</fontconfig>
Run Code Online (Sandbox Code Playgroud)
我接着跑fc-cache -r
。但这不起作用,相同的字体仍在使用中,并且像以前一样运行fc-match
返回NotoSerif-Regular.ttf: "Noto Serif" "Regular"
。
许多 Noto 字体向系统报告它们支持阿拉伯文字,它们部分支持阿拉伯文字。其中一种字体是乌尔都语字体,无论出于何种原因,它都优先于支持阿拉伯文字的其他字体。
\n\n您可以选择特定字体而不是其他字体,如下所示:
\n\n<?xml version="1.0"?>\n<!DOCTYPE fontconfig SYSTEM "fonts.dtd">\n<fontconfig>\n\n<alias>\n <family>sans-serif</family>\n <prefer>\n <family>Noto Sans</family>\n <family>Noto Naskh Arabic</family>\n </prefer>\n </alias>\n\n <alias>\n <family>serif</family>\n <prefer>\n <family>Noto Serif</family>\n <family>Noto Naskh Arabic</family>\n </prefer>\n </alias>\n\n <alias>\n <family>monospace</family>\n <prefer>\n <family>Noto Sans Mono</family>\n <family>Noto Naskh Arabic</family>\n </prefer>\n </alias>\n\n</fontconfig>\n
Run Code Online (Sandbox Code Playgroud)\n\n字体的位置越高,越受欢迎。在这种情况下,我们Noto Naskh Arabic
更喜欢其他阿拉伯文字字体。
当然,您可以使用您选择的任何语言或字体来执行此操作。
\n\n由于某种原因,只有用户配置文件对我有用,那些位于~/.config/fontconfig/fonts.conf
. 请注意,$XDG_CONFIG_HOME
环境变量必须设置为您的.config
主目录中的目录,因此$HOME/.config
.
然后,您必须使用 重建配置才能使其生效fc-cache
。只有新启动的应用程序才会显示新配置。重新启动 X 服务器或桌面以使更改全局生效。
编辑:如果您匹配的ar
区域设置根本无法在所有网站上工作,因为某些网站en
在显示阿拉伯语 UTF-8 字符时使用区域设置。
如果您转到/etc/fonts/conf.d
并阅读README
,然后阅读以[30-40]
您就会知道这是正确的答案。
如果说一个网站需要 Serif 字体;fontconfig 遍历此列表,首先到Noto Serif
,当它找到阿拉伯字符时,它会求助于列表 \xe2\x80\x94 Noto Naskh Arabic
\xe2\x80\x94 中的第二个字体,并发现该字体支持阿拉伯脚本,因此它\'使用。