前言

这是一期自定义字体专栏,本教程实现的效果是在原版资源包的基础上进行的,但其中仅涉及两个文件,而你需要操作的只有将其中一个JSON文件里面的5个数据修改,然后把另一个文件拖到指定位置就行了。这比上一个整合包教程简洁的多,因此可以放心操作。

其实这个我本来想放进整合包教程里面的,但是我做这段的时候要笑死了,不单出一期对不起这么好玩的效果

封面字体:汉仪智豪天宫篆 繁字体免费下载和在线预览-字体天下 (fonts.net.cn)。不要轻易发布你做出来的字体资源包,要遵守字体作者的协议。

制作资源包

这里就可以先不用压缩包,改用文件夹(有名字和身份证就能识别的),然后调整JSON后重载资源包。

老规矩,放一个pack.mcmeta作为身份证,然后建立assets文件夹,在assets里面创建一个font文件夹,在font文件夹里创建JSON文件,名称为default.json,

秦始皇也玩MC?自定义字体教程-第1张图片然后打开,在里面输入这5条内容:

{
    "providers": [
        {
            "type": "ttf",
            "file": "minecraft:zhuan.ttf",
            "oversample": 20,
            "size": 18,
            "shift": [0, -1]
        }
    ]
}

file

你的字体文件的路径,我这里直接放在default旁边并命名为zhuan.ttf就不需要加别的信息。

oversample/size

oversample是字体的分辨率,zize是字体大小,这两个要在游戏里面动态调整,因为字体太小看不清,太大了会出框,分辨率太低会糊,分辨率太高会变成框,就像这样:

秦始皇也玩MC?自定义字体教程-第2张图片当然我这边除了这两个符号以外基本上都是正常的,我就不继续调了,再调就糊了

shift

渲染时的偏移量,一般来说字体在默认11大小的时候是与原版的位置吻合的,但是当你调整完大小后,字体会偏移,那么这时候你就需要调整位置,用中括号括住两个数字,前一个是左偏移量,小于零时向右移;后一个是下偏移量,小于零时向上移。这两个数默认为0,如果你刚调完大小字往下偏了一个像素,那么你就可以像上面那样设置为-1往上挪一个像素。

字体文件文件

最后就是这个.ttf文件的事了,这才是字体的核心,不管你从哪找,只要能找到一个后缀为.ttf的文件即可。这样的内容互联网上其实有很多,比如这里。如果你特别喜欢其他的某个游戏的话,在游戏存放的文件夹里面搜索.ttf也能把该游戏的字体调出来。

当然,玩过手机字体的朋友都知道,其实手机的字体也是这么来的,只要字体文件里面没写某一个字的字体,那么这个字是绝对不可能出现的,会被直接替换成手机默认的unicode字体,电脑也一样,那么出现了这个问题该怎么解决呢?很简单,我们玩的是一个可以改游戏文本的游戏啊,用资源包替换汉化名,把出现失败的字替换成别的字不想动脑筋可以直接用空格即可。

技术知识

其实上面的type一共接受5种值。

bitmap

位图,相当于一个字典,加载字形的时候会在这个字典里查询。原版的字体使用了这个方式进行渲染。此外,这个方式还可以用于加载表情包(但只有白色字才能正常显示)。

ttf

TureType矢量字形支持器,渲染的时候会烘焙成一个位图。

reference

引用其他位置的字体。比如我用了好几个JSON加载位图,但是又不想放在一起,那么我就可以用reference把别的位置的JSON调过来。

space

纯空格。可以自定义空格该是几个像素宽。

unihex

GNU Unifont十六进制字体字形提供器。