ממשק ה-API למפתחים מאפשר גישה למטא-נתונים של כל המשפחות שמוצגות ב-Google Fonts. היא מאפשרת לאפליקציות לשלוח שאילתות אל Google Fonts כדי לקבל את משפחות הגופנים הזמינות. ה-REST API מספק נתונים בפורמט JSON שכוללים את הסגנונות והסקריפטים (שנקראים קבוצות משנה ב-Google Fonts) בכל משפחה. ממשק ה-API יכול למיין את רשימת משפחות הגופנים בסדר אלפביתי, לפי תאריך ההוספה, לפי מספר הסגנונות, לפי מגמה או לפי פופולריות.
קהל
המסמך הזה מיועד למפתחי אתרים ואפליקציות. כדי להשתמש ב-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, על ידי הכללת מפתח API בכל בקשה.
קבלת מפתח API ושימוש בו
להזמנת מפתחאפשר גם ליצור מפתח חדש בדף Credentials.
אחרי שיש לכם מפתח API, האפליקציה יכולה להוסיף את פרמטר השאילתה key=yourAPIKey
לכל כתובות ה-URL של הבקשות.
מפתח ה-API בטוח להטמעה בכתובות URL, ואין צורך בקידוד.
פרטים
תגובת ה-JSON (כפי שמוצג בדוגמה שלמעלה) מורכבת ממערך בשם items שמכיל אובייקטים עם מידע על כל משפחת גופנים.
אובייקט משפחה מורכב מהשדות הבאים:
- kind: סוג האובייקט, אובייקט של גופן אינטרנט
- family: שם המשפחה
- קבוצות משנה: רשימה של סקריפטים שנתמכים על ידי המשפחה
- תפריט: כתובת URL של קבוצת המשנה המשפחתית, שכוללת רק את שם המשפחה.
- וריאציות: הסגנונות השונים שזמינים למשפחה
- version: גרסת משפחת הגופנים.
- axes: טווח הצירים, מופיע רק לפי בקשה (ראו בהמשך) עבור גופנים משתנים.
- 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
הערכים האפשריים למיון הם:
- alpha: מיון הרשימה לפי סדר אלפביתי
- תאריך: מיון הרשימה לפי תאריך ההוספה (הגופן האחרון שנוסף או עודכן מוצג ראשון)
- פופולריות: מיון הרשימה לפי פופולריות (המשפחה הכי פופולרית ראשונה)
- סגנון: מיון הרשימה לפי מספר הסגנונות הזמינים (המשפחה עם הכי הרבה סגנונות מוצגת ראשונה)
- מגמות: מיון הרשימה לפי משפחות שרואים בהן עלייה בשימוש (המשפחה שרואים בה את העלייה הכי גדולה מוצגת ראשונה)
סינון
שאילתה לגבי משפחה ספציפית
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
מוגדרת, השדה 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, } ] }, [...] ] }
מפרט כתובות URL של API
webfonts?key=<your_key>[&family=<family>][&subset=<subset>][&capability=<capability>...][&sort=<sort>]
your_key
: מפתח ה-API של המפתח.
family
: שם של משפחת גופנים.
subset
: שם של קבוצת משנה של גופן.
category
: serif
| sans-serif
| monospace
| display
| handwriting
capability
: VF
| WOFF2
.
sort
: alpha
| date
| popularity
| style
| trending
.