Jak na vlastní písmo na webu s @font-face
Pokud navrhujete design nových webových stránek, měli byste se držet pro web obvyklých písem, jako je Verdana nebo Arial. V opačném případě je bude nutné řešit grafikou. Alespoň taková je stále platná základní poučka webdesignéra. Ovšem ke slovu pomalu přichází možnost použití libovolného písma na webu.
Reklama
Pro zkušenější webdesignéry a CSS kodéry nebude tento článek asi ničím převratným, myslím si však, že spousta vás o možnosti použití vlastního písma na webové stránce neví. Nutnost pracovat jen s omezenou nabídkou standardních písem je totiž při návrhu webu docela svazující. Použití vlastních písem na webu je přitom docela snadné.
Důvod k tomu, že se doposud použití libovolného písma na webové stránce nerozšířilo, je nekompatibilita potřebné technologie se staršími webovými prohlížeči a v některých případech nutnost konverze souborů s fontem do jiného typu. Bez zajímavosti nejsou ani licenční problémy, ty však teď ponechejme stranou.
Jak na vlastní písmo na webu
Pouštíte-li se do kódování grafického návrhu a potřebujete nebo chcete implementovat netradiční font přímo do webové stránky, pak byste měli vědět, že tento požadavek je možné řešit pomocí zápisu @font-face, který je k dispozici od doby vzniku CSS2. Problém je v tom, že ne všechny prohlížeče podporují stejný typ souboru s písmem.
- Opera 10+, Safari 3.1+ a Chrome 4+ podporují formáty TTF, OTF a SVG
- Internet Explorer podporuje formát EOT
Z toho vyplývá, že je potřeba dvojího zápisu a konverze fontu tak, abyste jej mohli použít ve všech vyjmenovaných prohlížečích. Nejprve obecný zápis v CSS, který umožňuje použití vybraného fontu na webové stránce i v případě, že jej uživatel nemá v počítači:
{syntaxhighlighter brush:css}
@font-face {
font-family: VasePismo;
src: url(relativni-cesta/VasePismo.otf);
}
{/syntaxhighlighter}
Všimněte si, že nejprve je v zápisu definován název tohoto písma, následuje uvedení relativní cesty ke zdrojovému souboru s tímto písmem.
Budete-li chtít použít tuto techniku zároveň pro Internet Explorer s fontem ve formátu EOT, pak v hlavičce HTML kódu na místě, kde připojujete styly, uveďte něco podobného:
<!--[if IE]> <link type="text/css" rel="stylesheet" media="all" href="ie-styles.css" /> <![endif]-->
Jelikož se jedná díky značce <!-- o HTML poznámku, nebudou ji ostatní prohlížeče s výjimkou Internet Exploreru interpretovat. Ten však pozná, že se v poznámce požaduje načtení dalšího souboru se stylem. Do něj pak vložíte výše uvedený zápis @font-face s malou modifikací - odkážete v něm na soubor EOT.
Dále pak v CSS postupujete již klasicky. Nastavíte typ písma pomocí volání font-family, například takto pro odstavec:
{syntaxhighlighter brush:css}
p{
font-family: VasePismo, arial;
font-size: 12px;
}
{/syntaxhighlighter}
Kromě licenčních problémů nyní musíte vyřešit vytvoření souboru EOT. Častěji totiž budete mít k dispozici soubor s písmem jen jako TrueType, TTF. Stáhněte si proto malý nástroj, který potřebnou konverzi obstará - jmenuje se ttf2oet.
A to je vše. Nyní byste měli být schopni bez problémů používat vlastní font na webové stránce. Pokud vás problematika zajímá, doporučuji navštívit web www.font-face.com.
Podobné články
Volná místa v IT
- .NET developer / CRM specialista (CLEVERLANCE s.r.o.)
- Vývojář (COPY GENERAL, s.r.o.)
- Senior Technical Support Rep (Expedia Services CZ, s.r.o.)
- Robotik – zahraniční projekty (plat od 30.000,--) (Advantage Consulting, s.r.o.)
- Systémový administrátor (IBM Domino) (Ref. č.: 5214) (PERSPEKTIVA CZ, s.r.o.)





















Komentáře
Re: Jak na vlastní písmo na webu s @font-face
matez (neověřeno) 30.7.2010 14:09:17 (#5773)Díky za článek,
jenom doplním, že název písma musí být zadán přesně tak, jak je nadefinován ve zdroji písma. Nelze si tedy název písma zjednodušit nebo změnit, pak to zkousne jenom Opera, FF ani IE ne.
Re: Jak na vlastní písmo na webu s @font-face
Petr Petr (neověřeno) 31.8.2010 22:58:10 (#5908)Díky, jen mám dotaz - jak zařídit, když potřebuji importovat 3 soubory písma - jeden normální, jeden pro tučné a další pro kurzívu?
Funguje mi to pouze pro jeden soubor s písmem, kdy se sice font použije, ale tam kde je <strong> resp. <em> se bohužel tučný, resp. kurzívou neudělá.
Díky za radu
Re: Jak na vlastní písmo na webu s @font-face
Jan Polzer (www.polzer.cz/) 1.9.2010 14:16:42 (#5915)Google generuje pro stejné písmo v různých tloušťkách a kurzívě takovéto CSS, viz http://fonts.googleapis.com/css?family=Droid+Serif:regular,italic,bold,b...
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Re: Jak na vlastní písmo na webu s @font-face
Michal (neověřeno) 6.12.2010 23:26:06 (#6426)Dobrý den, měl bych k tomuto tématu jeden dotaz.
Aby tyto vychytávka fungovala v drupalu, vložil jsem
@font-face {
font-family: VasePismo;
src: url(relativni-cesta/VasePismo.otf);
}
do style.css, nakopíroval soubor s písmem na server. Pro FF, Chrome, pohoda. Zobrazuje se mé písmo. Poté jsem chtěl aby se písmo zobrazovalo i v IE. Dodal jsem tedy @font-face {
font-family: VasePismo;
src: url(relativni-cesta/VasePismo.eot);
}
do style.ie6.css ... V IE 6 se zobrazuje mé písmo.No, poslední otevřu IE 8, písmo Ariel... Pokusím se tedy IE 8 obejít následovně.
Do page.tpl.php vložím<!--[if IE 8]><link rel="stylesheet" href="<?php echo $base_path . $directory; ?>/style.ie8.css" type="text/css" /><![endif]-->zároveň s tím vytvořím style.ie8.css které je úplně stejné jako style.css až na to že pro IE je v css uvedeno písmo v .eot...
Bohužel, IE 8 stále ukazuje Ariel a né mnou požadovný font. Zkoušel jsem do page.tpl.php vložit i vámo udanou podmínku a stejně to explorer nereflektoval? Něměl byste nějakou radu jak dál, nebo radu kde dělám co špatně?
Děkuji velice za pomoc,
s Pozdravem Michal Ps.: Zlatý FF :-)
Re: Jak na vlastní písmo na webu s @font-face
Jan Polzer (www.polzer.cz/) 7.12.2010 21:13:55 (#6430)Dobrý den.
Ve stylu pro IE nemusí být komplet vše, stačí tam jen ty pravidla s fontem, která chcete mít jinak, než ve výchozích stylech.
Co se problému týče, vložil jste tu podmínku pro IE8 až po připojení style.css?
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Re: Jak na vlastní písmo na webu s @font-face
Michal (neověřeno) 8.12.2010 10:17:06 (#6435)No ono v page.tpl.php jsou již nějaké podmínky pro IE vytvořeny, takže jsem jednu upravil a vložil za ně. Vypadá to vlastně následovně:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php echo get_page_language($language); ?>" xml:lang="<?php echo get_page_language($language); ?>">
<head>
<title><?php if (isset($head_title )) { echo $head_title; } ?></title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<?php echo $head; ?>
<?php echo $styles ?>
<?php echo $scripts ?><? $drupal = ''; include "drupal.php"; ?>
<!--[if IE 6]><link rel="stylesheet" href="<?php echo $base_path . $directory; ?>/style.ie6.css" type="text/css" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="<?php echo $base_path . $directory; ?>/style.ie7.css" type="text/css" media="screen" /><![endif]-->
Poté jsem vložil mou, upravenou podmínku:
<!--[if IE 8]><link rel="stylesheet" href="<?php echo $base_path . $directory; ?>/style.ie8.css" type="text/css" /><![endif]-->
Re: Jak na vlastní písmo na webu s @font-face
Jan Polzer (www.polzer.cz/) 8.12.2010 11:03:57 (#6436)Já myslím, že příčina je v následujícím, které prohlížeči říká, aby stránku zobrazil v kompatibilním režimu jako IE7. Čili jako osmička se to asi ani nezobrazí, proto se vám ty styly pak neuplatňují.
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Re: Jak na vlastní písmo na webu s @font-face
Michal (neověřeno) 8.12.2010 18:50:01 (#6437)JJ, už je to v cajku... content="IE=EmulateIE8 a písmo je na světě... velice děkuji českému guru drupalistovi :-) ... asi školácká chyba, že? Ale tak snad se bude hodit i někomu dalšímu.
Re: Jak na vlastní písmo na webu s @font-face
Jan Polzer (www.polzer.cz/) 8.12.2010 18:54:59 (#6438)Školácká chyba asi ne... Prostě se stane. Já se dneska taky mořil čtyři hodiny s jednou prkotinou.
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Re: Jak na vlastní písmo na webu s @font-face
Honza Vyzvak (www.honzagal.cz) 7.12.2010 06:37:59 (#6427)Nebo se dá použít Cufon. Existuje i modul pro drupal, vygenerujete patřičnej soubor s fontem a zadáte jaký prvky ho maj používat, např. h2 atd. http://drupal.org/project/cufon
Odvolávám. Font face je lepší
Honza Vyzvak (www.honzagal.cz) 1.6.2012 04:27:08 (#8559)Odvolávám. Font face je lepší. I když Cufon někdy vykresluje tučně písmo "hezčeji". Pro font-face používám http://drupal.org/project/fontyourface kterej mi vyřešil problém(y) s IE.
Re: Jak na vlastní písmo na webu s @font-face
Jirkaaaa (neověřeno) 30.4.2011 13:08:15 (#7038)Ahoj, a co když mám pomalé připojení, třeba mobilní přes GPRS, které jede pár kilobajtů.
Nejdřív se mi stáhne stránka, texty se vykreslí, ale v defaultním fontu, pak se dotáhnout font-face fonty a teprve pak se vykreslí na těch písmech, které ale už jsou zobrazené v arialu. VELMI NEHEZKÉ, jenom kvuli tomuto nechci použít vlastní fonty. třeba např. tím jak se ty fonty změněj, tak se i některé řádky jinak zalomí, protože nahranej font je třeba uplně jinej, má jiný rozměry.
prosím pomozte. Buď nějak vykreslit stránku až po načtení písem, nebo přednačíst písma, ale to je vlastně to samí.
A další věc: na každé sekci webové stránky se děje to samé! Kdyby se to dělo aspon na úvodní a pak se používaly tyto nahrané po celém webu(ale to snad dokáži vyřešit)
Totiž chtěl bych to tak, jak to má třeba wordpress, má vlastní písma, ale toto se neděje.
Děkuji za jakýkoliv názor, odpověď.
S pozdravem JD
Optimalizovat stránky pro
Honza Vyzvak (www.honzagal.cz) 1.6.2012 04:25:23 (#8558)Optimalizovat stránky pro někoho kdo na stránky chodí přes GPRS se ve většině případů finančně nevyplatí. Kolik lidí s timhle připojením si bude dneska prohlížet web? Asi ještě menší procento než uživatelů používajících IE6.