Ich bin nicht mehr lange online, aber das erste Beispiel ist schon deswegen falsch:Borstensohn hat geschrieben: 01.11.2023 21:42 Dieser Thread ist zwar uralt, aber da ich eine sehr ähnliche Frage habe, möchte ich keinen neuen eröffnen.
Bei mir werden unter GNU/LInux, genauer: Xubuntu 23.10, Schriften nicht aus einem Ordner im Programmverzeichnis geladen, auch nicht aus dem Programmverzeichnis direkt (die Registrierung der Schrift funktioniert hingegen anscheinend). Es wird eine Ersatzschrift gewählt, vermutlich eine Standardschrift. Wenn eine der angebotenen Schriften jedoch auf dem System installiert ist, klappt das Laden (?!). Das erscheint mir völlig unlogisch, und ich kann den Fehler nicht finden.
Bei folgendem Code wird dann noch nicht mal meine Fehlermeldung ausgegeben:Code: Alles auswählen
Procedure SchrArtifika() If RegisterFontFile(GetCurrentDirectory() + "fonts/Artifika-Regular.ttf") If SchrGr < 9 SchrGr = 12 EndIf If Artifika = LoadFont(#PB_Any, "Artifika Medium", SchrGr) SetGadgetFont(#edtAusgabe, FontID(Artifika)) Else MessageRequester("Schriftart", "Die Schrift „Artifika Medium“ konnte nicht geladen werden!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error) EndIf Else MessageRequester("Schriftart", "Die Schrift „Artifika Medium“ konnte nicht registriert werden!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error) EndIf EndProcedure
Und auch das misslingt:Code: Alles auswählen
Procedure SchrArtifika() If RegisterFontFile(GetCurrentDirectory() + "fonts/Artifika-Regular.ttf") If SchrGr < 9 SchrGr = 12 EndIf If LoadFont(0, "Artifika Medium", SchrGr) SetGadgetFont(#edtAusgabe, FontID(0)) Else MessageRequester("Schriftart", "Die Schrift „Artifika Medium“ konnte nicht geladen werden!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error) EndIf Else MessageRequester("Schriftart", "Die Schrift „Artifika Medium“ konnte nicht registriert werden!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error) EndIf EndProcedure
Die Prozedur wird aufgerufen, wenn im Menü des Anwendungsprogrammes die entsprechende Schrift ausgewählt wird, aber auch wenn sie beim Programmstart aus der zugehörigen Einstellungsdatei (.ini) gelesen wird. Alles andere klappt, also Schriftgröße oder Hintergrundfarbe, nur eben das Laden der Schriften aus dem Programmordner nicht.Code: Alles auswählen
Procedure SchrArtifika() If RegisterFontFile(GetCurrentDirectory() + "fonts/Artifika-Regular.ttf") If SchrGr < 9 SchrGr = 12 EndIf LoadFont(0, "Artifika Medium", SchrGr) SetGadgetFont(#edtAusgabe, FontID(0)) Else MessageRequester("Schriftart", "Die Schrift „Artifika Medium“ konnte nicht registriert werden!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error) EndIf EndProcedure
Vielleicht hat jemand eine Idee, woran es liegen könnte.
Code: Alles auswählen
If Artifika = LoadFont(#PB_Any, "Artifika Medium", SchrGr)
Desweiteren ist das Verhalten einen default Font zu laden der Namenstechnisch am verwandtesten ist wenn kein passender gefunden wurde glaube ich normal hier bei PB, vielleicht ist es unter Linux irgendein Font dann, damit das dort genauso wenig fehlschlägt wie auf den anderen Systemen:
https://www.purebasic.com/documentation ... dfont.htmlOn Windows and OS X the font mapper will always attempt to locate a font. If a font name which does not exist such as: "Tim Now Ronin", is used, then the font mapper will attempt to find the closest match. This will be based upon such criteria as: the font name, the font height, the style and so forth. Therefore, the assumption can not be made that a font will not be loaded, due only to an incorrect font name, size, ect
Bist du sicher, dass der Pfad richtig ist mit GetCurrentDirectory() + ...? Ist da ein Schrägstrich der fehlt o.ä.?