封面图片来源:使用 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

fonts.conf 样例参考
~/.config/fontconfig/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>

本作品采用知识共享署名-非商业性使用-相同方式共享 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
已修正。你是我博客第一个活人评论