无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: 2011yaya2007777

[发布] 增强 GRUB4DOS 菜单编辑功能,支持动画,支持精简字库,支持图形菜单

    [复制链接]
发表于 2015-7-18 09:35:04 | 显示全部楼层
jianliulin 发表于 2015-7-17 10:14
@2011yaya2007777 菜单字体有没有办法设置大小?

目前要实现还是比较麻烦的,如果说整个菜单就一种字型还比较好说,有多种格式的话需要考虑的东西比较多
回复

使用道具 举报

 楼主| 发表于 2015-7-18 09:36:33 | 显示全部楼层
那太好了!
fbinsttool产生的字体的点阵字库,是否可以单独存在,即可以用于非ud区?
另外还有个信息流的问题。目前我还不知道unifont.hex是怎样存放点阵字库。从网上看,五花八门的。
回复

使用道具 举报

发表于 2015-7-18 10:54:38 | 显示全部楼层
本帖最后由 jianliulin 于 2015-7-18 11:00 编辑

1.箭头上下左右是调整字体的偏移量,因为有些字体汉字不是在正中间的,比如微软雅黑,
2.目前字体功能比较单一,是直接嵌入到菜单里面的,迟点再完善转换字体功能。
3.如果要转换自定义很多汉字的字体,可以把汉字以文本的形式放到ud,然后再菜单编辑的右键中“管理内嵌字库”弹出的窗口中,再右键产生字体文件,此字体可以导出来,放在任意地地方,字库是通用的。


1.jpg

2.jpg

3.jpg


FbinstTool v1.607.2015.0718.rar

1.71 MB, 下载次数: 198, 下载积分: 无忧币 -2

常用汉字.rar

7.89 KB, 下载次数: 71, 下载积分: 无忧币 -2

回复

使用道具 举报

 楼主| 发表于 2015-7-18 11:14:55 | 显示全部楼层
整个菜单只能是一种字型,否则太复杂了。

点评

目前是这样的,只有一种。其实只要点阵一样大,不同字体应该没有什么影响的,都是根据字体打印点。  详情 回复 发表于 2015-7-18 11:18
回复

使用道具 举报

发表于 2015-7-18 11:18:30 | 显示全部楼层
2011yaya2007777 发表于 2015-7-18 11:14
整个菜单只能是一种字型,否则太复杂了。

目前是这样的,只有一种。其实只要点阵一样大,不同字体应该没有什么影响的,都是根据字体打印点。
回复

使用道具 举报

 楼主| 发表于 2015-7-18 12:43:54 | 显示全部楼层
右键点击,出现菜单,"菜单字体"是灰色的.以管理员身份运行也不行.

点评

是不是你的grldr版本太低,用最新版试试  详情 回复 发表于 2015-7-18 16:43
回复

使用道具 举报

发表于 2015-7-18 16:43:42 | 显示全部楼层
2011yaya2007777 发表于 2015-7-18 12:43
右键点击,出现菜单,"菜单字体"是灰色的.以管理员身份运行也不行.

是不是你的grldr版本太低,用最新版试试
回复

使用道具 举报

发表于 2015-7-22 18:45:59 | 显示全部楼层
又进了一大步,终于找到了升级0.46的动力
回复

使用道具 举报

发表于 2015-7-22 21:32:08 | 显示全部楼层
本帖最后由 假大空 于 2015-7-28 10:47 编辑

grub4dos-0.4.6a-2015-07-16背景图片反复刷屏,grub4dos-0.4.6a-2015-07-14正常。
28日测试发现注销掉外部setmenu命令就正常了。
回复

使用道具 举报

发表于 2015-7-31 11:32:33 | 显示全部楼层
最新版本的菜单如果不使用 setmenu 命令则默认的菜单界面离顶部有好几行.建议默认使用和旧版本一样的界面.
回复

使用道具 举报

 楼主| 发表于 2015-7-31 18:23:50 | 显示全部楼层
#1的测试版本已经修正。
回复

使用道具 举报

发表于 2015-8-1 11:35:30 | 显示全部楼层
2011yaya2007777 发表于 2015-7-9 22:02
# 默认延迟时间(秒)
timeout 15

老师,你好。 咨询一个问题, 如何让ver显示的内容居中?
回复

使用道具 举报

 楼主| 发表于 2015-8-10 22:46:34 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2015-8-12 10:09 编辑
菜单要是支持设置字体大小,就和gxfmenu 差不多了

今天上传的测试版本,已经可以支持设置任意尺寸的等高等宽字体。最好是设置成双数,以便显示窄字符。

问题是,菜单字体大了,控制台字体也大了。有些不爽。
字体大了,所带字库也大了。期待 jianliulin 进一步跟进开发小字库。小字库应当包含:
1. 00 - 0x7f 字符;
2. 菜单中的汉字;
3. grldr 内含的帮助汉字。

点评

0xD9 复制到 0x13,0xBF 复制到 0x15,0xB3 复制到 0x0E,0xC4 复制到 0x0F。注意 0x10 是朝右的三角形(大多字库都不是)。 是什么意思?? 另外我测试了一下是乱码的,字体不能内置吗??  详情 回复 发表于 2015-8-11 17:11
回复

使用道具 举报

发表于 2015-8-10 23:26:02 来自手机 | 显示全部楼层
太赞了!yaya贡献巨大
回复

使用道具 举报

发表于 2015-8-11 14:51:16 | 显示全部楼层
这一下可以去掉几个外部命令了
回复

使用道具 举报

发表于 2015-8-11 17:11:31 | 显示全部楼层
2011yaya2007777 发表于 2015-8-10 22:46
今天上传的测试版本,已经可以支持设置任意尺寸的等高等宽字体。最好是设置成双数,以便显示窄字符。

...

0xD9 复制到 0x13,0xBF 复制到 0x15,0xB3 复制到 0x0E,0xC4 复制到 0x0F。注意 0x10 是朝右的三角形(大多字库都不是)。

是什么意思??



另外我测试了一下是乱码的,字体不能内置吗??

点评

就此话题顺便给 yaya 提一点意见:英文可以写得让人看不懂,然而中文可不能这样(开个玩笑,活跃下气氛)。  发表于 2015-8-11 17:30
回复

使用道具 举报

 楼主| 发表于 2015-8-12 10:31:26 | 显示全部楼层
0xD9 复制到 0x13

意思是使用 bios 的 8*16 字符集合的 0xd9 处的点阵字符,替换 0x13 处的点阵字符。现在没有必要做这项事情了。
测试版本上传时,测试了 20*20 的 dzk 模式。当时没有获得 20*20 的 hex 字符,故未测试。
今天测试 20*20 的 hex 字符,发现问题,待处理。
回复

使用道具 举报

发表于 2015-8-12 12:45:26 | 显示全部楼层
本帖最后由 oskarger 于 2015-8-12 12:46 编辑

timeout 30
default 1
graphicsmode -1 100:1000 100:1000
font /oskar/oskarx.hex

color normal=0xff9933 highlight=0xff3300 helptext=0xff00ff heading=0x66ff00 border=0x006699 entryhelp=0xcc99ff
setmenu --font-spacing=1:6
setmenu --box x=8 w=0 y=5 h=10 l=2
setmenu --auto-num-on
setmenu --left-aglign
setmenu --keyhelp=3
setmenu --ver-on
setmenu --help=7=0=15

command --set-path=(ud)/
find --set-root (ud)/init.lst

我写的有问题吗?   为什么换成8.10版本后无法显示颜色了。。。
更改前:
111.png
更改后:

eee

eee

回复

使用道具 举报

 楼主| 发表于 2015-8-12 18:15:24 | 显示全部楼层
删除  entryhelp=0xcc99ff
回复

使用道具 举报

 楼主| 发表于 2015-8-12 21:47:36 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2015-8-13 11:36 编辑
另外我测试了一下是乱码的,字体不能内置吗??


从 FbinstTool 导出的字库,只包含中文字符:
20*20字体,每字符 120 字节,以 0x0A 结束。正确。
22*22字体,每字符 88 字节,错误。应当是 120 字节。以 0x0A 结束。正确。

从 grldr 导出的字库:
20*20字体,包含中文、英文。中文每字符 120 字节,正确。英文每字符 80 字节,正确。以  0x0D、0x0A 结束,与 unifont.hex 不一致。有文件头  DotSize=20,可以确定字体尺寸。
22*22字体,只包含中文,每字符 88 字节,错误。应当是 120 字节。以  0x0D、0x0A 结束,与 unifont.hex 不一致。没有文件头。

是否可以去掉 '0x0d'?是否可以全部加文件头?看看 22*22字体是怎么搞错了。

刚才又从 grldr 导出 20*20 字体,结果同上面的 22*22 字体,错误的!不知何故。


回复

使用道具 举报

发表于 2015-8-13 21:09:16 来自手机 | 显示全部楼层
直接抄了楼主的菜单,菜单字体颜色怎么设置也无效果,看到楼主的回复才知道是 entryhelp= 参数引起的,删掉就好了,不知道这个参数为什么会使颜色设置失效?
回复

使用道具 举报

 楼主| 发表于 2015-8-13 22:00:16 | 显示全部楼层
不知道这个参数为什么会使颜色设置失效?

后来删除了这个参数。回头我修改一下菜单示例。
回复

使用道具 举报

发表于 2015-8-14 00:49:43 来自手机 | 显示全部楼层
哇,看图片已经支持哪是阿拉伯文?蒙文?
回复

使用道具 举报

 楼主| 发表于 2015-8-14 18:35:55 | 显示全部楼层
今天上传的版本,已经可以加载内置菜单的字库.
内置菜单的头部需有:
DotSize=20
是20*20 点阵字库.
回复

使用道具 举报

发表于 2015-8-14 19:56:31 | 显示全部楼层
32 * 32 的也可以哦

QQ截图20150814195551.png
回复

使用道具 举报

 楼主| 发表于 2015-8-16 12:15:25 | 显示全部楼层
若支持32*32点阵字体,需要 0x800000 字节空间。
若支持48*48点阵字体,需要 0x1200000 字节空间。

目前 UNI 字体开始于 0x1800000,可用空间 0x700000。
GRUB_MOD_ADDR(builtins.c)占用 0x1f00000,长度 0x100000。
cmd_buffer(cmdline.c)命令缓存占用 0x1ff0000,长度 0x10000。

若支持到 32*32,则可以把 GRUB_MOD_ADDR 及 cmd_buffer 挪到其它地方。
若支持到 48*48,则只能把 UNI 字体移动到 0x2020000 ,即 PRINTF_BUFFER(cmdline.c)打印缓存之后。
请不点及 chenall 定夺。
回复

使用道具 举报

发表于 2015-8-16 17:15:11 | 显示全部楼层
本帖最后由 chenall 于 2015-8-16 17:22 编辑

可以考虑使用动态分配内存,一劳永逸.

但是需要先完善malloc和free函数

另外一点,如果这些功能占用的空间比较大,可能的话可以考虑用外部命令来实现,内核尽量不要太大.

点评

外部命令方式不错,没用外部命令就默认还是16 *16 字体,如果有外部命令的情况就根据外面命令的设定来显示菜单,自定义的字体只需在用在菜单上外部命令可以自带字体(或者用一个尾续的批处理带上字体外部命令和字体  详情 回复 发表于 2015-8-16 22:23
回复

使用道具 举报

发表于 2015-8-16 22:23:38 | 显示全部楼层
chenall 发表于 2015-8-16 17:15
可以考虑使用动态分配内存,一劳永逸.

但是需要先完善malloc和free函数

外部命令方式不错,没用外部命令就默认还是16 *16 字体,如果有外部命令的情况就根据外面命令的设定来显示菜单,自定义的字体只需在用在菜单上外部命令可以自带字体(或者用一个尾续的批处理带上字体外部命令和字体),命令行还是固定为16 * 16 字体。
回复

使用道具 举报

发表于 2015-8-17 02:32:19 | 显示全部楼层
大家都谈了看法。我也说说我的观点。观点就是观点,不要拘泥于观点,不要太注重某个人的观点。开发者应该以自己的判断作为主要参考点。

字体字模占用的空间较大,动辄几十 M,上百M,都是很常见的。什么宋体、楷体、隶属、草书,多了去了。如果都装到内存,占用空间太庞大。所以,我同意楼上所说,用外部命令来实现新的字体。




最近我在研究 grub2,想移植它里面的一些驱动。硬盘驱动和键盘驱动已经有点眉目了,有可能成功移植过来。

如果硬盘驱动移植成功,那么 USB 驱动也应该一样可以移植成功。只是我个人的重点偏向于硬盘和键盘,而不是 usb 驱动。所以,我不去做 usb 的移植工作。

需要说明的是,移植以后,目的是让 grub4dos 摆脱 1M 实模式内存的限制,让 grub4dos 隐藏在扩展内存顶部。如此一来,驱动程序的空间就很大了,以后就不怕“常规内存不够用”的问题了。

目前的 grub4dos,其键盘和硬盘都是调用 BIOS,这使得 grub4dos 无法干净利索地隐藏在扩展内存顶部。如果我们不再调用 bios 了(因而不再占用低端常规内存了;只是 int13 处理程序占用几个 KB 的顶端常规内存),那就可以彻底地隐藏在扩展内存顶部了。

隐藏在扩展内存顶部之后,可以编写很大的 int13 处理程序,供 DOS 以及旧版的 Windows 使用。甚至还可以有足够的空间来编写(或移植) int21 的代码,让 grub4dos 直接能够运行 16 位的 DOS 程序。

这个工作完成以后,当然会与现在的 grub4dos 存在一些不兼容。普通用户可能感觉不到不兼容现象,但是,由于程序结构的变化,第三方开发者会感觉到不兼容现象。




目前的 grub4dos 有什么缺点?

很明显,内存管理、进程管理都有缺点,而且是最致命的缺点。有这样的缺点存在,它会给 grub4dos 的进一步开发造成阻力,产生瓶颈。我希望能够移植一个好的进程管理和内存管理系统,可以从 grub2 上移植,也可以从 Linux、Minix、BSD、kolibri 等系统上移植过来。

我对这些工作都不熟悉,所以,如果都由我一人来做,那可能需要很多年(需要学习相关知识才行,因此快不了)。所以,我私自意淫:假如 bean、chenall、Roy、yaya、karyonix 等一大批人都来一起干这事,那恐怕就比较顺利了。

回复

使用道具 举报

发表于 2015-8-17 02:58:41 | 显示全部楼层
g4d越来越牛,不点大人保重身体。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2020-11-25 13:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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