ich versuche seit einiger Zeit, Fonts gezielt in Formularen einzusetzen. Dabei komme ich an einem Punkt nicht mehr weiter und auch die entsprechenden Hilfe-Einträge haben mir keine Lösung gebracht.
Im Prinzip geht es einerseits darum, in einem Formular verschiedene Schriftgrößen einzusetzen (z.B. für Überschriften). Das kriege ich hin. Aber ich wollte auch unabhängig davon sein, welche Fonts auf dem Rechner installiert sind (im Prinzip geht es dabei auch darum, dass man ein Stück weit unabhängig vom Betriebssystem wird). Habe ich mir also einen OpenSource-Font (DejaVu) runtergeladen und ins Verzeichnis meines kleines Testprogramms gepackt. Er wird auch mit RegisterFont registriert und dann mit LoadFont ohne Fehler verwendet... aber er bewirkt nix. In der Anzeige sehe ich meiner Meinung nach immer, dass letztlich die Systemschrift verwendet wird.
Ich vermute, das liegt am Font-Mapper von Windows (ich arbeite auf Win10/64bit). Aber ich habe keine Peilung, was ich falsch mache. Bitte schaut euch das mal an.
Hier mein Code:
Code: Alles auswählen
OpenWindow(#PB_Any, 0, 0, 300, 200, "Font ändern", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
ButtonGadget(0, 10,150, 100, 20, "Font ändern")
#AKTUELLER_FONT = 0
FontGroesse.i = 10
Groesser.i = #True
If RegisterFontFile("DejaVuSerif.ttf")
Debug "Font wurde registriert."
EndIf
LoadFont(#AKTUELLER_FONT, "Arial", 10)
TextGadget(1, 10,10, 280, 180, "Beispieltext")
SetGadgetFont(1, FontID(#AKTUELLER_FONT))
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If Groesser = #True
If FontGroesse > 50
Groesser = #False
EndIf
FontGroesse = FontGroesse + 10
Else ; Groesser ist nicht True
If FontGroesse < 20
Groesser = #True
EndIf
FontGroesse = FontGroesse - 10
EndIf
LoadFont(#AKTUELLER_FONT, "Arial", FontGroesse)
SetGadgetFont(1,FontID(#AKTUELLER_FONT))
Debug GetGadgetFont(0)
EndIf
Until Event = #PB_Event_CloseWindow