- UID
- 2
- 积分
- 8682
- 帖子
- 2905
- 主题
- 199
- 论坛币
- 11231
- 威望
- 16
- EP值
- 2348
- MP值
- 15
- 阅读权限
- 200
- 注册时间
- 2011-8-3
- 在线时间
- 2597 小时
- 最后登录
- 2024-2-26
|
从结论上来说就是:安装工程中的字体。
----------------- 以下是Debug之旅 ----------------
该问题在经过 四月,疯子,以及猪猪的测试帮助下,总算是让我得出了一定的结论(虽然是个让人蛋疼的结论)。
结论:不同的机子,GDI模块有一定的差异,可能是代码层面的,也可能是字体什么的额外因素(还没排查)。
理由:3位测试出问题的会员,虽然是同样的一个错误,但进度条停的位置不同:季季 12.09%, 四月 22.56%, 疯子 3.66%。但每个会员独立测试多次都是停在同一进度(说明代码本身没有随机性,也说明了和不同运行环境有一定关联)。又总结了一下出错的代码,用- gf_pt = gfGetPoints(GdiFontThin, _txt)
- if len(gf_pt) == 0:
- Pause()
- PIX = PixFromPoints(gf_pt)
复制代码 替换第86行的- PIX = PixFromPoints(gfGetPoints(GdiFontThin, _txt))
复制代码 得出的结论是,对于某个文字,被“消减”后得到的点数为0。消减(细化)的代码在第23行- GdiFontThin = gfInitFont(GetVal(val_FontFaceName), _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), -2.5, False)
复制代码 由此可得出结论:不同环境的GDI差异性造成了这一“神奇”问题。
解决方法:把-2.5改成-2降低消减的程度,从而避免得到的点数为0. 因为尽管存在一定的差异,但差异相对来说肯定是微小的。
-------------- 结论更新 --------------
进一步测试发现,该GDI相关问题,其实是字体问题。虽然TCAX能直接利用工程目录下的字体(不需要安装),但GDI不行,如果未找到指定字体,则会用一个系统默认的字体替代。所以该问题最本质且最直接的解决方法是,安装字体!(将工程目录下的字体拷贝到系统的Fonts文件夹下)不需要修改代码即可执行通过。
|
|