Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Widechars mit SCREENRES korrekt darstellen: fbgfx

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
CommLan



Anmeldungsdatum: 23.10.2015
Beiträge: 40
Wohnort: hinterm Mond

BeitragVerfasst am: 23.07.2017, 22:32    Titel: Widechars mit SCREENRES korrekt darstellen: fbgfx Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 23.07.2017, 23:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 23.07.2017, 23:35    Titel: Antworten mit Zitat

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. happy
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
CommLan



Anmeldungsdatum: 23.10.2015
Beiträge: 40
Wohnort: hinterm Mond

BeitragVerfasst am: 24.07.2017, 00:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 24.07.2017, 11:25    Titel: Antworten mit Zitat

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 lächeln 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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 24.07.2017, 13:57    Titel: Antworten mit Zitat

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". grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz