BDF 字体文件格式
BDF 字体文件格式
提交者: Addylee 日期: 2009/7/13 23:12 阅读: 316
来源:www.osplay.org
摘要:BDF是Adobe制定的点阵字体文件,也是XWindow系统中使用的字体文件,我在学校过程中发现,网上资料比较少,中文资料基本没有,因此我在阅读相关英文资料的基础上,根据自己的理解写了这篇总结与大家交流,错误和不完善的地方,期待各位斧正。
标题
- 字体文件整体信息
- 字体文件属性信息
- 字体信息
BDF是XWindow系统中使用的字体文件,全称是Glypn BitmapDistribution Format (BDF)。BDF是Adobe制定的,他是��阵字体的文本描述。因此可以直接使用文本编辑器直接浏览。BDF的文档见http://partners.adobe.com/public/deve ... en/font/5005.BDF_Spec.pdf
字体文件整体信息
下面是文泉驿(http://wenq.org/)点阵宋体的对应的BDF文件片段:
STARTFONT 2.1 FONT -wenquanyi-wenquanyi bitmap song-medium-r-normal--16-160-75-75-P-80-iso10646-1 SIZE 16 75 75 FONTBOUNDINGBOX 17 18 -1 -4
- STARTFONT 2.1 表示这是BDF规范的版本号,目前的版本号为2.2,2.1是XWindow System使用的字体版本号。
- FONT 说明了这个文件的基本信息。这里为 -wenquanyi-wenquanyi bitmap song-medium-r-normal--16-160-75-75-P-80-
- SIZE 指定了每一个字的大小。格式为 SIZE PointSize Xres Yres. 其中PointSize表示每一个点的大小(单位是什么呢?),Xres, Yres分别表示X和Y方向的分辨率,单位是DPI(表示每平方英寸多少个点,值越大单位面积的点越多,对应的分辨率越高。)。
- FONTBOUNDINGBOX 说明字体点阵方格的基本信息,格式为 FONTBOUNDINGBOX FBBx FBBy Xoff Yoff 这里FBBx FBBy表示字体的宽度和高度,具体意义见后面的例子。
字体文件属性信息
STARTPROPERTIES 22 FONT_NAME "WenQuanYi Bitmap Song" FAMILY_NAME "WenQuanYi Bitmap Song" FOUNDRY "WenQuanYi" FONT_VERSION "000.990" WEIGHT_NAME "Medium" SETWIDTH_NAME "Normal" PIXEL_SIZE 16 POINT_SIZE 160 RESOLUTION_X 75 RESOLUTION_Y 75 SPACING "P" UNDERLINE_POSITION -2 UNDERLINE_THICKNESS 1 QUAD_WIDTH 16 CHARSET_REGISTRY "ISO10646" CHARSET_ENCODING "-1" CHARSET_COLLECTIONS "ASCII ISO8859-5 GB2312.1980 BIG5-0 KSC5601.1989-0 JISX0208.1997 ISO10646-1" WEIGHT 10 X_HEIGHT 7 DEFAULT_CHAR 0 FONT_DESCENT 4 FONT_ASCENT 14 ENDPROPERTIES
- STARTPROPERTIES STARTPROPERTIES 22 是属性描述的开始,这里有22个属性字符,ENDPROPERTIES表示属性段结束。其它的都是一些基本属性描述。
字体信息
CHARS 29889
- CHARS 说明了这个字体文件中有29889个点阵字体。 每一个字体以一个STARTCHAR开始,ENDCHAR结束,例如:
STARTCHAR j ENCODING 106 SWIDTH 267 0 DWIDTH 4 0 BBX 4 14 -1 -3 BITMAP 10 00 00 00 10 10 10 10 10 10 10 10 10 E0 ENDCHAR
- STARTTCHAR STARTICHAR 说明了这是哪一个字符,这里是字母j.
- ENCODING ENCODING表示该字符的UNICODE编码,这里106是j的UNICODE编码(和ASCII码一致)。
- SWIDTH DWIDTH, BBX 这几个属性的意义在后面的例子中说明。
- BITMAP 指示了这个字符的点阵,用16进制表示。我们把这个点阵展开成2进制,如下:
...........*.... ................ ................ ................ ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ........***.....
这里用"."表示"0","*"表示"1"
现在我们通过实际的例子来看看FONTBOUNDINGBOX和BBX的意义
在这里,每一个字体都对应一个基本的点阵,BDF文件头部的FONTBOUNDINGBOX说明了基本点阵的大小,FONTBOUNDINGBOX的格式为:
FONTBOUNDINGBOX FBBx FBBy Xoff Yoff
其中FBBx和FBBy指定了X方向和Y方向的像素点的个数,也就是上图中横向和纵向的小格子的数目。在这个例子中,FBBx 为 16,FBBy为20。在图中,o表示坐标原点,Xoff和Yoff表示点阵的左下脚相对原点的坐标值,在这个图中,Xoff为-3,Yoff为-6。在一个字体文件中,每一个字体的基本点阵大小以及原点坐标都是一样的,因此文件头部的FONTBOUNDINGBOX描述了这一个整体信息。 但是不同字体的高度宽度是不一样的,例如j和p就不一样,因此每一个字体都有一个BBX属性,BBX的格式和FONTBOUNDINGBOX类似,
BBX BBw BBh BBxoff0x BByoff0y
这里BBw表示字体的实际最大宽度,在这个图中,BBw为14(比点阵的总宽度少了两个像素),同理高度BBh为15。 BBxoff0x表示字体实际的左下脚相对原点的坐标,这里BBxoff0x为2,同理BByoff0y为-5。 通过上面的对比就很容易明白FONTBOUNDINGBOX和BBX的区别了。
- DWIDTH DWIDTH表示Device Width,以像素为单位,主要是面对显示器设备的,表示一个字体的坐标原点和下一个字体坐标原点的距离,例如图中,第一个"+"号为当前字体的坐标原点,第二个"+"号为下一个字体的坐标原点,他们的距离在X方向上是8个像素点,y方向的距离为0,所以DWIDTH为8,0.
- SWIDTH SWIDTH 是Scalable Width,主要是面向打印机设备的,不是很清楚SWIDTH的具体意义,SWIDTH和DWIDTH的转换关系为: DWIDTH =(SWIDTH / 1000) * (resolution / 72) * PointSize 例如在图中j的SIZE PointSize Xres Yres分别为8 200 200 代入公式可得:
取整后约等于 8. 8 = ( 355/1000 ) * ( 200/72 ) * 8 = 0.355 * 2.778 * 8
参考资料和截图:
- http://www.tsg.ne.jp/GANA/S/pcf2bdf/pcf.pdf
- http://partners.adobe.com/public/deve ... en/font/5005.BDF_Spec.pdf
- http://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format
出处: http://www.osplay.org/modules/article/view.article.php/16
BDF 字体文件格式相关推荐
- BDF 字体文件格式(转)
提交者: Addylee 日期: 10/31 7:50 阅读: 55 摘要: BDF是Adobe制定的点阵字体文件,也是XWindow系统中使用的字体文件,我在学校过程中发现,网上资料比较少,中文资料 ...
- qt QPF 字体各个字段的意义
--[QT环境搭建]qt字库的移植(使其很好的显示中文) 1 如何定制字库(移植字库) 需要将至少两个文件赋值到....lib/font目录下1. fontdir 文件.这个是应用程序寻找当前 ...
- 【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题
在PC机上利用QT开发的应用程序在 设置字体时,在PC上运行,可根据自己的设置,字体随之变大或变小.而移植到ARM上运行时发现,显示 字 体与所设置的字体不用,字体普遍偏小.经过上网搜索发现,是环境变 ...
- Python +tensorflow+pygame 破解任意字体反爬
什么是字体反爬? 每个字符在 都可以用 unicode 编码表示 而字体文件可以理解为Unicode 和 字体形状的映射 ,所以在计算机中字符可以变成我们人类所能理解的形状,所以字体反爬的关键就是字 ...
- Symbian OS应用编程图形篇之字体(1)
在介绍如何使用和显示Symbian OS 中的字体之前,我想应该先了解一下有关字体一些基本概念相关知识. Font .typeface and glyph Font是一套字符集,包括字母.数字和符号等 ...
- woff, 在网页中嵌入任意字体的解决方案
woff, 在网页中嵌入任意字体的解决方案 http://topic.csdn.net/u/20110705/10/98e79aba-1ddf-42fa-84a9-b79ec494cb69.html ...
- 如何在网页中嵌入自己想要的字体(实例下载)
记得以前在国外那些人的网站看到那些字体怎么那么漂亮.而且不像电脑里面自带的字体.原来是通过这个方法来实现的.厉害,我觉得中文那些比较好看的字体,如果能都看到那该多好,不过看中文的TTF字体10M左右. ...
- html css图标怎么跟文字并排,CSS高级技巧:精灵图、字体图标、CSS三角做法、CSS用户界面样式、vertical-align属性应用、溢出文字省略号、常见布局技巧...
CSS高级技巧目录 1.精灵图 使用原因:一个网页往往会有很多小的背景图片作为装饰,为了有效减少接收和发送请求的次数,提供页面加载速度,所以出现了精灵技术.核心原理就是将小图片整合到一张图里,这样浏览 ...
- Android字体简介
Android字体简介 Android系统默认支持三种字体,分别为:"sans","serif","monospace". android. ...
- hwt字体转换ttf_五分钟教你弄懂了字体反爬是个啥
今天的文章内容主要是关于字体反爬. 目前已知的几个字体反爬的网站是猫眼,汽车之家,天眼查,起点中文网等等. 以前也看过这方面的文章,今天跟个老哥在交流的时候,终于实操了一把,弄懂了字体反爬是个啥玩意. ...
最新文章
- 如何在安装程序中判断操作系统是否是64位 inno
- java sender_Spring Boot用JavaMailSender发送邮件方法
- bootstrap模态框和select2合用时input无法获取焦点
- JS实现Sql语句格式化效果
- 【STC15】通过PWM波实现呼吸灯效果
- pagehelper版本升级导致pageSize为0时无法查询全部数据
- matlab生成指数分布,如何在matlab中生成负指数分布和均匀分布的随机数
- 解读微信多开技巧,Python tk 实现微信多开脚本exe工具
- 大疆FPGA/芯片开发工程师(A卷)笔试题(含详解)
- Android Studio Win7安装
- MongoDB4.0 配置文件
- 魔兽三国服务器维护,官方平台霸榜三个月《魔兽争霸3》神仙三国重新定义防守玩法...
- python循环引用的解决办法
- Cocos Creator中退出游戏,暂停,继续
- (信息物理系统)《An architectural approach to the design and analysis of cyber-physical systems》
- Linux 安装Oracel18C完整版
- win10安装.NET Framework 3.5的方法
- 8086+ADC0808+8255A电压测量数码管显示Proteus仿真
- CSDN黑板报背景图片
- 我们应该怎样做时间管理?