Rendering teks yang lebih baik di browser berbasis Chromium di Windows

Kurt Catti-Schmidt
Kurt Catti-Schmidt
Patrick Brosset
Patrick Brosset

Dipublikasikan: 12 Februari 2025

Tugas mesin rendering web sangat luas, dan sebagian besar pekerjaan ini, seperti gaya, media, atau tata letak, didorong oleh standar. Standar ini memastikan bahwa mesin independen dapat beroperasi secara interoperabilitas, yang memungkinkan web berkembang. Namun, beberapa detail yang lebih halus, seperti cara teks dirender pada tingkat piksel, sering kali diserahkan ke interpretasi oleh badan standar, dan biasanya bergantung pada sistem operasi yang menjalankan browser.

Pada tahun 2020, Microsoft Edge memiliki peluang langka—penggantian lengkap mesin rendering yang mendasarinya. Edge beralih ke Chromium, dari platform khusus Windows tempat Edge menggunakan Windows API secara langsung, dan menjadi perender web lintas platform yang sebenarnya. Sebelum beralih ke Chromium, Edge sepenuhnya bergantung pada Windows API yang disebut DirectWrite untuk rendering teks. Namun, Chromium bergantung pada Skia, mesin grafis lintas platform yang canggih dan fleksibel, yang mengabstraksi banyak kode khusus sistem operasi dari API-nya.

Selama transisi Edge ke Chromium, tim Edge memiliki kesempatan untuk mengumpulkan masukan dari pengguna tentang mesin rendering Chromium. Satu masukan sangat signifikan—banyak pengguna Edge berbagi bahwa teks tampak "pudar" dan tidak terlihat konsisten dengan teks di bagian lain Windows.

Teks terlihat pudar di Chrome di Windows sebelum versi 132.

Tim mempertimbangkan masukan ini dengan serius dan melakukan penyelidikan. Meskipun Skia menggunakan DirectWrite di Windows untuk fungsi tertentu seperti pencarian font, rasterisasi teks akhir sebenarnya ditangani langsung oleh Skia. Dan salah satu faktor utama dalam masukan "pudar" dari pengguna adalah setelan kontras dan gamma internal untuk rendering teks.

Dua perbedaan utama dalam nilai kontras dan gamma teks ditemukan antara mesin berbasis Chromium Edge dan mesin sebelumnya. Pertama, Skia tidak mengambil nilai kontras dan gamma teks dari Windows ClearType Tuner. Kedua, Skia menggunakan nilai default yang berbeda untuk kontras dan gamma teks daripada yang digunakan oleh tumpukan teks berbasis DirectWrite Edge.

Tim Edge menambahkan dukungan untuk menghormati nilai ClearType Tuner di Chromium secara langsung, tahun lalu. Hal ini memberi pengguna browser berbasis Chromium kemampuan untuk mengontrol setelan kontras dan gamma teks di Windows. Meskipun ini merupakan langkah signifikan ke arah yang benar, sebagian besar pengguna cenderung tidak menyesuaikan setelan kontras dan gamma teks di seluruh sistem. Jadi, fase berikutnya dalam perjalanan ini adalah mempertimbangkan dengan serius penyesuaian setelan kontras dan gamma teks default untuk konten teks UI web dan browser.

Mengubah tampilan teks di web adalah tugas yang besar. Web selalu memiliki banyak teks, dan mesin teks berkualitas tinggi diperlukan. Terbukti bahwa nilai kontras teks perlu ditingkatkan, tetapi data diperlukan untuk menentukan seberapa banyak penyesuaian yang harus dilakukan.

Tim Edge mulai bereksperimen dengan berbagai nilai kontras teks pada tahun 2021. Setelah banyak riset pengguna, anggota Edge dan Chromium menentukan bahwa nilai kontras 1.0 sangat cocok dengan rendering teks Edge pra-Chromium dan terlihat konsisten dibandingkan dengan aplikasi Windows native lainnya.

Di tim Edge, kami yakin bahwa riset dan eksperimen kami dapat bermanfaat bagi komunitas Chromium secara keseluruhan di Windows, jadi kami membagikan temuan kami kepada tim Chrome di Google, yang mengonfirmasinya dengan eksperimen mereka sendiri. Kemudian, kami melanjutkan untuk mengaktifkan nilai kontras baru secara default untuk build Windows, mulai dari Chrome 132.

Saat ini, semua pengguna browser berbasis Chromium di Windows dapat memanfaatkan riset, eksperimen, dan penerapan bersama selama beberapa tahun terakhir.

Teks terlihat jelas dan tajam setelah beralih.

Terima kasih khusus kepada Ian Prest, Daniel Libby, dan Alison Maher di Microsoft, serta Dominik Röttsches, David Yeung, Ben Wagner, dan Brian Osman di Google atas kontribusi mereka pada project ini.