
嵌入式TTF字体文件制作
制作目的:
1.嵌入式空间存储要求,全汉字的TTF字体文件至少2M,造成不必要空间浪费。
2.界面美观目的,嵌入式终端艺术字或特殊字的使用。定制自己的字库,以便使得最终用户能够看到漂亮的中文显示。
制作工具:
1.Font Creator Program 41 简称 FCP
2.Photoshop90
3.汉字内码查看器10
制作方法:
1.FCP新建一个TTF字体文件,选择unicode字符,正常。删除所有已存在的字模,跟据自已需要添加新的字模。
2.添加新的字模,在字模属性中设置字模预设宽度为2048。两红线相交点即为汉字显示起点。两条黑线,一条红线,一条虚线的方格即为显示区域的大小。
3.在photoshop中新建一个320x240的背景窗。在其上以200大小写入一个汉字,选择黑体。自行设置汉字的样式,选择拉伸,旋转或变形。制作好汉字后,将另存为bmp 24色的图形(bmp图形比jpeg图形的制作效果要好)。
4.双击字模,然后右击选择导入刚制作的bmp图像。将图像拉伸刚好填充整个显示区域。
5.用汉字内码查看器获取所制作字体的unicode编码。右击字模在属性中选择映射。添加刚才unicaode编码映射。至此字模制作完成。
6.制作完所有的字模之后,选择“字体”-“安装”。生成最终的字体库文件。
7.利用相应的嵌入式软件函数创建字体,选择任意的大小,即可显示使用。
hzFont = CreateLogFont("ttf",
"hanzi",
"GB2312",
FONT_WEIGHT_BOOK,
FONT_SLANT_ROMAN,
FONT_SETWIDTH_ALL,
FONT_SPACING_ALL,
FONT_UNDERLINE_NONE,
FONT_STRUCKOUT_NONE,
24, 0);
望采纳,谢谢楼主。
运行出错,退出重新进入即可。
字模提取是一款小巧实用的文字提取工具,可以帮助用户轻松提取出字模从而生成C15或A54格式文件。软件支持所有字符的取模,如日文、俄文、土耳其文等,支持使用从12x12到256x256任意点阵大小进行文字取模,支持文字单写模式和连写模式,非常适用于编程工作者。
keil uvision3是外国公司的,像这类软件现在一般不支持中文!KeilSoftware公司推出的uVision3是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。
除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。
此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。
uVision3提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。
uVision3提供对多种最新的8051类微处理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以及Infineon的XC866等。KeilC51V805为最新汉化版,全中文环境,支持PA51中文单片机汇编,可实现全中文编程、动态子程序库调用、自动汉字字模生成、自动图像数据生成等诸多强大功能。本版本已修正0xFD的BUG,注册后解除2K代码限制和8K编译限制。
从网上下载一个字模文件hzk16,放在c:\hzk16,然后新建一个EXE工程,在Form1上放一个PictureBox,一个Text,一个Hscroll,然后将下列代码复制进去:
Private Sub Form_Load()
Picture1BackColor = vbWhite
Picture1ScaleMode = vbPixels
Picture1AutoRedraw = True
HScroll1Min = 1
HScroll1Max = 20
HScroll1Value = 2
Text1Text = "示例文字"
ShowZM Text1Text, Picture1, HScroll1Value
End Sub
Private Sub HScroll1_Change()
ShowZM Text1Text, Picture1, HScroll1Value
End Sub
Private Sub Text1_Change()
ShowZM Text1Text, Picture1, HScroll1Value
End Sub
Sub ShowZM(str As String, oPicBox As PictureBox, isize As Integer)
oPicBoxCls
Dim Hz(0 To 31) As Byte '转换完的32字节的字模数据
For ichar = 1 To Len(str) '依次读取字符串中所有字符
char = Mid(str, ichar, 1)
If Asc(char) > 128 Or Asc(char) < 0 Then '如果是汉字
ascBytes = Asc(char) - &HA1A1
If ascBytes < 0 Then
ascBytes = ascBytes + 65536
End If
C1 = (ascBytes And &HFF00) / 256 '区内码
C2 = (ascBytes And &HFF) '位内码
rec = C1 94 + C2
Location = (CLng(rec)) 32 + 1 '该汉字在1616点阵字库中字模第一个字节的位置
Else '如果是英文字符
Location = (Asc(char) + 155) 32 + 1
End If
sTmp = "c:\hzk16"
Open sTmp For Binary Access Read As #1 '根据区位码读取该字符在16点阵字库中的原始字模
Get #1, Location, Hz
Close #1
irow = 1
For i = 1 To 31 Step 2 '每个字节可以表示8个像素,因此1616汉字点阵需要1616/8=32个字节,每一行用两个字节表示,第一个字节表示第一行左边8个点的像素,第二个字节表示右边8个点的像素
For j = 1 To 8
If Hz(i - 1) And 2 ^ (8 - j) Then '用AND逐位位运算获得每个像素上是1还是0,如果是1,则在PictureBox上画一个isizeisize大小的红色方块
For k = 0 To isize - 1
For l = 0 To isize - 1
oPicBoxPSet ((j + (ichar - 1) 16) isize + k, irow isize + l), vbRed
Next
Next
End If
Next
For j = 9 To 16
If Hz(i) And 2 ^ (16 - j) Then
For k = 0 To isize - 1
For l = 0 To isize - 1
oPicBoxPSet ((j + (ichar - 1) 16) isize + k, irow isize + l), vbRed
Next
Next
End If
Next
irow = irow + 1
Next
Next
End Sub
生成的字模作为数组放在单片机的rom中
比如 在程序中定义 unsigned char code zimo[]={这里放字模数据};
然后编译后就在hex文件中,再烧写如单片机,就在单片机里面了
以上就是关于怎么做自己的TTF文件全部的内容,包括:怎么做自己的TTF文件、取字模软件 闪退、keil新建工程没有search等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)