使用更纱黑体替换ubuntu系统默认字体[新年第一帖]
发表于 : 2022-01-31 13:05
一、字体准备
英文字体(四字重)
二、下载更纱黑体
这里下载更纱黑体的无微调ttf版本,并且仅提取简体中文的四个字重字体 (regular、bold、italic、bolditalic),为了不破坏系统字体,这里只安装到用户目录的字体文件夹中。
三、字体配置
第一,设置西文字体(强绑定)优先级高于简体中文,保证字体匹配时优先使用英文字体替换中文字体。
第二, 设置简体中文字体(强绑定)优先级低于西文字体,用于覆盖 ubuntu 中其他配置文件,这里不再考虑语言选项,强绑定优先级高于语言设置。其他语言用户,可以在下一段中对中文字体进行替换,以符合需求。
第三,根据中文语言环境,选择合适的字体替换简体中文字体,以符合需求。这里对港澳台等地区,均使用 noto 系列字体对中文简体字体进行替换。
第四,将 OpenSymbol 符号字体放在中文字体之后,优先级低于中文,这里主要修正 libreoffice 中列表符号显示错误的问题,该问题主要是符号字体匹配的问题。可以查看 https://forum.ubuntu.com.cn/viewtopic.php?f=35&t=491968
第五,字体渲染全部为使用矢量字体的用户考虑, 开启抗锯齿,优先使用内置微调,微调类型全部设置为 hintslight,lcdfilter 模式全部设置为 cddefault,启用内置点阵(表情符号必须开启内嵌点阵),禁用合成粗体。
第六,修正等宽西文在与 Sarasa Mono SC 混排时的对齐效果,这里首先设置奇偶标记,判断字体大小是否为奇数,是奇数返回 true 是偶数返回 false。该段落完全照抄了金步国Linux字体美化实战(Fontconfig配置)文章。该文章地址为http://www.jinbuguo.com/gui/linux_fontconfig.html
第七,修正等宽西文在与 Noto Sans Mono CJK HK 以及 Noto Sans Mono CJK TC 混排时的对齐效果,方法同上。
第九,删除奇偶标记
完整的配置文件可以在附件中下载,下载后去掉后缀,将文件重名为fonts.conf。考虑到字体配置有较大危险性,为了系统安全考虑,配置文件仅放在用户的字体配置文件夹中,同时为了方便查看和理解,将所有配置文件写在一个文件中。
最后,就可以对系统字体进行设置了,打开终端,输入以下代码,设置系统字体,注销或者重启就可以看到效果。
该配置文件参考了众多开源文章。对于中西等款条件下的文本对齐,重点参考了金步国的翻译的fonts.conf 中文手册http://www.jinbuguo.com/gui/fonts.conf.html以及Linux字体美化实战(Fontconfig配置)http://www.jinbuguo.com/gui/linux_fontconfig.html,由于本人水平有限,错误之处在所难免,欢迎坛友修改指正。
英文字体(四字重)
- 西文衬线字体:Noto Serif (regular、bold、italic、bolditalic)
- 西文无衬线字体:ubuntu(regular、bold、italic、bolditalic)
- 西文等宽字体:Ubuntu Mono(regular、bold、italic、bolditalic)
- 宋体:Noto Serif CJK {SC,TC}(regular、bold、italic、bolditalic)
- 黑体:Noto Sans CJK {SC,HK,TC}(regular、bold、italic、bolditalic)
- 黑体(西文等宽):Noto Sans Mono {SC,HK,TC}(regular、bold、italic、bolditalic)
二、下载更纱黑体
这里下载更纱黑体的无微调ttf版本,并且仅提取简体中文的四个字重字体 (regular、bold、italic、bolditalic),为了不破坏系统字体,这里只安装到用户目录的字体文件夹中。
代码: 全选
# 这里从清华大学开源网站下载最新版
wget -c https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Sarasa-Gothic/LatestRelease/sarasa-gothic-ttf-unhinted-0.35.8.7z
# 创建临时文件夹
mkdir -p tmp_fonts
# 创建解压文件列表
cat > file << 'EOF'
sarasa-mono-sc-bolditalic.ttf
sarasa-mono-sc-bold.ttf
sarasa-mono-sc-italic.ttf
sarasa-mono-sc-regular.ttf
sarasa-ui-sc-bolditalic.ttf
sarasa-ui-sc-bold.ttf
sarasa-ui-sc-italic.ttf
sarasa-ui-sc-regular.ttf
EOF
# 解压文件
7z x -t7z sarasa-gothic-ttf-unhinted-0.35.8.7z -otmp_fonts -i@file
# 将字体移动到主目录字体文件夹
mkdir -p ~/.local/share/fonts
mv tmp_fonts/*.ttf ~/.local/share/fonts
第一,设置西文字体(强绑定)优先级高于简体中文,保证字体匹配时优先使用英文字体替换中文字体。
代码: 全选
<alias binding="strong">
<family>serif</family>
<prefer><family>Noto Serif</family></prefer>
</alias>
<alias binding="strong">
<family>sans-serif</family>
<prefer><family>Ubuntu</family></prefer>
</alias>
<alias binding="strong">
<family>monospace</family>
<prefer><family>Ubuntu Mono</family></prefer>
</alias>
代码: 全选
<alias binding="strong">
<family>serif</family>
<prefer><family>Noto Serif CJK SC</family></prefer>
</alias>
<alias binding="strong">
<family>sans-serif</family>
<prefer><family>Sarasa UI SC</family></prefer>
</alias>
<alias binding="strong">
<family>monospace</family>
<prefer><family>Sarasa Mono SC</family></prefer>
</alias>
代码: 全选
<!-- 香港 -->
<match target="pattern">
<test name="lang"><string>zh-hk</string></test>
<test name="family"><string>Noto Serif CJK SC</string></test>
<test name="family"><string>serif</string></test>
<edit name="family" binding="strong"><string>Noto Serif CJK TC</string></edit>
</match>
<match target="pattern">
<test name="lang"><string>zh-hk</string></test>
<test name="family"><string>Sarasa UI SC</string></test>
<test name="family"><string>sans-serif</string></test>
<edit name="family" binding="strong"><string>Noto Sans CJK HK</string></edit>
</match>
<match target="pattern">
<test name="lang"><string>zh-hk</string></test>
<test name="family"><string>Sarasa Mono SC</string></test>
<test name="family"><string>monospace</string></test>
<edit name="family" binding="strong"><string>Noto Sans Mono CJK HK</string></edit>
</match>
<!-- 澳门 -->
<match target="pattern">
<test name="lang"><string>zh-mo</string></test>
<test name="family"><string>Noto Serif CJK SC</string></test>
<test name="family"><string>serif</string></test>
<edit name="family" binding="strong"><string>Noto Serif CJK TC</string></edit>
</match>
<match target="pattern">
<test name="lang"><string>zh-mo</string></test>
<test name="family"><string>Sarasa UI SC</string></test>
<test name="family"><string>sans-serif</string></test>
<edit name="family" binding="strong"><string>Noto Sans CJK TC</string></edit>
</match>
<match target="pattern">
<test name="lang"><string>zh-mo</string></test>
<test name="family"><string>Sarasa Mono SC</string></test>
<test name="family"><string>monospace</string></test>
<edit name="family" binding="strong"><string>Noto Sans Mono CJK TC</string></edit>
</match>
<!-- 台湾 -->
<match target="pattern">
<test name="lang"><string>zh-tw</string></test>
<test name="family"><string>Noto Serif CJK SC</string></test>
<test name="family"><string>serif</string></test>
<edit name="family" binding="strong"><string>Noto Serif CJK TC</string></edit>
</match>
<match target="pattern">
<test name="lang"><string>zh-tw</string></test>
<test name="family"><string>Sarasa UI SC</string></test>
<test name="family"><string>sans-serif</string></test>
<edit name="family" binding="strong"><string>Noto Sans CJK TC</string></edit>
</match>
<match target="pattern">
<test name="lang"><string>zh-tw</string></test>
<test name="family"><string>Sarasa Mono SC</string></test>
<test name="family"><string>monospace</string></test>
<edit name="family" binding="strong"><string>Noto Sans Mono CJK TC</string></edit>
</match>
代码: 全选
<alias binding="strong">
<family>serif</family>
<prefer><family>OpenSymbol</family></prefer>
</alias>
<alias binding="strong">
<family>sans-serif</family>
<prefer><family>OpenSymbol</family></prefer>
</alias>
<alias binding="strong">
<family>monospace</family>
<prefer><family>OpenSymbol</family></prefer>
</alias>
代码: 全选
<match target="font">
<edit name="antialias"><bool>true</bool></edit>
<edit name="hinting"><bool>true</bool></edit>
<edit name="autohint"><bool>false</bool></edit>
<edit name="hintstyle"><const>hintslight</const></edit>
<edit name="rgba"><const>rgb</const></edit>
<edit name="lcdfilter"><const>lcddefault</const></edit>
<edit name="embeddedbitmap"><bool>true</bool></edit>
<edit name="embolden"><bool>false</bool></edit>
</match>
代码: 全选
<!-- 设置奇偶标记 -->
<match target="font">
<test name="family"><string>Sarasa Mono SC</string></test>
<edit name="isOddPx">
<eq>
<round><divide><plus><name>pixelsize</name><double>0.5</double></plus><double>2</double></divide></round>
<ceil><divide><plus><name>pixelsize</name><double>0.5</double></plus><double>2</double></divide></ceil>
</eq>
</edit>
</match>
<!-- 如果"视觉大小"是奇数,那么上调为偶像素,因为 Monospace 在奇像素下总是大一级显示 -->
<match target="font">
<test name="family"><string>Sarasa Mono SC</string></test>
<test name="isOddPx"><bool>true</bool></test>
<edit name="pixelsize"><plus><name>pixelsize</name><int>1</int></plus></edit>
</match>
第九,删除奇偶标记
代码: 全选
<match target="font">
<edit name="isOddPx" mode="delete"></edit>
</match>
最后,就可以对系统字体进行设置了,打开终端,输入以下代码,设置系统字体,注销或者重启就可以看到效果。
代码: 全选
gsettings set org.gnome.desktop.interface font-name 'Sans 10'
gsettings set org.gnome.desktop.interface document-font-name 'Serif 10'
gsettings set org.gnome.desktop.interface monospace-font-name 'Monospace 10'
gsettings set org.gnome.desktop.wm.preferences titlebar-font 'Sans Bold 10'