next/font is more complicated than you think


Thời gian vừa rồi mình làm việc khá nhiều với Astro, và việc Astro không có 1 cái tương tự next/font khiến mình khá là đau đầu, website mình vẫn dính CLS khi load trang lần đầu khi font chưa được cache.

Mình đã nghĩ là oh, có thể next/font sử dụng 1 API browser hoặc meta tag nào đấy giúp giải quyết vấn đề này, rõ ràng mình có thể làm lại logic tương tự ở Astro.

Nhưng sau khi thử qua các cách font-display: swap, fallback, optional, preload font, serve font từ local nhưng vẫn không thể có được kết quả mong muốn.

Cho tới khi mình tìm được astro-font thì vấn đề được giải quyết, có vẻ như astro-fontnext/font có 1 cơ chế giống nhau, tò mò thôi thúc mình đọc code để tìm hiểu kĩ hơn, dưới đây là cách nó thực sự hoạt động:

Đọc thêm về font metrics và background của font fallback tại đây.

Tham khảo thêm: