Project1

标题: 使用自带字体[存在BUG] [打印本页]

作者: 亿万星辰    时间: 2007-3-25 22:07
标题: 使用自带字体[存在BUG]
印象里貌似有个文件复制的方法来着,想不起来了,随便拎个API来了事...
dir = Win32API.new('kernel32','GetSystemDirectory','p,l','l')
dir_str = " " * 256
dir.call(dir_str,255)
dir_str = dir_str.split('system')[0]

font_name = "fzcqjw.ttf"
font_chn_name = "方正粗倩简体"

if FileTest.exist?(font_name)
  copy = Win32API.new('kernel32',"CopyFileA",'p,p,l','')
  copy.call(font_name, "#{dir_str}Fonts/#{font_name}",0)
  font = Win32API.new('gdi32','AddFontResourceA','p','l')
  sendmsg = Win32API.new('user32','SendMessageA','l,l,l,l','l')
  unless Font.exist?(font_chn_name)
    font.call(font_name)
    sendmsg.call(65535,29,0,0)
    retry
  end
end


注意彩色的两处地方,一处是字体的文件名,另一处是字体名,要对号入座!
另外要添加路径时在这里加上即可。

把这个插入到脚本 Main 之前,记得 Main 脚本里对 Font.default_name 做相应的修改,否则可是看不出效果的!

使用此脚本之后会自动将指定字体复制到系统的 Fonts 目录中,同时更改字体列表,无需再像之前那个版本一样重启游戏~~~

发现重大BUG,一运行会引发一个bug,测试时由于字体太多而未发现。。。
作者: 亿万星辰    时间: 2007-3-25 22:07
标题: 使用自带字体[存在BUG]
印象里貌似有个文件复制的方法来着,想不起来了,随便拎个API来了事...
dir = Win32API.new('kernel32','GetSystemDirectory','p,l','l')
dir_str = " " * 256
dir.call(dir_str,255)
dir_str = dir_str.split('system')[0]

font_name = "fzcqjw.ttf"
font_chn_name = "方正粗倩简体"

if FileTest.exist?(font_name)
  copy = Win32API.new('kernel32',"CopyFileA",'p,p,l','')
  copy.call(font_name, "#{dir_str}Fonts/#{font_name}",0)
  font = Win32API.new('gdi32','AddFontResourceA','p','l')
  sendmsg = Win32API.new('user32','SendMessageA','l,l,l,l','l')
  unless Font.exist?(font_chn_name)
    font.call(font_name)
    sendmsg.call(65535,29,0,0)
    retry
  end
end


注意彩色的两处地方,一处是字体的文件名,另一处是字体名,要对号入座!
另外要添加路径时在这里加上即可。

把这个插入到脚本 Main 之前,记得 Main 脚本里对 Font.default_name 做相应的修改,否则可是看不出效果的!

使用此脚本之后会自动将指定字体复制到系统的 Fonts 目录中,同时更改字体列表,无需再像之前那个版本一样重启游戏~~~

发现重大BUG,一运行会引发一个bug,测试时由于字体太多而未发现。。。
作者: 海的那边    时间: 2007-3-25 22:47
好东西~支持先。不知道以后做的游戏用不用得着{/lh}
作者: 叶舞枫    时间: 2007-3-26 03:35
发布到主站,
星子 VIP += 2
http://rpg.blue/web/htm/news650.htm

作者: 月月最厉害    时间: 2007-3-26 05:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亿万星辰    时间: 2007-3-26 05:16
以下引用叶舞枫于2007-3-25 19:35:18的发言:

发布到主站,
星子 VIP += 2
http://rpg.blue/web/htm/news650.htm

那最好把之前那个K掉.....汗
作者: 叶舞枫    时间: 2007-3-26 05:30
以下引用亿万星辰于2007-3-25 21:16:33的发言:

那最好把之前那个K掉.....汗

之前那个在后台管理界面里总是翻不到…………{/gg}{/gg}
作者: 精灵使者    时间: 2007-3-26 05:40
对了。这次的字体要放在什么地方才对?以前是放在font文件夹里,这次呢?
问题解决!原来这个和以前的字体注册不一样。
首先声明,要放的字体文件一定要在根目录下(不像以前的font目录下)
后面的字体名一定要和前面的一致(不用和windows一致了)
感谢星辰!以后我就不用安装包发布了,谢谢你帮我解决字体问题!{/qiang}
作者: Benavii    时间: 2007-3-26 06:19
星老大Good Job{/hx}
正好要使用,抱走了~
作者: 亿万星辰    时间: 2007-3-26 06:28
这个是根目录下的,你可以自己再加个路径上去,这样也不用担心目录里乱乱的了......
作者: 精灵使者    时间: 2007-3-26 13:56
请问加在那个地方?文件名前面吗?
问题已解决,
例如,在目录下创建fonts文件夹以后把字体文件挪过去,
然后修改这行
copy.call(font_name, "#{dir_str}Fonts/#{font_name}",0)

修改为
copy.call(""fonts/"+font_name, "#{dir_str}Fonts/#{font_name}",0)

需要什么路径就改上面彩色的部分
测试结果,修改失败{/dk}
有没有更好的办法的?
不过,放在根目录下可以使用,但是首次运行依然是黑屏现象……不过,谢谢星辰!
作者: gpra8764    时间: 2007-3-27 02:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 美兽    时间: 2007-3-27 02:40
以下引用gpra8764于2007-3-26 18:01:33的发言:

这个……感觉系统自己的字体应该就足矣了……


很多游戏都有外设字体。

作者: 精灵使者    时间: 2007-3-27 14:42
回楼主:我的机器第一次运行你的脚本的时候游戏停止响应,然后第2次才正常运行。更糟的是每次重启都是这样的说……(看来以后我还是拿安装包注册吧,免得别人再说我的游戏有虫{/gg})
作者: 亿万星辰    时间: 2007-3-27 15:03
你说的是脚本错误吧

安装新字体时的确会发生这个情况.....我来看看是什么问题,能否解决

大致描述一下问题:
之前做这个的时候是这么测试的,我从控制面板里删了方正粗倩简体,之后通过此脚本测试,一切正常。问题就出在这里了,测试时用的是之前装过的字体。
而后来我用了从来没装过的一个神奇字体测试时,就出现了错误提示,推测是因为无法刷新自身的和字体列表相关的部分早成的。。。。

不过即便如此我依然不会去使用所谓的安装程序去打包游戏,我会尝试找出更好的办法来处理。
作者: 精灵使者    时间: 2007-4-2 03:14
恩恩。开始的时候我也是从控制面板删除以后测试的。后来为了方便起见,删除以后我就重启测试,而且彻底卸载了我以前的程序(安装包在卸载的时间也会自动将字体反注册),结果发现测试失败……如果你有更好的办法的话,我还不如喜欢用rar(虽然没有添加/删除程序的说)
作者: aecher    时间: 2009-3-28 20:27
要是有多个自带字体呢?
(不好意思挖坟了...)
作者: 赛露休斯    时间: 2009-3-29 01:29
重大bug?到底是什么bug啊
作者: aecher    时间: 2009-4-1 21:18
以下引用aecher于2009-3-28 12:27:53的发言:

要是有多个自带字体呢?


作者: 蒦們    时间: 2009-4-3 04:51
晕死,两年的坟又被挖出来了= =
我也是无意的呀= =
作者: Tian    时间: 2009-4-3 11:10
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1