2014-06-17 10 views
19

मेरे जावाएफएक्स 8 एप्लिकेशन के जीयूआई का परीक्षण करते समय, मैंने देखा कि कुछ लेबल एंटी-एलाइज्ड टेक्स्ट प्रदर्शित नहीं कर रहे हैं। कुछ गुस्सा और संघर्ष करने के बाद, मुझे एक बहुत ही परेशान चीज मिली जो हो रहा है। एंटी-एलियासिंग केवल उन लेबलों पर लागू किया जा रहा है जो फ़ॉन्ट आकार 80px से अधिक है।जावाएफएक्स फोंट में एंटी-एलाइजिंग को कैसे बल दें?

enter image description here

नमूना कोड: https://gist.github.com/anonymous/be60bb89181376ff12aa

वहाँ सभी फ़ॉन्ट आकार में ए.ए. मजबूर करने के लिए एक रास्ता है यहाँ एक उदाहरण ए.ए. साथ JavaFX और स्विंग अनुप्रयोगों की तुलना लागू किया जाता है? क्या यह आपके साथ भी होता है? मैंने JavaFX Jira पर एक समान बग की खोज की, लेकिन अब तक कोई भी शिकायत नहीं कर रहा है। शायद मुझे इसके लिए एक खोलना चाहिए?

कुछ जानकारी मदद मिल सकती है:

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] 
+0

मैंने इसके लिए [जेरा पर बग] खोला है (https://javafx-jira.kenai.com/browse/RT-37705)। –

उत्तर

27

डिफ़ॉल्ट रूप से, JavaFX 8 modena.css का उपयोग करता है एलसीडी विरोधी अलियासिंग, जो कुछ मामलों में फोंट चिकनी प्रतीत नहीं होता है स्थापित करने के लिए। जब फ़ॉन्ट का आकार 80 से अधिक होता है, तो एए तकनीक ग्रे स्केल एए (प्रदर्शन चिंताओं के लिए) में बदल जाती है। इसलिए, किसी भी आकार में चिकनी किनारों को प्राप्त करने के लिए, ग्रे स्केल एए का उपयोग इसके बजाय किया जाना चाहिए।

यह सीएसएस के द्वारा किया जा सकता है:

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

या प्रणाली तर्क के माध्यम से:

-Dprism.lcdtext=false 

या स्थापित करने प्रणाली गुण:

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

धन्यवाद सब लोग जो Jira पर जवाब दिया!

+2

मुझे लगता है कि डिफ़ॉल्ट पाठ चिकनाई प्रकार "ग्रे" है (https://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html देखें), लेकिन मोडेना सीएसएस इसे सेट करता है "एलसीडी" करने के लिए। –

+3

यह ध्यान देने योग्य है कि यदि यूआई को एक FXML टेम्पलेट से लोड किया गया है, तो 'System.setProperty ("prism.lcdtext", "false"); इसे _before_ लोड करने के लिए कहा जाना चाहिए, अन्यथा इससे कोई प्रभाव नहीं पड़ेगा। –

संबंधित मुद्दे