|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
CommLan
Anmeldungsdatum: 23.10.2015 Beiträge: 40 Wohnort: hinterm Mond
|
Verfasst am: 23.07.2017, 22:32 Titel: Widechars mit SCREENRES korrekt darstellen: fbgfx |
|
|
Ein Hallo ins Forum ,
ich wollte mal fragen, ob es eine Möglichkeit gibt, Widechars (Also so Zeichen wie "€" (Das ja sogar ein Triplechar ist)) fehlerfrei in einem Screen darzustellen.
Der Lösungsansatz sollte verträglich sein mit PRINT und LOCATE.
(Ich weiß, eigentlich soll man es nicht machen, aber wenn man aufpasst, vertragen sich LOCATE und PRINT wunderbarstens mit z.B. LINE und co.)
Edit: Was ich noch dazu sagen sollte, ich bin unter Ubuntu unterwegs. |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 23.07.2017, 23:03 Titel: |
|
|
Hi,
meines Wissens nach ist das so nicht möglich, da im Grafikmodus ein eingebauter Bitmap-Font verwendet wird, der eben nur den (erweiterten) ASCII Zeichensatz enthält. Dadurch kann FreeBasic ohne Zusatzhilfen im Grafikmodus kein Unicode (im Textmodus geht das weil die Schrift vom Betriebssystem und nicht von FB gerendert wird).
Abhilfe schafft z.B. FreeType oder FBTrueType. (allerdings nicht mit Locate oder Print)
Was du auch machen kannst, wenn du nur bestimmte Zeichen benötigst, ist dir deine eigene Bitmap-Font zu schaffen und Zeichen, die du nicht benötigst (typischerweise irgendwas im > 128 Bereich) durch deine gewünschten Zeichen zu ersetzen. Du musst dann natürlich auch die Ersatzzeichen verwenden und vorher wissen welche Zeichen du brauchst.
Zukunftssicherer ist aber auf jeden Fall FreeType o.ä., und vermutlich sogar einfacher, da du dir den Font ja sonst entsprechend zusammenbasteln musst. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4672 Wohnort: ~/
|
Verfasst am: 23.07.2017, 23:35 Titel: |
|
|
Zitat: | Was du auch machen kannst, wenn du nur bestimmte Zeichen benötigst, ist dir deine eigene Bitmap-Font zu schaffen und Zeichen, die du nicht benötigst (typischerweise irgendwas im > 128 Bereich) durch deine gewünschten Zeichen zu ersetzen. Du musst dann natürlich auch die Ersatzzeichen verwenden und vorher wissen welche Zeichen du brauchst. |
Zur Ergänzung: das funktioniert dann mit DRAW STRING (nicht mit PRINT). Allerdings Ist DRAW STRING im Grafikfenster sowieso sehr viel flexibler (pixelgenaue Positionierung).
FreeType hat dagegen nicht nur den Vorteil, dass du "alle" Unicode-Zeichen verwenden kannst (zumindest die, die im verwendeten Font definiert sind), sondern dass du auch die Schriftgröße beliebig wählen kannst. Mit DRAW STRING brauchst du für jede Schriftgröße eine eigene Font-Definition.
Edit: ach ja, unter Linux ist FreeType noch einfacher einzubinden als unter Windows, da es sich da ja um eine Standardbibliothek handelt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
CommLan
Anmeldungsdatum: 23.10.2015 Beiträge: 40 Wohnort: hinterm Mond
|
Verfasst am: 24.07.2017, 00:00 Titel: |
|
|
Also von dem, was ich so sehe, wirkt Free Type nicht schlecht.
Hat jemand Erfahrung mit der Geschwindigkeit von FreeType und gibts irgendwo ein kleines Tutorial mit Grundlagen (Möglichst mit FB) ? |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 24.07.2017, 11:25 Titel: |
|
|
Im FreeBasic Paket liegt ein Beispiel bei.
Zusätzlich wird es von einigen existierenden Programmen eingesetzt, wie z.B. in nemoreds "Lengua", wozu er dir bei Bedarf sicher mehr sagen kann.
Tutorials sind mir keine bekannt, aber das muss nicht heißen dass es keins gibt Da haben andere sicherlich einen besseren Überblick.
Ich glaube aber dass du mit dem Beispielcode eventuell in Verbindung mit der offiziellen FreeType Doku (Beispiele in C) schon recht weit kommst. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4672 Wohnort: ~/
|
Verfasst am: 24.07.2017, 13:57 Titel: |
|
|
Es gibt ein paar Beispielcodes im Portal, wobei die manchmal mit hardgecodeten Begrenzungen arbeiten, die man dann für einen allgemeinen Einsatz wieder auseinander klauben muss. Sie haben mir zwar sehr geholfen, waren aber "nicht ganz mühelos".
Schau doch mal bei Lengua in die beigelegte Datei font.bi rein (im Ordner include). Da habe ich ein paar für mich wichtige Funktionen zusammengestellt:
- printFT zum Schreiben auf den Bildschirm oder in einen Bildpuffer (Angabe des Koordinatenpunktes der linken oberen Ecke)
- centerFT zum zentrierten Schreiben (Angabe der Koordinaten des Mittelpunkktes)
- FTsize zur Bestimmung der Breite und Höhe eines Textes, ohne ihn zu rendern
Die anderen Sachen sind vorwiegend interner Kram und Dinge, die ich speziell in meinem Programm brauche.
Die auszugebenden Texte müssen in meinen Funktionen (fast immer) in UTF-8 vorliegen; das erreichst du in FreeBASIC durch Speicherung der jeweiligen Datei mit UTF-8 ohne BOM.
Ein kleines Beispiel:
Code: | ' Zunächst einmal die Initialisierung des Fonts. Sie muss einmal am Anfang
' des Programms vorgenommen werden und sieht eigentlich immer gleich aus.
'
' INITIALIZE FONT
#include once "include/font.bi"
FT_Var.ErrorMsg = FT_Init_FreeType(@FT_Var.Library)
if FT_Var.ErrorMsg then print "Could not load library"
dim shared as FT_Face font
font = getFont(exepath & "/font.ttf")
if font = 0 then print "couldn't find font.ttf" : getkey : end
' Jetzt geht es mit dem richtigen Programm los.
'
' TEST OUTPUT
screenres 600, 400, 32
color 0, &hffffff
cls
centerFT 300, 200, "¡Hola, mundo!", font, 40, rgb(255, 0, 0)
' ---> x , y , Textausgabe, Font, Größe, Farbe
getkey |
include/font.bi und selbstverständlich auch die zu ladende font.ttf müssen natürlich vorhanden sein. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|