API cho phông chữ web đẹp và nhanh

Cách sử dụng API CSS của Google Fonts để phân phối phông chữ web một cách hiệu quả.

Công nghệ phông chữ web đã thay đổi rất nhiều trong những năm qua. Trước đây, việc sử dụng hình ảnh văn bản hoặc trình bổ trợ Flash (và việc này đã làm ảnh hưởng đến khả năng tối ưu hoá công cụ tìm kiếm của trang web) là một phương pháp đặc biệt, nhưng giờ đây, đây là phương pháp tiêu chuẩn trên web. Trước đây, bạn phải tải toàn bộ phông chữ trước khi trang tải — với các kiểu và ký tự mà bạn có thể chưa từng sử dụng — nhưng ngay cả điều đó cũng đã trở thành dĩ vãng.

Google Fonts CSS API cũng đã phát triển qua nhiều năm để bắt kịp những thay đổi trong công nghệ phông chữ web. API này đã có nhiều cải tiến so với tuyên bố giá trị ban đầu của mình – giúp tốc độ web nhanh hơn bằng cách cho phép trình duyệt của bạn lưu các phông chữ thường dùng vào bộ nhớ đệm trên tất cả các trang web sử dụng API này. Điều này không còn đúng nữa, nhưng API vẫn cung cấp các tính năng tối ưu hoá quan trọng và bổ sung để trang web tải nhanh và phông chữ hoạt động tốt.

Khi sử dụng CSS API của Google Fonts, trang web của bạn chỉ có thể yêu cầu dữ liệu phông chữ cần thiết để giảm thiểu thời gian tải CSS, đảm bảo khách truy cập trang web có thể tải nội dung của bạn nhanh nhất có thể. API sẽ phản hồi từng yêu cầu bằng phông chữ phù hợp nhất cho trình duyệt web đó.

Tất cả những việc này xảy ra bằng cách thêm một dòng HTML vào mã của bạn.

Cách sử dụng API CSS của Google Fonts

Tài liệu về CSS API của Google Fonts tóm tắt rất rõ ràng:

Bạn không cần phải lập trình; tất cả những gì bạn cần làm là thêm một đường liên kết đến bảng kiểu đặc biệt vào tài liệu HTML, sau đó tham chiếu phông chữ theo kiểu CSS.

Bạn chỉ cần đưa một dòng duy nhất vào HTML, như ví dụ dưới đây:

<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap" rel="stylesheet" />

Khi yêu cầu một phông chữ từ API, bạn chỉ định bộ phông chữ hoặc bộ phông chữ mà bạn muốn, cũng như trọng số, kiểu, tập hợp con và nhiều tuỳ chọn khác (không bắt buộc). Sau đó, API sẽ xử lý yêu cầu của bạn theo một trong hai cách:

  1. Nếu yêu cầu của bạn sử dụng các tham số phổ biến mà API đã có tệp, thì API này sẽ ngay lập tức trả về CSS cho người dùng của bạn và chuyển họ đến các tệp này.
  2. Nếu bạn đã yêu cầu phông chữ có các tham số mà API hiện chưa lưu vào bộ nhớ đệm, thì API sẽ nhanh chóng tập hợp con các phông chữ của bạn, sử dụng HarfBuzz để thực hiện nhanh chóng và trả về CSS trỏ đến các phông chữ đó.

Tệp phông chữ có thể lớn nhưng không nhất thiết phải lớn

Phông chữ trên web có thể có kích thước lớn. Chỉ một trọng số của Noto Sans Japanese trong WOFF2 đã có kích thước gần 3,4 MB. Việc tải phông chữ này xuống cho từng người dùng sẽ làm chậm thời gian tải trang. Khi mỗi mili giây đều quan trọng và mỗi byte đều quý giá, bạn cần đảm bảo rằng bạn chỉ tải dữ liệu mà người dùng cần.

API CSS của Google Fonts có thể tạo các tệp phông chữ rất nhỏ (gọi là tập hợp con), được tạo theo thời gian thực để chỉ phân phát cho người dùng văn bản và kiểu mà trang web của bạn yêu cầu. Thay vì phân phát toàn bộ phông chữ, bạn có thể yêu cầu các ký tự cụ thể bằng cách sử dụng tham số text.

<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap&text=RobtMn" rel="stylesheet" />

Biểu đồ có số lượng ký tự của tiếng Latinh cơ bản, tiếng Hy Lạp cơ bản và tiếng Hy Lạp mở rộng.

CSS API cũng tự động cung cấp các tính năng tối ưu hoá phông chữ web bổ sung cho người dùng mà không cần bất kỳ thông số API nào. API sẽ phân phát cho người dùng các tệp CSS đã bật unicode-range (nếu trình duyệt web của họ hỗ trợ), nhờ đó, họ chỉ tải phông chữ cho các ký tự cụ thể mà trang web của bạn cần.

Giờ đây, bạn có thể dùng chỉ số mô tả CSS phạm vi unicode để chống lại việc tải phông chữ lớn xuống. Thuộc tính CSS này đặt một phạm vi ký tự Unicode mà nội dung khai báo @font-face chứa. Nếu một trong các ký tự này được hiển thị trên trang, phông chữ đó sẽ được tải xuống. Phương thức này hoạt động tốt với mọi loại ngôn ngữ, vì vậy, bạn có thể lấy một phông chữ có chứa các ký tự Latinh, Hy Lạp hoặc Cyrillic và tạo các tập hợp con nhỏ hơn. Trong biểu đồ trước, bạn có thể thấy rằng nếu phải tải cả ba bộ ký tự này, thì sẽ có hơn 600 ký tự.

Biểu đồ có số lượng ký tự của bảng chữ cái La-tinh cơ bản, La-tinh mở rộng, tiếng Hàn và tiếng Nhật.

Thao tác này cũng bật phông chữ tiếng Trung, tiếng Nhật và tiếng Hàn (CJK) cho web. Trong biểu đồ trên, bạn có thể thấy rằng phông chữ CJK bao gồm 15-20 lần số ký tự mà phông chữ ký tự Latinh có. Những phông chữ này thường rất lớn và nhiều ký tự trong các ngôn ngữ đó không được sử dụng thường xuyên như các ký tự khác.

Việc sử dụng CSS API và unicode-range có thể giảm khoảng 90% lượng dữ liệu chuyển tệp. Khi sử dụng chỉ số mô tả unicode-range, bạn có thể xác định riêng từng phần và mỗi lát cắt chỉ được tải xuống khi nội dung của bạn chứa một trong các ký tự trong các dải ký tự này.

Ví dụ: Nếu chỉ muốn đặt từ "こんにちは" trong Noto Sans JP, bạn có thể:

  • Tự lưu trữ tệp WOFF2 của riêng bạn.
  • Sử dụng CSS API để truy xuất WOFF2.
  • Sử dụng CSS API với tham số text= được đặt thành "こんにちは".

Biểu đồ so sánh các phương thức tải phông chữ Noto Sans JP xuống.

Trong ví dụ này, bạn có thể thấy rằng bằng cách sử dụng CSS API, bạn đã tiết kiệm được 97,5% so với tự lưu trữ phông chữ WOFF2, nhờ hỗ trợ tích hợp của API để tách các phông chữ lớn thành phạm vi unicode. Bằng cách tiến thêm một bước nữa và chỉ định chính xác văn bản bạn muốn hiển thị, bạn có thể giảm thêm kích thước phông chữ xuống chỉ còn 95,3% phông chữ CSS API – nhỏ hơn 99,9% so với phông chữ tự lưu trữ.

Google Fonts CSS API sẽ tự động phân phối phông chữ ở định dạng nhỏ nhất và tương thích nhất mà trình duyệt của người dùng hỗ trợ. Nếu người dùng đang sử dụng trình duyệt hỗ trợ WOFF2, API sẽ cung cấp phông chữ ở định dạng WOFF2, nhưng nếu họ đang sử dụng trình duyệt cũ, API sẽ phân phối phông chữ ở định dạng mà trình duyệt đó hỗ trợ. Để giảm kích thước tệp cho mỗi người dùng, API cũng xoá dữ liệu khỏi phông chữ khi không cần thiết. Ví dụ: dữ liệu gợi ý sẽ bị xoá đối với người dùng có trình duyệt không cần đến dữ liệu đó.

Chuẩn bị sẵn sàng cho phông chữ web của bạn trong tương lai bằng CSS API của Google Fonts

Nhóm Google Fonts cũng đóng góp vào các tiêu chuẩn W3C mới để tiếp tục cải tiến các công nghệ phông chữ web, chẳng hạn như WOFF2. Một dự án hiện tại là Tăng phông chữ, cho phép người dùng tải các phần rất nhỏ của tệp phông chữ khi chúng được sử dụng trên màn hình và phát trực tuyến trong phần còn lại theo yêu cầu, vượt qua hiệu suất của dải Unicode. Khi bạn sử dụng API phông chữ web của chúng tôi, người dùng sẽ nhận được những điểm cải tiến cơ bản về công nghệ chuyển phông chữ này khi các điểm cải tiến đó có sẵn trong trình duyệt của họ.

Đây là điểm hay của API phông chữ: người dùng được hưởng lợi từ từng điểm cải tiến công nghệ mới mà không cần thay đổi trang web của bạn. Định dạng phông chữ web mới? Không thành vấn đề. Hỗ trợ trình duyệt hoặc hệ điều hành mới? Chúng tôi đã xử lý vấn đề này. Vì vậy, thay vì phải loay hoay với việc bảo trì phông chữ web, bạn có thể tập trung vào người dùng và nội dung của mình.

Phông chữ biến đổi hỗ trợ tích hợp

Phông chữ biến thể là các tệp phông chữ có thể lưu trữ một loạt biến thể thiết kế giữa nhiều trục. Phiên bản mới của API CSS Phông chữ Google hỗ trợ các phông chữ này. Việc thêm một trục biến thể khác sẽ giúp phông chữ linh hoạt hơn, nhưng có thể làm tăng gần gấp đôi kích thước của tệp phông chữ.

Khi bạn đưa ra yêu cầu cụ thể hơn về API CSS, API CSS của Google Fonts chỉ có thể phân phát phần phông chữ biến thể mà trang web của bạn cần để giảm kích thước tải xuống cho người dùng. Điều này cho phép sử dụng các phông chữ khác nhau cho web mà không làm mất thời gian tải trang lâu. Bạn có thể thực hiện việc này bằng cách chỉ định một giá trị trên một trục hoặc chỉ định một dải ô; thậm chí, bạn có thể chỉ định nhiều trục và nhiều bộ phông chữ trong một yêu cầu. API linh hoạt để đáp ứng nhu cầu của bạn.

Dễ triển khai, được tối ưu hoá cho bạn

Google Fonts CSS API giúp bạn phân phối phông chữ:

  • Tương thích tốt hơn với trình duyệt web.
  • Nhỏ nhất có thể.
  • Gửi nhanh chóng.
  • Dễ sử dụng hơn cho bạn.

Để biết thêm thông tin về Google Fonts, hãy truy cập vào fonts.google.com. Để tìm hiểu thêm về CSS API, hãy tham khảo Tài liệu API.

Lời cảm ơn

Hình ảnh chính của leesehee.