UNIFONT(5) File Formats Manual UNIFONT(5)

# [NAME](#NAME)

Unifont - a bitmapped font with full Unicode Plane 0 (BMP) coverage

# [SYNOPSIS](#SYNOPSIS)

**unifont.hex**

# [DESCRIPTION](#DESCRIPTION)

**Unifont** is a bitmapped font with glyphs described in a plain text file, generically referred to as **unifont.hex** herein. This man page describes the format of three related files: **unifont.hex, masks.hex,** and **combining.txt.** All three of these files start with a Unicode code point as a hexadecimal string, with code points appearing in ascending order.

A **unifont.hex** file consists of single-line entries for each Unicode code point. Each line contains the code point, a colon (':') field separator, and the glyph bitmap. **The glyphs in a unifont.hex format file must appear in ascending** **Unicode code point order.**

This file can be converted into a BDF font using the [**hex2bdf**(1)](/man/enterprise-packages/font-unifont/hex2bdf.1) program, and into a TrueType font using [**fontforge**(1)](/man/enterprise-packages/font-unifont/fontforge.1) (which is not part of this package). The BDF font can also be converted into a PCF font using [**bdftopcf**(1)](/man/enterprise-packages/font-unifont/bdftopcf.1) (which is also not part of this package).

**The first field**

The first field is the Unicode code point in hexadecimal, ranging from "0000" through "10FFFF", inclusive. This corresponds to the Unicode code points U+0000 through U+10FFFF, respectively.

**The second field**

The second field is the glyph's bitmap string. This is a series of hexadecimal digits. Currently Unifont encodes two glyph sizes: 8 pixels wide by 16 pixels tall (single-width), and 16 pixels wide by 16 pixels tall (double-width). A third format of 32 pixels wide (drawn as 31 pixels plus a pixel on the right that is always blank) by 16 pixels tall (quadruple-width) is also available, but only for experimental use.

As each hexadecimal digit can encode four bits, one pixel row of a glyph is either two hexadecimal digits long (single-width) or four hexadecimal digits long (double-width). The glyphs are 16 pixels tall, so a single-width glyph [is (2)](/man/enterprise-packages/font-unifont/is.2)(16) = 32 hexadecimal digits long and a double-width glyph [is (4)](/man/enterprise-packages/font-unifont/is.4)(16) = 64 hexadecimal digits long.

Previous versions of this package supplied a file named **masks.hex.** This file followed the same format as **unifont.hex** with a first field that was a Unicode code point in hexadecimal, followed by a colon (':') field separator, followed by a second field that was a hexadecimal string representing a glyph bitmap. Code points were in ascending order. The glyph bitmaps were bitmaps that would be exclusive-ored with the glyph in **unifont.hex** that had the same code point. The original **unifont.hex** contained combining circles as depicted in *The Unicode Standard.* When Paul Hardy got combining characters to display properly in the TrueType version, it became desirable to remove these combining circles for proper display with **unifont.ttf.** The program [**uniunmask**(1)](/man/enterprise-packages/font-unifont/uniunmask.1) will read such a **masks.hex** file, read a **unifont.hex** format file, and apply the exclusive-or masks in **masks.hex** to **unifont.hex.** The output is another file in **unifont.hex** format with the masked-off bits (*i.e.,* combining circles) removed.

Because the operation is an exclusive-or, **masks.hex** could also be used to turn on pixels in selective glyphs, for example to add combining circles to selective glyphs that do not show them. However, the program [**unigencircles**(1)](/man/enterprise-packages/font-unifont/unigencircles.1) can do this without a separate **masks.hex** file. Thus **masks.hex** is no longer supplied with this package. [**uniunmask**(1)](/man/enterprise-packages/font-unifont/uniunmask.1) remains part of this distribution in case someone might find creating a custom **masks.hex** file useful for another purpose.

The TrueType version of the font, **unifont.ttf,** and the [**unigencircles**(1)](/man/enterprise-packages/font-unifont/unigencircles.1) utility both read a file **combining.txt.** This file appears in the directory **font/ttfsrc.** The **combining.txt** file is a list of code points as hexadecimal strings, one per line in ascending order, of Unicode code points that show combining circles in *The Unicode Standard.* Any glyph with its code point listed in **combining.txt** will have zero width in **unifont.ttf.**

# [UTILITIES](#UTILITIES)

Roman Czyborra, the font's creator, originally wrote two Perl scripts as utilities: [**bdfimplode**(1)](/man/enterprise-packages/font-unifont/bdfimplode.1) and [**hexdraw**(1)](/man/enterprise-packages/font-unifont/hexdraw.1).

The [**bdfimplode**(1)](/man/enterprise-packages/font-unifont/bdfimplode.1) Perl script reads in a font in BDF format and generates a font output in **unifont.hex** format.

The [**hexdraw**(1)](/man/enterprise-packages/font-unifont/hexdraw.1) Perl script might appear somewhat magical. It can read a file in **unifont.hex** format and generate a text file with each glyph appearing as a grid of characters in an 8 by 16 or 16 by 16 grid: a '-' character indicates a corresponding white pixel, and a '#' character indicates a corresponding black pixel. These pixel grids are indented with a single tab character. The first line of each glyph first shows the code point for the glyph, followed by a colon (':'). The 16 lines that graphically represent each glyph are followed by one blank line. This text file can then be modified with any text editor. The magical part about [**hexdraw**(1)](/man/enterprise-packages/font-unifont/hexdraw.1) is that it will read in this text file, detect that it is in this converted format, and produce as output a second file in Unifont's .hex format. Thus [**hexdraw**(1)](/man/enterprise-packages/font-unifont/hexdraw.1) automagically provides round-trip coverage between an original font file in **unifont.hex** format and an intermediate text graphics format for editing.

Utilities introduced after those first two convert a file in **unifont.hex** format to and from bitmapped graphics (".bmp") files. The [**unihex2bmp**(1)](/man/enterprise-packages/font-unifont/unihex2bmp.1) program converts a file in **unifont.hex** format into a .bmp format file, for editing with a graphics editor. The [**unibmp2hex**(1)](/man/enterprise-packages/font-unifont/unibmp2hex.1) program performs the reverse conversion, from a bitmapped graphics format back to a file in **unifont.hex** format.

[**hexdraw**(1)](/man/enterprise-packages/font-unifont/hexdraw.1), [**unihex2bmp**(1)](/man/enterprise-packages/font-unifont/unihex2bmp.1), and [**unibmp2hex**(1)](/man/enterprise-packages/font-unifont/unibmp2hex.1) are the central programs that handle conversion of a **unifont.hex** file to and from two-dimensional glyph representations for visual editing. See the **doc/unifont.info** texinfo file included in the source package for more information on these and other utilities to customize **unifont.hex** format files. Also consult the man pages for the utilities listed below.

# [FILES](#FILES)

The following files are part of the Unifont source distribution:

[**font/plane\*/\*.hex**](#font/plane*/*.hex)

GNU Unifont font files

[**LICENSE**](#LICENSE)

The Unifont license

[**README**](#README)

Instructions on building Unifont

[**doc/unifont.info**](#doc/unifont.info)

Tutorial in texinfo format on customizing Unifont

# [SEE ALSO](#SEE_ALSO)

[**bdfimplode**(1)](/man/enterprise-packages/font-unifont/bdfimplode.1), [**hex2bdf**(1)](/man/enterprise-packages/font-unifont/hex2bdf.1), [**hex2otf**(1)](/man/enterprise-packages/font-unifont/hex2otf.1), [**hex2sfd**(1)](/man/enterprise-packages/font-unifont/hex2sfd.1), [**hexbraille**(1)](/man/enterprise-packages/font-unifont/hexbraille.1), [**hexdraw**(1)](/man/enterprise-packages/font-unifont/hexdraw.1), [**hexkinya**(1)](/man/enterprise-packages/font-unifont/hexkinya.1), [**hexmerge**(1)](/man/enterprise-packages/font-unifont/hexmerge.1), [**johab2syllables**(1)](/man/enterprise-packages/font-unifont/johab2syllables.1), [**johab2ucs2**(1)](/man/enterprise-packages/font-unifont/johab2ucs2.1), [**unibdf2hex**(1)](/man/enterprise-packages/font-unifont/unibdf2hex.1), [**unibmp2hex**(1)](/man/enterprise-packages/font-unifont/unibmp2hex.1), [**unibmpbump**(1)](/man/enterprise-packages/font-unifont/unibmpbump.1), [**unicoverage**(1)](/man/enterprise-packages/font-unifont/unicoverage.1), [**unidup**(1)](/man/enterprise-packages/font-unifont/unidup.1), [**unifont-johab631**(5)](/man/enterprise-packages/font-unifont/unifont-johab631.5), [**unifont-viewer**(1)](/man/enterprise-packages/font-unifont/unifont-viewer.1), [**unifont1per**(1)](/man/enterprise-packages/font-unifont/unifont1per.1), [**unifontchojung**(1)](/man/enterprise-packages/font-unifont/unifontchojung.1), [**unifontksx**(1)](/man/enterprise-packages/font-unifont/unifontksx.1), [**unifontpic**(1)](/man/enterprise-packages/font-unifont/unifontpic.1), [**unigen-hangul**(1)](/man/enterprise-packages/font-unifont/unigen-hangul.1), [**unigencircles**(1)](/man/enterprise-packages/font-unifont/unigencircles.1), [**unigenwidth**(1)](/man/enterprise-packages/font-unifont/unigenwidth.1), [**unihex2bmp**(1)](/man/enterprise-packages/font-unifont/unihex2bmp.1), [**unihex2png**(1)](/man/enterprise-packages/font-unifont/unihex2png.1), [**unihexfill**(1)](/man/enterprise-packages/font-unifont/unihexfill.1), [**unihexgen**(1)](/man/enterprise-packages/font-unifont/unihexgen.1), [**unihexpose**(1)](/man/enterprise-packages/font-unifont/unihexpose.1), [**unihexrotate**(1)](/man/enterprise-packages/font-unifont/unihexrotate.1), [**unijohab2html**(1)](/man/enterprise-packages/font-unifont/unijohab2html.1), [**unipagecount**(1)](/man/enterprise-packages/font-unifont/unipagecount.1), [**unipng2hex**(1)](/man/enterprise-packages/font-unifont/unipng2hex.1)

# [AUTHOR](#AUTHOR)

The **unifont.hex** format was created by Roman Czyborra, who drew the original set of glyphs.

# [LICENSE](#LICENSE~2)

**unifont** is Copyright © 1998 Roman Czyborra, with portions Copyright © 2007–2013 Paul Hardy, Copyright © 2004–2013 Qianqian Fang, and others.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

# [BUGS](#BUGS)

The format is very straightforward and no real bugs exist. However, Unifont's original BDF font format does not support Unicode's combining characters (accents, etc.); only the TrueType version of Unifont does.

2020 Jul 03

---

Document: unifont(5) from font-unifont 17.0.04-r3 (Chainguard OS)
Source: https://unifoundry.com/pub/unifont/unifont-17.0.04/unifont-17.0.04.tar.gz
