Struttura LOGFONTW (wingdi.h)

La struttura LOGFONT definisce gli attributi di un tipo di carattere.

Sintassi

typedef struct tagLOGFONTW {
  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;
  WCHAR lfFaceName[LF_FACESIZE];
} LOGFONTW, *PLOGFONTW, *NPLOGFONTW, *LPLOGFONTW;

Members

lfHeight

Altezza, in unità logiche, della cella o del carattere del carattere del tipo di carattere. Il valore di altezza del carattere (noto anche come altezza em) è il valore di altezza della cella di caratteri meno il valore iniziale interno. Il mapper del tipo di carattere interpreta il valore specificato in lfHeight nel modo seguente.

Valore Significato
> 0 Il mapper del tipo di carattere trasforma questo valore in unità dispositivo e lo confronta con l'altezza della cella dei tipi di carattere disponibili.
0 Il mapper del tipo di carattere usa un valore di altezza predefinito quando cerca una corrispondenza.
< 0 Il mapper del tipo di carattere trasforma questo valore in unità dispositivo e corrisponde al valore assoluto rispetto all'altezza del carattere dei tipi di carattere disponibili.
 

Per tutti i confronti di altezza, il mapper cerca il tipo di carattere più grande che non supera le dimensioni richieste.

Questo mapping si verifica quando il tipo di carattere viene utilizzato per la prima volta.

Per la modalità di mapping MM_TEXT, è possibile utilizzare la formula seguente per specificare un'altezza per un tipo di carattere con una dimensione del punto specificata:


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

lfWidth

Larghezza media, in unità logiche, di caratteri nel tipo di carattere. Se lfWidth è zero, le proporzioni del dispositivo vengono confrontate con le proporzioni di digitalizzazione dei tipi di carattere disponibili per trovare la corrispondenza più vicina, determinata dal valore assoluto della differenza.

lfEscapement

Angolo, espresso in decimi di gradi, tra il vettore di escape e l'asse x del dispositivo. Il vettore di escape è parallelo alla riga di base di una riga di testo.

Quando la modalità grafica è impostata su GM_ADVANCED, è possibile specificare l'angolo di escape della stringa indipendentemente dall'angolo di orientamento dei caratteri della stringa.

Quando la modalità grafica è impostata su GM_COMPATIBLE, lfEscapement specifica sia l'escape che l'orientamento. È necessario impostare lfEscapement e lfOrientation sullo stesso valore.

lfOrientation

Angolo, espresso in decimi di gradi, tra la linea di base di ogni carattere e l'asse x del dispositivo.

lfWeight

Spessore del tipo di carattere compreso nell'intervallo compreso tra 0 e 1000. Ad esempio, 400 è normale e 700 è grassetto. Se questo valore è zero, viene usato un peso predefinito.

Per praticità, vengono definiti i valori seguenti.

Valore 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

Tipo di carattere corsivo se impostato su TRUE.

lfUnderline

Carattere sottolineato se impostato su TRUE.

lfStrikeOut

Tipo di carattere barrato se impostato su TRUE.

lfCharSet

Set di caratteri. I valori seguenti sono predefiniti:

  • 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
Edizione in lingua coreana di Windows:
  • JOHAB_CHARSET
Edizione del linguaggio Medio Oriente di Windows:
  • ARABIC_CHARSET
  • HEBREW_CHARSET
Edizione in lingua thai di Windows:
  • THAI_CHARSET
Il valore OEM_CHARSET specifica un set di caratteri dipendente dal sistema operativo.

DEFAULT_CHARSET è impostato su un valore basato sulle impostazioni locali di sistema correnti. Ad esempio, quando le impostazioni locali del sistema sono inglese (Stati Uniti), viene impostata come ANSI_CHARSET.

I tipi di carattere con altri set di caratteri possono esistere nel sistema operativo. Se un'applicazione utilizza un tipo di carattere con un set di caratteri sconosciuto, non deve tentare di tradurre o interpretare stringhe di cui viene eseguito il rendering con tale tipo di carattere.

Questo parametro è importante nel processo di mapping dei caratteri. Per garantire risultati coerenti durante la creazione di un tipo di carattere, non specificare OEM_CHARSET o DEFAULT_CHARSET. Se si specifica un nome di tipoface nel membro lfFaceName , assicurarsi che il valore lfCharSet corrisponda al set di caratteri del carattere specificato in lfFaceName.

lfOutPrecision

Precisione dell'output. La precisione di output definisce il modo in cui l'output deve corrispondere all'altezza, alla larghezza, all'orientamento del carattere, all'orientamento del carattere, all'escape, al passo e al tipo di carattere richiesto. Può essere uno dei valori seguenti.

Valore Significato
OUT_CHARACTER_PRECIS Non usato.
OUT_DEFAULT_PRECIS Specifica il comportamento predefinito del mapper del tipo di carattere.
OUT_DEVICE_PRECIS Indica al mapper del tipo di carattere di scegliere un tipo di carattere Dispositivo quando il sistema contiene più tipi di carattere con lo stesso nome.
OUT_OUTLINE_PRECIS Questo valore indica al mapper di carattere di scegliere tra TrueType e altri tipi di carattere basati su struttura.
OUT_PS_ONLY_PRECIS Indica al mapper di carattere di scegliere solo tipi di carattere PostScript. Se nel sistema non sono installati tipi di carattere PostScript, il mapper del tipo di carattere restituisce il comportamento predefinito.
OUT_RASTER_PRECIS Indica al mapper di carattere di scegliere un tipo di carattere raster quando il sistema contiene più tipi di carattere con lo stesso nome.
OUT_STRING_PRECIS Questo valore non viene usato dal mapper del tipo di carattere, ma viene restituito quando vengono enumerati i tipi di carattere raster.
OUT_STROKE_PRECIS Questo valore non viene usato dal mapper del tipo di carattere, ma viene restituito quando TrueType, altri tipi di carattere basati su struttura e i tipi di carattere vettoriale vengono enumerati.
OUT_TT_ONLY_PRECIS Indica al mapper di carattere di scegliere solo tipi di carattere TrueType. Se nel sistema non sono installati tipi di carattere TrueType, il mapper del tipo di carattere restituisce il comportamento predefinito.
OUT_TT_PRECIS Indica al mapper del tipo di carattere di scegliere un tipo di carattere TrueType quando il sistema contiene più tipi di carattere con lo stesso nome.
 

Le applicazioni possono usare i valori OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, OUT_TT_PRECIS e OUT_PS_ONLY_PRECIS per controllare il modo in cui il mapper del tipo di carattere sceglie un tipo di carattere quando il sistema operativo contiene più tipi di carattere con un nome specificato. Ad esempio, se un sistema operativo contiene un tipo di carattere denominato Symbol nel modulo raster e TrueType, specificando OUT_TT_PRECIS forza il mapper del tipo di carattere per scegliere la versione TrueType. Specificando OUT_TT_ONLY_PRECIS forza il mapper del tipo di carattere a scegliere un tipo di carattere TrueType, anche se deve sostituire un carattere TrueType di un altro nome.

lfClipPrecision

Precisione di ritaglio. La precisione di ritaglio definisce come ritagliare i caratteri parzialmente esterni all'area di ritaglio. Può essere uno o più dei valori seguenti.

Per altre informazioni sull'orientamento dei sistemi di coordinate, vedere la descrizione del parametro nOrientation .

Valore Significato
CLIP_CHARACTER_PRECIS Non usato.
CLIP_DEFAULT_PRECIS Specifica il comportamento predefinito di ritaglio.
CLIP_DFA_DISABLE Windows XP SP1: Disattiva l'associazione dei tipi di carattere per il tipo di carattere. Si noti che questo flag non è garantito avere alcun effetto su qualsiasi piattaforma dopo Windows Server 2003.
CLIP_EMBEDDED È necessario specificare questo flag per usare un tipo di carattere di sola lettura incorporato.
CLIP_LH_ANGLES Quando viene usato questo valore, la rotazione per tutti i tipi di carattere dipende dal fatto che l'orientamento del sistema di coordinate sia sinistro o destro. Se non viene usato, i tipi di carattere del dispositivo ruotano sempre in senso antiorario, ma la rotazione di altri tipi di carattere dipende dall'orientamento del sistema di coordinate.
CLIP_MASK Non usato.
CLIP_DFA_OVERRIDE Disattiva l'associazione dei tipi di carattere per il tipo di carattere. Questo è identico a CLIP_DFA_DISABLE, ma può avere problemi in alcune situazioni; il flag consigliato da usare è CLIP_DFA_DISABLE.
CLIP_STROKE_PRECIS Non usato dal mapper del tipo di carattere, ma viene restituito quando vengono enumerati i tipi di carattere raster, vector o TrueType. Per la compatibilità, questo valore viene sempre restituito durante l'enumerazione dei tipi di carattere.
CLIP_TT_ALWAYS Non usato.

lfQuality

Qualità dell'output. La qualità dell'output definisce la modalità con cui l'interfaccia del dispositivo grafico (GDI) deve tentare di corrispondere agli attributi del tipo di carattere logico a quelli di un carattere fisico effettivo. Può essere uno dei valori seguenti.

Valore Significato
ANTIALIASED_QUALITY Il carattere è sempre antialiased se il carattere lo supporta e le dimensioni del carattere non sono troppo piccole o troppo grandi.
CLEARTYPE_QUALITY Se impostato, il testo viene eseguito (quando possibile) usando il metodo antialiasing ClearType. Per ulteriori informazioni, vedere la sezione Osservazioni.
DEFAULT_QUALITY L'aspetto del tipo di carattere non è importante.
DRAFT_QUALITY L'aspetto del tipo di carattere è meno importante di quando viene usato PROOF_QUALITY. Per i tipi di carattere raster GDI, la scalabilità è abilitata, il che significa che sono disponibili più dimensioni dei tipi di carattere, ma la qualità potrebbe essere inferiore. I tipi di carattere grassetto, corsivo, sottolineatura e strikeout vengono sintetizzati se necessario.
NONANTIALIASED_QUALITY Il carattere non è mai antialiased.
PROOF_QUALITY La qualità dei caratteri del tipo di carattere è più importante della corrispondenza esatta degli attributi del tipo di carattere logico. Per i tipi di carattere raster GDI, il ridimensionamento è disabilitato e viene scelto il tipo di carattere più vicino alle dimensioni. Anche se la dimensione del carattere scelta potrebbe non essere mappata esattamente quando viene usata PROOF_QUALITY, la qualità del tipo di carattere è elevata e non esiste alcuna distorsione dell'aspetto. I tipi di carattere grassetto, corsivo, sottolineatura e strikeout vengono sintetizzati se necessario.
 

Se non viene selezionato né ANTIALIASED_QUALITY né NONANTIALIASED_QUALITY, il tipo di carattere viene antialiasato solo se l'utente sceglie tipi di carattere dello schermo uniforme in Pannello di controllo.

lfPitchAndFamily

Il campo e la famiglia del tipo di carattere. I due bit a basso ordine specificano il passo del tipo di carattere e possono essere uno dei valori seguenti.

  • DEFAULT_PITCH
  • FIXED_PITCH
  • VARIABLE_PITCH
Bit da 4 a 7 del membro specificano la famiglia di caratteri e possono essere uno dei valori seguenti.
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
Il valore appropriato può essere ottenuto usando l'operatore OR bit per bit (|) per aggiungere una costante di passo a una costante della famiglia.

Le famiglie di caratteri descrivono l'aspetto di un carattere in modo generale. Sono destinati a specificare i tipi di carattere quando l'esatto carattere di tipo desiderato non è disponibile. I valori per le famiglie di caratteri sono i seguenti.

Valore Significato
FF_DECORATIVE Tipi di carattere novità. Un esempio è Old English.
FF_DONTCARE Usare il tipo di carattere predefinito.
FF_MODERN Tipi di carattere con larghezza del tratto costante (monospace), con o senza serifs. I tipi di carattere Monospace sono in genere moderni. Pica, Elite e CourierNew sono esempi.
FF_ROMAN Tipi di carattere con larghezza del tratto variabile (proporzionale) e con serifs. Un esempio è MS Serif.
FF_SCRIPT Tipi di carattere progettati per essere simili alla grafia. Esempi sono Script e Cursive.
FF_SWISS Tipi di carattere con larghezza del tratto variabile (proporzionale) e senza serifs. Un esempio è MS Sans Serif.

lfFaceName[LF_FACESIZE]

Stringa con terminazione Null che specifica il nome del carattere. La lunghezza di questa stringa non deve superare i 32 valori TCHAR , inclusi i valori NULL terminanti. La funzione EnumFontFamiliesEx può essere usata per enumerare i nomi di carattere tipizzato di tutti i tipi di carattere attualmente disponibili. Se lfFaceName è una stringa vuota, GDI usa il primo tipo di carattere corrispondente agli altri attributi specificati.

Commenti

Le situazioni seguenti non supportano l'antialiasing ClearType:

  • Il rendering del testo viene eseguito su una stampante.
  • Visualizzazione impostata per 256 colori o meno.
  • Il rendering del testo viene eseguito in un client del server terminale.
  • Il carattere non è un carattere TrueType o un tipo di carattere OpenType con contorni TrueType. Ad esempio, le seguenti non supportano l'antialiasing ClearType: tipi di carattere 1, tipi di carattere OpenType postscript senza contorni TrueType, tipi di carattere bitmap, tipi di carattere vettoriale e tipi di carattere del dispositivo.
  • Il tipo di carattere ha ottimizzato le bitmap incorporate, per qualsiasi dimensione del tipo di carattere che contiene le bitmap incorporate. Ad esempio, questo si verifica comunemente nei tipi di carattere asiatici orientali.

Nota

L'intestazione wingdi.h definisce LOGFONT come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

   
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Intestazione wingdi.h (include Windows.h)

Vedi anche

CreateFont

CreateFontIndirect

EnumFontFamiliesEx

Strutture carattere e testo

Panoramica dei tipi di carattere e del testo