2014-05-23 44 views
3

我最近問了一個關於JavaFX 8中顏色不匹配的問題:Color Mismatch In JavaFX8 Labels這讓我開始了正確的道路,但我無法弄清楚如何禁用子像素渲染。我試過-fx-font-smoothing-type: gray-fx-font-smoothing-type: lcd沒有明顯的效果。我已經完成了關於這個話題的研究,但是我什麼都沒有提出。如何禁用子像素渲染?

回答

2

直接回答你的問題是有一個系統屬性標誌,你可以設置。

-Dprism.lcdtext=false 

這應該關閉子像素渲染。該標誌不是該平臺正式記錄或支持的部分,因此未來可能會更改或刪除該標誌。

有關係統屬性的setting的信息。

子像素渲染是一個非常微妙的效果,所以要真正看到差異,您可能需要截取應用程序並使用像MS Paint這樣的工具並放大像素以近距離查看它們的顏色變化差異。

另請注意,在某些環境(如OS X)中,JavaFX的默認配置是禁用子像素渲染,因爲這是操作系統其餘部分通常呈現文本的方式。一般來說,JavaFX通常試圖與默認的操作系統文本渲染非常接近。


調整字體渲染提示是驚人的複雜和偏離合理的科學。要知道,即使關閉子像素渲染,文本仍然會應用抗鋸齒和其他調整。例如,在Windows 7和Java 8下,JavaFX將使用特定於操作系統的文本呈現系統(如ClearType),因此對操作系統中的字體呈現配置進行調整可以改變JavaFX中字體的呈現方式。

+0

如何輸入此命令?另外,我是否應該將這個問題帶給FX開發團隊? –

+0

已更新答案以鏈接至如何設置系統屬性。我認爲你不需要爲FX開發團隊帶來問題。我認爲JavaFX中的文本渲染似乎正在按照設計運行良好。 – jewelsea