font-variant-alternates — альтернативні гліфи шрифту


автор: Svitlana

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

автор: NagarD

Синтаксис

font-variant-alternates: normal | [ stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name> #) || character-variant(<feature-value-name> #) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) ]

Властивість font-variant-alternates може отримувати 8 значень:

normal

Жодна з перерахованих нижче функцій не ввімкнена.

автор: Svitlana

stylistic(<feature-value-name>)

Дозволяє відображати стилістичні альтернативи (специфікація шрифту, функція OpenType: salt <feature-index>).

автор: Svitlana

historical-forms

Вмикає відображення історичних форм (функція OpenType: hist).

автор: Svitlana

styleset(<feature-value-name> #)

Дозволяє відображати стилістичні набори (специфікація шрифту, функція OpenType: ss<function-index> OpenType в даний час визначає ss01 через ss20).

автор: Svitlana

character-variant(<feature-value-name> #)

Дозволяє відображати певні варіанти символів (специфікація шрифтів, функція OpenType: cv<feature-index> OpenType в даний час визначає cv01 через cv99).

автор: Svitlana

swash(<feature-value-name>)

Дозволяє відображати гліфи swash (специфікація шрифту, функція OpenType: swsh<feature-index>, cswh).

автор: Svitlana

ornaments(<feature-value-name>)

Дозволяє замінити гліфи за замовчуванням з орнаментами, якщо вони представлені в шрифті (специфікація шрифту, функція OpenType: ornm<function-index>).

автор: Svitlana

annotation(<feature-value-name>)

Дозволяє відображати альтернативні форми анотацій (специфічна для шрифтів, функція OpenType: nalt<feature-index>).

автор: Svitlana

Значення без задання: normal
Наслідує: Так
Анімується: Ні
JavaScript синтаксис: object.style.fontVariantAlternatives = ' ';

Переглядачі

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

Приклади

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

swash() вмикає декоративні розчерки, оголошені в @font-feature-values. Потрібен шрифт із такими гліфами (наприклад, декоративні гарнітури) — системні шрифти зазвичай без них, тож рядки можуть збігатися.

HTML

<p>Звичайне накреслення: Quality Rare gift</p>
<p class="swash">Зі swash(fancy): Quality Rare gift</p>

CSS

@font-feature-values "Custom Font" {
    @swash {
        fancy: 1;
    }
}

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

.swash {
    font-variant-alternates: swash(fancy);
}
автор: Svitlana

Щоб різницю було видно на будь-якій машині, у приклад вбудовано крихітний навчальний шрифт: у ньому літера «a» намальована квадратом, а сім її альтернатив — трикутником, колом, ромбом, хрестиком, порожнім квадратом, вузькою планкою й «метеликом». Кожен рядок вмикає своє значення font-variant-alternates — і гліф міняється. Останні два рядки показують пастки: невизначене ім'я не робить нічого, а скорочення font, написане нижче, стирає властивість зовсім.

HTML

<table class="demo">
    <tr><th>без нічого (normal)</th><td class="s0">a a a a</td></tr>
    <tr><th>stylistic(tri)</th><td class="s1">a a a a</td></tr>
    <tr><th>styleset(circ)</th><td class="s2">a a a a</td></tr>
    <tr><th>swash(dia)</th><td class="s3">a a a a</td></tr>
    <tr><th>ornaments(plus)</th><td class="s4">a a a a</td></tr>
    <tr><th>annotation(ring)</th><td class="s5">a a a a</td></tr>
    <tr><th>character-variant(bar)</th><td class="s6">a a a a</td></tr>
    <tr><th>historical-forms</th><td class="s7">a a a a</td></tr>
    <tr class="warn"><th>styleset(немаєтакого)</th><td class="s8">a a a a</td></tr>
    <tr class="warn"><th>stylistic(tri), а нижче font:</th><td class="s9">a a a a</td></tr>
</table>
<p class="note">Два останні рядки мусять збігтися з першим — і в цьому вся пастка.</p>

CSS

@font-face {
    font-family: "AltDemo";
    src: url("data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQtOAVSIAAAC8AAABHE9TLzJlEU3dAAAB2AAAAGBjbWFwALwAGwAAAjgAAAA0Z2x5Zgghl3AAAAJsAAABeGhlYWRh0kOiAAAD5AAAADZoaGVhBd4B/wAABBwAAAAkaG10eBncA+gAAARAAAAAKGxvY2EAAAfMAAAEaAAAACxtYXhwAA8AEgAABJQAAAAgbmFtZQpKHsgAAAS0AAAAqHBvc3T/nwAyAAAFXAAAACAAAQAAAAoAKgCAAAFERkxUAAgABAAAAAD//wAHAAAAAQACAAMABAAFAAYAB3NhbHQALHNzMDEAMnN3c2gAOG9ybm0APm5hbHQARGN2MDEASmhpc3QAUAAAAAEAAAAAAAEAAQAAAAEAAgAAAAEAAwAAAAEABAAAAAEABQAAAAEABgAHABAAJAA4AEwAYAB0AIgAAQAAAAEACAABAAYAAQABAAEAAQABAAAAAQAIAAEABgACAAEAAQABAAEAAAABAAgAAQAGAAMAAQABAAEAAQAAAAEACAABAAYABAABAAEAAQABAAAAAQAIAAEABgAFAAEAAQABAAEAAAABAAgAAQAGAAYAAQABAAEAAQAAAAEACAABAAYABwABAAEAAQAEAlgBkAAFAAACigK8AAAAAAKKArwAAAHgADIA+gAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABBTFREAEAAIABhAyD/OAAAAyAAyAAAAAEAAAAAAfQCvAAAACAAAQAAAAEAAwABAAAADAAEACgAAAAGAAQAAQACACAAYf//AAAAIABh////6f+gAAEAAAAAAAAAAQBkAAACWAH0AAMAAAEBAQEAZAH0AAD+DAAAAAAB9AAAAAAAAQBkAAACWAH0AAIAAAEBAQBkAfT/BgAAAAAB9AAAAAABAGQAAAJYAfQABwAAAQEBAQEBAQECWP+2/1D/T/+3AEkAsACxAPoAsABK/7b/UP9P/7cASQAAAAEAZAAAAlgB9AADAAABAQEBAV4A+v8G/wYAAAD6APr/BgAAAAEAZAAAAlgB9AALAAABAQEBAQEBAQEBAQEBGACMAAAAtAAA/0wAAP90AAD/TAAAALQAAAAAALQAAACMAAAAtAAA/0wAAP90AAAAAAACAGQAAAJYAfQAAwAHAAABAQEBAQEBAQBkAfQAAP4MAGQAAAEsAAAAAAAAAfQAAP5wASwAAP7UAAEAZAAAASwB9AADAAABAQEBAGQAyAAA/zgAAAAAAfQAAAAAAAIAZAAAAlgB9AACAAUAAAEBAQEBAQBkAfT/Bv8GAPoA+gH0AAD/Bv8GAPr/BgAAAAEAAAABAAAAAAAAXw889QADA+gAAAAAAAAAAAAAAAAAAAAAAAAAAAK8ArwAAAAIAAIAAQAAAAAAAQAAAyD/OAAAArwAAAAAArwAAQAAAAAAAAAAAAAAAAAAAAoCvABkArwAZAK8AGQCvABkArwAZAK8AGQCvABkArwAZAK8AGQBQABkAAAAAAAAAAAAAAAkAAAARAAAAHwAAACgAAAA7AAAASQAAAFIAAABeAAAAXgAAQAAAAoAEAAEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAUAQgADAAEECQABAA4AAAADAAEECQACAA4ADgADAAEECQADAB4AHAADAAEECQAEAA4AOgADAAEECQAGAB4ASABBAGwAdABEAGUAbQBvAFIAZQBnAHUAbABhAHIAQQBsAHQARABlAG0AbwAtAFIAZQBnAHUAbABhAHIAQQBsAHQARABlAG0AbwBBAGwAdABEAGUAbQBvAC0AUgBlAGcAdQBsAGEAcgADAAAAAAAA/5wAMgAAAAAAAAAAAAAAAAAAAAAAAAAA") format("truetype");
}

@font-feature-values "AltDemo" {
    @stylistic { tri: 1; }
    @styleset { circ: 1; }
    @swash { dia: 1; }
    @ornaments { plus: 1; }
    @annotation { ring: 1; }
    @character-variant { bar: 1; }
}

.demo {
    border-collapse: collapse;
}

.demo th {
    padding: 6px 16px 6px 0;
    text-align: left;
    white-space: nowrap;
    font: 600 .85em/1.4 system-ui, sans-serif;
    color: #5a6472;
}

.demo td {
    padding: 4px 0;
    font-family: "AltDemo";
    font-size: 30px;
    line-height: 1.3;
    color: #2f6fd0;
}

.demo .warn th {
    color: #c0392b;
}

.s1 { font-variant-alternates: stylistic(tri); }
.s2 { font-variant-alternates: styleset(circ); }
.s3 { font-variant-alternates: swash(dia); }
.s4 { font-variant-alternates: ornaments(plus); }
.s5 { font-variant-alternates: annotation(ring); }
.s6 { font-variant-alternates: character-variant(bar); }
.s7 { font-variant-alternates: historical-forms; }
.s8 { font-variant-alternates: styleset(nemaetakogo); }

.demo .s9 {
    font-variant-alternates: stylistic(tri);
    font: 30px/1.3 "AltDemo";
}

.note {
    margin: 14px 0 0;
    max-width: 620px;
    font: .85em/1.5 system-ui, sans-serif;
    color: #5a6472;
}
автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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