ich verwende schon lange nicht mehr LoadFont(), genau aus den genannten Gründen...
Code: Alles auswählen
; Lädt eine Font mit ClearTyp
Procedure LoadClearTypeFont(Name$, Size.i, Style=0)
Protected LogFont.LOGFONT
With LogFont
\lfHeight = -Size
\lfWidth = 0
\lfEscapement = 0
\lfOrientation = 0
If Style & #PB_Font_Bold : \lfWeight = 700 : Else : \lfWeight = 400 : EndIf
If Style & #PB_Font_Italic : \lfItalic = #True : Else : \lfItalic = #False : EndIf
If Style & #PB_Font_Underline : \lfUnderline = #True : Else : \lfUnderline = #False : EndIf
If Style & #PB_Font_StrikeOut : \lfStrikeOut = #True : Else : \lfStrikeOut = #False : EndIf
\lfCharSet = #DEFAULT_CHARSET
\lfOutPrecision = #OUT_DEFAULT_PRECIS
\lfClipPrecision = #CLIP_DEFAULT_PRECIS
\lfQuality = #CLEARTYPE_QUALITY
\lfPitchAndFamily = #DEFAULT_PITCH | #FF_DONTCARE
PokeS(@\lfFaceName[0], Name$)
EndWith
ProcedureReturn CreateFontIndirect_(@LogFont)
EndProcedure
Das - bei Size ist da, damit die Schift wirklich die Höhe in Pixel hat.
Auch ist dort ClearType aktiviert.
Wo ich noch zustimmen kann ist, das man sich von vorn herein eine "Sprite3D"-Font bastelt.
(Diese Thema hatten wir ja auch schon)
Dank dem ClipSprite3D aus dem englischen Forum, kann man blitzschnell große Texte darstellen und braucht dafür nur ein Sprite, welches die Zeichen enthält.
Dort kann man zusätzlich noch Font nehmen die "mehr Style" haben.