【分享】自己做的LCD屏点阵字模
本帖最后由 MF35_ 于 2024-12-4 20:22 编辑字体分两种,粗体(Bold)和普通(Normal),粗体字模宽度7,普通字模宽度6,高度都是10,宽度和高度包含分隔线
字模在内存上是等宽的,但支持非等宽显示
字模是按照列-行方式扫描,靠上边的像素在LSB,适合12864这样的LCD模块使用,当然,TFT也能用,至于怎么在你的程序中使用就要自己搞了
font_t结构体说明:
typedef struct {
int w, h; // 字模的宽度和高度
int first, end; // 字体支持的字符范围
const unsigned char *bmap;// 字体位图
struct {
unsigned char s, e; // 非等宽显示的起始列和结束列
} attr[];
} font_t;
等宽显示效果
非等宽显示效果
字模C语言代码
根据大家的意见,修改了几处不太好和疏忽的地方,最新的字体现在是这样
居然还考虑到非等宽显示,不错、不错! scoopydoo 发表于 2024-12-4 21:06
居然还考虑到非等宽显示,不错、不错!
必须的啊,实际上等宽字体除了看代码我好像找不到其他使用场景了,这种点阵比较粗的液晶等宽显示太丑了,除了极个别需要对齐的场合,普通文本显示还是非等宽效果更好,而且还省屏幕空间:lol 不错,收藏了! 纯手打字模要费不少工夫。我都是PS里搞,再自己写个程序转成代码
提个建议,那个数字9的字形和字母g的字形很像,9可以稍微改一下提高辨识度 本帖最后由 MF35_ 于 2024-12-6 16:18 编辑
scu319hy 发表于 2024-12-6 13:18
纯手打字模要费不少工夫。我都是PS里搞,再自己写个程序转成代码
提个建议,那个数字9的字形和字母g的字形 ...
一样啊,这玩意儿谁手工搞,都是软件搞BMP,然后写程序转成需要的字模
9和g确实很像,不过宽度和高低位置不同,把g右上角那个点补上区别就明显了
这样是不是辨识度就高了
MF35_ 发表于 2024-12-6 16:13
一样啊,这玩意儿谁手工搞,都是软件搞BMP,然后写程序转成需要的字模
9和g确实很像,不过宽度和高低 ...
这种9是不是要好点?
本帖最后由 MF35_ 于 2024-12-6 20:07 编辑
scu319hy 发表于 2024-12-6 17:33
这种9是不是要好点?
感觉风格不太统一,字体还是要考虑到整体风格,而且点阵太少了,这种倾斜度做不出来,你可以画着试试,数字的大小是粗体7x6,普通7x5
我试试看效果 本帖最后由 MF35_ 于 2024-12-6 20:17 编辑
scu319hy 发表于 2024-12-6 17:33
这种9是不是要好点?
要做出这个斜的尾巴,圆圈部分必须压缩一个像素,这样粗体看着还行,普通的看着就比较丑了,不够饱满,点阵太少要尽量避免斜线,斜线会显得很虚
我稍微调整了一下,感觉还行
看到高手了,我就是不会,想来学习一下:lol 本帖最后由 MF35_ 于 2024-12-6 23:41 编辑
scu319hy 发表于 2024-12-6 21:16
我稍微调整了一下,感觉还行
9和g的风格严重不搭啊,你那两个g的尾巴往上拐,这属于衬线字型,而9这种直尾巴,属于无衬线风格,我做的便是无衬线字型(你看我2、3、5、6、9、S、C、G这些字符,开口处都没有拐弯的),衬线和无衬线是字体风格最大的区别,混用就看着很别扭
另外,我普通体的C其实弄错了,应该是左边这种字型,右边这种是带衬线的,要用的话自己该一下,代码里改也很方便
谢谢大师分享!:) MF35_ 发表于 2024-12-6 23:36
9和g的风格严重不搭啊,你那两个g的尾巴往上拐,这属于衬线字型,而9这种直尾巴,属于无衬线风格,我做 ...
我画那个g不好看是因为点阵太小,那个钩过于突兀
你看Ubuntu Mono这种风格就挺好的
页:
[1]
2