Bitmap Fonts + Unicode

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2259
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Bitmap Fonts + Unicode

Beitrag von Zudomon »

Der Titel sagt es schon. Ich benutze in SQ ja Bitmap Fonts und hätte aber gerne die Möglichkeit, auch andere Sprache korrekt darzustellen. Allerdings weiß ich gerade nicht wie. Wenn ich korrektes Unicode unterstützen möchte, dann kann ich doch da nicht etliche Texturen nur für einen Font machen. :|
Gibt es da eine bessere Möglichkeit?
Benutzeravatar
xq
Establishment
Beiträge: 1589
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Bitmap Fonts + Unicode

Beitrag von xq »

Wenn du vorher weißt, welche Zeichen du haben willst, kannst du via Key->Value bzw Unicode->Index dir Bitmap-Fonts erstellen, die genau die Zeichen enthalten, die du haben möchtest. Das wäre ein kleiner Mehraufwand beim Erstellen eines Font-Renderings (wenn du cached), dafür könntest du alle von dir benötigten Zeichen benutzen, ohne zig Bitmaps zu haben.

Nur so ein Gedanke
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Bitmap Fonts + Unicode

Beitrag von dot »

Ich persönlich arbeite mit einer Art Cache-Textur. Wird eine Glyphe benötigt, die nicht im Cache ist, wird Platz im Cache gemacht und die Glyphe dort hingepackt. Die Glyphenbitmaps lass ich mir on the fly von DirectWrite (geht natürlich aber mit FreeType oder GDI oder sonstwas) rasterisieren.
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: Bitmap Fonts + Unicode

Beitrag von Spiele Programmierer »

Ich habe einen Texturatlas in dem ich meine Buchstaben auf Bedarf mit Freetype rendere. Nur einige englischen ASCII Zeichen lade ich im voraus.
Vermutlich also ähnlich wie bei Dot. Wenn das Platz ausgeht, wird der Texturatlas gelöscht, in letzter Zeit nicht verwendete Buchstaben gelöscht und optimierter in eine neue Textur übertragen.

Ein Problem mit meinen Rendersystem ist, dass ich für jede Größe die Zeichen neu über Freetype in die Textur nachladen muss. Ein in der Größe skalierende Textanimation ist zum Beispiel nahezu unmöglich. Außerdem ist die Qualität in einigen Situationen eingeschränkt und es verbraucht viel Speichern, oder alternativ läuft der Texturatlas dauernd über. Wenn ich meinen Text-Renderer mal erneuere, würde ich vermutlich versuchen auf eine Technik, wie Distance Fields, zu wecheln.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2259
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Bitmap Fonts + Unicode

Beitrag von Zudomon »

Danke für eure Antworten! :D
Ich glaube, dann scheint es wohl das Beste zu sein, es mit so einer Cache Textur zur Laufzeit zu probieren.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2545
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Bitmap Fonts + Unicode

Beitrag von Jonathan »

Ja ich meine, wenn es jetzt nicht gerade Chinesisch ist, hast du ja in jeder Sprache echt nur eine Hand voll Buchstaben. Eine Bitmapfont mit ALLEN Unicodezeichen zu machen geht natürlich nicht, aber ich denke, in wirklich den allermeisten Fällen, kann man es im voraus schon so stark einschränken, dass man weiß, was jetzt wohl benötigt werden wird.
Ich habe ja neulich einen kurzen Artikel geschrieben, wie ich Texte render. Die Methode kann absolut nicht viel, war dafür aber ruck zuck implementiert. Damit würde ich es wohl so lösen, dass ich für jede Sprache einen Satz Zeichen definieren würde, und dann schaue welche Sprache gerade gebraucht werden, die Vereinigung der Zeichen bilde und dann die Bitmapfont neu generieren. Selbst wenn das messbar lange dauern würde, Sprachen ändern sich ja nicht 30 mal pro Sekunde.
Bei sowas wie chinesisch, wirst du eventuell nicht alle Zeichen vorrätig halten können (wobei ich mich nie wirklich mit chinesisch beschäftigt habe), und brauchst vermutlich eine Strategie, schnell die benötigten nachladen zu können. Aber ich bin immer der Meinung, dass wenn man ein Problem mit wenig Aufwand so lösen kann, dass es fast immer ausreichend ist, man sich gut überlegen muss, ob man jetzt wesentlich mehr Arbeit in die Version die dann wirklich immer optimal funktioniert stecken will. Denn das immer zu tun ist genau die Art, wie Projekte niemals fertig werden. Das ist einfach so.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten