Главная
» Как сделать
»
Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux
Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux
Чтобы добавить пользовательские шрифты в ONLYOFFICE Document Server, поместите файлы лицензированных шрифтов в каталог, доступный серверу, и запустите команду /usr/bin/documentserver-generate-allfonts.sh. Для развертываний Docker обычно предпочтительнее использовать каталог шрифтов, смонтированный с помощью bind-mount, чем копировать файлы в работающий контейнер, поскольку он сохраняется при повторном создании контейнера.
Правильный способ установки зависит от того, где работает ONLYOFFICE Docs, как часто вы его переустанавливаете и готовы ли вы смириться с кратковременным перерывом в работе сервиса во время обновления каталога шрифтов.
В выпадающем списке шрифтов редактора отображаются доступные семейства шрифтов; отсутствующие шрифты могут быть заменены альтернативными до обновления каталога шрифтов сервера.
Выберите способ установки шрифта
Метод
Наилучший вариант
Компромисс
Docker bind mount
Управление производственными контейнерами с помощью Docker Compose.
Требуется редактирование конфигурации контейнера и, возможно, его повторное создание.
docker cpв рабочий контейнер
Экспресс-тест или временное дополнение
Файлы могут исчезнуть при замене этого контейнера.
Установите шрифты на хосте Linux, где запущен собственный пакет Document Server.
Установка в стиле DEB/RPM без Docker.
Требуется администрирование на уровне сервера, и система остается привязанной к данному хосту.
В официальных инструкциях Docker по работе со шрифтами описано копирование файлов и перестроение списка шрифтов. В справочнике Docker по привязке монтирования объясняется, почему монтирование выделенной папки на хосте делает файлы доступными при замене контейнеров. Это разные варианты развертывания, а не разные форматы шрифтов.
Подготовьте файлы шрифтов и подтвердите целевой сервер.
1. Определите активное развертывание ONLYOFFICE.
Запустите docker psредактор в контейнерах на хосте Docker. Найдите имя контейнера Document Server в столбце NAMES; в приведенных ниже примерах используется onlyoffice-documentserver. Замените это значение, если оно отличается. Интеграция с Nextcloud или ownCloud обычно не меняет того факта, что шрифты должны быть установлены на сервере ONLYOFFICE Docs, а не только на сервере хранения или компьютере, просматривающем документ.
docker ps
Перед копированием шрифтов или перегенерацией каталога найдите контейнер Document Server в списке Docker-контейнеров.
2. Соберите файлы лицензионных шрифтов.
Выберите полные, правильно лицензированные семейства шрифтов, включая начертания и стили, которые фактически используются в ваших документах. ONLYOFFICE перечисляет форматы TrueType и OpenType, такие как .ttfи .otf, а также другие поддерживаемые расширения шрифтов, в своей документации по шрифтам для Linux . Для предсказуемого первого развертывания используйте обычные файлы TTF или OTF и проверьте разрешенное использование на сервере и клиенте в лицензии на шрифты.
В примере с Docker подготовьте файлы /srv/onlyoffice/custom-fontsна хосте Docker. Примеры имен файлов Inter-Regular.ttfявляются Inter-Bold.ttfиллюстративными; используйте файлы, на установку которых у вас есть права.
Выполните эти команды из каталога, содержащего файлы шрифтов. Перед продолжением проверьте содержимое папки. В управляемой системе настройте права доступа и права владения в соответствии с вашей политикой безопасности, а не предоставляйте доступ на запись в папку всем пользователям.
Храните все варианты шрифтов вместе в отдельной директории, чтобы их можно было смонтировать в контейнер Document Server.
Рекомендуется для Docker: постоянно монтировать каталог шрифтов.
3. Добавьте привязку монтирования к существующей службе Compose.
В текущем файле Compose найдите службу, которая запускает образ ONLYOFFICE Document Server. Добавьте следующую запись в существующий volumesсписок; сохраните другие тома, порты, учетные данные и переменные среды, уже настроенные:
Исходный путь находится на хосте Docker; целевой путь находится внутри контейнера. Суффикс :roограничивает запись в контейнер только каталогом шрифтов. Монтируйте выделенный customкаталог, а не заменяйте все /usr/share/fontsдерево, что может скрыть шрифты, предоставляемые образом. В официальном Dockerfile для ONLYOFFICE пользовательский каталог шрифтов TrueType объявлен как том на этапах создания образов Community и Enterprise.
Проверьте измененную конфигурацию Compose, затем примените ее docker compose up -dиз каталога проекта. Это может привести к повторному созданию службы: запланируйте изменение на то время, когда редакторы смогут безопасно закрывать документы. Если вы используете простое docker runразвертывание, добавьте эквивалентный --mount type=bind,src=/srv/onlyoffice/custom-fonts,dst=/usr/share/fonts/truetype/custom,readonlyаргумент только для чтения при повторном создании контейнера.
Выделенная запись в томе только для чтения позволяет хранить файлы пользовательских шрифтов отдельно от образа контейнера.
4. Убедитесь, что контейнер видит файлы шрифтов.
После запуска службы проверьте смонтированный каталог и, если это возможно, список файлов fontconfig. Имя семейства шрифтов, отображаемое командой fontconfig, может отличаться от имени файла.
Для примеров шрифтов Inter вторая команда должна вывести список соответствующих семейств, если fontconfig их обнаружит. Если файлы существуют, но семейство не отображается, проверьте права доступа и запустите команду docker exec onlyoffice-documentserver fc-cache -f, затем проверьте fc-listеще раз. Само по себе обнаружение Fontconfig не заполняет меню редактора ONLYOFFICE.
Проверка файла fontconfig помогает отличить нечитаемый или отсутствующий файл шрифта от устаревшего каталога шрифтов ONLYOFFICE.
5. Перегенерировать каталог шрифтов ONLYOFFICE.
После того, как файлы окажутся внутри контейнера, запустите скрипт генерации шрифтов сервера документов:
ONLYOFFICE использует этот шаг для обновления данных и ресурсов выбора шрифтов. Это может повлиять на работу активных служб редактора, поэтому запускайте его во время подходящего периода технического обслуживания. Документированная переменная среды Docker GENERATE_FONTSтакже по умолчанию имеет значение true, что приводит к перегенерации данных шрифтов при запуске контейнера; это полезно после перезапуска, но не заменяет установку файлов в постоянное местоположение.
Не следует изменять GENERATE_FONTSили принудительно перезапускать систему исключительно для того, чтобы скрыть отсутствие тома. Сначала убедитесь, что ожидаемые файлы действительно смонтированы.
Запустите скрипт генерации шрифтов Document Server после того, как контейнер получит доступ к новым файлам шрифтов.
Альтернативы: временное копирование в Docker или использование нативной операционной системы Linux.
6. Для кратковременного тестирования используйте прямое копирование контейнера.
Если вы не можете немедленно изменить Compose, скопируйте файл в текущий контейнер и перестройте каталог. Это соответствует описанному в документации ONLYOFFICE подходу с использованием Docker и позволяет избежать перестройки контейнера для быстрого тестирования:
Это удобно для устранения неполадок, но менее надежно в качестве плана развертывания. Обновление образа или создание нового контейнера может удалить скопированный файл; перезапуск того же контейнера не равносилен его воссозданию . Если шрифт необходим для текущей работы, перенесите успешно пройденный тест на монтирование с привязкой или на отдельно поддерживаемый пользовательский образ.
7. Установка непосредственно на неконтейнеризированный Linux-сервер документов.
Для установки пакетов Linux нативно, поместите файлы в системный каталог шрифтов сервера и запустите тот же скрипт перегенерации на этом хосте. Эту команду не следует запускать на обычном рабочем столе пользователя.
Этот подход оставляет файлы шрифтов в установке Linux, а не в томе Docker, но администраторам необходимо сохранять их в системе управления конфигурацией или резервных копиях при переустановке хоста. Обратитесь к официальной процедуре ONLYOFFICE для Linux для сервера, на который установлен пакет. Если ваши редакторы обслуживаются более чем одним узлом Document Server, настройте на каждом узле одно и то же семейство шрифтов и варианты.
На сервере документов Linux установите шрифт и перегенерируйте его каталог шрифтов без использования команд Docker.
8. Проверьте шрифт в реальном документе.
Откройте новый сеанс редактирования в приложении, подключенном к серверу документов. В тестовом файле DOCX выберите установленное семейство шрифтов из выпадающего списка, введите строку обычного текста, текста жирным шрифтом и репрезентативных символов, отличных от английских, если шрифт предназначен для многоязычного использования. Сохраните, закройте, откройте снова и экспортируйте в PDF. Сравните ширину текста, перенос строк, охват глифов и варианты жирного/курсивного шрифта с известным эталонным документом.
Если шрифт отсутствует в выпадающем списке, проверьте путь к серверу, вывод команды fc-listи команду генерации каталога в указанном порядке. Если семейство шрифтов отображается, но макет смещается, убедитесь, что документ запрашивает именно это семейство и что существуют необходимые варианты начертания; в противном случае редактор может заменить его другим шрифтом. Установка шрифта на рабочий стол пользователя сама по себе не добавляет его на сервер.
Есть одно нюанс, зависящий от версии браузера: в инструкциях ONLYOFFICE по работе со шрифтами указано, что в версии 8.1.3 или более ранних версиях необходимо очистить кэш браузера и снова открыть редактор . В более поздних версиях этот дополнительный шаг не требуется. Если ваша установка более старая, воспользуйтесь описанным в документации шагом очистки кэша, прежде чем исследовать более сложные причины.
Убедитесь, что семейство шрифтов отображается в меню, затем снова откройте сохраненный документ и сравните перенос строк и отображаемые глифы.
Исправление подтверждается, если пользовательское семейство шрифтов остается доступным для выбора после повторного открытия редактора, сохраненный документ отображается корректно, и — для Docker — шрифты сохраняются после пересоздания службы из той же конфигурации. Если одна из этих проверок не пройдена, следует исследовать этот слой, а не многократно копировать шрифты в контейнер.