Android के लिए मान्य मान: fontFamily और वे किससे मैप करते हैं?


266

इस प्रश्न के उत्तर में उपयोगकर्ता android:fontFamily12 वेरिएंट (नीचे देखें) के मानों को सूचीबद्ध करता है । ये मूल्य कहां से आते हैं? के लिए दस्तावेज़ android:fontFamilyकिसी भी जगह (मैं जाँच में यह जानकारी की सूची नहीं है यहां , और यहां )। तार को एंड्रॉइड स्टाइल में सूचीबद्ध किया जाता है । विभिन्न स्थानों में xml फ़ाइल, लेकिन ये नक्शे रोबोटो फ़ॉन्ट पर वापस कैसे आते हैं?

Android 4.1 / 4.2 से, निम्नलिखित रोबोटो फ़ॉन्ट परिवार उपलब्ध हैं:

android:fontFamily="sans-serif"           // roboto regular  
android:fontFamily="sans-serif-light"     // roboto light  
android:fontFamily="sans-serif-condensed" // roboto condensed  
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)  
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)

इसके साथ संयोजन में

android:textStyle="normal|bold|italic" 

12 वेरिएंट संभव हैं:

  • नियमित
  • तिरछा
  • साहसिक
  • मोटे तिरछे अक्षर
  • रोशनी
  • लाइट-इटैलिक
  • पतला
  • पतली इटैलिक
  • नियमित रूप से गाढ़ा
  • संघनित इटैलिक
  • गाढ़ा बोल्ड
  • गाढ़ा बोल्ड-इटैलिक

में styles.xmlआवेदन मैं किसी पर काम कर रहा हूँ में फ़ाइल फ़ॉन्ट परिवार के रूप में इस सूचीबद्ध है, और मैं बहुत कर रहा हूँ यकीन है कि यह गलत है:

<item name="android:fontFamily">Roboto-Regular.ttf</item>

मैं सही तरीके से सेट किए गए हमारे एप्लिकेशन के लिए थीम प्राप्त करना चाहता हूं (जिसमें फ़ॉन्टफ़िली का सही तरीके से उपयोग करना शामिल है) और सभी अतिरेक को हटा दें, जो कि कुछ शैलियों में है जो फ़ाइल पर एक नज़र डालने से पहले बनाई गई थीं।

जवाबों:


346

ये मूल्य कहां से आते हैं? Android के लिए दस्तावेज़ीकरण: fontFamily इस जानकारी को किसी भी स्थान पर सूचीबद्ध नहीं करता है

ये वास्तव में प्रलेखन में सूचीबद्ध नहीं हैं। लेकिन उनका उल्लेख यहां 'फ़ॉन्ट परिवारों' के तहत किया गया है। दस्तावेज़ एंड्रॉइड जेली बीन 4.1 के लिए हर नए सार्वजनिक एपीआई को सूचीबद्ध करता है।

मैं किसी को भी फ़ॉन्ट परिवार के रूप में सूचीबद्ध कर रहा हूं, जिस एप्लिकेशन में मैं काम कर रहा हूं, वह style.xml फ़ाइल में है, और मुझे पूरा यकीन है कि यह गलत है:

हां, यह गलत है। आप फ़ॉन्ट फ़ाइल को संदर्भित नहीं करते हैं, आपको ऊपर दिए गए दस्तावेज़ में उल्लिखित फ़ॉन्ट नाम का उपयोग करना होगा। इस मामले में यह होना चाहिए था:

<item name="android:fontFamily">sans-serif</item>

पहले से बताए गए उत्तर की तरह, 12 वेरिएंट संभव हैं:

Android जेली बीन (4.1) में जोड़ा गया - एपीआई 16:

नियमित (डिफ़ॉल्ट):

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item> 

इटैलिक :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>

बोल्ड :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>

बोल्ड-इटैलिक :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>

प्रकाश :

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>

हल्की-इटैलिक :

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>

पतली :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>

पतली-इटैलिक :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>

संघनित नियमित :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>

संघनित इटैलिक :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>

गाढ़ा बोल्ड :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>

गाढ़ा बोल्ड-इटैलिक :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>

Android लॉलीपॉप (v5.0) में जोड़ा गया - एपीआई 21:

माध्यम :

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>

मध्यम-इटैलिक :

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>

काला :

<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>

त्वरित संदर्भ के लिए, यह इस प्रकार है:


2
Haha: DI वास्तव में इससे पहले कि इस साइट के बारे में पता था, इसलिए यह मुश्किल नहीं था। लेकिन भविष्य के संदर्भ के लिए: मैं Google खोज पर developer.android.com पर खोज का उपयोग करना पसंद करता हूं, क्योंकि आप खोज को केवल एपीआई, ब्लॉग पोस्ट, रिलीज नोट्स आदि तक सीमित कर सकते हैं
अहमद

8
और अगर आप रुचि रखते हैं: यह वह जगह है जहां फोंट परिभाषित किए गए हैं। यह वर्ग फोंट लोड करता है और यह एक उन्हें प्रबंधित करता है।
अहमद

1
@androiddeveloper किया। रोबोटो ब्लैक फ़ॉन्ट के रंग को संदर्भित नहीं करता है, लेकिन रोबोटो बोल्ड का सिर्फ एक "अधिक फ़ोल्डर" संस्करण है। मैंने नीचे एक संदर्भ चित्र जोड़ा है।
अहमद

1
@ अहमदाबाद यह स्पष्ट करने के लिए धन्यवाद। यहाँ आपका +1 ... :)
Android डेवलपर

2
इसके अलावा, फोंटमिली android.googlesource.com/platform/frameworks/base/+/master/data/…
Pauland

110

उपलब्ध फोंट (ओरियो के रूप में)

सभी फोंट का पूर्वावलोकन

मटीरियल डिज़ाइन टाइपोग्राफी पेज फोंट और शैलियों चुनने पर इन फ़ॉन्ट और सुझावों में से कुछ के लिए क़ौम है।

कोड के आधार पर: fonts.xmlएंड्रॉइड फोंट की निश्चित और कभी-विस्तार वाली सूची है।


इन फोंट का उपयोग करना

सेट android:fontFamilyऔर android:textStyleविशेषताएँ, जैसे

<!-- Roboto Bold -->
<TextView
    android:fontFamily="sans-serif"
    android:textStyle="bold" />

इस तालिका से वांछित मानों के लिए:

Font                     | android:fontFamily          | android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin              | sans-serif-thin             |
Roboto Light             | sans-serif-light            |
Roboto Regular           | sans-serif                  |
Roboto Bold              | sans-serif                  | bold
Roboto Medium            | sans-serif-medium           |
Roboto Black             | sans-serif-black            |
Roboto Condensed Light   | sans-serif-condensed-light  |
Roboto Condensed Regular | sans-serif-condensed        |
Roboto Condensed Medium  | sans-serif-condensed-medium |
Roboto Condensed Bold    | sans-serif-condensed        | bold
Noto Serif               | serif                       |
Noto Serif Bold          | serif                       | bold
Droid Sans Mono          | monospace                   |
Cutive Mono              | serif-monospace             |
Coming Soon              | casual                      |
Dancing Script           | cursive                     |
Dancing Script Bold      | cursive                     | bold
Carrois Gothic SC        | sans-serif-smallcaps        |

(Noto Sans एक फॉलबैक फ़ॉन्ट है; आप इसे सीधे निर्दिष्ट नहीं कर सकते)

नोट: यह तालिका से ली गई है fonts.xml। प्रत्येक फ़ॉन्ट के परिवार का नाम और शैली फोंट। Xml, उदाहरण के लिए सूचीबद्ध है

<family name="serif-monospace">
    <font weight="400" style="normal">CutiveMono.ttf</font>
</family>

serif-monospaceइस प्रकार फ़ॉन्ट परिवार है, और normalशैली है।


अनुकूलता

Font.xml और पूर्व system_fonts.xml के लॉग के आधार पर , आप देख सकते हैं कि प्रत्येक फ़ॉन्ट कब जोड़ा गया था:

  • आइसक्रीम सैंडविच: रोबोटो नियमित, बोल्ड, इटैलिक और बोल्ड इटैलिक
  • जेली बीन: रोबोटो लाइट, हल्की इटैलिक, कंडेंस्ड, कंडेंस्ड बोल्ड, कंडेंस्ड इटैलिक और कंडेन्स्ड इटैलिक
  • जेली बीन MR1: रोबोटो पतली और पतली इटैलिक
  • Lollipop:
    • रोबोटो मीडियम, मीडियम इटैलिक, ब्लैक और ब्लैक इटैलिक
    • नोटो सेरिफ़ नियमित, बोल्ड, इटैलिक, बोल्ड इटैलिक
    • क्यूटिव मोनो
    • जल्द आ रहा है
    • डांसिंग स्क्रिप्ट
    • गाजर गोथिक एस.सी.
    • नोटो संस
  • Oreo MR1: रोबोटो संघनित माध्यम

1
आपको Android संस्करण के बारे में लॉग पर कैसे मिला?
एंड्रॉइड डेवलपर

3
@androiddeveloper मैं उन तारीखों को देख रहा था जब प्रत्येक पंक्ति को जोड़ा गया था। : पता करने के लिए ठीक फोंट जो एक विशेष संस्करण में उपलब्ध हैं, उस संस्करण, लॉलीपॉप के लिए उदाहरण के लिए system_fonts.xml पर नज़र android.googlesource.com/platform/frameworks/base/+/...
Newtonx

मेरा एक और केवल इस बारे में चपेट है कि यह वर्णानुक्रम में नहीं है: पी लेकिन फिर भी! यह सबसे अच्छा जवाब होना चाहिए! धन्यवाद!
T.Woody

9

जहाँ तक मुझे जानकारी है, आप xml या थीम में कस्टम फोंट घोषित नहीं कर सकते। मैं आमतौर पर केवल कस्टम क्लासेस बना देता हूं जो टेक्स्टव्यू को बढ़ाता है जो तात्कालिकता पर अपना स्वयं का फ़ॉन्ट सेट करता है और मेरे लेआउट xml फ़ाइलों में उन का उपयोग करता है।

अर्थात:

public class Museo500TextView extends TextView {
    public Museo500TextView(Context context, AttributeSet attrs) {
        super(context, attrs);      
        this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
    }
}

तथा

<my.package.views.Museo900TextView
        android:id="@+id/dialog_error_text_header"
        android:layout_width="190dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:textSize="12sp" />

1
यह एक recyclerview में आप बहुत सारी स्मृति खर्च कर सकते हैं
Florescu Cătălin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.