Aktuelle Zeit: 16.10.2018 00:09

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 09:43 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Ich kriege hier gerade graue Haare beim Versuch einen Custom Font zu laden ... das doofe ist, daß PureBasic mir kein Feedback gibt, ob ein Font korrekt geladen wurde; es wird einfach immer der Standard-Arial-Font geladen. Auch IsFont(FontID(#Nr)) ist hier keine Hilfe, da dieser selbst bei korrekt geladenem Zeichensatz eine Null zurückgibt:

Beispiel aus der F1-Hilfe:

Code:
If OpenWindow(0, 0, 0, 270, 160, "Loading font...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If LoadFont(1, "Cambria", 24)
      SetGadgetFont(#PB_Default, FontID(1))
      TextGadget(0, 10, 10, 250, 40, "Test 24")
   EndIf
   Debug IsFont(FontID(1))
   Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


Das Beispiel funktioniert, das heißt "Cambria" wird korrekt geladen, trotzdem gibt der Debugger für IsFont(FontID(1)) eine 0 zurück.
Viele andere, korrekt installierte Fonts, die ich auch in diversen Applikationen auswählen kann, funktionieren nicht, das heißt sie werden immer durch Arial ersetzt.

Danke! /:->

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 10:07 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
diceman hat geschrieben:
Ich kriege hier gerade graue Haare beim Versuch einen Custom Font zu laden ... das doofe ist, daß PureBasic mir kein Feedback gibt, ob ein Font korrekt geladen wurde; es wird einfach immer der Standard-Arial-Font geladen.

Es liegt daran:
PB-Hilfe hat geschrieben:
Auf Windows wird der systemseitige Font-Mapper (die Schriftart-Zuordnung) immer versuchen, eine Schriftart zu finden. Wenn ein nicht existierender Zeichensatz-Name wie z.B. "Tim Now Ronin" verwendet wird, dann versucht der Font-Mapper den am besten passenden zu finden.


diceman hat geschrieben:
Das Beispiel funktioniert, das heißt "Cambria" wird korrekt geladen, trotzdem gibt der Debugger für IsFont(FontID(1)) eine 0 zurück.

Das ist falsch. Richtig muss lauten:
Code:
Debug IsFont(1)

_________________
BildBildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 10:28 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Okay, danke, jetzt funktioniert es!
Danke auch nochmal für die Erklärung von IsFont.

Ein bißchen merkwürdig ist das dennoch:
Der BitmapFont, den ich testen wollte, heißt "PressStart2P-Regular".
Nur wurde diese Bezeichnung von PureBasic nicht erkannt/akzeptiert, whatever.
Ich bin dann in die Font-Bibliothekt rein und habe gesehen, daß er dort als "Press Start 2P Standard" geführt wurde.
Auch hier wurde immer mit Arial überschrieben.
Habe die File-Properties nochmal gegengecheckt, da hieß das Teil "PressStart2P-Regular.tff"
Was letztendlich Erfolg brachte, war "Press Start 2P".
:bluescreen: :coderselixir:

Jetzt gehts aber wieder voran! :)


//EDIT:
Werde wohl am Anfang einen Check einbauen, ob jedweder Font, für den ich mich letztendlich entscheide, beim Nutzer korrekt geladen wurde.
Andernfalls wird das Programm einen Hinweis geben, diesen zu installieren.
Das Font-File wird dann natürlich mitgeliefert.

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Zuletzt geändert von diceman am 25.04.2018 10:39, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 10:36 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
diceman hat geschrieben:
Andernfalls wird das Programm einen Hinweis geben, diesen zu installieren.
Das Font-File wird dann natürlich mitgeliefert.

korrigiere mich, wenn ich falsch liege, aber ich glaube, dass das mit RegisterFontFile() geht.

Grüße ... Peter

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 10:59 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Hmm, wie ich das sehe, ist IsFont() ein ziemlich nutzloser Befehl, oder? :?
IsFont() wird IMMER ein #True zurückgeben, da bei nicht gefundenem Zeichensatz automatisch der nächst passendere (= Arial) ausgewählt wird ...

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 11:02 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Ja, IsFont() ist anscheinend nur unter Linux und MacOS sinnvoll, da unter Windows eine ähnliche oder Standard-Schriftart geladen wird, wenn die angegebene Schriftart nicht gefunden wurde.
Man könnte aber mit WinAPI die Schriftart eines Gadgets/Fensters manuell ermitteln, ob diese mit der angegebenen Schriftart übereinstimmt. Wenn ja, dann wurde die angegebene Schriftart erfolgreich geladen.

_________________
BildBildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 11:09 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Kiffi hat geschrieben:
diceman hat geschrieben:
korrigiere mich, wenn ich falsch liege, aber ich glaube, dass das mit RegisterFontFile() geht.
Grüße ... Peter


YES, es geht! :allright:
Man braucht den Font nicht zu installieren, es reicht wenn er im selben Verzeichnis wie das Programm ist!
Man muß nur sicherstellen, die korrekte Bezeichnung zu verwenden, welche von LoadFont() erkannt wird.

Folgendes Beispiel funktioniert bei mir für das FontFile "PressStart2p-Regular.tff", welches NICHT installiert wurde ... es wird nur temporär für das Programm registriert.
Probiert es aus mit einem Font eurer Wahl! 8)

Code:
If OpenWindow(0, 0, 0, 270, 160, "Loading font...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If RegisterFontFile("PressStart2P-Regular.ttf")
      If LoadFont(1, "Press Start 2P Regular", 24)
         SetGadgetFont(#PB_Default, FontID(1))
         TextGadget(0, 10, 10, 250, 40, "Test 24")
      EndIf
   Else
      Debug "Ouch!"
   EndIf
   Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Ich freue mich immer, wenn eine ursprünglich doofe Frage im weiteren Diskussionsverlauf eine konstruktive Transformation erfährt! :lurk:

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 13:52 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
diceman hat geschrieben:
Andernfalls wird das Programm einen Hinweis geben, diesen zu installieren.

Das wird wohl nicht jeder User wollen, weil je mehr Schriften, um so langsamer das System!
diceman hat geschrieben:
Das Font-File wird dann natürlich mitgeliefert.

Unbedingt Copyright beachten, man darf nicht so einfach alle Fonts mitliefern!

RegisterFontFile() ist noch die beste Lösung, solange man die Copyrights beachtet!

_________________
PureBasic 5.70 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 19.0 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LoadFont / IsFont funktioniert nicht ...
BeitragVerfasst: 25.04.2018 14:29 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Ja, das mit den Copyrights ist mir klar! :)
Ich habe ohnehin vor, nur einen einzigen Font zu verwenden, und da werde ich drauf achten, daß man den frei verwenden darf.
Und da RegisterFontFile() SO super funktioniert, ergibt sich auch die Sache mit dem Hinweis auf den fehlenden Font.

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye