UID82897性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-7-23最后登录1970-1-1
| 本帖最后由 Cat_Anchor 于 2023-2-27 18:55 编辑
注:本期内容选学。
前言
|
上期,我们学习了声音。现在,我们来学习字体这个冷门的内容。
| | 字体
|
打开资源包根目录,打开font文件夹,这里用于存放字体相关的文件。打开原版的font文件夹,里面会有很多以“glyph_”开头的图片,这个用于存放文字在游戏内的显示方式。glyph_后面有两个字符,那些是十六进制,从00排到FF。当然,并不是一定要有不常见的字符,例如原版font文件夹里就没有glyph_E5.png。
每一张glyph_图片都被均匀地分成256等份,横向平均分16格子,竖向再平均分16格子。例如,大部分glyph_图片的分辨率是256*256,那么一个字符的分辨率大小就是16*16。特殊地,glyph_E0.png的分辨率是512*512。这时,每个字符就占用32*32的分辨率大小。也就是说,glyph_图片是可以等比例缩放的。
除了glyph_XX.png,还有minecraft-ten.ttf,这是一个字体文件,记录了MinecraftTen字体。使用MT管理器打开可以方便地查看这个字体,注意示例中的英文字母。
还有notfound.png这张图片,记录了一堆问号,应该是游戏找不到该显示的字符时就会显示这张图片。
还有smooth文件夹,里面有些奇怪的文件,目前还不清楚它们的作用(似乎是一个字体),所以我们看看剩下的两个文件。
在font文件夹下还有两个文件,一个是emoticons.json,一个是font_metadata.json。前面一个还算明朗,后面一个简直让人不知道是做什么的。
以下是emoticons.json可能的代码格式。
- [
- {
- "name": "shank", //表情的ID。在语言文件里用“:表情ID:”,例如“:shank:”,可以直接调用表情。调用的字符的码位在下面指定。(不确定)
- "code": "0xE100" //码位。使用十六进制。这里的0xE100相当于\uE100。
- },
- {
- "name": "armor", //这里与上面相同。
- "code": "0xE101" //这里与上面相同。
- },
- {
- "name": "minecoin", //这里与上面相同。
- "code": "0xE102" //这里与上面相同。
- }
- ]
复制代码
还有一个font_metadata.json,似乎是字体元信息。这个文件更让人不明所以。以下内容纯粹是根据键名推断出来的,比较不可信。
- {
- "version" : 1, //版本
- "fonts" : [ //字体
- {
- "font_format": "ttf", //字体格式。
- "font_name": "MinecraftTen", //字体名称,应该是用于UI的。
- "version": 1, //版本
- "font_file": "font/minecraft-ten", //字体文件的位置。
- "lowPerformanceCompatible": false //低性能兼容
- },
- {
- "font_format" : "msdf", //一种未知的字体格式
- "font_name" : "OldSmoothFont", //字体名称,应该是用于UI的。
- "font_file" : "font/smooth/smooth_" //从这里可以推断出那个smooth文件夹下的一堆奇怪的文件代表了一个字体。
- }
- ],
- "font_aliases" : [ //这一部分更加不明所以了,这里应该是字体别名。
- { //一个字体和它对应的别名。
- "alias" : "SmoothFontLatin", //别名
- "fonts" : [ //字体
- {
- "font_reference" : "OldSmoothFont" //字体参考
- },
- {
- "font_reference" : "UnicodeFont", //字体参考
- "font_ranges" : [ //字体范围,可能是码位的范围
- { "first" : 54620, "last" : 54620 },
- { "first" : 44397, "last" : 44397 },
- { "first" : 50612, "last" : 50612 },
- { "first" : 45824, "last" : 45824 },
- { "first" : 48124, "last" : 48124 },
- { "first" : 57344, "last" : 63743 }
- ]
- }
- ]
- },
- {
- "alias": "MinecraftTenEmoticon", //别名
- "fonts": [ //字体
- {
- "font_reference": "MinecraftTen" //字体参考
- },
- {
- "font_reference": "unicode", //字体参考
- "font_ranges": [ //字体范围,可能是码位的范围
- {
- "first": 57344,
- "last": 63743
- }
- ]
- }
- ]
- },
- { //这一堆东西和上面的格式一样。
- "alias": "SmoothSmall",
- "font_scale_factor": 1,
- "fonts": [
- {
- "font_reference": "OldSmoothFont"
- },
- {
- "font_reference": "UnicodeFont",
- "font_ranges" : [
- { "first" : 54620, "last" : 54620 },
- { "first" : 44397, "last" : 44397 },
- { "first" : 50612, "last" : 50612 },
- { "first" : 45824, "last" : 45824 },
- { "first" : 48124, "last" : 48124 },
- { "first" : 57344, "last" : 63743 }
- ]
- }
- ]
- }
- ]
- }
复制代码
嗯,说实话,很少有资源包会用这个font文件夹,因为如你所见,对于它的研究实在太少了,而且它本身也不支持什么很高级的操作,顶多就是用空码位输入图片罢了。
| | 总结
|
这一期,我们学完了字体。下一期,我们就要讲行为树了。
|
|
|