abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 08:00 | Nová verze

Byla vydána nová stabilní verze 28.10.0 webového prohlížeče Pale Moon (Wikipedie) vycházejícího z Firefoxu. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Nová verze

Byla vydána nová vývojová verze datového formátu a souvisejících nástrojů Relational pipes. Hlavní novinkou verze v0.16 je použití abstraktní vrstvy ODBC, díky které lze pracovat s libovolným DBMS, např. PostgreSQL nebo MySQL či MariaDB (dříve šlo SQL transformace provádět jen v SQLite). Dále v této verzi přibyl vstupní modul pro audio systém JACK, skrze který lze přijímat MIDI zprávy.

xkucf03 | Komentářů: 7
včera 00:55 | Zajímavý článek

Alyssa Rosenzweig v příspěvku na blogu společnosti Collabora informuje o novinkách ve vývoji open source ovladačů pro GPU Mali. Na GPU Mali-G31 bez binárního blobu již běží Wayland kompozitory včetně GNOME 3, hra Neverball nebo akcelerace videa v přehrávačích mpv a Kodi.

Ladislav Hagara | Komentářů: 0
5.6. 23:33 | Zajímavý článek

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 94 (pdf), HackSpace 31 (pdf) a Wireframe 39 (pdf).

Ladislav Hagara | Komentářů: 0
5.6. 23:22 | Zajímavý software

Streamhut umožňuje streamování práce v terminálu na web bez nutnosti cokoli instalovat. Zdrojové kódy služby jsou k dispozici na GitHubu pod licencí Apache.

Ladislav Hagara | Komentářů: 0
5.6. 02:00 | Nová verze

Turris OS, operační systém pro síťová zařízení Turris, byl vydán v nové major verzi 5.0. Vychází z OpenWrt 19.07.3. Podrobnosti na GitLabu.

Ladislav Hagara | Komentářů: 0
5.6. 01:00 | Nová verze

Byla vydána verze 1.44.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

Ladislav Hagara | Komentářů: 0
4.6. 17:00 | Bezpečnostní upozornění

Nedávno byla vydána nová verze 9.4.6 nástroje pro řízení a správu IT zařízení a služeb GLPI (Wikipedie). Opraveno bylo několik bezpečnostních chyb. Například také SQL injection CVE-2020-11032 aneb email z ';-- Have I Been Pwned? dokáže smazat celý ticket systém.

Ladislav Hagara | Komentářů: 0
4.6. 13:00 | Zajímavý článek

MojeFedora.cz informuje, že Firefox 77 pro Fedoru přináší akceleraci videa. Firefox 77 pro Fedoru obsahuje patche, které konečně přináší podporu pro VA-API, tedy hardwarovou akceleraci videa. Podpora pro VA-API momentálně funguje pouze na Waylandu.

Ladislav Hagara | Komentářů: 4
4.6. 12:00 | Pozvánky

Sdružení CESNET dnes opět po roce pořádá jednodenní seminář věnovaný internetovému protokolu IPv6. Tentokrát on-line a s názvem Svět bez IPv4. K dispozici jsou také prezentace a záznamy přednášek z loňského roku.

Ladislav Hagara | Komentářů: 0
Používáte některé open-source řešení [protokol] pro šifrovaný instant messaging?
 (33%)
 (20%)
 (4%)
 (12%)
 (13%)
 (5%)
 (12%)
 (23%)
Celkem 92 hlasů
 Komentářů: 8, poslední včera 13:40
Rozcestník

TeX – 7 (OpenType fonty)

12. 12. 2013 | Petr Olšák | Různé | 4857×

Na konci 90. let ustoupily fonty generované Metafontem do pozadí a nejčastěji se i v TeXu používaly fonty Type1 (formát od Adobe). Vedle toho stály fonty formátu TrueType od Microsoftu, které ale měly pro obtahy implementovány jen kvadratické spliny na rozdíl od kubických a často byly postiženy nevhodnou implementací. DTP svět se jim tedy vyhýbal obloukem, případně před tiskem prováděl konverze, což fontům taky nepomohlo k lepší reputaci.

Lidé v DTP rozlišovali počítače poněkud zjednodušeně na Mac a PC a na obou těchto platformách byla implementace fontů Type1 naprosto odlišná. To společně s faktem, že metriky a obtahy byly ve zvláštních souborech, nebylo příliš praktické. A tak na počátku milénia začali v Microsoftu pracovat na následníkovi formátu TrueType a jejich rival Adobe se k nim překvapivě přidal a vznikl formát OpenType. Metrika i obtahy jsou ve společném souboru a formát je nezávislý na platformě. V Linuxu máme možnost tyto fonty použít např. v implementaci X Window systému X.org, taky díky knihovnám pango, freetype, Qt a dalším a můžeme je použít pochopitelně v XeTeXu nebo v LuaTeXu.

Obsah

Zavedení fontu v klasickém TeXu

link

V klasickém TeXu potřebujeme mít zvlášť metriku fontu. S obtahy znaků pracuje až ovladač DVI. V TeXu píšeme:

 
\font\prepinac=<metrika> % <metrika> se uvádí bez přípony .tfm 
nebo: 
\font\prepinac=<metrika> at<velikost>
nebo: 
\font\prepinac=<metrika> scaled<poměr zvětšení>

například: 
\font\fa=pzcmi8z at12.3pt   % font ve velikosti 12,3 bodů
nebo: 
\font\fb=pzcmi8z scaled1380 % základní velikost 10 bodů násobená 1,38

V textu se pak přepínač fontu použije přirozeně například {\fa takto}. 

V uvedené ukázce je použit font Zapf Chancery, ale to by poznal jen specialista na TeXové fonty, protože z názvu metriky pzcmi8z to nelze snadno poznat. Tyto zkrácené názvy metrik (motivované tím, že názvy souborů kvůli přenositelnosti na stařičkých systémech musejí být omezeny na 8+3) jsem vždy považoval za velkou nevýhodu v koncepci TeXového přístupu k fontům. Nevýhodu násobenou ještě skutečností, že TeX pochopitelně neposkytuje interaktivní nabídku dostupných fontů. Vytvořil jsem tedy někdy před deseti lety makro OFS, které dokáže generovat vzorníčky fontů, vypisuje na terminál a do logu přehledy fontů a umožňuje používat přirozené názvy. Při dnešním použití XeTeXu nebo LuaTeXu už toto makro pozbývá smyslu: je možné přímo používat skutečné názvy fontů a vzorníček ve formě interaktivní nabídky instalovaných fontů v systému obstará jiný program.

Fonty v LaTeXu

link

LaTeXoví uživatelé ani v době před XeTeXem neměli potřebu se zabývat nečitelnými názvy metrik dostupných fontů. To řeší použitý styl. Uživatel se typicky s primitivním příkazem \font nesetká. Místo toho pracuje s předdefinovanými přepínači \textbf, \textit, atd. Může ale použít doplňkové styly, které zavádějí kompletní rodinu fontů dle názvu, například \usepackage{times}.

Při nástupu verze 2e (na začátku 90. let) se stalo součástí LaTeXu Mittelbachovo makro NFSS (new font selection scheme), které vybírá fonty prostřednictvím tzv. fd souborů. V nich je implementováno propojení mezi zkratkami jednotlivých metrik a novými, podobně nesrozumitelnými, zkratkami použitými uvnitř LaTeXu. Uživatel nebo programátor stylu pak vybíral font pomocí maker NFSS. LaTeX navíc pomocí maker převzal do svých rukou i přepínání mezi kódováním fontů a veškerý text prostřednictvím aktivních znaků převáděl do interní na kódování nezávislé reprezentace LICR (LaTeX internal character representation) a ta byla expandována do kódování použitého fontu.

Pro LaTeX je tedy přechod na XeTeX nebo LuaTeX jednoznačným vysvobozením z této složitosti. Není nutné žádné LICR. Pro výběr fontů je v tomto novém prostředí připraven balíček fontspec.

Zavedení OpenType fontu v XeTeXu

link

XeTeX je prolinkován s fontovou knihovnou operačního systému (v Linuxu fontconfig) a dokáže také najít dle názvu souboru OpenType fonty v TeXové distribuci nebo v aktuálním adresáři. XeTeX z toho důvodu rozšiřuje možnosti příkazu \font takto:

 
\font\prepinac="Jméno Fontu:<fontfeatures>" <at nebo scaled jako v klasickém TeXu> 
nebo: 
\font\prepinac="[jméno-otf-souboru]:<fontfeatures>" <at nebo scaled> 

XeTeX dokáže najít podle jména fontu jen font instalovaný v systému. Dokáže pracovat jednak s plným názvem (obvykle s mezerami) i s kondenzovaným PostScriptovým názvem (bez mezer). Ukázka bude za chvíli následovat.

Nepovinné parametry <fontfeatures> specifikují dodatečné parametry fontu a pohovoříme o tom za chvíli. Za názvem fontu (při hledání podle názvu) a před dvojtečku je možné navíc umístit přepínače /B, /I, nebo /BI, což způsobí zavedení fontu stejné rodiny, ale ve variantě Bold, Italic nebo BoldItalic. Druhá možnost, jak k fontu přistoupit, je použít jeho plný název nebo název souboru.

Zavedení OpenType fontu v LuaTeXu

link

LuaTeX rozšiřuje příkaz \font stejně jako XeTeX, ovšem toto rozšíření je dostupné až po spuštění inicializačního luakódu. To lze udělat například pomocí \input luafonts nebo \input luaoftload.sty. Obě makra dělají z hlediska fontů to samé. První z nich (moje makro) zavede jen potřebný luakód, zatímco druhé makro řeší ještě plno dalších věcí, které s fonty zcela nesouvisejí, a je tedy obtížné zjistit, co to všechno dělá.

LuaTeX nabízí další syntaktické možnosti parametru příkazu \font: prefix name nebo file a obklopení názvu fontu namísto uvozovek závorkami {, }. Mně se vyplatilo používat výhradně XeTeXový způsob zápisu, kterému LuaTeX taky rozumí. Toho se budu držet i v následujících ukázkách.

Instalace OpenType fontu LinuxLibertine

link

Pro další ukázky možností OpenType fontů je v tomto článku použit font LinuxLibertine. Z uvedené stránky je možné stáhnout fonty v souborech *.otf. Dále se nabízí několik možností: fonty necháte jen v aktuálním adresáři (a budete je vyhledávat jen pomocí jména souboru), nebo je instalujete do  systému, nebo je instalujete mezi TeXové fonty. Také je můžete konvertovat do  Type1 pro použití v klasickém TeXu.

Varianta instalace fontu do sytému: Soubory *.otf umístěte někam do /usr/share/fonts/. Pak pomocí příkazu fc-cache (spuštěným pod právy roota) obnovte databázi instalovaných fontů. Pomocí příkazu fc-list se můžete přesvědčit, že font je instalován.

Varianta instalace do TeXového adresáře: Soubory *.otf umístěte někam do .../texmf-local/fonts/opentype/. Pak pomocí příkazu texhash (spuštěným pod právy roota) obnovte databázi názvů prohledávaných souborů.

Varianta převodu OpenType fontu do Type1 a jeho instalace do TeXového adresáře: Tato možnost je popsána v dodatku F knížky TeX pro pragmatiky a umožní OpenType font použít i pdfTeXem nebo klasickým TeXem. O rozšířené možnosti OpenType fontů přitom nepřicházíme, neboť pro každou generovanou metriku nastavujeme příslušný Encoding vektor a sadu <fontfeatures>. Takových metrik (navázaných na stejný Type1 font) můžeme vygenerovat libovolně mnoho.

Pomocí příkazu otfinfo -i soubor.otf je možné se podívat na základní parametry OpenType fontu (jeho plný název, komprimovaný PostScriptový název atd.). Je možné použít další přepínače příkazu a zjistit o fontu více informací. Můžete si to vyzkoušet.

Ukázka zavedení OpenType fontu příkazem \font

link

Vyzkoušejte vytvořit následující soubor:

 
% zavedení Lua-kódu pro LuaTeX. Při použití XeTeXu neuděláme nic: 
\ifx\directlua\undefined \else \input luafonts \fi 
\baselineskip=14pt % řádkování 

\font\f="Linux Libertine O Italic" at12pt 
\f Tady je textík ve vybraném fontu. 

\font\f="Linux Libertine O/I" at12pt 
\f Zavede se stejný font. 

\font\f="LinLibertineOI" at12pt 
\f Zavedený stejný font podle komprimovaného PostScriptového názvu. 

\font\f="[LinLibertine_RI]" at12pt 
\f Font zavedený podle názvu souboru. Znovu stejný font. 

\end

Tento soubor zpracujte příkazem xetex soubor nebo luatex soubor. V obou případech byste měli dostat stejný výsledek, pokud je font nainstalován v systému. Je-li font instalován jen v TeXovém adresáři, pak vyhledávání podle názvu fontu bude fungovat jen v LuaTeXu. Ten si automaticky obnovuje svou vlastní font-cache, kdykoli zjistí, že nemůže najít font. Tato font-cache se generuje jednak podle font-cache v systému a jednak podle souborů instalovaných v TeXovém adresáři.

Speciální vlastnosti OpenType fontů

link

OpenType fonty umožňují natavit tzv. „fontfeatures“ (slovo „fontfeature“ nebudu překládat, bude mít ženský rod a zkratku FF). Typické využití FF je znázorněno ve fontu Linux Libertine na  této www stránce. FF lze rozdělit do tří skupin:

  • Některé znaky po zapnutí/vypnutí FF mohou být vykresleny jinak. Tj. jedna Unicode pozice sdílí více glyphů a výběr glyphu závisí na nastavené FF. Klasickou FF tohoto typu je nastavení malých kapitálek místo obvyklých mínusek (smcp). Do této kategorie patří taky výměna číslic za jinou sadu číslic (tnum tabulkové, pnum proporcionální, onum medievalové). Fonty taky mohou být vybaveny zmenšenými číslicemi a dalšími znaky posunutými nahoru (sups) nebo dolů (sinf).
  • Kontextové ligatury: určité sekvence znaků se promění v ligaturu, tedy ve speciální glyph. Základní FF tohoto typu je liga (ligatury fi, fl, atd.). Dále se mohou nabízet rozšířené ligatury aktivované pomocí FF hlig (historické ligatury jako ct), a dlig (ligatury typu tz). Do této skupiny lze zahrnout i proměnu zlomků (1/2, 1/4) na speciální glyph, je-li k dispozici. K tomu slouží FF frac.
  • Kerning mezi písmeny souvisí s FF kern. Tato FF by měla být implicitně zapnutá. Mezi kerning patří i možnost vystrčit znaky, které se objeví na okraji sloupce sazby, do strany (lfbd vlevo, rtbd vpravo).

Povšimněte si, že FF se oddělují středníky, zapínají se (nepovinným) prefixem + a vypínají prefixem -:

 
% Zavedení Lua-kódu pro LuaTeX. Při použití XeTeXu neuděláme nic: 
\ifx\directlua\undefined \else \input luafonts \fi 

\catcode‘-=11 % znak - může být součástí řídicí sekvence 
\baselineskip=14pt % řádkování 

% Základní font: 
\def\basefont{Linux Libertine O} \def\atsize{at12pt}
\font\f="\basefont" \atsize

% Zkouška fontfeatures: 
\font\f-caps  = "\basefont:+smcp" \atsize 
\font\f-nolig = "\basefont:-liga" \atsize 
\font\f-hligs = "\basefont:+hlig;+dlig" \atsize 
\font\f-alt   = "\basefont:+hlig;+dlig;+salt" \atsize 
\font\f-frac  = "\basefont:+frac" \atsize 
\font\f-sup   = "\basefont:+sups" \atsize 
\font\f-sub   = "\basefont:+sinf" \atsize 
\font\f-odig  = "\basefont:+pnum;+onum" \atsize 

\f 
Tady je text ve fontu \basefont. 
{\f-caps Zde jsou malé kapitálky}. 

Vidíme, že font má zapnuty ligatury fi, fl. 
{\f-nolig Nyní jsou vypnuty: fi, fl}. 

Historické ligatury st, tz, jsou vypnuty a nyní 
{\f-hligs jsou zapnuty ct, st, tz}. 

Místo některých znaků je možné použít alternativy: 
{\f-alt Y\&Y} namísto Y\&Y. 

Zlomky vypadají takto: 1/2, 3/5 a 
vytuněné zlomky vypadají jinak {\f-frac 1/2, 3/5, 1234/5678}. 

Čísla 01234 normální pro tabulky a medievalové {\f-odig 1234567890}. 

Dolní indexy: {\f-sub 123a4bc5}, horní indexy{\f-sup x}. 
CH{\f-sub3}CH{\f-sub2}OH. 

\end 

Po zpracování ukázky XeTeXem nebo LuaTeXem byste měli dostat takový výsledek.

Každý font může disponovat jinými FF, které jsou navíc seskupené do tzv. skriptů nebo jazykových skriptů s různými implicitními hodnotami. Je obtížné jednoduše zjistit, co je v obdrženém fontu dosažitelné a co je nastaveno jako implicitní. K fontu by tedy měla být přístupná dokumentace. Zavoláte-li FF, která ve fontu neexistuje, neprojeví se a žádného varování ani chyby se nedočkáte. Seznam FF včetně jejich podrobné specifikace je na  této stránce, ale písmolijny si mohou vymýšlet další a naopak zde uvedené nemusejí podporovat. Seznam FF podporovaných v daném fontu lze vypsat pomocí otfinfo -f soubor.otf.

Font loader může podporovat na fontu nezávislé další FF. Například LuaTeX nabízí FF tlig, což aktivuje TeXovské ligatury --, --- atd. XeTeX má pro stejný účel FF ve tvaru přiřazení: mapping=tex-text.

Další „jakoby FF“ může nabízet makro pro volbu fontů. V dokumentaci k balíčku fontspec je například uvedena FF pro barvu a průsvitnost fontu, FF pro velikost fontu atd. To vše je řešeno na úrovni makra.

       

Hodnocení: 100 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

ghibulo avatar 13.12.2013 19:35 ghibulo | skóre: 6 | blog: ghibulo
Rozbalit Rozbalit vše Re: TeX – 7 (OpenType fonty)
Pěkný článek, jen u toho posledního zdrojového textu je chyba, kvůli které to nejde přeložit - jde o ten znak za catcode, ... je tam použit "‘" a mělo by být "`".
olsak avatar 14.12.2013 07:53 olsak | skóre: 29
Rozbalit Rozbalit vše Re: TeX – 7 (TrueType fonty)
Vzhledem k tomu, že se v systémech často vyskytují TryeType fonty a zaznamenávám na ně časté dotazy a také vzhledem k tomu, že se k fontům už nechci v seriálu vracet, zmíním TTF aspoň zde v komentáři.

PdfTeX umí s TTF fonty pracovat zcela stejně jako s PFB (Type1) fonty. Tj. je třeba konverzními programy připravit TeXovou metriku *.tfm a překopírovat *.ttf soubory do TeXového adresáře. Nakonec je třeba doplnit údaje do map souboru. Postup je velmi přehledně vyložen zde. Jen doporučuji v případě pdfcsplainu použít soubor xl2.enc namísto souboru v článku zmíněném.

LuaTeX umí vše, co pdfTeX, tedy práce s TTF fonty je v něm stejná jako v pdfTeXu.

XeTeX s TTF fonty neumí pracovat způsobem jako pdfTeX. Místo toho k nim dokáže přirozeně přitoupit, jsou-li instalovány v systému.

15.12.2013 23:31 Louda
Rozbalit Rozbalit vše Re: TeX – 7 (OpenType fonty)
určite neco dělam špatně když se pokouším to překládat v LuaLatexu že? Skrátka je to pro LuaTex a tim je to uzavřene, beru.

No dovolte i prosim ale jednu naprosto laickou otázku kde by mi nekdo česky vysvetlil jaký je vlastně rozdíl mezi balíčkem polyglossia a babel. nemusíte zachazet do detailu jen staci v hrubých rysech, nebo klidně mě i odkázat na stránku konkrétní knihy v češtině, kde je toto rozvedeno. Děkuji.
16.12.2013 08:09 vencas | skóre: 32
Rozbalit Rozbalit vše Re: TeX – 7 (OpenType fonty)
polyglossia podporuje více jazyků než babel (zejména se jedná o jazyky nepsané latinkou včetně jazyků psaných zprava doleva) a používá fontspec pro natahování fontů pro specifický jazyk. Z hlediska funkčnosti (aspoň v češtině) jsem si žádného rozdílu nevšiml, ale používám jen základní věci.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.