stylistic() в CSS — стилістична альтернатива літер шрифту


Опис

Функція stylistic() у CSS є потужним інструментом, що надає можливість використовувати стилістичні альтернативи для окремих символів у тексті. Вона є частиною набору властивостей для управління шрифтами і може застосовуватися для створення унікальних візуальних ефектів. Параметром цієї функції є назва, специфічна для шрифту, яка відповідає числовому значенню. Ця назва відповідає значенню salt у специфікації OpenType, наприклад, salt 2.

Ось як можна використовувати функцію stylistic() у практичному застосуванні:

p {
  font-variant-alternates: stylistic(user-defined-ident);
}

У цьому прикладі, user-defined-ident є значенням, яке визначається користувачем і відповідає конкретній стилістичній альтернативі. Воно пов'язується з числовим індексом, визначеним у @font-feature-values at-rule для відповідного шрифту. Таке використання дозволяє застосовувати відповідну стилістичну альтернативу до вибраних символів у тексті.

Використання функції stylistic() відкриває нові можливості для змінювання вигляду окремих символів у тексті. Кожна стилістична альтернатива пов'язана з певним числовим індексом, який визначається шрифтом. Застосування цієї функції надає дизайнерам велику гнучкість та контроль над відображенням тексту.

автор: Bond

Загальний опис

автор: NagarD

Нотатка

Значення, передане в stylistic(), повинно бути визначено в @font-feature-values для даного шрифту.

автор: Bond
Нотатка

Не всі шрифти мають стилістичні альтернативи. Перед використанням цієї функції важливо перевірити, чи підтримує шрифт цю можливість.

автор: Bond
Нотатка

Підтримка цієї функції може відрізнятися в різних браузерах.

автор: Bond
Нотатка

Функція stylistic() є цінним доповненням до інструментарію CSS, що дозволяє дизайнерам та розробникам змінювати вигляд окремих символів у тексті, застосовуючи стилістичні альтернативи, які визначені для конкретного шрифту. Ця можливість може бути використана для створення унікальних і виразних сторінок, які відображають особливий стиль бренду або веб-сайту.

автор: Bond

Синтаксис

stylistic(<feature-value-name>);

Функція stylistic може отримувати єдине значення:

<feature-value-name>

Це назва стилістичного варіанту, який був визначений в директиві @font-feature-values для даного шрифту.

автор: Bond

Значення без задання: none

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
111 34 16.2 97 111
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
111 111 34 16.2

Приклади

+ запропонувати свій приклад у пісочниці

@stylistic іменує стилістичну альтернативу окремих літер (OpenType-функція salt), а stylistic() застосовує її. Ефект видно лише зі шрифтом, який має альтернативні гліфи, — системні зазвичай без них.

HTML

<p>Звичайне накреслення: a g y R Q</p>
<p class="variant">Зі stylistic(alt): a g y R Q</p>

CSS

@font-feature-values "Custom Font" {
    @stylistic {
        alt: 1;
    }
}

p {
    font-family: "Custom Font", serif;
}

p.variant {
    font-variant-alternates: stylistic(alt);
}
автор: Bond

Верхній блок працює лише там, де є шрифт DejaVu Sans (типово це Linux): у ньому таблиця salt замінює двоповерхову «a» на одноповерхову. Якщо у вас іншої системи, рядки виглядатимуть однаково — і це саме те, про що йдеться в тексті: ознака залежить від шрифту. Нижній блок працює скрізь: @supports показує, які записи браузер узагалі приймає, а які відкидає, — тут видно, що число й кома в аргументі невалідні.

HTML

<p class="head">DejaVu Sans, той самий текст. У другому рядку stylistic(alt)
    вмикає одноповерхову «ɑ» — порівняйте літеру «a»:</p>
<p class="s dv">alphabet · abracadabra · casa</p>
<p class="s dv salt">alphabet · abracadabra · casa</p>
<p class="cap">рядок 1 — без нічого, рядок 2 — font-variant-alternates: stylistic(alt)</p>

<p class="head">Те саме напряму, чотирилітерним кодом ознаки — результат однаковий:</p>
<p class="s dv fs">alphabet · abracadabra · casa</p>
<p class="cap">font-feature-settings: "salt" 1</p>

<p class="head">⚠️ Невизначений ідентифікатор — оголошення дійсне, ефекту немає:</p>
<p class="s dv nodef">alphabet · abracadabra · casa</p>
<p class="cap">stylistic(nema-takogo) — жодної помилки й жодної зміни</p>

<p class="head">⚠️ Значення прив'язані до РОДИНИ: оголошені для «DejaVu Sans»,
    вони не діють на «DejaVu Serif»:</p>
<p class="s ds">alphabet · abracadabra · casa</p>
<p class="s ds salt">alphabet · abracadabra · casa</p>
<p class="cap">обидва рядки — DejaVu Serif, другий зі stylistic(alt)</p>

<p class="head">А це працює в будь-якій системі: @supports показує, які записи
    браузер приймає, а які відкидає:</p>
<ul class="check">
    <li class="v1">stylistic(alt)</li>
    <li class="v2">stylistic(2)</li>
    <li class="v3">stylistic()</li>
    <li class="v4">stylistic(alt, other)</li>
    <li class="v5">styleset(one, two)</li>
    <li class="v6">stylistic(alt) styleset(one) swash(fancy)</li>
</ul>

CSS

@font-feature-values "DejaVu Sans" {
    @stylistic { alt: 1; }
}

.head {
    margin: 22px 0 8px;
    max-width: 620px;
    color: #5a6472;
    font-size: .9em;
}

.cap {
    margin: 4px 0 0;
    color: #5a6472;
    font: 12px/1.4 ui-monospace, monospace;
}

.s {
    margin: 0;
    padding: 6px 10px;
    background: #f6f9ff;
    border-left: 4px solid #b9c6d8;
    font-size: 30px;
}

.dv { font-family: "DejaVu Sans", sans-serif; }
.ds { font-family: "DejaVu Serif", serif; }

.salt { font-variant-alternates: stylistic(alt); border-left-color: #3a9a4f; }
.fs { font-feature-settings: "salt" 1; border-left-color: #3a9a4f; }
.nodef { font-variant-alternates: stylistic(nema-takogo); border-left-color: #e08a1e; }

.check {
    margin: 0;
    padding-left: 22px;
    color: #333;
    font: 14px/2 ui-monospace, monospace;
}

.check li::after {
    content: " — відкидається";
    color: #d64545;
    font-weight: 700;
}

@supports (font-variant-alternates: stylistic(alt)) {
    .check .v1::after { content: " — приймається"; color: #3a9a4f; }
}

@supports (font-variant-alternates: stylistic(2)) {
    .check .v2::after { content: " — приймається"; color: #3a9a4f; }
}

@supports (font-variant-alternates: stylistic()) {
    .check .v3::after { content: " — приймається"; color: #3a9a4f; }
}

@supports (font-variant-alternates: stylistic(alt, other)) {
    .check .v4::after { content: " — приймається"; color: #3a9a4f; }
}

@supports (font-variant-alternates: styleset(one, two)) {
    .check .v5::after { content: " — приймається"; color: #3a9a4f; }
}

@supports (font-variant-alternates: stylistic(alt) styleset(one) swash(fancy)) {
    .check .v6::after { content: " — приймається"; color: #3a9a4f; }
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід