Glifos e Glifos
Glifos e execuções de glifos estão disponíveis na camada mais baixa de funcionalidade do DirectWrite API, a camada de renderização de glifos.
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, este processo é chamado de composição do glifo. Isso também pode ser feito na direção oposta, um único glifo sendo dividido em vários glifos, conhecido como decomposição do glifo.
Glifos alternativos
As 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 os glifos swash. A captura de tela a seguir mostra glifos padrão e swash para a fonte Pescadero.
Swashes e outros recursos tipográficos, incluindo glifos alternativos mais elaborados, estão disponíveis através OpenType. Os recursos tipográficos 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.
Corridas de glifos
Uma execução de glifo representa um conjunto contíguo de glifos que têm a mesma face e tamanho de fonte, bem como o mesmo efeito de desenho do cliente, se houver. O sublinhado e o 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 de classificação de fontes que o Windows Presentation Foundation (WPF), portanto, pode haver várias fontes físicas por cada família de fontes. Uma face de fonte, como a interface IDWriteFontFace no DirectWrite, representa uma fonte física, com um peso, inclinação e alongamento específicos. Ele contém o tipo de rosto da fonte, referências de arquivo apropriadas, dados de identificação facial e vários dados de fonte, como métricas, nomes e contornos de glifo.
O IDWriteFontFace pode ser criado diretamente a partir de um nome de fonte ou obtido de uma coleção de fontes.
Métricas do glifo
Os glifos individuais têm métricas associadas a eles. Você pode obter as métricas para todos os glifos em uma execução de glifo usando o IDWriteFontFace::GetDesignGlyphMetrics método. Isso retorna uma estrutura DWRITE_GLYPH_METRICS que tem a largura de avanço, o rolamento do lado esquerdo e direito, o rolamento lateral superior e inferior, a altura e a origem vertical da linha de base.
O diagrama a seguir mostra várias métricas de dois caracteres de glifo diferentes.
Desenhando uma corrida de glifo
Ao implementar um renderizador de texto personalizado, a renderização de glifos é manipulada 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 que é passada para DrawGlyphRun contém um objeto IDWriteFontFace, chamado fontFace, que representa a face da fonte para toda a execução do glifo.
O objeto IDWriteFontFace também fornece o GetGlyphRunOutline método, que calcula os contornos do glifo usando um retorno de chamada de 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.