Cập nhật API CSS

Google Fonts hiện hỗ trợ đầy đủ các phông chữ có thể thay đổi trong bản cập nhật API phiên bản 2. Chúng tôi sẽ giải thích cách gọi cả bộ phông chữ đơn và nhiều bộ phông chữ cũng như cách chỉ định phạm vi trục. Để hiểu rõ hơn về các phông chữ có thể thay đổi, hãy tìm hiểu thêm qua tài liệu tài liệu minh hoạ tương tác này của David Berlow tại TypeNetwork.

Tính năng mới

Tất cả đều bắt đầu với một URL cơ sở mới:

https://fonts.googleapis.com/css2

Cú pháp để chỉ định kiểu trong từng nhóm đã thay đổi để mô tả phông chữ biến đổi "không gian thiết kế".

Hướng dẫn bắt đầu nhanh

Sao chép và dán HTML này vào một tệp:

<html>
  <head>
    <link rel="stylesheet"
          href="https://fonts.googleapis.com/css2?family=Crimson+Pro">
    <style>
      body {
        font-family: 'Crimson Pro', serif;
        font-size: 48px;
      }
    </style>
  </head>
  <body>
    <div>Making the Web Beautiful!</div>
  </body>
</html>

Khi sử dụng trình duyệt để mở tệp, trang sẽ hiển thị văn bản " web the web" ("Làm đẹp cho web") ở phông chữ Crimson Pro.

Làm cho web trở nên đẹp mắt!

Nhiều gia đình

Để yêu cầu nhiều gia đình, hãy chỉ định thông số family= cho từng gia đình.

Ví dụ: để yêu cầu phông chữ Crimson ProLiterata:

https://fonts.googleapis.com/css2?family=Crimson+Pro&family=Literata

Sao chép và dán HTML này vào một tệp:

<html>
  <head>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Crimson+Pro&family=Literata">
    <style>
      body {
        font-size: 48px;
      }
      div:nth-child(1) {
        font-family: 'Crimson Pro', serif;
      }
      div:nth-child(2) {
        font-family: 'Literata’, serif;
      }
    </style>
  </head>
  <body>
    <div>Making the Web Beautiful!</div>
    <div>Making the Web Beautiful!</div>
  </body>
</html>

Khi sử dụng trình duyệt để mở tệp, trang sẽ hiển thị văn bản "Make the Web Beauty", trước tiên là trong Crimson Pro, sau đó là Literata.

Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!

Phạm vi trục

Phông chữ biến đổi cung cấp dải kiểu liên tục, thường không có độ trễ bổ sung. Điều này liên quan đến thiết kế đáp ứng. Kiểu chữ động này sử dụng nhiều kiểu định dạng liên tục, cung cấp tất cả trọng số từ 100 đến 900 trên một trang, và thay đổi trọng số theo đáp ứng dựa trên một số điều kiện.

Để yêu cầu một dải trục phông chữ có thể thay đổi, hãy kết hợp 2 giá trị với ..

(Các) phông chữ Yêu cầu
Crimson Pro [wght 200-900] https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@200..900
Crimson Pro Nghiêng [wght 200-900] https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@1,200..900
Crimson Pro Đậm nghiêng và [wght 200-900] https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,200..900;1,700
Có vẻ như trình duyệt của bạn không hỗ trợ các phông chữ thay đổi (caniuse). Trên trình duyệt hỗ trợ các biến thể phông chữ, văn bản sau đây sẽ hiển thị Crimson Pro dưới dạng một tập hợp mượt mà trọng số từ 400 đến 500. Ảnh động CSS có thể làm cho văn bản thay đổi mượt mà phong cách tương tác.
Nếu trình duyệt của bạn hỗ trợ đầy đủ các phông chữ có thể thay đổi (caniuse), văn bản sau đây sẽ hiển thị Crimson Pro dưới dạng một tập hợp mượt mà trọng số từ 400 đến 500. Ảnh động CSS có thể làm cho văn bản thay đổi mượt mà phong cách tương tác.
Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!

Phong cách riêng, chẳng hạn như trọng lượng

Nếu không có thông số kỹ thuật về kiểu, API sẽ cung cấp kiểu mặc định của nhóm được yêu cầu. Để yêu cầu các kiểu riêng lẻ khác, chẳng hạn như trọng số cụ thể, hãy thêm dấu hai chấm (:) vào sau tên bộ phông chữ, theo sau là danh sách từ khoá thuộc tính trục theo thứ tự bảng chữ cái, ký hiệu a (@) và một hoặc nhiều danh sách giá trị cho các thuộc tính trục đó.

Những ví dụ này cho thấy điều này trong thực tế.

(Các) phông chữ Yêu cầu
Crimson Pro (mặc định) https://fonts.googleapis.com/css2?family=Crimson+Pro
Crimson Pro In đậm https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@700
Crimson Pro Pro và bold https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@400;700
Crimson Pro Đậm và In đậm https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,700;1,700

Google Fonts liệt kê tất cả kiểu chữ hiện có cho mỗi bộ phông chữ.

Kiểu mặc định

Khi yêu cầu không chỉ định vị trí hoặc phạm vi cho một trục, vị trí mặc định sẽ được sử dụng. Vị trí mặc định của trục in nghiêng là 0 (thông thường) và mặc định là trục trọng số là 400 (thông thường).

Đối với các gia đình có trục không chứa vị trí mặc định, các yêu cầu không chỉ định vị trí cho các trục đó sẽ không được thực hiện. Ví dụ: khi yêu cầu một nhóm gia đình có trục trọng lượng từ 500 đến 900, bạn phải chỉ định vị trí trọng lượng.

Trọng số không chuẩn

Với phông chữ tĩnh, kiểu trọng số thường được chỉ định là bội số của 100 (ví dụ: 300, 400, 700). Phông chữ biến đổi cung cấp cả trọng số chuẩn và trọng số trung gian. Cách kết xuất trọng số trung gian:

https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@450
Có vẻ như trình duyệt của bạn không hỗ trợ các phông chữ thay đổi (caniuse). Trên trình duyệt hỗ trợ các biến thể phông chữ, văn bản sau đây sẽ kết xuất Crimson Pro ở các trọng số riêng biệt về hình ảnh là 400, 450 và 500.
Nếu trình duyệt của bạn hỗ trợ đầy đủ phông chữ có thể thay đổi (caniuse), văn bản sau đây sẽ hiển thị Crimson Pro ở các trọng số riêng biệt về hình ảnh là 400, 450 và 500.
Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!
Làm cho web trở nên đẹp mắt!

Tối ưu hoá độ trễ và kích thước tệp

Hãy thể hiện chính xác những kiểu bạn đang dùng. API phân phối các kiểu được yêu cầu trong bộ phông chữ nhỏ gọn nhất. Việc yêu cầu kiểu không sử dụng có thể khiến người dùng tải xuống nhiều dữ liệu phông chữ hơn mức cần thiết, gây ra độ trễ lâu hơn. Nếu bạn chỉ sử dụng 3 trọng số cụ thể, hãy chỉ định các trọng số đó trong yêu cầu dưới dạng các kiểu riêng lẻ. Nếu bạn sử dụng phạm vi trọng số liên tục, hãy chỉ định phạm vi trọng số đó trong yêu cầu của bạn.

Sử dụng chế độ hiển thị phông chữ

Thuộc tính font-display cho phép bạn kiểm soát những gì sẽ xảy ra khi phông chữ vẫn đang tải hoặc không hiển thị. Việc chỉ định một giá trị khác auto mặc định thường thích hợp.

Truyền giá trị mong muốn vào tham số display:

https://fonts.googleapis.com/css2?family=Crimson+Pro&display=swap

Tối ưu hoá yêu cầu phông chữ

Thông thường, khi muốn sử dụng phông chữ web trên trang web hoặc ứng dụng của mình, bạn biết trước mình sẽ cần chữ cái nào. Điều này thường xảy ra khi bạn đang sử dụng phông chữ web trong biểu trưng hoặc tiêu đề.

Trong những trường hợp này, bạn nên cân nhắc chỉ định giá trị text= trong URL yêu cầu phông chữ. Việc này cho phép Google Fonts trả về một tệp phông chữ được tối ưu hoá cho yêu cầu của bạn. Trong một số trường hợp, điều này có thể làm giảm kích thước của tệp phông chữ tới 90%.

Để sử dụng tính năng này, bạn chỉ cần thêm text= vào yêu cầu API của mình. Ví dụ: Nếu chỉ sử dụng Inconsolata cho tiêu đề blog, bạn có thể tự đặt tiêu đề làm giá trị của text=. Yêu cầu sẽ có dạng như sau:

https://fonts.googleapis.com/css2?family=Comfortaa&text=Hello

Cũng như với mọi chuỗi truy vấn, bạn nên mã hoá URL giá trị:

https://fonts.googleapis.com/css2?family=Comfortaa&text=Hello%20World

Tính năng này cũng dùng được cho các phông chữ quốc tế, cho phép bạn chỉ định các ký tự UTF-8. Ví dụ: ¡Hola! được biểu thị dưới dạng:

https://fonts.googleapis.com/css2?family=Comfortaa&text=%c2%a1Hola!

Xin lưu ý rằng bạn chỉ có thể chỉ định tham số 'text=' một lần. Yêu cầu này áp dụng cho tất cả gia đình trong yêu cầu này. Vui lòng sử dụng các yêu cầu API riêng nếu bạn cần tối ưu hoá văn bản riêng cho nhiều gia đình.

Tạo URL API

Độ nghiêm ngặt

Xin lưu ý rằng API CSS đã cập nhật sẽ nghiêm ngặt hơn về những yêu cầu được chấp nhận so với API CSS ban đầu.

Nguyên tắc chung:

  • Liệt kê các trục theo thứ tự bảng chữ cái (en-US ngôn ngữ)
  • Các nhóm giá trị trục (ví dụ: tuples) cần được sắp xếp theo số
  • Các bộ dữ liệu không được trùng lặp hoặc chạm vào (ví dụ: wght 400..500 và 500..600)

Quy cách của API API

/css2?family=<spec>[&family=<spec>...][&text=<text>][&display=<display>]

spec: <family_name>[:<axis_tag_list>@<axis_tuple_list>]

family_name: Tên bộ phông chữ

axis_tag_list: <axis>[,<axis>...] // Sorted alphabetically (en-US locale)

axis: Thẻ trục, ví dụ: ital, wdth, wght

axis_tuple_list: <axis_tuple>[;<axis_tuple>...]

axis_tuple: <value>[,<value>...] // Same length as axis_tag_list

value: <range> | <float>

range: <float>..<float>

float: Một giá trị trong phạm vi trục tương ứng

text: Văn bản sẽ hiển thị trong kiểu chữ được yêu cầu

display: auto | block | swap | fallback | optional

Hỗ trợ trình duyệt cũ

Các trình duyệt không hỗ trợ phông chữ có thể không hiển thị được thiết kế của bạn như dự kiến. Kiểm tra tính năng hỗ trợ phông chữ có thể thay đổi của trình duyệt trên caniuse.

Bằng cách thực hành tính năng nâng cao tăng dần, bạn có thể tránh hành vi không mong muốn trong các trình duyệt cũ đó. Sử dụng các truy vấn @supports trong CSS để thay thế các tính năng phông chữ của biến.

Trong ví dụ này, chúng tôi muốn sử dụng trọng số 450 của Văn bản Markazi, nhưng sẽ phải quay lại Chế độ thông thường (trọng số 400) hoặc Trung bình (trọng số 500) khi các tính năng phông chữ không được hỗ trợ:

<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Markazi+Text:wght@450" />

<style>
  * {
    font-family: 'Markazi Text';
    font-weight: 400;
  }

  @supports (font-variation-settings: "wght" 450) {
    * {
      font-family: 'Markazi Text';
      font-weight: 450;
    }
  }
</style>

Yêu cầu CSS Markazi+Text:wght@450 gửi trọng số 450 đến các ứng dụng khách hỗ trợ phông chữ có thể thay đổi và trọng số 400 và 500 cho các ứng dụng không hỗ trợ. Nhìn chung, tính năng dự phòng trong phạm vi yêu cầu của bạn sẽ có trong các trình duyệt cũ.

Axis Dự phòng
ital 0, 1
wght 100, 200, 300, 400, 500, 600, 700, 800, 900

Những ví dụ này cho thấy các kiểu sẽ có trên trình duyệt cũ cho một số yêu cầu.

Yêu cầu Các kiểu có sẵn trên trình duyệt cũ
ital@0 ital@0
wght@500 wght@500
wght@432 wght@400;500
wght@440..560 wght@400;500;600

Phông chữ biến thể có sẵn

Bạn có thể xem bảng phông chữ biến đổi trong API phiên bản 2 tại đây.

Tài liệu đọc thêm

  • Xem danh sách đầy đủ các bộ phông chữ do API phông chữ của Google cung cấp trên Google Fonts.
  • Tìm hiểu thêm về cách hoạt động của API Google Fonts trên trang Cân nhắc kỹ thuật.