2008-10-07 17 views

Respuesta

70

Si usted tiene acceso al código fuente, se puede hacer esto en el método principal:

// enable anti-aliased text: 
    System.setProperty("awt.useSystemAAFontSettings","on"); 
    System.setProperty("swing.aatext", "true"); 

o, (y si no tienen acceso a la fuente, o si esto es más fácil) puede simplemente pasar por encima de las propiedades del sistema en la JVM mediante la adición de estas opciones para la línea de comandos:

-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true 
+1

+1 Todos los días aprendo algo nuevo. ¡Gracias! – Rekin

+0

este método no funciona para el aspecto y la sensación de Sustancia, ¿tiene alguna idea al respecto? –

+0

Esto no funciona para 'Graphics # paintString (String, int, int)' – Supuhstar

0

gracias por la información. Me preguntaba sobre esto yo mismo. Uso SoapUI (www.eviware.com) y NO, por defecto, usa texto AA. Agregué -Dawt.useSystemAAFontSettings = on -Dswing.aatext = true al archivo de proceso por lotes que lo lanza, PERO eso NO hizo la diferencia. Adivina, tengo que preguntar en su foro.

+0

puede interpretar los argumentos como pertenecientes a la aplicación en lugar de jvm; puede que necesite profundizar un poco más en el archivo bat. (o puede no funcionar para todas las aplicaciones ... en caso afirmativo, avísenme/vote mi respuesta ...) – rcreswick

+1

Pude hacer que esto funcionara editando el archivo de inicio .sh para que la última línea sea leída: java -Dawt.useSystemAAFontSettings = on -Dswing.aatext = true -Dsoapui.properties = soapui.properties -Dgroovy.source.encoding = iso-8859-1 -cp $ SOAPUI_CLASSPATH com.eviware.soapui.SoapUIPro $ * – rcreswick

+1

Te creo podría hacer lo mismo con el archivo soapui bat agregando el -D ....params enumerados aquí en la línea JAVA_OPTS, o simplemente especificando JAVA_OPTS = -Dawt.useSystemAAFontSettings = on -Dswing.aatext = true en el entorno circundante – rcreswick

6

Para el registro, he descubierto que en mis ventanas 7 máquina,

  • Si yo no uso esto en mi código, tengo la buena prestación de ClearType de subpíxeles.
  • Pero si uso esto, obtengo el clásico antialiasing en blanco y negro que es mucho más feo.

Por lo tanto, este código debe usarse con cuidado. Supongo que dejará de ser necesario cuando todos los usuarios de Linux se hayan actualizado a las versiones de OpenJDK que manejan correctamente los alias por defecto.

+7

Pruebe System.setProperty (" awt.useSystemAAFontSettings "," lcd "); y deberías obtener ClearType. – Domchi

+0

Como usuario de Linux y Windows, no me gusta "cleartype". Lo deshabilito a propósito. – Wyatt8740

7

Los controles de desplazamiento en las últimas versiones de Java 6/7 deben cumplir automáticamente con las preferencias de todo el sistema. (Si está usando Windows L & F en un sistema operativo Windows, entonces el texto debería mostrarse usando ClearType si tiene esa configuración habilitada para todo el sistema.) Entonces, quizás una solución simplemente podría ser: ¿habilitar el aspecto y la sensación nativas?

En las aplicaciones que está en desarrollo, si se renderiza su propio texto directamente, también tiene que hacer algo como esto (en algún momento antes de llamar Graphics.drawText o amigos):

if (desktopHints == null) { 
    Toolkit tk = Toolkit.getDefaultToolkit(); 
    desktopHints = (Map) (tk.getDesktopProperty("awt.font.desktophints")); 
} 
if (desktopHints != null) { 
    g2d.addRenderingHints(desktopHints); 
} 

Referencia: http://weblogs.java.net/blog/chet/archive/2007/01/font_hints_for.html

Cuestiones relacionadas