Главная
» Как сделать
»
Сделайте пользовательские шрифты доступными в Docker-контейнере Collabora CODE.
Сделайте пользовательские шрифты доступными в Docker-контейнере Collabora CODE.
Чтобы настроить отображение пользовательского шрифта в Collabora Online CODE, работающем в Docker, храните файлы шрифтов на хосте и смонтируйте один и тот же каталог как в системный каталог шрифтов контейнера, так и в его системную папку документа. Системная папка предоставляет файлы изолированным процессам обработки документов; монтирование шрифтов только в эту папку /usr/share/fontsможет привести к тому, что семейство шрифтов появится в меню шрифтов, но не будет отображаться в документе. В этом руководстве используется Docker Compose и текущий путь к образу CODE /opt/cool/systemplate; проверьте путь, если вы используете другой путь к образу.
Храните файлы лицензионных шрифтов вместе в директории хоста, доступной для чтения Docker.
Выберите источник шрифтов, который вы сможете поддерживать.
Обычно для одного хоста Docker наиболее простым вариантом является монтирование контейнера CODE только для чтения. Это позволяет сохранить файлы шрифтов при пересоздании или обновлении контейнера CODE, а также проверить, какие именно файлы контейнер может читать. Используйте файлы шрифтов, которые вы имеете право устанавливать и распространять на сервере. Не копируйте весь каталог шрифтов настольной системы, если вы не проверили ее лицензии и вам не нужны эти файлы.
Используйте несжатые файлы шрифтов в форматах, поддерживаемых вашей средой, обычно это TrueType ( .ttf) или OpenType ( .otf). Включите необходимые для ваших документов стили, такие как обычный, полужирный, курсив и полужирный курсив. Указывайте чёткость названий семейств шрифтов и имен файлов, а также убедитесь, что пользователь контейнера может читать все каталоги и файлы. Шрифт, содержащий только один стиль, может привести к тому, что Collabora заменит его другим шрифтом, когда документ запросит полужирный или курсивный.
Сначала создайте отдельный каталог на хосте и скопируйте в него разрешенные файлы:
Замените приведенные примеры имен файлов на ваши реальные файлы шрифтов. Права доступа на чтение важны, поскольку процесс CODE запускается от имени непривилегированной учетной записи в текущих образах. Сохраняйте путь к каталогу неизменным; привязки Compose будут ссылаться на него.
Смонтируйте шрифты как в дерево шрифтов хоста, так и в системный шаблон.
В существующую collaboraслужбу docker-compose.ymlдобавьте следующие записи тома. Сохраните существующий образ, порты, список разрешенных доменов, настройки SSL, секреты и политику перезапуска; в приведенном ниже фрагменте показаны только точки монтирования шрифтов.
Добавьте оба точки монтирования только для чтения в раздел томов существующей службы CODE.
Первый целевой объект делает шрифты доступными для обычного механизма обнаружения шрифтов контейнера. Второй целевой объект помещает их внутрь шаблона, используемого для подготовки изолированных сред документов. В руководстве по SDK Collabora описана эта схема двухпозиционного размещения томов для Docker. Не следует монтировать поверх всего каталога /usr/share/fontsили системной директории: это может скрыть шрифты, уже предоставленные образом.
Путь к системной плате зависит от версии. Текущие метаданные образа CODE 26.04 указывают /opt/cool/systemplateпуть к системному шаблону, и в текущей документации Collabora используется именно это местоположение. Если вы используете более старый образ или сборку от конкретного поставщика, перед редактированием целевого пути ознакомьтесь с документацией или конфигурацией запуска этого образа.
Создайте контейнер заново и подтвердите обнаружение шрифта.
После сохранения файла Compose и размещения файлов шрифтов на хосте, пересоздайте службу CODE, чтобы Docker применил привязку монтирования:
Создайте службу заново, затем используйте команду fc-list, чтобы проверить, обнаруживает ли Fontconfig семейство шрифтов.
В выходных данных найдите название семейства шрифтов или путь к смонтированному файлу. Чтобы сузить список, передайте grepв качестве параметра название семейства шрифтов, указанное самим шрифтом, например:
Если команда не выдает результат, проверьте путь к хосту, права доступа к файлам, отступы монтирования и журналы контейнера. Вы можете проверить фактические точки монтирования с помощью команды docker inspectв запущенном контейнере или использовать команду docker compose configдля обнаружения ошибок отступов в YAML-файлах. Запуск команды docker compose downобычно не требуется только для применения изменений тома; достаточно пересоздать службу.
Убедитесь, что шрифт отображается в реальном документе.
Проверьте как выбор шрифта, так и отображаемый текст в документе после его повторного открытия.
Откройте тестовый документ через стандартную интеграцию Nextcloud или WOPI, выделите небольшой фрагмент текста и выберите пользовательское семейство шрифтов в палитре. Наберите новую строку этим шрифтом, сохраните, закройте и снова откройте файл. Проверьте обычный и полужирный текст, а также сравните переносы строк или макет страницы с исходным документом. Появление семейства шрифтов в меню — это лишь проверка на наличие проблем; видимый текст после повторного открытия — это полезная проверка рендеринга.
Шрифт отображается в меню, но текст исчезает или возвращается к исходному виду: убедитесь, что второе монтирование указывает на каталог шрифтов системной платы и содержит те же файлы.
Шрифт отсутствует в меню: убедитесь, что файлы действительны и читаемы, затем проверьте fc-listвыходные данные и журналы запуска контейнера.
Шрифт работает до обновления образа: убедитесь, что оба монтирования остаются в Compose и что каталог вашей хост-системы не находится внутри временного пути контейнера.
Отображаются только некоторые символы: выбранный шрифт может не содержать эти глифы. Добавьте шрифт с необходимым покрытием рукописного кода или используйте подходящий резервный вариант.
Привязка монтирования обеспечивает независимость шрифтов от образа CODE, но не гарантирует идентичное расположение на каждом клиенте или в каждом документе. Замена шрифтов, отсутствующие глифы, разные версии шрифтов и форматирование, специфичное для документа, по-прежнему могут изменять перенос строк. Для получения дополнительных сведений о настройке используйте документацию Collabora по установке шрифтов , руководство по образу CODE Docker и руководство по Collabora Online SDK . Пример Docker в руководстве и текущую документацию по образу следует проверить еще раз при смене версий CODE.