
本帖最后由 QianFan 于 2015-3-5 21:04 编辑 - e* n/ @3 L) M, [' R3 |9 g 今天使用STM32F429I Discovery编写一个简单的图形函数,主要是基于FrameBuffer的绘图。在绘制圆,直线,矩形的时候还算是正常,但是当在屏幕上打印字符串的时候出现了bug。由于使用了ST官方历程的字体库,懒得自己取模了。ST的源文件是:fonts.c。这个大家可以再官方的固件库中找到。这里就不上传了。( T2 g6 t+ \( Q' e7 C 在编写程序实际测试的时候,发现不同的字体显示效果不一样,有的是正常的,有的是左右颠倒的。这个很自然的想到是MSB/LSB FIRST的问题,也就是取模时高低位哪一个在前的问题。可是不管是改成MSB FIRST 还是LSB FIRST,总会有几个字库的文字是颠倒的,并且字与字之间的间隔很大。本着瞎折腾的原则,我用excel将不同字库的a字母画了一遍(之所以选用a是因为a左右颠倒之后比较明显)。下面是截图:' `# K" n6 g; c l 先看0808的:取模的时候是高位在前,这个a还算是比较均衡的。左右还算是对称。 0808 ![]() ( W5 N' r* _; a; p: S1 I. }# n 再来看0812的:和0808的一样,也是MSBFIRST,不过这个字严重比例失调。这是什么情况。。。已无力吐槽。这字库是实习生做的吧。。。5 i1 Z, R- q6 Q) e- |( ~; K- p 0812 ![]() ' D+ o% y2 o7 u; k" @ ) l, j2 f, q: r7 ]! o# y 下一个是1212的:这个竟然不同于上两个,竟然是LSB FIRST,这使用不同的字库竟然还要在开始的时候判断是LSB FIRST 还是MSB FIRST吗???上下还说的过去,但是在看看这左右。。。。. Y% q2 ^& S( Q5 ?4 G2 x1 p) w 1212 ![]() 9 v8 B: [9 r! o4 j( Q2 w + E$ F! n& F7 x4 h. [$ n5 F * G9 T6 F) F# E8 N0 {& g9 e" U 最后一个是还算比较正常的1624 。。。只不过依然霸气的使用LSB FIRST,结果我按照MSB FIRST画出来是这个样子::总的来说上下左右还算比较对称。 1624 ![]() : y' p" q7 B+ @: w) F3 ] 四种字体中竟然两种LSB FIRST,两种MSB FIRST。。想想也是醉了,更不用吐槽这个对称了。。。 难道老外喜欢的是不对称的美吗 ![]() 9 [/ n L3 V: ?9 c% d4 Z 上传一个这四个字体的pdf(因为社区不能上传excel,所以转成pdf之后上传)。0 `8 L9 t6 |0 k$ C6 R/ b 8 V: W+ C K4 Q# I2 f 5 H3 M* |8 M8 F h6 a ) j! D9 [! I2 y) K/ a - B# i; y/ y6 p) z' l1 ]3 d9 S9 W 8 H; V+ {3 Y5 U* A; v4 e3 l |
Font.pdf
下载55.96 KB, 下载次数: 2
没必要,不同的用途的话只需要在程序中修改从高位读取或者从第低位读取就行,没必要重做字库
你会发现上述字库并没有漏掉信息,只是位置不同,类似于减少字母占用的显示宽度?比如i就比a少占用显示空间。
可是至少也要做的对称一点、、。。。。还有剩下那么多的空间就不能把字体做的稍微大一点。。。
$ z% [$ |% b' G! t
应该是你读取字库数据或写数据到LCD缓冲区时的时序或指针出错所致吧。你可以查看字模读取到缓存后的数据正确否,如果正确,就不是字库的问题了。况且对于英文字模,都是非常现成的,无需ST自己再去造字。
不清楚老外是怎么想的啊