Unicode über 65000? [Gelöst: es geht doch!]
Übersicht

![]() |
MidimasterBetreff: Unicode über 65000? [Gelöst: es geht doch!] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich experimentiere gerade mit Unicode-Zeichensätzen in BlitzMax.
Dabei gibt es Zeichensätze für z.B. Japanisch oder Chinesisch, die sich sehr einfach unter BlitzMax ansprechen lassen: BlitzMax: [AUSKLAPPEN] SuperStrict(Der BeispielFont liegt dem Microsoft-Office-Paket bei und enthält die Schriftzeichen bereits vieler Sprachen) Hierbei kann man bei der Funktion CHR$() auch Werte über 255 eingeben. Ausgegeben werden dann chinesische Schriftzeichen. Das klappt aus so weit ganz gut, aber es gibt auch Unicode-Zeichen jeseits der 65000. Und hier beginnt BlitzMax plötzlich wieder von vorne: BlitzMax: [AUSKLAPPEN] Zeichen= Chr(33) + Chr(33+65248) z.b. Musikzeichensätze wie "Musica.otf" oder Hieroglyphen wären so möglich. Frage: kennt sich hier jemand aus und weiß vielleicht eine Lösung? Hier noch der Zeichensatz-Betrachter zum experimentieren: interessante Stellen sind z.b. bei 900,1000, 8200, 8500, 9300, 12300, 20000ff BlitzMax: [AUSKLAPPEN] SuperStrict [EDIT] ein weiterer schöner Zeichensatz wäre "code2000.ttf". Er enthält über 60.000 Glyphen. Download hier: http://www.code2000.net/ [Edit II] selbst mit dem schnöden "ARIAL.TTF" kann man bereits (z.b. mit obigem Zeichensatzbetrachter) arabische Schriftzeichen sehen! Ab 1500... |
||
- Zuletzt bearbeitet von Midimaster am Do, Mai 27, 2010 9:07, insgesamt 3-mal bearbeitet
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ganze liegt daran, dass BMax (soweit ich weiß) intern mit UTF-16 (also 16 bit pro Zeichen) arbeitet. UTF-16 kann zwar auch für einzelne Zeichen 32 bit verwenden, aber ich nehme mal an, dass das in BMax nicht geht (da ja alle Zeichen im Speicher gleich groß sein sollen). Für dein Vorhaben bräuchte es dann wohl UTF-32, das wird BMax wahrscheinlich aber nicht von Haus aus können und wäre dann wohl auch nur mit einer eigenen String-Klasse machbar.
Soviel zu meinem Halbwissen. ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich habe inzwischen im englischen Forum eine Lösung angeboten bekommen, die ich hier noch für die Nachwelt erhalten wollte, da damit kar wird, dass zwei scheinbare Einschränkungen von BlitzMax nicht gelten:
1. BlitzMax kann Open Type Font *otf laden 2. BlitzMax kann Unicode über 65.000 darstellen Es geht doch mit BlitzMax die Unicode-Zeichen über 65.000 ausgeben zu lassen. Dabei wird ein Trick angewendet, die Zeichen gleich als Images auszugeben. Der Zeichen satz darf sogar ein Open Type Font .OTF sein. Der wird ganz normal geladen, dann aber die Glyphes direkt angesprochen. Die Ausgabe eines Zeichens wird durch die Funktion DrawChar ersetzt: BlitzMax: [AUSKLAPPEN] Function DrawChar(char%, x#, y#, Font:TImageFont = Null) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group