متن اپ Rune در برابر متن macOS، پیکسل به پیکسل
خلاصهٔ کاملتر
این گزارش تحقیقی از پروژهٔ Grimoire میآد. یه پاراگراف با فونت Inter، اندازهٔ ۱۶ پوینت و همون رنگ و موقعیت، یه بار توسط اپ Rune و یه بار توسط CoreText (یعنی موتور رسم متن خود macOS) کشیده شده. بعد پیکسلها با هم مقایسه شدن. نتیجه: چیدمان کاملاً یکیه و جای حروف حتی ۰.۰۰۰۰ پیکسل هم فرق نداره، ولی تو نمایشگر 2x، جوهر متن Rune فقط ۰.۷۸۴ برابر مک هست. یعنی متن مک حدود ۲۷ درصد پررنگتره و تو 1x این فرق به ۳۷ درصد میرسه.
بزرگترین عامل font smoothing هست (یعنی کاری که مک برای پررنگتر دیدن خطهای نازک حروف میکنه). نویسنده میگه این یه منحنی شفافیت نیست. مک واقعاً دور حروف رو کمی چاقتر میکنه: تو اندازهٔ ۳۲ پیکسل، ۰.۱۸۷۵ پیکسل به هر طرف افقی و ۰.۳۷۵ پیکسل فقط به لبهٔ بالا. این مقدار با اندازهٔ فونت بیشتر میشه و به روشنایی رنگ متن هم بستگی داره. همین یه عامل ۱۷ درصد جوهر اضافه میکنه.
عامل بعدی فضای ترکیب رنگه. مک رنگ حروف رو مستقیم روی مقادیر sRGB با پسزمینه ترکیب میکنه، ولی Rune این کارو تو فضای linear انجام میده که متن تیره روی زمینهٔ روشن رو نازکتر نشون میده. فرق دیگه اینه که Rune جای حروف رو به ¼ پیکسل گرد میکنه، ولی مک به ¼ پوینت، یعنی ½ پیکسل تو 2x. تو 1x هم Rune حالت hinting (یعنی جابهجا کردن خطها برای جا افتادن روی شبکهٔ پیکسل) رو روشن میکنه، ولی CoreText هیچوقت این کارو نمیکنه.
وقتی همهٔ اینها تو Rune کپی شد، میانگین اختلاف هر کانال از ۴.۹۲ به ۰.۵۵ (از ۲۵۵) رسید. چیزی که میمونه دو تا عامله: فرق دو rasterizer (یعنی کدی که شکل حرف رو به پیکسل تبدیل میکنه) روی منحنیها، و یه رفتار عجیب و مستند نشده تو مک. این رفتار وقتی حرف دقیقاً روی خط پایهٔ عدد صحیح و تو اندازههای ۱۰، ۱۲ و ۱۶ پیکسل کشیده بشه پیش میآد. جمعبندی نویسنده اینه که برای پیکسلهای کاملاً یکسان، باید حروف رو خود CoreGraphics بکشه و تو atlas ذخیره کنه.
نکات کلیدی:
- جای حروف، kerning و شکست خطها تو Rune و CoreText کاملاً یکیه (اختلاف ۰.۰۰۰۰ پیکسل).
- متن macOS تو 2x حدود ۲۷ درصد و تو 1x حدود ۳۷ درصد پررنگتره.
- font smoothing مک با چاق کردن دور حروف ۱۷ درصد جوهر اضافه میکنه و الگوریتمش منتشر نشده.
- با کپی کردن چهار عامل، میانگین اختلاف از ۴.۹۲ به ۰.۵۵ رسید.
- ۲ عامل از ۸ تا بدون استفاده از CoreGraphics قابل تطبیق نیستن.




