叶帆工作室

嵌入式开发爱好者(十年开发经验,精通C/C++/VC/VB/C#...)

原创 .Net Micro Framework研究—Tinyfnt字体研究收藏

目前.Net Micro Framework系统仅支持Tinyfnt字体文件,官方仅提供两种字库:NinaB.tinyfnt,small.tinyfnt。用我后来做的程序打开这两种字体,发现它们仅支持如下100字符:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€°■▪
如果要显示汉字,并且设置大小、粗细等等参数,必须要用专门的转换工具把windows中的ttf字体转换为Tinyfnt字体。
这部分内容可以参见我以前写的文章《.Net Micro Framework研究—中文显示》:http://blog.csdn.net/yefanqiu/archive/2007/11/01/1862300.aspx
其实上篇文章有点问题,其实 AddFontToProcess C:\Windows\Fonts\Miramo.ttf 指令可以不用,真正起作用的是SelectFont命令中的FN参数。此外SelectFont命令中的UN参数是无效的,加这个参数和不加这个参数,转换后的Tinyfnf字体文件二进制数据完全相同。
我对我以前的字体转换工具又进行了改进,一是重新调整了界面,二是支持多语言(目前支持英文和简体中文两种)。
下面是软件截图:
由于官方不公开Tinyfnt字体的结构文件,自己只好从现成的二进制文件进行分析了,下面是我对Tinyfnt文件定义的一个结构体,其主要的参数如下:
        private class MFFont
        {
            public UInt16 uSize;            //数据长度 +27=文件总长度  
            public byte bytHeight;          //字体高度
            public UInt16 uGroupNum;        //字体组个数
            public UInt16 uFontNum;         //字体个数
            public UInt16[] uFontStart;     //起始字符1
            public UInt16[] uFontEnd;       //结束字符1
    } 
通过这个结构体,你就可以还原出这个字库中包含的文字内容和字体高度了,不过很可惜,通过我目前的解析,还是无法从字体文件中获知原始字体文件的名称(如是宋体还是黑体等等?),是否粗体?斜体?等等参数。
除此之外剩下的字库内容想必就是字体的点阵结构了,具体的内容我没有多加验证,有机会我再和大家一一探讨。
 

发表于 @ 2007年12月22日 23:04:00|评论(loading...)

新一篇: 用C#操作类读写WinCE平台Mac地址 | 旧一篇: C#文件方式读写结构体探析

用户操作
[即时聊天] [发私信] [加为好友]
叶帆
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
叶帆的公告
本博客原创文章,作者保留一切权利,需经作者同意后方可转载,转载时 请注明[叶帆工作室]及文章链接。yefan@vip.sina.com
【简介】叶帆[微软MVP]
【文章】叶帆文章列表
【软件】叶帆共享软件列表
文章分类
收藏
    【叶帆软件】
    [01]VB源码之友(V2.1.548)
    [02]API浏览器.net(V5.0)
    [03]叶帆成语词典(V2.0.8)
    [04]叶帆密码库(V1.2.8)
    【叶帆资源】
    DAO 2.0引擎
    叶帆快速通道
    MSDN-MVP
    Windows Embedded 专题
    中文MSDN
    叶帆圈子--工业自动化
    叶帆工作室(博客园)
    叶帆工控--工业自动化
    微软中文技术论坛
    微软硬件创新中心(HIC)
    瑞康社区论坛
    叶帆友情链接
    张欣
    枕善居
    莫依
    葛涵涛
    郑建
    陈辉
    马宁
    马骐
    魏涛序
    黎波
    存档
    Csdn Blog version 3.1a
    Copyright © 叶帆