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ść tekstu i czytelność tekstu. ClearType to technologia oprogramowania opracowana przez firmę Microsoft, która poprawia czytelność tekstu na istniejących wyświetlaczach LCD (Liquid Crystal Displays), takich jak ekrany laptopów, ekrany urządzenie Pocket PC i monitory z płaskim panelem. Funkcja ClearType używa renderowania pod pikselów, które umożliwia wyświetlanie tekstu z większą wiernością rzeczywistego kształtu przez wyrównanie znaków na części ułamkowej 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 (Omówienie funkcji ClearType).

Text with ClearType y-direction anti-aliasing
Tekst z antyaliasingiem typu ClearType 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 potoku renderowania tekstu — od przechowywania pojedynczych glifów, komponowania glifów do przebiegów glifów, stosowania efektów w celu zastosowania algorytmu blendingu ClearType do końcowych wyświetlanych danych wyjściowych. Aby uzyskać więcej informacji na temat przyspieszania sprzętowego, zobacz Warstwy renderowania grafiki.

Diagram of the text rendering pipeline

Ponadto animowany tekst, niezależnie od tego, czy ma postać, czy glyph, w pełni korzysta z możliwości sprzętu graficznego włączonego 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 uwidacznia wiele zaawansowanych funkcji czcionek OpenType, takich jak alternatywne stylistyczne i swashes. 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 Przykładowy pakiet czcionek OpenType.

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

Text using OpenType stylistic alternate glyphs

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 glyphs czcionki Pescadero.

Text using OpenType standard and swash glyphs

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 z przewodnikiem językowym, dzielenie wyrazów i uzasadnienie.

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 zaznaczenie nie wymaga już zestawu znaków ani strony kodowej.

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

  • Oddzielanie FontWeighttypów , FontStretchi FontStyle do definiowania elementu FontFamily. Zapewnia to większą elastyczność niż w programowaniu Win32, w którym kombinacje logiczne kursywy i pogrubienia 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, zobacz uwagi w FontFamily klasie.

  • 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, zobacz uwagi w FontFamily klasie.

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).

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

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

Układ i interfejs użytkownika

Na najwyższym poziomie funkcjonalności interfejsy API tekstu 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 udostępniają 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.

Text shadow with Softness = 0.25

W poniższym przykładzie przedstawiono efekt cienia porzucania i szum zastosowany do tekstu.

Text shadow with noise

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

Text shadow using an OuterGlowBitmapEffect

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

Text shadow using a BlurBitmapEffect

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

Text scaled using a ScaleTransform

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

Text skewed using a SkewTransform

TextEffect Obiekt 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 obracany pojedynczy znak. Każdy znak jest obracany niezależnie w odstępach 1-sekundowych.

Screenshot of text effect rotating text

Korzystanie z dokumentów przepływu

Oprócz typowych kontrolek interfejsu użytkownika platforma WPF oferuje kontrolkę układu prezentacji tekstu — FlowDocument element . Element FlowDocument , w połączeniu DocumentViewer z elementem, 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 za pośrednictwem Typography obiektów i właściwości związanych z czcionką innych kontrolek interfejsu użytkownika.

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

Screenshot that shows OpenType fonts.

Aby uzyskać więcej informacji, zobacz Dokumenty w WPF.

Uproszczony rysunek tekstowy

Tekst można narysować bezpośrednio do obiektów WPF przy użyciu DrawText metody DrawingContext obiektu . Aby użyć tej metody, należy utworzyć FormattedText obiekt. Ten obiekt umożliwia rysowanie tekstu wielowierszowego, w którym każdy znak w tekście może być sformatowany indywidualnie. Funkcjonalność FormattedText obiektu zawiera wiele funkcji flag DrawText w interfejsie API systemu Windows. Ponadto obiekt zawiera funkcje, FormattedText takie jak obsługa wielokropka, w której jest wyświetlany wielokropek, 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.

Text displayed using FormattedText object

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

Text outline using a linear gradient brush

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.

Text with different colors for fill and stroke

Text with image brush applied to stroke

Text with image brush applied to stroke and highlight

Aby uzyskać więcej informacji na FormattedText temat obiektu, 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 TextFormatter obiektu i innych typów w System.Windows.Media.TextFormatting przestrzeni nazw. Klasy TextFormatter i skojarzone umożliwiają implementowanie niestandardowego układu tekstu, który obsługuje własną definicję formatów znaków, stylów akapitu, 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 interfejs TextFormatter API 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 TextSource klasy . Na poniższym diagramie przedstawiono interakcję układu tekstu między aplikacją kliencka a TextFormatter.

Diagram of text layout client and TextFormatter

Aby uzyskać więcej informacji na temat tworzenia niestandardowego układu tekstu, zobacz Zaawansowane formatowanie tekstu.

Zobacz też