Udostępnij za pośrednictwem


Typografia w WPF

W tym temacie przedstawiono główne funkcje typograficzne WPF. Te funkcje obejmują lepszą jakość i wydajność renderowania tekstu, obsługę typografii OpenType, ulepszony tekst międzynarodowy, ulepszoną obsługę czcionek i nowe interfejsy programowania aplikacji tekstowych (API).

Ulepszona jakość i wydajność tekstu

Tekst w WPF jest renderowany przy użyciu technologii Microsoft ClearType, co zwiększa czytelność i wyrazistość tekstu. ClearType to technologia oprogramowania opracowana przez firmę Microsoft, która poprawia czytelność tekstu na istniejących monitorach LCD (Liquid Crystal Displays), takich jak ekrany laptopów, ekrany Pocket PC i monitory z płaskim panelem. Funkcja ClearType używa renderowania subpikselowego, które umożliwia wyświetlanie tekstu z większą dokładnością odwzorowania rzeczywistego kształtu, dzięki wyrównywaniu znaków na ułamkowej części piksela. Dodatkowa rozdzielczość zwiększa ostrość drobnych szczegółów wyświetlanych w tekście, co znacznie ułatwia odczytywanie w długich okresach. Kolejną poprawą funkcji ClearType w WPF jest anty-aliasowanie w kierunku y, które wygładzi góry i dno płytkich krzywych w znakach tekstowych. Aby uzyskać więcej informacji na temat funkcji ClearType, zobacz ClearType Overview.

tekst z antyaliasowaniem ClearType w kierunku pionowym
Tekst z antyaliasingiem technologii ClearType w kierunku y

Cały potok renderowania tekstu można przyspieszyć sprzętowo w WPF, pod warunkiem że maszyna spełnia minimalny wymagany poziom sprzętu. Renderowanie, którego nie można wykonać przy użyciu sprzętu, powraca do renderowania oprogramowania. Przyspieszanie sprzętowe wpływa na wszystkie fazy procesu renderowania tekstu — od przechowywania pojedynczych glifów, komponowania glifów w przebiegi glifów, stosowania efektów oraz zastosowania algorytmu mieszania ClearType do ostatecznego wyświetlanego wyniku. Aby uzyskać więcej informacji na temat przyspieszania sprzętowego, zobacz Warstwy renderowania grafiki.

Diagram potoku renderowania tekstu

Ponadto animowany tekst, zarówno na poziomie znaków, jak i glifów, w pełni korzysta z możliwości sprzętu graficznego umożliwionych przez WPF. Powoduje to płynną animację tekstu.

Bogata typografia

Format czcionki OpenType jest rozszerzeniem formatu czcionki TrueType®. Format czcionki OpenType został opracowany wspólnie przez firmę Microsoft i firmę Adobe oraz udostępnia bogaty asortyment zaawansowanych funkcji typograficznych. Obiekt Typography ujawnia wiele zaawansowanych funkcji czcionek OpenType, takich jak alternatywy stylowe i ozdobniki. Zestaw Windows SDK udostępnia zestaw przykładowych czcionek OpenType zaprojektowanych z rozbudowanymi funkcjami, takimi jak czcionki Pericles i Pescadero. Aby uzyskać więcej informacji, zobacz Sample OpenType Font Pack.

Czcionka Pericles OpenType zawiera dodatkowe glify, które zapewniają stylistyczne alternatywy dla standardowego zestawu glifów. Poniższy tekst wyświetla stylistyczne alternatywne glify.

Tekst przy użyciu alternatywnych glifów OpenType

Swashes to ozdobne glify, które używają wyszukanych ozdobników często związanych z kaligrafią. Poniższy tekst wyświetla standardowe i swash glify czcionki Pescadero.

tekst przy użyciu standardu OpenType i swaszowych glifów

Aby uzyskać więcej informacji na temat funkcji OpenType, zobacz Funkcje czcionek OpenType.

Ulepszona obsługa tekstu międzynarodowego

Platforma WPF zapewnia rozszerzoną obsługę tekstu międzynarodowego, zapewniając następujące funkcje:

  • Automatyczne odstępy między wierszami we wszystkich systemach zapisu przy użyciu pomiaru adaptacyjnego.

  • Szerokie poparcie dla tekstu międzynarodowego. Aby uzyskać więcej informacji, zobacz Globalizacja dla WPF.

  • Podział wierszy prowadzony przez zasady językowe, dzielenie wyrazów i wyrównanie.

Ulepszona obsługa czcionek

Platforma WPF zapewnia rozszerzoną obsługę czcionek, zapewniając następujące funkcje:

  • Unicode dla całego tekstu. Zachowanie czcionki i wybór nie wymagają już zestawu znaków ani strony kodowej.

  • Zachowanie czcionki niezależnie od ustawień globalnych, takich jak ustawienia regionalne systemu.

  • Oddzielne typy FontWeight, FontStretchi FontStyle do definiowania FontFamily. Zapewnia to większą elastyczność niż w programowaniu Win32, w którym kombinacje wartości logicznych kursywy i pogrubienia tekstu są używane do definiowania rodziny czcionek.

  • Kierunek pisania (poziomy i pionowy) obsługiwany niezależnie od nazwy czcionki.

  • Łączenie czcionek i powrót czcionek w przenośnym pliku XML przy użyciu technologii czcionek złożonych. Czcionki złożone umożliwiają konstruowanie wielojęzycznych czcionek z pełną gamą. Czcionki złożone zapewniają również mechanizm, który pozwala uniknąć wyświetlania brakujących glifów. Aby uzyskać więcej informacji, zapoznaj się z uwagami w klasie FontFamily.

  • Czcionki międzynarodowe utworzone na podstawie czcionek złożonych przy użyciu grupy czcionek w jednym języku. Pozwala to zaoszczędzić na kosztach zasobów podczas opracowywania czcionek dla wielu języków.

  • Czcionki złożone osadzone w dokumencie, co zapewnia przenośność dokumentu. Aby uzyskać więcej informacji, zapoznaj się z uwagami w klasie FontFamily.

Nowe interfejsy programowania aplikacji tekstowych (API)

Platforma WPF udostępnia kilka interfejsów API tekstu, których deweloperzy mogą używać podczas dołączania tekstu do swoich aplikacji. Te interfejsy API są pogrupowane w trzy kategorie:

  • Układ i interfejs użytkownika. Typowe kontrolki tekstu graficznego interfejsu użytkownika (GUI).

  • Lekki rysunek tekstowy. Umożliwia rysowanie tekstu bezpośrednio do obiektów.

  • Zaawansowane formatowanie tekstu. Umożliwia zaimplementowanie niestandardowego silnika tekstowego.

Układ i interfejs użytkownika

Na najwyższym poziomie funkcjonalności tekstowe interfejsy API udostępniają typowe kontrolki interfejsu użytkownika, takie jak Label, TextBlocki TextBox. Te kontrolki udostępniają podstawowe elementy interfejsu użytkownika w aplikacji i oferują łatwy sposób prezentowania tekstu i interakcji z nim. Kontrolki takie jak RichTextBox i PasswordBox umożliwiają bardziej zaawansowaną lub wyspecjalizowaną obsługę tekstu. Klasy takie jak TextRange, TextSelectioni TextPointer umożliwiają przydatne manipulowanie tekstem. Te kontrolki interfejsu użytkownika zapewniają właściwości, takie jak FontFamily, FontSizei FontStyle, które umożliwiają sterowanie czcionką używaną do renderowania tekstu.

Używanie efektów mapy bitowej, przekształceń i efektów tekstowych

WPF umożliwia tworzenie wizualnie interesujących zastosowań tekstu za pomocą funkcji, takich jak efekty mapy bitowej, przekształcenia i efekty tekstowe. W poniższym przykładzie pokazano typowy typ efektu cienia kropli zastosowanego do tekstu.

cień tekstu z miękkością = 0,25

W poniższym przykładzie przedstawiono efekt cienia i szum zastosowane na tekście.

cień tekstu z szumem

W poniższym przykładzie pokazano efekt poświaty zewnętrznej zastosowany do tekstu.

cień tekstu przy użyciu efektu OuterGlowBitmapEffect

W poniższym przykładzie pokazano efekt rozmycia zastosowany do tekstu.

Cień tekstu z użyciem efektu rozmycia BlurBitmapEffect

W poniższym przykładzie pokazano drugi wiersz tekstu skalowany o 150% wzdłuż osi x, a trzeci wiersz tekstu skalowany przez 150% wzdłuż osi y.

tekst przeskalowany przy użyciu transformacji skalowania

W poniższym przykładzie pokazano niesymetryczność tekstu wzdłuż osi x.

Tekst przekształcony przy użyciu SkewTransform

Obiekt TextEffect jest obiektem pomocnika, który umożliwia traktowanie tekstu jako co najmniej jednej grupy znaków w ciągu tekstowym. W poniższym przykładzie pokazano, jak pojedynczy znak jest obracany. Każdy znak jest obracany niezależnie w odstępach 1-sekundowych.

Zrzut ekranu przedstawiający efekt obrotu tekstu

Korzystanie z dokumentów przepływowych

Oprócz typowych kontrolek interfejsu użytkownika platforma WPF oferuje kontrolkę układu prezentacji tekstu — element FlowDocument. Element FlowDocument w połączeniu z elementem DocumentViewer zapewnia kontrolkę dla dużych ilości tekstu o różnych wymaganiach dotyczących układu. Kontrolki układu zapewniają dostęp do zaawansowanej typografii przez obiekt Typography i właściwości związane z fontem innych kontrolek interfejsu użytkownika.

W poniższym przykładzie pokazano zawartość tekstową hostowaną w FlowDocumentReader, która zapewnia obsługę wyszukiwania, nawigacji, stronicowania i skalowania zawartości.

Zrzut ekranu przedstawiający czcionki OpenType.

Aby uzyskać więcej informacji, zobacz Documents in WPF.

Lekkie renderowanie tekstu

Tekst można narysować bezpośrednio do obiektów WPF przy użyciu metody DrawText obiektu DrawingContext. Aby użyć tej metody, należy utworzyć obiekt FormattedText. Ten obiekt umożliwia rysowanie tekstu wielowierszowego, w którym każdy znak w tekście może być sformatowany indywidualnie. Funkcjonalność obiektu FormattedText zawiera wiele funkcji flag DrawText w interfejsie API systemu Windows. Ponadto obiekt FormattedText zawiera funkcje, takie jak obsługa wielokropka, w której wielokropek jest wyświetlany, gdy tekst przekracza jego granice. W poniższym przykładzie pokazano tekst zawierający kilka zastosowanych formatów, w tym gradient liniowy w drugim i trzecim słowie.

tekst wyświetlany przy użyciu obiektu FormattedText

Możesz przekonwertować sformatowany tekst na obiekty Geometry, co pozwala na tworzenie innych typów wizualnie interesującego tekstu. Można na przykład utworzyć obiekt Geometry na podstawie zarysu ciągu tekstowego.

kontur tekstu przy użyciu pędzla gradientowego liniowego

W poniższych przykładach przedstawiono kilka sposobów tworzenia interesujących efektów wizualnych przez zmodyfikowanie pociągnięcia, wypełnienia i wyróżnienia przekonwertowanego tekstu.

tekst z różnymi kolorami wypełnienia i konturu

tekst z zastosowanym pędzlem obrazu do pociągnięcia

tekst z pędzlem obrazu zastosowanym do pociągnięcia i wyróżnienia

Aby uzyskać więcej informacji na temat obiektu FormattedText, zobacz Rysowanie sformatowanego tekstu.

Zaawansowane formatowanie tekstu

Na najbardziej zaawansowanym poziomie interfejsów API tekstu platforma WPF oferuje możliwość tworzenia niestandardowego układu tekstu przy użyciu obiektu TextFormatter i innych typów w przestrzeni nazw System.Windows.Media.TextFormatting. Klasy TextFormatter i skojarzone umożliwiają implementowanie niestandardowego układu tekstu, który obsługuje własną definicję formatów znaków, stylów akapitów, reguł podziału wierszy i innych funkcji układu dla tekstu międzynarodowego. Istnieje bardzo niewiele przypadków, w których warto zastąpić domyślną implementację obsługi układu tekstu WPF. Jeśli jednak tworzysz kontrolkę edycji tekstu lub aplikację, może być wymagana inna implementacja niż domyślna implementacja WPF.

W przeciwieństwie do tradycyjnego interfejsu API tekstu TextFormatter współdziała z klientem układu tekstu za pomocą zestawu metod wywołania zwrotnego. Wymaga to, aby klient dostarczył te metody we wdrożeniu klasy TextSource. Na poniższym diagramie przedstawiono interakcję układu tekstu między aplikacją kliencą a TextFormatter.

Diagram układu tekstu klienta i TextFormatter

Aby uzyskać więcej informacji na temat tworzenia niestandardowego układu tekstu, zobacz Advanced Text Formatting.

Zobacz też