Domanda

Molte app Java non usano caratteri anti-alias per impostazione predefinita, nonostante la capacità di Swing di fornirli. Come si può forzare un'applicazione java arbitraria per utilizzare i caratteri AA? (sia per le applicazioni che sto eseguendo, sia per quelle che sto sviluppando)

È stato utile?

Soluzione

Se hai accesso alla fonte, puoi farlo nel metodo principale:

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

oppure, (e se non si ha accesso all'origine o se ciò è più semplice) è possibile semplicemente passare le proprietà di sistema sopra in jvm aggiungendo queste opzioni alla riga di comando:

-Dawt.useSystemAAFontSettings=on

Altri suggerimenti

I controlli di oscillazione nelle ultime versioni di Java 6/7 dovrebbero rispettare automaticamente le preferenze a livello di sistema. (Se stai usando Windows L & amp; F su un sistema operativo Windows, il testo dovrebbe essere visualizzato usando ClearType se hai quell'impostazione abilitata a livello di sistema.) Quindi forse una soluzione potrebbe essere semplicemente: abilitare l'aspetto nativo?

Nelle applicazioni che stai sviluppando, se esegui il rendering del tuo testo direttamente, devi anche fare qualcosa del genere (a un certo punto prima di chiamare Graphics.drawText o amici):

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

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

Per la cronaca, ho scoperto che nella mia macchina Windows 7,

  • Se non lo uso nel mio codice, ottengo il piacevole rendering subpixel ClearType.
  • Ma se uso questo, ottengo il classico antialiasing in bianco e nero che è molto più brutto.

Quindi questo codice dovrebbe essere usato con attenzione. Immagino che smetterà di essere necessario quando tutti gli utenti Linux avranno aggiornato le versioni di OpenJDK che gestiscono bene l'aliasing di default.

grazie per le informazioni. Me lo stavo chiedendo da solo. Uso SoapUI (www.eviware.com) e NON, per impostazione predefinita, non usa il testo AA. Ho aggiunto -Dawt.useSystemAAFontSettings = on -Dswing.aatext = true per il file batch che lo avvia MA CHE NON ha fatto differenza. Indovina, devo chiedere nel loro forum.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top