واجهة برمجة التطبيقات لمطوّري البرامج

تتيح واجهة برمجة التطبيقات Developer API الوصول إلى البيانات الوصفية لجميع العائلات التي يتم عرضها بواسطة Google Fonts. يسمح للتطبيقات بالاستعلام عن Google Fonts عن عائلات الخطوط المتاحة. توفّر واجهة برمجة التطبيقات REST API بيانات بتنسيق JSON الذي يتضمّن الأنماط والنصوص البرمجية (التي تُعرف بالمجموعات الفرعية في Google Fonts) في كل مجموعة. يمكن لواجهة برمجة التطبيقات فرز قائمة العائلات أبجديًا أو حسب تاريخ الإضافة أو حسب عدد الأنماط أو حسب الاتجاه أو مدى الرواج.

الجمهور

هذا المستند مخصّص لمطوّري البرامج على الويب والتطبيقات. يتطلب استخدام واجهة برمجة تطبيقات المطور معرفة 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، من خلال تضمين مفتاح واجهة برمجة تطبيقات مع كل طلب.

الحصول على مفتاح واجهة برمجة التطبيقات واستخدامه

الحصول على مفتاح

أو أنشئ حسابًا في صفحة بيانات الاعتماد.

بعد الحصول على مفتاح واجهة برمجة التطبيقات، يمكن لتطبيقك إلحاق مَعلمة طلب البحث key=yourAPIKey بجميع عناوين URL للطلبات.

يمكن تضمين مفتاح واجهة برمجة التطبيقات في عناوين URL بشكل آمن ولا يحتاج إلى أي ترميز.

التفاصيل

تتكون استجابة JSON (راجع النموذج أعلاه) من مصفوفة تسمى "items" تحتوي على كائنات تحتوي على معلومات حول كل مجموعة خطوط.

يتألف عنصر العائلة من الحقول التالية:

  • kind: نوع الكائن، كائن webfont
  • العائلة: اسم العائلة
  • مجموعات فرعية: قائمة بالنصوص البرمجية التي تدعمها العائلة
  • القائمة: عنوان URL للمجموعة الفرعية للعائلة يغطي اسم العائلة فقط.
  • خيارات المنتج: الأنماط المختلفة المتاحة لجميع أفراد العائلة
  • :إصدار مجموعة الخطوط
  • المحاور: نطاق المحور، يتم العرض فقط عند الطلب(انظر أدناه) للخطوط المتغيرة.
  • lastتحرير: التاريخ (التنسيق "yyyy-MM-dd") الذي تم فيه تعديل مجموعة الخطوط في المرة الأخيرة.
  • الملفات: ملفات مجموعة الخطوط (مع جميع النصوص البرمجية المتوافقة) لكل واحد من الصيغ المتوفرة.

من خلال دمج معلومات كل عائلة، يكون من السهل إنشاء طلب واجهة برمجة تطبيقات Fonts. على سبيل المثال، على افتراض أن لدينا إشارة إلى كائن العائلة لـ 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

التحسين

لاسترداد ملفات الخطوط المضغوطة بتنسيق 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
      }
    ]
  },
  [...]
 ]
}

مواصفات عنوان URL لواجهة برمجة التطبيقات

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

your_key: مفتاح واجهة برمجة التطبيقات للمطوِّر

family: اسم مجموعة الخطوط

subset: اسم مجموعة فرعية للخط

capability: VF | WOFF2.

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