new - java setcolor
¿Por qué las fuentes en java 1.7 son diferentes a 1.6? (1)
He estado construyendo un entorno de desarrollo en Java (como un pequeño proyecto de investigación). Como parte de eso, construí un componente de texto personalizado que dibuja el propio texto utilizando Graphics2d así:
g2.drawString("some text", 100, 100);
Todo funcionó bien desarrollando cosas en Eclipse usando 1.6 (supongo que esto es proporcionado por Apple), hasta que empaqué todo en Java Java 1.7 (proporcionado por Oracle). Obviamente, en los entornos de desarrollo, las fuentes son bastante importantes, por lo que me disgustó ver los resultados en 1.7.
He intentado empaquetar fuentes personalizadas, pero todas aparecen granuladas y erosionadas. La comparación anterior no es tan mala, pero algunas fuentes (como Mónaco) se ven terribles.
Supongo que esto tiene que ver con cómo Apple engancha las cosas al Cuarzo. Pero, ¿hay alguna manera de mejorar las cosas para que no se vea terrible en otros sistemas? ¿Alguien tiene una estrategia para esto?
Actualización: Esta es la comparación en Mónaco:
y una comparación ampliada de la C (en paintComponent) en Mónaco (1.7 a la izquierda, 1.6 a la derecha). Tenga en cuenta que estoy cargando la fuente desde un archivo ttf local usando:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("monaco.ttf");
Font customFont = null;
try
{
customFont = Font.createFont(Font.TRUETYPE_FONT, is);
customFont = customFont.deriveFont(16.0f).deriveFont(Font.BOLD);
is.close();
ge.registerFont(customFont);
} catch (FontFormatException e1)
{
e1.printStackTrace();
} catch (IOException e1)
{
e1.printStackTrace();
}
this.setFont(customFont);
Tenga en cuenta también que el suavizado está activado usando:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Java 6 fue desarrollado por Apple. Apple puso mucho trabajo en la capa de gráficos para que funcione con Quartz / Cocoa y, especialmente, para que se vea bien.
Para Java 7, el desarrollo fue asumido por Oracle. Esto no significa que Oracle haya obtenido las fuentes de Apple. En su lugar, comenzaron de nuevo (probablemente portando un código Unix a OS X). Esto significa que todo el trabajo que Apple puso para hacer que Java se vea bien en OS X se perdió básicamente.
Apple se preocupa mucho por el diseño. Oráculo ... bueno ... no tanto ( muestra A , exhibición B )
¿Qué puedes hacer?
- Escribe y envía un parche al OpenJDK.
- Obtenga suficientes personas que se preocupen de pedirle a Apple que envíe un parche (el dinero podría ayudar)
- Volver a Java 6
- Use JNI para acceder a Cocoa / Quartz directamente para obtener el motor de renderizado de fuentes OS X.
Artículos relacionados: