248
Наиболее типичные проблемы при работе со шрифтами
и одновременно несколько номеров в соответствии с различными кодиров¬
ками. Еще до появления шрифтов TrueType начинают использоваться
двухбайтовые и четырехбайтовые кодировки. Двухбайтовая кодировка
может определять 216, то есть шестьдесят пять с половиной тысяч номеров.
Самой известной из двухбайтовых кодировок стал стандарт Unicode.
Символ имеет свой номер по ANSI (однобайтовый стандарт) и принад¬
лежит определенной кодовой странице. Одновременно он может иметь
номер по Unicode и относиться к определенному его диапазону. У шрифта
может быть (но необязательно) маркировка существующих в нем кодовых
страниц и диапазонов Unicode.
В тексте же по-прежнему (вплоть до версии Word 7.0 включительно)
должны стоять однобайтовые номера. Драйвер клавиатуры также генери¬
рует однобайтовые коды на основании скан-кодов клавиш (за исключени¬
ем Windows NT, которая целиком работает с двухбайтовыми кодами). По¬
этому происходит отображение некоторой части шрифта в окно из 256
символов. Эту операцию производит модуль под названием Graphic Device
Interface (gdi.exe).
Используя определенную таблицу соответствий, gdi.exe переводит двух¬
байтовые номера из некоторого диапазона Unicode в однобайтовые номе¬
ра кодовой страницы. Если номеров по Unicode нет, принимается, что стар¬
ший из двух байт равен нулю. Тогда однобайтовые номера совпадут
с двухбайтовыми. Этот диапазон соответствует кодовой странице 1252 (за¬
падноевропейская латиница).
Указание на кодовую страницу также необязательно присутствует
в шрифте. Если шрифт не имеет маркировки кодовых страниц и диапазо¬
нов символов, будет выбрана страница по умолчанию (опять 1252). Как ни
странно, это не означает, что данный шрифт нельзя использовать для рус¬
ского текста. Напротив, с такими шрифтами (а их довольно много) вплоть
до версии Word 8.0 исключительно не возникало никаких проблем при
русскоязычном наборе. Ларчик открывается просто: русские символы сто¬
ят в них на месте дополнительных знаков западноевропейских шрифтов.
(Как было сказано выше, такой же способ решения проблемы использо¬
вался при работе в DOS.) В данном случае пользователь не заподозрит
подвоха, пока не попытается выделить таким шрифтом, например, русско-
немецкий текст. Как вы уже догадались, вместо знаков с надстрочными
символами появятся русские буквы.
Возможна ситуация, когда существующую маркировку кодовой страни¬
цы не будет воспринимать данная версия gdi.exe. Это происходит, к приме¬
ру, при установке шрифтов из русской версии Windows З.іх в английские
Проблемы с русскими шрифтами в Office 97
249
Windows. Здесь изумленный пользователь, наверное, впервые увидел на
экране пресловутые квадратики. Данная проблема (если она для кого-либо
еще актуальна) обычно решается копированием в английские версии
Windows файла gdi.exe из русских версий Windows. Таким образом, даже
если в шрифте есть соответствующие символы, но отсутствует информа¬
ция о наличии данного диапазона, вместо положенных знаков будут по¬
являться квадратики.
В составе первых версий Windows 95 появились шрифты, где указан
список заполненных диапазонов Unicode (Times New Roman, Arial, Courier
New). В программе WordPad один такой шрифт выглядит как список из
нескольких шрифтов: Times New Roman (Балтийский), Times New Roman
(Западноевропейский), Times New Roman (Кириллица) и т. д. Для совме¬
стимости со старыми версиями программ необходима имитация установ¬
ки национальных вариантов шрифта (знакомых по локализованным вер¬
сиям Windows З.іх), например, Arial, Arial СЕ, Arial Cyr. Это достигается
добавлением следующих строк в разделе [FontSubstitutes] файла win.ini:
Arial Cyr,204=Arial,204
Arial Cyr,0=Arial,204
Arial CE,238=Arial,238
Arial Baltic,186=Arial,186
Arial Greek, 161=Arial, 161
Arial Tur,162=Arial,162
Слева — название шрифта и номер — маркер (сигнатура) соответству¬
ющей кодовой страницы, воспринимаемые приложением (отсутствие
маркировки — сигнатура 0). После знака равенства следует название ре¬
ально установленного шрифта и сигнатура загружаемой кодовой страни¬
цы. В табл. 8.1. приведен полный список сигнатур.
За последние несколько лет появилось несколько десятков шрифтов
(довольно широко известных фирм-производителей), содержащих пере¬
численные выше и некоторые другие диапазоны символов. Например, это
шрифты фирмы Bitstream, имеющие суффикс имени: Win95BT Чтобы по¬
лучить возможность использовать национальную часть шрифта не только
при работе в Word 8.0, но и из других программ, скажем, CorelDraw 7.0,
необходимо внести соответствующую строку в раздел [FontSubstitutes] так
же, как было указано выше для шрифта Arial. Так, для шрифта Baskerville
строка выглядит следующим образом:
Baskerville Win95BT Cyr,204=Baskerville Win95BT,204