# The CYR-RFX project -- README

This work is dedicated to Mr. Troodie --the example of persistence

## Table of Contents

## §1. A brief description

1.1.
  What is CYR-RFX?
1.2.
  Where can the latest version of CYR-RFX be found?
1.3.
  How to install CYR-RFX fonts?
1.4.
  How to use CYR-RFX fonts in applications?
1.5.
  What does "CYR-RFX" mean?
1.6.
  What are the aims of CYR-RFX project?
1.7.
  Cyrillic fonts for X already exist (Cronyx for example), so what's the need in CYR-RFX?
1.8.
  TrueType rasterisers for X have recently appeared, and there is a plethora of cyrillic .ttf fonts, so what's the need in CYR-RFX?
1.9.
  Which fonts are included in the CYR-RFX?
1.10.
  Which set of glyphs and which encodings are included in CYR-RFX?
1.11.
  How fonts in CYR-RFX are named?
1.12.
  How the names of glyphs (which are specified in STARTCHAR) were chosen?
1.13.
  How the CYR-RFX fonts are created?
1.14.
  Which princilpes are used when creating cyrillic glyphs for CYR-RFX?
1.15.
  Why are YOU doing cyrillization? Are you an expert in fonts?

## §2. Using CYR-RFX fonts in applications

## §3. Glyph design principles used in CYR-RFX project

## Bibliography

## §1. A brief description

### §1.1. What is CYR-RFX?

CYR-RFX is a collection of cyrillic raster fonts for X-Window.

### §1.2. Where can the latest version of CYR-RFX be found?

The latest version is available on the CYR-RFX homepage at

> http://www.inp.nsk.su/~bolkhov/files/fonts/cyr-rfx/00index.en.html

It is also available in ftp space as

> ftp://ftp.inp.nsk.su/pub/BINP/X11/fonts/cyr-rfx/00index.en.html

### §1.3. How to install CYR-RFX fonts?

Exactly like any other collection of X fonts. Detailed instructions are available in the accompanying INSTALL.en.txt file.

### §1.4. How to use CYR-RFX fonts in applications?

Recipes for some most frequently used applications are available in §2.

### §1.5. What does "CYR-RFX" mean?

"CYR-RFX" means CYRillic Raster Fonts for X.

### §1.6. What are the aims of CYR-RFX project?

The aim of CYR-RFX is to create a collection of quality cyrillic versions of standard raster fonts for X-Window.

The first task was to create russified versions of a few LucidaTypewriter fonts to use them in xterm and text editors.

Later the task was extended -- to create such a collection of fonts which could cover most X-Window applications. The following apps are treated as most important: xterm, text editors, Netscape, XV, LyX, window managers and GUIs (fvwm/fvwm2/AnotherLevel, AfterStep, KDE, GNOME), Motif, Athena, Athena3D, Qt and XForms interface libraries.

(The fonts which are used were found in a trivial way: "`grep -i font`" on all files from `/etc/X11` and `/usr/X11R6/lib/X11/app-defaults` dirs, plus using `strings|less` on program executables and shared libraries.)

### §1.7. Cyrillic fonts for X already exist (Cronyx for example), so what's the need in CYR-RFX?

One of the goals of CYR-RFX is the development of accurate cyrillic versions of standard X fonts. The Cronyx package (the `fonts/cyrillic/` dir in the XFree86 distribution) presents some problems. First, it contains fonts not from X, but, it seems, from Windows 3.x (see [CRONYX]). Second, these fonts aren't the most aestetic and eye-pleasing. Third, the metrics in many of these fonts are bad, so the text rendered in different fonts (both in a mix of Cronyx/ISO8859-1 and in Cronyx only) looks "ugly". (It is due to wrong values of `FONT_ASCENT` properties, and the mismatch of glyphs' heights in different fonts with a same value of `PIXEL_SIZE` -- for example, in courier-medium-r-normal--14 and times-medium-r-normal--14.)

The author is far from slanding on the Cronyx fonts -- some time ago it was the only choice, and they helped very much, but now something better is required.

The second set of cyrillic fonts, known to the author (this set can be named as "75dpi.koi8-1" [75DPI_KOI8]) is made by adding cyrillic glyphs to the standard X fonts. But, first, it doesn't include the Lucida/Lucidatypewriter and monospaced `misc/` fonts, and, second, the glyph images often differ significantly from the same standard russian font (that one which is used in "paper" typography). Additionally, this set of fonts is "anonymous" -- at least, all its distributions, which are available to the author, contain no notion of creators.

### §1.8. TrueType rasterisers for X have recently appeared, and there is a plethora of cyrillic .ttf fonts, so what's the need in CYR-RFX?

Vector fonts (TrueType and Postscript) are ideal for large resolutions, but for low resolutions (xterm, text editors, www, window titles etc.) the hand-tuned raster fonts are much better. They are used for these purposes not only in X, but also in Windows and MacOS.

Additionally, the most available TrueType fonts are those which are distributed with MS Windows and are part of MS Fontpack [MS_FONTPACK]. But, despite that they are "free", they are not free software. So, they are virtually unacceptable for use in Unices, since, for example, they can't be included into distributions due to weird format (.exe-files) and their very "jesuitical" license (see [MS_EULA]).

### §1.9. Which fonts are included in the CYR-RFX?

Currently all the iso8859-1 fonts from `misc/`, plus Lucida, LucidaTypewriter, Times, Helvetica and Courier from `75dpi/` are cyrillized. The NewCenturySchoolbook and `100dpi/` fonts are taken into account for future. This choice of fonts is conditioned by their most frequent usage.

### §1.10. Which set of glyphs and which encodings are included in CYR-RFX?

First the aim was to make glyphs from koi8-1 encoding [KOI81] (including "Euro"), later ukrainian glyphs from koi8-ru [KOI8RU] were added, and, finally, as less needed, the rest cyrillic glyphs from windows-1251/WGL4 [WIN1251,WGL4]. The author doesn't have a task to make all cyrillic glyphs from the Unicode standard -- only the most used.

The `misc/` and `75dpi/lut[RB]S{08,19,24}.bdf` fonts have the following glyphs (which are present in koi8-1 and in Adobe standard encoding) added:

> `dagger, daggerdbl, guilsinglleft, guilsinglright, emdash, endash, ellipsis, quotesinglbase, quotedblbase, grave, quotesingle, quotedblleft, quotedblright, tilde, florin, perthousand, bullet, trademark, circumflex; OE, oe, Scaron, scaron, Zcaron, zcaron, Ydieresis.`

In other fonts these chars were already present as "unencoded glyphs".

Monospace LucidaTypewriter and Courier fonts have linedrawing chars in the range 0x00-0x1F added, so that these fonts can be used in xterm and alikes (the author prefers `lutRS12`).

Some LucidaTypewriter fonts have also "images" of control chars from 0x00-0x1F plus 0x7F (`delete`) added. The goal is that in those applications, which display text not interpreting control chars (text editors, xfte for example), and in xterm when printing chars from this range without special meaning, something would appear, instead of absolutely nothing.

In standard Lucida and LucidaTypewriter fonts, and in most fonts from `misc/` the `DEFAULT_CHAR` property [BDF,XLFD] has a value of 0. So, in the LucidaTupewriter and `misc/{10x20,12x24,6x10,6x13B,7x14,7x14B,8x13,8x13B,8x16,9x15,9x15B}` fonts the 0x00 char was added, looking as a filled rectangle (it was already present in other `misc/` fonts). And in Lucida (more precisely, in all with `DEFAULT_CHAR=0` and missing 0x00 char) the value of `DEFAULT_CHAR` was changed to `32`, for nonexistent glyphs to be displayed as space (initially in Lucida* from X11R6.3 even the 0xA0 glyph (nbsp) was missing, which is wrong).

Currently the following encodings are present:

Encoding | Glyphs included
--- | ---
koi8-1 | complete
koi8-ru | letters, single linedrawing and some special glyphs only
windows-1251 | complete
ibm-cp866 | letters, single linedrawing and some special glyphs only
iso8859-5 | complete
mac-cyrillic | without Mac-specific glyphs like "Delta" and "infinity"
winlatin-1 | complete
iso8859-15 | complete

The winlatin-1 encoding (also known as cp-1252 and windows-1252) is a superset of iso8859-1, and contains additional glyphs in the range 0x80-0x9F. Sometimes web-pages crafted under Windows in cp-1252 are transferred with `charset=iso-8859-1` header [CZY_CP1252].

The 0-127 range is identical to ISO8859-1 in all encodings.

Since the ready-to-use font files are generated programmatically, other encodings can be added easily.

### §1.11. How fonts in CYR-RFX are named?

All the fonts have the same names as standard ones, with a few changes.

1. The XLFD-suffix `rgstry-encdng` "ISO8859-1" is replaced with that which reflects the encoding (e.g. "koi8-1").
2. Additionally, for fonts in koi8-1, koi8-ru, winlatin-1 and iso8859-15 encodings the aliases with `rgstry-encdng` "koi8-r", "koi8-u", "iso8859-1" and "iso8859-1", respectively, are autogenerated. In these aliases the real encoding name is appended to the `fndry` field. For example, for the font

   > -adobe-times-medium-r-normal--14-140-75-75-p-74-winlatin-1

   the alias

   > -adobe_winlatin_1-times-medium-r-normal--14-140-75-75-p-74-iso8859-1

   is generated.
3. And, finally, the aliases from original `fonts.alias` files are retained (of course, with appropriate target name modification). For example, `6x13` and `fixed` "point" to

   > -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-koi8-1

Such approach enables to ease cyrillization of most standard programs, which usually use either wildcards without encoding, or aliases like "7x14", "fixed" etc. In most cases it is sufficient to place a directory with cyrillic fonts into beginning of FontPath, and these fonts will be used instead of iso8859-1 ones automatically.

### §1.12. How the names of glyphs (which are specified in STARTCHAR) were chosen?

Mainly the standard Adobe names were used. It applies to glyphs from 0x20-0x7E, to cyrillic glyphs (`afiiNNNNN`), to glyphs from ISO8859-1 range 0xA0-0xBF, to "`Euro`" and additional punctuation from Adobe standard encoding range. The "number" sign was named "`afii61352`", the "rouble" sign was named "`rouble`". The linedrawing chars got the names `ldXXXXX`, as was suggested by the `75dpi/tech14.bdf` (-DEC-Terminal-*-DEC-DECtech) font, the 0x00 is "`null`", and the rest glyphs from 0x00-0x1F are named "`ctrlX`", where "X" is a char with the same code plus 0x40. The 0x7F glyph is named "`delete`". The non-breaking space char 0xA0 is named space, as Adobe standard encoding [AGL] suggests.

Glyphs which don't have Adobe name were named `uniXXXX` according to [UGN].

### §1.13. How the CYR-RFX fonts are created?

The fonts are created in two steps.

First the standard .bdf font from XFree86 distribution (the `xc/fonts/bdf/*/` dirs) is taken, than cyrillic and other missing glyphs are added (the main russian -- in the koi8 positions, others -- in the relatively randomly selected positions from 0x80-0x9F; it is named a "source encoding"). The fonts are edited with a slightly modified XmBDFEd 3.0 (sometimes assisted by XPaint).

Than a special assembler program written in Perl (it is called `cvtbdf.pl`) reads both the new file with cyrillics and a standard ISO8859-1 file, and creates a file with a font in requested encoding (koi8-1, windows-1251 etc.).

Since XmBDFEd 3.0 handles the headers of some fonts in a "too intellectual" manner, the headers (and the `DWIDTH` parameter for monospace fonts) are taken from an ISO8859-1 font. During this process the "`FONT`" header is modified, and the values of `FNDRY`, `CHARSET_REGISTRY` and `CHARSET_ENCODING` properties are replaced. Additionally, the `COPYRIGHT2`, `SOURCEDATE` and `ASSEMBLER` properties are being added.

### §1.14. Which princilpes are used when creating cyrillic glyphs for CYR-RFX?

This is covered in §3 in detail, but briefly, the glyphs should correspond to the style of the font as close as possible.

### §1.15. Why are YOU doing cyrillization? Are you an expert in fonts?

I just got tired of very "rough" and unergonomic fonts (plus very unesthetic ones). Since definitely nobody tried to fix the situation, I decided to do it myself.

I began creating/cyrillizing raster fonts in the end of 80s on BK-0010, Yamaha MSX and AT286 computers, so the gained experience gave me right to predict a good result.

## §2. Using CYR-RFX fonts in applications

Yet to be written...

## §3. Glyph design principles used in CYR-RFX project

Yet to be written and translated...

## Bibliography

[5013]

  Adobe Systems Incorporated, "Adobe Standard Cyrillic Font Specification, Technical Note #5013, 25 February 1993.
  ftp://ftp.adobe.com/pub/adobe/devrelations/devtechnotes/pdffiles/5013.cyrillic_font_spec.pdf

[6X13README]

  Markus Kuhn, 6x13 project README file, "CONTRIBUTING" section.
  http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz `/README`

[75DPI_KOI8]

  Unknown author, Collection of 75 dpi russian fonts in BDF format, 1991.
  http://www.kiarchive.ru/pub/cyrillic/x11/fonts/75dpi_koi8.tar.gz

[ACHE]

  A. Chernov, "KOI8-R - Russian Net Character Set".
  http://nagual.pp.ru/~ache/koi8.html

[AGL]

  Adobe Systems Incorporated, "Adobe Glyph List" version 1.2, 22 Oct 1998.
  http://partners.adobe.com/asn/developer/typeforum/glyphlist.txt

[ATYPE]

  Adobe Systems Incorporated, "Adobe Type Library".
  http://www.adobe.com/type/

[BASK_C]

  Linotype-Hell AG, Baskerville Cyrillic font.
  http://www.adobe.com/type/browser/P/P_365.html
  ([ATYPE] -> A-Z type index -> B -> Baskerville Cyrillic)

[BDF]

  Adobe Systems Incorporated, "Glyph Bitmap Distribution Format (BDF) Specification", Version 2.2, 22 March 1993.
  ftp://ftp.adobe.com/pub/adobe/devrelations/devtechnotes/pdffiles/5005.bdf_spec.pdf

[BH_DOUF]

  C.Bigelow, K.Holmes, "The Design of a Unicode Font", Electronic Publishing, vol. 6(3), 289-305 (September 1993).
  http://cajun.cs.nott.ac.uk/wiley/journals/epobetan/pdf/volume6/issue3/bigelow.pdf

[CRONYX]

  Cronyx Ltd., "Fonts mostly in BDF format".
  http://www.kiarchive.ru/pub/cyrillic/x11/fonts/
  ftp://ftp.kiarchive.ru/pub/cyrillic/x11/fonts/
  (see also `README.set` file)

[CZY_CP1252]

  Roman Czyborra, "The ISO 8859 Alphabet Soup", 1998-12-01.
  http://czyborra.com/charsets/iso8859.html#CP1252

[CZY_CYR]

  Roman Czyborra, "The Cyrillic Charset Soup", 1998-11-30.
  http://czyborra.com/charsets/cyrillic.html

[EURO_A]

  Ingrid Kelly, "The Euro Currency Symbol", Technote 1140, Apple Worldwide Developer Technical Support, 05-October-98.
  http://developer.apple.com/technotes/tn/tn1140.html

[EURO_H]

  Hewlett Packard, "Design and development of the Euro symbol for HPFontSmart".
  http://www.fonts.com/hp/euro/Eurodev1.htm

[EURO_M]

  Microsoft Corporation, "The euro currency symbol", 23 February 1999.
  http://www.microsoft.com/typography/faq/faq12.htm

[HELV_C]

  Linotype-Hell AG, Helvetica Cyrillic font.
  http://www.adobe.com/type/browser/P/P_361.html
  ([ATYPE] -> A-Z type index -> H -> Helvetica Cyrillic)

[KOI81]

  E.Byrganov, "Opisanie kodirovki dlya raboty w srede X11 na russkom yazyke", 28.10.1999.
  http://www.inp.nsk.su/~byrganov/publish/koi8-1/koi8-1.ru.html

[KOI8R]

  A. Chernov, "Registration of a Cyrillic Character Set", RFC1489, July 1993.
  ftp://ftp.isi.edu/in-notes/rfc1489.txt

[KOI8RU]

  Yuri Demchenko, "KOI8-RU - Ukrainian Net Character Set".
  http://cad.ntu-kpi.kiev.ua/multiling/koi8-ru/

[KOI8U]

  KOI8-U Working Group, "Ukrainian Character Set KOI8-U", RFC2319, April 1998.
  ftp://ftp.isi.edu/in-notes/rfc2319.txt
  http://cad.ntu-kpi.kiev.ua/multiling/koi8-u/

[LUCIDA_FO]

  Compiled from Charles Bigelow and Kris Holmes works, "Lucida Family Overview".
  http://members.aol.com/willadams/lucida.txt
  (Probably the best reference will be [Charles Bigelow and Kris Holmes, "The design of Lucida: an integrated family of types for electronic literacy", in Text processing and document manipulation, ed. J. C. Van Vliet, Cambridge University Press, (1986)], but I don't have access to it.)

[MSCDS]

  Microsoft Corporation, "Character design standards".
  http://www.microsoft.com/typography/developers/fdsspec/default.htm

[MS_EULA]

  Microsoft Corporation, "TrueType core fonts for the Web EULA".
  http://www.microsoft.com/typography/fontpack/eula.htm
  http://www.microsoft.com/typography/faq/faq8.htm
  http://www.microsoft.com/Misc/cpyright.htm

[MS_FONTPACK]

  Microsoft Corporation, "TrueType core fonts for the Web".
  http://www.microsoft.com/typography/fontpack/default.htm

[MUSAEV]

  K.M. Musaev, "Alfavity jazykov narodov SSSR", Moscow, "Nauka", 1965.

[OFFTYPESANS]

  D.Gulinov, Office TypeSans font.
  http://www.paratype.com/library/newstyles.asp?fontcode=TM_OTS

[PISKA]

  Karel Piska, "Cyrillic Alphabets", TUGboat 17(2), June 1996.
  http://www.tug.org/TUGboat/Articles/tb17-2/tb51pisk.pdf
  http://www-hep.fzu.cz/~piska/

[TIMES_C]

  Linotype-Hell AG, Times Ten Cyrillic font.
  http://www.adobe.com/type/browser/P/P_354.html
  ([ATYPE] -> A-Z type index -> T -> Times Ten Cyrillic)

[U0400]

  Unicode, Inc., Unicode 2.1 Cyrillic chart.
  http://charts.unicode.org/Unicode.charts/normal/U0400.html

[UGN]

  Adobe Systems Incorporated, "Unicode and Glyph Names" version 1.1, 17 December 1998.
  http://partners.adobe.com/asn/developer/typeforum/unicodegn.html

[WIN1251]

  Microsoft Corporation, "Microsoft Windows Codepage : 1251 (Cyrillic)".
  http://www.microsoft.com/globaldev/reference/sbcs/1251.htm

[WGL4]

  Microsoft Corporation, "WGL4.0 Character Set".
  http://www.microsoft.com/typography/OTSPEC/WGL4.htm

[XLFD]

  Jim Flowers, "X Logical Font Description Conventions", Version 1.5, X Consortium Standard, X Version 11, Release 6.3.
  ftp://ftp.x.org/pub/R6.4/xc/doc/hardcopy/XLFD/xlfd.PS.gz