2010-06-20 10 views
7

Non molto tempo fa I asked a question tentativo di identificare un determinato carattere unicode da utilizzare in una GUI. Ho ottenuto il personaggio che stavo cercando, ma non funzionava nella GUI Swing che stavo costruendo.Limiti al supporto Unicode di Swing

così, così comunitaria, mi pongo a voi queste domande:

Che tipo di limitazioni ha Swing/Java ha per il supporto Unicode? Ci sono alcuni sottoinsiemi di unicode che sono completamente supportati e di cosa dovrei stare lontano quando si progetta in futuro?

MODIFICA: dopo aver applicato il carattere 'Arial Unicode MS' come suggerito da Alan Moore, tutto sembrava chiarirsi. Sembra strano che dovrei impostare un font di terze parti per far apparire tutti i caratteri Unicode.

+1

Non ci sono limiti. La classe String di Java supporta tutti i possibili caratteri Unicode. –

+0

Cosa intendi esattamente quando dici che non funziona? Stai usando uno di questi tipi di carattere? http://www.fileformat.info/info/unicode/char/FE3D/fontsupport.htm –

+0

@Alan Moore Sto utilizzando il font predefinito fornito da Swing in Sun JDK 1.6.0_20 su WindowsXP e quando applico "\ uFE3D "appare una piccola scatola. –

risposta

5

Normalmente quando i glifi non vengono visualizzati correttamente in un'interfaccia utente, è perché si sta utilizzando un font che non ha un glifo, non perché c'è un problema con il supporto Unicode in qualsiasi toolkit che si sta utilizzando. Molto, MOLTO alcuni tipi di carattere hanno tutti glifi - è necessario assicurarsi di scegliere un font che ha copertura nei punti di codice che ti interessano.

0

Java 1.6 dovrebbe supportare per tutti i caratteri Unicode. IIRC 1.5 non aveva metodi per gestire caratteri UTF-16 multi-char (nuove API sono state aggiunte alla versione 1.6).

I caratteri della domanda che hai postato vengono visualizzati correttamente nell'editor Java che utilizzo. Assicurati che il font che stai utilizzando supporti quel personaggio; i font JDK incorporati supportano molti personaggi, ma sicuramente non tutti. Dai un'occhiata ai metodi java.awt.Font.canDisplay().

+0

1.5 aggiunto il supporto per Unicode 4.0, mentre 1.6 ha aumentato l'espressione unicode regexps ma è altrimenti invariato. Ogni versione di Java ha un completo supporto di set di caratteri Unicode per la versione di Unicode che era corrente al momento. (C'erano un paio di piccoli bug in 1.4.2 con forme di presentazione latin-b e arabe rilegate-b) –

2

Vedere Sun Java 6 fonts Supported Fonts per dettagli sui limiti dei caratteri logici. Le scelte di Sun erano dovute probabilmente a un misto di pragmatismo e licenza. Si noti che la documentazione dice che è possibile eseguire il provisioning di fallback fonts aggiungendoli alla directory JRE lib/fonts/fallback.

+0

FYI: consultare le Domande frequenti di _Java Internationalization_ per maggiori informazioni: http://java.sun.com/javase/technologies/core /basic/intl/faq.jsp – McDowell

Problemi correlati