开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] 附加包教程:21.字体

 发表于 2023-2-26 10:16:12 来自手机|显示全部楼层|阅读模式 IP:天津
本帖最后由 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可能的代码格式。

  1. [
  2.     {
  3.         "name": "shank", //表情的ID。在语言文件里用“:表情ID:”,例如“:shank:”,可以直接调用表情。调用的字符的码位在下面指定。(不确定)
  4.         "code": "0xE100" //码位。使用十六进制。这里的0xE100相当于\uE100。
  5.     },
  6.     {
  7.         "name": "armor", //这里与上面相同。
  8.         "code": "0xE101" //这里与上面相同。
  9.     },
  10.     {
  11.         "name": "minecoin", //这里与上面相同。
  12.         "code": "0xE102" //这里与上面相同。
  13.     }
  14. ]
复制代码

还有一个font_metadata.json,似乎是字体元信息。这个文件更让人不明所以。以下内容纯粹是根据键名推断出来的,比较不可信。

  1. {
  2.     "version" : 1, //版本
  3.     "fonts" : [ //字体
  4.       {
  5.         "font_format": "ttf", //字体格式。
  6.         "font_name": "MinecraftTen", //字体名称,应该是用于UI的。
  7.         "version": 1, //版本
  8.         "font_file": "font/minecraft-ten", //字体文件的位置。
  9.         "lowPerformanceCompatible": false //低性能兼容
  10.       },
  11.       {
  12.         "font_format" : "msdf", //一种未知的字体格式
  13.         "font_name" : "OldSmoothFont", //字体名称,应该是用于UI的。
  14.         "font_file" : "font/smooth/smooth_" //从这里可以推断出那个smooth文件夹下的一堆奇怪的文件代表了一个字体。
  15.       }
  16.     ],
  17.     "font_aliases" : [ //这一部分更加不明所以了,这里应该是字体别名。
  18.       { //一个字体和它对应的别名。
  19.         "alias" : "SmoothFontLatin",  //别名

  20.         "fonts" : [ //字体
  21.           {
  22.             "font_reference" : "OldSmoothFont" //字体参考
  23.           },
  24.           {
  25.             "font_reference" : "UnicodeFont", //字体参考
  26.             "font_ranges" : [ //字体范围,可能是码位的范围
  27.               { "first" : 54620, "last" : 54620 },
  28.               { "first" : 44397, "last" : 44397 },
  29.               { "first" : 50612, "last" : 50612 },
  30.               { "first" : 45824, "last" : 45824 },
  31.               { "first" : 48124, "last" : 48124 },
  32.               { "first" : 57344, "last" : 63743 }
  33.             ]
  34.           }
  35.         ]
  36.       },
  37.       {
  38.         "alias": "MinecraftTenEmoticon", //别名
  39.         "fonts": [ //字体
  40.           {
  41.             "font_reference": "MinecraftTen" //字体参考
  42.           },
  43.           {
  44.             "font_reference": "unicode", //字体参考
  45.             "font_ranges": [ //字体范围,可能是码位的范围
  46.               {
  47.                 "first": 57344,
  48.                 "last": 63743
  49.               }
  50.             ]
  51.           }
  52.         ]
  53.       },
  54.       { //这一堆东西和上面的格式一样。
  55.         "alias": "SmoothSmall",
  56.         "font_scale_factor": 1,
  57.         "fonts": [
  58.           {
  59.             "font_reference": "OldSmoothFont"
  60.           },
  61.           {
  62.             "font_reference": "UnicodeFont",
  63.             "font_ranges" : [
  64.               { "first" : 54620, "last" : 54620 },
  65.               { "first" : 44397, "last" : 44397 },
  66.               { "first" : 50612, "last" : 50612 },
  67.               { "first" : 45824, "last" : 45824 },
  68.               { "first" : 48124, "last" : 48124 },
  69.               { "first" : 57344, "last" : 63743 }
  70.             ]
  71.           }
  72.         ]
  73.       }
  74.     ]
  75. }
复制代码

嗯,说实话,很少有资源包会用这个font文件夹,因为如你所见,对于它的研究实在太少了,而且它本身也不支持什么很高级的操作,顶多就是用空码位输入图片罢了。
总结

这一期,我们学完了字体。下一期,我们就要讲行为树了。


苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-28 14:50

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3