رندر بهتر متن در مرورگرهای مبتنی بر Chromium در ویندوز

کورت کتی-اشمیت
Kurt Catti-Schmidt
پاتریک بروسه
Patrick Brosset

منتشر شده: ۱۲ فوریه ۲۰۲۵

وظیفه یک موتور رندر وب بسیار گسترده است و بخش زیادی از این کار، مانند استایل‌بندی، رسانه یا طرح‌بندی، توسط استانداردها هدایت می‌شود. این استانداردها تضمین می‌کنند که موتورهای مستقل می‌توانند با هم تعامل داشته باشند، که به وب اجازه شکوفایی داده است. اما برخی جزئیات ظریف‌تر، مانند نحوه رندر متن در سطح پیکسل، اغلب به تفسیر توسط نهادهای استاندارد واگذار می‌شود و معمولاً در نهایت به سیستم عامل‌هایی که مرورگرها روی آنها اجرا می‌شوند، متکی هستند.

در سال ۲۰۲۰، مایکروسافت اج یک فرصت نادر داشت - جایگزینی کامل موتور رندرینگ اصلی خود. اج از یک پلتفرم ویندوزی که مستقیماً از APIهای ویندوز استفاده می‌کرد، به کرومیوم منتقل شد و به یک رندرکننده وب چند پلتفرمی واقعی تبدیل شد. قبل از تغییر به کرومیوم، اج کاملاً به یک API ویندوز به نام DirectWrite برای رندر متن متکی بود. با این حال، کرومیوم به Skia ، یک موتور گرافیکی چند پلتفرمی قدرتمند و انعطاف‌پذیر، متکی است که بسیاری از کدهای مخصوص سیستم عامل را از API خود انتزاع می‌کند.

در طول انتقال اج به کرومیوم، تیم اج این فرصت را داشت تا از کاربران خود در مورد موتور رندر کرومیوم بازخورد جمع‌آوری کند. یکی از بازخوردها قابل توجه بود - بسیاری از کاربران اج به اشتراک گذاشتند که متن "رنگ‌پریده" به نظر می‌رسد و با متن در سایر قسمت‌های ویندوز سازگار نیست.

متن در کروم و ویندوزهای قبل از ۱۳۲، رنگ‌پریده به نظر می‌رسید.

تیم این بازخورد را جدی گرفت و تحقیقاتی انجام داد. در حالی که Skia از DirectWrite در ویندوز برای برخی از قابلیت‌ها مانند جستجوی فونت استفاده می‌کند، تبدیل نهایی متن به تصویر (rasterization) در واقع مستقیماً توسط Skia انجام می‌شود. و یکی از عوامل اصلی در بازخورد "رنگ‌پریده" از کاربران، تنظیمات کنتراست و گامای داخلی برای رندر متن است.

دو تفاوت اصلی در کنتراست متن و مقادیر گاما بین موتور مبتنی بر کرومیوم اج و موتور قبلی آن کشف شد. اول اینکه، Skia مقادیر کنتراست متن و گاما را از Windows ClearType Tuner دریافت نمی‌کند. دوم اینکه، از مقادیر پیش‌فرض متفاوتی برای کنتراست متن و گاما نسبت به مقادیر استفاده شده توسط پشته متنی مبتنی بر DirectWrite اج استفاده می‌کند.

تیم اج سال گذشته پشتیبانی از مقادیر ClearType Tuner را مستقیماً در کرومیوم اضافه کرد. این به کاربران مرورگر مبتنی بر کرومیوم این امکان را داد که تنظیمات کنتراست و گامای متن را در ویندوز کنترل کنند. اگرچه این یک گام مهم در مسیر درست بود، اما اکثر کاربران تمایل دارند تنظیمات کنتراست و گامای متن در کل سیستم خود را تنظیم نکنند. بنابراین مرحله بعدی در این مسیر، بررسی جدی تنظیم تنظیمات کنتراست و گامای متن پیش‌فرض برای محتوای متن وب و رابط کاربری مرورگر بود.

تغییر ظاهر متن در وب یک کار بزرگ است. وب همیشه متن زیادی داشته است و یک موتور متن با کیفیت بالا ضروری است. واضح بود که مقدار کنتراست متن باید افزایش یابد، اما برای تعیین میزان تنظیم آن به داده‌ها نیاز بود.

تیم اج از سال ۲۰۲۱ آزمایش مقادیر مختلف کنتراست متن را آغاز کرد. پس از تحقیقات فراوان روی کاربران، اعضای اج و کرومیوم تشخیص دادند که مقدار کنتراست ۱.۰ با رندر متن در اج قبل از کرومیوم مطابقت نزدیکی دارد و در مقایسه با سایر برنامه‌های بومی ویندوز، پایدارتر به نظر می‌رسد.

در تیم اج، ما معتقد بودیم که تحقیقات و آزمایش‌های ما می‌تواند برای کل جامعه کرومیوم در ویندوز مفید باشد، بنابراین یافته‌های خود را با تیم کروم در گوگل به اشتراک گذاشتیم که آنها با آزمایش‌های خود آنها را تأیید کردند. سپس ما به طور پیش‌فرض مقدار کنتراست جدید را برای نسخه‌های ویندوز فعال کردیم و از کروم ۱۳۲ شروع کردیم.

امروزه، همه کاربران مرورگرهای مبتنی بر کرومیوم در ویندوز می‌توانند از تحقیقات، آزمایش‌ها و پیاده‌سازی‌های مشترک سال‌های گذشته بهره‌مند شوند.

متن بعد از تغییر، واضح و شفاف به نظر می‌رسد.

تشکر ویژه از ایان پرست، دنیل لیبی و آلیسون ماهر در مایکروسافت، و همچنین دومینیک روتشس، دیوید یونگ، بن واگنر و برایان عثمان در گوگل برای مشارکتشان در این پروژه!