setfont para new lista instalar fuentes font example descargar agregar java swing unicode fonts

java - para - Unicode char no representa en Swing, ¿qué fuente se usa en real?



new font java (2)

Java 7 usa fontconfig en Linux para que sepa cómo retroceder cuando faltan glifos en una fuente. Para verificar los inconvenientes que usa fontconfig en un sistema dado, puede usar los comandos fc- * (fc-match, etc.)

Sin embargo, es probable que su jre incluya reglas de reserva privadas además de las del sistema (fontconfig * xml)

No se puede simular este comportamiento en java 6 ya que fontconfig no es una simple lista de prioridades donde se usa una sola fuente en un momento dado. Mezclará y combinará las fuentes según las necesidades del texto a mostrar y las preferencias expresadas por la aplicación (patrón de fuente).

Un software habilitado para fontconfig siempre funcionará si hay una fuente capaz de mostrar el texto presente en el sistema. Una aplicación que no usa fontconfig fallará tan pronto como el nombre de la fuente codificado en la aplicación no coincida con lo que está disponible. Hay una gran variación en las fuentes instaladas en los sistemas Linux, no se puede esperar que una fuente presente en una instalación también esté presente en otra (precisamente porque todas las aplicaciones Linux modernas usan fontconfig y no les importa).

Tengo un problema con la visualización de caracteres Unicode en mi aplicación de swing.
En pensar que el problema es la fuente utilizada, que no contiene caracteres apropiados para el idioma chino.
(solo se muestran los cuadros vacíos)

Aquí hay más información sobre mi problema (hice una investigación):
Linux (Kubuntu 14.04) :
Cuando comienzo mi programa con JAVA 6, los caracteres chinos no se muestran (solo cuadros vacíos).
(preguntando a las etiquetas fuente a través de getFont () se devuelve: DejaVu Sans)
¡Cuando comienzo mi programa con JAVA 7, los caracteres chinos se muestran correctamente!
(preguntando a las etiquetas fuente a través de getFont () se devuelve: DejaVu Sans)

Windows (8.1) :
¡Cuando comienzo mi programa con JAVA 6, los caracteres chinos se muestran correctamente!
(preguntando a las etiquetas fuente a través de getFont () devuelve: SansSerif)
¡Cuando comienzo mi programa con JAVA 7, los caracteres chinos se muestran correctamente!
(preguntando a las etiquetas fuente a través de getFont () devuelve: SansSerif)

$ JAVA_HOME / lib / fonts, (que parece usarse como fuente de respaldo), ambas versiones de Java (6 + 7) contienen las mismas fuentes. (en ambos sistemas)
Los archivos de fuentes tienen el mismo tamaño (Java6 + Java7) y fontconfig.properties.src también son los mismos.

Cuando pregunto directamente la etiqueta (a través de getFont ()) devuelve "SansSerif" en Windows (8.1) y "DejaVu Sans" en mi Kubuntu (14.04).
(mira las capturas de pantalla)

Comenzó en Linux con JAVA 6:

Comenzó en Linux con JAVA 7:

"SansSerif" en Windows muestra los caracteres correctamente, pero ¿qué SansSerif-Font se usa? MS SansSerif (la única fuente con SansSerif en nombre) no tiene todos estos caracteres chinos.

EDITAR :
Lo mismo con DejaVuSans.
¡Parece que DejaVu Sans no tiene caracteres chinos! (sin embargo, se muestran!)

EDICION 2 :
Probé el código que Andrew publicó (ver: ¿Cómo determinar si 2 fuentes tienen glifos equivalentes? ), pero con el ejemplo chino Texto
este es el resultado:

Comenzó en Linux con JAVA 6:

Comenzó en Linux con JAVA 7:

EDIT 3 :
como se requiere, aquí el String que he probado:

String s = "/u6253/u5370/u8FC7/u671F/u8BC1/u4E66/u8BB0/u5F55"; //means: 打印过期证书记录 JOptionPane.showMessageDialog(null, s);

La pregunta es:
¿Qué fuente (en el sistema) se usa realmente y cómo puedo averiguarlo?
¡Gracias por adelantado!


Esta es una respuesta a mi propia pregunta.

Hice algo más de investigación:
parece ser que, para algunos tipos de idiomas (caracteres), se usa una configuración especial.

Soporte para fuentes Linux y Solaris 11
Históricamente, las fuentes lógicas para el JDK se especificaban estáticamente en un archivo fontconfig.properties. Sin embargo, en las diversas implementaciones de Linux, no hay consistencia en la presencia de fuentes. Por lo tanto, sin archivos personalizados, el texto asiático (CJK), etc., no se representaría . En JDK 7, en Linux y para Solaris 11, en ausencia de un archivo personalizado fontconfig.properties para la versión del sistema operativo, el comportamiento predeterminado es utilizar el sistema libfontconfig para seleccionar las fuentes que se utilizarán para las fuentes lógicas. En este caso, las fuentes lógicas reflejarán las fuentes utilizadas por las aplicaciones de escritorio Gnome / KDE que usan la misma biblioteca de plataforma.

esto es lo que encontré aquí: http://docs.oracle.com/javase/7/docs/webnotes/adoptionGuide/

Eso significa, primero, que hay una diferencia al elegir la fuente correcta en Java 6 y Java 7.
Luego, verifiqué mi (java 6) fontconfig-file y encontré lo siguiente (reducido a partes importantes solamente):

# Mapeos de fuentes de componentes
allfonts. chinese-cn-iso10646 = -arphic-ar pluming cn-light-r-normal-- -% d- - -c- -iso10646-1

# Nombres de archivos de fuentes
filename.-arphic-ar_pl_uming_ cn -light-r-normal-- -% d- - -c- -iso10646-1 = /usr/share/fonts/truetype/arphic/uming.ttc

# Secuencias de búsqueda
sequence.allfonts = latin-1
sequence.allfonts. UTF-8.zh.CN = latin-1-cjk, chinese-cn-iso10646
sequence.allfonts.UTF-8.zh.TW = latin-1-cjk, chinese-tw-iso10646
sequence.allfonts.UTF-8.zh.HK = latin-1-cjk, chinese-hk-iso10646

Se debe utilizar esta fuente especificada (aquí: uming.ttc ), cuando la fuente predeterminada no puede mostrar el carácter solicitado.
Después de eso, verifiqué la existencia de /usr/share/fonts/truetype/arphic/uming.ttc .
¡Esta fuente / archivo no estaba presente!
(¡Comprobé en 3 instalaciones diferentes de Ubuntu!)

No sé exactamente por qué no fue instalado (pero sin embargo utilizado en java fontconfig), pero después de la ejecución (en diferentes PC, pero con el mismo problema):

sudo apt-get install fonts-arphic-uming

para instalar la fuente que falta , probé de nuevo (con JAVA 6):

Todo parece estar bien ahora.

(Creo que la respuesta de Nims va en una dirección similar, pero fue (en mi opinión) demasiado amplia. Además, Java realmente no combina y combina fuentes.)