2011-08-21 16 views
9

क्या जावा में सिस्टम डिफ़ॉल्ट फ़ॉन्ट नाम प्राप्त करने का कोई तरीका है? डिफ़ॉल्ट फ़ॉन्ट ओएस से अलग हो सकता है। तो अगर हम फ़ॉन्ट एरियल का उपयोग करते हैं तो यह परेशानी पैदा कर सकता है और जार लिनक्स में एरियल फ़ॉन्ट स्थापित किए बिना चल रहा है।सिस्टम डिफ़ॉल्ट फ़ॉन्ट प्राप्त करें

उत्तर

9

JavaFX बनाता है यह बहुत आसान:

import javafx.scene.text.Font; 

तो का उपयोग करें:

Font defaultFont = Font.getDefault(); 

या

// Where 14 is the font size 
Font defaultFont = new Font(14); 
+1

अद्यतित और सही उत्तर IMHO – Troyseph

+0

क्या स्विंग में ऐसा करने का कोई तरीका है? –

+1

@ कार्डिनल सिस्टम मैं स्विंग 'फ़ॉन्ट' बनाने के लिए इस जावाएफएक्स 'फ़ॉन्ट' के नाम, आकार और वजन का उपयोग करने की सलाह दूंगा। यदि आपको इसका स्वाद पसंद नहीं है, तो मुझे लगता है कि साल्वेशन का जवाब आपके लिए है: https://stackoverflow.com/a/11592041/453435 – Supuhstar

5

मुझे नहीं लगता कि सिस्टम डिफ़ॉल्ट फ़ॉन्ट को पुनर्प्राप्त करने का एक तरीका है (स्विंग/एडब्ल्यूटी में फ़ॉन्ट आमतौर पर वर्तमान एलएएफ और घटक से जुड़ा होता है), लेकिन यदि आपकी चिंता फ़ॉन्ट अनुकूलता है - तो आप फ़ॉन्ट आप सभी सिस्टम फोंट के खिलाफ उपयोग कर रहे हैं की जाँच करें:

GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
Font[] allFonts = e.getAllFonts(); 

और एक "असफल ओवर" विकल्प बनाने अगर यह मौजूद नहीं है।

+0

+1 भी देखें [हो रही फोंट, आकार, बोल्ड, ... आदि] (http://stackoverflow.com/questions/6965038/getting-fonts-sizes-bold-etc/6965149# 6,965,149)। –

+1

विफल ओवरों के विषय पर, 'Font.canDisplayUpTo' यह जांचने के लिए बहुत उपयोगी है कि विशिष्ट वर्ण काम करेंगे या नहीं - उदाहरण के लिए, आप एक सीजेके भाषा फ़ॉन्ट का उपयोग कर रहे हैं और उन भाषाओं का समर्थन करने वाले फ़ॉलबैक विकल्प की आवश्यकता है। – misaka

4

उपयोग परिभाषित Font constants जैसे SERIF/SANS_SERIF आदि

+4

यह नहीं है कि प्रश्न –

3

getFont() वर्तमान फ़ॉन्ट, जो कि डिफ़ॉल्ट रिटर्न (आमतौर पर?)। मैंने फ़ॉन्ट आकार बढ़ाने के लिए यह किया।

public MyTextArea(){ 
    Font currentFont = super.getFont(); 
    String fontName = currentFont.getFontName(); 
    int fontStyle = currentFont.getStyle(); 
    int fontSize = currentFont.getSize() + 4; 
    super.setFont(new Font(fontName, fontStyle, fontSize)); 
} 
+1

या इससे पहले था: 'फ़ॉन्ट currentFont = super.getFont(); अगर (currentFont! = null) super.setFont (currentFont.deriveFont (currentFont.getSize2D() + 4)); ' – Supuhstar

3

मैं वर्तमान में इस का उपयोग कर रहा डिफ़ॉल्ट फ़ॉन्ट प्राप्त करने के लिए, हालांकि मैं नहीं बल्कि एक ग्राफिक्स का उपयोग करने की जरूरत नहीं होगी इसे पाने के लिए वस्तु:

 private final Font getFont() 
      { 
       Graphics g = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB).getGraphics(); 
       Font font = new Font(g.getFont().toString(), 0, 12); 
       g.dispose(); 

       return font; 
      } 
3

यहाँ public static Font decode(String str) पर एक नजर डालें। जब डीकोड विधि पैरामीटर के रूप में एक शून्य सूचक प्राप्त करता है तो यह "संवाद" फ़ॉन्ट देता है जो आमतौर पर सिस्टम फ़ॉन्ट होता है।

+0

नया फ़ॉन्ट (Font.decode (null) .getName(), फ़ॉन्ट। BOLD, 14/* आकार * /); काम करता है, धन्यवाद – Exceptyon

17

इस प्रयास करें:

private final Font FONT = new JLabel().getFont(); 
संबंधित मुद्दे