设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5656|回复: 13
打印 上一主题 下一主题

[讨论] ACE 设置字体某些字体会死掉,怎么会事?

[复制链接]

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5369
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
跳转到指定楼层
1
发表于 2012-2-3 14:40:13 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

Ace 设置那些(某些?)并非 TRUETYPE_FONTTYPE 的字体后,在 draw_text 时会死。
如,请帮忙测试吧:
  1. Font.default_name = "System"
  2. bitmap = Bitmap.new(32, 32)
  3. bitmap.draw_text(0, 0, 32, 32, "A")
复制代码
测试环境:
Win7 Enterprise (企业版) 32-bit 繁体
RGSS Dll:300 (是 6R 下的,还有 Fux2 & yangff 的那个改版 DLL(似乎弄掉了 Plane))

话说 VX 没有问题,只是写出来没有任何东西。而 ACE 不止 System 会这样哦。

点评

直接挂掉  发表于 2012-2-3 16:49
原来点评用@会以下这样...水区更多人- -  发表于 2012-2-3 16:01
[url=home.php?mod=space&username=仲秋启明]@仲秋启明[/url]很久没发贴- -.还奇怪为啥没有默认奖金。原来"发帖->发表求助".这算是讨论贴吧,不过似乎十分冷淡。另问你的机子有否以上情况?   发表于 2012-2-3 15:56
连剑兰都这样发帖,看来这区以后要手动认可了  发表于 2012-2-3 15:35

Lv2.观梦者

(?????)

梦石
0
星屑
723
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

14
发表于 2012-2-6 05:07:02 | 只看该作者
加上一个判断啥的完全没必要……
难道你打算让玩家输入字体名么……

点评

可以说只是发现一个无聊 bug 的解决办法而已,并没有打算真的去弄....另外让玩家选择字体也不错  发表于 2012-2-9 16:55
我觉得防止某些"帮我个忙啊!!!改字体后怎么会出现错误!!"的帖子比防止让玩家输入字体名结果出错的意义更大 - w -  发表于 2012-2-7 18:34
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
41525
在线时间
7592 小时
注册时间
2009-7-6
帖子
13502

开拓者贵宾

13
发表于 2012-2-5 17:39:14 | 只看该作者
优化版的DLL有说明,远景图(也就是Plane)弄掉了。
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2011-4-24
帖子
56
12
发表于 2012-2-3 21:44:28 | 只看该作者
一箭烂YiJL 发表于 2012-2-3 20:38
@亿万星辰@凌依约
结论如下:
System 那些(如5楼所说的那些) ACE 些错误的字体不是打印设备的字体,原来是 ...

原来是这样,受教了

点评

至于排除 Device 的方法, EunmFonts (Win32API 函数)等的 EunmFontsProc 的 fonttype & 2 != 0 的就是光棚字体,于是 default_name= 这些的话都 54。  发表于 2012-2-3 22:21
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5369
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
11
 楼主| 发表于 2012-2-3 20:38:30 | 只看该作者
@亿万星辰@凌依约
结论如下:
System 那些(如5楼所说的那些) ACE 些错误的字体不是打印设备的字体,原来是光棚字体。

字体分三种:
Device(光棚):Ace 出错的那些
Paster(打印装备):原来可以用的
TrueType(平时的.ttf):最常用的字体格式

在 ACE 下,光棚字体无论哪一个都回出错,我的机子目前有:
[System, Terminal, Fixedsys, Courier, MS Serif, MS Sans Serif, Small Fonts]
大家可以不妨试试以上的那些字体,看看会否挂掉?

至于为什么?我认为可能是 Ace 忘记 54 光棚字体?(VX/ACE 都用 DirectDraw ,所以应该忘记 54 了)
于是有一个解决思路:
在 Font.default_name= 加上一个排除 Device(光棚) 字体的判断。

评分

参与人数 1星屑 +100 收起 理由
亿万星辰 + 100 结论

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2011-4-24
帖子
56
10
发表于 2012-2-3 18:28:04 | 只看该作者
本帖最后由 凌依约 于 2012-2-3 18:32 编辑
亿万星辰 发表于 2012-2-3 18:25
其实你去windowsfonts下看看各种存在的字体里,并没有System这个名字的……



应该就是这个吧

点评

大大你和我犯同样的错误了...刚才我也以为加上粗体就可以了,后来发现..."System 6R体"也是可以的...因为没找到的话直接用默认的啊 = =a  发表于 2012-2-3 18:36
“在windowsxp里面有一个字体叫做system,它的真名叫做svgasys.fon。”刚从网上搜到这么一句解释,替换后依然是报错……不过加上“粗体”也OK了。  发表于 2012-2-3 18:33
"System 粗体" Windows 7 Ult 32-bit  发表于 2012-2-3 18:30
这个在哪找到的?我的fonts下没有这个……  发表于 2012-2-3 18:29
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5369
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
9
 楼主| 发表于 2012-2-3 18:27:35 | 只看该作者
这是一次编译(第三方) Game.exe 使用 "System" 字体的错误过程:
  1. 於 0x757cd36f (内存地址)的 Game.exe 中發生未處理的例外狀況: Microsoft C++ 在記憶體位置 0x003ba48c(内存地址),發生例外狀況: std::bad_alloc
复制代码
让它"继续":
  1. Game.exe 已經觸發中斷點
复制代码
再"继续":
  1. 於 0x015deb96 的 Game.exe 中發生未處理的例外狀況: 0xC0000005: 讀取位置 0xfffffffc 時發生存取違規
复制代码
然后就没了,以返回结果 -529697949 (0xe06d7363) 结束。
有需要可能要解读一下这个返回结果。
而 eval 的 ??? 就查不出任何问题。

@仲秋启明
我觉得会是 DirectDraw 的问题。(要准确知道的话,似乎要 Hook 掉 DDraw.dll 和其他 DLL 做测试,最近出错调用的函数)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

8
发表于 2012-2-3 18:25:43 | 只看该作者
本帖最后由 亿万星辰 于 2012-2-3 18:28 编辑

其实你去windows\fonts下看看各种存在的字体里,并没有System这个名字的……
再比如XP记事本默认的Fixedsys字体,在RM里设置同样是错误。

点评

大大你和我犯同样的错误了...刚才我也以为加上粗体就可以了,后来发现..."System 6R体"也是可以的...因为没找到的话直接用默认的啊 = =a  发表于 2012-2-3 18:38
看下10楼回复~  发表于 2012-2-3 18:35
VX "System" 和 "Fixedsys" 不会错误,我想可能是打印设备的字体吧,而且 ACE 别的"废字体"没事。平时windows\fonts\ 下找到的应该是 TRUETYPE 字体。   发表于 2012-2-3 18:33
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5369
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
7
 楼主| 发表于 2012-2-3 18:00:54 | 只看该作者
凌依约 发表于 2012-2-3 17:39
@一箭烂YiJL
这个只有等yangff大大或者fux大大看看能不能从DLL里面发现点线索了 ...

应该不怎可能,反遍汇那种 DLL 烦死人。源码更不可能(非第三方)。
另外冲定义 eval 或者反定义:
  1. class Object
  2.   undef_method :eval
  3. end
复制代码
会出现 "发生???" 或者 "???错误"(改版)(我看 ??? 并非字符问题,而是未知错误)。只有 Ace 才会这么神奇。呵呵。eval 被破坏后 RM 程序挂掉是理所当然,因为脚本的运行依赖 eval 和 Marshal.load。
(注:RGSS 的 DLL 的 RGSSEval 似乎并非使用 eval,奇怪的是为什么不用 RGSSEval 读取脚本- -)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2011-4-24
帖子
56
6
发表于 2012-2-3 17:39:19 | 只看该作者
@一箭烂YiJL
这个只有等yangff大大或者fux大大看看能不能从DLL里面发现点线索了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-5 22:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表