CSS (11.) - Písmo VI. (Rodina písma - správná definice)

V minulém díle jsme se seznámili s problémy spojenými s definováním fontů v kaskádových stylech. Dnes si ukážeme jak je možné tyto problémy vyřešit.

13.10.2004 08:00 | Vasek | přečteno 21013×

Při vytváření definic kaskádových stylů dochází k nejvíce chybám, právě v definici fontů. Důvodem vzniku těchto chyb je to, že autor vytváří stránku na jedné konktrétní platformě, pro kterou korektně nastaví definici písma bez ohledu na to, zda tyto písma na ostatních platformách existují či ne. Například tvůrce webu na platformě MS Windows nevhodnou definicí písma znemožní dostat se k obsahu uživatelům, kteří si web prohlíží na platformě MacOS nebo Linux či uživatelům přistupujícím z ciziny.

Obecný typ písem

Při tvorbě stránek bychom si měli vystačit s obecným typem písma (jednotlivé typy viz. díl č.10). Písmo, které se pro zobrazení textu s definovaným typem použije, je nadefinováno klientem či uživatelem, a hlavní výhodou je to, že toto písmo je možné vybrat jen z písem nainstalovaných na dané platformě. Definování zástupných písem pro jednotlivá typová písma je možné v novějších prohlížečích (Netscape verze vyšší než 4.x, Microsoft Internet Explorer verze vyšší než 4, Opera verze vyšší než 3.5 a ve všech verzích Mozilly). Pokud použijeme v kaskádových stylech následující definici písma nebudeme mít většinou žádný problém s písmem.

Příklad:
body, td, th, li, dd { font-family: sans-serif }
p { font-family: serif }

Poznámka: Povšimněte si, že základní písmo dokumentu (patkové) je nadefinováno nejen pro tag <body>, ale i pro buňky tabulky (tagy <td>, <th>), a položky seznamu (tagy <li>, <dd>). To je nutné udělat, kvůli starším prohlížečům, jelikož mají problémy s dědičností vlastností dovnitřku tabulek a seznamů.

Počet uživatelů, kterým by se při takto nadefinovaném písmu objevilo nevhodné písmo, je velmi malý a troufám si říci, že je v podstatě zanedbatelný. Už slyším námitky: A co zahraniční návštevníci bez středoevropské znakové sady? Pro tyto návštěvníky můžeme vyrobit alternativní verzi stránek bez diakritiky (ať už ručně vytvořenou či spíše tvořenou automaticky přímo na serveru). Tím návštěvník dostane stránky jen s ASCII znaky a znaková sada již nebude mít žádný vliv. Použití obecných typů při definici písem, je asi jediným možným a stoprocentně funkčním zbůsobem pro definici písma na česky psaných stránkách.

Přesná definice písem

Pokud je potřeba na webu použít konkretní písmo,tak už z minulého dílu víme, že kaskádové styly nám to také umožňují. Vždy bychom měli mít na paměti, že design stránek by neměl být na použitém typu písma závislý. Musíme počítat s tím, že né každý má daný typ písma nainstalovaný, nebo si může v prohlížeči změnu písma zakázat. Z předcházejícího vyplívá, že písmo v kaskádových stylech jen doporučujeme, nikoliv nařizujeme či vynucujeme.

Pokud uvedeme v kaskádových stylech přesnou definici písem tzn. seznam za sebou jdoucích druhů písem, je tato definice prohlížečem vyhodnocována zleva doprava. Prohlížeč začne prvním písmem vlevo v definičním seznamu, pokud je v uživatelově systému písmo nainstalované, nastaví toto písmo pro daný text. Pokud písmo v uživatelově systému nenajde nainstalované přejde, o jedno písmo doprava, a vše opakuje. Pokud ani toto písmo nenajde, pokračuje takto do té doby než nejaké písmo definované v seznamu najde v uživatelově systému. Pokud nenajde ani jedno z definovaných písem, vypíše text svým defaultním písmem. Každý seznam písem by měl být zakončen obecným typem písma, aby se předešlo použití nevhodného druhu písma (např nepatkového místo patkového a naopak).

Výše popsaným způsobem pracují včechny prohlížeče, přestože správně by to mělo být ještě trošku složitější. Prohlížeč by měl popsaným způsobem vyhodnocovat znak po znaku unitř tagu, pro který byl seznam písem definován.

V minulém díle jsme se seznámili s jednotlivými písmy naistalovanými na jednotlivých platformách. Správný seznam písem by měl mít toto pořadí: jako první rodina písem pro Windows 3.1, poté rodina písem pro MacOS, následuje rodina písem pro Windows 95+, pokud není žádná z rodin písem základním v linuxu uvedeme rodinu písem pro Linux, a na konci seznamu je vždy uveden obecný typ písma.

Příklad:
bez-patkové:
font-family: "Arial CE", "Helvetica CE", Arial, sans-serif

patkové:
font-family: "Times New CE", "Times CE", "Times New Roman", serif

neproporcionální:
font-family: "Courier New CE", "Courier CE", "Courier New", monospace

Další problém představuje to, že jednotlivé rodiny písem se liší velikostí, někdy i dost podstatně. Například definice pro písmo Verdana.

Příklad:
font-family: "Verdana CE", "Arial CE", "Helvetica CE", Verdana, sans-serif

Pokud nebude písmo Verdana nainstalováno, použije klient většinou Arial (ve Windows), resp. Helveticu (v MacOS). Arial je písmo výrazně užší (cca. o 20%) než Verdana, tzn. že zaplní mnohem menší plochu, než při vykreslení textu Verdanou. Tento problém lze vyřešit pomocí vlastnosti font-size-adjust (viz díl č.ss), která bohužel není zatím moc podporována.

Příklad definic nejčastěji používaných písem:


Arial:
font-family: "Arial CE", "Helvetica CE", Arial, helvetica, sans-serif

Verdana:
font-family: "Verdana CE", "Arial CE", "Lucida Grande CE", "Helvetica CE", Verdana, Arial, lucida, sans-serif

Tahoma:
font-family: "Tahoma CE", "Arial CE", "Helvetica CE", Tahoma, Arial, lucida, sans-serif

Times New Roman:
font-family: "Times New CE", "Times CE", "Times New Roman", times, serif

Courier New:
font-family: "Courier New CE", "Courier CE", "Courier New", courier, monospace

Georgia
font-family: "Georgie Ce", "Times New Ce", "New York Ce", "Times Ce", Georgie, times, serif

Impact
font-family: "Imapct Ce", "Arial Ce", "Techno CE", "Helvetica CE", Impact, lucida, sans-serif

Comic Sans MS
font-family: "Comis Sans MS CE", "Arial CE", "Sand CE", "Helvetica CE", "Comis Sans MS", lucida, fantasy

Závěr

V příštím díle se podíváme na poslední vlastnost kaskádových stylů pro písmo.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=448