Добавление шрифта в изображение докера

У моей компании есть изображение докеров, которое мы используем для гибкости приложения. Мне нужно добавить шрифт, и там, кажется, нет простого 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. Мы добавляем еще несколько вещей, но это материал, относящийся к шрифту.

Выход fc-cache при создании изображения дает понять, что он обнаруживает один шрифт в каталоге noto:

/usr/share/fonts/truetype/noto: caching, new cache contents: 1 fonts, 0 dirs

И когда я вхожу в контейнер, я вижу, что файл действительно был скопирован. Я даже могу запустить fc-cache снова вручную и увидеть тот же результат. Однако новый шрифт никогда не отображается в fc-list.

Это было неприятно диагностировать, потому что следующие аналогичные шаги, похоже, отлично работают на моей машине. Это почти так, как если бы fc-cache вел себя по-другому в контейнере.

Любые идеи о том, что я могу потерять?

Обновить:

Я добавил строку в файл докера, чтобы явно установить правильные разрешения для файла шрифта после его копирования, но это не имело никакого значения. Это ожидалось, потому что эти команды в конечном счете выполняются как root, но все же это кажется лучшей практикой.

Интересно, однако, что я попробовал это с другим шрифтом (NotoEmoji-Regular.ttf), и это действительно сработало. Я посмотрю, какая разница между этими двумя шрифтами может быть причиной этого.

Очень расстраивает.

Еще одно обновление:

Похоже, что основное отличие, скорее всего, от цвета шрифта, который нестандартен в формате TrueType. Как отмечалось в комментариях, моя система использует более новую версию fontconfig, чем изображение докеров, что, вероятно, объясняет несоответствие.

Я бы хотел проверить это, но он копал немного кроличьей дыры, что моя организация предпочла бы мне не тратить слишком много времени. Если кто-то может это сделать, однако я был бы рад дать вам принятый ответ. В противном случае мне придется оставить это немного.

Ответы

Ответ 1

у него был файл шрифта, проверьте отчет на изображении enter image description here