Color.js 0.7 با کلی فضای رنگی جدید اومد
خلاصهٔ کاملتر
تو یادداشت انتشاری که لیا وروو (LeaVerou) نوشته، نسخهٔ ۰.۷.۰ حاصل دو پیشنمایشه و کلی فضای رنگی جدید، یه متد گاماتمپینگ تازه، display() باهوشتر و یه dist لاغرتر آورده. Color.js تا حالا بیشتر از ۲۴۰ میلیون بار از npm دانلود شده و تیمش میگه اگه شرکتی به این کتابخونه وابستهست، پایدار نگهداشتنش به نفع خودشه.
مهمترین اضافه، فضاهای رنگیِ gamut-relative هستن: oklch-p3، oklch-srgb و oklch-rec2020 و همین سهتا برای lch. تو این فضاها c = 1 یعنی رنگیترین رنگِ داخل گامات در همون روشنایی و هیو، پس لازم نیست نگران بیرونزدن از گامات باشی. هزینهش اینه که بخشی از یکنواختی ادراکی رو از دست میدی. hsl-p3 و hsl-rec2020 و خانوادهٔ آزمایشی Helmlab هم اضافه شدن.
display() باهوشتر شده: قبلاً وقتی مرورگر یه فضای رنگی رو نمیشناخت، میپرید به عریضترین حالت پیشفرض؛ الان زنجیرهٔ فضاهای پایه رو از نزدیکترین بالا میره و اولین جدِ پشتیبانیشده رو برمیداره، پس گامات رنگ حفظ میشه — مثلاً یه رنگ hsl-p3 حالا به display-p3 برمیگرده نه lab. متد گاماتمپینگ جدید raytrace هم بهجای جستوجوی دوتایی، یه پرتو به مرز گامات میفرسته.
برای نویسندههای پلاگین و ابزار چند چیز از دل کتابخونه بیرون کشیده شده: ماتریسهای تبدیل هر فضا از طریق پراپرتی جدید ColorSpace.M در دسترسه، ابزارهای ریاضی inv و solve اضافه شدن تا برای ساختن فضای رنگی جدید به کتابخونهٔ بیرونی احتیاج نباشه، و فضاهای قطبی با hueId و hueIndex میگن مختصات هیوشون کدومه.
تغییرات شکننده هم داره، هرچند بعیده اکثر کاربرها رو اذیت کنه: باندلهای آمادهٔ ESM حذف شدن و اکسپورتهای ESM مستقیم به فایلهای src اشاره میکنن (که یه باگ دو-نمونهای شدنِ رجیستری Color رو هم حل میکنه)، و فایلهای .min از بسته درآمدن چون مینیفای کردن دیگه کار مصرفکنندهست. آدرسهای قدیمی روی colorjs.io ریدایرکت میشن.
از باگهای مهمِ رفعشده، درهمآمیزی premultiplied تو فضاهای قطبیه: قبلاً همهٔ مختصاتها — از جمله زاویهٔ هیو که ضرب کردنش بیمعنیه — در آلفا ضرب میشدن. حالا طبق CSS Color 4 زاویهٔ هیو کنار گذاشته میشه، تقسیم بر آلفای صفر مختصاتها رو دستنخورده میگذاره و آلفای none دیگه رنگ رو سیاه نمیکنه.
نکات کلیدی:
- شش فضای gamut-relative برای LCH و OKLCH: c = 1 همیشه داخل گامات
- hsl-p3، hsl-rec2020 و خانوادهٔ آزمایشی Helmlab اضافه شدن
- display() نزدیکترین فضای پشتیبانیشده رو انتخاب میکنه، نه عریضترین
- متد گاماتمپینگ raytrace و متد deltaEHelmlab جدیدن
- حذف باندلهای ESM و فایلهای .min از بسته؛ لینکهای قدیمی ریدایرکت میشن




