API توسعه دهنده

Developer API دسترسی به ابرداده را برای همه خانواده‌هایی که توسط فونت‌های Google ارائه می‌شوند، می‌دهد. این امکان را به برنامه‌ها می‌دهد تا فونت‌های Google را برای خانواده‌های فونت موجود جستجو کنند. REST API داده‌هایی را در قالب JSON ارائه می‌کند که شامل سبک‌ها و اسکریپت‌ها (که در فونت‌های گوگل زیرمجموعه نامیده می‌شوند) در هر خانواده است. API می‌تواند فهرست خانواده‌ها را بر اساس حروف الفبا، بر اساس تاریخ اضافه شدن، تعداد سبک‌ها، روند یا محبوبیت مرتب کند.

مخاطب

این سند برای توسعه دهندگان وب و برنامه در نظر گرفته شده است. استفاده از Developer API نیازمند دانش جاوا اسکریپت است.

یک مثال سریع

برای بازیابی لیست پویا فونت های ارائه شده توسط سرویس فونت گوگل، درخواست زیر را ارسال کنید:

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 Fonts Developer API ارسال می کند، خود را با قرار دادن یک کلید API با هر درخواست شناسایی کند.

به دست آوردن و استفاده از یک کلید API

یک کلید دریافت کنید

یا در صفحه اعتبارنامه ایجاد کنید.

بعد از اینکه یک کلید API داشتید، برنامه شما می تواند پارامتر query key= yourAPIKey به همه URL های درخواستی اضافه کند.

کلید API برای جاسازی در URL ها ایمن است. به هیچ کدگذاری نیاز ندارد.

جزئیات

پاسخ JSON (به نمونه بالا مراجعه کنید) از آرایه ای به نام "items" تشکیل شده است که حاوی اشیایی با اطلاعات مربوط به هر خانواده فونت است.

یک شی خانواده از فیلدهای زیر تشکیل شده است:

  • kind: نوع شی، یک شیء فونت وب
  • خانواده: نام خانواده
  • زیر مجموعه ها: لیستی از اسکریپت های پشتیبانی شده توسط خانواده
  • منو: نشانی اینترنتی زیرمجموعه خانواده که فقط نام خانواده را پوشش می دهد.
  • انواع: سبک های مختلف موجود برای خانواده
  • نسخه: نسخه خانواده فونت.
  • محورها: محدوده محور، فقط در صورت درخواست ارائه می شود (به زیر مراجعه کنید) برای فونت های متغیر.
  • lastModified: تاریخ (قالب "yyyy-MM-dd") خانواده فونت برای آخرین بار اصلاح شد.
  • فایل ها: فایل های خانواده فونت (با همه اسکریپت های پشتیبانی شده) برای هر یک از انواع موجود.

با ترکیب اطلاعات برای هر خانواده، ایجاد یک درخواست 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

مقادیر مرتب سازی ممکن عبارتند از:

  • alpha: لیست را بر اساس حروف الفبا مرتب کنید
  • تاریخ: فهرست را بر اساس تاریخ اضافه شده مرتب کنید (جدیدترین فونت اضافه شده یا به روز شده ابتدا)
  • محبوبیت: فهرست را بر اساس محبوبیت مرتب کنید (در ابتدا محبوب ترین خانواده)
  • سبک: فهرست را بر اساس تعداد سبک های موجود مرتب کنید (خانواده با اکثر سبک ها ابتدا)
  • روند: فهرست را بر اساس خانواده هایی که در استفاده از آنها رشد می کنند مرتب کنید (خانواده در ابتدا بیشترین رشد را مشاهده می کند)

فیلتر کردن

پرس و جو از یک خانواده خاص

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 API

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

your_key : کلید API توسعه دهنده شما.

family : نام یک خانواده فونت.

subset : نام یک زیر مجموعه فونت.

capability : VF | WOFF2 .

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