# Проект CYR-RFX -- README

Эта работа посвящается Мистеру Труди --образцу упорства и настойчивости

## Оглавление

## §1. Краткое описание

1.1.
  Что такое CYR-RFX?
1.2.
  Где можно найти последнюю версию шрифтов CYR-RFX?
1.3.
  Как установить шрифты CYR-RFX?
1.4.
  Как использовать шрифты CYR-RFX в приложениях?
1.5.
  Как расшифровывается "CYR-RFX"?
1.6.
  Каковы цели проекта CYR-RFX?
1.7.
  Уже существуют кириллические шрифты для X (например, Cronyx), зачем же нужен CYR-RFX?
1.8.
  Сейчас существуют растризаторы TrueType шрифтов для X, зачем же нужен CYR-RFX?
1.9.
  Какие шрифты входят в проект CYR-RFX?
1.10.
  Какой набор символов и какие кодировки присутствуют в CYR-RFX?
1.11.
  Какие имена имеют шрифты в CYR-RFX?
1.12.
  Как выбирались имена отдельных символов в шрифте, указываемые после ключевого слова STARTCHAR?
1.13.
  Как создаются шрифты CYR-RFX?
1.14.
  По каким принципам создаются кириллические символы в CYR-RFX?
1.15.
  Почему ВЫ занимаетесь кириллизацией? Вы специалист по шрифтам?

## §2. Использование шрифтов CYR-RFX в приложениях

## §3. Принципы создания кириллических символов в CYR-RFX

## Литература

## §1. Краткое описание

### §1.1. Что такое CYR-RFX?

CYR-RFX -- это набор кириллических растровых шрифтов для системы X-Window.

### §1.2. Где можно найти последнюю версию шрифтов CYR-RFX?

Последняя версия всегда доступна на домашней странице проекта CYR-RFX по адресу

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

Она также доступна по ftp по адресу

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

### §1.3. Как установить шрифты CYR-RFX?

В точности так же, как и любые другие шрифты для X. Детальные инструкции содержатся в файле INSTALL.ru.txt.

### §1.4. Как использовать шрифты CYR-RFX в приложениях?

Рецепты для нескольких часто используемых приложений приведены во втором разделе.

### §1.5. Как расшифровывается "CYR-RFX"?

"CYR-RFX" расшифровывается как CYRillic Raster Fonts for X.

### §1.6. Каковы цели проекта CYR-RFX?

Целью CYR-RFX является создание набора качественных кириллических версий растровых шрифтов для X-Window.

Первоначально ставилась задача создать русифицированные версии нескольких шрифтов семейства LucidaTypewriter для использования в xterm и текстовых редакторах.

Затем задача была расширена -- создание такого набора шрифтов, который покрывал бы большинство приложений X-Window. В качестве основных при этом считаются: xterm, текстовые редакторы, Netscape, XV, LyX, window manager'ы и GUI (fvwm/fvwm2/AnotherLevel, AfterStep, KDE, GNOME), интерфейсы Motif, Athena, Athena3D, Qt и XForms.

(Требуемые шрифты выяснялись очень простым способом: "`grep -i font`" по всем файлам в директориях `/etc/X11` и `/usr/X11R6/lib/X11/app-defaults`, а также при помощи `strings|less` по исполняемым файлам программ и динамическим библиотекам.)

### §1.7. Уже существуют кириллические шрифты для X (например, Cronyx), зачем же нужен CYR-RFX?

Одной из целей CYR-RFX является создание аккуратных кириллических версий стандартных шрифтов X.

Пакет Cronyx же (директория `fonts/cyrillic` в дистрибутиве XFree86) во-первых, содержит шрифты, взятые скорее из Windows 3.x (см. [CRONYX]), а не из X, во-вторых, эти шрифты -- не самые эстетичные и приятные для глаза, а в-третьих, метрики в этих шрифтах зачастую неверны, так что обычно текст, состоящий из разных шрифтов (как вперемежку Cronyx/ISO8859-1, так и только Cronyx) выглядит попросту "коряво". (Это обусловлено неправильным значением `FONT_ASCENT`, а также несоответствием высот символов в разных шрифтах с одинаковым значением `PIXEL_SIZE` -- например, в шрифтах courier-medium-r-normal--14 и times-medium-r-normal--14.)

Автор далек от того, чтобы "поливать грязью" шрифты Cronyx -- в свое время они были единственным вариантом для X, и их значение трудно переоценить, но в настоящее время хочется лучшего.

Второй известный автору набор кириллических шрифтов -- условно назовем его "75dpi.koi8-1" [75DPI_KOI8] -- сделан путем добавления русских символов в стандартные шрифты. Но он, во-первых, не содержит шрифтов Lucida/LucidaTypewriter и моноширинных из `misc/`, а во-вторых, начертания символов зачастую не соответствуют принятому в соответствующем русском шрифте (используемом в издательском деле). Кроме того, этот набор шрифтов в общем-то "анонимный" -- по крайней мере, в имеющихся у автора вариантах дистрибутива отсутствуют какие-либо ссылки на создателей.

### §1.8. Сейчас существуют растризаторы TrueType шрифтов для X, зачем же нужен CYR-RFX?

Для больших разрешений векторные шрифты (TrueType и PostScript) являются идеальным решением, для малых же разрешений (xterm, текстовые редакторы, WWW, заголовки окон и т.д.) лучше подходят точно рассчитанные и подогнанные вручную растровые шрифты. Именно они применяются в этих целях как в X, так и в MS Windows и в MacOS.

Кроме того, наиболее распространенные TrueType-шрифты -- это те, что поставляются в составе MS Windows и входят в MS Fontpack [MS_FONTPACK]. Но, несмотря на "бесплатность", они не являются свободно распространяемыми и практически неприемлемы для нормального использования в Unix, т.к., к примеру, не могут быть включены в дистрибутивы Unix вследствие поставляемого формата (.exe-файл) и весьма иезуитской лицензии (см. [MS_EULA]).

### §1.9. Какие шрифты входят в проект CYR-RFX?

В настоящий момент кириллизированы все iso8859-1-шрифты из `misc/` и шрифты семейств Lucida, LucidaTypewriter, Times, Helvetica и Courier из `75dpi/`; семейство NewCenturySchoolbook и шрифты `100dpi/` держится в уме на будущее. Такой выбор шрифтов обусловлен в основном тем, что они наиболее часто используются.

### §1.10. Какой набор символов и какие кодировки присутствуют в CYR-RFX?

Первоначально предполагалось сделать символы кодировки koi8-1 [KOI81] (включая "Евро" [EURO_A,EURO_H,EURO_M] и "Рубль"), затем были включены украинские и белорусские символы из koi8-ru [KOI8RU], и, наконец, в качестве менее необходимых, кириллические символы из windows-1251/WGL4 [WIN1251,WGL4]. Автор не ставит перед собой задачу сделать все кириллические символы, присутствующие в стандарте Unicode -- лишь самые используемые.

В шрифты `misc/` и `75dpi/lut[RB]S{08,19,24}.bdf` были добавлены символы пунктуации, присутствующие в koi8-1 и стандартном наборе фирмы Adobe:

> `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.`

В остальных шрифтах они уже содержались в качестве unencoded glyphs.

В моноширинные шрифты LucidaTypewriter и Courier были добавлены символы псевдографики в диапазоне 0x00-0x1F, чтобы их можно было использовать в xterm и подобных программах (автор пользуется шрифтом `lutRS12`).

В некоторые шрифты LucidaTypewriter добавлены также и "изображения" управляющих символов из диапазона 0x00-0x1F плюс символа 0x7F (`delete`). Цель -- чтобы в программах, которые отображают текст, не интерпретируя управляющие символы (текстовые редакторы -- к примеру, xfte), а также в xterm при отображении символов из этого диапазона, не имеющих специального назначения, отображалось что-нибудь -- вместо абсолютно ничего.

В стандартных шрифтах Lucida и LucidaTypewriter, а также в большинстве шрифтов `misc/` свойство `DEFAULT_CHAR` [BDF,XLFD] имеет значение 0. Поэтому в моноширинные шрифты LucidaTypewriter и `misc/{10x20,12x24,6x10,6x13B,7x14,7x14B,8x13,8x13B,8x16,9x15,9x15B}` был добавлен символ 0x00 в виде заполненного прямоугольника (в остальных `misc/` он уже был). В шрифтах же Lucida (точнее, во всех, с `DEFAULT_CHAR=0` и отсутствующим символом 0x00) значение `DEFAULT_CHAR` было изменено на `32`, чтобы несуществующие символы отображались как пробел (изначально в Lucida* из X11R6.3 отсутствовал даже символ 0xA0 (nbsp), что неверно).

В настоящий момент присутствуют следующие кодировки:

Кодировка | Состав
--- | ---
koi8-1 | полностью
koi8-ru | буквы, одиночная псевдографика и часть спецсимволов
windows-1251 | полностью
ibm-cp866 | буквы, одиночная псевдографика и часть спецсимволов
iso8859-5 | полностью
mac-cyrillic | без специфичных для Mac символов типа "Delta" и "infinity"
winlatin-1 | полностью
iso8859-15 | полностью

Кодировка winlatin-1 (она же cp-1252, она же windows-1252) является надмножеством iso8859-1, но содержит дополнительные символы в позициях 0x80-0x9F. Иногда web-страницы, сделанные под Windows в cp-1252, передаются с заголовком `charset=iso-8859-1` [CZY_CP1252].

Во всех кодировках диапазон 0-127 совпадает с ISO8859-1.

Поскольку готовые файлы со шрифтами генерируются программно, легко могут быть добавлены другие кодировки.

### §1.11. Какие имена имеют шрифты в CYR-RFX?

Все шрифты имеют те же имена, что и стандартные, с несколькими отличиями.

1. XLFD-суффикс `rgstry-encdng` "ISO8859-1" заменяется на тот, что соответствует конкретной кодировке (например, "koi8-1").
2. Кроме того, для шрифтов в кодировках koi8-1, koi8-ru, winlatin-1 и iso8859-15 автоматически генерируются псевдонимы с rgstry-encdng "koi8-r", "koi8-u", "iso8859-1" и "iso8859-1" соответственно. У этих псевдонимов к полю `fndry` добавляется название исходной кодировки. К примеру, для шрифта

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

   создается псевдоним

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

3. И, наконец, псевдонимы, имевшиеся в оригинальных файлах `fonts.alias`, сохранены (естественно, с корректной модификацией имени). Так, к примеру, `6x13` и `fixed` "указывают" на

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

Такой подход позволяет максимально упростить кириллизацию большинства стандартных программ, которые обычно используют или шаблоны без указания кодировки, или псевдонимы "7x14", "fixed" и подобные. В большинстве случаев достаточно поместить директории с кириллическими шрифтами в начало FontPath, и они автоматически будут использоваться вместо iso8859-1.

### §1.12. Как выбирались имена отдельных символов в шрифте, указываемые после ключевого слова STARTCHAR?

В основном использовались стандартные имена фирмы Adobe [AGL]. Это относится символам из диапазона 0x20-0x7E, кириллическим символам (имена `afiiNNNNN`), символам из диапазона 0xA0-0xBF кодировки ISO8859-1, символу "`Euro`", а также к дополнительным символам пунктуации. Для символа "номер" было взято имя "`afii61352`", для символа "рубль" -- "`rouble`". Символы псевдографики получили имена `ldXXXXX` (Line Drawing) по примеру шрифта `75dpi/tech14.bdf` (-DEC-Terminal-*-DEC-DECtech), символ 0x00 -- имя "`null`", а остальные символы из диапазона 0x00-0x1F получили имена "`ctrlX`", где "X" -- символ с тем же кодом плюс 0x40. Символ 0x7F получил имя "`delete`". Символ неразбивающего пробела 0xA0 получил имя "`space`" в соответствии с [AGL].

Символы, не имеющие стандартных имен Adobe, в соответствиии с [UGN] получили имена вида `uniXXXX`, где "XXXX" -- шестнадцатиричный Unicode-код символа.

### §1.13. Как создаются шрифты CYR-RFX?

Шрифты создаются в два приема.

Сначала берется стандартный .bdf-шрифт из дистрибутива XFree86 (директория `xc/fonts/bdf/*/`), в него добавляются кириллические и иные отсутствующие символы (основные русские -- в позициях koi8, остальные -- в сравнительно произвольно выбранных позициях в диапазоне 0x80-0x9F; эта кодировка именуется "source encoding"). Шрифты редактируются при помощи слегка модифицированного редактора XmBDFEd версии 3.0 (иногда используется помощь редактора XPaint).

Затем специальная программа-сборщик, написанная на языке Perl (`cvtbdf.pl`) считывает файлы, содержащие шрифт с кириллическими символами и исходный ISO8859-1, и создает файл, содержащий шрифт в указанной кодировке (koi8-1, windows-1251 и т.д.).

Поскольку XmBDFEd 3.0 не очень хорошо обращается с заголовками некоторых шрифтов, то заголовки (а также параметр `DWIDTH` для моноширинных шрифтов) берутся из ISO8859-1-шрифта. При этом модифицируется заголовок "`FONT`", заменяются значения свойств `FNDRY`, `CHARSET_REGISTRY` и `CHARSET_ENCODING`. Кроме того, добавляются свойства `COPYRIGHT2`, `SOURCEDATE` и `ASSEMBLER`.

### §1.14. По каким принципам создаются кириллические символы в CYR-RFX?

Подробно это описано в §3, но если в нескольких словах, то символы должны максимально соответствовать стилю шрифта.

### §1.15. Почему ВЫ занимаетесь кириллизацией? Вы специалист по шрифтам?

Дело в том, что я попросту устал от весьма "корявых" и неэргономичных шрифтов, не говоря уж об их неэстетичности. Поскольку явно никто не чесался исправить ситуацию, то я решил заняться этим сам.

Созданием/кириллизацией растровых шрифтов я начал заниматься еще в 80-х годах на компьютерах БК-0010, Yamaha MSX и AT286, так что опыт давал мне право надеяться на получение качественного результата.

## §2. Использование шрифтов CYR-RFX в приложениях

Надо написАть...

## §3. Принципы создания кириллических символов в CYR-RFX

Хотя в Internet есть довольно много рекомендаций по созданию компьютерных шрифтов для языков на основе латиницы (см. например [MSCDS], рекомендации по созданию или кириллизации шрифтов отсутствуют. (Впрочем, существуют общие работы по добавлению нелатинских символов в шрифты -- к примеру, [BH_DOUF], [6X13README].) Поэтому автор постарался сформулировать правила, используемые им в проекте CYR-RFX.

Автор не является экспертом по дизайну и созданию шрифтов, поэтому всю нижеприведенную информацию следует рассматривать лишь как личный опыт самого автора.

Создание шрифта есть акт искусства, и как художник уделяет внимание мельчайшим деталям, так и при создании нового шрифта его автор как бы рисует в голове "полную картину" этого шрифта, чтобы все символы соответствовали единому стилю (в чуть меньшей степени это относится к шрифтам `misc/`, которые ведут свою историю от алфавитно-цифровых дисплеев и принтеров, где зачастую шрифты делались не профессионалами, а теми, кто "оказывался под рукой").

При добавлении же новых символов в чужой шрифт очень важно попытаться восстановить эту "картину", чтобы добавляемые символы соответствовали тому же стилю (аналогично тому, как должны "проникнуться духом" картины реставраторы и изготовители подделок ;).

Большинство символов состоят из более-менее стандартных элементов -- к примеру, левая вертикальная черта в "k" и "h" практически всегда одинакова (включая серифы). Поэтому пол-задачи -- "разглядеть" эти стандартные элементы и правильно их использовать при создании кириллических символов. Значительно помогает также то, что кириллица весьма близка к латинице (по крайней мере, существенно ближе, чем иврит).

Но некоторые кириллические символы или не имеют никаких близких аналогов в ISO8859-1 (например, "д" и "л"), или же содержат элементы, или совсем отсутствующие в ISO8859-1 (к примеру, хвостик у "б"), или имеющие лишь отдаленные аналоги (как хвостики у "д", "ц", "щ", "ъ").

В последнем случае следует искать похожий по стилю и "духу" шрифт среди кириллических "старых", т.е. использовавшихся в книгопечатании еще в докомпьютерную эпоху, или же (особенно если это новый шрифт, например, Lucida), попытавшись воссоздать "картину" шрифта, создать новый элемент так, чтобы он органично вписался в шрифт.

В случае CYR-RFX задача существенно упрощается тем, что требуется кириллизировать лишь растровые шрифты размером от 8 до 24. Тем не менее, даже в сравнительно небольшой матрице можно создать несколько совершенно различных стилей букв -- см., к примеру, обсуждение символов "д" и "л".

Кроме того, небольшая матрица накладывает свои ограничения, так что приходится жертвовать "канонической" формой символа, чтобы сохранить "впечатление" создаваемое его образом (чаще всего этому подвержена буква "Ж"), или чтобы сохранить его "отличительность" (например, буква "л" в шрифте `75dpi/timR10`).

Ко всему прочему, кириллица хоть и похожа на латиницу, но имеет два существенных "статистических" отличия.

- Во-первых, по числу символов с большим количеством "циклов" (см.[BH_DOUF, §3, "Proportional and fixed-pitch spacing"]) -- в основном за счет "ж", "ф", "ы", "ш", "щ" и "ю". Это сильно влияет на дизайн моноширинных шрифтов.
- Во-вторых, по числу символов, имеющих одну или две вертикальных границы. Так, в английском их число 8 и 5 из 27 (30% и 19%, в сумме меньше половины), а в русском -- 10 и 9 из 33 (30% и 27%, в сумме больше половины), статистика приведена для маленьких букв. Если же учитывать частоту использования символов, то процент "полностью вертикальных боков" букв, стоящих в тексте впритык, оказывается очень высок. Вследствие этого зачастую оказывается недостаточно просто сделать все символы по тем же правилам, что и латинские -- надо также уделять внимание сочетаемости букв. Если в большинстве шрифтов эта проблема решается (в основном путем изменения правил создания пустого места по бокам букв), то с Lucida успех оказался весьма ограниченным (видимо, вследствие очень тонкой проработки этой гарнитуры [LUCIDA_FO]).

Эти факторы приводят к тому, что, к примеру, русский текст выглядит более "насыщенным", чем английский. Поэтому "одинаковость" внешнего вида следует воспринимать как цель, к которой надо стремиться, но едва ли возможно достичь. (По крайней мере, в рамках формата BDF, не поддерживающего кернинг.)

Ниже приведены соображения по созданию и использованию как элементов, составляющих кириллические символы, так и отдельных символов.

### §3.1. Символы, идентичные существующим латинским

Некоторые кириллические символы являются точными копиями латинских символов, и поэтому они берутся из шрифта ISO8859-1 как есть. Русские символы (т.е. из диапазона koi8:0xC0-0xFF/Unicode:0410-044F) копируются при редактировании, а остальные -- при генерации шрифта программой `cvtbdf.pl`.

Символы | Копируются из
--- | ---
C | afii | U+.. | Символ | ISO8859-1
Русские символы
А | 10017 | 0410 | A | 0x41
В | 10019 | 0412 | B | 0x42
Е | 10022 | 0415 | E | 0x45
К | 10028 | 041A | K | 0x4B
Н | 10031 | 041D | H | 0x48
О | 10032 | 041E | O | 0x4F
Р | 10034 | 0420 | P | 0x50
С | 10035 | 0421 | C | 0x43
Т | 10036 | 0422 | T | 0x54
Х | 10039 | 0425 | X | 0x58
Ё | 10023 | 0401 | Edieresis | 0xCB
а | 10065 | 0430 | a | 0x61
е | 10070 | 0435 | e | 0x65
о | 10080 | 043E | o | 0x6F
р | 10082 | 0440 | p | 0x70
с | 10083 | 0441 | c | 0x63
у | 10085 | 0443 | y | 0x79
х | 10087 | 0445 | x | 0x78
ё | 10071 | 0451 | edieresis | 0xEB
Символы из WGL4
S | 10054 | 0405 | S | 0x53
I | 10055 | 0406 | I | 0x49
I: | 10056 | 0407 | Idieresis | 0xCF
J | 10057 | 0408 | J | 0x4A
s | 10102 | 0455 | s | 0x73
i | 10103 | 0456 | i | 0x69
i: | 10104 | 0457 | idieresis | 0xEF
j | 10105 | 0458 | j | 0x6A
Остальные символы из Unicode
|  | 04AA | Ccedilla | 0xC7
|  | 04AB | ccedilla | 0xE7
|  | 04AE | Y | 0x59
|  | 04E6 | Odieresis | 0xD6
|  | 04E7 | odieresis | 0xF6

### §3.2. Общие элементы и группы символов

#### §3.2.1. Псевдографика из диапазона 0x00-0x1F

Все эти символы изготавливаются на основе символа 0x0F `ldcross` путем удаления лишних элементов.

Сам символ `ldcross` получается путем наложения символов `minus` и `bar` и продолжения их линий до границ клетки символа. Такое решение наилучшим образом удовлетворяет потребности программ, которые используют псевдографические и "квазиграфические" (+, -, |) символы вперемежку, например, talk.

#### §3.2.2. Буквы "д" и "л"

#### 1. Бессерифовые шрифты

     ........ ........ ........ ......... ........
     ..####.. ...###.. ...###.. ....#.... .....#..
     ..#..#.. ..#..#.. ...#.#.. ...#.#... ....##..
     ..#..#.. ..#..#.. ...#.#.. ...#.#... ...#.#..
     ..#..#.. ..#..#.. ..#..#.. ..#...#.. ..#..#..
    _.######._.######._.######._.#######._.######._
     .#....#. .#....#. .#....#. .#.....#. .#....#.
     ........ ........ ........ ......... ........
        a        b        c        d         e

     ........ ........ ........ ......... ........
     ..####.. ...###.. ...###.. ....#.... .....#..
     ..#..#.. ..#..#.. ...#.#.. ...#.#... ....##..
     ..#..#.. ..#..#.. ...#.#.. ...#.#... ...#.#..
     ..#..#.. ..#..#.. ..#..#.. ..#...#.. ..#..#..
    _.#...#.._.#...#.._.#...#.._..#...#.._.#...#.._
     ........ ........ ........ ......... ........
        a        b        c        d         e
Варианты букв "д" и "л" в бессерифовых шрифтах

Варианты (a)-(c) используются довольно часто.

(d), казалось бы, является результатом простодушного получения "л" путем вертикального отображения "v" или удаления перекладины у "A". Но именно этот вариант исторически наиболее правильный -- ведь кириллица делалась на основе греческого алфавита, а "д" и "л" происходят от греческих "дельты" и "лямбды". Этот вариант широко применяется в современных шрифтах, и он рассматривался как кандидат для Lucida.

(e) же -- типичный пример бессистемного подхода к кириллизации шрифта (в принципе такое начертание иногда применяется в декоративных шрифтах, к примеру, в Baskerville [BASK_C], но оно совершенно неприемлемо в Times, Helvetica и подобных).

В шрифтах Lucida и LucidaTypewriter используется вариант (a) (он получил предпочтение перед (d) в основном в силу его выбора авторами семейства шрифтов Lucida [BH_DOUF,Figure1]).

В шрифтах `misc/` используется (b) в силу того, что этот вариант был наиболее распространен в моноширинных кириллических шрифтах еще в эпоху ЭВМ ЕС, PDP-11, MSX и подобных.

В шрифте Helvetica применяется "комбинация" из (a) и (c): в шрифтах малого размера -- (a), который с увеличением размера "плавно переходит" в (c).

#### 1. Шрифты с серифами

     ......... .........
     ..######. ..###....
     ...#..#.. ...#.#...
     ...#..#.. ...#.#...
     ..#...#.. ..#...#..
    _.#######._.#######._
     .#.....#. .#.....#.
     ......... .........
         a         b

     ......... .........
     ..######. ..###....
     ...#..#.. ...#.#...
     ...#..#.. ...#.#...
     .#.#..#.. ..#...#..
    _..#..###._.###.###._
     ......... .........
Варианты букв "д" и "л" в шрифтах с серифами

Реально рассматривались лишь два варианта. Поскольку в Times-подобных шрифтах издавна применяется (a), то он и был выбран для Times.

Для Courier вполне подходящим был бы вариант (b), при котором "Л" получается путем удаления горизонтальной черты у "А". Но, поскольку установилась практика, что Courier -- это шрифт, используемый взамен того, что применялся на пишущих машинках (каковым был вариант (a)), то для Courier также был выбран вариант (a).

#### §3.2.3. Заглавные буквы с акцентами

#### 1. Общие соображения

Акценты обычно занимают значительное место сверху символа, поэтому такие буквы в некоторых шрифтах ISO8859-1 имеют существенно меньшую высоту (особенно это касается шрифтов `misc/`).

При создании кириллических букв с акцентами следует учитывать два соображения. С одной стороны, вертикальные размеры всех заглавных букв с акцентами должны быть по возможности одинаковыми. С другой, для удобства чтения высота букв с акцентами должна быть максимально приближена к высоте букв без акцентов (в идеале акцент должен быть целиком расположен сверху прямоугольника буквы, а начертания одинаковых букв с акцентами и без должны совпадать).

В качестве компромисса было выбрано следующее решение. Кириллические буквы с западными акцентами "acute" ("'"), "grave" ("`") и т.п. имеют ту же высоту, что и буквы с акцентами из шрифта ISO8859-1 (к примеру, `Eacute`). Буквы же с акцентом "краткости" -- "И краткое" и "У краткое" являются копиями букв "И" и "У" соответственно, с высотой, уменьшенной в наименее возможной степени (но одинаково для обоих этих символов!).

В шрифтах малого размера, когда европейские символы с акцентами реально акцентов не имеют (к примеру, в `5x7.bdf` символ `Eacute` идентичен символу "E"), решение, делать ли акцент (или символ будет копией такого же без акцента) принимается в каждом конкретном случае отдельно, но по возможности акцент делается.

#### 2. Акцент "краткости"

Акцент "краткости" в русском языке вообще несколько отличается по статусу от акцентов в европейских языках. Дело в том, что, если в европейских языках одна и та же буква (например, "a") может в принципе иметь множество разных акцентов (grave, acute, circumflex, caron, tilde, umlaut/dieresis, dot, ring и т.д.), то над "и" в русском, украинском и беларусском языках может быть один-единственный акцент "краткости" -- breve. Как следствие, сложилась практика, когда для отличия "и краткого" от "и" достаточно просто любого значка. На рисунке приведено несколько самых часто встречающихся примеров.

     ....... ....... ....... ....... .......
     .#...#. ..#.#.. ....... ....... ....#..
     ..###.. ...#... ..###.. ...#... ...#...
     ....... ....... ....... ....... .......
     .#...#. .#...#. .#...#. .#...#. .#...#.
     .#..##. .#..##. .#..##. .#..##. .#..##.
     .#.#.#. .#.#.#. .#.#.#. .#.#.#. .#.#.#.
     .##..#. .##..#. .##..#. .##..#. .##..#.
    _.#...#._.#...#._.#...#._.#...#._.#...#._
     ....... ....... ....... ....... .......
      breve   caron   macron   dot    acute
Варианты буквы "и краткое"

Акцент "breve" является наиболее предпочтительным, но корректное его отображение при малом разрешении весьма затруднено -- такое "закругление" занимает слишком много места и выглядит слишком гипертрофированным (зачастую этим страдают шрифты, для создателей которых кириллица не является родным алфавитом).

     ........ ........
     .##..##. ........
     .##..##. .##...#.
     .#....#. .##..#..
     ..####.. ..###...
     ........ ........
      roman    italic
Варианты акцента для Times-шрифтов

В Times-подобных шрифтах этот акцент может выглядеть не просто как закругление, а как "соединенные хвостиками запятые".

"caron" может быть или маленьким вариантом "breve", или же "галочкой", отличающей "и краткое" от "и".

"macron" используется также или как уменьшенный вариант "breve" ("хвостики" как бы столь малы, что не видны), или как "значок" для отличия от "и".

"dot" применяется крайне редко, в основном, для символов очень малого размера, когда этот акцент может рассматриваться в качестве максимально уменьшенного варианта любого акцента.

И, наконец, "acute" применяется крайне редко (в основном в рукописных текстах). Этот вариант свидетельствует скорее о небрежности его использующего, т.к. обычно "acute" используется в качестве акцента "ударения", т.е. "и+acute" -- это "и, на которое падает ударение".

В CYR-RFX используется "breve" как наиболее правильный, за следующими исключениями шрифтов малого размера.

1. В шрифтах `misc/` (за исключением times-подобных `8x16` и `12x24`) применяется "macron".
2. В Lucida и LucidaTypewriter размера 12 и ниже, Times и Courier размера 10 и ниже применяется "macron", а в некоторых случаях -- "caron".

Использование "caron" в качестве уменьшенного "breve" совершенно безвредно, т.к. в кириллических символах "caron" не применяется вовсе.

При применении же "macron" учитывается то, что он, с одной стороны, применяется в "простых" шрифтах в русском, украинском и беларусском языках де-факто, а с другой стороны -- единственный случай, когда могла бы возникнуть визуальная неопределенность -- таджикские буквы "и+macron" и "у+macron" (`U+04E2/U+04E3`, `U+04EE/U+04EF`) [PISKA]. Причем, поскольку "у+breve" в таджикском отсутствует, то остается лишь "и+breve"<->"и+macron". Так как эти символы не входят в основной набор, поддерживаемый CYR-RFX, то неопределенностью было решено пренебречь. (В тех шрифтах, которые содержат более полный набор символов U0400, имеются дополнительные варианты "и+breve" и "у+breve", используемые в кодировке iso10646-0400.)

Горизонтальная часть "breve", используемого в "и кратком", почти всегда имеет ту же толщину, что и горизонтальные линии в символах. Таким образом, к примеру, в шрифтах `courB{18,24}` вид акцента в "и кратком" отличается от символа "breve" (имеющегося в разделе unencoded glyphs). Такой подход позволяет добиться более "целостного" вида шрифта.

    НАПОМИНАНИЕ: 1. а "ЙО"?
                 2. упомянуть "Гupturn"

#### §3.2.4. Нижние выступы у букв "Д", "Ц", "Щ" и подобных

#### §3.2.5. Вертикальная черта при "К" и "Ч"

#### §3.2.6. "Крючок" при "Г", "П" и "К"

#### §3.2.7. Двухбуквенные лигатуры "НЬ", "ЛЬ" и подобные

### §3.3. Отдельные символы

Русские символы упорядочены по алфавиту, остальные идут за ними в порядке заглавных букв кодировки Unicode. Строчная буква (если есть и отдельно от заглавной) идет сразу после заглавной.

#### "DJE":0402:afii10051, "dje":0452:afii10099

Данные символы получались из "TSHE":040B и "tshe":045B соответственно путем "заворота" конца правой нижней линии влево.

В разных гарнитурах конец правой "кривой" у "DJE" может или располагаться на базовой линии (Computer Modern, Lucida, шрифты от Microsoft) или же выступать вниз на то же расстояние, что и у "j" (шрифт от Adobe, использованный в [5013]).

В CYR-RFX в шрифтах Times (включая `8x16` и `12x24`) он сделан выступающим вниз по образцу Adobe, а в остальных -- на базовой линии.

#### "НЬ":040A:afii10059, "нь":045A:afii10107

     .......   .......    .......
     .#...#.   .#.....    .#.#...
     .#...#.   .#.....    .#.#...
     .#...#.   .####..    .####..
     .#####. + .#...#. -> .#.#.#.
     .#...#.   .#...#.    .#.#.#.
     .#...#.   .#...#.    .#.#.#.
     .#...#.   .####..    .#.##..
     .......   .......    .......
Создание "НЬ"

Интересная проблема возникает при создании символов "НЬ" и "нь". Казалось бы, следует просто "слить" начертания "Н" и "Ь", чтобы правая вертикальная линия "Н" совпала с левой вертикальной от "Ь". Но горизонтальная линия в "Н" может быть расположена на иной высоте, чем верхняя линия закругления в "Ь" (обычно ниже; пример -- `10x20.bdf`), а в "НЬ" они должны образовывать единую линию. Наилучшим выходом представляется перенос линии в "Н" на ту же высоту, что и в "Ь".

#### "DZHE":040F:afii10145, "dzhe":045F:afii10193

Данные символы получаются путем вертикального отображения символов "П"/"п" и добавления выступа снизу по центру. Если символ имеет четную ширину, а толщина линий -- нечетная (medium-шрифты, к примеру, `7x13.bdf`), или же символ имеет нечетную ширину, а толщина линий -- четная (например, `8x13B.bdf`), то выступ смещается вправо.

Кроме того, в малых шрифтах, когда размер выступа у букв "ц" и "щ" -- 1 пиксел, а вертикальная линия в букве "p" выступает вниз от базовой линии на 2 пиксела, то для заметности размер выступа у "DZHE/dzhe" -- 2 пиксела.

#### "ЯТЬ":0462:afii10146, "ять":0463:afii10194

Эти символы получаются из "Ъ"/"ъ".

У заглавной буквы просто добавляется горизонтальная черта примерно на середине выступающей вверх линии, а "хвостик" от "Ъ" удаляется (заменяясь обычной небольшой чертой у серифовых шрифтов).

У строчной буквы вертикальная линия вытягивается до такой же высоты, как у "b". Затем добавляется горизонтальная черта на высоте x-height (т.е. там же, где и у "ъ", только в обе стороны).

## Литература

[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]

  А. Чернов, "KOI8-R - Русская Сетевая Кодировка".
  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/
  (см. также файл `README.set`)

[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]

  Е.Бырганов, "Описание кодировки для работы в среде X11 на русском языке", 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
  (Вероятно, лучшей работой является [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)], но у меня нет к ней доступа.)

[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]

  К.М. Мусаев, "Алфавиты языков народов СССР", Москва, "Наука", 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