Schriftart
Schriftart
Moin,
ich möchte die Standard-Schrift durch eine andere und größere ersetzen, ich habe das Beispiel aus der Hilfe genommen aber es klappt nicht.
Hat jemand evtl. ein anderes einfach Beispiel?
Danke und einen Schönen Donnerstag
ich möchte die Standard-Schrift durch eine andere und größere ersetzen, ich habe das Beispiel aus der Hilfe genommen aber es klappt nicht.
Hat jemand evtl. ein anderes einfach Beispiel?
Danke und einen Schönen Donnerstag
Welches Beispiel aus der Hilfe funktioniert nicht?
Dieses z.B. aus der Hilfe zu LoadFont() funktioniert tadellos:
Dieses z.B. aus der Hilfe zu LoadFont() funktioniert tadellos:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 270, 160, "Loading font...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
If LoadFont(1, "Arial", 24)
SetGadgetFont(#PB_Default, FontID(1))
TextGadget(0, 10, 10, 250, 40, "Arial 24")
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Vielleicht eine fremde, nicht installierte Schriftart?
Das Problem hab ich nämlich auch, dass ich diesen Beispielcode nicht ans funktionieren kriege:
Auch wenn ich Pfade und alles anpasse, will er die Schrift einfach nicht laden, also falls wer ein beispiel hat, wie es geht, wäre ich sehr dankbar.
Das Problem hab ich nämlich auch, dass ich diesen Beispielcode nicht ans funktionieren kriege:
Code: Alles auswählen
Procedure LoadAdditionalFonts(Dir$)
ExamineDirectory(#Dir_Font,"Style\","*.TTF")
While NextDirectoryEntry(#Dir_Font)
AddFontResource_("Style\"+DirectoryEntryName(#Dir_Font))
Wend
ExamineDirectory(#Dir_Font,"Style\","*.FON")
While NextDirectoryEntry(#Dir_Font)
AddFontResource_("Style\"+DirectoryEntryName(#Dir_Font))
Wend
SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0)
EndProcedure
Procedure UnLoadAdditionalFonts(Dir$)
ExamineDirectory(#Dir_Font,"Style\","*.TTF")
While NextDirectoryEntry(#Dir_Font)
RemoveFontResource_("Style\"+DirectoryEntryName(#Dir_Font))
Wend
ExamineDirectory(#Dir_Font,"Style\","*.FON")
While NextDirectoryEntry(#Dir_Font)
RemoveFontResource_("Style\"+DirectoryEntryName(#Dir_Font))
Wend
SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0)
EndProcedure
>> wenn ich Pfade und alles anpasse
..nur um sicher zu gehen das du nix übersehen hast:
den parameter Dir$ verwendest du nicht. du beziehst dich mit ./style also auf das aktuelle verzeichnis.
außerdem:
@studroa
für gadgets geht es so wie gezeigt.
für 2ddrawing operationen musst du nach startdrawing() den font mit drawingfont() setzten, ..und das musst du für jeden neu eröffneten startdrawing()/stopdrawing()-block erneut tun.
mir ist nicht bekannt das man dafür mit pb-mitteln auch den standart-font selbst setzten kann.
..nur um sicher zu gehen das du nix übersehen hast:
den parameter Dir$ verwendest du nicht. du beziehst dich mit ./style also auf das aktuelle verzeichnis.
außerdem:
ich weiß jetzt nich ob des reicht es einfach am ende der procs auszuführen, oder ob du die erst die dateiliste erstellen musst, finishdirectory() aufrufen musst, und dann erst die font laden/hinzufügen kannst.Once the enumeration is done, FinishDirectory() must be called to free the resources associated to the listing.
@studroa
für gadgets geht es so wie gezeigt.
für 2ddrawing operationen musst du nach startdrawing() den font mit drawingfont() setzten, ..und das musst du für jeden neu eröffneten startdrawing()/stopdrawing()-block erneut tun.
mir ist nicht bekannt das man dafür mit pb-mitteln auch den standart-font selbst setzten kann.
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Lassen wir mal das Rätselraten. Das sind alles nur Vermutungen solange studroa nicht antwortet und explizit formuliert was er will.
Die Standard-Schrift für was? Gadgets? 2D Drawing? System?studroa hat geschrieben:ich möchte die Standard-Schrift durch eine andere und größere ersetzen
Windows 10 Pro, 64-Bit / Outtakes | Derek
@gnasen:
So funktioniert der ... wobei in Dir$ das Verzeichnis der zu ladenen Fonts sein muss 
Wichtig beim benutzen der Fonts ist der Name !
Es ist nicht unbedingt der gleiche wie der Filename.
Es ist der Name anzugeben, der erscheint, wenn man einen Font im Fontviewer von windows anzeigen lässt.
bei dem hier z.B.

muesstest Du
eingeben, egal welchen Filenamen das Teil besitzt. dann sollte es klappen
Code: Alles auswählen
Procedure LoadAdditionalFonts(Dir$)
ExamineDirectory(0,Dir$,"*.TTF")
While NextDirectoryEntry(0)
AddFontResource_(Dir$+DirectoryEntryName(0))
Wend
ExamineDirectory(0,Dir$,"*.FON")
While NextDirectoryEntry(0)
AddFontResource_(Dir$+DirectoryEntryName(0))
Wend
SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0)
EndProcedure

Wichtig beim benutzen der Fonts ist der Name !
Es ist nicht unbedingt der gleiche wie der Filename.
Es ist der Name anzugeben, der erscheint, wenn man einen Font im Fontviewer von windows anzeigen lässt.
bei dem hier z.B.

muesstest Du
Code: Alles auswählen
LoadFont(1,"7th Service Condensed",YSize[,Flags])
Vielen Dank, das wars was ich falsch gemacht habe. Naja, so kanns gehen.Es ist nicht unbedingt der gleiche wie der Filename.
Es ist der Name anzugeben, der erscheint, wenn man einen Font im Fontviewer von windows anzeigen lässt.
Andere Frage: Wenn ich jetzt einen Font mit dieser Prozedur hinzufüge, wird der jedesmal neu und zusätzlich registriert, sodass man die Registry versaut, oder passt da Windows von selber auf, ob er den Font schon installiert hat?
Hallo,
mit AddFontRessource versaust du nicht die Registry da dort nichts eingetragen wird.
Außerdem solltest du den Font nach Benutzung sowieso wieder freigenben.
mit AddFontRessource versaust du nicht die Registry da dort nichts eingetragen wird.
Außerdem solltest du den Font nach Benutzung sowieso wieder freigenben.
MSDN hat geschrieben: When an application no longer needs a font resource that it loaded by calling the AddFontResource function, it must remove the resource by calling the RemoveFontResource function.
AddFontRessource() kopiert (bzw löscht) weder irgendetwas in das Font - Verzeichnis noch verändert diese Funktion die Registry. Der Font wird lediglich in eine interne Datenstruktur eingetragen die beim nächsten Systemstart wieder im Originalzustand ist und den Font gar nicht mehr enthält. Ich denke mal, wenn ein Font hinzugefügt wird wird ein Zähler erhöht und beim entfernen wieder erniedrigt und erst wenn der Zähler 0 ist wird der Font aus der Struktur entfernt, so wird das jedenfalls bei vielen anderen Dingen gemacht um zu verhindern, das etwas gelöscht wird was noch gebraucht wird.