1mBitmap Distribution Format0m 1mVersion 2.10m X Window System Standard X Version 11, Release 6.9/7.0 Copyright 1984, 1987, 1988 Adobe Systems, Inc. Permission to use, copy, modify, and distribute this soft- ware and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The Bitmap Distribution Format (BDF), Version 2.1, is an X Consortium standard for font interchange, intended to be easily understood by both humans and computers. 1mFile Format0m Character bitmap information will be distributed in an USASCII-encoded, human-readable form. Each file is encoded in the printable characters (octal 40 through 176) of USASCII plus carriage return and linefeed. Each file con- sists of a sequence of variable-length lines. Each line is terminated either by a carriage return (octal 015) and line- feed (octal 012) or by just a linefeed. The information about a particular family and face at one size and orientation will be contained in one file. The file begins with information pertaining to the face as a whole, followed by the information and bitmaps for the indi- vidual characters. A font bitmap description file has the following general form, where each item is contained on a separate line of text in the file. Tokens on a line are separated by spaces. Keywords are in upper case, and must appear in upper case in the file. 1. The word STARTFONT followed by a version number indi- cating the exact file format used. The version described here is 2.1. -2- 2. Lines beginning with the word COMMENT may appear any- where between the STARTFONT line and the ENDFONT line. These lines are ignored by font compilers. 3. The word FONT followed by either the XLFD font name (as specified in part III) or some private font name. Cre- ators of private font name syntaxes are encouraged to register unique font name prefixes with the X Consor- tium to prevent naming conflicts. Note that the name continues all the way to the end of the line and may contain spaces. 4. The word SIZE followed by the 4mpoint24m 4msize24m of the charac- ters, the 4mx24m 4mresolution24m, and the 4my24m 4mresolution24m of the device for which these characters were intended. 5. The word FONTBOUNDINGBOX followed by the 4mwidth24m 4min24m 4mx24m, 4mheight24m 4min24m 4my24m, and the x and y displacement of the lower left corner from the 4morigin24m. (See the examples in the next section.) 6. Optionally, the word STARTPROPERTIES followed by the number of properties (4mp24m) that follow. 7. Then come 4mp24m lines consisting of a word for the 4mproperty0m 4mname24m followed by either an integer or string surrounded by double-quote (octal 042). Internal double-quote characters are indicated by using two in a row. Properties named FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR should be provided to define the logical font-ascent and font-descent and the default-char for the font. These properties will be removed from the actual font properties in the binary form produced by a compiler. If these properties are not provided, a com- piler may reject the font or may compute (arbitrary) values for these properties. 8. The property section, if it exists, is terminated by ENDPROPERTIES. 9. The word CHARS followed by the number of character seg- ments (4mc24m) that follow. 10. Then come 4mc24m character segments of the form: a. The word STARTCHAR followed by up to 14 characters (no blanks) of descriptive 4mname24m of the glyph. b. The word ENCODING followed by one of the following forms: i. the glyph index, that is, a positive integer representing the character code used -3- to access the glyph in X requests, as defined by the encoded character set given by the CHARSET_REGISTRY-CHARSET_ENCODING font prop- erties for XLFD conforming fonts. If these XLFD font properties are not defined, the encoding scheme is font-dependent. ii. 1 equivalent to form above. This syn- tax is provided for backward compatibility with previous versions of this specification and is not recommended for use with new fonts. iii. 1 an unencoded glyph. Some font compilers may discard unencoded glyphs, but, in gen- eral, the glyph names may be used by font compilers and X servers to implement dynamic mapping of glyph repertoires to character encodings as seen through the X protocol. c. The word SWIDTH followed by the 4mscalable24m 4mwidth24m in x and y of character. Scalable widths are in units of 1/1000th of the size of the character. If the size of the character is 4mp24m points, the width information must be scaled by 4mp24m/1000 to get the width of the character in printers points. This width information should be considered as a vector indicating the position of the next charac- ters origin relative to the origin of this char- acter. To convert the scalable width to the width in device pixels, multiply SWIDTH times 4mp24m/1000 times 4mr24m/72, where 4mr24m is the device resolution in pixels per inch. The result is a real number giv- ing the ideal print width in device pixels. The actual device width must of course be an integral number of device pixels and is given in the next entry. The SWIDTH y value should always be zero for a standard X font. d. The word DWIDTH followed by the width in x and y of the character in device units. Like the SWIDTH, this width information is a vector indi- cating the position of the next characters origin relative to the origin of this character. Note that the DWIDTH of a given hand-tuned WYSIWYG glyph may deviate slightly from its ideal device- independent width given by SWIDTH in order to improve its typographic characteristics on a dis- play. The DWIDTH y value should always be zero for a standard X font. e. The word BBX followed by the width in x (4mBBw24m), 4mheight24m in y (4mBBh24m), and x and y displacement (4mBBox24m, 4mBBoy24m) of the lower left corner from the 4morigin24m of -4- the character. f. The optional word ATTRIBUTES followed by the attributes as 4 4mhex-encoded24m characters. The interpretation of these attributes is undefined in this document. g. The word BITMAP. h. 4mh24m lines of 4mhex-encoded24m bitmap, padded on the right with zeros to the nearest byte (that is, multiple of 8). i. The word ENDCHAR. 11. The file is terminated with the word ENDFONT. 1mMetric Information0m Figures 1 and 2 best illustrate the bitmap format and char- acter metric information. -5- BBw = 9, BBh = 22, BBox = -2, BBoy = -6 DWIDTH = 8 0 SWIDTH = 355 0 + = character origin and width Figure 1: An example of a descender -6- BBh = 6, BBw = 4, BBox = +2, BBoy = +12 DWIDTH = 5 0 SWIDTH = 223 0 Figure 2: An example with the origin outside the bounding box -7- 1mAn Example File0m The following is an abbreviated example of a bitmap file containing the specification of two characters (the j and quoteright in figures 1 and 2). STARTFONT 2.1 COMMENT This is a sample font in 2.1 format. FONT -Adobe-Helvetica-Bold-R-Normal--24-240-75-75-P-65-ISO8859-1 SIZE 24 75 75 FONTBOUNDINGBOX 9 24 -2 -6 STARTPROPERTIES 19 FOUNDRY "Adobe" FAMILY "Helvetica" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 24 POINT_SIZE 240 RESOLUTION_X 75 RESOLUTION_Y 75 SPACING "P" AVERAGE_WIDTH 65 CHARSET_REGISTRY "ISO8859" CHARSET_ENCODING "1" MIN_SPACE 4 FONT_ASCENT 21 FONT_DESCENT 7 COPYRIGHT "Copyright (c) 1987 Adobe Systems, Inc." NOTICE "Helvetica is a registered trademark of Linotype Inc." ENDPROPERTIES CHARS 2 STARTCHAR j ENCODING 106 SWIDTH 355 0 DWIDTH 8 0 BBX 9 22 -2 -6 BITMAP 0380 0380 0380 0380 0000 0700 0700 0700 0700 0E00 0E00 0E00 0E00 0E00 -8- 1C00 1C00 1C00 1C00 3C00 7800 F000 E000 ENDCHAR STARTCHAR quoteright ENCODING 39 SWIDTH 223 0 DWIDTH 5 0 BBX 4 6 2 12 ATTRIBUTES 01C0 BITMAP 70 70 70 60 E0 C0 ENDCHAR ENDFONT