Das mit dem Shiften der Bits ist schon richtig so, der Wert für PitchAndFamily ist bei mir aber in der Tat ebenfalls immer 0. Der für CharSet hat bei mir aber die korrekten Werte.
Jedenfalls fehlt da vor GetHandle noch:
FillChar(LogFont, SizeOf(LogFont), 0);
Und das CharSet habe ich um Testen in einem TFontDialog jeweils umgestellt und so dann stets korrekt bekommen:
Delphi-Quellcode:
case LogFont.lfCharSet of
ANSI_CHARSET: neucharset := 'ANSI_CHARSET';
BALTIC_CHARSET: neucharset := 'BALTIC_CHARSET';
CHINESEBIG5_CHARSET: neucharset := 'CHINESEBIG5_CHARSET';
DEFAULT_CHARSET: neucharset := 'DEFAULT_CHARSET';
EASTEUROPE_CHARSET: neucharset := 'EASTEUROPE_CHARSET';
GB2312_CHARSET: neucharset := 'GB2312_CHARSET';
GREEK_CHARSET: neucharset := 'GREEK_CHARSET';
MAC_CHARSET: neucharset := 'MAC_CHARSET';
OEM_CHARSET: neucharset := 'OEM_CHARSET';
RUSSIAN_CHARSET: neucharset := 'RUSSIAN_CHARSET';
SHIFTJIS_CHARSET: neucharset := 'SHIFTJIS_CHARSET';
SYMBOL_CHARSET: neucharset := 'SYMBOL_CHARSET';
TURKISH_CHARSET: neucharset := 'TURKISH_CHARSET';
VIETNAMESE_CHARSET: neucharset := 'VIETNAMESE_CHARSET';
JOHAB_CHARSET: neucharset := 'JOHAB_CHARSET';
ARABIC_CHARSET: neucharset := 'ARABIC_CHARSET';
HEBREW_CHARSET: neucharset := 'HEBREW_CHARSET';
THAI_CHARSET: neucharset := 'THAI_CHARSET';
else
neucharset := '\fcharset' + IntToStr(LogFont.lfCharset) + ' ';
end;