Euro-Symbol in GrafikText?

Status
Nicht offen für weitere Antworten.

Fats

Bekanntes Mitglied
Hallo Miteinander!

Ich bastel mir etwa in folgender Art und Weise eine Textgrafik zusammen:

Code:
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
Font raw_font = Font.createFont(Font.TRUETYPE_FONT, new File("path/to/font/arial.ttf"));
Font ttf = raw_font.deriveFont(15f);
g2d.setFont(ttf);
g2d.setColor(Color.RED);
g2d.drawString("Hallo World",20,10);
g2d.dispose();
ImageIO.write(img, "png", new File("myfile.png"));

Wenn ich jetzt statt des einfachen "Hallo Welt"-Textes z.B. das Euro-Zeichen einbaue, dann bekomme ich komische Sonder-Zeichen in der Grafik und alle Umlaute funktinieren plötzlich nicht mehr. Woran liegt das? Wie kann man den Zeichensatz beeinflussen? Kann man und wenn ja wie zB. einen spanischen Zeichensatz einbauen?

Viele Grüße
Fats
 
G

Gast

Gast
Ich denke der Zeichensatz ist durch die in arial.ttf definierten Zeichen beschränkt. Wenn dieser Zeichensatz also kein Euro-Zeichen vorsieht, hast du keine Chance...
 

Fats

Bekanntes Mitglied
Hmm .... Wenn es jetzt eine abgefahrene SpaßSchriftart wäre, aber grade Arial kann doch in aller Regel das Euro Zeichen darstellen - zumindest im OpenOffice. Und der Zeichensatz, den ich für die Schrift verwende, stammt aus dem Windows Font Dir. Das sollte dann doch genau der gleiche sein, oder? ???:L
 
L

Lulumann6

Gast
soweit ich weis kommt es auf den Compiler an. bei Javac geht es aber z.B. bei Jikes geht es nicht. keine Ahnung warum.
 
S

Spacerat

Gast
Hi,

Aufgrund der Tatsache, das Java mit Unicodes (char) arbeitet und es sich bei dem gewünschten Zeichen um ein Sonderzeichen handelt bekommt man dieses nur mit dessen Zeichencode ('\u20ac'). Allerdings muss man vorher sicherstellen, daß dieser auch im gewählten Zeichensatz an der korrekten Stelle ist. Ggf. kann man die Zeichencodes solcher Sonderzeichen (unter Windows) aus der Zeichentabelle bekommen.

cu Spacerat
 
Status
Nicht offen für weitere Antworten.

Oben