矢量字体字形分布图
来源:互联网 发布:java 退出程序 编辑:程序博客网 时间:2024/06/11 16:48
origin是字形显示开始的地方,下一个字体开始的位置是:origin + advance的位置,即是指定了下一个字符的origin出现的位置。advance有x方向的,当然有y方向的,不过这里没有使用,使用y方向将会使字体倾斜。
虽然有坐标基准线,但是英文字体不像汉字方方正正,如果把所有英文字体搞得像汉字一样,那么会很不好看,所以即使在已经订好基准线后,还是会另外设置字体的xmin、xmax和ymin、ymax这四个参数。
Freetype API的使用
我们来总结一下显示一个矢量字符我们都做了什么:
1、初始化一个库
2、加载字体,并用创建一个face来描述字体
3、设置字体的像素大小
4、设置字体的旋转角度以及显示位置
5、找到字型的点阵信息并记录下来
6、显示点阵
要得到上图的信息,我们需要将从face将glyph给取出来,得到box的一些数据,主要是坐标的XY最大、最小值。
首先,从face中拿到放入字体插槽里面的glyph(此操作并不影响origin glyph)。(函数API名 Extracting the glyph image)
error = FT_Get_Glyph( face->glyph, &glyph );
然后再拿出box里面的数据。(函数API名 Measuring the glyph image)
FT_Glyph_Get_CBox(glyph, FT_GLYPH_BBOX_TRUNCATE, &bbox );
一些API函数:
①:FT_Init_FreeType( &library );
功能:这是初始化一个库,所谓库我们可以简单的理解为一个空间,用来存放所有的资源。
②:FT_New_Face( library, argv[1], 0, &face );
功能:读取字体文件中指定类型的字体,并用face来描述它
参数1:表示库
参数2:要打开的文件
参数3:表示要加载的字体的类型,0表示任何类型都可以
参数4:face
一个文件里面可能会含有多种字体,每个字体对应着一个face,也就是说face用来描述某一种字体。
③:FT_Set_Pixel_Sizes(face, 24, 0);
功能:设置字符的像素大小
参数1:face
参数2:每行多少像素,0表示与列相同
参数3:每列多少像素,0表示与行相同
④:FT_Set_Transform( face, &matrix, &pen );
功能:设置传输
参数1:face
参数2:用于设置字体的旋转角度
参数3:用于设置字体的平显示位置,freetype文档里面的参数提示给的delta,也就是数学里面△符号,即然后把它显示到LCD中间位置,但是“我爱你”三个字符之间位置没发生改变,那么坐标(0,0)和(pen.x, pen.y)之间的位置就是delta。
⑤:FT_Load_Char( face, text[n], FT_LOAD_RENDER );
功能:将一个字型的点阵信息记录在face->glyph中
参数1:face
参数2:要记录的字型的编码
参数3:参数
⑥:draw_bitmap( &slot->bitmap , slot->bitmap_left , target_height - slot->bitmap_top );
功能:将字符的点阵存放在一个结构体里面
参数1:用于描述点阵信息的结构体
参数2:x坐标
参数3:y坐标
注意:我们这里的坐标是笛卡尔坐标系,也就是y坐标向上,x坐标向右!而在LCD上的显示坐标系y轴是反向的,所以显示的时候需要将y轴处理一下!
- 矢量字体字形分布图
- 大字体和SHX字形
- 矢量字体和像素字体
- 关于矢量字体
- 记事本中的字体,字形,大小设置。
- android paint api drawText 绘制字体字形
- 获取window下矢量字体
- WPF矢量字体图标(iconfont)
- 点阵字体和矢量字体的区别
- HTML快速入门2——字形、字体和嵌套
- Android 修改全局自定义字体样式(字形,大小)※
- Illustrator矢量特效字:凝胶气泡字体
- AS3将字体转矢量图形
- MiniGUI 3.0 支持truetype 矢量字体问题解决
- STM32+UCGUI+FreeType2 矢量字体的旋转
- windows矢量字体点阵数据的提取
- 嵌入式Linux增加矢量字体的支持
- 韦东山视频心得体会之矢量字体
- linux基础学习笔记-7-ssh服务,NFS服务,tftp服务
- 详解移位运算符-二进制中1的个数
- 1016
- [暴搜剪枝] BZOJ 3733 [Pa2013]Iloczyn
- [拆边费用流] BZOJ 1449 [JSOI2009]球队收益
- 矢量字体字形分布图
- 1012. The Best Rank (25)
- activeMQ消息中文乱码解决
- poj2891(中国剩余定理模版::不要求模数互质)
- Lintcode_28 Search a 2D Matrix
- Android studio 创建aidl文件夹
- iOS面试之runtime
- 初识hadoop框架及hadoop1.x 与hadoop2.x的区别
- java synchronized详解