Udostępnij za pośrednictwem


Przebiegi glifów i glyph

Przebiegi glyph i glyph są dostępne w najniższej warstwie funkcjonalności interfejsu API DirectWrite, warstwie renderowania glifów.

Glify

Glif to fizyczna reprezentacja znaku w danej czcionki. Znaki mogą mieć wiele glyphs, z każdą czcionką w systemie potencjalnie definiując inny glyph dla tego znaku.

Dwa lub więcej glifów można również połączyć w jeden glif, ten proces jest nazywany kompozycją glifów. Można to również zrobić w przeciwnym kierunku, jeden glif jest podzielony na wiele glifów, znany jako dekompozycja glifów.

Alternatywne glify

Czcionki mogą zawierać alternatywne glyphs dla znaków, takich jak stylistyczne alternatywne glyphs czcionki Pericles OpenType, jak pokazano na poniższym zrzucie ekranu. Znaki "A", "E" i "O" są renderowane ze stylistycznymi alternatywnymi glifami.

zrzut ekranu

Innym przykładem alternatywnych glifów są pokosy glify. Poniższy zrzut ekranu przedstawia standardowe i pokosy dla czcionki Pescadero.

zrzut ekranu liter

Ukośniki i inne funkcje typograficzne, w tym bardziej rozbudowane alternatywne glify, są dostępne za pośrednictwem OpenType. Funkcje typograficzne typu OpenType można stosować do zakresu tekstu przy użyciu IDWriteTextLayout::SetTypography i przekazywania stałej wyliczania DWRITE_FONT_FEATURE_TAG skojarzonej z żądaną funkcją.

Przebiegi glyph

Przebieg glif reprezentuje ciągły zestaw glifów, które mają tę samą twarz i rozmiar czcionki, a także ten sam efekt rysunku klienta, jeśli istnieje. Podkreślenie i przekreślenie nie są częścią przebiegu glif dla zakresu tekstu, do którego są stosowane, i są rysowane później. Obiekty wbudowane, takie jak obrazy, są również rysowane oddzielnie, ponieważ nie są częścią czcionki.

Interfejs IDWriteFontFace

DirectWrite używa tego samego systemu do klasyfikacji czcionek co Windows Presentation Foundation (WPF), więc może istnieć wiele czcionek fizycznych dla każdej rodziny czcionek. Twarz czcionki, taka jak interfejs IDWriteFontFace w trybie DirectWrite, reprezentuje czcionkę fizyczną o określonej wadze, pochyleniu i rozciągnięciu. Zawiera typ twarzy czcionki, odpowiednie odwołania do plików, dane identyfikacji twarzy i różne dane czcionek, takie jak metryki, nazwy i kontury glyph.

IDWriteFontFace można utworzyć bezpośrednio na podstawie nazwy czcionki lub uzyskanej z kolekcji czcionek.

Metryki glifów

Poszczególne glify mają skojarzone z nimi metryki. Metryki dla wszystkich glifów można uzyskać w przebiegu glifu przy użyciu metody IDWriteFontFace::GetDesignGlyphMetrics. Zwraca to DWRITE_GLYPH_METRICS strukturę, która ma szerokość z wyprzedzeniem, lewe i prawe łożysko boczne, łożysko górne i dolne, wysokość i pionowy początek linii bazowej.

Na poniższym diagramie przedstawiono różne metryki dwóch różnych znaków glifów.

diagram metryk dwóch różnych glifów

Rysowanie przebiegu glifów

Podczas implementowania niestandardowego modułu renderowania tekstu renderowanie glyphs jest obsługiwane przez IDWriteTextRenderer::D rawGlyphRun, metodę wywołania zwrotnego zaimplementowaną jako część klasy pochodnej z IDWriteTextRenderer. Struktura DWRITE_GLYPH_RUN przekazywana do DrawGlyphRun zawiera obiekt IDWriteFont Face o nazwie fontFace, który reprezentuje twarz czcionki dla całego przebiegu glifu.

Obiekt IDWriteFontFace udostępnia również metodę GetGlyphRunOutline, która oblicza konspekty glyph przy użyciu określonego wywołania zwrotnego ujścia geometrii, takiego jak ID2D1SimplifiedGeometrySink podczas renderowania za pomocą Direct2D.

Aby uzyskać więcej informacji, zobacz temat Jak zaimplementować niestandardowy moduł renderowania tekstu.