作者:mobiledu2502930381 | 来源:互联网 | 2022-12-22 07:14
我的公司有一个docker图像,我们用它来app引擎flex.我需要添加一个字体,并且在任何地方似乎都没有简单的apt包,所以我需要手动添加它,按照此处列出的步骤在Linux上进行命令行安装.这是我到目前为止所拥有的:
FROM gcr.io/google_appengine/python
# ...
# Copy the font to the appropriate location.
# The font is in a ttf in the same directory as the Dockerfile.
RUN mkdir -p /usr/share/fonts/truetype/noto
COPY NotoColorEmoji.ttf /usr/share/fonts/truetype/noto
RUN chmod 644 /usr/share/fonts/truetype/noto/*
# Rebuild the font cache.
RUN fc-cache -fv
如您所见,图像基于GAE基本python图像.我们还添加了一些其他内容,但这是与字体相关的内容.
fc-cache
构建映像时的输出清楚地表明它正在检测noto目录中的一种字体:
/usr/share/fonts/truetype/noto: caching, new cache contents: 1 fonts, 0 dirs
当我登录到容器时,我发现该文件确实被复制了.我甚至可以fc-cache
手动再次运行并看到相同的输出.但是,新字体永远不会反映出来fc-list
.
诊断这一点令人沮丧,因为遵循类似的步骤似乎在我自己的机器上完美运行.这几乎就好像fc-cache
容器中的行为不同.
关于我可能遗失的任何想法?
更新:
我在docker文件中添加了一行,以便在复制后在字体文件上显式设置正确的权限,但没有区别.这是预期的,因为这些命令最终以root身份运行,但它仍然是一种更好的做法.
有趣的是,我尝试使用不同的字体(NotoEmoji-Regular.ttf)并且确实有效.我将研究这两种字体之间的区别是什么导致这种情况.
很沮丧.
另一个更新:
看起来主要区别可能是字体中的颜色,这在TrueType格式中是非标准的.正如评论所指出的那样,我的系统使用的是fontconfig的新版本而不是docker图像,这可能是造成这种差异的原因.
我想验证这一点,但它正在挖掘一个兔子洞,我的组织宁愿我不要花太多时间.如果有人能够这样做,但我很乐意给你接受的答案.否则我将不得不离开这一点.