Delen via


Glyphs en Glyph Runs

Glyphs en glyph-uitvoeringen zijn beschikbaar op de laagste laag van de functionaliteit van de DirectWrite API, de laag glyph-rendering.

Glyphs

Een symbool is een fysieke weergave van een teken in een bepaald lettertype. Tekens hebben mogelijk veel glyphs, waarbij elk lettertype op een systeem mogelijk een ander symbool voor dat teken definieert.

Twee of meer glyphs kunnen ook worden gecombineerd tot één glyph. Dit proces wordt glyph-samenstelling genoemd. Dit kan ook in de tegenovergestelde richting worden gedaan, waarbij één glyph wordt gesplitst in meerdere glyphs, ook wel glyph-ontleding genoemd.

Alternatieve glyphs

Lettertypen kunnen alternatieve glyphs bieden voor tekens, zoals de stijl alternatieve glyphs voor het lettertype Pericles OpenType, zoals wordt weergegeven in de volgende schermafbeelding. De tekens A, E en O worden weergegeven met stijl alternatieve glyphs.

schermafbeelding van 'oude groene mythie', met de 'a', 'e' en 'o' met behulp van alternatieve glyphs

Een ander voorbeeld van alternatieve glyphs zijn swash-glyphs. In de volgende schermafbeelding ziet u standaard- en swash-glyphs voor het lettertype Voor DeDero.

schermafbeelding van de letters

Swashes en andere typografische functies, waaronder uitgebreidere alternatieve glyphs, zijn beschikbaar via OpenType. Typografische functies van OpenType kunnen worden toegepast op een tekstbereik met behulp van de IDWriteTextLayout::SetTypography en het doorgeven van de DWRITE_FONT_FEATURE_TAG opsommingsconstante die is gekoppeld aan de gewenste functie.

Glyph-uitvoeringen

Een glyph-uitvoering vertegenwoordigt een aaneengesloten set glyphs die allemaal hetzelfde lettertype en dezelfde tekengrootte hebben, evenals hetzelfde clienttekeningeffect, indien van toepassing. Onderstrepen en doorhalen maken geen deel uit van de glyph-uitvoering voor het tekstbereik waar ze op worden toegepast en worden later getekend. Inlineobjecten, zoals afbeeldingen, worden ook afzonderlijk getekend, omdat ze geen deel uitmaken van een lettertype.

De INTERFACE IDWriteFontFace

DirectWrite hetzelfde systeem gebruikt voor lettertypeclassificatie als Windows Presentation Foundation (WPF), zodat er meerdere fysieke lettertypen per lettertypefamilie kunnen zijn. Een lettertype gezicht, zoals de IDWriteFontFace interface in DirectWrite, vertegenwoordigt een fysiek lettertype, met een bepaald gewicht, schuine en stretch. Het bevat het lettertype facetype, de juiste bestandsverwijzingen, gezichtsidentificatiegegevens en verschillende lettertypegegevens, zoals metrische gegevens, namen en glyph-overzichten.

De IDWriteFontFace- kan rechtstreeks worden gemaakt op basis van een lettertypenaam of verkregen uit een lettertypeverzameling.

Metrische Glyph-gegevens

Aan afzonderlijke glyphs zijn metrische gegevens gekoppeld. U kunt de metrische gegevens voor alle glyphs in een glyph-uitvoering verkrijgen met behulp van de methode IDWriteFontFace::GetDesignGlyphMetrics. Dit retourneert een DWRITE_GLYPH_METRICS structuur met de voorbreedte, het linker- en rechterzijdelager, de boven- en onderzijde, de hoogte en de verticale basislijn.

In het volgende diagram ziet u verschillende metrische gegevens van twee verschillende tekens.

diagram van de metrische gegevens van twee verschillende

Een Glyph-uitvoering tekenen

Bij het implementeren van een aangepaste tekstweergave wordt de weergave van glyphs verwerkt door de IDWriteTextRenderer::D rawGlyphRun, een callback-methode die u implementeert als onderdeel van een klasse die is afgeleid van IDWriteTextRenderer-. De DWRITE_GLYPH_RUN structuur die wordt doorgegeven aan DrawGlyphRun bevat een IDWriteFontFace-object, met de naam fontFace, dat het lettertypegezicht vertegenwoordigt voor de volledige uitvoering.

Het object IDWriteFontFace biedt ook de methode GetGlyphRunOutline, waarmee de glyph-contouren worden berekend met behulp van een opgegeven callback voor geometriesink, zoals ID2D1SimplifiedGeometrySink bij het weergeven met Direct2D-.

Zie de Een aangepaste tekstweergave implementeren onderwerp voor meer informatie.