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
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
CHARS 29889
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
...........*.... ................ ................ ................ ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ...........*.... ........***.....这里用"."表示"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(比点阵的总宽度少了两个像素,因为在上图中,字母P的最左边,和最右各有一个空格。),同理高度BBh为15。 BBxoff0x表示字体实际的左下脚相对原点的坐标,这里BBxoff0x为-2,同理BByoff0y为-5。 通过上面的对比就很容易明白FONTBOUNDINGBOX和BBX的区别了。
取整后约等于 8. 8 = ( 355/1000 ) * ( 200/72 ) * 8 = 0.355 * 2.778 * 8