目前.Net Micro Framework系统仅支持Tinyfnt字体文件官方仅提供两种字库NinaB.tinyfntsmall.tinyfnt。用我后来做的程序打开这两种字体发现它们仅支持如下100字符
!"#$%&'()*+,-./0123456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~€°■▪ 
如果要显示汉字并且设置大小、粗细等等参数必须要用专门的转换工具把windows中的ttf字体转换为Tinyfnt字体。
这部分内容可以参见我以前写的文章《.Net Micro Framework研究—中文显示》http://yfsoft.blog.51cto.com/1635641/323403其实上篇文章有点问题其实 AddFontToProcess C:\Windows\Fonts\Miramo.ttf 指令可以不用真正起作用的是SelectFont命令中的FN参数。此外SelectFont命令中的UN参数是无效的加这个参数和不加这个参数转换后的Tinyfnf字体文件二进制数据完全相同。
我对我以前的字体转换工具又进行了改进一是重新调整了界面二是支持多语言目前支持英文和简体中文两种。
下面是软件截图

 

.Net Micro Framework研究—Tinyfnt字体研究 .Net Micro Framework研究—Tinyfnt字体研究


由于官方不公开Tinyfnt字体的结构文件自己只好从现成的二进制文件进行分析了下面是我对Tinyfnt文件定义的一个结构体其主要的参数如下
    


  1. private class MFFont  
  2.     {  
  3.         public UInt16 uSize;            //数据长度 +27=文件总长度     
  4.         public byte bytHeight;          //字体高度  
  5.         public UInt16 uGroupNum;        //字体组个数  
  6.         public UInt16 uFontNum;         //字体个数  
  7.         public UInt16[] uFontStart;     //起始字符1  
  8.         public UInt16[] uFontEnd;       //结束字符1  
  9. }   

通过这个结构体你就可以还原出这个字库中包含的文字内容和字体高度了不过很可惜通过我目前的解析还是无法从字体文件中获知原始字体文件的名称如是宋体还是黑体等等是否粗体斜体等等参数。
除此之外剩下的字库内容想必就是字体的点阵结构了具体的内容我没有多加验证有机会我再和大家一一探讨。





















本文转自yefanqiu51CTO博客原文链接http://blog.51cto.com/yfsoft/322943如需转载请自行联系原作者

相关文章: