рендеринг текста
Свойство text-rendering CSS предоставляет информацию рендеринговому движку о том, на что следует оптимизировать при рендеринге текста.
Браузер выбирает компромисс между скоростью, читаемостью и геометрической точностью.
Примечание: Свойство text-rendering — это свойство SVG, которое не определено в стандартах CSS. Однако браузеры Gecko и WebKit позволяют применять это свойство к HTML- и XML-содержимому в Windows, macOS и Linux.
Один из очень заметных эффектов — optimizeLegibility, который позволяет использовать лигатуры (ff, fi, fl и т. д.) в тексте размером меньше 20 пикселей для некоторых шрифтов (например, Calibri, Candara, Constantia и Corbel от Microsoft или семейство шрифтов DejaVu).
Синтаксис
/* Keyword values */ text-rendering: auto; text-rendering: optimizeSpeed; text-rendering: optimizeLegibility; text-rendering: geometricPrecision; /* Global values */ text-rendering: inherit; text-rendering: initial; text-rendering: revert; text-rendering: revert-layer; text-rendering: unset;
Значения
auto-
Браузер делает обоснованные предположения о том, когда следует оптимизировать скорость, читаемость и геометрическую точность при отрисовке текста. Для различий в способах интерпретации этого значения браузерами см. таблицу совместимости.
optimizeSpeed-
Браузер уделяет больше внимания скорости рендеринга, чем читаемости и геометрической точности при отрисовке текста. Он отключает кернинг и лигатуры.
optimizeLegibility-
Браузер уделяет больше внимания читаемости, чем скорости рендеринга и геометрической точности. Это включает кернинг и необязательные лигатуры.
geometricPrecision-
Браузер уделяет больше внимания геометрической точности, чем скорости рендеринга и читаемости. Некоторые аспекты шрифтов, такие как кернинг, не масштабируются линейно. Поэтому это значение может сделать текст с использованием этих шрифтов более качественным.
В SVG, когда текст масштабируется вверх или вниз, браузеры вычисляют окончательный размер текста (который определяется указанным размером шрифта и примененным масштабом) и запрашивают шрифт этого вычисленного размера у систем шрифтов платформы. Но если вы запросите размер шрифта, например, 9 с масштабом 140%, то результирующий размер шрифта 12,6 явно не существует в системе шрифтов, поэтому браузер округляет размер шрифта до 12. Это приводит к ступенчатому масштабированию текста.
Но свойство
geometricPrecision— при полной поддержке рендеринговым движком — позволяет плавно масштабировать текст. При больших коэффициентах масштабирования вы можете увидеть рендеринг текста невысокого качества, но размер будет таким, как ожидалось — ни округлённым вверх, ни вниз до ближайшего размера шрифта, поддерживаемого Windows или Linux.Примечание: WebKit точно применяет указанное значение, но Gecko обрабатывает значение так же, как
optimizeLegibility.
Формальное определение
| Начальное значение | auto |
|---|---|
| Применяется к | элементам текста |
| Наследуется | да |
| Вычисленное значение | как указано |
| Тип анимации | дискретный |
Формальный синтаксис
Примеры
Автоматическое применение optimizeLegibility
Здесь показано, как optimizeLegibility автоматически используется браузерами, когда font-size меньше 20px.
HTML
<p class="small">LYoWAT - ff fi fl ffl</p> <p class="big">LYoWAT - ff fi fl ffl</p>
CSS
.small {
font:
19.9px "Constantia",
"Times New Roman",
"Georgia",
"Palatino",
serif;
}
.big {
font:
20px "Constantia",
"Times New Roman",
"Georgia",
"Palatino",
serif;
}
Результат
optimizeSpeed и optimizeLegibility
Этот пример демонстрирует разницу во внешнем виде optimizeSpeed и optimizeLegibility (в вашем браузере; в других браузерах может быть иначе).
HTML
<p class="speed">LYoWAT - ff fi fl ffl</p> <p class="legibility">LYoWAT - ff fi fl ffl</p>
CSS
p {
font:
1.5em "Constantia",
"Times New Roman",
"Georgia",
"Palatino",
serif;
}
.speed {
text-rendering: optimizeSpeed;
}
.legibility {
text-rendering: optimizeLegibility;
}
Результат
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
text-rendering |
4["Это свойство поддерживается только в Windows и Linux.", "Первые версии имели ошибки в Windows и Linux, которые нарушали подстановку шрифтов, полужирный курсив, интерлиньяж или приводили к наложению текста. См. ошибку 40156511, ошибку 40430936, ошибку 40444347, ошибку 40286561."] |
79["Это свойство поддерживается только в Windows и Linux.", "Первые версии имели ошибки в Windows и Linux, которые нарушали подстановку шрифтов, полужирный курсив, интерлиньяж или приводили к наложению текста. См. ошибку 40156511, ошибку 40430936, ошибку 40444347, ошибку 40286561."] |
1["Это свойство поддерживается только в Windows и Linux.", "ВариантoptimizeSpeed не оказывает влияния на Firefox 4, так как стандартный код для рендеринга текста уже быстрый, и в данный момент нет более быстрого пути. Подробности см. в ошибке 595688."] |
15 | 5 | 18["Это свойство поддерживается только в Windows и Linux.", "Первые версии имели ошибки в Windows и Linux, которые нарушали подстановку шрифтов, полужирный курсив, интерлиньяж или приводили к наложению текста. См. ошибку 40156511, ошибку 40430936, ошибку 40444347, ошибку 40286561."] |
46 | 14 | 4.2 | 1.0Это свойство поддерживается только в Windows и Linux. Samsung Internet не работает в Windows или Linux. |
3С версии 3 до 4.3 существует серьезная ошибка, гдеtext-rendering: optimizeLegibility приводит к тому, что пользовательские веб-шрифты не отображаются. Это было исправлено в версии 4.4. |
auto |
4Chrome рассматриваетauto как optimizeSpeed. |
79Edge рассматриваетauto как optimizeSpeed. |
1Если размер шрифта составляет 20 пикселей или более, Firefox рассматриваетauto как optimizeLegibility. Для более мелкого текста Firefox рассматривает auto как optimizeSpeed. Пороговое значение 20 пикселей можно изменить с помощью параметра browser.display.auto_quality_min_font_size. |
15Opera рассматриваетauto как optimizeSpeed. |
18Chrome рассматриваетauto как optimizeSpeed. |
46Если размер шрифта составляет 20 пикселей или более, Firefox рассматриваетauto как optimizeLegibility. Для более мелкого текста Firefox рассматривает auto как optimizeSpeed. Пороговое значение 20 пикселей можно изменить с помощью параметра browser.display.auto_quality_min_font_size. |
14Opera рассматриваетauto как optimizeSpeed. |
1.0Samsung Internet рассматриваетauto как optimizeSpeed. |
4.4Chrome рассматриваетauto как optimizeSpeed. |
||
geometricPrecision |
13Поддерживает истинную геометрическую точность без округления до ближайшего поддерживаемого размера шрифта в операционной системе. |
79Поддерживает истинную геометрическую точность без округления до ближайшего поддерживаемого размера шрифта в операционной системе. |
1Firefox рассматриваетgeometricPrecision так же, как optimizeLegibility. |
15Поддерживает истинную геометрическую точность без округления до ближайшего поддерживаемого размера шрифта в операционной системе. |
6 | 18Поддерживает истинную геометрическую точность без округления до ближайшего поддерживаемого размера шрифта в операционной системе. |
46Firefox рассматриваетgeometricPrecision так же, как optimizeLegibility. |
14Поддерживает истинную геометрическую точность без округления до ближайшего поддерживаемого размера шрифта в операционной системе. |
6 | 1.0Поддерживает истинную геометрическую точность без округления до ближайшего поддерживаемого размера шрифта в операционной системе. |
4.4Поддерживает истинную геометрическую точность без округления до ближайшего поддерживаемого размера шрифта в операционной системе. |
См. также
-
Декорации текста CSS Модуль CSS
-
Связанные свойства CSS
-
text-decoration(и его длинные свойства, такие какtext-decoration-line,text-decoration-styleиtext-decoration-thickness) -
text-emphasis(и его длинные свойства, включаяtext-emphasis-color,text-emphasis-positionиtext-emphasis-style) text-shadowtext-transform
-
-
Атрибут SVG
text-rendering
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/text-rendering