Английская Википедия:Glyph Bitmap Distribution Format

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Infobox file format

Шаблон:Short description The Glyph Bitmap Distribution Format (BDF) by Adobe is a file format for storing bitmap fonts. The content takes the form of a text file intended to be human- and computer-readable. BDF is typically used in Unix X Window environments. It has largely been replaced by the PCF font format which is somewhat more efficient, and by scalable fonts such as OpenType and TrueType fonts.

Overview

In 1988, the X Consortium adopted BDF 2.1 as a standard for X Window screen fonts,[1] but X Windows has largely moved to other font standards such as PCF, Opentype, and Truetype.

Version 2.2 added support for non-Western writing. For example, glyphs in a BDF 2.2 font definition can specify rendering from top-to-bottom rather than simply left-to-right.

A BDF font file contains three sections:

  1. a global section that applies to all glyphs in a font;
  2. a section with a separate entry for each glyph; and
  3. the Шаблон:Code statement.

Example

This is an example font containing one glyph, for ASCII capital “A”. This glyph is taken from the GNU Unifont.

STARTFONT 2.1 
FONT -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1
SIZE 16 75 75
FONTBOUNDINGBOX 16 16 0 -2
STARTPROPERTIES 2
FONT_ASCENT 14
FONT_DESCENT 2
ENDPROPERTIES
CHARS 1
STARTCHAR U+0041
ENCODING 65
SWIDTH 500 0
DWIDTH 8 0
BBX 8 16 0 -2
BITMAP
00
00
00
00
18
24
24
42
42
7E
42
42
42
42
00
00
ENDCHAR
ENDFONT

In the above example, the global declarations begin with the Шаблон:Code line and end with the Шаблон:Code line.

Шаблон:Code defines the version of this BDF file as version 2.1.

Шаблон:Code defines the font family and face names as an X logical font description.

Шаблон:Code defines this to be a 16 point font, with an X-axis resolution of 75 dots per inch (dpi) and a Y-axis resolution of 75 dpi. This is the norm under X Window.

Шаблон:Code defines a bounding box for the font of 16 pixels wide by 16 pixels high, with the lower left-hand corner starting at Шаблон:Math and Шаблон:Math. Note that although the bounding box is defined to be a 16 by 16 cell, this can be overridden for individual glyphs. The “A” glyph, for example, is only 8 pixels wide.

Шаблон:Code declares that two special properties will follow. Шаблон:Code is optional in the BDF specification. X Window allows the properties Шаблон:Code and Шаблон:Code to show the height above and below the baseline, respectively, for all glyphs. Шаблон:Code declares that 14 of the 16 pixels in height are above the baseline. Шаблон:Code declares that 2 of the 16 pixels in height are below the baseline. Шаблон:Code appears at the end of the Шаблон:Code section.

Шаблон:Code declares that one character will follow. Although Adobe now refers to this file format as the Glyph BDF, they have retained the keyword Шаблон:Code in the final version of the specification.

Lines beginning with the word Шаблон:Code can be inserted within a BDF file. Anything following the Шаблон:Code keyword on a line is ignored.

Following the above global declarations, the following entries may repeat for each glyph.

Шаблон:Code specifies the start of a character in version 2.1 and earlier, or of a glyph in version 2.2. The string name of this particular character is Шаблон:Code, expressing in the Unicode convention the code point hexadecimal 41 (decimal 65, the ASCII character “A”). In version 2.1 and earlier, the character name string was limited to 14 characters. In version 2.2, the glyph name string can contain up to 65,535 characters.

Шаблон:Code declares the decimal code point for this glyph in the font.

Шаблон:Code declares the scalable width of 500 on the X-axis and 0 (by default) on the Y-axis. This will result in an X-axis offset to the next glyph, but no Y-axis offset to the next glyph (i.e., the glyphs appear straight across in a line). The scalable width is 1000 times the actual point size of the character—the same unit used in an Adobe Font Metric (AFM) file. The number of pixels calculated as Шаблон:Math, where Шаблон:Math is 500 in this example, and resolution is 75 dpi for this font. Because 75 is approximately equal to 72, the number of pixels is the full width of a glyph (defined globally as 16 pixels) times Шаблон:Math, or in other words the width of this glyph is 8 pixels.

Шаблон:Code declares the device width of a glyph. In this case, after the glyph is rendered, the start of the next glyph is offset 8 pixels on the X-axis and 0 pixels on the Y-axis from the current glyph origin. Note that the device width is not necessarily equal to the width of the glyph. It is simply the offset on the X-axis to move the current point to the start of the next glyph.

The scalable width is used to calculate the width of a high-resolution glyph on a printer, whereas the device width is used to calculate the width of a glyph on a display device. Thus the scalable width is specified to greater precision than the device width.

Шаблон:Code declares a bounding box that is 8 pixels wide and 16 pixels tall. The lower left-hand corner of the character is offset by 0 pixels on the X-axis and -2 pixels on the Y-axis.

Шаблон:Code begins the bitmap for the current glyph. This line must be followed by one line per pixel on the Y-axis. In this example the glyph is 16 pixels tall, so 16 lines follow. Each line contains the hexadecimal representation of pixels in a row. A “1” bit indicates a rendered pixel. Each line is rounded to an 8 bit (one byte) boundary, padded with zeroes on the right. In this example, the glyph is exactly 8 pixels wide, and so occupies exactly 8 bits (one byte) per line so that there is no padding. The most significant bit of a line of raster data represents the leftmost pixel.

Шаблон:Code ends the current glyph.

The declarations Шаблон:Code through Шаблон:Code are repeated for each glyph in a font.

Шаблон:Code appears as the last line in the file, after all glyphs in the font have been enumerated.

Version 2.2 Extensions

Version 2.2 of the BDF specification adds support for non-Western fonts. These additions allow moving the origin by a positive or negative movement on the X and Y axes. This not only accommodates right-to-left writing direction, but even top-to-bottom (for example, for Chinese). The following values provide multinational-font support:

Шаблон:Code is set to 0 for writing direction 0, 1 for writing direction 1, or 2 (in the initial global area) for both writing directions within the same font. Traditional Western left-to-right scripts use Шаблон:Code.

Шаблон:Code and Шаблон:Code have the same parameters as Шаблон:Code and Шаблон:Code, respectively. Шаблон:Code must be present for a Шаблон:Code glyph. Its offsets can be positive or negative.

Шаблон:Code defines an X-axis offset and a Y-axis offset to transition from a mode 0 glyph to a mode 1 glyph. An opposite offset is applied during a mode 1 to mode 0 glyph transition.

This scheme easily accommodates two writing directions. Historically, fonts had 128 or 256 code points. Today, Unicode allows for over one million code points. Fonts can conceivably contain thousands of glyphs, some of which should be written left-to-right, some right-to-left, and some top-to-bottom. Such multi-directional writing requires creative use of Шаблон:Code and Шаблон:Code for each glyph.

In addition to keywords added for international support, version 2.2 adds the Шаблон:Code declaration. This keyword is followed by an integer to indicate the version number of the font.

For more detailed information, consult the version 2.2 specification.

X Window Properties

X Window font utilities support several properties that can be specified in the Шаблон:Code section of a BDF file.[2] A generic BDF file is in ASCII encoding. X Window properties are specified using ISO 8859-1 encoding, which is an extension of ASCII. These properties include:

Notes

Шаблон:Reflist

References

Шаблон:Refbegin

Шаблон:Refend

External links