API สําหรับนักพัฒนาแอป

Developer API ให้ข้อมูลเมตาแก่ทุกครอบครัวที่แสดงโดย Google Fonts ทําให้แอปสามารถค้นหาแบบอักษรของ Google Fonts สําหรับชุดแบบอักษรที่มีอยู่ API ของ REST จะให้ข้อมูลในรูปแบบ JSON ที่รวมสไตล์และสคริปต์ (เรียกว่าส่วนย่อยใน Google Fonts) ในแต่ละครอบครัว API สามารถจัดเรียงรายการครอบครัวตามลําดับตัวอักษร ตามวันที่เพิ่ม ตามรูปแบบ ตามแนวโน้ม หรือตามความนิยม

ผู้ชม

เอกสารนี้จัดทําขึ้นสําหรับนักพัฒนาเว็บและแอปพลิเคชัน การใช้ 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 (ดูตัวอย่างด้านบน) ประกอบด้วยอาร์เรย์ชื่อ "รายการ" ที่มีออบเจ็กต์ที่มีข้อมูลเกี่ยวกับแบบอักษรแต่ละชุด

ออบเจ็กต์ครอบครัวประกอบด้วยช่องต่อไปนี้

  • ชนิด: ชนิดของวัตถุ
  • ครอบครัว: ชื่อของครอบครัว
  • ชุดย่อย: รายการสคริปต์ที่ครอบครัวรองรับ
  • เมนู: URL ไปยังชุดย่อยของครอบครัวที่ครอบคลุมเฉพาะชื่อครอบครัว
  • ตัวแปร: สไตล์ต่างๆ สําหรับครอบครัว
  • version: รุ่นของแบบอักษร
  • แกน: ช่วงแกน นําเสนอตามคําขอเท่านั้น(ดูด้านล่าง) สําหรับแบบอักษรแปรผัน
  • lastModified: วันที่ (รูปแบบ "ปปปป-ดด-วว") แบบอักษรที่ได้รับการแก้ไขครั้งล่าสุด
  • 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('');

[...]

การจัดเรียง

รายชื่อครอบครัวจะถูกส่งคืนตามลําดับที่ไม่ได้เป็นค่าเริ่มต้น อย่างไรก็ตาม คุณสามารถ จัดเรียงรายการโดยใช้พารามิเตอร์จัดเรียง

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

ค่าการจัดเรียงที่เป็นไปได้มีดังนี้

  • อัลฟา: จัดเรียงรายการตามตัวอักษร
  • date: จัดเรียงรายการตามวันที่เพิ่ม (เพิ่มหรืออัปเดตแบบอักษรล่าสุดก่อน)
  • ความนิยม: จัดเรียงรายการตามความนิยม (ครอบครัวยอดนิยมมาก่อน)
  • style: จัดเรียงรายการตามจํานวนสไตล์ที่มีอยู่ (ครอบครัวที่มีสไตล์มากที่สุดก่อน)
  • แนวโน้ม: จัดเรียงรายการตามครอบครัวที่ได้เห็นการเติบโตในการใช้งาน (ครอบครัวเห็นการเติบโตสูงสุดก่อน)

การกรอง

ค้นหาครอบครัวที่ต้องการ

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

แบบอักษรที่ปรับเปลี่ยนได้

แบบอักษรที่ปรับเปลี่ยนได้มีรูปแบบที่หลากหลายอย่างต่อเนื่อง ตามค่าเริ่มต้นแล้ว ระบบจะแสดงผลไฟล์แบบอักษรแบบคงที่สําหรับแบบอักษรที่แยกกันในตําแหน่งมาตรฐาน หากตั้งค่า capaibility=VF ไว้ ระบบจะแสดงผลไฟล์แบบอักษรที่แปรผันแทนแบบคงที่แบบคงที่พร้อมกับข้อมูลเมตาของช่วงแกนที่มี ตัวอย่างดังตัวอย่างต่อไปนี้

https://www.googleapis.com/webfonts/v1/webfonts?capaibility=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