Кодировки национальных шрифтов - поиски и решения

В заметке рассматриваются три варианта кодировки дополнительных букв языков России и СНГ, основанные на кодовой странице Windows 1251. Кроме них, встречаются шрифты, в которых национальный алфавит заменяет основную латиницу (например, некоторые азербайджанские и таджикские шрифты), основную кириллицу (азербайджанские шрифты, в которых отсутствуют некоторые русские буквы), а также шрифты, основанные на других кодовых страницах. Такие варианты мы не можем считать приемлемыми для платформ Windows.

Решение № 1

Дополнительные буквы заменяют символы в пределах "Basic Latin" (Unicode 0020-007F). Например, тувинские шрифты, в которых буквы "О", "о" с черточкой, "Н", "н" с хвостиком и прямые "У", "у" заменяют символы "{", "|", "}", "[", "\", "]".

Плюсы:

  • "Дуракоустойчивость" такой кодировки. Дополнительные буквы будут всегда показаны правильно.
  • Возможность набора дополнительных букв без специальной раскладки клавиатуры.

Минусы:

  • Отсутствие символов, которые могут оказаться необходимыми.
  • Проблемы со чтением текста, набранного национальным шрифтом, при отсутствии такового.
  • Невозможность операций с большими и маленькими буквами ("change case" и др.).

Решение № 2

Дополнительные буквы заменяют белорусские, македонские, сербские и украинские буквы на кодовой странице Windows 1251. Например, стандартные татарские шрифты.

Плюсы:

  • Большее соответствие потребностям пользователей. Скажем, марийцу вполне могут потребоваться квадратные скобки, но вряд ли окажется нужной сербская буква "ђ".
  • Текст, набранный национальным шрифтом, можно в какой-то мере читать и при отсутствии такового. Для этого следует искать форменные соответствия букв - например, букву "у" с точками положить на место краткого "у".
  • Возможность операций с большими и маленькими буквами ("change case" и др.).

Минусы:

  • Отсутствие белорусских, македонских, сербских, украинских букв.
  • Необходимость специальной раскладки клавиатуры для набора дополнительных букв.

Другие замечания:

  • Для обеспечения работы шрифта как в новых, юникодовых, так и в старых, неюникодовых программах (вернее, в программах, которые не поддерживают разные кодовые страницы), кириллическую кодировку с дополнительными буквами следует дублировать на месте западноевропейской кодировки (Windows 1252).
  • Лишь при использовании позиций нерусских кириллических букв (14 больших и 14 маленьких) будет опеспечена работа некоторых технических функций (одновременный поиск слов с маленькими и большими буквами, автоматическая замена маленьких букв заглавными и др.). Предостерегающим примером является шрифт, в котором дополнительные буквы расположены вместо символов "–" и "—" (Unicode 2013 и 2014). В конце строки слова, содержащие эти буквы, будут автоматически разделены на две части.
  • При наличии местного стандарта следует ориентироваться на него.

Решение № 3

Дополнительные буквы расположены на своих юникодовых позициях. Например, Шрифт Arial MS Unicode, последние версии шрифтов Arial, Courier New, Times New Roman.

Плюсы:

  • Соответствие международному стандарту.

Минусы:

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

В данный момент, на наш взгляд, идеальным решением кодировки национальных шрифтов является вариант № 2, но с добавлением юникодовых позиций дополнительных букв. Такие шрифты обеспечивают возможность работы на всех платформах Windows, практически во всех программах для этих платформ, а также плавный переход на международный стандарт Unicode.


Автор проекта [email protected]