Minecraft资源包中的glyph_sizes.bin研究报告

glyph_sizes.bin文件位于assets/minecraft/font目录下。通过扩展名可以知道,这是一个二进制文件(废话)。根据其64.0K(65536字节)的文件大小和Minecraft使用的Unifont字体的完整Unicode BMP支持,可以预测这个文件是按照一个字节对应一个Unicode字符的方式存储的。

但是,正常情况下Minecraft使用的字符仅能达到16像素的宽度,而高度则固定为16像素。这样,如果glyph_sizes.bin只是存储每个字符的宽度的话,每个字节的高四位必为0。实际却不是这样。一些字符对应的字节的高位可以达到5(或者更高?但并未在Minecraft自带的这个文件中找到这样的数据)。

研究可得,所有中文字对应的字节均为0F,而中文字确实是16像素宽的。但是,高4位没能实验出其特性。

最后,我通过枚举得到了结果。设\uEE00~\uEEFF(Unicode私用空间中的一段)的对应材质图像如下,对应字节为00~FF,

unicode_page_ee

那么以下命令

(在单人游戏中,因为我用的是@r)将输出这样的结果:

Minecraft glyph sizes

字符是\uEEXY,X代表行数,Y代表列数。放大后可以测量、观察得出:X ≤ 7时表示的是字符图像左侧切掉的像素数,X > 7时隐藏字符;Y表示字符宽度。而字符之间的空白不是这个文件控制的,固定为1像素。

发表评论

电子邮件地址不会被公开。 必填项已用*标注