Reguła CSS @font-feature-values

> Dodaj do ulubionych

Reguła CSS @font-feature-values umożliwia zdefiniowanie nazwy dla wybranej właściwości fontu OpenType, aby można jej było wygodnie używać we własności font-variant-alternates.

Przykład

W poniższym przykładzie za pomocą reguły @font-feature-values nadano nazwę kaligrafia kaligraficznej wersji znaków fontu Zap Fino Extra LT Pro, której następnie użyto we własności font-variant-alternates.

@font-face {
  font-family: ZapFinoExtraLTPro;
  src: url("ZapfinoExtraLTPro.otf");
}

@font-feature-values "ZapFinoExtraLTPro" {
  @swash {
    kaligrafia: 1;
  }
}
p {
  font-family: "ZapFinoExtraLTPro";
  font-variant-alternates: swash(kaligrafia);
}

Wartości i składnia

Konstrukcja reguły @font-variant-values składa się z kilku części: listy nazw fontów lub rodzin fontów i bloku zawierającego zestaw specjalnych „podreguł @” reprezentujących właściwości fontów OpenType, w których znajdują się deklaracje wiążące nazwy zdefiniowane przez użytkownika z indeksami właściwości fontów OpenType:

@font-feature-values lista-nazw-fontów {
  @podreguła-@ {
    nazwa-użytkownika: indeks-właściwości;
  }
}

Na przykład:

@font-feature-values "ZapFinoExtraLTPro" {
  @swash {
    kaligrafia: 1;
  }
}

W tym przykładzie użyto tylko jednego fontu – ZapFinoExtraLTPro. Jeśli ma być ich więcej, ich nazwy należy rozdzielić przecinkami oraz należy pamiętać, że dobrą praktyką jest umieszczanie w cudzysłowie nazw składających się z więcej niż jednego wyrazu. Nazwy fontów rodzajowych i systemowych są niedozwolone. Jeśli lista fontów zawiera błąd, to cała reguła zostaje uznana za błędną i jest ignorowana przez przeglądarkę.

Użyta podreguła @swash odnosi się do kaligraficznej wersji znaków, jeśli font taką zawiera. Zawiera ona deklarację, która składa się ze słowa kaligrafia (nazwa wybrana przez użytkownika, może być dowolna) i liczby 1 – numeru wybranego zestawu znaków kaligraficznych (font może zawierać tylko jeden taki zestaw, kilka takich zestawów albo żadnego).

Takich podreguł może być kilka, jeśli font zawiera więcej zestawów znaków określonego typu i projektant chce każdemu z nich nadać przyjazną dla użytkownika nazwę, lub jeśli projektant chce zdefiniować nazwy dla różnych rodzajów zestawów znaków.

Nazwa zdefiniowana przez użytkownika musi być identyfikatorem CSS i w nazwach tych jest rozróżniana wielkość liter, np. coś i Coś to dwie różne nazwy.

Poniżej znajduje się lista dostępnych właściwości fontów OpenType (odpowiadają one wartościom własności font-variant-alternates o takich samych nazwach):

font-display
Określa domyślną wartość dla deskryptora font-display reguły @font-face odnoszącej się do tej samej rodziny fontów. Wartość tego deskryptora zostanie użyta tylko wtedy, gdy nie zostanie zdefiniowana analogiczna wartość w regule @font-face. Jeśli deskryptor font-display nie zostanie zdefiniowany ani w regule @font-face ani w @font-feature-values, domyślnie zostanie mu nadana wartość auto.
@historical-forms
Historyczne formy znaków, czyli takie, które były używane w przeszłości, ale już wyszły z użycia.
@annotation
Adnotacyjne odmiany glifów, na przykład cyfry w okręgu, prostokącie, rombie itd.
@character-variant
Specyficzne odmiany stylistyczne znaków, które nie muszą wspólnie tworzyć spójnego zestawu, tzn. mogą całkowicie różnić się wyglądem. Deklaracja może mieć jedną lub dwie wartości. Jeśli jest jedna wartość, to włącza ona określoną odmianę znaków, natomiast w przypadku dwóch wartości pierwsza włącza określoną właściwość i ustawia ją na drugą, np.: nazwa: 3 5 oznacza cv03=5.
@ornaments
Ornamenty, czyli zdobnicze elementy używane w typografii/
@styleset
Alternatywne stylistyczne podzbiory znaków, np. różne warianty małych liter. W tym przypadku deklaracja może zawierać kilka wartości, które włączają odpowiednie podzbiory znaków, np.:
@styleset {
  zestawy: 7 8;       /* włącza ss08 i ss09 */
}
@stylistic
Alternatywne wersje stylistyczne pojedynczych znaków.
@swash
Kaligraficzna odmiana znaków.