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 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 glifos de lavagem. 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 por meio do OpenType. Os recursos de digitação OpenType podem ser aplicados a um intervalo de texto usando 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 WPF (Windows Pesentation Foundation), para que possa haver várias fontes físicas por cada família de fontes. Uma face de fonte, como a interface IDWriteFontFace em DirectWrite, representa uma fonte física, com um peso, inclinação e alongamento específicos. Ele contém o tipo de face da fonte, as referências de arquivo apropriadas, os 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 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 para todos os glifos em um glifo executado 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 superior e inferior lateral, 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.
Desenhar 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 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 método GetGlyphRunOutline, que calcula os contornos do glifo usando um retorno de chamada especificado do coletor de geometria, como ID2D1SimplifiedGeometrySink ao renderizar com Direct2D.
Para obter mais informações, consulte o tópico Como implementar um renderizador de texto personalizado .