Soru JavaFX yazı tiplerinde kenar yumuşatma nasıl zorlanır?


JavaFX 8 uygulamasının GUI'sini test ederken, bazı etiketlerin anti-aliased metin göstermediğini fark ettim. Biraz uğraştıktan ve mücadele ettikten sonra, çok sinir bozucu bir şey öğrendim. Kenar yumuşatma, yalnızca yazı tipi boyutunun 80 pikselden büyük olduğu etiketlere uygulanır. İşte, AA uygulanmış JavaFX ve Swing uygulamalarını karşılaştıran bir örnek:

enter image description here

Basit kod: https://gist.github.com/anonymous/be60bb89181376ff12aa

AA'yı tüm yazı tipi boyutlarında zorlamak için bir yol var mı? Bu sana da mı geliyor? Benzer bir hatayı araştırdım JavaFX Jiraama hiç kimse bundan şikayet etmiyor. Belki bunun için bir tane açmalıyım?

Yardımcı olabilecek bazı bilgiler:

java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
Windows 8.1 64 bits [Version 6.3.9600]

21
2018-06-17 00:14


Menşei


Ben açtım Jira'da böcek bunun için. - Fernando Paz


Cevaplar:


Varsayılan olarak, JavaFX 8, LCD anti-kenar boşluğunu ayarlamak için modena.css kullanır, ki bu bazı durumlarda yazı tiplerini düzgünleştirmez. Yazı tipi boyutu 80'den büyük olduğunda, AA tekniği gri skala AA'ya geçer (performans sorunları için). Bu nedenle, her boyutta düzgün kenarlar elde etmek için bunun yerine gri ölçekli AA kullanılmalıdır.

Bu CSS tarafından yapılabilir:

.text{
    -fx-font-smoothing-type: gray;
}

Veya sistem argümanları aracılığıyla:

-Dprism.lcdtext=false

Veya sistem özelliklerini ayarlama:

System.setProperty("prism.lcdtext", "false");

Teşekkür eden herkese teşekkürler Jira!


29
2018-06-25 22:00



Varsayılan metin yumuşatma türünün "gri" olduğunu düşünüyorum (bkz. docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html), ancak Modena CSS "lcd" olarak ayarladı. - Paolo Fulgoni
UI bir FXML şablonundan yüklendiyse, System.setProperty("prism.lcdtext", "false"); çağrılmalı önce yükleme, aksi halde etkisi olmaz. - Ivan Akulov