查看完整版本: [-- [原创]自动字体设置之 AutoFontSet 0.6 --]

汉化新世纪论坛 -> 汉化工具 -> [原创]自动字体设置之 AutoFontSet 0.6 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

jingulong 2003-03-22 21:41

[原创]自动字体设置之 AutoFontSet 0.6

本次升级解决以下问题:
  1、0.5版的 UPX 压缩问题。
  2、不能处理 PE Explorer 1.91 的问题。
  3、其它问题。
谢谢大家的意见。

paulhou 2003-03-22 21:50
用户被禁言,该主题自动屏蔽!

gnatix 2003-03-22 22:22
伟大

xxoo 2003-03-22 23:06
253 一个先
图像
如果再能够列出所有搜索到的项目, 并能够加以选择的话就完美了.

Simon 2003-03-23 04:46
升级越来越快?......

梁利锋 2003-03-23 16:33
一个问题……

梁利锋 2003-03-23 16:35
再推波助澜一下……

斧头 2003-03-23 16:57
嗯。不能修改 梁利锋 那个附件中的其中一个样例文件字体,另一个一修改 norton就报病毒(0.5也一样)。  用 0.4能正确修改其中一个。

斧头 2003-03-23 17:03
咦, 那个 FontSet.Sample.GA.exe 样例文件中没有找到 CreatFontA 等调用.(mygdi)
那个 FontSet.Sample.ITA.exe 用 0.5/0.6 修改均报病毒, 0.4修改正确。

xxoo 2003-03-23 18:26
病毒应该是误报吧...
不然...偶就惨了...

jingulong 2003-03-23 19:47
我的 Norton 也说它有毒,我晕ing...,哈哈哈。
谁有如此胆子,敢在论坛放毒!!!
请大家注意:病毒最大的特征是感染其它程序。
放毒可耻!!!放毒可耻!!!放毒可耻!!!

梁利锋 2003-03-23 23:51
To jingulong:
Norton 应该是误报,我贴图出来是希望下一个版本能使 Norton 不误报;
另外,FontSet.Sample.GA.exe 是希望下一个版本也能解决此类字体问题。

斧头 2003-03-24 08:55
凑巧撞上了病毒识别特征代码..
期待autofontset强劲更强劲...

jingulong 2003-03-24 17:00
QUOTE
下面引用由梁利锋2003/03/23 04:35pm 发表的内容:
再推波助澜一下……

版主的这招实在太狠,眼下在下功夫不济。
(不过版主的“点睛自动字体设置 第二版 优化版”目前也不能啊!)

吕达嵘 2003-03-24 19:48
厉害!现在没有DLL爽多了:)
希望也能做成一个完整的共享软件,我们汉化新世纪第一个注册:)

雷骏 2003-03-24 22:10
用户被禁言,该主题自动屏蔽!

Simon 2003-03-25 00:42
QUOTE
下面引用由吕达嵘2003/03/24 07:48pm 发表的内容:
希望也能做成一个完整的共享软件,我们汉化新世纪第一个注册:)

*_*

chenmy 2003-03-25 08:25
QUOTE
下面引用由吕达嵘2003/03/24 07:48pm 发表的内容:
现在没有DLL爽多了:)

爽!!!!!!
实在是——
爽!!!!!!

Simon 2003-03-25 10:19
确实已经是非常不错了,下一步还是建议考虑一下炎炎的建议,另外稳定性/兼容性在加强一点?还有就是每次修改后,如果做了测试并还原了,那么就只能再次浏览选择该文件,否则不能进行其他修改,这有点不太方便,望 Jingulong 先生解决这个小问题。

梁利锋 2003-03-25 10:52
QUOTE
下面引用由jingulong2003/03/24 05:00pm 发表的内容:
版主的这招实在太狠,眼下在下功夫不济。
(不过版主的“点睛自动字体设置 第二版 优化版”目前也不能啊!)

给你看看源代码吧:
CODE
#define cat1 "这是使用 CreateFontA 创建的字体。"
#define cat2 "This font is Created by "CreateFontA"."
#define cait1 "这是使用 CreateFontIndirectA 创建的字体。"
#define cait2 "This font is Created by "CreateFontIndirectA"."
#define gso "这是使用 GetStockObject 创建的字体。This font is Created by "GetStockObject"."
////////////////////////////////////////////////////////////////////////////////
// 重绘事件处理函数。
#define TOP 40
void Dlg_OnPaint(HWND hDlg, HDC hdc)
{
static LOGFONT lf = {0};
static HMODULE gdi;
static FARPROC mCreateFont;
static FARPROC mCreateFontIndirect;
static FARPROC mGetStockObject;
gdi = LoadLibrary(TEXT("GDI32.dll"));
mCreateFont = GetProcAddress( gdi, "CreateFontA" );
mCreateFontIndirect = GetProcAddress( gdi, "CreateFontIndirectA" );
mGetStockObject = GetProcAddress( gdi, "GetStockObject" );
SetBkMode(hdc, TRANSPARENT);
SelectObject(hdc, mCreateFont(-30,0,0,0,FW_NORMAL,0,0,0,0,0,0,0,0,"Arial"));
TextOut(hdc, 60, TOP, cat1, lstrlen(cat1));
TextOut(hdc, 60, TOP + 50, cat2, lstrlen(cat2));
lf.lfWeight = FW_NORMAL;
lf.lfHeight = -30;
lstrcpy(lf.lfFaceName, "Arial");
SelectObject(hdc, mCreateFontIndirect(&lf));
TextOut(hdc, 60, TOP + 150, cait1, lstrlen(cait1));
TextOut(hdc, 60, TOP + 200, cait2, lstrlen(cait2));
SelectObject(hdc, mGetStockObject( 11 ));
TextOut(hdc, 60, TOP + 300, gso, lstrlen(gso));
SelectObject(hdc, mGetStockObject( 12 ));
TextOut(hdc, 60, TOP + 320, gso, lstrlen(gso));
SelectObject(hdc, mGetStockObject( 13 ));
TextOut(hdc, 60, TOP + 340, gso, lstrlen(gso));
SelectObject(hdc, mGetStockObject( 14 ));
TextOut(hdc, 60, TOP + 360, gso, lstrlen(gso));
SelectObject(hdc, mGetStockObject( 16 ));
TextOut(hdc, 60, TOP + 380, gso, lstrlen(gso));
SelectObject(hdc, mGetStockObject( 17 ));
TextOut(hdc, 60, TOP + 400, gso, lstrlen(gso));
}

jingulong 2003-03-25 16:17
谢谢版主提示。
但有一点是肯定的,您那第二个(现在还没法的)的 Sample使用动态方式,关键是拦截LoadLibraryA 和 GetProcessAddress,解决只是时间问题。
不过现在正考虑Norton误报的问题(对付Symantec!难啊!!!),加上其他杂事,又懒。只好拖一拖了。

xxoo 2003-03-26 16:11
既然是误报, 那就让他去吧
偶认为没必要为别人的失误伤神, 说不定他马上会修正这个问题呢!

jpstone 2003-03-27 12:17
谢谢您提供这么好的工具!
测试后,基本情况和斧头所说类似,只是偶尔可以列出FontSet.Sample.GA.exe样例文件中的字体调用,但修改后运行报错

Suntime 2003-03-27 19:40
不错, 这东东还能对付一些 DELPHI 程序!

Yonsm 2003-03-28 14:16
Norton 认为这是病毒,没错,修改 PE 文件被认为是病毒是经常的事,不用管它:)
说一个问题:
  当程序用 Dialog 资源的时候,但又不用 DialogBox 函数线是对话框,而是用 CreateDialogIndirect 创建对话框的时候的字体设置的情况——目前 AutoSetFont 无法处理:(
  举个例子,我要修改 VC 的对话框(比如“关于”对话框)的字体,发现修改 MSDEV.exe 中的对话框资源,没用:(,用 SoftICE 跟踪看了一下,发现他是用 CreateDialogIndirectParam 创建的对话框,参数也好像没问题的,不知怎么的字体就是改不过来。郁闷!
  能否帮忙看看修改 MSDEV.exe 的对话框字体?
            Yonsm (QQ:123018)
<同样内容的短消息发给了搂主的>

曾半仙 2003-03-28 21:07
我也遇见过,
这个情况我十分的不解!!
VC对话框字体又粗又大.
结果装protel的时候,
按照他的说法(不装这字体protel对话框字体会很难看),装了个字体,
VC竟然也好了.

jingulong 2003-03-29 09:40
QUOTE
下面引用由Yonsm2003/03/28 02:16pm 发表的内容:
...发现他是用 CreateDialogIndirectParam 创建的对话框,参数也好像没问题的,不知怎么的字体就是改不过来。郁闷!
  能否帮忙看看修改 MSDEV.exe 的对话框字体?
                  Yonsm (QQ:123018)

Yonsm 你好:
对不起,昨天晚上回家才看到你的帖。
你说得没错,这个对话框是通过 CreateDialogIndirectParam 产生,但不在MSDEV.exe中,在 DevShl.dll 中,如果你要修改,应该修改的地方请参考:
5005A312           push   offset byte_50037CEC ; 指向 "MS Sans Serif"
5005A317           push   20h         ; DWORD
5005A319           push   edi         ; DWORD
5005A31A           push   edi         ; DWORD
5005A31B           push   edi         ; DWORD
5005A31C           push   edi         ; DWORD
5005A31D           push   edi         ; DWORD
5005A31E           push   edi         ; DWORD
5005A31F           push   edi         ; DWORD
5005A320           push   2BCh         ; int
5005A325           push   edi         ; int
5005A326           push   edi         ; int
5005A327           neg   eax
5005A329           push   edi         ; int
5005A32A           push   eax         ; int
5005A32B           call   ds:CreateFontA
祝你好运。
btw
1 AutoFontSet 0.x 目前还没有考虑对 dll 内部字体函数的拦截。
2 现在“误报”的问题已经解决。打算过一阵再贴出来。 :biggrin:

Yonsm 2003-03-29 15:06
QUOTE
下面引用由jingulong2003/03/29 09:40am 发表的内容:
Yonsm 你好:
  对不起,昨天晚上回家才看到你的帖。
  你说得没错,这个对话框是通过 CreateDialogIndirectParam 产生,但不在MSDEV.exe中,在 DevShl.dll 中,如果你要修改,应该修改的地方请参考:
5005A312  ...

非常感谢!不过你说的这个地方我也跟踪到了,但是这并不是设置对话框字体的,这是设置About 对话框下部分的“Warnning:....”的字体,对话框的字体好像并没有使用 API 设置,应该是使用系统的默认字体?我的意思是是否可以通过修改 Dialog 的资源或者修改 CreateDialogIndirectParam 的参数(比如其中一个 Struct 的 style 域)来达到目的?
尝试过了,没找到好方法:(
BTW:
能在下一个版本考虑上诉的情况:)
再次感谢!

chenmy 2003-04-02 15:35
我发现一个使用上的问题!
近版自动字体设置之 AutoFontSet 程序(0.5和0.6)是采用追尾(在被修改的程序文件后面增加
一段代码——约1K)的形式修改字体的。这就限制了其使用的时机,只能在做好汉化之后使用。
如果用其修改字体后,发现汉化部份还需修改,最好先用自动字体设置之 AutoFontSet 0.6 还原,
后修改汉化。如果你未还原就动手修改,那就要靠运气了。一旦汉化编辑器改变了文件的大小,你
就得从头来过了。

Suntime 2003-04-02 19:01
呵呵,先用 AutoFontSet 修改要汉化的程序,用 VL 汉化编译的目标程序经常报错,不过并不是说这就要前功尽弃,只要用 AutoFontSet 还原目标程序后再进行修改还是可用的——————

斧头 2003-04-05 05:01
希望加入字体选择..比如有时用TAHOMA比宋体要好看一点(宋体经常字串显示过长), 其在98下显示也正常.

雷骏 2003-04-05 12:39
用户被禁言,该主题自动屏蔽!

xxoo 2003-04-05 17:42
斧头兄: 你是说 Tahoma,8 字体可以在 win9x 下显示正常吗?
可不可以贴张图上来借偶看看啊?

斧头 2003-04-06 05:07
QUOTE
下面引用由xxoo2003/04/05 05:42pm 发表的内容:
斧头兄: 你是说 Tahoma,8 字体可以在 win9x 下显示正常吗?
可不可以贴张图上来借偶看看啊?

Tahoma 9..
世纪里有下载一个桌面管理的 VirtualDesk 1.2, 它的系统栏图标右键菜单是ASCII。用Autofontset 设置会使程序非法。 我直接将搜索到的原字体改成Tahoma,字体显示正常。 汉字还是宋体样式。。后来在宋体不好看时也用Tahoma..

斧头 2003-04-06 05:20
因为autofontset,对所有的调用都一视同仁。。有些英文字串显示原字体好,有些的是软件商标之类的大字体, 都改了。。 如果有空能加上分别set,甚至分别选择字体及大小,就是更COOL了。。版本号1。X会实现? :) 

jingulong 2003-04-12 10:33
QUOTE
下面引用由斧头2003/04/06 05:07am 发表的内容:
Tahoma 9.. 
世纪里有下载一个桌面管理的 VirtualDesk 1.2, 它的系统栏图标右键菜单是ASCII。用Autofontset 设置会使程序非法。 我直接将搜索到的原字体改成Tahoma,字体显示正常。 汉字还是宋体样式。。 ...


这段时间忙,好久没来世纪了。
用Autofontset 设置会使程序非法???
看了一下,原来这并不是 Autofontset 的错。错在那个汉化处理VDesk的程序,它不合理地增大原程序,违反了“文件对齐粒度”,原程序的粒度值是4K,(汉化者)使用的程序把资源段的 RawSize 值变为 000F6010 (错)!
如果你要纠正的话,把它改成 000F6000 。
再试试Autofontset,然后看看它的“每日一贴”。OK!
谢谢你的提醒,下个版本希望具备解决原汉化程序留下的类似“Bug”的可能。

斧头 2003-04-14 08:13
嘿, 那是VL. . 谢谢 .

jingulong 2003-04-14 08:15
Nothing

斧头 2003-04-14 08:17
再问你个问题, GETRIGHT5 为什么使用 VL,PASSOLO等生成汉化文件后,总是非法不能用, 即使我只是用这些工具更改字体,在未汉化任何字串前生成的. 在BETA5时汉化了很久,却不能用,气S.

jingulong 2003-04-14 19:04
哦,那是Armadillo作的怪

Simon 2003-04-14 19:53
嘿嘿,该死的 Armadillo 啊 Armadillo

斧头 2003-04-14 22:16
..第一次听说, 谢谢..用is修复不了入口表..唉, 太菜了

limbo 2017-04-04 21:12
      

kvcbkvcb 2017-04-07 21:26
为什么我看不到下载地址.....新来的,, 有什么幼稚的提问请见谅


查看完整版本: [-- [原创]自动字体设置之 AutoFontSet 0.6 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.014596 second(s),query:3 Gzip disabled