【问题标题】:Yocto image missing fonts (X11)Yocto 图像缺少字体 (X11)
【发布时间】:2018-06-17 15:55:50
【问题描述】:

我正在使用 Yocto 构建 Linux 系统映像(使用通用 x86_64 机器定义)。

当我构建 core-image-x11 时,Matchbox 将在启动时中止(声称在默认主题中定义字体的参数不正确)。

如果我使用 xfce(使用“packagegroup-xfce-base”)而不是 matchbox,我可以成功加载桌面。但是,所有文本都只是呈现为空框。

我尝试包含尽可能多的字体包,例如:

  • xorg-minimal-fonts
  • packagegroup-fonts-truetype-core
  • ttf-liberation-mono/sans/serif
  • ttf-dejavu-common 等

很遗憾,这些都没有解决缺少字体的问题。是否有我错过的关键字体包​​/配置选项?

【问题讨论】:

  • 如何添加字体?
  • 我在图片bbfile中添加了IMAGE_INSTALL_append = "xorg-minimal-fonts ... ... ttf-dejavu-common"的字体包

标签: fonts x11 yocto openembedded


【解决方案1】:

也许你应该安装fontconfig:IMAGE_INSTALL_append = " fontconfig"。如果它仍然不起作用,您可以在需要字体的程序上 strace -e open 以查看它在哪里查找字体。

下面是使用它的摘录:

# strace -e open ./my_program
[...]
open("/etc/fonts/fonts.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 13
open("/etc/fonts/conf.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 14
open("/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/20-unhint-small-vera.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/30-dejavu-aliases.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/30-metric-aliases.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/30-urw-aliases.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/40-nonlatin.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/45-latin.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/49-sansserif.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/50-user.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/51-local.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/60-latin.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/65-fonts-persian.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/65-nonlatin.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/69-unifont.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/80-delicious.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/etc/fonts/conf.d/90-synthetic.conf", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
open("/usr/share/fonts", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 13
[...]

我希望这会有所帮助。 问候。

【讨论】:

    【解决方案2】:

    我发现XFCE缺少字体的问题可以通过重建字体缓存来解决。

    fc-cache -f -v 
    

    由于这个(应该)每次安装只需要执行一次,我在我的配方中添加了一个安装后任务,它会在 Yocto 图像的第一次启动时重建字体缓存。

    pkg_postinst_${PN}() {
        if [ x"$D" = "x" ]; then
            #Only run the script on first startup of the machine
            fc-cache -f -v
        else
            #If we're in the staging directory (on the build machine), exit.
            exit 1
        fi
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 2017-05-07
      • 2013-12-14
      • 2013-06-30
      相关资源
      最近更新 更多