Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Квадраты из Офиса-97

div.main {margin-left: 20pt; margin-right: 20pt}

Издательские системы — печать

Квадраты из Офиса-97

Многим, очевидно, приходилось сталкиваться с квадратами или "зюквами", выходящими из принтера, в то время как Офис-97 нормально отображал на экране наш текст, набранный TTF-шрифтом (который, как утверждает Microsoft, на печать выводится точно так же, как выглядит на экране). И ничего не помогало: ни перестановка Офиса, ни замена шрифта. В чем же дело?

Основная особенность файлов и идеологии Офиса-97, в первую очередь - Winword-97, - почти полный переход на кодировку Unicode, т.е. и в документах Word-97 текстовая часть представлена в Unicode, и в процессе выполнения программы - ввода и обработки текста - используется (здесь, конечно, необходима оговорка), по всей вероятности, исключительно Unicode. Впрочем, как и в предыдущих версиях Word, для нормальной работы с языком необходимо, чтобы в Word'е была его поддержка, независимо от юникодовости шрифта.

Что такое Unicode?

Unicode - частичная реализация стандарта ISO 10646, совместим снизу вверх, т.е. первые 256 символов UNICODE = Latin-1 (ISO 8859-1). В настоящее время распределено около 29.000 позиций из 65.535 возможных.

Шрифты. Требуются юникодовые шрифты, в которых буквы национальных языков имеют положенные им юникоды, а Windows'9x видит в шрифте соответствующий набор символов (charset).

Национальные Postscript-шрифты нормально работают в Word-97 в Windows NT (под поддерживающей Unicode ATM/NT 4.0). Под Windows'9x и ATM/95 4.0 Postscript-шрифты в Word-97 не работали, пока недавно не был найден способ прописать в них национальный (в частности, русский) набор символов, что более или менее проблему решило. Шрифты, не имеющие соответствующего набора символов, - это, как правило, шрифты, имеющие только script western или же symbol encoding. Word-97 может, до некоторой степени, использовать желаемым образом и такие шрифты, но с многочисленными неудобствами и ограничениями. В частности, при переключении клавиатуры с английской на национальную (например, русскую) будет происходить переключение шрифта на тот, где нужный набор символов есть (обычно - Times New Roman). Вот еще некоторые особенности поведения в этих случаях:

При использовании шрифта, имеющего только script western, должна быть установлена маркировка текста как английского. При этом не будут работать проверка русской орфографии и переносы (хотя если потом напечатанный текст промаркировать как русский, то даже проверка орфографии работает). Изменение шрифта на юникодовый приведет к потере "русскости". Изменение же шрифта с юникодовового на чисто western превратит русский и т.п. текст в "квадратики".

Такого рода русский шрифт можно "юникодизировать" с помощью конвертеров.

Шрифт, имеющий symbol encoding, вызывает несколько меньше проблем. И в этом случае не будут работать такие языковые функции, как проверка орфографии, а переносы будут производиться в произвольном месте слова. Изменение шрифта может превратить текст в "квадратики" (что, видимо, объясняется отсутствием в юникодовом шрифте диапазона U+F020...U+F0FF), хотя изменение из юникодового шрифта в symbol и даже последующий возврат шрифта проходит корректно (что, видимо, объясняется трансляцией "буквенных" юникодов через кодовую страницу в "пользовательские" юникоды шрифта symbol).

Печать. Как выяснилось, в Word-97 правильный вид многоязычного текста на экране - еще не гарантия, что он будет правильно напечатан на принтере или послан по факсу. Собственно говоря, это - не ошибка Word-97, а неполноценность большинства (!) драйверов принтеров - юникодовые функции печати в них в той или иной мере неработоспособны. Хотя есть и исключения, например, встроенный в Windows'95 драйвер принтера HPLaserJet4L. Другие драйверы могут изображать при печати квадратики вместо нужных символов. В худшем случае не изображаются даже национальные буквы (русские, греческие и т.п.) из кодовых страниц, поддерживаемых и Windows, и Word-97. В лучшем - не изображаются символы, не входящие в стандартные для Windows наборы символов (charsets), в частности, псевдографика (входящая во все стандартные "большие" шрифты). К последнему, лучшему случаю относится драйвер для HPLaserJet 5-6, предлагаемый сейчас на сервере Hewlett-Packard, изображающий все, что может напечатать стандартными шрифтами Wordpad, но не все, что может извлечь из шрифта Word-97.

Полностью решить проблему могут только разработчики драйверов, но некоторые частичные решения имеются и со стороны Word-97. Они предлагаются на сервере Microsoft в статье из базы знаний Q159418:

Если установлен Word-97 Service Release 1 (SR-1), нужно добавить в системный реестр (Registry) следующий ключ:

REGEDIT4

[HKEY_CURRENT_USERSoftwareMicrosoftOffice8.0WordOptions]

"NoWideTextPrinting"="1"

Если установлен более ранний Word-97 (non-SR1), то системный реестр правится с использованием точного имени принтера из папки Printers, обозначенного в примере как Printer_name (надо отметить, что в русских версиях SR1 и SR2 этот метод тоже действует):

REGEDIT4

[HKEY_CURRENT_USERSoftwareMicrosoftOffice8.0WordPrinter_name]

"Flags"="8192"

В этом случае будут печататься символы из кодовых страниц, которые находятся на "пересечении" знаний Windows'95 и Word-97, т.е. не будет не только псевдографики, но и иврита и арабского, зато останутся кириллица и греческий, а также западно- и восточноевропейская латинская диакритика.

Для некоторых видов принтеров Hewlett-Packard в статье приведены свои специфичные настройки, решающие (в какой мере?) проблему. В частности, вышеупомянутый HPLaserJet4L начинает все правильно печатать, только если установлена опция "Print TrueType as graphics".

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

Font,0=Font,204

Тогда придется распроститься с надеждой печатать этим шрифтом не только на иврите и арабском, но и по-немецки, по-французски и, видимо, по-гречески, но на русско-английском все будет напечатано правильно.

Такой подробный материал на самом деле лишь приподнимает завесу тайны, охраняющую внутренности Office в частности и Windows в целом.

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2022
    Реклама на сайте