固件汉字字体更改。
出处:http://www.makerlab.me/guides/9/articles/51
我是根据这位大神学的。由于是只学不尝试自己使用的时候不一定成功。然后就按照他的方法做了。才疏学浅才导致问题各种有。自己总结一个最直接快捷的方法记录一下。
下载汉字字库。如大神所说,这个字体确实挺好看:fireflysung.ttf
还有两个工具要用:bdf2u8g.exe FontTool
步骤:
1、ttf ----> bdf 。使用FontTool。里面有教程。不过用不了那么多功能。只需要load 然后save就行了。打开ttf,保存为bdf。不过字体高度(像素为单位)在load的界面注意设置一下。12864的就设置为11好了。
2、使用bdf2u8g.exe。方法看上面的文章链接。
再使用这个软件的时候需要输入参数。我嫌自己计算麻烦,就写了个简单的VS工程编译出来一个MFC形式的exe文件。它的功能是,你在网上查到汉字码以后使用这个小工具计算参数。可以下载看看。如果不能运行就是缺少dll文件。这是工程文件,你可以更改并且用VS编译。由于我不是做PC软件开发的,很粗糙,见笑了。
如汉字“中”,汉字码为4E2D,(不分大小写:4E2D,4e2d)
然后你在win系统cmd命令中就可以直接写:
#bdf2u8g.exe -b 45 -e 45 -l 156 fireflysung.bdf ffs ffs.txt
下面是这个小工具的计算源码:
- void Cchinese_fontDlg::OnBnClickedCalc()
- {
- // TODO: Add your control notification handler code here
- UpdateData(true);
- int high,low;
- char *cnum ;
- cnum = (LPSTR)(LPCTSTR)m_num;
- high = hexturndex(cnum[6]) + hexturndex(cnum[4])*16 + hexturndex(cnum[2])*256 +hexturndex(cnum[0])*4096;
- low = hexturndex(cnum[6]) +hexturndex(cnum[4])*16;
- m_begin = low;
- m_end = high / 128;
- int hex = 0x23;
- if(low < 128)
- m_pagec = "l";
- else m_pagec = "u";
- UpdateData(false);
- }
- int Cchinese_fontDlg::hexturndex(char c){
- switch(c){
- case '0':
- return 0;
- case '1':
- return 1;
- case '2':
- return 2;
- case '3':
- return 3;
- case '4':
- return 4;
- case '5':
- return 5;
- case '6':
- return 6;
- case '7':
- return 7;
- case '8':
- return 8;
- case '9':
- return 9;
- case 'a':
- case 'A':
- return 10;
- case 'b':
- case 'B':
- return 11;
- case 'c':
- case 'C':
- return 12;
- case 'd':
- case 'D':
- return 13;
- case 'e':
- case 'E':
- return 14;
- case 'f':
- case 'F':
- return 15;
- }
- };
得到数据以后就按照MakerLab的方法把数据放到dogm_font_data_marlin.h中。使用的时候setfont(xxxx)就行了。
Ttf格式的字库,网上随便下载。此方法有效。