Unifoundry.com

GNU Unifont Glyphs


Home
Unicode Tutorial
Unicode Utilities Unifont Glyphs Hangul Fonts

This page contains the GNU Unifont in its latest state. The font has been updated with many Unicode 5.1 additions.

Initially I just posted my additions to Roman Czyborra's original unifont.hex file. Then in mid-January, his website went down. So here's the whole font, as of 10 May 2008. Roman Czyborra has encouraged me to continue with my additions.

Luis Gonzales Miranda wrote a cool combination of scripts to convert the GNU Unifont from .hex format into FontForge .sfd format, then to have FontForge convert this to a TrueType outline font (see the Unicode Utilities web page on this site for more information). Pixels are drawn as outlined squares, so they scale to all point sizes. This works well with GNOME; I haven't tried it with any other Unix windowing environment. I've removed the OpenType SBIT font link from this page because the outline font is much more flexible.

Luis has given me permission to modify his scripts to convert the latest GNU Unifont versions to TrueType. Therefore without further ado, here's a gzipped tarball for Unix/Linux/*nix:

http://unifoundry.com/gnu-unifont-2008-05-10.ttf.gz (3 Mbytes)

Here's a Winzip archive for Mac and Windows (unzip the file and copy to your Fonts folder):

http://unifoundry.com/GNU Unifont 2008-05-10.zip (3 Mbytes)

Finally, here is a BDF version of the font for Unices:

http://unifoundry.com/gnu-unifont-2008-05-10.bdf.gz (1 Mbyte)

There are four versions of the font. The first is the one you'll most likely want for a bitmap display as it has combining circle marks removed. The TrueType and BDF font files were created from this first version. The versions with "circles" in the name contain combining circle marks. The versions with "-jp" in the name preserve Roman Czyborra's original CJK glyphs, which he obtained from a public domain Japanese font. The .hex files are about 3 Mbytes each.

Roman released his font and software as freeware: "All of my works you find here are freeware. You may freely copy, use, quote, modify or redistribute them as long as you properly attribute my contribution and have given a quick thought about whether Roman might perhaps be interested to read what you did with his stuff. Horizontal rules don't apply."

If you'd like to contribute any glyphs, please send them to unifoundry at this domain name (not spelled out because of spammers) since Roman's website is currently offline. You can download bitmaps for the ranges you'd like to edit (see the hyperlinks in the HTML table below). Then send me your modified .bmp file, or convert the .bmp file to a .hex file with my unibmp2hex conversion utility.

To see how a glyph should appear, consult the Unicode code pages at http://www.unicode.org/charts/.

Wen Quan Yi: Spring of Letters (文泉驛 / 文泉驿)

The biggest improvement to the GNU Unifont was the addition of over 20,000 new CJK glyphs from version 1.1 of Qianqian Fang's Unibit font. The Unibit font began as a combination of the original GNU Unifont and a basic CJK bitmap font placed in the public domain by the People's Republic of China. It adopted the GNU Unifont's scheme of 8x16 and 16x16 glyphs. Qianqian Fang and many others then added about 10,000 more glyphs.

Qianqian states in the Unibit distribution: "The entire CJK Unified Ideographics (U4E00-U9FA5) and CJK Unified Ideographics Extension A(U3400-U4DB5) blocks were replaced by high-quality glyphs from China National Standard GB19966-2005 (public domain)." Qianqian also drew the new 22 CJK ideographs in the range U+9FA6..U+9FBB that appear in this version of the Unifont.

The Wen Quan Yi Unibit font is released under version 2.0 of the GNU General Public license, with the exception that embedding the Unibit font in a document does not in itself bind the document to the conditions of the GNU GPL. See his website for more details: http://wqy.sourceforge.net/cgi-bin/enindex.cgi.

Wen Quan Yi (WQY) means "spring of letters," as in a spring of water. This is an interesting choice of words, as the British spelling of "font" is "fount" (but still pronounced "font").

The following code points in the latest unifont.hex file are taken from the WQY Unibit font (with my additions to complete the U+3000..U+33FF range, particularly the missing Hiragana, Katakana, and Kanji):

Qianqian has given his okay to add these CJK glyphs into the GNU Unifont. Likewise, I've told him to incorporate any glyphs he wants from my contributions to the GNU Unifont into his Unibit font.

Additions for 2008-05-10: Unicode 5.1 and more

This release contains many additions and changes:

Additions for 2008-04-06: Yi Syllables and Yi Radicals

A journey of a thousand glyphs begins with the first pixel, to paraphrase Lao Tzu. In this case, I added 1220 new glyphs that comprise the Yi Syllables and Yi Radicals. They are assigned the range U+A000..U+A4CF. I began with the Yi Radicals, then used them to populate the Yi Syllables as a starting point.

Yi was traditionally written vertically from top to bottom or horizontally from right to left, according to the Unicode 5.0 Standard, p. 440. Therefore I made the center line of the glyphs the ninth pixel column, counting from the left rather than the eighth pixel. Today Yi is also written horizontally from left to right.

I attempted to create a set of Yi glyphs that would look good if written either horizontally (in either direction) or vertically. Some horizontal strokes are a little exaggerated as a result, to avoid excessive white space to the left and right of a glyph with horizontal writing. Some circles are also flattened a little for the same reason.

All Yi glyphs are 16 pixels wide. Most Yi glyphs are two pixels above the baseline. Some reach below this as a matter of necessity, to have the entire glyph fit within a 16x16 grid.

If a Yi font were only to be written horizontally, a combination of 12 and 16 pixels wide would probably allow ideal rendering of Yi. Currently the Unifont only supports 8 and 16 pixel glyph widths.

The glyphs are representations of those that appear in The Unicode 5.0 Standard. On p. 438 of the Standard, it states: "The Yi syllabary encoded in Unicode is used to write the Liangshan dialect of the Yi language, a member of the Sino-Tibetan Language Family." Many other dialects of Yi exist, but do not yet have a standard Unicode encoding.

As always, suggestions for the new glyphs are welcome, especially if you are a native speaker of the Liangshan Yi dialect.

Additions for 2008-03-09

I made the following additions/changes for this release:

GNU Unifont Unicode 5.1 Basic Multilingual Plane Coverage

Here's a summary of the percent completion of each range in the Basic Multilingual Plane:

     Covered      Range       Script
     -------      -----       ------
      100.0%  U+0000..U+007F  C0 Controls and Basic Latin
      100.0%  U+0080..U+00FF  C1 Controls and Latin-1 Supplement
      100.0%  U+0100..U+017F  Latin Extended-A
      100.0%  U+0180..U+024F  Latin Extended-B
      100.0%  U+0250..U+02AF  IPA Extensions
      100.0%  U+02B0..U+02FF  Spacing Modifier Letters
      100.0%  U+0300..U+036F  Combining Diacritical Marks
      100.0%  U+0370..U+03FF  Greek and Coptic
      100.0%  U+0400..U+04FF  Cyrillic
      100.0%  U+0500..U+052F  Cyrillic Supplement
      100.0%  U+0530..U+058F  Armenian
      100.0%  U+0590..U+05FF  Hebrew
      100.0%  U+0600..U+06FF  Arabic
      100.0%  U+0700..U+074F  Syriac
      100.0%  U+0750..U+077F  Arabic Supplement
      100.0%  U+0780..U+07BF  Thaana
      100.0%  U+07C0..U+07FF  N'Ko
      100.0%  U+0800..U+08FF  Unassigned
      100.0%  U+0900..U+097F  Devanagari
      100.0%  U+0980..U+09FF  Bengali
       38.3%  U+0A00..U+0A7F  Gurmukhi
       35.2%  U+0A80..U+0AFF  Gujarati
       34.4%  U+0B00..U+0B7F  Oriya
       43.8%  U+0B80..U+0BFF  Tamil
       27.3%  U+0C00..U+0C7F  Telugu
       32.8%  U+0C80..U+0CFF  Kannada
       25.8%  U+0D00..U+0D7F  Malayalam
       37.5%  U+0D80..U+0DFF  Sinhala
      100.0%  U+0E00..U+0E7F  Thai
      100.0%  U+0E80..U+0EFF  Lao
      100.0%  U+0F00..U+0FFF  Tibetan
        2.5%  U+1000..U+109F  Myanmar
      100.0%  U+10A0..U+10FF  Georgian
      100.0%  U+1100..U+11FF  Hangul Jamo
      100.0%  U+1200..U+137F  Ethiopic
      100.0%  U+1380..U+139F  Ethiopic Supplement
      100.0%  U+13A0..U+13FF  Cherokee
      100.0%  U+1400..U+167F  Unified Canadian Aboriginal Syllabics
      100.0%  U+1680..U+169F  Ogham
      100.0%  U+16A0..U+16FF  Runic
       37.5%  U+1700..U+171F  Tagalog
       28.1%  U+1720..U+173F  Hanunoo
       37.5%  U+1740..U+175F  Buhid
       43.8%  U+1760..U+177F  Tagbanwa
       10.9%  U+1780..U+17FF  Khmer
      100.0%  U+1800..U+18AF  Mongolian
      100.0%  U+18B0..U+18FF  Unassigned
       17.5%  U+1900..U+194F  Limbu
       27.1%  U+1950..U+197F  Tai Le
       16.7%  U+1980..U+19DF  New Tai Lue
        0.0%  U+19E0..U+19FF  Khmer Symbols
      100.0%  U+1A00..U+1A1F  Buginese
      100.0%  U+1A20..U+1AFF  Unassigned
        5.5%  U+1B00..U+1B7F  Balinese
       14.1%  U+1B80..U+1BBF  Sundanese
      100.0%  U+1BC0..U+1BFF  Unassigned
        7.5%  U+1C00..U+1C4F  Lepcha
      100.0%  U+1C50..U+1C7F  Ol Chiki
      100.0%  U+1C80..U+1CFF  Unassigned
      100.0%  U+1D00..U+1D7F  Phonetic Extensions
      100.0%  U+1D80..U+1DBF  Phonetic Extensions Supplement
      100.0%  U+1DC0..U+1DFF  Combining Diacritical Marks Supplement
      100.0%  U+1E00..U+1EFF  Latin Extended Additional
      100.0%  U+1F00..U+1FFF  Greek Extended
      100.0%  U+2000..U+206F  General Punctuation
      100.0%  U+2070..U+209F  Superscripts and Subscripts
      100.0%  U+20A0..U+20CF  Currency Symbols
      100.0%  U+20D0..U+20FF  Combining Diacritical Marks for Symbols
      100.0%  U+2100..U+214F  Letterlike Symbols
      100.0%  U+2150..U+218F  Number Forms
      100.0%  U+2190..U+21FF  Arrows
      100.0%  U+2200..U+22FF  Mathematical Operators
      100.0%  U+2300..U+23FF  Miscellaneous Technical
      100.0%  U+2400..U+243F  Control Pictures
      100.0%  U+2440..U+245F  Optical Character Recognition
      100.0%  U+2460..U+24FF  Enclosed Alphanumerics
      100.0%  U+2500..U+257F  Box Drawing
      100.0%  U+2580..U+259F  Block Elements
      100.0%  U+25A0..U+25FF  Geometric Shapes
      100.0%  U+2600..U+26FF  Miscellaneous Symbols
      100.0%  U+2700..U+27BF  Dingbats
      100.0%  U+27C0..U+27EF  Miscellaneous Mathematical Symbols - A
      100.0%  U+27F0..U+27FF  Supplemental Arrows - A
      100.0%  U+2800..U+28FF  Braille Patterns
      100.0%  U+2900..U+297F  Supplemental Arrows - B
      100.0%  U+2980..U+29FF  Miscellaneous Mathematical Symbols - B
      100.0%  U+2A00..U+2AFF  Supplemental Mathematical Operators
      100.0%  U+2B00..U+2BFF  Miscellaneous Symbols and Arrows
      100.0%  U+2C00..U+2C5F  Glagolithic
      100.0%  U+2C60..U+2C7F  Latin Extended C
      100.0%  U+2C80..U+2CFF  Coptic
      100.0%  U+2D00..U+2D2F  Georgian Supplement
      100.0%  U+2D30..U+2D7F  Tifinagh
      100.0%  U+2D80..U+2DDF  Ethiopic Extended
      100.0%  U+2DE0..U+2DFF  Cyrillic Extended - A
      100.0%  U+2E00..U+2E7F  Supplemental Punctuation
      100.0%  U+2E80..U+2EFF  CJK Radicals Supplement
      100.0%  U+2F00..U+2FDF  Kangxi Radicals
      100.0%  U+2FE0..U+2FEF  Unassigned
      100.0%  U+2FF0..U+2FFF  Ideographic Description Characters
      100.0%  U+3000..U+303F  CJK Symbols and Punctuation
      100.0%  U+3040..U+309F  Hiragana
      100.0%  U+30A0..U+30FF  Katakana
      100.0%  U+3100..U+312F  Bopomofo
      100.0%  U+3130..U+318F  Hangul Compatibility Jamo
      100.0%  U+3190..U+319F  Kanbun
      100.0%  U+31A0..U+31BF  Bopomofo Extended
      100.0%  U+31C0..U+31EF  CJK Strokes
      100.0%  U+31F0..U+31FF  Katakana Phonetic Extensions
      100.0%  U+3200..U+32FF  Enclosed CJK Letters and Months
      100.0%  U+3300..U+33FF  CJK Compatibility
      100.0%  U+3400..U+4DBF  CJK Unified Ideographs Extension A
      100.0%  U+4DC0..U+4DFF  Yijing Hexagram Symbols
      100.0%  U+4E00..U+9FCF  CJK Unified Ideographs
      100.0%  U+9FD0..U+9FFF  Unassigned
      100.0%  U+A000..U+A48F  Yi Syllables
      100.0%  U+A490..U+A4CF  Yi Radicals
      100.0%  U+A4D0..U+A4FF  Unassigned
        6.2%  U+A500..U+A63F  Vai
      100.0%  U+A640..U+A69F  Cyrillic Extended - B
      100.0%  U+A6A0..U+A6FF  Unassigned
      100.0%  U+A700..U+A71F  Modifier Tone Letters
      100.0%  U+A720..U+A7FF  Latin Extended - D
        8.3%  U+A800..U+A82F  Syloti Nagri
      100.0%  U+A830..U+A83F  Unassigned
       12.5%  U+A840..U+A87F  Phags-pa
       15.6%  U+A880..U+A8DF  Saurashtra
      100.0%  U+A8E0..U+A8FF  Unassigned
        0.0%  U+A900..U+A92F  Kayah Li
       22.9%  U+A930..U+A95F  Rajang
      100.0%  U+A960..U+A9FF  Unassigned
       13.5%  U+AA00..U+AA5F  Cham
      100.0%  U+AA60..U+ABFF  Unassigned
      100.0%  U+AC00..U+D7AF  Hangul Syllables
      100.0%  U+D7B0..U+D7FF  Unassigned
        0.0%  U+D800..U+DFFF  Surrogate Pairs - Not Used
      100.0%  U+E000..U+F8FF  Private Use Area
      100.0%  U+F900..U+FAFF  CJK Compatibility Ideographs
      100.0%  U+FB00..U+FB4F  Alphabetic Presentation Forms
       41.4%  U+FB50..U+FDFF  Arabic Presentation Forms - A
      100.0%  U+FE00..U+FE0F  Variation Selectors
      100.0%  U+FE10..U+FE1F  Vertical Forms
      100.0%  U+FE20..U+FE2F  Combining Half Marks
      100.0%  U+FE30..U+FE4F  CJK Compatibility Forms
      100.0%  U+FE50..U+FE6F  Small Form Variants
      100.0%  U+FE70..U+FEFF  Arabic Presentation Forms - B
      100.0%  U+FF00..U+FFEF  Halfwidth and Fullwidth Forms
      100.0%  U+FFF0..U+FFFF  Specials

Here's a color-coded table of the entire GNU Unifont coverage. Green indicates complete coverage of the 256 code point range. Red indicates no coverage. Orange indicates a little coverage, and yellow indicates more. The cells contain a link to the corresponding 256 code point "page" (my term as a matter of convenience for discussion, not a Unicode term). The pages show the bitmap rendering of the unifontcircles-2008-05-10.hex file.

GNU Unifont Page Coverage
(Green=100%, Red=0%)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 Surrogate Pairs
Private Use
Private Use F9 FA FB FC FD FE FF

What's Next?

I plan to add Vai. Unicode Version 5.1 introduced Vai, an African script with 300 glyphs. That is the last Unicode 5.1 script in the Basic Multilingual Plane that can be rendered properly with the BDF font format.

I've added an OpenType SBIT conversion for use with GNOME. In the future, I'll make more OpenType versions available in support of GNOME. I'm also going to look at Microsoft Volt's capabilities for use with Brahmic and other non-Western scripts. Graphite is probably the pinnacle of free font technology for the world's scripts, but for now GNOME under X-Windows is more common. Graphite builds on TrueType's ability for fonts to contain embedded programs for rendering.

Brahmi-derived (Indic) Scripts

I stopped working on the remaining Brahmi-derivative scripts (U+0A00..U+0DFF) while waiting for the Unicode 5.1 Standard to be released. I will pick those up after adding Vai.

Available Unicode glyph assignments do not suffice for proper rendering of these syllabic scripts in a BDF font. Nevertheless I'll add these under the premise that a rendering of something is better than nothing. They might be of use as a starting point for someone who wants to experiment with Microsoft's Volt, or with Graphite, or something new.

A big challenge with Indic scripts is that they are abugidas, where a consonant sign is pronounced with an inherent following vowel (usually short "a"). When two consonants are joined, sometimes the first consonant is written in a half-form to denote that the inherent vowel is dropped. Many consonant conjunctions have unique glyphs, yet they do not have unique code points in Unicode. The most common example in modern Hindi is "k" + "ssa." The way this conjunction is written as a single glyph bears little resemblance to the original letters, yet Unicode has no code points for such combinations.

Fonts for these scripts have resorted to placing such essential glyphs in a Private Use Area. In fact, the Unicode 5.1 Standard even proposes that a font store Tamil syllables in a Private Use area. That defeats the whole purpose of Unicode as a standard encoding of the world's scripts, but is necessary for rendering under Unicode's current limitations. It is an artifact of the Unicode consortium adopting the Indian Government's ISCII-1988 standard. In the 1980s, the Indian government was concerned with simple sorting algorithms that did not require much memory.

Unicode, like ISCII-1988, only contains two of the many accent marks used for reciting of the Sanskrit Vedas. There is a movement to add such accents to the Unicode standard. A good summary of proposed additions to Unicode (with example glyphs for missing accents in the Devanagari script) appears at http://www.omkarananda-ashram.org/Sanskrit/vedicaccents.htm. They are seeking others to review their list of glyphs, and to notify them of equivalent glyphs in scripts besides Devanagari.

Now You See It...

Initially, I wanted to find out what glyphs remained to be drawn to complete the GNU Unifont. One problem was that the unifont.hex file did not include filler glyphs for the unassigned code points and noncharacters.

So I created the following file, which mimics the striped lines from the Unicode code blocks for all fillers. Note that new releases of Unicode will assign glyphs to some of these previously unassigned code points. At that time, the corresponding blank entries in this file should be removed.

I am placing these filler glyphs in the public domain. Do what thou wilt.

This file contains filler glyphs for all Unicode BMP code points that do not have assigned glyph representations in the published Unicode 5.1 standard, not counting the surrogate code points (U+D800 through U+DFFF) or the BMP Private Use code points (U+E000 through U+F8FF). My reference was the CD-ROM included in the back of the Unicode 5.0 Standard book, plus updates for Unicode 5.1 from the unicode.org website.

This Unicode 5.1 version has 3658 filler glyphs for the Basic Mulitlingual Plane. The Unicode 5.0 version had 4667 filler glyphs. Unicode 5.1 added over 1000 glyphs to the Basic Multilingual Plane. Each filler glyph looks like this:

blank filler glyph

The Winzip version of this file is blanks-5.1.zip. The gzipped Unix/Linux version of this file is blanks-5.1.hex.gz.

Additional Glyphs — 31 December 2007

I've added over 100 glyphs that can be incorporated into the GNU Unifont to complete the range U+0000 through U+05FF. Code points U+0360, U+0361, and U+0362 had a spurious pixel set in the original file; I made new glyphs with that pixel erased.

These glyphs are available under the GNU General Public License. Many of them were derived by copying and pasting a cell (generated by unihex2bmp) in a graphics editor.

A patch file that contains the additions that Roman posted on his website, plus Debian additions through version 1.04, plus the above-mentioned blanks, plus the 100+ additional glyphs that I created is at unifont-patch-2007-12-31.gz. This can be applied to Roman Czyborra's original unifont.hex.

Historical Note: This patch file applied to the original unifont.hex file was available for a brief period on Roman Czyborra's website before it went down. He asked me to continue my additions to the GNU Unifont, so for now I'm making updates available as entire font files.