鱼C论坛

 找回密码
 立即注册
查看: 418|回复: 3

[技术交流] Unifont字体原理解析

[复制链接]
发表于 2023-11-12 20:39:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ba21 于 2023-11-14 10:31 编辑

前段时间在更新本人“郴维电脑装机维护工具”(U盘启动制作工具)时,用上了之前写的“Grldr内置菜单编辑器”,但是缺少了Windows系统字体转Unifont字体的功能,看别人程序都有这个功能,于是秉着自己能搞得出的东西就自己搞,没必要用别人的(并不是用得上,单纯就是好奇想做出来)。
Unifont字体是以.hex扩展名文本形式保存,相关的资料少的可怜,经过一段时间的摸索,终于搞清了它的原理。

什么是Unifont字体,Unifont字体的应用场景,这里就不多说了,可自行ChatGPT。
使用Unifont字体的案例,接触最多的应该就是U盘启动制作工具,市面上的U盘启动制作工具基本上都是使用GRUB4DOS制作,而GRUB4DOS使用的就是Unifont字体。

主要优点:
  字符覆盖范围广泛。
  低分辨率下能够保证文字清晰。
  
主要缺点:
  小字号下的显示效果很差,且官网目前只有 16px * 16px 的字体,未来可能会出 32px * 32px 的字体。
  官网字体单一,特殊字体或大号字体需要自行制作。
  
Unifont字体原理:
  在官网http://unifoundry.com/pub/unifont/ 下载字体文件 如:unifont-15.1.02.hex.gz,解压后得到unifont-15.1.02.hex(它是一个纯文本文件),然后用notepad++打开,如图:
   1.png
  每行由2个字段使用“:”分割从而组成一个字符信息
  <Unicode 码点>:<字形数据>
  第1个字段为4位到6位的代码点(字符的十六进制表示形式),
  第2个字段为“字形数据”(字符的位图表示形式),用十六进制数字表示。
    对于 16px * 16px 大小的字符,字形数据由32个十六进制数字组成,ASCII范围内的字符为 8px * 16px,原因是ASCII用宽度一半的像素就够表示了(宽 = 16/2 px),所以ASCII码可以由16个或者32个十六进制数字组成。

字符信息分析 如:
  0078:00000000000042422418182442420000

  第1个字段代码点:
    0078 通过查找ASCII码表得到对应字符为“x”。
  
  第2个字段字形数据:
    字形数据:就是由0和1组成的像素点数据,0表示背景,1表示字形,然后把这些二进制数据合成十六进制的字符串形式。
    00000000000042422418182442420000
    00 00 00 00 00 00 42 42 24 18 18 24 42 42 00 00  对于 16px * 16px 大小的字符,ASCII范围内的字符可以是16/2px * 16px。
    转为二进制,1个字节为8个二进制位,8个像素用1个字节可以表示,16个像素则要用2个字节来表示,以此类推。
    00 00000000
    00 00000000
    00 00000000
    00 00000000
    00 00000000
    00 00000000
    42 01000010
    42 01000010
    24 00100100
    18 00011000
    18 00011000
    24 00100100
    42 01000010
    42 01000010
    00 00000000
    00 00000000
  
附上本人用C#写的“Windows系统字体转Unifont字体”和“Grldr内置菜单编辑器”程序给有需要的人,及转换后的效果图:
WinXp、Win7(Win8及更高版本无需安装,已自带)使用前请先安装 .net framework 4 或以上 运行库,否则程序无法运行。
Windows系统字体转unifont字体v1.0.rar (825.02 KB, 下载次数: 2)
Grldr内置菜单编辑器v8.0.rar (62.86 KB, 下载次数: 0)
g4.png
uf.png
sss.png
yy.png

  

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
python爱好者. + 5 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-12 22:06:57 | 显示全部楼层
nb
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-11-12 22:37:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-13 20:53:27 | 显示全部楼层
nb
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 00:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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