Glyfer och Glyph-körningar
Glyfer och glyph-körningar är tillgängliga på det lägsta lagret av funktioner i DirectWrite API, glyph-renderingsskiktet.
Specialtecken
Ett tecken är en fysisk representation av ett tecken i ett visst teckensnitt. Tecken kan ha många tecken, där varje teckensnitt i ett system potentiellt definierar ett annat tecken för det tecknet.
Två eller flera glyfer kan också kombineras till en enda glyph, den här processen kallas glyphkomposition. Detta kan också göras i motsatt riktning, en enda glyf delas upp i flera glyfer, så kallade glyph nedbrytning.
Alternativa glyfer
Teckensnitt kan ge alternativa tecken, till exempel stilistiska alternativa tecken för Teckensnittet Pericles OpenType, enligt följande skärmbild. Tecknen "A", "E" och "O" återges med stilistiska alternativa tecken.
Ett annat exempel på alternativa glyfer är swash-glyfer. Följande skärmbild visar standard- och swash-glyfer för Pescadero-teckensnittet.
Swashes och andra typografiska funktioner, inklusive mer utarbetade alternativa glyfer, finns tillgängliga via OpenType. OpenType-typografiska funktioner kan tillämpas på ett textintervall med hjälp av IDWriteTextLayout::SetTypography och skicka DWRITE_FONT_FEATURE_TAG uppräkningskonstant som är associerad med önskad funktion.
Glyph-körningar
En glyph-körning representerar en sammanhängande uppsättning glyfer som alla har samma teckensnittsyta och storlek, samt samma klientritningseffekt, om någon. Understrykning och genomstrykning är inte en del av glyph-körningen för det textintervall som de tillämpas på och ritas senare. Infogade objekt, till exempel bilder, ritas också separat, eftersom de inte ingår i ett teckensnitt.
Gränssnittet IDWriteFontFace
DirectWrite använder samma system för teckensnittsklassificering som Windows Presentation Foundation (WPF), så det kan finnas flera fysiska teckensnitt per teckensnittsfamilj. Ett teckensnittsansikte, till exempel gränssnittet IDWriteFontFace i DirectWrite, representerar ett fysiskt teckensnitt med en specifik vikt, sned och stretch. Den innehåller teckensnittets ansiktstyp, lämpliga filreferenser, ansiktsidentifieringsdata och olika teckensnittsdata, till exempel mått, namn och teckendispositioner.
IDWriteFontFace kan skapas direkt från ett teckensnittsnamn eller hämtas från en teckensnittssamling.
Glyph-mått
Enskilda glyfer har mått associerade med dem. Du kan hämta måtten för alla glyfer i en glyph-körning med hjälp av metoden IDWriteFontFace::GetDesignGlyphMetrics. Detta returnerar en DWRITE_GLYPH_METRICS struktur som har förlängd bredd, vänster och höger sidolager, det övre och nedre sidolagret, höjden och det lodräta baslinjens ursprung.
Följande diagram visar olika mått på två olika tecken.
Rita en Glyph-körning
När du implementerar en anpassad textåtergivning hanteras återgivningen av glyfer av IDWriteTextRenderer::D rawGlyphRun, en motringningsmetod som du implementerar som en del av en klass som härleds från IDWriteTextRenderer. Den DWRITE_GLYPH_RUN struktur som skickas till DrawGlyphRun innehåller ett IDWriteFontFace-objekt med namnet fontFace, som representerar teckensnittsansiktet för hela glyph-körningen.
Objektet IDWriteFontFace innehåller även metoden GetGlyphRunOutline, som beräknar glyph-konturerna med hjälp av en angiven geometrimottagare, till exempel ID2D1SimplifiedGeometrySink vid återgivning med Direct2D-.
Mer information finns i avsnittet Implementera en anpassad textåtergivning.