Отображение Firefox семейства шрифтов "monospace" (не monospace) иногда как Noto Color Emoji.

Вопрос или проблема

У меня странная проблема с Firefox: он отображает спецификацию шрифта "monospace" как Noto Color Emoji. Спецификация monospace выбирает правильный шрифт по умолчанию Noto Sans Mono в этом случае.

fc-list monospace возвращает тот же правильный шрифт. Я также не изменял никакие сопоставления, так что не совсем понимаю, откуда это берется. Единственное, что стоит отметить, это то, что fc-list -s monospace перечисляет шрифт эмодзи как второй результат.

Я замечал эту проблему на нескольких сайтах, так что это не проблема конкретного сайта. ОДНАКО, как вы можете видеть справа, шрифт правильный с той же спецификацией font-family. Я также не смог найти CSS-свойства, которые вызывают эту разницу.

font-family: "Droid Sans Mono", "monospace", monospace:
Со шрифтом "monospace"

font-family: "Droid Sans Mono", monospace:
Без шрифта "monospace"

(У меня не установлен Droid Sans Mono, и сайт также не предоставляет его напрямую, поэтому используется запасной вариант).

Для справки, это один из сайтов, где я это видел: https://mermaid.live/edit
Другой пример – веб-IDE GitHub.

Версия Ubuntu: Ubuntu 24.04.2 LTS
Версия Firefox: 136.0 (64-Bit) (хотя это происходило с тех пор, как я использую эту систему, а это примерно 3 месяца)

.

Ответ или решение

Теория

Рендеринг шрифтов в веб-браузерах, таких как Firefox, является сложным процессом, и он может быть подвержен различным факторам, включая операционную систему, настройки пользователя и доступные шрифты на устройстве. В современных системах, таких как Ubuntu, выбор шрифта осуществляется с использованием библиотек, таких как Fontconfig, которая отвечает за управление и сопоставление шрифтов. Важный аспект, который необходимо понимать: тег font-family в CSS позволяет указать предпочтительные шрифты, включая конкретные имена шрифтов и семейства, такие как monospace, serif или sans-serif.

Ваш случай с Firefox, рендерящим "monospace" как Noto Color Emoji вместо ожидаемого Noto Sans Mono, может быть связан с приоритетами шрифтов в системе и спецификой работы Fontconfig. Когда браузеры обрабатывают font-family, они ищут первый подходящий шрифт из перечисления. Если мотивация выбора Firefox не совпадает с вашими ожиданиями, это может значить, что в списке доступны альтернативные шрифты, которые соответствуют требованиям, но не являются визуально предпочтительными.

Пример

В работе Fontconfig, использованной в Ubuntu и подобных операционных системах, каждый тип шрифта отображается в форме списка приоритетов. Ваше наблюдение, что fc-list -s monospace дает Noto Color Emoji как второй результат, уже указывает на разность в приоритетных или сопоставляемых шрифтах для семейства monospace. Это и объясняет странную выборку Firefox. Такой результат может возникнуть из-за особенностей форматов шрифтов, где Noto Color Emoji содержит глифы, которые отсутствуют в других шрифтах.

Применение

Чтобы решить проблему, нежелательный рендеринг шрифта можно исправить несколькими способами:

  1. Настройка приоритетов использования шрифтов в Fontconfig: Создание или изменение существующего файла конфигурации ~/.config/fontconfig/fonts.conf. Это позволит явно управлять приоритетами использования для всех шрифтов, обеспечивая, что Noto Sans Mono всегда будет рендериться прежде, чем Noto Color Emoji. Например:

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
     <match>
       <test name="family" compare="eq">
         <string>monospace</string>
       </test>
       <edit name="family" mode="prepend" binding="strong">
         <string>Noto Sans Mono</string>
       </edit>
     </match>
    </fontconfig>
  2. Явное указание шрифтов в CSS: При наличии контроля над CSS-кодом веб-сайтов применять конкретные шрифты в первую очередь, тем самым уменьшив значения обсуждаемых меток, например font-family: "Droid Sans Mono", "Noto Sans Mono", "monospace".

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

  4. Обновление системы и браузера: Иногда проблемы могут быть устранены обновлениями программного обеспечения. Попробуйте обновить Ubuntu и Firefox до самых последних версий.

Если все предложенные варианты не решают вашу проблему, стремитесь к сообществу разработчиков и форумам поддержки Ubuntu и Mozilla Firefox, чтобы получить помощь и получить дополнительную информацию о возможных бага OS или браузера.

Оцените материал
(не monospace) иногда как Noto Color Emoji.

">
Добавить комментарий

Капча загружается...