Sdílet prostřednictvím


Typografie ve WPF

Toto téma představuje hlavní typografické funkce WPF. Mezi tyto funkce patří vylepšená kvalita a výkon vykreslování textu, podpora typografie OpenType, rozšířená mezinárodní textová podpora, vylepšená podpora písem a nová programovací rozhraní textových aplikací (API).

Vylepšená kvalita a výkon textu

Text ve WPF se vykresluje pomocí microsoft ClearType, což zlepšuje srozumitelnost a čitelnost textu. ClearType je softwarová technologie vyvinutá Microsoftem, která zlepšuje čitelnost textu na stávajících LCD (Liquid Crystal Displays), jako jsou přenosné obrazovky, obrazovky Pocket PC a ploché panely. ClearType používá vykreslování dílčích pixelů, které umožňuje zobrazení textu s větší věrností jeho skutečnému obrazci zarovnáním znaků na zlomkovou část pixelu. Vyšší rozlišení zvyšuje ostrost malých podrobností v zobrazení textu, což usnadňuje čtení po delší dobu. Dalším vylepšením ClearType ve WPF je anti-aliasing ve směru y, který vyhladí horní a dolní části mělkých křivek v textových znacích. Další podrobnosti o funkcích ClearType najdete v tématu Přehled typu ClearType.

text s ClearType anti-aliasingem ve směru osy y
Text s vyhlazením ostrých hran typu ClearType ve směru osy y

Za předpokladu, že váš počítač splňuje minimální požadovanou úroveň hardwaru, může být celý kanál vykreslování textu v WPF akcelerovaný hardwarem. Vykreslování, které nelze provést pomocí hardwaru, se vrátí do softwarového vykreslování. Hardwarová akcelerace ovlivňuje všechny fáze procesu vykreslování textu – od ukládání jednotlivých glyfů, kompozitování glyfů do běhů glyfů, používání efektů až po aplikaci algoritmu prolnutí ClearType na konečný zobrazený výstup. Další informace o akceleraci hardwaru naleznete v úrovních vykreslování grafiky.

diagram kanálu vykreslování textu

Navíc text tvořený znaky či glyfy, plně využívá potenciál grafického hardwaru umožněného WPF. Výsledkem je animace hladkého textu.

Bohatá typografie

Formát písma OpenType je rozšířením formátu písma TrueType®. Formát písma OpenType byl vyvinut společně společností Microsoft a Adobe a poskytuje bohatou škálu pokročilých typografických funkcí. Objekt Typography zpřístupňuje mnoho pokročilých funkcí písem OpenType, jako jsou stylistické alternativy a promyčky. Sada Windows SDK poskytuje sadu ukázkových písem OpenType, která jsou navržena s bohatými funkcemi, jako jsou písma Pericles a Pescadero. Více informací viz Sample OpenType Font Pack.

Písmo Pericles OpenType obsahuje další glyfy, které poskytují stylistické alternativy ke standardní sadě glyfů. Následující text zobrazuje stylistické alternativní glyfy.

Text používající stylistické alternativní glyfy OpenType

Swashes jsou dekorativní glyfy, které používají propracované ornamenty často spojené s calligrafií. Následující text zobrazuje standardní a zdobné glyfy pro písmo Pescadero.

Text pomocí standardu OpenType a ozdobné glyfy

Další podrobnosti o funkcích OpenType najdete v tématu Funkce písma OpenType.

Rozšířená podpora mezinárodního textu

WPF poskytuje vylepšenou mezinárodní podporu textu tím, že poskytuje následující funkce:

  • Automatické řádkování ve všech systémech zápisu pomocí adaptivního měření

  • Široká podpora mezinárodního textu. Další informace naleznete v tématu Globalizace pro WPF.

  • Dělení řádků, dělení slov a odůvodnění na základě jazyka

Vylepšená podpora písem

WPF poskytuje vylepšenou podporu písem tím, že poskytuje následující funkce:

  • Unicode pro veškerý text Chování a výběr písma už nevyžadují znakovou sadu ani znakovou stránku.

  • Chování písma nezávisle na globálním nastavení, jako je národní prostředí systému.

  • Oddělte typy FontWeight, FontStretcha FontStyle pro definování FontFamily. To poskytuje větší flexibilitu než v programování Win32, ve kterém se k definování rodiny písem používají logické kombinace kurzívy a tučného písma.

  • Směr zápisu (vodorovný a svislý) se zpracovává nezávisle na názvu písma.

  • Propojování písem a náhradní písmo v přenosném souboru XML pomocí technologie složeného písma. Složená písma umožňují vytvoření celého spektra vícejazyčných písem. Složená písma také poskytují mechanismus, který zabraňuje zobrazování chybějících glyfů. Další informace najdete v poznámkách ve třídě FontFamily.

  • Mezinárodní písma vytvořená ze složených písem pomocí skupiny jednojazyčných písem To šetří náklady na prostředky při vývoji písem pro více jazyků.

  • Složená písma vložená do dokumentu a poskytují tak přenositelnost dokumentů. Další informace najdete v poznámkách ve třídě FontFamily.

Nová programovací rozhraní textových aplikací (API)

WPF poskytuje vývojářům několik textových rozhraní API, která můžou použít při zahrnutí textu do svých aplikací. Tato rozhraní API jsou seskupována do tří kategorií:

  • Rozložení a uživatelské rozhraní. Běžné textové ovládací prvky pro grafické uživatelské rozhraní (GUI).

  • Zjednodušené kreslení textu. Umožňuje nakreslit text přímo na objekty.

  • Rozšířené formátování textu. Umožňuje implementovat vlastní textový modul.

Rozložení a uživatelské rozhraní

Na nejvyšší úrovni funkcí poskytují textová rozhraní API běžné ovládací prvky uživatelského rozhraní, jako jsou Label, TextBlocka TextBox. Tyto ovládací prvky poskytují základní prvky uživatelského rozhraní v aplikaci a nabízejí snadný způsob, jak prezentovat text a pracovat s ním. Ovládací prvky, jako jsou RichTextBox a PasswordBox umožňují pokročilejší nebo specializované zpracování textu. A třídy, jako jsou TextRange, TextSelectiona TextPointer umožňují užitečnou manipulaci s textem. Tyto ovládací prvky uživatelského rozhraní poskytují vlastnosti, jako jsou FontFamily, FontSizea FontStyle, které umožňují řídit písmo použité k vykreslení textu.

Použití rastrových efektů, transformací a textových efektů

WPF umožňuje vytvářet vizuálně zajímavé použití textu pomocí funkcí, jako jsou rastrové efekty, transformace a textové efekty. Následující příklad ukazuje typický typ stínového efektu použitého na text.

stín textu s měkkostí = 0,25

Následující příklad ukazuje efekt stínu a šum použitý na text.

stín textu s šumem

Příklad dole ukazuje efekt vnější záře aplikovaný na text.

Stín textu pomocí efektu vnějšího záření OuterGlowBitmapEffect.

Následující příklad ukazuje efekt rozostření použitý na text.

Stín textu pomocí efektu rozmazání bitmapy

Následující příklad ukazuje druhý řádek textu škálovaný o 150% podél osy x a třetí řádek textu škálovaný o 150% podél osy y.

Text byl změněn pomocí měřítka ScaleTransform

Následující příklad ukazuje nerovnoměrnou distribuci textu podél osy x.

Text zkosen pomocí SkewTransform

Objekt TextEffect je pomocný objekt, který umožňuje považovat text za jednu nebo více skupin znaků v textovém řetězci. Následující příklad ukazuje otočení jednotlivého znaku. Každý znak se otočí nezávisle v 1sekundových intervalech.

Snímek obrazovky s efektem rotujícího textu

Používání proudových dokumentů

Kromě běžných ovládacích prvků uživatelského rozhraní nabízí WPF ovládací prvek rozložení pro textovou prezentaci – prvek FlowDocument. Prvek FlowDocument společně s elementem DocumentViewer poskytuje ovládací prvek pro velké množství textu s různými požadavky rozložení. Ovládací prvky rozložení poskytují přístup k pokročilé typografii prostřednictvím Typography objektu a vlastností souvisejících s písmem u jiných ovládacích prvků uživatelského rozhraní.

Následující příklad ukazuje textový obsah hostovaný v FlowDocumentReader, který poskytuje podporu vyhledávání, navigace, stránkování a škálování obsahu.

Snímek obrazovky s písmy OpenType

Další informace naleznete v části Dokumenty v WPF.

Odlehčená kresba textu

Text můžete nakreslit přímo do objektů WPF použitím metody DrawText objektu DrawingContext. Chcete-li použít tuto metodu, vytvoříte objekt FormattedText. Tento objekt umožňuje nakreslit víceřádkový text, ve kterém může být každý znak textu individuálně formátován. Funkce objektu FormattedText obsahuje většinu funkcí příznaků DrawText v rozhraní API systému Windows. Kromě toho objekt FormattedText obsahuje funkce, jako je podpora tří teček, ve kterých se zobrazí tři tečky, když text překročí jeho hranice. Následující příklad ukazuje text s několika použitými formáty, včetně lineárního přechodu na druhé a třetí slovo.

Text zobrazený pomocí objektu FormattedText

Formátovaný text můžete převést na objekty Geometry, což vám umožní vytvářet další typy vizuálně zajímavého textu. Můžete například vytvořit objekt Geometry na základě obrysu textového řetězce.

obrys textu pomocí lineárního přechodového štětce

Následující příklady ilustrují několik způsobů, jak vytvořit zajímavé vizuální efekty úpravou tahu, výplně a zvýraznění převedeného textu.

Text s různými barvami pro výplň a obrys

Text s použitým obrázkovým štětcem na tah

Text se štětcem obrázku použitým na tah a zvýraznění

Další informace o objektu FormattedText viz Nakreslení formátovaného textu.

Rozšířené formátování textu

Na nejpokročilejší úrovni textových rozhraní API nabízí WPF možnost vytvářet vlastní rozložení textu pomocí objektu TextFormatter a dalších typů v oboru názvů System.Windows.Media.TextFormatting. TextFormatter a přidružené třídy umožňují implementovat vlastní rozložení textu, které podporuje vlastní definici formátů znaků, stylů odstavců, pravidel dělení řádků a dalších funkcí rozložení pro mezinárodní text. Existuje velmi málo případů, kdy byste chtěli přepsat výchozí implementaci podpory rozložení textu WPF. Pokud jste ale vytvořili ovládací prvek pro úpravy textu nebo aplikaci, můžete vyžadovat jinou implementaci než výchozí implementace WPF.

Na rozdíl od tradičního textového rozhraní API TextFormatter komunikuje s klientem rozložení textu prostřednictvím sady metod zpětného volání. Vyžaduje, aby klient poskytl tyto metody v implementaci třídy TextSource. Následující diagram znázorňuje interakci rozložení textu mezi klientskou aplikací a TextFormatter.

Diagram rozložení textu klienta a TextFormatter

Další podrobnosti o vytváření vlastního rozložení textu najdete v tématu Rozšířené formátování textu.

Viz také