Estrutura LOGFONTA (wingdi.h)

A estrutura LOGFONT define os atributos de uma fonte.

Sintaxe

typedef struct tagLOGFONTA {
  LONG lfHeight;
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;

Membros

lfHeight

A altura, em unidades lógicas, da célula ou do caractere do caractere da fonte. O valor de altura do caractere (também conhecido como altura em) é o valor de altura da célula do caractere menos o valor de liderança interna. O mapeador de fontes interpreta o valor especificado em lfHeight da maneira a seguir.

Valor Significado
> 0 O mapeador de fonte transforma esse valor em unidades de dispositivo e o corresponde à altura da célula das fontes disponíveis.
0 O mapeador de fontes usa um valor de altura padrão quando procura uma correspondência.
< 0 O mapeador de fonte transforma esse valor em unidades de dispositivo e corresponde ao seu valor absoluto em relação à altura do caractere das fontes disponíveis.
 

Para todas as comparações de altura, o mapeador de fonte procura a maior fonte que não excede o tamanho solicitado.

Esse mapeamento ocorre quando a fonte é usada pela primeira vez.

Para o modo de mapeamento de MM_TEXT, você pode usar a seguinte fórmula para especificar uma altura para uma fonte com um tamanho de ponto especificado:


lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth

A largura média, em unidades lógicas, de caracteres na fonte. Se lfWidth for zero, a taxa de proporção do dispositivo será correspondida com a taxa de proporção de digitalização das fontes disponíveis para encontrar a correspondência mais próxima, determinada pelo valor absoluto da diferença.

lfEscapement

O ângulo, em décimos de graus, entre o vetor de escape e o eixo x do dispositivo. O vetor de escape é paralelo à linha base de uma linha de texto.

Quando o modo gráfico é definido como GM_ADVANCED, você pode especificar o ângulo de escape da cadeia de caracteres independentemente do ângulo de orientação dos caracteres da cadeia de caracteres.

Quando o modo gráfico é definido como GM_COMPATIBLE, lfEscapement especifica o escape e a orientação. Você deve definir lfEscapement e lfOrientation com o mesmo valor.

lfOrientation

O ângulo, em décimos de graus, entre a linha base de cada caractere e o eixo x do dispositivo.

lfWeight

O peso da fonte no intervalo de 0 a 1000. Por exemplo, 400 é normal e 700 está em negrito. Se esse valor for zero, um peso padrão será usado.

Os valores a seguir são definidos para conveniência.

Valor Peso
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900

lfItalic

Uma fonte itálica se definida como TRUE.

lfUnderline

Uma fonte sublinhada se definida como TRUE.

lfStrikeOut

Uma fonte strikeout se definida como TRUE.

lfCharSet

O conjunto de caracteres. Os seguintes valores são predefinidos:

  • ANSI_CHARSET
  • BALTIC_CHARSET
  • CHINESEBIG5_CHARSET
  • DEFAULT_CHARSET
  • EASTEUROPE_CHARSET
  • GB2312_CHARSET
  • GREEK_CHARSET
  • HANGUL_CHARSET
  • MAC_CHARSET
  • OEM_CHARSET
  • RUSSIAN_CHARSET
  • SHIFTJIS_CHARSET
  • SYMBOL_CHARSET
  • TURKISH_CHARSET
  • VIETNAMESE_CHARSET
Edição em idioma coreano do Windows:
  • JOHAB_CHARSET
Edição de idioma do Oriente Médio do Windows:
  • ARABIC_CHARSET
  • HEBREW_CHARSET
Edição em idioma tailandês do Windows:
  • THAI_CHARSET
O valor OEM_CHARSET especifica um conjunto de caracteres dependente do sistema operacional.

DEFAULT_CHARSET é definido como um valor com base na localidade atual do sistema. Por exemplo, quando a localidade do sistema é inglês (Estados Unidos), ela é definida como ANSI_CHARSET.

Fontes com outros conjuntos de caracteres podem existir no sistema operacional. Se um aplicativo usa uma fonte com um conjunto de caracteres desconhecido, ele não deve tentar traduzir ou interpretar cadeias de caracteres que são renderizadas com essa fonte.

Esse parâmetro é importante no processo de mapeamento de fonte. Para garantir resultados consistentes ao criar uma fonte, não especifique OEM_CHARSET ou DEFAULT_CHARSET. Se você especificar um nome de face de tipo no membro lfFaceName , verifique se o valor lfCharSet corresponde ao conjunto de caracteres da face de tipo especificado em lfFaceName.

lfOutPrecision

A precisão de saída. A precisão de saída define a proximidade com que a saída deve corresponder à altura, largura, orientação do caractere, escape, tom e tipo de fonte da fonte solicitada. Pode ser um dos seguintes valores.

Valor Significado
OUT_CHARACTER_PRECIS Não usado.
OUT_DEFAULT_PRECIS Especifica o comportamento padrão do mapeador de fontes.
OUT_DEVICE_PRECIS Instrui o mapeador de fontes a escolher uma fonte de dispositivo quando o sistema contiver várias fontes com o mesmo nome.
OUT_OUTLINE_PRECIS Esse valor instrui o mapeador de fontes a escolher entre TrueType e outras fontes baseadas em estrutura de tópicos.
OUT_PS_ONLY_PRECIS Instrui o mapeador de fontes a escolher somente fontes PostScript. Se não houver fontes PostScript instaladas no sistema, o mapeador de fontes retornará ao comportamento padrão.
OUT_RASTER_PRECIS Instrui o mapeador de fontes a escolher uma fonte de varredura quando o sistema contiver várias fontes com o mesmo nome.
OUT_STRING_PRECIS Esse valor não é usado pelo mapeador de fontes, mas é retornado quando fontes de varredura são enumeradas.
OUT_STROKE_PRECIS Esse valor não é usado pelo mapeador de fontes, mas é retornado quando TrueType, outras fontes baseadas em estrutura de tópicos e fontes de vetor são enumeradas.
OUT_TT_ONLY_PRECIS Instrui o mapeador de fontes a escolher somente fontes TrueType. Se não houver fontes TrueType instaladas no sistema, o mapeador de fontes retornará ao comportamento padrão.
OUT_TT_PRECIS Instrui o mapeador de fontes a escolher uma fonte TrueType quando o sistema contiver várias fontes com o mesmo nome.
 

Os aplicativos podem usar os valores OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, OUT_TT_PRECIS e OUT_PS_ONLY_PRECIS para controlar como o mapeador de fontes escolhe uma fonte quando o sistema operacional contém mais de uma fonte com um nome especificado. Por exemplo, se um sistema operacional contiver uma fonte chamada Symbol no formato raster e TrueType, especificar OUT_TT_PRECIS forçará o mapeador de fontes a escolher a versão TrueType. Especificar OUT_TT_ONLY_PRECIS força o mapeador de fontes a escolher uma fonte TrueType, mesmo que ele precise substituir uma fonte TrueType de outro nome.

lfClipPrecision

A precisão de recorte. A precisão de recorte define como cortar caracteres que estão parcialmente fora da área de recorte. Pode ser um ou mais dos valores a seguir.

Para obter mais informações sobre a orientação dos sistemas de coordenadas, consulte a descrição do parâmetro nOrientation .

Valor Significado
CLIP_CHARACTER_PRECIS Não usado.
CLIP_DEFAULT_PRECIS Especifica o comportamento de recorte padrão.
CLIP_DFA_DISABLE Windows XP SP1: Desativa a associação de fonte para a fonte. Observe que não há garantia de que esse sinalizador tenha qualquer efeito em nenhuma plataforma após o Windows Server 2003.
CLIP_EMBEDDED Você deve especificar esse sinalizador para usar uma fonte somente leitura inserida.
CLIP_LH_ANGLES Quando esse valor é usado, a rotação para todas as fontes depende se a orientação do sistema de coordenadas é canhota ou destro. Se não forem usadas, as fontes do dispositivo sempre girarão no sentido anti-horário, mas a rotação de outras fontes dependerá da orientação do sistema de coordenadas.
CLIP_MASK Não usado.
CLIP_DFA_OVERRIDE Desativa a associação de fonte para a fonte. Isso é idêntico a CLIP_DFA_DISABLE, mas pode ter problemas em algumas situações; o sinalizador recomendado a ser usado é CLIP_DFA_DISABLE.
CLIP_STROKE_PRECIS Não é usado pelo mapeador de fontes, mas é retornado quando fontes raster, vector ou TrueType são enumeradas. Para compatibilidade, esse valor sempre é retornado ao enumerar fontes.
CLIP_TT_ALWAYS Não usado.

lfQuality

A qualidade da saída. A qualidade de saída define com que cuidado a GDI (interface de dispositivo gráfico) deve tentar corresponder os atributos de fonte lógica aos de uma fonte física real. Pode ser um dos seguintes valores.

Valor Significado
ANTIALIASED_QUALITY A fonte sempre será suavizada se a fonte der suporte a ela e o tamanho da fonte não for muito pequeno ou muito grande.
CLEARTYPE_QUALITY Se definido, o texto será renderizado (quando possível) usando o método de suavização ClearType. Confira Comentários para obter mais informações.
DEFAULT_QUALITY A aparência da fonte não importa.
DRAFT_QUALITY A aparência da fonte é menos importante do que quando PROOF_QUALITY é usado. Para fontes de varredura GDI, o dimensionamento está habilitado, o que significa que mais tamanhos de fonte estão disponíveis, mas a qualidade pode ser menor. As fontes negrito, itálico, sublinhado e strikeout são sintetizadas, se necessário.
NONANTIALIASED_QUALITY A fonte nunca é suavizada.
PROOF_QUALITY A qualidade do caractere da fonte é mais importante do que a correspondência exata dos atributos de fonte lógica. Para fontes de varredura GDI, o dimensionamento é desabilitado e a fonte mais próxima do tamanho é escolhida. Embora o tamanho da fonte escolhido possa não ser mapeado exatamente quando PROOF_QUALITY é usado, a qualidade da fonte é alta e não há distorção de aparência. As fontes negrito, itálico, sublinhado e strikeout são sintetizadas, se necessário.
 

Se nem ANTIALIASED_QUALITY nem NONANTIALIASED_QUALITY estiverem selecionados, a fonte será suavizada somente se o usuário escolher fontes de tela suave em Painel de Controle.

lfPitchAndFamily

O pitch e a família da fonte. Os dois bits de ordem baixa especificam a inclinação da fonte e podem ser um dos valores a seguir.

  • DEFAULT_PITCH
  • FIXED_PITCH
  • VARIABLE_PITCH
Os bits 4 a 7 do membro especificam a família de fontes e podem ser um dos valores a seguir.
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
O valor adequado pode ser obtido usando o operador OR booliano para unir uma constante de tom com uma constante familiar.

Famílias de fontes descrevem a aparência de uma fonte de maneira geral. Elas destinam-se a especificar fontes quando a face de tipo exata desejada não estiver disponível. Os valores para famílias de fontes são os seguintes.

Valor Significado
FF_DECORATIVE Fontes de novidade. O inglês antigo é um exemplo.
FF_DONTCARE Use a fonte padrão.
FF_MODERN Fontes com largura de traço constante (monospace), com ou sem serifs. As fontes de monospace geralmente são modernas. Pica, Elite e CourierNew são exemplos.
FF_ROMAN Fontes com largura de traço variável (proporcional) e com serifs. MS Serif é um exemplo.
FF_SCRIPT Fontes projetadas para se parecerem com manuscrito. Script e Cursive são exemplos.
FF_SWISS Fontes com largura de traço variável (proporcional) e sem serifs. MS Sans Serif é um exemplo.

lfFaceName[LF_FACESIZE]

Uma cadeia de caracteres terminada em nulo que especifica o nome da face de tipo da fonte. O comprimento dessa cadeia de caracteres não deve exceder 32 valores de TCHAR , incluindo o NULL de terminação. A função EnumFontFamiliesEx pode ser usada para enumerar os nomes de tipo de todas as fontes disponíveis no momento. Se lfFaceName for uma cadeia de caracteres vazia, a GDI usará a primeira fonte que corresponde aos outros atributos especificados.

Comentários

As seguintes situações não dão suporte à suavização ClearType:

  • O texto é renderizado em uma impressora.
  • Conjunto de exibição para 256 cores ou menos.
  • O texto é renderizado para um cliente de servidor de terminal.
  • A fonte não é uma fonte TrueType ou uma fonte OpenType com estruturas de tópicos TrueType. Por exemplo, o seguinte não dá suporte à suavização ClearType: fontes tipo 1, fontes OpenType postscript sem estruturas de tópicos TrueType, fontes de bitmap, fontes de vetor e fontes de dispositivo.
  • A fonte ajustou bitmaps inseridos para qualquer tamanho de fonte que contenha os bitmaps inseridos. Por exemplo, isso ocorre normalmente em fontes do Leste Asiático.

Observação

O cabeçalho wingdi.h define LOGFONT 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

   
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Cabeçalho wingdi.h (inclua Windows.h)

Confira também

Createfont

Createfontindirect

Enumfontfamiliesex

Estruturas de fonte e texto

Visão geral de fontes e texto