Função GetGlyphOutlineA (wingdi.h)

A função GetGlyphOutline recupera a estrutura de tópicos ou o bitmap de um caractere na fonte TrueType selecionada no contexto do dispositivo especificado.

Sintaxe

DWORD GetGlyphOutlineA(
  [in]  HDC            hdc,
  [in]  UINT           uChar,
  [in]  UINT           fuFormat,
  [out] LPGLYPHMETRICS lpgm,
  [in]  DWORD          cjBuffer,
  [out] LPVOID         pvBuffer,
  [in]  const MAT2     *lpmat2
);

Parâmetros

[in] hdc

Um identificador para o contexto do dispositivo.

[in] uChar

O caractere para o qual os dados devem ser retornados.

[in] fuFormat

O formato dos dados que a função recupera. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
GGO_BEZIER
A função recupera os dados de curva como uma spline Bézier cúbica (não no formato de spline quadrático).
GGO_BITMAP
A função recupera o bitmap de glifo. Para obter informações sobre alocação de memória, consulte a seção Comentários a seguir.
GGO_GLYPH_INDEX
Indica que o parâmetro uChar é um Índice de Glifo TrueType em vez de um código de caractere. Consulte a função ExtTextOut para obter comentários adicionais sobre indexação de glifo.
GGO_GRAY2_BITMAP
A função recupera um bitmap de glifo que contém cinco níveis de cinza.
GGO_GRAY4_BITMAP
A função recupera um bitmap de glifo que contém 17 níveis de cinza.
GGO_GRAY8_BITMAP
A função recupera um bitmap de glifo que contém 65 níveis de cinza.
GGO_METRICS
A função recupera apenas a estrutura GLYPHMETRICS especificada pelo glp. O lpvBuffer é ignorado. Esse valor afeta o significado do valor retornado da função após a falha; consulte a seção Valores retornados.
GGO_NATIVE
A função recupera os pontos de dados de curva no formato nativo do rasterizador e usa as unidades de design da fonte.
GGO_UNHINTED
A função retorna apenas estruturas de tópicos não ofuscadas. Esse sinalizador só funciona em conjunto com GGO_BEZIER e GGO_NATIVE.
 

Observe que, para os valores GGO_GRAYn_BITMAP, a função recupera um bitmap de glifo que contém níveis n^2+1 (n quadrado mais um) de cinza.

[out] lpgm

Um ponteiro para a estrutura GLYPHMETRICS que descreve o posicionamento do glifo na célula de caracteres.

[in] cjBuffer

O tamanho, em bytes, do buffer (*lpvBuffer) em que a função deve copiar informações sobre o caractere de estrutura de tópicos. Se esse valor for zero, a função retornará o tamanho necessário do buffer.

[out] pvBuffer

Um ponteiro para o buffer que recebe informações sobre o caractere de estrutura de tópicos. Se esse valor for NULL, a função retornará o tamanho necessário do buffer.

[in] lpmat2

Um ponteiro para uma estrutura MAT2 que especifica uma matriz de transformação para o caractere.

Retornar valor

Se GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP ou GGO_NATIVE for especificado e a função for bem-sucedida, o valor retornado será maior que zero; caso contrário, o valor retornado será GDI_ERROR. Se um desses sinalizadores for especificado e o tamanho ou endereço do buffer for zero, o valor retornado especificará o tamanho do buffer necessário, em bytes.

Se GGO_METRICS for especificado e a função falhar, o valor retornado será GDI_ERROR.

Comentários

A estrutura de tópicos do glifo retornada pela função GetGlyphOutline é para um glifo ajustado por grade. (Um glifo ajustado em grade é um glifo que foi modificado para que sua imagem bitmapped esteja em conformidade o mais próximo possível do design original do glifo.) Se um aplicativo precisar de uma estrutura de tópicos de glifo não modificada, ele poderá solicitar a estrutura de tópicos do glifo para um caractere em uma fonte cujo tamanho seja igual à unidade em da fonte. O valor da unidade em de uma fonte é armazenado no membro otmEMSquare da estrutura OUTLINETEXTMETRIC .

O bitmap de glifo retornado por GetGlyphOutline quando GGO_BITMAP é especificado é um bitmap monocromático alinhado a DWORD, orientado a linhas. Quando GGO_GRAY2_BITMAP é especificado, o bitmap retornado é uma matriz de bytes orientada a linhas alinhada a DWORD cujos valores variam de 0 a 4. Quando GGO_GRAY4_BITMAP é especificado, o bitmap retornado é uma matriz de bytes alinhada com DWORD orientada a linhas cujos valores variam de 0 a 16. Quando GGO_GRAY8_BITMAP é especificado, o bitmap retornado é uma matriz de bytes alinhada a DWORD orientada a linhas cujos valores variam de 0 a 64.

O buffer nativo retornado por GetGlyphOutline quando GGO_NATIVE é especificado é uma estrutura de tópicos de glifo. Um contorno de glifo é retornado como uma série de um ou mais contornos definidos por uma estrutura TTPOLYGONHEADER seguida por uma ou mais curvas. Cada curva no contorno é definida por uma estrutura TTPOLYCURVE seguida por vários pontos de dados POINTFX . Pontos POINTFX são posições absolutas, não movimentos relativos. O ponto de partida de um contorno é fornecido pelo membro pfxStart da estrutura TTPOLYGONHEADER . O ponto inicial de cada curva é o último ponto da curva anterior ou o ponto inicial do contorno. A contagem de pontos de dados em uma curva é armazenada no membro cpfx da estrutura TTPOLYCURVE . O tamanho de cada contorno no buffer, em bytes, é armazenado no membro cb da estrutura TTPOLYGONHEADER . Definições de curva adicionais são empacotadas no buffer após curvas anteriores e contornos adicionais são empacotados no buffer após contornos anteriores. O buffer contém tantos contornos quanto couber dentro do buffer retornado por GetGlyphOutline.

A estrutura GLYPHMETRICS especifica a largura da célula de caracteres e o local de um glifo dentro da célula de caracteres. A origem da célula de caracteres está localizada no lado esquerdo da célula na linha de base da fonte. O local da origem do glifo é relativo à origem da célula de caractere. A altura de uma célula de caracteres, a linha de base e outras métricas globais para a fonte são fornecidas pela estrutura OUTLINETEXTMETRIC .

Um aplicativo pode alterar os caracteres recuperados em formato bitmap ou nativo especificando uma matriz de transformação 2 por 2 no parâmetro lpMatrix . Por exemplo, o glifo pode ser modificado por tesoura, rotação, dimensionamento ou qualquer combinação dos três usando multiplicação de matriz.

Informações adicionais sobre estruturas de tópicos de glifo estão localizadas nas especificações técnicas TrueType e OpenType.

Observação

O cabeçalho wingdi.h define GetGlyphOutline como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wingdi.h (inclua Windows.h)
Biblioteca Gdi32.lib
DLL Gdi32.dll

Confira também

Exttextout

FORM_INFO_1

Funções de fonte e texto

Visão geral de fontes e texto

GLIFOMÉTRICA

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

PONTO

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER