Fact-checked by Grok 2 weeks ago

Glyph Bitmap Distribution Format

The Glyph Bitmap Distribution Format (BDF) is a text-based file format developed by Adobe Systems for storing and distributing bitmap representations of glyphs in fonts, designed to be both human-readable and easily parsed by computers. It serves as a standard for font interchange, particularly in Unix-like systems, by encoding glyph metrics, bitmaps, and properties in a structured ASCII format. Version 2.1 of BDF, released as an X Consortium standard, forms a core part of the X Window System's font handling capabilities, enabling the exchange of fixed-width and proportional bitmap fonts across platforms. BDF originated in the mid-1980s under Adobe's development, with initial copyrights dating to 1984, and evolved to support the growing needs of graphical user interfaces in computing environments. The format was formalized in Adobe's 1993 specification document, which emphasized compatibility with industry standards like the XLFD (X Logical Font Description) naming convention for fonts. By 1987–1988, enhancements allowed for optional properties such as ascent and descent metrics, improving its utility for precise text rendering. Although bitmap fonts have largely been supplanted by scalable vector formats in modern typography, BDF remains influential in legacy systems and open-source projects for its simplicity and portability. At its core, a BDF file begins with the keyword STARTFONT 2.1 and includes sections for font metadata (e.g., FONT, SIZE, FONTBOUNDINGBOX), optional properties (e.g., FONT_ASCENT), and a CHARS count followed by individual glyph definitions. Each glyph entry starts with STARTCHAR, specifies encoding and bounding box via ENCODING and BBX, and provides bitmap data in hexadecimal format under BITMAP, ending with ENDCHAR. This structure supports essential rendering details like scalable width (SWIDTH) and device width (DWIDTH), ensuring accurate positioning and scaling of characters. Lines beginning with the keyword COMMENT allow for annotations, enhancing maintainability without affecting parsing. BDF's primary applications lie in the X11 windowing system, where it facilitates the loading and display of bitmap fonts in applications ranging from terminals to graphical interfaces. It has been integral to projects like the X Font Server (Xfs) and continues to be used in distributions such as GNU Unifont for Unicode coverage in bitmap form. Tools for converting BDF to binary formats like PCF (Portable Compiled Format) exist to optimize performance in runtime environments, underscoring its role as an intermediate distribution medium rather than a direct rendering format. Despite advancements in outline fonts, BDF's text-based nature makes it ideal for version control, editing, and cross-system portability in specialized or embedded contexts.

History and Development

Origins and Initial Release

The Glyph Bitmap Distribution Format (BDF) was developed by Systems Incorporated in to facilitate the exchange of fonts across different systems. This format emerged during a period when bitmap fonts were essential for rendering text in graphical user interfaces, particularly on early workstation environments. The primary of was to establish a plain-text, ASCII-encoded that could be readily interpreted by both humans and machines, offering a stark to the opaque formats used by many font vendors at the time. By prioritizing and portability, Adobe aimed to simplify font , often via magnetic tapes or early like UNIX tar archives. The initial specification, released in 1987, centered on support for ASCII and Latin-1 character sets to meet the needs of English-language computing applications. Key features of the original BDF included definitions for fixed-size bitmap glyphs, each accompanied by a bounding box (BBX) to specify ink dimensions and offsets, as well as scalable and device widths (SWIDTH and DWIDTH) for positioning. Bitmap data itself was encoded in hexadecimal format within the BITMAP keyword, allowing compact representation of pixel patterns padded to full bytes. These elements ensured that fonts could be compiled and rendered consistently without proprietary tools. Later, BDF was adopted by the X Consortium as a standard for font interchange in the X Window System.

Adoption and Standardization

The X Consortium adopted the Glyph Bitmap Distribution Format (BDF) in 1988 as part of X Window System Release 11 Version 3, designating it as a standard for bitmap font distribution and interchange to support screen fonts across Unix-like systems. As part of this adoption, new BDF font files were donated by Adobe Systems, Inc., Digital Equipment Corporation (including Courier, Times, Helvetica, New Century Schoolbook, and Symbol), and Bitstream, Inc. (Charter), supporting various sizes, styles, weights, and resolutions for 75 and 100 dpi monitors. This integration enabled developers to exchange portable, human-readable font files within the X environment, promoting consistency in graphical interfaces on diverse hardware platforms. The format was standardized by the X Consortium in 1988, as part of X Window System Release 11 Version 3 (X11R3), to underscore its emphasis on cross-platform portability through an ASCII-based structure compatible with USASCII encoding. This version solidified BDF's role as an open standard for font interchange, facilitating its use in early network-transparent computing environments. In the early days of Unix font , BDF files were commonly shared via such as BPI nine-track magnetic tapes, each containing multiple unlabeled files preceded by a and separated by markers, which supported collaborative exchanges among institutions and developers. By the mid-1990s, BDF's usage declined with the of scalable formats like , introduced in , which better accommodated varying resolutions and reduced the need for fixed-size fonts in applications. Despite this shift, BDF persists in Unix-like systems, font servers, and tools requiring precise rendering, such as certain X11 implementations.

Technical Specification

File Structure

The Glyph Bitmap Distribution Format (BDF) is a plain text file format designed for representing bitmap fonts in a human-readable and machine-parsable manner. It organizes content into a sequential structure beginning with a header that identifies the file type and version, followed by global font metrics, individual glyph definitions, and a closing marker, all encoded in US-ASCII without any binary elements to facilitate easy interchange and editing. Every BDF file commences with the keyword STARTFONT immediately followed by the version number, such as STARTFONT 2.1, which declares the format compliance and enables parsers to validate the structure upfront. This header is succeeded by a series of global font properties that define overall characteristics, including FONTBOUNDINGBOX specifying the font's bounding box dimensions (width, height, and offsets). Additional fixed keywords and optional properties, such as SIZE for resolution and point size or CHARS tallying the number of glyphs, further delineate font-level metrics before transitioning to glyph-specific data. Ascent and descent metrics are provided via optional properties in the STARTPROPERTIES section. The core of the file consists of per-glyph sections, each initiated by STARTCHAR followed by the glyph's name (e.g., STARTCHAR A), which encapsulates all details for a single character. Within each section, keywords include ENCODING for the character's code point, SWIDTH and DWIDTH for scalable and device widths respectively, BBX for the bitmap's bounding box (width, height, and offsets), and optionally ATTRIBUTES for attribute data if supported. The BITMAP keyword then presents the pixel data as a series of hexadecimal byte rows, where each row encodes a horizontal scanline of pixels (e.g., 01 representing a single set bit in an 8-pixel-wide row, padded to full bytes), ensuring compact yet readable raster information. These sections conclude with ENDCHAR, maintaining a nested, self-contained organization for each glyph. The file terminates with the ENDFONT keyword, signaling the end of all data and allowing sequential line-by-line parsing without dependencies on binary offsets or complex indexing. This linear, keyword-driven layout, using uppercase identifiers and space-separated values on variable-length lines, promotes straightforward implementation in font tools and servers while preserving legibility for manual inspection.

Font-Level Properties

The Glyph Bitmap Distribution Format (BDF) includes several font-level properties that establish the overall characteristics and for the entire font file, enabling consistent rendering and identification across systems. These properties appear early in the file structure, immediately following the header, and apply globally to all glyphs defined within the font. They conform to the X Consortium's standard for bitmap font interchange, ensuring portability in environments like the . The FONT property specifies the full name of the font, typically following the X Logical Font Description (XLFD) convention, which encodes details such as foundry, family, weight, slant, and character set. For example, a typical value might be -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1, where components like "adobe" indicate the foundry and "iso8859-1" denotes the encoding. This string extends to the end of the line and may include spaces, allowing for private naming schemes if XLFD is not used. The property ensures fonts can be uniquely identified and matched in font servers or applications. The property defines the nominal point size of the font along with the and vertical resolutions in (dpi). Its is SIZE <point_size> <x_resolution> <y_resolution>, such as SIZE 10 75 75, which represents a 10-point font designed for 75 dpi in both directions. This is crucial for and adjustments, as it relates the font's metrics to physical output devices without altering per-glyph bitmaps. The FONTBOUNDINGBOX property describes the maximum extent of any glyph in the font, specified as FONTBOUNDINGBOX <width> <height> <x_offset> <y_offset>. An example is FONTBOUNDINGBOX 9 24 -2 -6, indicating a bounding box 9 pixels wide and 24 pixels high, with the lower-left corner offset by -2 pixels horizontally and -6 pixels vertically from the origin. This global metric helps in layout calculations by providing the envelope for all characters, aiding alignment and spacing in text rendering. The CHARS property declares the total number of glyph definitions that follow in the file, formatted as CHARS <number>, for instance, CHARS 256 for a full ASCII set. It serves as a count to facilitate parsing and validation of the font's completeness, ensuring that exactly that many bitmap segments are present before the file's end. Custom and standard properties are introduced by the STARTPROPERTIES keyword, followed by the count of properties, such as STARTPROPERTIES 19, with each subsequent line presenting a key-value pair until ENDPROPERTIES. Standard properties include CHARSET_REGISTRY and CHARSET_ENCODING, which together identify the character set, e.g., CHARSET_REGISTRY "ISO8859" and CHARSET_ENCODING "1" for ISO 8859-1. Additional common properties encompass FAMILY_NAME, like "Courier", to denote the font family, and WEIGHT_NAME, such as "Medium", to specify stylistic weight. These properties, often derived from XLFD components, provide extensible metadata that integrates with X Window System font properties for querying and selection in rendering pipelines.

Glyph Definitions

In the Glyph Bitmap Distribution Format (BDF), individual glyphs representing characters or symbols are defined in dedicated sections following the font-level properties, allowing for precise control over their appearance and positioning in bitmap fonts used primarily in the X Window System. Each glyph entry encapsulates metrics for scalable and device rendering, along with the actual pixel data, enabling fonts to support various resolutions while maintaining readability. These definitions are human-readable and structured sequentially, starting with an initiation keyword and ending with a closure, to facilitate parsing by font servers and rendering applications. Glyph entries begin with the STARTCHAR keyword, followed by a descriptive name for the glyph, limited to 14 characters without spaces, which serves as an identifier rather than a functional codepoint. For example, STARTCHAR A initiates the definition for the uppercase letter A. This name is primarily for documentation and does not affect encoding or rendering. The ENCODING keyword specifies the glyph's codepoint in the font's encoding scheme, typically as a non-negative integer corresponding to standards like ASCII or ISO Latin-1. It supports backward compatibility with formats like -1 for unencoded glyphs or -1 followed by an index for non-standard positions. An example is ENCODING 65 for the ASCII codepoint of 'A'. Scalable metrics are provided by the SWIDTH keyword, which defines the glyph's width in x-direction (and optionally y, though y is usually 0) as a fraction of the em unit, expressed in 1/1000ths of the font's point size. For instance, SWIDTH 600 0 indicates a width of 600/1000 em, allowing proportional scaling across different sizes without bitmap distortion. Device-specific positioning is handled by the DWIDTH keyword, stating the advance width in pixels for horizontal rendering (x) and vertical (y, typically 0), which directly influences and at a fixed . An example is DWIDTH 6 0, meaning the glyph advances 6 pixels horizontally after rendering. The BBX keyword describes the bounding box of the glyph's bitmap, including its width and height in pixels, along with horizontal (x) and vertical (y) offsets from the device to position the bitmap accurately relative to the advance width. The format is BBX <width> <height> <x_offset> <y_offset>, such as BBX 5 7 0 0 for a 5-pixel-wide, 7-pixel-high box aligned at the . Offsets ensure proper alignment, with positive x shifting right and positive y upward from the baseline. Following metrics, the BITMAP keyword introduces the actual pixel data as a series of hexadecimal bytes, one per row, matching the height from BBX and padded to multiples of 8 bits per row for byte alignment. Each hex pair represents 8 pixels, with 0 for off (background) and 1 for on (foreground); for example, BITMAP might be followed by 00 for an empty row or 1F (binary 00011111) for a partially filled row of 5 pixels. The bitmap is rendered left-to-right and top-to-bottom within the bounding box. Optionally, the ATTRIBUTES keyword can include four characters for application-specific , though its remains in the and is rarely used in BDF implementations. It allows extensions for custom properties without altering the base format. Each concludes with the ENDCHAR keyword, marking of the entry and signaling the parser to proceed to the next or font properties. This structure ensures modular, extensible handling in BDF files.

Versions and Extensions

Version 2.1 Standard

The (BDF) Version 2.1 was adopted in as an X for the interchange of fonts within the . This specification formalized a text-based, human-readable designed for portability across X11 servers, the of fixed-pitch and proportional glyphs primarily for on raster devices. At its core, Version 2.1 supports fixed bitmap sizes defined by BBX (bitmap box) fields specifying width and height in pixels, along with horizontal metrics such as SWIDTH for scalable widths and DWIDTH for device-specific widths in x and y directions. It is typically used with character sets such as ISO 8859-1 for Latin-based scripts, with glyph codepoints specified via the ENCODING field and bitmap data provided in hexadecimal format under the BITMAP section. Font-level properties are limited to basic fields like FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR, which establish the overall font metrics without support for advanced kerning or ligature data, emphasizing simplicity and cross-system compatibility. The format inherently assumes a left-to-right, top-to-bottom for rendering, lacking provisions for vertical or handling, which restricts its applicability to languages. This design prioritized in and rendering for early X11 environments, where served as the primary source for fonts before into the more compact Packed Character Format (PCF) for runtime use. Later introduced enhancements for broader , but Version 2.1 remains the foundational specification for horizontal, left-to-right applications.

Version 2.2 Enhancements

Version 2.2 of the Glyph Bitmap Distribution Format (BDF), released on March 22, 1993, by Adobe Systems Incorporated, introduced extensions primarily to support non-Latin scripts and multiple writing directions, such as those used in Chinese, Japanese, and Korean (CJK) languages. These enhancements addressed limitations in earlier versions for handling vertical and bidirectional text layouts, enabling more efficient distribution of fonts for global scripts. Although influential in broadening BDF's applicability beyond Western alphabets, the version 2.2 features were not fully adopted by the X Window System, which standardized on version 2.1. Key additions include the METRICSSET field, an optional integer (0 for horizontal-only, 1 for vertical-only, or 2 for both) that specifies the supported writing directions at the font level, defaulting to 0 for backward compatibility. To accommodate vertical metrics, new per-glyph fields SWIDTH1 and DWIDTH1 were defined, providing scalable and device widths, respectively, for writing mode 1 (vertical); these are mandatory when METRICSSET is 1 or 2. Additionally, the VVECTOR field specifies a vector (e.g., VVECTOR 0 600) from the horizontal origin (mode 0) to the vertical origin (mode 1), facilitating accurate positioning in top-to-bottom scripts. The CONTENTVERSION field, an optional integer (e.g., CONTENTVERSION 1), allows font installers to track revisions and updates to the bitmap data without altering the core format. These features collectively enable BDF files to represent bidirectional and vertical writing systems, such as CJK ideographs, by grouping metrics efficiently and supporting alternate origins, thus promoting non-Western font interchange. For , version 2.2 files can often be parsed by version 2.1 readers if the new fields are ignored, though full is not guaranteed due to potential incompatibilities like extended line lengths.

Usage in X Window System

Property Encoding

In the Glyph Bitmap Distribution Format (BDF), font properties are defined within the STARTPROPERTIES section of the file, where each property consists of a name followed by either an integer value or a quoted ASCII string using printable US-ASCII characters (octal 040-176). These properties are encoded as human-readable ASCII text in ISO 8859-1 encoding to ensure compatibility with the X Window System, allowing for straightforward parsing and storage as runtime font properties in the X server. The section begins with "STARTPROPERTIES" followed by the count of properties, lists the properties on individual lines, and ends with "ENDPROPERTIES", facilitating direct mapping to X font structures like XFontStruct without requiring binary conversion during initial loading. Common properties include FONT_ASCENT and FONT_DESCENT, which specify the typographic ascent above and descent below the baseline as integers, directly influencing line spacing calculations in X applications; for example, FONT_ASCENT might be set to 21 pixels for a given font size. Additional typographic metrics such as CAP_HEIGHT (nominal capital letter height) and X_HEIGHT (nominal lowercase height) are also encoded as integers, providing essential data for layout engines, with defaults approximated from glyph metrics if undefined. Properties like (e.g., a string such as "Copyright (c) 1987 Adobe Systems, Inc."), FACE_NAME (e.g., "Helvetica"), and RESOLUTION_Y (vertical resolution in dots per inch, such as 75) are stored as atom strings in the X server, enabling metadata queries via XGetFontProperty and ensuring device-independent identification. These atom-based properties cannot be defaulted and must be explicitly defined in conforming BDF files. The encoding translates the STARTPROPERTIES directly to core X properties or Xft equivalents, where integer values become CARD32 or INT32 and strings become ATOM types, prefixed in the X Logical Font Description (XLFD) name with a hyphen (e.g., "-adobe-helvetica-medium-r-normal---120------*") to denote standard X Consortium fonts. This supports runtime use in X11, such as querying ascent for text rendering, while adhering to XLFD conventions for fallback rules when properties are absent. For instance, CHARSET_REGISTRY and CHARSET_ENCODING properties in BDF (e.g., "ISO8859" and "1") define the encoding scheme within the XLFD, confirming ISO 8859-1 usage. Limitations of this encoding include strict 8-bit cleanliness with no support for , restricting properties to ISO 8859-1 characters. Properties such as RAW_ASCENT provide unscaled ascent values in 1000-unit metrics for transformed or scalable variants, accompanying size-specific properties to maintain accuracy in non-bitmap contexts. Overall, this scheme prioritizes and in X environments, though it excludes advanced features like variable metrics found in formats.

Integration with Font Servers

In the X Window System, Glyph Bitmap Distribution Format (BDF) files serve as the primary source for bitmap fonts, which are compiled into binary formats like Portable Compiled Format (PCF) or Server Natural Format (SNF) to enable efficient serving by the X Font Server (xfs) or direct access via the X FreeType backend. The bdftopcf utility converts BDF files to PCF, compressing the ASCII-based BDF data into a more compact binary structure suitable for rapid loading and rendering, while preserving glyph metrics and properties essential for X11 protocol compliance. The loading process begins with mkfontdir, which scans directories containing BDF or PCF files to generate an index file (fonts.dir) that catalogs available fonts by their X Logical Font Description (XLFD) names, facilitating quick lookups by the X server or xfs. Once indexed, these fonts are incorporated into the system's font path—a configuration directive that specifies directories or network endpoints for xfs—allowing clients to request glyphs over the network or locally without repeated parsing of source BDF files. In core X11 font handling, BDF-derived PCF fonts provide the foundational bitmap rendering, with font properties such as ascent, descent, and resolution queried programmatically using XGetFontProperty from the Xlib library, which retrieves atom-based values from the loaded XFontStruct. Historically, files were to Unix distributions, with precompiled PCF versions of standard fixed-width fonts like "fixed" installed in paths such as /usr/lib/X11/fonts/misc, ensuring consistent terminal and application rendering across systems from X11R1 onward. This setup supported the X server's font caching, where loaded fonts remain available across all screens and clients to optimize performance. In modern Xorg implementations, BDF integration persists as a legacy mechanism for fallback support in environments lacking scalable fonts, though its use has diminished in favor of vector-based alternatives like TrueType; the libXfont library continues to handle PCF/BDF access via Font Path Elements (FPEs), enabling seamless interoperability with xfs for disk-based or remote font serving.

Examples and Implementation

Sample BDF File

A representative example of a minimal file is one containing a single glyph for the ASCII capital letter "A" (Unicode U+0041) from the GNU Unifont in its 16x16 pixel variant. This demonstrates the format's structure for a basic Latin glyph, with the bitmap data derived from Unifont's hexadecimal encoding (0041:0000000018242442427E424242420000) converted to BDF via the standard utility hex2bdf.
STARTFONT 2.1
FONT -gnu-unifont-unifont-fixed-medium-r-normal--16-160-75-75-c-160-iso10646-1
SIZE 16 75 75
FONTBOUNDINGBOX 16 16 0 0
CHARS 1
STARTCHAR U+0041
ENCODING 65
SWIDTH 1000 0
DWIDTH 16 0
BBX 8 16 4 0
ATTRIBUTES *gnunum=65
BITMAP
00
00
00
18
24
42
42
7E
42
42
42
42
00
00
00
00
ENDCHAR
ENDFONT
This BDF file begins with STARTFONT 2.1, declaring the file as a version 2.1 BDF font. The FONT line specifies the font name, including metrics like fixed width, medium weight, roman style, 16-pixel height, 160/75 DPI resolution, character cell width of 160 (for 16-pixel fixed width), and ISO 10646-1 encoding for Unicode. The SIZE line indicates the nominal point size (16 pixels), x-resolution (75 DPI), and y-resolution (75 DPI). FONTBOUNDINGBOX defines the overall font metrics: 16 pixels wide, 16 pixels high, with 0 horizontal and vertical offsets from the baseline. CHARS 1 states there is one glyph in this minimal file. The glyph section starts with STARTCHAR U+0041, naming the glyph for U+0041 (Latin capital A). ENCODING 65 assigns the decimal Unicode code point. SWIDTH 1000 0 sets the scalable width to 1000 units (full em square for monospaced design), with no vertical component. DWIDTH 16 0 specifies the device width as 16 pixels horizontally and 0 vertically. BBX 8 16 4 0 defines the glyph's bounding box: 8 pixels wide, 16 pixels high, shifted 4 pixels right (for centering in the 16-pixel cell) and 0 pixels vertically from the character cell origin. The optional ATTRIBUTES line stores additional metadata, here the numeric code point as used in Unifont. The BITMAP section contains 16 hexadecimal lines, each representing one row of 8 pixels (1 byte = 2 hex digits), forming the glyph's pixel data with empty padding rows above and below: three empty top rows, slanted sides, crossbar, and tapered legs for the "A" shape, followed by four empty bottom rows. ENDCHAR closes the glyph, and ENDFONT ends the file. To visualize the bitmap, the hex rows decode to the following 8x16 pixel grid (1 = pixel on, 0 = off), rendering a simple block-style "A" centered horizontally (shifted 4 pixels right) within the 16x16 cell, with padding for baseline alignment:
RowHexBinary (MSB left)Visual (ASCII art approximation)
10000000000‭ ‭ ‭ ‭ ‭ ‭ ‭ ‭
20000000000‭ ‭ ‭ ‭ ‭ ‭ ‭ ‭
30000000000‭ ‭ ‭ ‭ ‭ ‭ ‭ ‭
41800011000‭ ‭██ ‭ ‭ ‭ ‭ ‭
52400100100‭██ ‭ ‭██ ‭ ‭ ‭
64201000010██ ‭ ‭ ‭ ‭ ‭██
74201000010██ ‭ ‭ ‭ ‭ ‭██
87E01111110██ ██ ██ ██ ██ ██
94201000010██ ‭ ‭ ‭ ‭ ‭██
104201000010██ ‭ ‭ ‭ ‭ ‭██
114201000010██ ‭ ‭ ‭ ‭ ‭██
124201000010██ ‭ ‭ ‭ ‭ ‭██
130000000000‭ ‭ ‭ ‭ ‭ ‭ ‭ ‭
140000000000‭ ‭ ‭ ‭ ‭ ‭ ‭ ‭
150000000000‭ ‭ ‭ ‭ ‭ ‭ ‭ ‭
160000000000‭ ‭ ‭ ‭ ‭ ‭ ‭ ‭
This bounding box and offsets position the glyph within the 16x16 cell, with left padding of 4 pixels for centering and full height including empty rows for consistent baseline alignment in the font.

Parsing and Rendering Tools

The Glyph Bitmap Distribution Format (BDF) is supported by a range of tools for parsing, conversion, editing, scaling, and rendering, spanning legacy X Window System utilities to modern open-source libraries. These tools facilitate the creation, manipulation, and display of bitmap fonts, often converting BDF to more efficient formats like Portable Compiled Format (PCF) for runtime use. Early tools emerged in the 1990s alongside the X11 ecosystem, while contemporary options address parsing and scaling needs in scripting environments. The bdftopcf utility, developed by Keith Packard at the MIT X Consortium, serves as the original converter for BDF files to PCF, enabling efficient loading by X servers and font servers. Released in the early 1990s as part of X11, it produces architecture-independent binaries optimized for fast rendering, supporting options for byte padding, bit order, and terminal-specific metrics. This tool remains essential for preparing BDF fonts for display in X11 environments. For editing and import/export, FontForge provides robust open-source support for BDF since its inception in the early 2000s. Users can import single or multiple BDF files into the Font View, merging bitmap strikes into the font database or loading them as backgrounds for outline tracing. The software also enables export to BDF, allowing creation and modification of bitmap-only or hybrid fonts with a built-in bitmap editor. Modern parsing is exemplified by the bdfparser library, available on since the 2020s. It offers , , and classes with over chainable methods for extracting , rendering text in various directions, applying effects, and manipulating bitmaps, integrating seamlessly with and . Unifont leverages for distributing bitmap glyphs, adhering to version 2.1 as standardized for X11, with ongoing releases since its origins in 1998; the latest version, 17.0.03, was released on , 2025, aligning with 17.0. Maintained under , it covers all 65,536 points in the Multilingual via files, alongside conversions to PCF and other formats, supporting contributions for expanded coverage like Japanese kanji. Scaling BDF fonts is handled by tools like bdfresize, which magnifies or reduces glyphs while metrics such as bounding boxes, widths, and properties. Originally authored by Hiroto Kagotani in the and mirrored on , it processes input from stdin or files, adding comments for and halting on errors. Rendering BDF fonts typically involves to PCF for Xlib-based display in the , where the loads bitmaps directly for pixel-precise output. , a widely used rasterizer, provides native BDF and PCF support through functions like FT_Get_BDF_Property for accessing charset and integer properties, enabling integration in applications. Xft, built on and FontConfig, extends this to client-side rendering of bitmap fonts alongside anti-aliased outlines. For bitmap extraction and programmatic rendering, Pillow (PIL fork) loads BDF via to its internal format using pilfont.py, allowing text drawing and glyph access.

References

  1. [1]
    [PDF] Bitmap Distribution Format Version 2.1 - X.Org
    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 ...
  2. [2]
    [PDF] Glyph Bitmap Distribution Format (BDF) Specification - GitHub Pages
    Mar 22, 1993 · Each tape is 1600 BPI, nine track, un-labeled, and contains two or more files. Each file is followed by an end-of-file (EOF) mark.
  3. [3]
    BDF - Just Solve the File Format Problem
    Dec 28, 2023 · BDF (Glyph Bitmap Distribution Format) is a text-based bitmap font format developed by Adobe. Version 2.1 of it is used extensively in the X ...<|control11|><|separator|>
  4. [4]
    X11R3 - X.Org
    Dec 7, 2014 · The Bitmap Distribution Format (BDF) as specified in the document Bitmap Distribution Format Format 2.1 has been adopted as a non-exclusive ...
  5. [5]
    Technical Report on HBF - Ibiblio
    In the Unix/X Window community, there is an industrial open standard format, called BDF (Bitmap Distribution Format) [6], for bitmap font distribution. BDF has ...
  6. [6]
    Font ttf to bdf - High-Logic Forum
    Sep 27, 2010 · In 1988, the X Consortium adopted BDF 2.1 as a standard for X Window screen fonts, but X Windows has largely moved to ot...
  7. [7]
    [PDF] Technical Standard Window Management (X11R5): File Formats ...
    Bitmap Distribution Format (BDF). The Bitmap Distribution Format (BDF), Version 2.1, is an X Consortium standard for font interchange, intended to be easily ...
  8. [8]
    X Window System Programmer's Guide Chapter 5 - LessTif
    The bitmap font distribution and interchange format adopted by the X Consortium (BDF V2.1) provides a general mechanism for identifying the font name of an X ...
  9. [9]
    X Logical Font Description Conventions - X.Org
    The XLFD specifies an extensive set of standard X font properties, their interpretation, and fallback rules when the property is not defined for a given font.
  10. [10]
    The X Font Library
    Jul 27, 1991 · “Bitmap Distribution Format” which covers the contents of the bitmap font files which this library reads; although the library is capable of ...
  11. [11]
    [PDF] The X Font Library - X.Org
    Jul 27, 1991 · “Font Server Implementation Overview” which discusses the design of the font server. • “Bitmap Distribution Format” which covers the contents of ...
  12. [12]
    Xlib - C Language X Interface
    Summary of each segment:
  13. [13]
    Fonts in X11R7.5 - X.Org
    The scalable font backends (Type 1 and TrueType) can automatically re-encode fonts to the encoding specified in the XLFD in `fonts.dir'. For example, a `fonts ...Missing: decline | Show results with:decline
  14. [14]
    GNU Unifont Glyphs - Unifoundry
    This page contains the latest release of GNU Unifont, with glyphs for every printable code point in the Unicode Basic Multilingual Plane (BMP).
  15. [15]
    Unifont - Summary - GNU Savannah
    Oct 27, 2013 · Unifont is a Unicode font with a glyph for every visible Unicode Basic Multilingual Plane code point and more, with supporting utilities to ...Unifont 17.0. 03 Released · Unifont 16.0. 01 Released · Unifont In FontforgeMissing: 16x16 | Show results with:16x16
  16. [16]
    BDFTOPCF - X.Org
    Bdftopcf is a font compiler for the X server and font server. Fonts in Portable Compiled Format can be read by any architecture, although the file is structured ...Missing: adoption | Show results with:adoption<|separator|>
  17. [17]
    The File Menu — FontForge 20230101 documentation
    In the Font View this allows you to import one or several bitmap fonts (from a .bdf file or a ttf/otf/ttc file, TeX pk (gf) file, an X11 .pcf file or a mac ...
  18. [18]
    11. Working with Bitmap Fonts — FontForge 20230101 documentation
    FontForge is primarily an outline font editor, but it does have some facility for editing bitmap (and greymap, or anti-aliased) fonts.
  19. [19]
    tomchen/bdfparser: BDF (Glyph Bitmap Distribution) format ... - GitHub
    It has Font , Glyph and Bitmap classes providing more than 30 chainable API methods of parsing BDF fonts, getting their meta information, rendering text in any ...
  20. [20]
    Mirror of bdfresize font utility - GitHub
    bdfresize - a tool for resizing BDF format font Bdfresize is a command to magnify or reduce fonts which are described with the standard BDF format.Missing: scaling | Show results with:scaling
  21. [21]
    BDF and PCF Files - FreeType-2.14.1 API Reference
    ### Freetype's Support for BDF Fonts
  22. [22]
    The Xft Font Library: Architecture and Users Guide - keithp.com
    Nov 8, 2001 · The X Render Extension provides a new glyph rendering architecture based on client-side glyph and font management. While this resolves many ...Missing: BDF | Show results with:BDF
  23. [23]
    ImageFont module
    ### Summary: Support for BDF Fonts in Pillow