
Unicode versions of the X11 "misc-fixed-*" fonts
------------------------------------------------

Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2003-01-17


This package contains the X Window System bitmap fonts

   -Misc-Fixed-*-*-*--*-*-*-*-C-*-ISO10646-1

These are Unicode (ISO 10646-1) extensions of the classic ISO 8859-1
X11 terminal fonts that are widely used with many X11 applications
such as xterm, emacs, etc.

COVERAGE
--------

None of these fonts covers Unicode completely. Complete coverage
simply would not make much sense here. Unicode 3.0 contains over 49000
characters, and the large majority of them are Chinese/Japanese/Korean
Han ideographs (~28000) and Korean Hangul Syllables (~11000) that
cannot adequately be displayed in the small pixel sizes of the fixed
fonts. Similarly, Arabic characters are difficult to fit nicely
together with European characters into the fixed character cells and
X11 lacks the ligature substitution mechanisms required for using
Indic scripts.

Therefore these fonts primarily attempt to cover Unicode subsets that
fit together with European scripts. This includes the Latin, Greek,
Cyrillic, Armenian, Georgian, and Hebrew scripts, plus a lot of
linguistic, technical and mathematical symbols. Some of the fixed
fonts now also cover Arabic, Thai, Ethiopian, halfwidth Katakana, and
some other non-European scripts.

We have defined 3 different target character repertoires (ISO 10646-1
subsets) that the various fonts were checked against for minimal
guaranteed coverage:

  TARGET1    616 characters
             Covers all characters of ISO 8859 part 1-5,7-10,13-16,
             CEN MES-1, ISO 6937, Microsoft CP1251/CP1252, DEC VT100
             graphics symbols, and the replacement and default
             character. It is intended for small bold, italic, and
             proportional fonts, for which adding block graphics
             characters would make little sense. This repertoire
             covers the following ISO 10646-1:2000 collections
             completely: 1-3, 8, 12.

  TARGET2    885 characters
             Adds to TARGET1 the characters of the Adobe/Microsoft
             Windows Glyph List 4 (WGL4), plus a selected set of
             mathematical characters (covering most of ISO 31-11
             high-school level math symbols) and some combining
             characters. It is intended to be covered by all normal
             "fixed" fonts and covers all European IBM, Microsoft, and
             Macintosh character sets. This repertoire covers the
             following ISO 10646-1:2000 (including Amd 1:2002)
             collections completely: 1-3, 8, 12, 33, 45.

  TARGET3    3228 characters

             Adds to TARGET2 all characters of all European scripts
             (Latin, Greek, Cyrillic, Armenian, Georgian), all
             phonetic alphabet symbols, many mathematical symbols
             (including all those available in LaTeX), all typographic
             punctuation, all box-drawing characters, control code
             pictures, graphical shapes and some more that you would
             expect in a very comprehensive Unicode 3.2 font for
             European users. It is intended for some of the more
             useful and more widely used normal "fixed" fonts. This
             repertoire is a superset of all graphical characters in
             CEN MES-3A and covers the following ISO 10646-1:2000
             (including Amd 1:2002) collections completely: 1-12, 27,
             30-31, 32 (only graphical characters), 33-42, 44-47, 63,
             65, 70 (only graphical characters).

CURRENT STATUS:

   6x13.bdf 8x13.bdf 9x15.bdf 9x18.bdf 10x20.bdf:

     Complete (TARGET3 reached and checked)

   5x7.bdf 5x8.bdf 6x9.bdf 6x10.bdf 6x12.bdf 7x13.bdf 7x14.bdf clR6x12.bdf:

     Complete (TARGET2 reached and checked)

   6x13B.bdf 7x13B.bdf 7x14B.bdf 8x13B.bdf 9x15B.bdf 9x18B.bdf:

     Complete (TARGET1 reached and checked)

   6x13O.bdf 7x13O.bdf 8x13O.bdf

     Complete (TARGET1 minus Hebrew and block graphics)

The supplement package

  http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-asian.tar.gz

contains the following additional square fonts with Han characters for
East Asian users:

   12x13ja.bdf:

     Covers TARGET2, JIS X 0208, Hangul, and a few more. This font is
     primarily intended to provide Japanese full-width Hiragana,
     Katakana, and Kanji for applications that take the remaining
     ("halfwidth") characters from 6x13.bdf. The Greek lowercase
     characters in it are still a bit ugly and will need some work.

  18x18ja.bdf:

     Covers all JIS X 0208, JIS X 0212, GB 2312-80, KS X 1001:1992,
     ISO 8859-1,2,3,4,5,7,9,10,15, CP437, CP850 and CP1252 characters,
     plus a few more, where priority was given to Japanese han style
     variants. This font should have everything needed to cover the
     full ISO-2022-JP-2 (RFC 1554) repertoire. This font is primarily
     intended to provide Japanese full-width Hiragana, Katakana, and
     Kanji for applications that take the remaining ("halfwidth")
     characters from 9x18.bdf.

  18x18ko.bdf:

     Covers the same repertoire as 18x18ja plus full coverage of all
     Hangul syllables and priority was given to Hanja glyphs in the
     unified CJK area as they are used for writing Korean.

The 9x18 and 6x12 fonts are recommended for use with overstriking
combining characters.

Bug reports, suggestions for improvement, and especially contributed
extensions are very welcome!

INSTALLATION
------------

You install the fonts under Unix roughly like this (details depending
on your system of course):

System-wide installation (root access required):

  cd submission/
  make
  su
  mv -b *.pcf.gz /usr/lib/X11/fonts/misc/
  cd /usr/lib/X11/fonts/misc/
  mkfontdir
  xset fp rehash

Alternative: Installation in your private user directory:

  cd submission/
  make
  mkdir -p ~/local/lib/X11/fonts/
  mv *.pcf.gz ~/local/lib/X11/fonts/
  cd ~/local/lib/X11/fonts/
  mkfontdir
  xset +fp ~/local/lib/X11/fonts   (put this last line also in ~/.xinitrc)

Now you can have a look at say the 6x13 font with the command

  xfd -fn '-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1'

If you want to have short names for the Unicode fonts, you can also
append the fonts.alias file to that in the directory where you install
the fonts, call "mkfontdir" and "xset fp rehash" again, and then you
can also write

  xfd -fn 6x13U

Note: If you use an old version of xfontsel, you might notice that it
treats every font that contains characters >0x00ff as a Japanese JIS
font and therefore selects inappropriate sample characters for display
of ISO 10646-1 fonts. An updated xfontsel version with this bug fixed
comes with XFree86 4.0 or newer.

If you use the Exceed X server on Microsoft Windows, then you will
have to convert the BDF files into Microsoft FON files using the
"Compile Fonts" function of Exceed xconfig. See the file exceed.txt
for more information.

There is one significant efficiency problem that X11R6 has with the
sparsely populated ISO10646-1 fonts. X11 transmits and allocates 12
bytes with the XFontStruct data structure for the difference between
the lowest and the highest code value found in a font, no matter
whether the code positions in between are used for characters or not.
Even a tiny font that contains only two glyphs at positions 0x0000 and
0xfffd causes 12 bytes * 65534 codes = 786 kbytes to be requested and
stored by the client. Since all the ISO10646-1 BDF files provided in
this package contain characters in the U+00xx (ASCII) and U+ffxx
(ligatures, etc.) range, all of them would result in 786 kbyte large
XCharStruct arrays in the per_char array of the corresponding
XFontStruct (even for CharCell fonts!) when loaded by an X client.
Until this problem is fixed by extending the X11 font protocol and
implementation, non-CJK ISO10646-1 fonts that lack the (anyway not
very interesting) characters above U+31FF seem to be the best
compromise. The bdftruncate.pl program in this package can be used to
deactivate any glyphs above a threshold code value in BDF files. This
way, we get relatively memory-economic ISO10646-1 fonts that cause
"only" 150 kbyte large XCharStruct arrays to be allocated. The
deactivated glyphs are still present in the BDF files, but with an
encoding value of -1 that causes them to be ignored.

The ISO10646-1 fonts can not only be used directly by Unicode aware
software, they can also be used to create any 8-bit font. The
ucs2any.pl Perl script converts a ISO10646-1 BDF font into a BDF font
file with some different encoding. For instance the command

  perl ucs2any.pl 6x13.bdf MAPPINGS/8859-7.TXT ISO8859-7

will generate the file 6x13-ISO8859-7.bdf according to the 8859-7.TXT
Latin/Greek mapping table, which available from
<ftp://ftp.unicode.org/Public/MAPPINGS/>. [The shell script
./map_fonts automatically generates a subdirectory derived-fonts/ with
many *.bdf and *.pcf.gz 8-bit versions of all the
-misc-fixed-*-iso10646-1 fonts.]

When you do a "make" in the submission/ subdirectory as suggested in
the installation instructions above, this will generate exactly the
set of fonts that have been submitted to the XFree86 project for
inclusion into XFree86 4.0. These consists of all the ISO10646-1 fonts
processed with "bdftruncate.pl U+3200" plus a selected set of derived
8-bit fonts generated with ucs2any.pl.

I recommend to play around with the UTF-8 editor Yudit. To use for
example the 6x13 font with Yudit 1.5, you just have to select the
settings

  Font=Misc Unicode
  Size=13
  Slant=Roman
  Spacing=CharCell
  Weight=Medium
  Add.Style=Any
  Avg.Width=60

in the Font menu or in the ~/.yuditrc config file. Yudit is a nice
text file editor with UTF-8 support, available from

  http://www.yudit.org/
  ftp://sunsite.unc.edu/pub/Linux/apps/editors/X/yudit-1.5.tar.gz

You can also use these fonts with Emacs 20.6 or higher. For more
information, see

  http://www.cs.ust.hk/faculty/otfried/Mule/

Every font comes with a *.repertoire-utf8 file that lists all the
characters in this font.


CONTRIBUTING
------------

If you want to help me in extending or improving the fonts, or if you
want to start your own ISO 10646-1 font project, you will have to edit
BDF font files. This is most comfortably done with the xmbdfed font
editor (version 4.3 or higher), which is available from

    ftp://crl.nmsu.edu/CLR/multiling/General/

Once you are familiar with xmbdfed, you will notice that it is no
problem to design up to 100 nice characters per hour (even more if
only placing accents is involved).

Information about other X11 font tools and Unicode fonts for X11 in
general can be found on

    http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html

The latest version of this package is available from

    http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz

If you want to contribute, then get the very latest version of this
package, check which glyphs are still missing or inappropriate for
your needs, and send me whatever you had the time to add and fix. Just
email me the extended BDF-files back, or even better, send me a patch
file of what you changed. The best way of preparing a patch file is

  ./touch_id newfile.bdf
  diff -d -u -F STARTCHAR oldfile.bdf newfile.bdf >file.diff

which ensures that the patch file preserves information about which
exact version you worked on and what character each "hunk" changes.

I will try to update this packet on a daily basis. By sending me
extensions to these fonts, you agree that the resulting improved font
files will remain in the public domain for everyone's free use. Always
make sure to load the very latest version of the package immediately
before your start, and send me your results as soon as you are done,
in order to avoid revision overlaps with other contributors.

Please try to be careful with the glyphs you generate:

  - Always look first at existing similar characters in order to
    preserve a consistent look and feel for the entire font and
    within the font family. For block graphics characters and geometric
    symbols, take care of correct alignment.

  - Read issues.txt, which contains some design hints for certain
    characters.

  - All characters of CharCell (C) fonts must strictly fit into
    the pixel matrix and absolutely no out-of-box ink is allowed.

  - The character cells will be displayed directly next to each other,
    without any additional pixels in between. Therefore, always make
    sure that at least the rightmost pixel column remains white, as
    otherwise letters will stick together, except of course for
    characters -- like Arabic or block graphics -- that are supposed to
    stick together.

  - Place accents as low as possible on the Latin characters.

  - Try to keep the shape of accents consistent among each other and
    with the combining characters in the U+03xx range.

  - Use xmbdfed only to edit the BDF file directly and do not import
    the font that you want to edit from the X server. Use xmbdfed 4.3
    or higher.

  - The glyph names should be the Adobe names for Unicode characters
    <http://partners.adobe.com/asn/developer/typeforum/unicodegn.html>,
    as xmbdfed can set them automatically if it is configured
    with the location of the Adobe "glyphlist.txt" file in
    "adobe_name_file" in "~/.xmbdfed". For xmbdfed 4.5 and older, use
    <http://partners.adobe.com/asn/developer/type/glyphlist-old.txt>.

  - Be careful to not change the FONTBOUNDINGBOX box accidentally in
    a patch.

You should have a copy of the ISO 10646 standard

  ISO/IEC 10646-1:2000, Information technology -- Universal
  Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture
  and Basic Multilingual Plane, International Organization for
  Standardization, Geneva, 2000.
  http://www.iso.ch/cate/d29819.html

and/or the Unicode 3.0 book:

  The Unicode Consortium: The Unicode Standard, Version 3.0,
  Reading, MA, Addison-Wesley Developers Press, 2000,
  ISBN 0-201-61633-5. 
  http://www.amazon.com/exec/obidos/ASIN/0201616335/mgk25

All these fonts are from time to time resubmitted to the XFree86
project (they have been in there since XFree86 4.0), X.Org, Sun, and
to other X server developers for inclusion into their normal X11
distributions.

Starting with XFree86 4.0, xterm has included UTF-8 support. This
version is also available from

  http://dickey.his.com/xterm/xterm.html

Please make the developer of your favourite software aware of the
UTF-8 definition in RFC 2279 and of the existence of this font
collection. For more information on how to use UTF-8, please check out

  http://www.cl.cam.ac.uk/~mgk25/unicode.html
  ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html

where you will also find information on joining the
linux-utf8@nl.linux.org mailing list.

A number of UTF-8 example text files can be found in the examples/
subdirectory or on 

  http://www.cl.cam.ac.uk/~mgk25/ucs/examples/

CONTRIBUTORS

Robert Brady <rwb197@ecs.soton.ac.uk> and Birger Langkjer
<birger.langkjer@image.dk> contributed thousands of glyphs and made
very substantial contributions and improvements on almost all fonts.
Constantine Stathopoulos <cstath@irismedia.gr> contributed all the
Greek characters. Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> did most 6x13
glyphs and the italic fonts and provided many more glyphs,
coordination, and quality assurance for the other fonts. Mark Leisher
<mleisher@crl.nmsu.edu> contributed to 6x13 Armenian, Georgian, the
first version of Latin Extended Block A and some Cyrillic. Serge V.
Vakulenko <vak@crox.net.kiae.su> donated the original Cyrillic glyphs
from his 6x13 ISO 8859-5 font. Nozomi Ytow <nozomi@biol.tsukuba.ac.jp>
contributed 6x13 halfwidth Katakana. Henning Brunzel
<hbrunzel@meta-systems.de> contributed glyphs to 10x20.bdf. Theppitak
Karoonboonyanan <thep@linux.thai.net> contributed Thai for 7x13,
7x13B, 7x13O, 7x14, 7x14B, 8x13, 8x13B, 8x13O, 9x15, 9x15B, and 10x20.
Karl Koehler <koehler@or.uni-bonn.de> contributed Arabic to 9x15,
9x15B, and 10x20 and Roozbeh Pournader <roozbeh@sharif.ac.ir> and
Behdad Esfahbod revised and extended Arabic in 10x20. Raphael Finkel
<raphael@cs.uky.edu> revised Hebrew/Yiddish in 10x20. Jungshik Shin
<jshin@pantheon.yale.edu> prepared 18x18ko.bdf. Won-kyu Park
<wkpark@chem.skku.ac.kr> prepared the Hangul glyphs used in 12x13ja.
Janne V. Kujala <jvk@iki.fi> contributed 4x6. Daniel Yacob
<perl@geez.org> revised some Ethiopic glyphs. Ted Zlatanov
<tzz@lifelogs.com> did some 7x14. Thanks also to everyone who
contributed additions to the UTF-8 example texts and to Bruno Haible
<haible@ilog.fr> for valuable comments.

The creation of these fonts would certainly not have been possible
without Mark Leisher's wonderful xmbdfed software.

Markus

-- 
Markus G. Kuhn, Computer Laboratory, University of Cambridge, England
