Hallo,
habe einen Font mit allen meinen Symbolen erstellt. Es gibt aber anscheinend verscchiedene Bereiche in einem Font, auch eine "private Use Area". Hier befinden sich Zeichen ab dez. 57344 oder Hex E000.
Wie kann ich diese Zeichen in xBase++ darstellen ? mit chr(57344) geht jedenfalls nichts. Mit Tools wie Nexusfonts wird aber alles korrekt angezeigt.
Der Font : http://www.formcommander.net/download/formcommander.ttf
Grüße
Rudolf
Truetype Font
Moderator: Moderatoren
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Truetype Font
- Dateianhänge
-
- Zwischenablage01.jpg (176.89 KiB) 2087 mal betrachtet
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Truetype Font
Hallo Rudolf,
chr() verarbeitet nur 0 bis 255 alle größeren Zahlen werden passend gemacht
Hier der Beweis:
chr() verarbeitet nur 0 bis 255 alle größeren Zahlen werden passend gemacht
Hier der Beweis:
Code: Alles auswählen
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
procedure main()
local x
set charset to ansi
for x := 255 to 300
msgbox("Test: '"+chr(x)+"' = '"+chr(x % 256)+"'")
next
msgbox("Kompletttest")
for x := 0 to 50000
if chr(x) # chr(x % 256)
msgbox("Test: '"+chr(x)+"' = '"+chr(x % 256)+"'","Ist anders")
endif
next
msgbox("Ende")
return
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Truetype Font
und das macht Sinn, denn ANSI hat genauso wie OEM nur 256 Zeichen, man braucht UNICODE um andere darzustellen.
Beweis hier der PowerBasic Code ... chr$() verhält sich genauso wie chr() bei uns, erst chr$$() zeigt das richtige Unicode Zeichen an.
Xbase++ kann diese Bereiche nicht darstellen, du musst deinen Font also in 0 bis 255 unterbringen
Beweis hier der PowerBasic Code ... chr$() verhält sich genauso wie chr() bei uns, erst chr$$() zeigt das richtige Unicode Zeichen an.
Xbase++ kann diese Bereiche nicht darstellen, du musst deinen Font also in 0 bis 255 unterbringen
Code: Alles auswählen
#COMPILE EXE
#DIM ALL
#OPTION VERSION5
FUNCTION PBMAIN () AS LONG
MSGBOX ("Test A: '"+CHR$(10003)+"' = '"+CHR$(10003 MOD 256)+"'"+$CR+_
"Test U: '"+CHR$$(10003)+"' # '"+CHR$(10003 MOD 256)+"'")
END FUNCTION
- Dateianhänge
-
- Ansi_Unicode.png (9.23 KiB) 2074 mal betrachtet
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Truetype Font
wie Huber schon sagte bist du bei > 256 bei einer "anderen Codierung".Rudolf hat geschrieben:habe einen Font mit allen meinen Symbolen erstellt. Es gibt aber anscheinend verscchiedene Bereiche in einem Font, auch eine "private Use Area". Hier befinden sich Zeichen ab dez. 57344 oder Hex E000.
Wie kann ich diese Zeichen in xBase++ darstellen ? mit chr(57344) geht jedenfalls nichts. Mit Tools wie Nexusfonts wird aber alles korrekt angezeigt.
bei DBCS geht es bis 64Kb also würde ich es damit mal versuchen.
->Rudolf hat geschrieben:Der Font : http://www.formcommander.net/download/formcommander.ttf
p.s. von Günter Beyes gibt es hier im Forum einen Thread mit CreateFont API. auch in der Xoanon.LIB wird folgender Code verwendetAuthentifizierung erforderlich
Code: Alles auswählen
nRetVal:=DllCall("Gdi32.dll",DLL_STDCALL,"CreateFontA",;
::FontHeight,;
::FontWidth,;
::FontEscapement,;
::FontOrientation,;
::FontWeight,;
IF(::FontItalic==.T.,1,0),;
IF(::FontUnderline==.T.,1,0),;
IF(::FontStrikeOut==.T.,1,0),;
::FontCharSet,; // Codepage - DBCS
::FontOutputPrecision,;
::FontClipPrecision,;
::FontQuality,;
cPitchAndFamily,;
::FontTypeFace)
gruss by OHR
Jimmy
Jimmy