Национальный вопрос в Adobe (полная версия)
АрхивОфисные приложения (архив)Проблемы корректной работы шрифтов в последних версиях программ от Adobe волнуют не только русских, но и других пользователей национальных кодировок. Этому можно помочь – с помощью некоторых простых, но неочевидных действий.
Если бы Кирилл и Мефодий предвидели, с какими трудностями столкнутся потомки славянских народов в эпоху компьютеризации, они бы дважды подумали, прежде чем создавать свой стандарт кодировки символов — кириллицу. Впрочем, был еще более экзотический вариант — не мефодьица, как можно было бы ожидать в наш просвещенный век торжества копирайта, но глаголица, которая к кириллице относилась примерно так же, как КОИ-8 относится к Win-1251. Из-за проблем с поддержкой в браузерах чрезвычайно ранних версий глаголица была успешно забыта, и остался лишь один вариант, известный нам ныне как кириллица. До наших дней дошла сильно переработанная и усеченная версия этого набора знаков для кодировки славянской письменности, но все же даже такой упрощенный вариант кодовой страницы встречает упорное непонимание у целого ряда программ, в частности, известных пакетов от фирмы Adobe.
Исторически сложилось так, что родным языком создателей ЭВМ, увы, был английский. И первым языком, появившимся на дисплеях, был английский, а точнее — базовый набор латинских букв. Одному отображаемому на экране символу соответствовал один байт. В его 256 значений прекрасно укладывался весь английский алфавит, с заглавными и прописными, знаками препинания и служебными символами, не предназначенными для появления на экране (отсюда пошло выражение «непечатные слова»). Но у байта оставалось еще масса свободных значений, которые решено было использовать для кодировки всякой всячины: элементов простой графики, знаков валют, некоторых малоиспользуемых символов.
Благодарные пользователи языков, использующих другие (или немного другие) алфавиты, для кодировки своего языка выкидывали эту всячину и замещали ее национальными символами. Так, один и тот же шрифт мог нести в себе как латинские, так и национальные символы, в том числе и кириллицу. Это была золотая эра однобайтовых шрифтов, без проблем работавших как в офисных, так и в графических программах. Немного портило картину разногласие между операционными системами DOS\Windows\Unix\Mac в том, какие значения каким символам соответствуют. Но в целом все было нормально.
И тут программисты, конечно же, в неустанной заботе о пользователях, придумали совершенно гениальный вариант кодировки символов. Для одного символа было решено использовать не один, а два байта (65535 вариантов числовых значений), что по идее означало возможность создания шрифта, универсального для всех языков (немногим больше тысячи на данном этапе истории). О том, как трудно придумать и создать 65535 написаний символов для разных языков, соблюдающих еще и стиль, и внешние признаки данного шрифта, программисты почему-то не подумали. В ряд с вечными проблемами отцов и детей, преступления и наказания надо поставить еще одну — проблему программистов и дизайнеров!
Этот метод был назван кодировкой Unicode. Счета были подписаны, работа закипела, и один за другим начали появляться соответствующие шрифты, программы и операционные системы, поддерживающие новый стандарт.
Обычный шрифт Times New Roman, к примеру, в формате Unicode содержит символы для множества национальных алфавитов: английского (само собой), греческого, русского, турецкого и других. Программа, поддерживающая Unicode-шрифты, выбирает нужный вариант в зависимости от предпочтений пользователя (реально — от установок операционной системы). Так работают последние версии Microsoft Office.
Проблема в том, что ряд программ отказывается понимать Unicode-шрифты. И среди них не случайно оказались программы от Adobe. Дело в том, что Unicode-шрифты сейчас реализуются по технологии TrueType, а программы Adobe традиционно ориентируются на работу со шрифтами Type I. И если у вас установлены национальные шрифты в формате Type I, корректные, как минимум укра… взятые из хорошего места, а еще лучше — купленные у производителя, никаких проблем с программами Adobe возникнуть не должно.
Но пользователей TrueType шрифтов, как правило, ждут неприятные сюрпризы, связанные с поддержкой русских символов в Adobe Photoshop, Indesign, и, что особенно неприятно, в Illustrator и при выводе файлов PDF из Pagemaker и Framemaker. Рассмотрим некоторые аспекты национальной шрифтовой проблемы и возможные методы борьбы с ней.
Как уже было сказано, Adobe-программы сильно ориентированы на использование шрифтов Type I, а точнее, технологии Postscript — формата и языка графического программирования, если можно так выразиться. Поэтому в операционной системе должны быть установлены:
- Adobe Type Manager 4.хх, желательно Deluxe — для поддержки шрифтов Type I.
- Сами шрифты Type I.
- Драйверы AdobePS — для корректной работы Postscript. И хотя в Windows уже включены драйверы для Postscript (производства «Билл и Ко»), для серьезной работы хорошо бы иметь установленные драйвера от Adobe (кому как не им знать всю подноготную Postscript). Эти драйвера скачиваются бесплатно с сайта Adobe.
Illustrator 9, Photoshop 5.x, Indesign
Особую нелюбовь к национальным кодировкам проявляет девятая версия Adobe Illustrator. По стечению обстоятельств, эта же программа сейчас претендует на место самого мощного векторного редактора.
Начнем с того, что программа категорически отказывается перезаписывать файл в своем девятом формате, если путь назначения содержит расширенные или национальные символы (кириллицу, умляуты и прочую местную символику). От этого страдают в одинаковой мере и русские дизайнеры, и чешские, и далекий дон Педро вытирает пот со лба в солнечной Бразилии, безуспешно пытаясь повторно сохранить файл с португальским названием.
Ну не любят они нас, не любят. Хотят, наверно, чтобы все учили, разговаривали и писали только на английском. Стремление, конечно, в некотором роде похвальное, но как же тогда быть с национальной самобытностью? Как объяснить тот факт, что использование национальных символов в полном имени файла (включая путь), приводит к ошибке сохранения? Эта проблема отмечается как на разного рода Windows, так и на Маках. Возмущенные поклонники Apple гневно кричат в форумах: «Эй, Adobe! Это Мак, не Windows!!»
Современный Illustrator, видите ли, использует версию формата PDF, да не простую, а модифицированную и не может записывать в папки с расширенными символами. А в расширенные символы попадают все национальные шрифты, кроме английского: французские, немецкие, итальянские, восточноевропейские, русские. Я был просто поражен, увидев на международных форумах, что «у них» такие же проблемы. Это касается и сохранения файлов, и TrueType-шрифтов, о которых речь пойдет дальше. Те же яйца, только в профиль!
Официально Adobe пока рекомендует три способа решения проблемы (www.adobe.com/support/database.html, документ 325878):
- Использовать не Save…, а Save As… команду.
- Записывать в директорию, чье полное имя не содержит расширенных символов.
- Записывать файл как EPS.
Неофициально же на тех же Adobe User-to-User форумах наученные горьким опытом дизайнеры уже делятся мнением, что лучше вообще не использовать символы, не входящие в стандартный английский алфавит. Вот так. Независимо от языка, цвета кожи и вероисповедания.
Есть еще один недокументированный способ — сохранять файл в формате Illustrator 8. Метод многократно апробирован лично, но не позволяет сохранять эффекты девятой версии, что неудобно.
Кто-нибудь видел русские TrueType шрифты в Illustrator?
Я видел. Сначала, когда мы установили на Win2000 новый девятый Illustrator, все шло прекрасно. Те немногие TrueType-шрифты, которые у нас были, нормально отображались на экране, как английской, так и русской частью. Список шрифтов был поделен на несколько частей — по национальным кодировкам, кириллические обозначались как Arial — Cyrillic и все было замечательно. Поскольку мы старались их особо не использовать, то как-то не обратили внимание на исчезновение кириллической составляющей с установкой новых патчей 9.01 и 9.02. Только краем глаза, читая документацию по патчам, я отметил, что производитель заявлял о решении проблемы с некоторыми (!) восточно-европейскими шрифтами. Не знаю, как там с восточно-европейскими, а вот кириллические после апдейтов наотрез отказались появляться.
Проблема проявлялась в следующем: Illustrator не показывал в меню и в палитре шрифтов национальные шрифты TrueType. К примеру, Times New Roman, поддерживающий стандарт многоязычной кодировки Unicode, может иметь в своем составе наборы для греческого, турецкого, восточно-европейских и русского языков. Соответствующие наборы отображаются в нормальных программах как шрифты Times New Roman CE, Times New Roman Cyr, и Times New Roman Greek — если в операционной системе установлена поддержка соответствующих национальных стандартов. Но Illustrator показывает только Times New Roman. Если импортировать или вклеить из буфера обмена текст с этими шрифтами в Illustrator, текст будет отображаться как набор специальных символов (скажем, квадратов). Если вы попытаетесь набрать национальный текст с помощью того же Times New Roman, даже переключив раскладку клавиатуры, текст будет отображаться как набор дополнительных символов латиницы.
Попытка набрать русский текст шрифтом Unicode в Adobe Illustrator 9 (Win2000). До исправления файла AdobeFnt.lst
Официально Adobe заявляет, что Illustrator 9 не поддерживает интернациональные шрифты TrueType, даже если в операционной системе установлены все необходимое. Поддерживается только китайские, японские и корейские шрифты. По умолчанию программа поддерживает только романские языки — базовый набор латинского алфавита.
Полазив по Сети, я нашел, что проблема опять-таки имеется не только у русскоязычных пользователей, но и у всех, кто пользуется национальной кодировкой, отличной от романских языков. Интересно, что «наши» чаще всего советуют править реестр Windows, а «не наши» спрашивают, а правильно ли вы все сделали: установили Adobe Type Manager Deluxe, использовали качественный шрифт от производителя и так далее. Практически «за рубежом» реестр Windows не упоминается в принципе. Особенности национального пользования компьютерами?
Первый способ справиться с этим — отредактировать реестр Windows. Делается это так:
- Открываем реестр, ищем ветвь HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Control\ Nls\ Codepage
- Открываем параметр 1252 и устанавливаем его значение в «CP_1251.nls» — как у параметра 1251.
- Закрываем реестр.
Метод апробировался в системах Win9x. Хотя этот способ встречается в советах чаще других, рекомендую им не пользоваться. Во-первых, не стоит будить спящего зверя, то есть лишний раз ковыряться в реестре. Во-вторых, этот способ не всегда помогает в случае с Photoshop, а для Illustrator 9 — как правило, бесполезен.
Вместо этого можно воспользоваться вторым методом, суть которого заключена в одном хитром файле по имение Adobefnt.lst. Таких файлов в системе с установленным Illustrator и Adobe Type Manager Deluxe несколько, но ключевую роль играет только один. Файл содержит описания шрифтов, установленных в системе, включая кодировки, и перезаписывается при каждом запуске Illustrator или установке новых шрифтов. Вот метод, как получить нормальное отображение TrueType шрифтов в Illustrator 9:
- Используя текстовый редактор, откройте файл AdobeFnt.lst, находящийся в директории Program Files/Common Files/Adobe/Typspt. Именно в указанной папке!
- В файле Adobefnt.lst перечисляются шрифты и их свойства. В описании каждого шрифта имеется строка по имение WritingScript. Найдите ее. По идее она должна указывать кодировку шрифта: «WritingScript:Cyrillic». Но именно из-за этой строки национальные шрифты Unicode в WinMe\NT4\2000 отображаются неправильно.
- Поменяйте название кодировки на «Roman» для всех проблемных шрифтов: «WritingScript:Roman».
- Запишите все изменения, закройте файл.
- Сделав все операции, установите на файле атрибут «Только для чтения» (Read only). Если вы пользуетесь проводником Windows, это легко будет сделать, щелкнув правой кнопкой по файлу и выбрав из меню «Свойства» (Properties).
Набор русского текста шрифтом Unicode в Adobe Illustrator 9 (Win2000). После исправления файла AdobeFnt.lst
Теперь Illustrator при своем запуске открывает этот файл, читает имена шрифтов и их свойства. Если шрифт в системе есть, а в файле сведений о нем нет, программа обращается к системе за получением необходимых сведений. Так «Иллюстратор» достает из системы национальные символы. Они появляются в списках шрифтов отдельной группой с добавлением в конце имени сокращения «Cyrillic».
Отображение национальных Unicode-шрифтов в палитре Adobe Illustrator 9 (Win2000). После исправления файла AdobeFnt.lst
Функция Adobefnt.lst — в ускорении загрузки Illustrator: чтение файла происходит быстрее, чем процеживание системных данных. Если у вас вдруг появится большое количество шрифтов (вы их нечаянно установите), не прописанных в Adobefnt.lst, запуск программы будет происходить медленнее. Тогда надо будет разблокировать файл Adobefnt.lst (снять свойство «только для чтения»), перезапустить Illustrator, закрыть его и снова отредактировать и заблокировать файл Adobefnt.lst.
Описанный метод решает проблемы не только с девятым Иллюстратором, но и с Photoshop 5.x, и с Adobe Indesign. Он успешно использовался и доказал свою жизнеспособность на платформах Win2000\NT.
Pagemaker, Framemaker и Acrobat 4.x с PDF
Со шрифтами Unicode связана также проблема русских bookmarks в документах PDF, подготовленных с помощью программ Adobe Pagemaker и Adobe Framemaker. Эти две очень мощные программы верстки попались на том, что в PDF, полученных из них (методом печати в файл и использования Acrobar Distiller), вместо русских букв в bookmarks выводятся «кракозябры», по народному выражению на форумах.
Видите ли, Adobe Acrobat 4 и старше использует Unicode-кодировку для bookmark, а Pagemaker и Framemaker записывают заголовки (bookmark) в кодировке Win-1251. Акробат читает однобайтовые кодировки символов, думает, что они — из нулевой страницы Unicode (которая использует 2 байта), и рисует кракозябры из латинской части шрифта. В то время как кириллические символы находятся в 4 странице Unicode. Это просто какой-то анекдот про охоту на страусов в Австралии (краткое содержание: бежит страус, видит лысину туземца, закопавшегося в песок, думает — это его яйцо, садится, тут его и хватают).
Решить проблему можно, вручную отредактировав коды в PS-файле, или с помощью переопределения оператора pdfmark. Описание метода можно найти на сайте Adobe.Ru в разделе, посвященном Adobe Acrobat.
Из прочих неприятностей следует отметить отказ Framemaker работать с юникодными шрифтами. Жалоб на Pagemaker пока не поступало.
«Нехорошие» Type I
Ряд Type I шрифтов работает в Illustrator с ошибками. Это некоторые шрифты из старой коллекции ParaType (OlgaC, TatianaC). В новых коллекциях они работают корректно. Критерий правильности шрифта — правильное описание расширенного набора символов. Если вы откроете файл шрифта с расширением PFB, то ближе к началу обнаружатся строки типа:
dup 140 /afii10059 put
dup 141 /afii10061 put
dup 142 /afii10060 put
Хорошие кириллические шрифты, как показано, должны содержать строки /afii100xx. Все остальное — от лукавого.
Заключение
К сожалению, я не смог на личном опыте проверить все семейство Adobe на совместимость со шрифтами Unicode. Главная причина — это, конечно, то, что в работе я использую Postscript-шрифты (Type I, если угодно). Но подозреваю, что в случае необходимости многие проблемы можно решить именно с помощью правки файла AdobeFnt.lst, учитывая его глобальное значение для программ Adobe.