• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[技术交流] 【院刊】-【201410期】解决不同系统字体兼容问题 [复制链接]

1#

不同系统字体兼容问题





脚本在自己电脑上分明可以运行,咋换一台电脑就不灵了呢?哦~原来是两台机子字体不一样,问题大了,怎样才能做到 快 准 狠 的解决系统字体兼容的问题呢?




啥情况下系统字体会影响到游戏

游戏字体采用的是系统的字体,也就是说系统字体如果是宋体,游戏字体也是宋体。如果换一台电脑,系统字体是微软雅黑,那么游戏字体也会变成微软雅黑。(目前大部分游戏的字体都是采用系统字体)




如何兼容不同系统字体
小编之前看到的很多脚本,都是要求用户改变系统字体来适应脚本。 这样的方法会让用户觉得很麻烦,而且,如果有些系统字体无法修改成功就无法使用脚本。所以今天小编就不介绍这种方法,咱们来一起看看更方便的方法。




步骤


1 在QUI界面上画一个下拉列表框,命名为xitong

2 获取下拉列表框的值,如果选择的是win7系统则使用大漠的 GetDictInfo 函数,指定生成微软雅黑9号字体。
如果选择的是xp系统则使用大漠的 GetDictInfo 函数,指定生成宋体9号。


注意:为什么是9号字而不是10号字11号字呢?是这样的: 因为游戏里的字体是固定大小的,都是采用9号字体,不管系统宋体10号还是11号,游戏里都是宋体9号。
GetDictInfo函数

函数功能简介:根据指定的文字,以及指定的系统字库信息,获取字库描述信息.
函数原型: string GetDictInfo(str,font_name,font_size,flag)
参数定义:
str 字符串: 需要获取的字符串
font_name 字符串: 系统字体名,比如"宋体"
font_size 整形数: 系统字体尺寸,这个尺寸一定要以大漠综合工具获取的为准.如何获取尺寸看视频教程.
flag 整形数: 字体类别 取值可以是以下值的组合,比如1+2+4+8,2+4. 0表示正常字体.
1 : 粗体
2 : 斜体
4 : 下划线
8 : 删除线

返回值: 字符串 返回字库信息,每个字符的字库信息用"|"来分割
示例:
  1. // 下面的代码是获取"回收站"这3个字符的字库信息,然后加入到字库1中.
  2. font_desc = dm.GetDictInfo("回收站","宋体",9,0)
  3. font_desc = split(font_desc,"|")
  4. count = ubound(font_desc)
  5. for i = 0 to count
  6. TracePrint font_desc(i)
  7. dm.AddDict 1,font_desc(i)
  8. next
复制代码
代码
  1. // 创建字库(字表, 字体, 字号, 字库ID, 文件路径[传空为不保存到字库文件])
  2. Sub CreateFont(Words, Font, Size, Index, Path)
  3. Dim TempStr
  4. TempStr = dm.GetDictInfo(Words, Font, Size, 0)
  5. TempArray = Split(TempStr,"|")
  6. For i = 0 to UBound(TempArray)
  7. dm.AddDict Index,TempArray(i)
  8. Next
  9. Erase TempArray // 释放不用的内存
  10. If Len(Path) > 0 Then
  11. Call dm.SaveDict(0, Path)
  12. End If
  13. End Sub

  14. // 初始化大漠
  15. Call register()
  16. Set dm = CreateObject("dm.dmsoft")
  17. Call dm.SetPath("c:\test")

  18. // 读取选项
  19. Select Case Form1.xitong.ListIndex
  20. Case 0
  21. FontName = "微软雅黑"
  22. Case 1
  23. FontName = "宋体"
  24. End Select

  25. Call CreateFont("我的电脑|网上邻居" ,FontName, 9, 0, "字库.txt")//调用创建字库函数

  26. //找字
  27. dm_ret = dm.FindStr(0,0,2000,2000,"我的电脑","ffffff",1.0,intX,intY)
  28. If intX >= 0 and intY >= 0 Then
  29. MessageBox "我的电脑"
  30. Else
  31. MessageBox "没找到"
  32. End If
  33. dm_ret = dm.FindStr(0,0,2000,2000,"网上邻居","ffffff",1.0,intX,intY)
  34. If intX >= 0 and intY >= 0 Then
  35. MessageBox "网上邻居"
  36. Else
  37. MessageBox "没找到"
  38. End If

  39. Sub register() //注册大漠
  40. Set ws = createobject("Wscript.Shell")
  41. ws.run "regsvr32 atl.dll /s"
  42. Set ws = nothing
  43. PutAttachment "c:\test", "dm.dll"
  44. PutAttachment ".\Plugin" ,"RegDll.dll"
  45. call Plugin.RegDll.Reg ( "c:\test\dm.dll")
  46. Set dm = createobject("dm.dmsoft")
  47. ver = dm.ver()
  48. If len(ver) = 0 Then
  49. MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
  50. EndScript
  51. End If
  52. End Sub
复制代码
注意:1、小编是xp系统,系统字体为宋体,9号字,所以小编拿电脑桌面上的 我的电脑和网上邻居作为例子。
2、 启动之后第一次运行选择了xp系统,第二次要选择win7系统的时候,需要按下保存设置,否则,再次启动qui会读取之前的下拉列表选择的信息,依然会切换到xp系统选项。
演示

您所在的用户组无法下载或查看附件





优化——判断当前系统字库是否已经生成过

咱们运行前面的程序,会发现启动的时间比较久,那是因为咱们每次运行脚本,都会按照使用者选择的系统生成一次字库。 生成字库所要用的时间是比较多的,如何解决这个问题呢?

方法: 首次执行完脚本后,获取下本台计算机的机器码,存放到ini文件中,每次执行前判断下,机器码是否是一样的,一样的则不执行字库生成。



优化步骤
1 读取记录机器码的setup.ini 文件里存放的机器码

2 获取当前电脑机器码,与ini文件中记录的机器码值进行对比,不相等,则执行生成字库。


3 获取当前电脑机器码,记录到ini文件中,下次再执行的时候,如果还是当前电脑,则不执行生成字库。
代码
  1. // 创建字库(字表, 字体, 字号, 字库ID, 文件路径[传空为不保存到字库文件])
  2. Sub CreateFont(Words, Font, Size, Index, Path)
  3. Dim TempStr
  4. TempStr = dm.GetDictInfo(Words, Font, Size, 0)
  5. TempArray = Split(TempStr,"|")
  6. For i = 0 to UBound(TempArray)
  7. dm.AddDict Index,TempArray(i)
  8. Next
  9. Erase TempArray // 释放不用的内存
  10. If Len(Path) > 0 Then
  11. Call dm.SaveDict(0, Path)
  12. End If
  13. End Sub

  14. // 初始化大漠
  15. Call register()
  16. Set dm = CreateObject("dm.dmsoft")
  17. Call dm.SetPath("c:\test")
  18. // 读取选项
  19. Select Case Form1.xitong.ListIndex
  20. Case 0
  21. FontName = "微软雅黑"
  22. Case 1
  23. FontName = "宋体"
  24. End Select

  25. // 如果字库存在,就检测是否换过机器,否则直接产生字库
  26. If dm.IsFileExist("c:\test\字库.txt") Then
  27. OldCode = Plugin.File.ReadINI("Setup","机器码","c:\test\Setup.ini")//读取ini文件里的机器码值
  28. NewCode = dm.GetMachineCode() //获取当前机器码值
  29. If OldCode <> NewCode Then
  30. Call CreateFont("我的电脑|网上邻居" ,FontName, 9, 0, "字库.txt")
  31. Call Plugin.File.WriteINI("Setup","机器码",NewCode,"c:\test\Setup.ini") //将机器码值写入ini文件
  32. Else
  33. call dm.SetDict(0,"c:\test\字库.txt")
  34. End If
  35. Else
  36. Call CreateFont("我的电脑|网上邻居" ,FontName, 9, 0, "字库.txt")
  37. Call Plugin.File.WriteINI("Setup","机器码",NewCode,"c:\test\Setup.ini") //将机器码值写入ini文件
  38. End If

  39. //找字
  40. dm_ret = dm.FindStr(0,0,2000,2000,"我的电脑","ffffff",1.0,intX,intY)
  41. If intX >= 0 and intY >= 0 Then
  42. MessageBox "我的电脑"
  43. Else
  44. MessageBox "没找到"
  45. End If
  46. dm_ret = dm.FindStr(0,0,2000,2000,"网上邻居","ffffff",1.0,intX,intY)
  47. If intX >= 0 and intY >= 0 Then
  48. MessageBox "网上邻居"
  49. Else
  50. MessageBox "没找到"
  51. End If

  52. Sub register() //注册大漠
  53. Set ws = createobject("Wscript.Shell")
  54. ws.run "regsvr32 atl.dll /s"
  55. Set ws = nothing
  56. PutAttachment "c:\test", "dm.dll"
  57. PutAttachment ".\Plugin" ,"RegDll.dll"
  58. call Plugin.RegDll.Reg ( "c:\test\dm.dll")
  59. Set dm = createobject("dm.dmsoft")
  60. ver = dm.ver()
  61. If len(ver) = 0 Then
  62. MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
  63. EndScript
  64. End If
  65. End Sub
复制代码


系统默认字体用户修改过?


例如:win7系统的字体 默认是微软雅黑,用户改成黑体了,这种情况怎么办呢?

这种情况其实很好办,咱们可以画一个文本框,让用户自己输入自己当前系统是什么字体。是不是很简单。所以再次优化后的脚本,就支持下拉列表框选择系统字体,和手动输入系统字体。 咱们来看看优化后的脚本。


演示

您所在的用户组无法下载或查看附件




Q文件下载:
您所在的用户组无法下载或查看附件

注意:如果是win7微软雅黑字体,电脑桌面上的文字有杂色的,右击计算机——属性——高级系统设置——调整为最佳性能 之后字体是纯色后再进行使用。



您所在的用户组无法下载或查看附件

本文由按键学院提供技术支持
2个月学会赚大钱的脚本
按键学院10月实战班卷土来袭



本主题由 超级版主 瑞祥幽冥狼 于 2023/10/5 18:32:40 执行 审核帖子 操作
按键学院免费交流群:376122403

按键学院招生计划
按键学院系统教程
2#

太好了~

3#

回复能看?

4#

好好好好好好好好好好好好好好好好

5#

看看,学习一下

6#


7#

目前大部分游戏的字体都是采用系统字体

8#

一起看看更方便的方

脚本接单联系QQ:2580036500

手机接单,页游接单,端游接单,不顾一切接单,快用单子砸死我把
9#

你好你好你好

10#

今年花名册改扩建

11#

好东西。来看看

12#

学习下。。 好好

13#

感谢分享..

14#

学习学习

15#

看一看,学一学

QQ836542817
承接各类脚本
价格公道,售后质量保证
16#

学习学习~~~

17#

经典,学习啊

18#

快快快快快快快快快快快快快

19#

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

20#

顶顶顶顶顶顶顶顶顶顶

发新话题 回复该主题