封面图片来源:使用 Aseprite 制作(源文件, 遵循 CC BY-SA 4.0 )
配置 fontconfig
请确保 Linux 下使用传统包管理器安装的软件字体符合你的预期,可参考 Linux 下的字体调校指南 配置你的 ~/.config/fontconfig/fonts.conf
添加权限
使用命令
flatpak override --user --filesystem="xdg-config/fontconfig:ro" your.flatpak.app
使用图形界面
安装 Flatseal,在 All Aplication
-> Filesystem
-> Other files
中添加 xdg-config/fontconfig:ro
![](https://blog.geekgo.tech/wp-content/uploads/2024/02/Screenshot_20240223_222746-1024x627.webp)
fonts.conf 样例参考
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
<!-- Map fonts that are commonly used by web pages to our preferred fonts -->
<match target="pattern">
<test name="family" qual="any">
<string>Liberation Sans</string>
</test>
<edit binding="same" mode="assign" name="family">
<string>sans-serif</string>
</edit>
</match>
<match target="pattern">
<test name="family" qual="any">
<string>Liberation Mono</string>
</test>
<edit binding="same" mode="assign" name="family">
<string>monospace</string>
</edit>
</match>
<!-- Default font for the zh_CN locale (no fc-match pattern) -->
<match>
<test compare="contains" name="lang">
<string>zh_CN</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- Default sans-serif font -->
<match target="pattern">
<test name="family" qual="any">
<string>sans-serif</string>
</test>
<edit binding="same" mode="prepend" name="family">
<string>Noto Sans</string>
</edit>
</match>
<!-- Default serif fonts -->
<match target="pattern">
<test name="family" qual="any">
<string>serif</string>
</test>
<edit binding="same" mode="prepend" name="family">
<string>Noto Serif</string>
</edit>
</match>
<!-- Default monospace fonts -->
<match target="pattern">
<test name="family" qual="any">
<string>monospace</string>
</test>
<edit binding="same" mode="prepend" name="family">
<string>Noto Sans Mono</string>
</edit>
</match>
<!-- Fallback fonts preference order -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
<family>Noto Sans CJK KR</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Serif CJK SC</family>
<family>Noto Serif CJK TC</family>
<family>Noto Serif CJK JP</family>
<family>Noto Serif CJK KR</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono</family>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK TC</family>
<family>Noto Sans Mono CJK HK</family>
<family>Noto Sans Mono CJK JP</family>
<family>Noto Sans Mono CJK KR</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
</prefer>
</alias>
<selectfont>
<rejectfont>
<pattern>
<patelt name="family">
<!-- This font is causing problem with GitHub -->
<string>Nimbus Sans</string>
</patelt>
</pattern>
</rejectfont>
</selectfont>
<dir>~/.fonts</dir>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
</fontconfig>
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
14 条评论 “Flatpak 应用中文字体问题”
感谢!执行完命令后马上就奏效了!
我用的 endeavour(arch) + kde,加了 xdg-config/fontconfig:ro,flatpak 某些软件的字体还是难看。查到资料 https://wiki.archlinux.org/title/XDG_Desktop_Portal,安装 xdg-desktop-portal-gtk 重启,字体就正常显示了,不需要 fontconfig
这也是一个原因,属于是基本的flatpak组件都没装全,不同桌面环境使用的包还不太一样,Arch里只是可选依赖很多人忘记装🤣,像SteamDeck这种出厂就把该装的包都装了。
字体模糊的问题上游已经解决了( https://github.com/flatpak/flatpak/issues/2861 ),我在 NixOS 上即使只装
xdg-desktop-portal-kde
也能正常显示,不过要让 Flatpak 的 GTK 应用跟随系统主题的画还是得装xdg-desktop-portal-gtk
。另外默认情况下一些中文会对到日文字形上(比如 ‘天’ 和 ‘关’),这个问题不论是否使用 flatpak 都会存在,配置 fontconfig 指定字体是必要的
感谢,帮大忙了。博客很棒!
you saved my life
flatpak的wps缺字体 怎么补上?谢谢!
把 ttf-wps-fonts 这个项目里的 ttf/TTF 字体文件放到
~/.local/share/fonts/
这个目录里就可以了试过了,不过还得
sudo mkfontscale
sudo mkfontdir
sudo fc-cache
?
我在Steam Deck上测试的,直接放进去WPS就不报错了,没执行额外命令,flatpak版本低的话可能需要加权限
--filesystem=xdg-data/fonts
根据 https://wiki.archlinuxcn.org/wiki/%E5%AD%97%E4%BD%93 你列出的这几条命令在现代linux都不是必要的
感谢!全网唯一有用。
另外更正一下是:~/.config/fontconfig/fonts.conf
已修正。你是我博客第一个活人评论🤣