Glifos y ejecuciones de glifos

Los glifos y las ejecuciones de glifos están disponibles en la capa más baja de funcionalidad de la API de DirectWrite, la capa de representación del glifo.

Glifos

Un glifo es una representación física de un carácter en una fuente determinada. Los caracteres pueden tener muchos glifos, con cada fuente de un sistema que podría definir un glifo diferente para ese carácter.

Dos o más glifos también se pueden combinar en un solo glifo, este proceso se denomina composición glifo. Esto también se puede hacer en la dirección opuesta, un único glifo que se divide en varios glifos, conocido como descomposición del glifo.

Glifos alternativos

Las fuentes pueden proporcionar glifos alternativos para caracteres, como los glifos alternativos estilísticos para la fuente OpenType de Pericles, como se muestra en la captura de pantalla siguiente. Los caracteres "A", "E" y "O" se representan con glifos alternativos estilísticos.

screen shot of

Otro ejemplo de glifos alternativos son glifos de lavado. En la captura de pantalla siguiente se muestran glifos estándar y de lavado para la fuente Pescadero.

screen shot of the letters

Los swashes y otras características tipográficas, incluidos glifos alternativos más elaborados, están disponibles a través de OpenType. Las características tipográficas openType se pueden aplicar a un intervalo de texto mediante IDWriteTextLayout::SetTypography y pasando la constante de enumeración DWRITE_FONT_FEATURE_TAG asociada a la característica deseada.

Ejecuciones de glifo

Una ejecución de glifo representa un conjunto contiguo de glifos que tienen la misma cara y tamaño de fuente, así como el mismo efecto de dibujo del cliente, si existe. El subrayado y el tachado no forman parte de la ejecución del glifo para el intervalo de texto al que se aplican y se dibujan más adelante. Los objetos insertados, como las imágenes, también se dibujan por separado, ya que no forman parte de una fuente.

Interfaz IDWriteFontFace

DirectWrite usa el mismo sistema para la clasificación de fuentes que Windows Pesentation Foundation (WPF), por lo que puede haber varias fuentes físicas por cada familia de fuentes. Una cara de fuente, como la interfaz IDWriteFontFace en DirectWrite, representa una fuente física, con un peso, un slant y stretch específicos. Contiene el tipo de cara de fuente, las referencias de archivo adecuadas, los datos de identificación facial y varios datos de fuente, como métricas, nombres y esquemas de glifo.

IdWriteFontFace se puede crear directamente a partir de un nombre de fuente o obtenerlo de una colección de fuentes.

Métricas de glifo

Los glifos individuales tienen métricas asociadas a ellos. Puede obtener las métricas de todos los glifos de una ejecución de glifo mediante el método IDWriteFontFace::GetDesignGlyphMetrics . Devuelve una estructura DWRITE_GLYPH_METRICS que tiene el ancho avanzado, el rodamiento izquierdo y derecho, el rodamiento superior e inferior, el alto y el origen de línea base vertical.

En el diagrama siguiente se muestran varias métricas de dos caracteres de glifo diferentes.

diagram of the metrics of two different glyphs

Dibujo de una ejecución de glifo

Al implementar un representador de texto personalizado, la representación de glifos se controla mediante IDWriteTextRenderer::D rawGlyphRun, un método de devolución de llamada que se implementa como parte de una clase derivada de IDWriteTextRenderer. La estructura DWRITE_GLYPH_RUN que se pasa a DrawGlyphRun contiene un objeto IDWriteFontFace , denominado fontFace, que representa la cara de fuente para toda la ejecución del glifo.

El objeto IDWriteFontFace también proporciona el método GetGlyphRunOutline , que calcula los contornos del glifo mediante una devolución de llamada del receptor de geometría especificada, como ID2D1SimplifiedGeometrySink al representar con Direct2D.

Para obtener más información, vea el tema How to Implement a Custom Text Renderer (Cómo implementar un representador de texto personalizado ).