Newsgroup: it.comp.java
Titolo: jdk, jre e fonts

Ciao a tutti.
Sto diventando matto per un (apparentemente) banale problema di font. 
Ho bisogno di un font a spaziatura fissa e con il simbolo dell'euro 
(Unicode 20AC), per cui ho provato questo:
  JLabel l = new JLabel( "Prova " + (char)(0x20AC) + " iii" );
  l.setFont( new Font( "monospaced", Font.PLAIN, 14 ) );
Compilando con jdk1.3 per windows ed eseguendo col 'java' di 
JRE_1.3.1, nessun problema; ma eseguendo col 'java' del jdk, il 
simbolo dell'euro non appare.
Usando un physical font, invece:
  l.setFont( new Font( "Lucida Sans Typewriter", Font.PLAIN, 14 ) );
ottengo un risultato corretto con il 'java' del jdk, mentre col JRE 
ottengo un font proporzionale.
C'è qualcosa di marcio nel modo in cui Java gestisce i font, oppure 
sbaglio qualcosa?
-- 
Ciao, Marvin

 simbolo dell'euro non appare.
Non so se puo' esserti di aiuto e neanche che sia la strada giusta ti
riporto un sunto di quello che ho letto sui font:
non tutti i font hanno i caratteri nelle stesse posizioni Unicode in questi
casi occorre ricorrere alla traduzione degli indici ... le installazioni
windows utilizzano la forma:
(squiggle e' il nome di un font)
squiggle.1 = Symbol, SYMBOL_CHARSET, NEED_CONVERTED
fontcharset.squiggle.1 = sun.awt.windows.charToByteWingDings
il numero 1 dopo squiggle indica la seconda scelta (squiggle.0 e' nel
font.properties)
la voce fontcharset indica il nome qualificato della classe che fornisce la
traduzione
Saluti
Armando Daniele

 in questi casi occorre ricorrere alla traduzione degli indici ...
Ti ringrazio della risposta, ma non credo che sia questo il problema. 
Infatti io non uso font particolari installati nella macchina: 
"monospaced" e "Lucida" sono solo delle 'indicazioni' sull'aspetto del 
font, e i glifi vengono generati runtime, non caricati da un file TTF 
(ad esempio). 
Ciň proprio per evitare i problemi da te indicati.
Purtroppo, come dicevo nel mio post, l'errore non č legato al 
programma, ma alla VM che esegue l'applicazione. Lo stesso bytecode 
mostra i glifi corretti se eseguito con la VM del jdk, quelli 
sbagliati con la VM del jre (e viceversa, in funzione del font).
-- 
Ciao, Marvin

 wrote:
: Armando Daniele:
: 
:> Non so se puo' esserti di aiuto e neanche che sia la strada giusta
:> ti riporto un sunto di quello che ho letto sui font:
:> non tutti i font hanno i caratteri nelle stesse posizioni Unicode
:> in questi casi occorre ricorrere alla traduzione degli indici ...
: 
: Ti ringrazio della risposta, ma non credo che sia questo il problema. 
: 
: Infatti io non uso font particolari installati nella macchina: 
: "monospaced" e "Lucida" sono solo delle 'indicazioni' sull'aspetto del 
: font, e i glifi vengono generati runtime, non caricati da un file TTF 
: (ad esempio). 
: Ciò proprio per evitare i problemi da te indicati.
: 
: Purtroppo, come dicevo nel mio post, l'errore non è legato al 
: programma, ma alla VM che esegue l'applicazione. Lo stesso bytecode 
: mostra i glifi corretti se eseguito con la VM del jdk, quelli 
: sbagliati con la VM del jre (e viceversa, in funzione del font).
: 
: 
: -- 
: Ciao, Marvin
e allora verifica in che jvm stai girando ed usa il font giusto...
lo so che e' una schifezza, ma forse vale la pena provare.