डेवलपर एपीआई

Developer API की मदद से, Google Fonts की ओर से उपलब्ध कराई जाने वाली सभी फ़ैमिली के मेटाडेटा को ऐक्सेस किया जा सकता है. इससे ऐप्लिकेशन, Google Fonts से उपलब्ध फ़ॉन्ट फ़ैमिली के बारे में क्वेरी कर सकते हैं. REST API, JSON फ़ॉर्मैट में डेटा उपलब्ध कराता है. इसमें हर फ़ैमिली के स्टाइल और स्क्रिप्ट (Google Fonts में इन्हें सबसेट कहा जाता है) शामिल होते हैं. यह एपीआई, फ़ैमिली की सूची को अंग्रेज़ी के अक्षरों के हिसाब से, जोड़े जाने की तारीख के हिसाब से, स्टाइल की संख्या के हिसाब से, ट्रेंड के हिसाब से या लोकप्रियता के हिसाब से क्रम में लगा सकता है.

ऑडियंस

यह दस्तावेज़, वेब और ऐप्लिकेशन डेवलपर के लिए है. Developer API का इस्तेमाल करने के लिए, JavaScript की जानकारी होना ज़रूरी है.

एक छोटा-सा उदाहरण

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

https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR-API-KEY

नतीजे का सैंपल कुछ ऐसा दिखेगा:

{
 "kind": "webfonts#webfontList",
 "items": [
  [...]
  {
    "family": "Anonymous Pro",
    "variants": [
      "regular",
      "italic",
      "700",
      "700italic"
    ],
    "subsets": [
      "cyrillic",
      "greek",
      "latin",
      "latin-ext"
    ],
    "version": "v21",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2Bp2a15UIB7Un-bOeISG3pLlw89CH98Ko.ttf",
      "italic": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2fp2a15UIB7Un-bOeISG3pHl428AP44Kqr2Q.ttf",
      "700": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2cp2a15UIB7Un-bOeISG3pFuAT0CnW7KOywKo.ttf",
      "700italic": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2ap2a15UIB7Un-bOeISG3pHl4OTCzc6IG30KqB9Q.ttf"
    },
    "category": "monospace",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2Bp2a15UIB7Un-bOeISG3pHl028A.ttf"
  },
  {
    "family": "Antic",
    "variants": [
      "regular"
    ],
    "subsets": [
      "latin"
    ],
    "version": "v19",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/antic/v19/TuGfUVB8XY5DRaZLodgzydtk.ttf"
    },
    "category": "sans-serif",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/antic/v19/TuGfUVB8XY5DRZZKq9w.ttf"
  },
  [...]
 ]
}

Google को आपके ऐप्लिकेशन की पहचान करना

आपका ऐप्लिकेशन, Google Fonts Developer API को हर बार अनुरोध भेजते समय, अपनी पहचान ज़ाहिर करता है. इसके लिए, हर अनुरोध के साथ एपीआई पासकोड शामिल करना होता है.

एपीआई पासकोड पाना और उसका इस्तेमाल करना

कुंजी पाएं

इसके अलावा, क्रेडेंशियल पेज पर जाकर भी इसे बनाया जा सकता है.

एपीआई पासकोड मिलने के बाद, आपका ऐप्लिकेशन सभी अनुरोध यूआरएल में क्वेरी पैरामीटर key=yourAPIKey जोड़ सकता है.

एपीआई पासकोड को यूआरएल में एम्बेड करना सुरक्षित है. इसके लिए, किसी कोडिंग की ज़रूरत नहीं होती.

विवरण

JSON रिस्पॉन्स (ऊपर दिए गए सैंपल देखें) में "items" नाम का एक कलेक्शन होता है. इसमें ऐसे ऑब्जेक्ट होते हैं जिनमें हर फ़ॉन्ट फ़ैमिली के बारे में जानकारी होती है.

फ़ैमिली ऑब्जेक्ट में ये फ़ील्ड शामिल होते हैं:

  • kind: ऑब्जेक्ट का टाइप, वेबफ़ॉन्ट ऑब्जेक्ट
  • फ़ैमिली: फ़ैमिली का नाम
  • सबसेट: परिवार के लिए उपलब्ध स्क्रिप्ट की सूची
  • menu: A url to the family subset covering only the name of the family.
  • वैरिएंट: फ़ैमिली के लिए उपलब्ध अलग-अलग स्टाइल
  • version: फ़ॉन्ट फ़ैमिली का वर्शन.
  • ऐक्सिस: ऐक्सिस की रेंज. वैरिएबल फ़ॉन्ट के लिए, सिर्फ़ अनुरोध करने पर मौजूद होता है (नीचे देखें).
  • lastModified: वह तारीख ("yyyy-MM-dd" फ़ॉर्मैट में), जब फ़ॉन्ट फ़ैमिली में आखिरी बार बदलाव किया गया था.
  • files: हर उपलब्ध वैरिएंट के लिए, फ़ॉन्ट फ़ैमिली की फ़ाइलें (सभी स्क्रिप्ट के साथ).
  • color_capabilities: इस फ़ैमिली के लिए उपलब्ध रंग के फ़ॉर्मैट
  • टैग: ये ऐसे टैग होते हैं जो परिवार के पूरे डिज़ाइनस्पेस पर लागू होते हैं. सिर्फ़ अनुरोध करने पर उपलब्ध कराया जाता है (नीचे देखें).

हर फ़ैमिली की जानकारी को एक साथ रखकर, Fonts API का अनुरोध आसानी से किया जा सकता है. उदाहरण के लिए, मान लें कि हमारे पास Anonymous Pro के लिए फ़ैमिली ऑब्जेक्ट का रेफ़रंस है:

[...]

var apiUrl = [];
apiUrl.push('https://fonts.googleapis.com/css?family=');
apiUrl.push(anonymousPro.family.replace(/ /g, '+'));
if (contains('italic', anonymousPro.variants)) {
  apiUrl.push(':');
  apiUrl.push('italic');
}
if (contains('greek', anonymousPro.subsets)) {
  apiUrl.push('&subset=');
  apiUrl.push('greek');
}

// url: 'https://fonts.googleapis.com/css?family=Anonymous+Pro:italic&subset=greek'
var url = apiUrl.join('');

[...]

क्रम से लगाना

परिवारों की सूची, डिफ़ॉल्ट रूप से किसी खास क्रम में नहीं दिखाई जाती. हालांकि, क्रम से लगाने वाले पैरामीटर का इस्तेमाल करके सूची को क्रम से लगाया जा सकता है:

https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity

सॉर्ट करने के लिए इन वैल्यू का इस्तेमाल किया जा सकता है:

  • ऐल्फ़ा: सूची को वर्णमाला के क्रम में लगाएं
  • तारीख: इस विकल्प को चुनने पर, सूची को जोड़े जाने की तारीख के हिसाब से क्रम में लगाया जाता है. इसमें सबसे पहले, हाल ही में जोड़ा गया या अपडेट किया गया फ़ॉन्ट दिखता है
  • लोकप्रियता: सूची को लोकप्रियता के हिसाब से क्रम में लगाएं. इसमें सबसे लोकप्रिय फ़ैमिली को सबसे ऊपर रखा जाता है
  • स्टाइल: उपलब्ध स्टाइल की संख्या के हिसाब से सूची को क्रम से लगाएं. सबसे ज़्यादा स्टाइल वाले फ़ॉन्ट फ़ैमिली को सबसे ऊपर रखें
  • ट्रेंडिंग: इस सूची को, इस्तेमाल में बढ़ोतरी के हिसाब से क्रम में लगाएं. इसमें सबसे ज़्यादा बढ़ोतरी करने वाले परिवार को सबसे ऊपर रखा जाएगा

फ़िल्टर करना

किसी खास फ़ैमिली के बारे में क्वेरी करना

https://www.googleapis.com/webfonts/v1/webfonts?family=family_name

ग्रीक सबसेट के साथ काम करने वाले सभी फ़ॉन्ट

https://www.googleapis.com/webfonts/v1/webfonts?subset=subset_name

फ़ॉन्ट की कैटगरी के हिसाब से फ़िल्टर करना

https://www.googleapis.com/webfonts/v1/webfonts?category=category_name

ऑप्टिमाइज़ेशन

woff2 फ़ॉर्मैट में कंप्रेस की गई फ़ॉन्ट फ़ाइलों को वापस पाने के लिए

https://www.googleapis.com/webfonts/v1/webfonts?capability=WOFF2

वैरिएबल फ़ॉन्ट

वैरिएबल फ़ॉन्ट में, स्टाइल की लगातार रेंज मिलती हैं. डिफ़ॉल्ट रूप से, स्टैंडर्ड पोज़िशन पर इंस्टैंटिएट किए गए वैरिएबल फ़ॉन्ट के लिए, स्टैटिक फ़ॉन्ट फ़ाइलों का कॉम्बिनेशन दिखाया जाता है. अगर capability=VF सेट है, तो उपलब्ध ऐक्सिस रेंज मेटाडेटा के साथ-साथ, स्टैटिक फ़ॉन्ट फ़ाइलों के बजाय वैरिएबल फ़ॉन्ट फ़ाइल दिखाई जाती है. उदाहरण:

https://www.googleapis.com/webfonts/v1/webfonts?capability=VF

जवाब का उदाहरण:

{
 "kind": "webfonts#webfontList",
 "items": [
  [...]
  {
    "family": "Noto Sans Display",
    "variants": [
      "regular",
      "italic"
    ],
    "subsets": [
      "cyrillic",
      "cyrillic-ext",
      "greek",
      "greek-ext",
      "latin",
      "latin-ext",
      "vietnamese"
    ],
    "version": "v20",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLplK4fy6r6tOBEJg0IAKzqdFZVZxokvfn_BDLxR.ttf",
      "italic": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpjK4fy6r6tOBEJg0IAKzqdFZVZxrktdHvjCaxRgew.ttf"
    },
    "category": "sans-serif",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpbK4fy6r6tOBEJg0IAKzqdFZVZxpMkXJMhnB9XjO1o90LuV-PT4Doq_AKp_3cKZTCa3g.ttf",
    "axes": [
      {
        "tag": "wdth",
        "start": 62.5,
        "end": 100
      },
      {
        "tag": "wght",
        "start": 100,
        "end": 900
      }
    ]
  },
  [...]
 ]
}

टैग

अगर capability=FAMILY_TAGS सेट है, तो टैग फ़ील्ड में वे सभी टैग भर जाएंगे जो फ़ैमिली के पूरे डिज़ाइनस्पेस से जुड़े हैं.

उदाहरण का सैंपल:

{
 "kind": "webfonts#webfontList",
 "items": [
  [...]
  {
    "family": "Noto Sans Display",
    "variants": [
      "regular",
      "italic"
    ],
    "subsets": [
      "cyrillic",
      "cyrillic-ext",
      "greek",
      "greek-ext",
      "latin",
      "latin-ext",
      "vietnamese"
    ],
    "version": "v20",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLplK4fy6r6tOBEJg0IAKzqdFZVZxokvfn_BDLxR.ttf",
      "italic": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpjK4fy6r6tOBEJg0IAKzqdFZVZxrktdHvjCaxRgew.ttf"
    },
    "category": "sans-serif",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpbK4fy6r6tOBEJg0IAKzqdFZVZxpMkXJMhnB9XjO1o90LuV-PT4Doq_AKp_3cKZTCa3g.ttf",
    "tags": [
      {
        "name": "/Expressive/Business",
        "weight": 58
      },
      {
        "tag": "/Sans/Humanist",
        "weight": 100,
      }
    ]
  },
  [...]
 ]
}

एपीआई यूआरएल की खास बातें

webfonts?key=<your_key>[&family=<family>][&subset=<subset>][&capability=<capability>...][&sort=<sort>]

your_key: यह आपकी डेवलपर एपीआई कुंजी है.

family: फ़ॉन्ट फ़ैमिली का नाम.

subset: फ़ॉन्ट के सबसेट का नाम.

category: serif | sans-serif | monospace | display | handwriting

capability: VF | WOFF2.

sort: alpha | date | popularity | style | trending.