字体问题往往是大家比较头痛的…… 有时候看到自己的字体库里有一种相当合适的字体,但玩的人那里可不一定有,所以无奈的只能放在游戏的某个文件夹里,然后提醒玩家自行安装…… 希望下面的方法可以起到一些效果。
思路:API 完全是从网上搜索如何靠API修改字体而得到的结论,所以不要被这三个字母吓到……
我来简单介绍下使用方法,这里只用到几行代码,所以应该不会有什么冲突。 font = Win32API.new('gdi32','AddFontResourceA','p','L') sendmsg = Win32API.new('user32','SendMessageA','l,l,l,l','L') unless Font.exist?("方正粗宋简体") font.call("Fonts/myfont1.TTF") sendmsg.call(65535,29,0,0) print("字体安装完毕,请重新进入游戏 ^_^") exit end | 这里需要注意的有以下几个地方: 1、unless Font.exist?("方正粗宋简体") 需要修改的就是括号里引号引着的字体名称,改成你要安装的字体名称即可。(别说你自己都不知道这个字体叫什么哦~) 2、font.call("Fonts/myfont1.TTF") 你要安装的字体文件在你游戏目录里的相对路径,千万别错哦~ 3、exit 实验证明,貌似必须重新开启一次游戏窗口,才会起作用,所以……安装完毕先退出吧。 4、Main中相关部分修改: Font.default_name = (["方正粗宋简体","黑体"]) 这个不用多说了吧,就是修改默认字体。 5、要安装多个字体时: font = Win32API.new('gdi32','AddFontResourceA','p','L') sendmsg = Win32API.new('user32','SendMessageA','l,l,l,l','L') unless Font.exist?("方正粗宋简体") and Font.exist?("方正综艺简体") unless Font.exist?("方正粗宋简体") font.call("Fonts/myfont1.TTF") sendmsg.call(65535,29,0,0) end Graphics.update # 主要是怕卡死 unless Font.exist?("方正综艺简体") font.call("Fonts/myfont2.TTF") sendmsg.call(65535,29,0,0) end print("字体安装完毕,请重新启动游戏!") exit end | # 这么晚了,希望我的脑袋还清醒…… 6、这里说明一下,这种方法并没有直接把字体文件复制到系统下的fonts目录中,而是相当于产生了一个链接指向你游戏目录下的对应字体文件。所以只要这个字体文件的路径没有发生改变,那么系统中任何程序都可以调用到此字体;但是如果字体文件的位置改变,或者文件名改变,再或者被删除了,那么这个字体名会在下一次系统重启后自动消失。 这样就有一个小小的问题,当你通过上面所讲的方法安装好字体之后,改变字体文件的位置,或者改变它的文件名,甚至删除它之后,这个字体名是存在的,但它本身没有任何意义,所以使用此功能的各位作者们,有必要的话请提醒玩家不要随意删除或修改此文件。 |