Glifos e execuções de glifo
As execuções de glifo e glifo estão disponíveis na camada mais baixa de funcionalidade da API DirectWrite, a camada de renderização de glifo.
Glifos
Um glifo é uma representação física de um caractere em uma determinada fonte. Os caracteres podem ter muitos glifos, com cada fonte em um sistema potencialmente definindo um glifo diferente para esse caractere.
Dois ou mais glifos também podem ser combinados em um único glifo, esse processo é chamado de composição de glifo. Isso também pode ser feito na direção oposta, um único glifo sendo dividido em vários glifos, conhecidos como decomposição de glifo.
Glifos alternativos
Fontes podem fornecer glifos alternativos para caracteres, como os glifos alternativos estilísticos para a fonte Pericles OpenType, conforme mostrado na captura de tela a seguir. Os caracteres 'A', 'E' e 'O' são renderizados com glifos alternativos estilísticos.
Outro exemplo de glifos alternativos são glifos de lavagem. A captura de tela a seguir mostra glifos padrão e swash para a fonte Pescadero.
Os swashes e outros recursos tipográficos, incluindo glifos alternativos mais elaborados, estão disponíveis por meio de OpenType. Os recursos de digitação OpenType podem ser aplicados a um intervalo de texto usando o IDWriteTextLayout::SetTypography e passando a constante de enumeração DWRITE_FONT_FEATURE_TAG associada ao recurso desejado.
Execuções de glifo
Uma execução de glifo representa um conjunto contíguo de glifos que todos têm a mesma face e tamanho da fonte, bem como o mesmo efeito de desenho do cliente, se houver. Sublinhado e tachado não fazem parte da execução do glifo para o intervalo de texto ao qual são aplicados e são desenhados posteriormente. Objetos embutidos, como imagens, também são desenhados separadamente, pois não fazem parte de uma fonte.
A interface IDWriteFontFace
DirectWrite usa o mesmo sistema para classificação de fontes que o Windows Presentation Foundation (WPF), para que possa haver várias fontes físicas por cada família de fontes. Uma face de fonte, como a interfaceIDWriteFontFaceno DirectWrite, representa uma fonte física, com um peso específico, inclinação e alongamento. Ele contém o tipo de face da fonte, referências de arquivo apropriadas, dados de identificação facial e vários dados de fonte, como métricas, nomes e estruturas de tópicos de glifo.
OIDWriteFontFacepode ser criado diretamente de um nome de fonte ou obtido de uma coleção de fontes.
Métricas de glifo
Glifos individuais têm métricas associadas a eles. Você pode obter as métricas de todos os glifos em uma execução de glifo usando o método IDWriteFontFace::GetDesignGlyphMetrics. Isso retorna uma estrutura DWRITE_GLYPH_METRICS que tem a largura avançada, o rolamento do lado esquerdo e direito, o rolamento do lado superior e inferior, a altura e a origem da linha de base vertical.
O diagrama a seguir mostra várias métricas de dois caracteres de glifo diferentes.
Desenhando uma execução de glifo
Ao implementar um renderizador de texto personalizado, a renderização de glifos é tratada pelo IDWriteTextRenderer::D rawGlyphRun, um método de retorno de chamada que você implementa como parte de uma classe derivada de IDWriteTextRenderer. A estrutura DWRITE_GLYPH_RUN passada para DrawGlyphRun contém um objetoIDWriteFontFace, chamado fontFace, que representa o rosto da fonte para toda a execução do glifo.
O objetoIDWriteFontFacetambém fornece o métodoGetGlyphRunOutline, que calcula as estruturas de tópicos do glifo usando um retorno de chamada do coletor de geometria especificado, como ID2D1SimplifiedGeometrySink ao renderizar com Direct2D .
Para obter mais informações, consulte o tópico Como implementar um renderizador de texto personalizado.