Как заменяются шрифты в семействе шрифтов CSS

Недавно я наткнулся на такой код:

span { font-family: Helvetica, 'Segoe UI'; }

<span>Lorem ipsum</span>

На моем компьютере нет Helvetica, но присутствует пользовательский интерфейс Segoe, поэтому ожидаемый результат заключается в том, что текст будет отображаться с использованием Segoe. Однако используется Arial (как проверено в DevTools).

После некоторой игры я уверен, что мой браузер обрабатывает запись Helvetica так, как если бы это была Arial, поэтому процесс выбора шрифта останавливается на этом — на несуществующем шрифте.

Как это решено? Есть ли списки замены шрифтов? Я не могу найти ничего подобного в спецификации модуля CSS Fonts.

Это происходит как в Chromium Edge, так и в Firefox в Windows 11.

Это может быть techcommunity.microsoft.com/t5/windows-insider-program/…

Jeff Zeitlin 28.08.2024 16:06

пожалуйста, проверьте это. stackoverflow.com/questions/6996632/… , w3schools.com/cssref/pr_font_font-family.php

NINE 28.08.2024 16:07

@JeffZeitlin, спасибо! Кажется, именно это является причиной того, что Helvetica рассматривается как Arial.

Marcin Szwarc 28.08.2024 16:10

Не нужно экспериментировать: откройте инструменты разработки Firefox и просто посмотрите, какой шрифт, как знает браузер, он применил (не как свойство CSS, а как фактическое отображение). Существует специальная вкладка шрифтов, и при наведении курсора на шрифты будет выделен весь текст, в котором он используется. Невероятно ценная панель инструментов разработчика).

Mike 'Pomax' Kamermans 28.08.2024 16:48

@Mike'Pomax'Kamermans, я спрашивал не какой шрифт применяется, а почему применяется определенный шрифт

Marcin Szwarc 28.08.2024 17:31

«После некоторой игры я уверен, что мой браузер воспринимает запись Helvetica так, как если бы это был Arial», говорит, что здесь требуется догадка, поэтому исключите догадки из отладки. Я не пытался ответить на ваш пост (у вас уже есть ответ), а указал не только вам, но и всем будущим посетителям, которые найдут этот пост, что есть способ просто проверить.

Mike 'Pomax' Kamermans 28.08.2024 17:32

Да, я хотел убедиться, что вместо Helvetica применяется Arial, а не потому, что это может быть шрифт без засечек по умолчанию.

Marcin Szwarc 28.08.2024 17:34
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
7
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Судя по вашему ответу на мой комментарий к вопросу, у вас в реестре есть несколько записей о замене шрифтов, и одна из них — замена Arial на любой запрос на Helvetica. Это описано в этой публикации на техническом сообществе Microsoft; по сути, в реестре в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes есть записи, позволяющие приложениям использовать шрифты, которые у вас есть, когда запрашиваются определенные предположительно похожие шрифты, которых у вас нет.

В описанном вами сценарии, где браузер, кажется, заменяет Arial на Helvetica, несмотря на то, что пользовательский интерфейс Segoe доступен и указан следующим в стеке шрифтов CSS, вы сталкиваетесь с тем, что обычно называют резервным шрифтом или поведением замены шрифта в веб-браузерах. Это поведение не подробно описано в модуле «Шрифты CSS», но является частью того, как браузеры обрабатывают рендеринг шрифтов в различных операционных системах, особенно когда указанный шрифт не найден. span {семейство шрифтов: 'Segoe UI', Arial, без засечек; }

Другие вопросы по теме