Developer 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
รับคีย์หรือสร้างในหน้าข้อมูลเข้าสู่ระบบ
หลังจากมีคีย์ API แล้ว แอปพลิเคชันจะต่อท้ายพารามิเตอร์การค้นหา
key=yourAPIKey
ใน URL ของคำขอทั้งหมดได้
คีย์ API ปลอดภัยสำหรับการฝังใน URL โดยไม่จำเป็นต้องมีการเข้ารหัส
รายละเอียด
การตอบกลับ JSON (ดูตัวอย่างด้านบน) ประกอบด้วยอาร์เรย์ที่ชื่อ "items" ซึ่งมีออบเจ็กต์ที่มีข้อมูลเกี่ยวกับตระกูลแบบอักษรแต่ละรายการ
ออบเจ็กต์ครอบครัวประกอบด้วยฟิลด์ต่อไปนี้
- kind: ประเภทของออบเจ็กต์ ซึ่งเป็นออบเจ็กต์ของเว็บฟอนต์
- family: ชื่อของครอบครัว
- ชุดย่อย: รายชื่อสคริปต์ที่ตระกูลแบบอักษรรองรับ
- menu: URL ไปยังชุดข้อมูลย่อยของครอบครัวซึ่งครอบคลุมเฉพาะชื่อของครอบครัว
- variants: รูปแบบต่างๆ ที่มีให้สำหรับตระกูล
- version: เวอร์ชันชุดแบบอักษร
- axes: ช่วงแกน มีเฉพาะเมื่อมีการขอ (ดูด้านล่าง) สำหรับแบบอักษรแบบแปรผัน
- lastModified: วันที่ (รูปแบบ "ปปปป-ดด-วว") ที่แก้ไขตระกูลแบบอักษรครั้งล่าสุด
- ไฟล์: ไฟล์ตระกูลแบบอักษร (ที่มีสคริปต์ที่รองรับทั้งหมด) สำหรับแต่ละ ตัวแปรที่มี
- 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: จัดเรียงรายการตามลำดับตัวอักษร
- วันที่: จัดเรียงรายการตามวันที่เพิ่ม (แบบอักษรที่เพิ่มหรืออัปเดตล่าสุดจะแสดงก่อน)
- ความนิยม: จัดเรียงรายการตามความนิยม (ครอบครัวที่ได้รับความนิยมมากที่สุดจะแสดงก่อน)
- 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 } ] }, [...] ] }
แท็ก
หากตั้งค่า 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, } ] }, [...] ] }
ข้อกำหนด 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