Интернет-журнал 'Домашняя лаборатория', 2007 №3 - Мёрфи
Шрифт:
Интервал:
Закладка:
В шрифте Unicode имеется как бы несколько кодовых страниц сразу. Вот, к примеру, состав Unicode-шрифта Times New Roman (рис. 13.4).
Рис. 13.4. Содержимое шрифта Times New Roman, соответствующего стандарту Unicode, в окне Word97 "Вставка символа"
Вы видите в правом углу диалогового окна Word "Вставка символа" список региональных кодовых страниц, представленных в этом шрифте. Для того, чтобы программы, не поддерживающие стандарт Unicode (например, Microsoft Word 6.0), могли работать с такими шрифтами, операционная система осуществляет так называемую "подстановку шрифтов", то есть "раскладывает" шрифт Unicode на отдельные кодовые страницы и выбирает из него ту страницу, которая соответствует установленной в системе. Параметры подстановки прописываются в системном реестре, а в операционных системах Windows9x — ив файле Win.ini (рис. 13.5).
Рис. 13.5. Подстановка шрифтов в файле Win.ini.
Смысл находящихся в системном реестре и в файле win.ini выражений — указание программам на то, где в шрифте искать символы, соответствующие нужной кодовой странице. Так, для шрифта Times New Roman эти символы (кириллица) начинаются с 204-го места, что и указано в Win.ini. Теперь Microsoft Word 6.0 спокойно будет работать с Unicode — шрифтом Times New Roman, воспринимая его как обычный кириллический шрифт. При этом в восприятии этого текстового редактора шрифт Times New Roman окажется как бы "разложенным" на набор шрифтов (Times New Roman Cyr, Times New Roman СЕ и др.), каждый из которых будет соответствовать определенной кодовой странице, несмотря на то, что все эти "шрифты" хранятся в одном файле.
Иногда встречается ситуация, когда Microsoft Word 97 вполне нормально отображает на экране текст, но на принтер выводится набор квадратиков. Это вот как раз проявляется некорректное взаимодействие программного обеспечения, когда одни компоненты (Word97) поддерживают новый стандарт, а другие (драйвера к принтеру) — нет[29].
Существуют русские шрифты, полностью совместимые с стандартом Unicode, которые без проблем отображаются и печатаются как в старых, так и в новых программах. Они содержат только стандартный набор символов, соответствующий русской кодовой странице и отличаются еще красивым их дизайном. В выпадающем меню выбора шрифта они обычно имеют префикс "а " (рис. 13.6).
Рис. 13.6. Шрифты Unicode — работают везде.
Koi-8
В то время как на рынке операционных систем для персональных компьютеров безоговорочную победу одержала всем нам знакомая MS-DOS, среди операционных систем для сетей дело обстояло не так. Там начинала властвовать Unix — операционная система, построенная на несколько других принципах. Эта система имела открытый исходный код — любой программист мог создать "свою" Unix, настроенную именно на его предпочтения, была очень удобна для программирования. И эта операционная система весьма бурно развивалась в своей отрасли — объединении компьютеров в единое целое. Понятие о кодовой странице в Unix имело несколько другое значение, но на этом сейчас останавливаться не стоит.
С развитием сетевых технологий возникла тенденция к объединению не только компьютеров, расположенных в одном месте, в локальные сети, но и самих этих сетей в некое единое целое. Начала зарождаться Всемирная Сеть — Internet. И одной из первых возможностей объединенной сети стала возможность обмена информацией посредством текстовых сообщений — электронная почта, e-mail.
Для работы с электронной почтой, ее передачи и приема, сортировки и разработки маршрута движения были созданы специальные системы — почтовые сервера. Сам по себе "почтовый сервер" — это программа, постоянно работающая на компьютере и выполняющая задачи по обработке почты, поступающей на компьютер, на котором она запушена, из Сети и отправляющая почту в Сеть. (Однако нередко для работы такой программы выделялся отдельный компьютер.) Чаще всего они работали под управлением операционной системы Unix.
Всемирная Сеть изначально зародилась и начала развиваться в Америке. Поэтому вся система почтовых серверов вначале была предназначена для работы с почтой англоязычных пользователей, пишущих также англоязычным адресатам. Так как использование в текстовых сообщениях, которые составляли тогда единственное содержимое электронной почты, символов псевдографики было отнюдь не обязательно (хватит и простого текста!), то программы, работающие с электронной почтой, как на компьютерах пользователей, так и на почтовых серверах, делались в расчете на первую половину кодовой страницы — на семибитную кодировку.
Ясно, что текстовые сообщения, содержащие символы с кодами, большими 127 и не могущие быть закодированы семью битами, нормально такими серверами обрабатываться не могли. Для того, чтобы такие письма все же как-нибудь проходили через семибитные почтовые серверы, символы сообщений принудительно приводились к семибитному виду — у них обнулялся первый бит, указывающий на половину их кодовой страницы. Например, символ "е" (русская буква е) переходил в "f", символ "ш" — в "у". Дальше шло уже обработанное таким образом письмо.
Если бы все почтовые сервера тогда были восьмибитные (то есть умеющие корректно работать с символами второй половины кодовой страницы), то пересылка через них русскоязычной почты не составляла бы проблем — лишь бы компьютеры отправителя и получателя поддерживали бы русскую кодовую страницу (или, в случае операционной системы Windows, и отправитель, и получатель имели бы шрифт с русскими символами). Ну и пусть в пути письмо не могло быть никем прочитано, у кого нет русской кодовой страницы (оно отобразилось бы на их компьютерах как мешанина символов) — даже лучше! Но обрезающие письма сервера не позволяли так делать.
Выходы были. Первый, самый тогда распространенный — писать письмо транслитом, latinskimi bukvami. Некрасиво и плохо читаемо, зато надежно — дойдет в исходном виде всегда. Но, поскольку все же не все почтовые сервера были семибитные, была создана специальная кодировка для электронной почты, которая отличалась тем, что на места, соответствующие кодам символов, большим 127, были поставлены русские символы, похожие по звучанию на английские буквы на местах, соответствующих кодам символов, меньших на 128. Иными словами, в этой новой кодировке коды 225, 226, 227, 228 соответствовали символам "а", "б", "ц", "д", которые при семибитном преобразовании перешли бы в коды 97, 98, 99, 100, соответствующие английским буквам "а", "Ь", "с", "d". Слово "привет", написанное в новой кодировке, пройдя через семибитный почтовый сервер, перешло бы в слово "PRIWET", что еще хоть как-то читаемо. Ну, а если письму бы повезло и на его пути не встретились бы семибитные сервера, то оно