5.4. Styl czcionki (font-style
, font-variant
)
font-style
, font-variant
)
Wprowadzenie: Kursywa i Kapitaliki
Oprócz rodziny, rozmiaru i wagi, CSS pozwala również kontrolować inne aspekty stylu czcionki, takie jak pochylenie (kursywa) oraz użycie kapitalików (małych liter wyglądających jak pomniejszone wersje wielkich liter).
Do kontroli pochylenia służy właściwość font-style
, a do włączania kapitalików – font-variant
.
Właściwość font-style
Właściwość font-style
służy głównie do wyboru między normalnym tekstem a jego pochyloną wersją (kursywą).
Może przyjmować następujące wartości:
normal
: Wyświetla tekst normalnie, bez pochylenia. Jest to wartość domyślna.italic
: Wyświetla tekst przy użyciu dedykowanej wersji kursywnej czcionki (jeśli jest dostępna). Czcionki kursywne (italic) są często specjalnie zaprojektowane przez typografa i mogą mieć inny kształt liter niż tylko mechanicznie pochylona wersja normalna.oblique
: Wyświetla tekst przez mechaniczne pochylenie normalnej wersji czcionki. Jest to efekt symulowany przez przeglądarkę, jeśli dedykowana wersjaitalic
nie jest dostępna. Można opcjonalnie podać kąt pochylenia (np.oblique 10deg
), ale wsparcie dla kąta jest ograniczone.
p {
font-style: normal;
}
em, i {
/* Elementy em i i domyślnie mają styl italic */
font-style: italic;
}
.cytat {
font-style: italic;
}
.pochylony-sztucznie {
/* Przeglądarka spróbuje użyć italic, a jeśli nie ma, pochyli normalną wersję */
font-style: oblique;
}
.pochylony-o-kat {
/* Wsparcie dla kąta może być ograniczone */
font-style: oblique 15deg;
}
italic
vs oblique
: Zawsze preferuj użycie italic
, jeśli chcesz uzyskać kursywę. Przeglądarka najpierw poszuka dedykowanej wersji italic
czcionki (załadowanej przez @font-face
lub systemowej). Jeśli jej nie znajdzie, a użyłeś italic
, może spróbować użyć wersji oblique
(jeśli jest) lub syntetycznie pochylić wersję normalną. Jeśli użyjesz oblique
, przeglądarka pominie szukanie wersji italic
i od razu spróbuje użyć wersji oblique
lub syntetycznego pochylenia.
Podobnie jak w przypadku font-weight
, dostępność prawdziwej kursywy (italic
) zależy od tego, czy dana czcionka posiada taki wariant i czy został on poprawnie załadowany (np. przez @font-face
z odpowiednim deskryptorem font-style: italic;
).
Właściwość font-variant
Właściwość font-variant
jest właściwością zbiorczą, ale jej najczęstszym zastosowaniem jest włączanie **kapitalików** za pomocą wartości small-caps
.
Najważniejsze wartości dla font-variant
(w kontekście kapitalików):
normal
: Wyłącza wszystkie warianty, w tym kapitaliki. Wartość domyślna.small-caps
: Włącza kapitaliki. Małe litery są zastępowane przez pomniejszone wersje wielkich liter. Jeśli czcionka posiada dedykowane glify dla kapitalików, zostaną one użyte. W przeciwnym razie przeglądarka może spróbować je zasymulować.
h1 {
/* Nagłówek zapisany normalnie w HTML będzie wyświetlony KAPITALIKAMI */
font-variant: small-caps;
}
.inicjaly {
font-variant: small-caps;
font-weight: bold;
}
<h1>To jest nagłówek</h1>
<!-- W przeglądarce (z powyższym CSS): TO JEST NAGŁÓWEK (z małymi literami jako pomniejszone wielkie) -->
<p>Autor: <span class="inicjaly">J.K.</span> Rowling</p>
<!-- W przeglądarce: Autor: J.K. Rowling (inicjały jako kapitaliki) -->
Syntetyczne kapitaliki (Faux Small-Caps): Podobnie jak w przypadku pogrubienia, jeśli czcionka nie ma specjalnie zaprojektowanych glifów dla kapitalików, przeglądarka może spróbować je zasymulować, po prostu zmniejszając wielkie litery. Efekt może być mniej estetyczny niż prawdziwe kapitaliki.
Właściwość font-variant
może przyjmować również inne, rzadziej używane wartości związane z ligaturami, formami cyfr itp. (np. font-variant-ligatures
, font-variant-numeric
), ale small-caps
jest zdecydowanie najpopularniejszym zastosowaniem.
Zadania praktyczne
Zadanie 1 (z rozwiązaniem)
Użyj CSS, aby wszystkie cytaty blokowe (elementy <blockquote>
) były wyświetlane kursywą.
Rozwiązanie:
CSS:
blockquote {
font-style: italic;
}
Efekt: Tekst wewnątrz wszystkich elementów <blockquote>
zostanie pochylony (używając wersji italic
czcionki, jeśli dostępna).
Zadanie 2 (do samodzielnego wykonania)
Stwórz nagłówek <h2>
z tekstem "Ważne Ogłoszenie". Użyj właściwości font-variant
, aby wyświetlić ten tekst za pomocą kapitalików.
Zadanie 3 (do samodzielnego wykonania)
Załóżmy, że masz czcionkę, która nie ma dedykowanej wersji kursywnej. Ustaw font-style: italic;
dla jednego paragrafu i font-style: oblique;
dla drugiego. Porównaj (jeśli to możliwe wizualnie) efekt renderowania w Twojej przeglądarce. Czy wyglądają identycznie (syntetyczne pochylenie)?
FAQ - Najczęściej zadawane pytania
Kiedy używać italic
, a kiedy em
lub i
w HTML?
W HTML5, element <i>
jest używany do oznaczenia tekstu, który różni się od otaczającego (np. termin techniczny, nazwa statku, myśl), bez nadawania mu specjalnego nacisku. Element <em>
(emphasis) służy do położenia nacisku na słowo lub frazę. Domyślnie oba są renderowane kursywą (font-style: italic;
), ale ich znaczenie semantyczne jest inne. Używaj ich zgodnie ze znaczeniem, a stylizuj za pomocą CSS.
Czy font-variant: small-caps;
działa dla wszystkich czcionek?
Tak, przeglądarka spróbuje zastosować ten styl. Jednak jakość efektu zależy od czcionki. Jeśli czcionka ma wbudowane glify dla kapitalików, efekt będzie najlepszy. W przeciwnym razie przeglądarka zasymuluje kapitaliki, co może wyglądać gorzej (np. cieńsze linie w pomniejszonych literach).
Czy mogę używać font-style
i font-variant
jednocześnie?
Tak, można łączyć te właściwości, np. font-style: italic; font-variant: small-caps;
, aby uzyskać pochylone kapitaliki (o ile czcionka wspiera taką kombinację lub przeglądarka potrafi ją zasymulować).
Jak załadować kursywę za pomocą @font-face
?
Musisz mieć osobny plik czcionki dla wersji kursywnej. W regule @font-face
dla tego pliku, oprócz font-family
i src
, dodaj deskryptor font-style: italic;
. Dzięki temu przeglądarka będzie wiedziała, że ten plik zawiera kursywę dla danej rodziny czcionek.
@font-face {
font-family: "MojaCzcionka";
src: url("czcionka-italic.woff2") format("woff2");
font-weight: 400; /* Waga dla tej kursywy */
font-style: italic; /* Wskazanie, że to kursywa */
}