Type 1 font windows
Как известно, Windows 2000/XP работает с Type 1 шрифтами не так, как Windows 95/98/ME. И для многих шрифтов и многих программ возникают сложности.
Хотелось бы, чтобы русские Type 1 шрифты правильно работали во всех программах — были видны, вводились с клавиатуры, печатались, дистиллировались, RIP-овались, в них был правильный кернинг и т.п.
Как оказалось, это вполне можно сделать, но не для всех программ одинаково, MS Word требует особых условий. Ибо для Type 1 шрифтов есть параметр WindowsCharSet в .INF-файле (ему соответствует байт 0x55 в PFM-файле), который разные программы интерпретируют по-разному. И нет значения этого параметра, при котором все программы вели бы себя хорошо.
- Основной вариант использования шрифтов.
- Альтернативный вариант использования шрифтов.
- Использование русских Type 1 шрифтов в Word.
- О программе Type1Cyr
- Скачать программу Type1Cyr
Вариант шрифтов, созданный программой Type1Cyr по умолчанию:
в этом варианте у шрифта должны быть правильные параметры (см. ниже), а значение параметра WindowsCharSet в .INF-файле должно быть равно 0.
После установки таких шрифтов в Windows 2000/XP/2003, в программах Adobe FrameMaker, Adobe Illustrator, Adobe Indesign, Quark XPress, шрифты видны, русские символы вводятся с клавиатуры, печатаются, дистиллируются, RIP-уются, программы устанавливают для них правильный кернинг и т.п.
В программах Corel Draw, Corel Ventura, со шрифтами тоже всё в порядке, но кернинг для русских букв эти программы не видят. Чтобы увидели, приходится применять хак с подменой кодовой страницы (как это сделать смотрите здесь).
Adobe Photoshop русские буквы видит, печатает и т.п., но кернинга для русских букв нет даже при включении хака с подменой кодовой страницы.
При использовании Windows 95/98/ME, как правило, установлены русские Type 1 шрифты со значением параметра .INF-файла WindowsCharSet, равным 204, а при использовании Windows 2000/XP/2003 — нет, поэтому некоторые программы, среди которых, к сожалению, Microsoft Word, без WindowsCharSet=204 правильно не работают.
В связи с этим и под Windows 2000/XP/2003 иногда бывает целесообразно устанавливать русские Type 1 шрифты с параметром WindowsCharSet=204 в .INF-файле.
Этот вариант шрифтов программа Type1Cyr создаёт при указании параметра /W (или /E=204).
После установки таких шрифтов в Windows 2000/XP/2003, в программах Adobe Illustrator, Adobe Indesign, шрифты видны, русские символы вводятся с клавиатуры, печатаются, дистиллируются, RIP-уются, программы устанавливают для них правильный кернинг и т.п.
В программах Adobe FrameMaker, Adobe PageMaker, Corel Draw, Corel Ventura, Microsoft Word, Quark XPress шрифты видны, русские символы вводятся с клавиатуры, печатаются, дистиллируются, RIP-уются и т.п. Но кернинга для русских букв эти программы не видят. Чтобы увидели, приходится применять хак с подменой кодовой страницы (как это сделать смотрите здесь).
Наконец, Adobe Photoshop русские буквы видит, печатает и т.п., но кернинга для русских букв нет даже при включении хака с подменой кодовой страницы.
Microsoft Word, начиная с версии 97, очень требователен к правильности Type 1 шрифтов, например Word 2000/2002 имеет неприятную особенность при работе со шрифтами: при вводе символов, которые, по его мнению, отсутствуют в шрифте, он переключает шрифт вводимых символов на Times New Roman, что крайне неудобно. Приходится выделять введённый текст и оформлять его нужным шрифтом, а это потеря времени.
Но Microsoft Word может полноценно работать с PostScript Type 1 шрифтами, если эти шрифты имеют верные имена символов и некоторые другие параметры. Такие шрифты будут отображаться в списке шрифтов, вводиться с клавиатуры, печататься на PCL, PostScript и иных принтерах, правильно преобразовываться в PDF, обрабатываться программными RIP-ами для PostScript-файлов и т.д.
- Правильная кодировка символов в шрифте:
Номер кода | Название кода | Номер кода | Название кода | Номер кода | Название кода |
32 | space | 107 | k | 182 | paragraph |
33 | exclam | 108 | l | 183 | periodcentered |
34 | quotedbl | 109 | m | 184 | afii10071 |
35 | numbersign | 110 | n | 185 | afii61352 |
36 | dollar | 111 | o | 186 | afii10101 |
37 | percent | 112 | p | 187 | guillemotright |
38 | ampersand | 113 | q | 188 | afii10105 |
39 | quotesingle | 114 | r | 189 | afii10054 |
40 | parenleft | 115 | s | 190 | afii10102 |
41 | parenright/td> | 116 | t | 191 | afii10104 |
42 | asterisk | 117 | u | 192 | afii10017 |
43 | plus | 118 | v | 193 | afii10018 |
44 | comma | 119 | w | 194 | afii10019 |
45 | hyphen | 120 | x | 195 | afii10020 |
46 | period | 121 | y | 196 | afii10021 |
47 | slash | 122 | z | 197 | afii10022 |
49 | one | 124 | bar | 199 | afii10025 |
50 | two | 125 | braceright | 200 | afii10026 |
51 | three | 126 | asciitilde | 201 | afii10027 |
52 | four | 127 | — N/A — | 202 | afii10028 |
53 | five | 128 | afii10051 | 203 | afii10029 |
54 | six | 129 | afii10052 | 204 | afii10030 |
55 | seven | 130 | quotesinglbase | 205 | afii10031 |
56 | eight | 131 | afii10100 | 206 | afii10032 |
57 | nine | 132 | quotedblbase | 207 | afii10033 |
58 | colon | 133 | ellipsis | 208 | afii10034 |
59 | semicolon | 134 | dagger | 209 | afii10035 |
60 | less | 135 | daggerdbl | 210 | afii10036 |
61 | equal | 136 | Euro | 211 | afii10037 |
62 | greater | 137 | perthousand | 212 | afii10038 |
63 | question | 138 | afii10058 | 213 | afii10039 |
64 | at | 139 | guilsinglleft | 214 | afii10040 |
65 | A | 140 | afii10059 | 215 | afii10041 |
66 | B | 141 | afii10061 | 216 | afii10042 |
67 | C | 142 | afii10060 | 217 | afii10043 |
68 | D | 143 | afii10145 | 218 | afii10044 |
69 | E | 144 | afii10099 | 219 | afii10045 |
70 | F | 145 | quoteleft | 220 | afii10046 |
71 | G | 146 | quoteright | 221 | afii10047 |
72 | H | 147 | quotedblleft | 222 | afii10048 |
73 | I | 148 | quotedblright | 223 | afii10049 |
74 | J | 149 | bullet | 224 | afii10065 |
75 | K | 150 | endash | 225 | afii10066 |
76 | L | 151 | emdash | 226 | afii10067 |
77 | M | 152 | — N/A — | 227 | afii10068 |
78 | N | 153 | trademark | 228 | afii10069 |
79 | O | 154 | afii10106 | 229 | afii10070 |
80 | P | 155 | guilsinglright | 230 | afii10072 |
81 | Q | 156 | afii10107 | 231 | afii10073 |
82 | R | 157 | afii10109 | 232 | afii10074 |
83 | S | 158 | afii10108 | 233 | afii10075 |
84 | T | 159 | afii10193 | 234 | afii10076 |
85 | U | 160 | nbspace | 235 | afii10077 |
86 | V | 161 | afii10062 | 236 | afii10078 |
87 | W | 162 | afii10110 | 237 | afii10079 |
88 | X | 163 | afii10057 | 238 | afii10080 |
89 | Y | 164 | currency | 239 | afii10081 |
90 | Z | 165 | afii10050 | 240 | afii10082 |
91 | bracketleft | 166 | brokenbar | 241 | afii10083 |
92 | backslash | 167 | section | 242 | afii10084 |
93 | bracketright | 168 | afii10023 | 243 | afii10085 |
94 | asciicircum | 169 | copyright | 244 | afii10086 |
95 | underscore | 170 | afii10053 | 245 | afii10087 |
96 | grave | 171 | guillemotleft | 246 | afii10088 |
97 | a | 172 | logicalnot | 247 | afii10089 |
98 | b | 173 | sfthyphen | 248 | afii10090 |
99 | c | 174 | registered | 249 | afii10091 |
100 | d | 175 | afii10056 | 250 | afii10092 |
101 | e | 176 | degree | 251 | afii10093 |
102 | f | 177 | plusminus | 252 | afii10094 |
103 | g | 178 | afii10055 | 253 | afii10095 |
104 | h | 179 | afii10103 | 254 | afii10096 |
105 | i | 180 | afii10098 | 255 | afii10097 |
106 | j | 181 | mu |
Здесь все имена символов стандартны. Лишь для дублирующих символов (неразрывного пробела и «мягкого» дефиса) приняты имена:
160 nbspace
173 sfthyphen
Обычный пробел (код 32) называется space , дефис (код 45) — hyphen .
Символы 127 и 152 в кодировке отсутствуют.
Параметры INF-файла:
CharacterSet (cyrillicreg.cs)
Encoding (cyrillic.enc)
Pi true
PCLSymbolSet 9R
WindowsCharSet 0 (основной вариант, см. выше) или 204 (альтернативный)
WindowsFirstChar 32
WindowsLastChar 255
Замечание: Если в шрифте есть символы с кодами меньше 32, то параметр WindowsFirstChar надо установить равным наименьшему коду символа в шрифте.
Параметры AFM-файла:
CharacterSet Cyrillic
EncodingScheme FontSpecific
Замечание: EncodingScheme AdobeStandardCyrillic тоже вроде работает, но тщательно это не проверялось.
Впрочем, самостоятельно устанавливать эти параметры в шрифтах необязательно — для исправления русских Type 1 шрифтов есть программа Type1Cyr.
Для установки Type 1 шрифтов лучше использовать программу Adobe Type Manager. Без Adobe Type Manager, при установке шрифтов средствами Windows, значение параметра WindowsCharSet .INF-файла игнорируется, т.е. байт 0x55 создаваемого .PFM-файла всегда имеет нулевое значение, что в нашем случае нежелательно.
Type 1 шрифты следует устанавливать с помощью комбинации файлов .PFB + .AFM + .INF. Шрифты, установленные с помощью комбинации файлов .PFB + .PFM, не всегда работают правильно.
При соблюдении этих условий русские Type 1 шрифты обрабатываются правильно. Кроме кернинга — его Word для русских букв в Type 1 шрифтах не задействует, но при желании можно сделать так, чтобы Microsoft Word правильно обрабатывал кернинг в русских PostScript Type 1 шрифтах, но лучше без этого обойтись — при этом некоторые программы начинают работать со шрифтами неправильно.
Для того чтобы установить кернинг, примените хак с подменой кодовой страницы (как это сделать смотрите здесь).
Программа предназначена для нормализации русских PostScript Type 1 шрифтов, чтобы они правильно отображались, вводились, печатались, дистиллировались, RIP-овались и т.д.
Программа исправляет следующие ошибки в русских PostScript Type 1 шрифтах:
- Неправильные имена символов
- Неправильные параметры AFM и INF-файлов, из-за которых шрифты работают так, как надо.
- Неверная идентификационная строка PFB-файла (%!PS-AdobeFont-1.0: . ), (что встречается у паратайповских шрифтов), из-за чего шрифты не видны в некоторых программах.
Программа также может устанавливать UniqueID (уникальный идентификатор) шрифта.
Следует подчеркнуть, что всю содержательную информацию шрифта: контуры символов (глифов), метрики, кернинг, хинты, композитные символы и т.д., — программа НЕ меняет. Все эти характеристики шрифта полностью сохраняются.
Замечание: Программа может использоваться для обработки шрифтов в иных кодировках (западноевропейской, восточноевропейской и т.п.), а также пиктографических шрифтов, если по каким-то причинам желательно, чтобы эти шрифты обрабатывались системой как русские шрифты.
Выполняемые программой действия:
Программа принудительно устанавливает в шрифте правильную кириллическую кодировку (точнее, правильные имена символов), переименовывая символы.
Позиции символов в шрифте при этом сохраняются (если они являются допустимыми в кириллической кодировке).
Программа также устанавливает параметры INF и AFM-файлов, необходимые для правильной работы операционной системы с русскими Type 1 шрифтами. Значение параметра WindowsCharSet INF-файла пользователь может выбирать, т.к. в разных случаях этот параметр должен быть разным.
Type1Cyr [имя-файла-шрифта] [режимы]
В имени файла шрифта можно указывать расширение, а можно не указывать. Оно всё равно игнорируется. Например, если Вы скажете Type1Cyr MYFONT, или Type1Cyr MYFONT.PFB, или даже Type1Cyr MYFONT.TXT, программа будет обрабатывать файлы MYFONT.PFB, MYFONT.AFM и MYFONT.INF.
Режимы программы таковы: /E=число — задание кодовой страницы шрифта (параметра WindowsCharSet INF-файла). По умолчанию действует значение /E=0.
При использовании шрифта в Windows 95/98/ME надо указывать параметр /E=204 (или /W, см. ниже). Иначе шрифт операционной системой не будет считаться русским.
При использовании шрифта в Windows 2000/XP/2003 в большинстве случаев лучше режим /E не указывать (что соответствует /E=0). Лишь Microsoft Word и программа Adobe Table при этом работают плохо. Если шрифт будет использоваться в основном с Microsoft Word, может быть целесообразно задать параметр /E=204 (или /W).
Буква «Е» в названии режима /E — латинская (от слова Encoding). //W — то же, что /E=204. /U=число — задание уникального идентификатора (UniqueID) шрифта. Как правило, значение UniqueID — от 4000000 до 4999999 или 0.
Замечание: Adobe рекомендует, чтобы у всех Type 1 шрифтов в системе UniqueID был разный. Диапазон UniqueID от 4000000 до 4999999 выделен для шрифтов частного применения (личного, внутрикорпоративного и т.п.)
1. Программа Type1Cyr написана под DOS, а потому не понимает длинных имён файлов (в частности, более 8 символов в имени шрифта).
2. При обработке шрифтов в кодировке AdobeStandardEncoding, содержащих композитные символы, определённые командой seac, в преобразованном шрифте некоторые композитные символы могут быть утеряны. Это проявляется, например, для паратайповских «западноевропейских» шрифтов (AcademyA, BalticaA и др.). Причина в том, что внутри шрифта для определения композитов используется команда seac, а она работает только для кодировки AdobeStandardEncoding. В подобных случаях надо загрузить шрифт в шрифтовой редактор типа FontLab, установив режим «Decompose all composite glyphs», и сразу сохранить шрифт. Сгенерированный таким образом шрифт программа Type1Cyr обработает нормально.
Использован материал статей В.Фигурнова.