Архивы: по дате | по разделам | по авторам

Национальный вопрос в Adobe (полная версия)

АрхивОфисные приложения (архив)
автор : Сергей Токарев (eSTet)   02.07.2001

Проблемы корректной работы шрифтов в последних версиях программ от 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 — формата и языка графического программирования, если можно так выразиться. Поэтому в операционной системе должны быть установлены:

  1. Adobe Type Manager 4.хх, желательно Deluxe — для поддержки шрифтов Type I.
  2. Сами шрифты Type I.
  3. Драйверы 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):

  1. Использовать не Save…, а Save As… команду.
  2. Записывать в директорию, чье полное имя не содержит расширенных символов.
  3. Записывать файл как 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. Делается это так:

  1. Открываем реестр, ищем ветвь HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Control\ Nls\ Codepage
  2. Открываем параметр 1252 и устанавливаем его значение в «CP_1251.nls» — как у параметра 1251.
  3. Закрываем реестр.

Метод апробировался в системах Win9x. Хотя этот способ встречается в советах чаще других, рекомендую им не пользоваться. Во-первых, не стоит будить спящего зверя, то есть лишний раз ковыряться в реестре. Во-вторых, этот способ не всегда помогает в случае с Photoshop, а для Illustrator 9 — как правило, бесполезен.

Вместо этого можно воспользоваться вторым методом, суть которого заключена в одном хитром файле по имение Adobefnt.lst. Таких файлов в системе с установленным Illustrator и Adobe Type Manager Deluxe несколько, но ключевую роль играет только один. Файл содержит описания шрифтов, установленных в системе, включая кодировки, и перезаписывается при каждом запуске Illustrator или установке новых шрифтов. Вот метод, как получить нормальное отображение TrueType шрифтов в Illustrator 9:

  1. Используя текстовый редактор, откройте файл AdobeFnt.lst, находящийся в директории Program Files/Common Files/Adobe/Typspt. Именно в указанной папке!
  2. В файле Adobefnt.lst перечисляются шрифты и их свойства. В описании каждого шрифта имеется строка по имение WritingScript. Найдите ее. По идее она должна указывать кодировку шрифта: «WritingScript:Cyrillic». Но именно из-за этой строки национальные шрифты Unicode в WinMe\NT4\2000 отображаются неправильно.
  3. Поменяйте название кодировки на «Roman» для всех проблемных шрифтов: «WritingScript:Roman».
  4. Запишите все изменения, закройте файл.
  5. Сделав все операции, установите на файле атрибут «Только для чтения» (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.

© ООО "Компьютерра-Онлайн", 1997-2022
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.