基本字体知识
最后更新于
Minecraft的聊天组件包含许多装饰符,其中之一是字体。大多数字符存储在 minecraft:default
字体中。细字体字符存储在 minecraft:uniform
字体中,附魔台字符存储在 minecraft:alt
字体中。
你可以通过运行简单的命令发送带有字体的文本。很容易发现,不同字体中相同的文本具有不同的形状。
Bitmap provider
bitmap
提供者定义简单的位图字形 - 来自纹理的字形。它引用单个PNG文件,适用于其中的字符列表,可选的高度和上升值。纹理可以是任何尺寸,字形可以是任何颜色。白色字形可以在游戏中着任何其他颜色。其他颜色在重新着色时保留该色调。黑色字形始终显示为黑色。根据包含任何alpha值大于0的最右列像素自动确定字形的宽度。字形本身不能大于512×512像素。
chars
字段是一个字符串列表。该列表中每个字符串条目中的字符映射到引用文件中的相应位置。根据列表中字符串的数量以及该列表中最长字符串的长度,纹理被均匀地划分。
height
字段是生成字形的比例。该比例通常应与字形的单个高度匹配,或者是其幂。虽然允许在此推荐范围之外的高度,并且是有效的,但在游戏中渲染时,位于提供程序中声明的字形出现扭曲。height
字段是可选的。如果未定义,则默认为8,而不管底层纹理分辨率如何。
ascent
字段是应用于字形的垂直偏移量。在排版学中,ascent 是基线到大写字母的高度(字形顶部)的距离。字形中的基线是下降部分开始的线。例如,在小写字母 y 中,y 的底部延伸到基线之外。在Vanilla中,当高度为8时,上升值大多为7,因为下降部分为1。
在 CustomNameplates 中,你可以简单地理解为
我们可以很容易地看到,ItemsAdder 和 Oraxen 都使用该字体来注册自定义图像。问题是,“minecraft:default”字体是默认字体,因此玩家如果找到原始字符,就可以发送图像。因此,这些插件将尽力阻止玩家发送这些字符。如果你不将图像注册到 minecraft:default 字体中,你就不必担心玩家发送你的自定义图像。
并非市场上所有的插件都支持自定义字体。如果你看到一个支持 "MiniMessage" 和 "PlaceholderAPI" 的插件,那么它有90%的机会支持它。有些插件开发者会将 MiniMessage 转换为旧版格式,并让 Spigot 处理旧版颜色代码,这真是遗憾。