Почему Мозилла печатает вместо русских букв пустые квадраты, хотя в PrintPreview все нормально? | Версия для печати |
Дело в том, что отображением на экране и печатью в Линуксе управляют две совершенно разные программы - Xserver и ghostscript соответственно. А они настроены у вас таким образом, что они используют разные шрифты. Это подразумевает еще две достаточно неприятные вещи - Section "Modules" ... Load "type1" Load "freetype" #Для truetype есть альтернативный модуль xtt, но мне freetype больше нравится. ... EndSection , а в Section "Files" прописать пути к папкам где лежат эти шрифты. Если вы хотите использовать truetype шрифты от Microsoft, то вам нужно создать в директории с этими шрифтами файл fonts.dir (это текстовый файл - база данных по которой Xserver находит нужный шрифт, где прописано соответствие между именем фонта и его файлом, например times.ttf -monotype-Times New Roman-medium-r-normal--0-0-0-0-p-0-koi8-r arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-koi8-r ). Воспользуйтесь для этого программой ttmkfdir (ее можно найти на сайте dolphina вместе c инструкцией по ее использованию). Единственное замечание - если в папке имеются шрифты, в имени файла которых содержатся пробелы, то с инициализацией этой директории у Xservera возникнут проблемы. Поэтому, перед тем как запускать ttmkfdir, переименуйте эти файлы (заменив, например, пробелы на прочерк). ghostscript По умолчанию ghostscript умеет работать с bitmapped (*.gsf) и type1 (*.pfb) шрифтами. Если он скомпилирован с опцией ttfont (./configure --enable-package-ttfont, в современных дистрибутивах например Слакваре8.1 - это так), то он понимает и truetype шрифты. Точно так же, как и Xserver, ghostscript поддерживает свою собственную базу шрифтов, которая хранится в файле GSROOT/ghostscript/GSVERSION/lib/Fontmap.GS (у меня GSROOT = /usr/share, GSVERSION =7.05). Этот файл содержит соответствия между постскриптовским именем фонта и его файлом, например /NimbusRomNo9L-Regu (n021003l.pfb) ; и alias-ов - /Times-Roman /NimbusRomNo9L-Regu ; Если вы хотите посмотреть как выглядит тот или иной фонт в ghostscripte вот примитивный fontviewer - cd GSROOT/ghostscript/GSVERSION/lib/, введите команду gs и в промпте наберите (prfont.ps) run /Times-Roman DoFont Вернемся к нашим баранам - скрещиваем Мозиллу и ghostscript Используйте одни и те же шрифты в Мозилле и ghostscript. Из написанного выше ясно, что это может быть либо *.pfb или *.ttf шрифты. Я советую truetype, не потому что он лучше, а так уж исторически сложилось, что у нас легче найти русские truetype шрифты, причем за небольшую цену на Митинском рынке. Чтобы сделать их доступными для ghostscripta отредактируйте Fontmap.GS, например вот так /Courier (cour.ttf) ; /Courier-Oblique (couri.ttf) ; /Courier-Bold (courbd.ttf) ; /Courier-BoldOblique (courbi.ttf) ; /Helvetica (arial.ttf) ; /Helvetica-Oblique (ariali.ttf) ; /Helvetica-Bold (arialbd.ttf); /Helvetica-BoldOblique (arialbi.ttf); /Times-Roman (times.ttf) ; /Times-Italic (timesi.ttf) ; /Times-Bold (timesbd.ttf) ; /Times-BoldItalic (timesbi.ttf) ; ( в оригинальном Fontmap.GS это все alias-ы ) и положите линки на соответствующие файлы в директорию, где ghostscript сможет их найти - GSROOT/ghostscript/fonts (можно изменить FontPath для ghostscripta, но на мой взгляд это сложнее, все желающие могут прочитать в Документации ghostscript как это сделать). Теперь возьмемся за Мозиллу. Menu Edit->Preferences->Appearence->Fonts и для кириллических шрифтов выберем те Х-овые имена шрифтов, файлы которых те же самые, что мы указали для ghostscriptа. Т.е. скажем для Serif фонта мы должны выбрать -monotype-Times New Roman-medium-r-normal--0-0-0-0-p-0-koi8-r (если воспользоваться примерами приведенными в этом тексте). Теперь все должно печататься правильно. Замечу еще, что это не решает проблему полного WYSIWYGa. Дело в том, что соответствие между именами шрифтов в Xserverе и ghostscriptе нигде не указано и отдается на усмотрение разработчику программы. Та-же мозилла, например, при печати serifed фонта она будет использовать фонт /Times-Roman, не вникая в детали того, какой фонт она использует при выводе на Xserver. Скажем если вы укажете в Edit->Preferences->Appearence->Fonts шрифт -monotype-Arial-medium-r-normal--0-0-0-0-p-0-koi8-r для serifed фонта, то документ в PrintPreview и в получившемся постскрипт файле будет очень сильно различаться. CopyLeft geekkoo Опубликовал: geekkoo |