เคอร์เซอร์ Windows (.cur)
Microsoft มาตรฐานWindows Cursor Resource (CUR) คือรูปแบบตัวชี้เมาส์ดั้งเดิมของ Microsoft Windows ซึ่งมีโครงสร้างคอนเทนเนอร์ที่เหมือนกับไฟล์ ICO ทุกประการ แต่ระบุพิกัดออฟเซ็ตของฮอตสปอต (Hotspot) อย่างแม่นยำ
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ CUR โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ CUR โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
00 00 02 00การแสดงผลรูปแบบ ASCII: ....
มาตรฐาน: Microsoft Windows Resource Specification
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | ส่วนหัว ICONDIR ที่มีชนิดทรัพยากร 2 (Cursor) ตามด้วยอาร์เรย์ ICONDIRENTRY และข้อมูล DIB |
| การบีบอัด | DIB แบบไม่บีบอัดหรือสตรีมที่บีบอัดด้วย PNG (Windows Vista ขึ้นไป) |
| การจัดลำดับไบต์ | ลำดับไบต์แบบ Little-Endian (Intel x86) |
| พื้นที่สี | RGB ของอุปกรณ์ |
| ช่องสัญญาณและโครงสร้าง | มาสก์ขาวดำ 1 บิต, 4 บิต, 8 บิต หรือ BGRA 32 บิตพร้อมอัลฟา |
| ขนาดสูงสุด | โดยทั่วไปมีขนาด 32 x 32, 48 x 48 หรือ 64 x 64 (รองรับสูงสุด 256 x 256 ใน Windows รุ่นใหม่) |
| ความโปร่งใส | มาสก์ไบนารี XOR/AND หรือช่องสัญญาณอัลฟาแบบไล่ระดับ 8 บิต |
| การสตรีมและแบบโปรเกรสซีฟ | ไดเรกทอรีไอคอน/เคอร์เซอร์เดสก์ท็อปที่ไม่รองรับการสตรีม |
ตารางเปรียบเทียบทางเทคนิค: CUR กับคู่แข่ง
| คุณลักษณะทางเทคนิค | CUR (ปัจจุบัน) | ICO | PNG | SVG |
|---|---|---|---|---|
| การกำหนดฮอตสปอต | พิกัดพิกเซล X/Y ฝังตัว | ไม่มี (ค่าเริ่มต้นตรงกลาง/มุมซ้ายบน) | กำหนดใน CSS | กำหนดในวิวบ็อกซ์ของ SVG |
| ID ประเภททรัพยากร | 0x0002 (Cursor) | 0x0001 (Icon) | ภาพมาตรฐาน | เวกเตอร์ XML |
| ระบบปฏิบัติการ | ระบบย่อยเมาส์ดั้งเดิมของ Windows | Windows Shell / Favicon ของเบราว์เซอร์ | รองรับในเบราว์เซอร์และแอปจำนวนมาก | รองรับในเบราว์เซอร์และแอปจำนวนมาก |
| ความสามารถในการปรับขนาด | Mipmaps หลายความละเอียดแบบคงที่ | Mipmaps หลายความละเอียดแบบคงที่ | แรสเตอร์ขนาดคงที่ | การปรับขนาดเวกเตอร์แบบไม่จำกัด |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
จุดที่คลิกจริงอยู่ห่างจากปลายลูกศรเคอร์เซอร์หลายพิกเซล
สาเหตุหลัก: พิกัดฮอตสปอต X/Y ในตาราง ICONDIRENTRY เสียหายหรือขาดหายไป
การกู้คืน: สร้างเคอร์เซอร์ใหม่ใน File2File.app Cursor Converter เพื่อปรับเทียบพิกัดฮอตสปอตใหม่ด้วยสายตา
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ข้อบกพร่องในตัวแยกวิเคราะห์ CUR ของอินเทอร์เฟซอุปกรณ์กราฟิก Windows (GDI) เคยเปิดทางให้รันโค้ดตามอำเภอใจได้ด้วยการกำหนดขนาดส่วนหัวที่สร้างขึ้นเป็นพิเศษ
เวกเตอร์การโจมตีที่ทราบ
- การเกิดจำนวนเต็มล้น (Integer overflow) ระหว่างการจัดสรรมาสก์สี DIB ในตัวถอดรหัสเคอร์เซอร์รุ่นเก่า
- ออฟเซ็ตฮอตสปอตที่เสียหายทำให้เกิดการอ่านพอยเตอร์นอกขอบเขตระหว่างการบลิตเคอร์เซอร์
- ฮีปเสียหายเมื่อแยกวิเคราะห์สตรีม PNG ที่ฝังอยู่ในไฟล์ CUR รุ่นใหม่
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ตรวจสอบความถูกต้องว่าพิกัดฮอตสปอตอยู่ภายในขอบเขตเฟรมอย่างเคร่งครัด (0 <= X < Width, 0 <= Y < Height)
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- กำหนดพิกัดฮอตสปอตของพิกเซลที่แน่นอน (X, Y) ซึ่งเป็นจุดที่การคลิกเมาส์จะเกิดขึ้นจริงบนหน้าจอ
- เปิดใช้งานการกำหนดเคอร์เซอร์หลายความละเอียด เพื่อการแสดงผลที่คมชัดบนจอภาพมาตรฐานและจอภาพ 4K ที่มี DPI สูง
- ระบบปฏิบัติการ Windows รองรับการใช้งานได้โดยตรงทันทีโดยไม่ต้องใช้ไดรเวอร์ตัวชี้ของบุคคลที่สาม
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- เป็นรูปแบบที่เน้น Windows เป็นหลัก โดยมีการรองรับการแสดงผลดั้งเดิมบนอุปกรณ์มือถือและเบราว์เซอร์ที่ไม่ใช่ Windows ค่อนข้างน้อย
- เป็นตัวชี้แบบนิ่งเท่านั้น เคอร์เซอร์แบบภาพเคลื่อนไหวจะต้องใช้คอนเทนเนอร์ .ANI แบบหลายเฟรม
- มาสก์ XOR แบบ 1 บิตรุ่นเก่าทำให้เกิดอาร์ทิแฟกต์การกลับสีที่ดูหยาบกระด้างบนอินเทอร์เฟซสีสมัยใหม่
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ความแตกต่างเชิงโครงสร้างเพียงอย่างเดียวระหว่างไฟล์ ICO และไฟล์ CUR คือไบต์ที่ 3 ของส่วนหัว: 1 สำหรับไอคอน และ 2 สำหรับเคอร์เซอร์
- ในไฟล์ ICO ไบต์ที่ 4 และ 6 ของแต่ละรายการจะแสดงระนาบสีและบิตต่อพิกเซล แต่ในไฟล์ CUR ไบต์เดียวกันนั้นจะแสดงพิกัดฮอตสปอต X และ Y
- CSS รองรับเคอร์เซอร์เว็บแบบกำหนดเองได้โดยตรงโดยใช้ URL ที่ชี้ไปยังไฟล์ .cur
คำถามทางเทคนิคที่พบบ่อย
ฮอตสปอตของเคอร์เซอร์คืออะไร
ฮอตสปอตคือพิกัดพิกเซลที่แน่นอนภายในภาพเคอร์เซอร์ (เช่น ปลายสุดของลูกศรหรือจุดศูนย์กลางของเป้าเล็ง) ซึ่งเป็นจุดที่เกิดเหตุการณ์คลิกขึ้น
แปลงรูปภาพ (PNG/JPG) เป็นไฟล์ CUR ได้ไหม
ได้ File2File.app ช่วยให้คุณสามารถแปลงไฟล์ PNG หรือ JPG ทั่วไปให้เป็นไฟล์เคอร์เซอร์ .CUR ของ Windows พร้อมกับการกำหนดตำแหน่งฮอตสปอตเองได้
ใช้ไฟล์ .cur บนเว็บไซต์อย่างไร
คุณสามารถใช้เคอร์เซอร์กำหนดเองใน CSS ได้โดยใช้คำสั่ง: cursor: url('my-cursor.cur'), auto;