- GNU Unifont
The GNU Unifont by Roman Czyborra is a free bitmap font that covers the
Unicode Basic Multilingual Plane (BMP), using an intermediate bitmapped font format.It is present in most freeoperating system s and windowing systems such asLinux ,XFree86 or theX.Org Server . The font is released under theGNU General Public License .History
In 1998, Roman Czyborra observed that no font existed that covered the entire Unicode Basic Multilingual Plane (BMP). The BMP covers the first 65,536 code points of Unicode and includes most modern scripts. He began an effort to provide a free bitmapped font, to which others could contribute, to produce a complete BMP font. His goal was to have a display device be able to show some meaningful representation of each glyph in the BMP.
To this end, he developed a simple intermediate hexadecimal bitmap format with tools to convert to and from an ASCII representation of the bitmap. He also developed a utility to convert files in this hexadecimal format to Adobe
Glyph Bitmap Distribution Format (BDF) files for use withX Window onUnix systems.tatus
The
Unicode Basic Multilingual Plane covers 216 = 65,536 code points. Of this number, 4096 are reserved for special use as surrogate pairs and 6,400 are reserved for private use. This leaves approximately 55,000 code points to which glyphs can be assigned. Some of these code points are special values that do not have an assigned glyph, but most do have assigned glyphs.As of June 2008, the GNU Unifont has complete coverage of the
Basic Multilingual Plane as defined in Unicode 5.1.The following table shows font coverage as a percentage of each script that is complete as of June 2008. Scripts that are less than 100% complete can be augmented by any contributor.
unifont.hex Font Format
The GNU Unifont .hex format defines its glyphs as either 8 or 16 pixels in width by 16 pixels in height. Most Western script glyphs can be defined as 8 pixels wide, while other glyphs (notably the Chinese-Japanese-Korean, or CJK set) are typically defined as 16 pixels wide.
The unifont.hex file contains one line for each glyph. Each line consists of a four digit Unicode hexadecimal code point, a colon, and the bitmap string. The bit string is 32 hexadecimal digits for an 8 pixel wide glyph or 64 hexadecimal digits for a 16 pixel wide glyph.
A '1' bit in the bit string corresponds to an 'on' pixel. Pixels bits are stored top to bottom, left to right.
The font is then converted into a BDF file for use on
X Window .Example
This is an example font containing one glyph, for ASCII capital 'A'.
The first number is the hexadecimal Unicode code point, with range 0000 through FFFF. Hexadecimal 0041 is decimal 65, the code point for the letter 'A'. The colon separates the code point from the bitmap. In this example, the glyph is 8 pixels wide, so the bit string is 32 hexadecimal digits long.0041:0000000018242442427E424242420000 The bit string begins with 8 zeroes, so the top 4 rows will be empty (2 hexadecimal digits per 8 bit byte, with 8 bits per row for an 8 pixel-wide glyph). The bit string also ends with 4 zeroes, so the bottom 2 rows will be empty. It is implicit from this that the default font descender is 2 rows below the baseline, and the capital height is 10 rows above the baseline. This is the case in the GNU Unifont with Latin glyphs.
The hexdraw Perl script produces the following output from the one line glyph definition above:
This can be edited in a text editor, then converted back into a hex string with the same utility. The goal was to create an intermediate format that would facilitate adding new glyphs.0041: -------- -------- -------- -------- ---##--- --#--#-- --#--#-- -#----#- -#----#- -######- -#----#- -#----#- -#----#- -#----#- -------- -------- References
* The Unicode Consortium: "The Unicode 5.0 Standard". 5th, Addison Wesley 2007; ISBN 0-321-48091-0.
External links
* [http://web.archive.org/web/20070615072054/czyborra.com/unifont/ Archived version of Roman Czyborra's GNU Unifont page]
* [http://unifoundry.com/unifont.html Unifoundry.com GNU Unifont page]
Wikimedia Foundation. 2010.