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

توفّر واجهة برمجة التطبيقات للمطوّرين إمكانية الوصول إلى البيانات الوصفية لجميع العائلات التي تقدّمها Google Fonts. ويسمح هذا الإجراء للتطبيقات بالبحث في "خطوط Google" عن مجموعات الخطوط المتاحة. توفّر واجهة برمجة التطبيقات 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 بجميع عناوين URL للطلبات.

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

التفاصيل

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

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

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

من خلال دمج المعلومات الخاصة بكل مجموعة، من السهل إنشاء طلب 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('');

[...]

ترتيب

يتم عرض قائمة العائلات تلقائيًا بدون ترتيب معيّن. ومع ذلك، يمكن ترتيب القائمة باستخدام مَعلمة sort:

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

في ما يلي قيم الترتيب المحتمَلة:

  • alpha: ترتيب القائمة أبجديًا
  • date: ترتيب القائمة حسب تاريخ الإضافة (أحدث خط تمت إضافته أو تعديله أولاً)
  • popularity: ترتيب القائمة حسب مدى الانتشار (العائلة الأكثر رواجًا أولاً)
  • style: ترتيب القائمة حسب عدد الأنماط المتاحة (العائلة التي تتضمّن معظم الأنماط أولاً)
  • رائجة: ترتيب القائمة حسب العائلات التي تسجّل زيادة في الاستخدام (العائلة التي تسجّل أكبر زيادة أولاً)

الفلترة

طلب معلومات عن عائلة معيّنة

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
      }
    ]
  },
  [...]
 ]
}

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

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