Windows 光标 (.cur)
Microsoft 标准Windows光标资源(CUR)是微软Windows操作系统的原生鼠标指针格式,其容器架构与ICO完全相同,但指定了精确的热点坐标偏移量。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 CUR 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 CUR 文件:
十六进制签名 (偏移量 0):
00 00 02 00ASCII 表示形式: ....
标准化: Microsoft Windows Resource Specification
技术规格
| 容器架构 | ICONDIR header with resource type 2 (Cursor) followed by ICONDIRENTRY array and DIB data |
| 压缩方式 | Uncompressed DIB or PNG compressed streams (Windows Vista+) |
| 字节序 | Little-Endian (Intel x86) |
| 色彩空间 | Device RGB |
| 通道与结构 | 1-bit monochrome mask, 4-bit, 8-bit, or 32-bit BGRA with alpha |
| 最大尺寸 | Typically 32 x 32, 48 x 48, or 64 x 64 (supports up to 256 x 256 in modern Windows) |
| 透明度 | XOR/AND binary mask or 8-bit smooth alpha channel |
| 流式传输与渐进式加载 | Non-streamable desktop icon/cursor directory |
技术对比矩阵:CUR 对比同类产品
| 技术属性 | CUR (当前) | ICO | PNG | SVG |
|---|---|---|---|---|
| 热点定义 | 嵌入的X/Y像素坐标 | 无(默认居中/左上角) | 在CSS中定义 | 在SVG视口中定义 |
| 资源类型ID | 0x0002 (Cursor) | 0x0001 (Icon) | 标准图像 | 矢量XML |
| 操作系统 | 原生Windows鼠标子系统 | Windows Shell / 浏览器网站图标 | 通用网页与应用 | 通用矢量 |
| 可缩放性 | 固定的多分辨率MIP贴图 | 固定的多分辨率MIP贴图 | 固定大小的栅格 | 无限矢量缩放 |
常见损坏模式与十六进制恢复指南
鼠标点击位置与光标箭头尖端相距数像素。
根本原因: ICONDIRENTRY表中的热点X/Y坐标损坏或丢失。
恢复方法: 在File2File光标转换器中重新制作光标,以直观地重新校准热点坐标。
安全分析与解析器攻击向量
历史上,Windows图形设备接口(GDI)中的CUR解析漏洞允许通过精心构造的头部尺寸执行任意代码。
已知攻击向量
- 在传统光标解码器中分配DIB颜色掩码时发生整数溢出。
- 损坏的热点偏移量在光标块传送期间触发越界指针读取。
- 解析现代CUR文件中的嵌入PNG流时发生堆损坏。
防御性最佳实践:
历史渊源与里程碑
2006Windows Vista引入了256x256高DPI光标,CUR内部支持PNG压缩有效负载。
2001Windows XP为光标文件增加了对32位平滑alpha混合阴影的支持。
1990Windows 3.0将CUR标准化为原生的硬件和软件光标格式。
核心优势与特点
- 定义了精确的像素热点坐标(X, Y),鼠标点击在屏幕上物理注册于此。
- 支持多分辨率光标定义,以便在标准和高DPI 4K显示器上获得清晰的显示效果。
- Windows系统中提供直接的原生操作系统支持,无需第三方指针驱动程序。
技术局限与劣势
- 以Windows为中心的格式,在移动设备和非Windows浏览器上的原生显示支持较差。
- 仅支持静态指针;动态光标需要多帧的.ANI容器。
- 传统的1位XOR掩码在现代彩色界面上会产生刺眼的颠倒伪影。
趣味技术冷知识
- ICO文件和CUR文件之间唯一的结构区别在于头部的第3个字节:图标为1,光标为2。
- 在ICO文件中,每个条目的第4字节和第6字节代表颜色平面和每像素位数;而在CUR文件中,这几个字节精确代表热点的X和Y坐标。
- CSS直接支持使用指向.cur文件的URL作为自定义网页光标。
常见技术问题
什么是光标热点(Hotspot)?
热点是光标图像内部发生点击事件的精确像素坐标(例如箭头的最尖端或十字准线的中心)。
我可以将图像(PNG/JPG)转换为 CUR 文件吗?
可以。File2File.app 允许您将标准的 PNG 或 JPG 文件转换为带有自定义热点位置的 Windows .CUR 光标文件。
如何在我的网站上使用 .cur 文件?
您可以在 CSS 中使用以下代码应用自定义光标:cursor: url('my-cursor.cur'), auto;