1 / 29

Лекция 10

Лекция 10. Текст и шрифты. Текст и шрифт.

knoton
Download Presentation

Лекция 10

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Лекция 10 Текст и шрифты

  2. Текст и шрифт • Печать текстов – это главная задача любой печатающей системы. Прежде чем печатать текст в ПостСкрипте мы должны установить шрифт. Для этого нужно выполнить несколько действий. Начнем с этих действий, еще не объяснив даже, что такое шрифт (а по-английски font) • Во-первых,нужно найти шрифт по его имени или имени файла, в котором он содержится • /Times-Roman findfont • (times.pfb) findfont • Первый вариант использования – основной, он относится к шрифтам, которые известны мащине. • Второй работает не всегда, но в GS работает.

  3. Шкалирование и установка шрифта • Найденный шрифт можно запомнить для будущего использования. • /TR /Times-Roman findfont def • Но это только для того, чтобы больше шрифт не искать. Для использования с ним нужно выполнить еще две операции. • Шкалирование снимает со стека шрифт и размер и определяет новый шрифт нужного размера. Например, • /TR 12 scalefont • /Helvetica findfont 10 scalefont • Исходный шрифт имеет размер 1000. • Найденный или шкалированный шрифт можно установить командой setfont • /TR 12 scalefont setfont

  4. Использование установленного шрифта • Основная «печатающая» команда называется show. Она требует, чтобы был установлен шрифт, чтобы была определена текущая точка и чтобы в стеке лежала печатаемая строка. • Печатаемый текст пишется в круглых скобках. Например, • (Мы хотим сказать) show • (иногда текст (его часть) содержит скобки) show • (если скобки парные \(сбалансированные) show • (вхождения\), то это не страшно) show • Специальные знаки в строках • \ddd – символ, задаваемый восьмеричным номером • \\ - backslash • После выполнения командыshowтекущая точка определена и находится за напечатанным текстом.

  5. Ширина строки и ее использование • При выравнивании текста нужно использовать ширину печатаемой строки (которая, конечно, зависит от параметров шрифта). Команда stringwidthснимает со стека строку и кладет в стек координаты x и y ширины(обычно y=0). Вот примеры использования ширины • \rshow{dup stringwidth pop neg hrm show}def • \censhow{dup stringwidth pop –0.5 mul hrm show}def • Первая из этих процедур печатает текст справа от текущей точки, а вторая центрует его по текущей точке.

  6. Варианты командыshow • Команда show имеет несколько вариантов, которые разрешают в промежутках между рисованием отдельных символов строки выполнять те или иные действия.

  7. Пример • Как, например, сделать надпись в форме спирали

  8. Решение • %! • /Times-ET findfont 20 scalefont setfont • 350 450 translate 3 3 scale • /text (The name of Kees van der Laan gi\ • ves us a much longer example) def • -100 0 moveto 50 rotate • {-10 rotate 3 0 rmoveto 0.99 0.99 scale} • text kshow • showpage • quit

  9. Аргументами этой команды являются блок действий и печатаемая строка. При печати строки (как в show) между каждыми двумя печатями символов выполняется блок действий {-10 rotate 3 0 rmoveto 0.99 0.99 scale} % Это блок действий text % это строка kshow Другие команды ashow, cshow, xshow, yshow, xyshow, widthshow, awidthshow Объяснение командыkshow

  10. Контур печатаемой строки • Для некоторых целей может захотеться получить контур печатаемой строки. Например, для того, чтобы залить буквы одним цветом или закрасить другим, или для того, чтобы использовать контур для вырезания части рисунка. • Такие возможности предоставляет командыcharpath. Она использует кроме строки еще логический параметр, определяющий дальнейшее использование пути. • string bool charpath – • Если логическое значение – истина, то путь годится для заливки или вырезания, а если ложь, то только для обвода.

  11. Пример (из поздравления проф. В.Н.Малоземову)

  12. Как программировалась буквица • /letbox{/Izhitsa findfont 84 scalefont setfont • lmarg vpos m -27 mm -20 mm rm • GS bs hrl bs vrl bs neg hrl CL % letter box ready • GS RED 0 LW clip • lmarg vpos m -27 mm -20 mm rm • OXOY rm /a -1 def • 40 {GS bs 2 mul bs a mul /a a .1 add def rl S GR} • repeat GR % rays inside box • S GR}def • /oshow{false charpath S}def % only to strike! • /letend{dup GS 1 setgray show GR 0 LW oshow}def • /letM{/OX -60 def /OY 30 def • GS (М) letbox -2 6 rm 0.83 1 scale letend GR • }def

  13. Шрифты • Шрифты бывают фирменные (в файлах) и самодельные. Фирменные шрифты имеют расширения • pfb Postscript Font Binary • pfa Postscript Font Alphabetic. • Самодельный шрифт описывается прямо в программе. На самодельных шрифтах хорошо показывать, как шрифт устроен. • Я увидел как-то шрифт, изготовленный для штрихового кода «3 из 9» и по аналогии с ним сделал шрифт Брайля, который используют слепые. Посмотрим, как он устроен.

  14. Шрифт Брайля (что это такое) • Шрифт Брайля предназначен для слепых. Каждый знак кодируется, говоря по-нашему, шестеркой битов, которые занумерованы от 1 до 6 вот так: • 1 4 • 2 5 • 3 6 • Слепые кодируют единицы выпуклыми точками и различают их наощупь. На следующем слайде показан полностью латинский алфавит. • Шрифт, которым набран этот алфавит, мы и хотим показать.

  15. Шрифт Брайля (алфавит)

  16. Шрифт Брайля (общая структура описания) • Описание состоит из задания для создаваемого шрифта специального информационного объекта — словаря и его заполнения. Словарь вводится так  • /braille 10 dict def •  Словоdict создает словарь, а 10 — это его первоначальная емкость. В каких единицах? В «элементах словаря», а как они определяются, будет видно при заполнении. Заполнение происходит внутри «операторных скобок» • braille begin • . . . . . • end • В основном заполнение состоит из обычных описаний обязательных параметров шрифта.

  17. Шрифт Брайля (обязательные параметры) • /FontType 3 def %тип шрифта (3 для пользовательских) • /FontMatrix [.01 0 0 .01 0 0] def • Таблица пересчета изображаемого знака в шрифт размера 1000 пунктов. При выполненииscalefont эта матрица просто заменяется другой, соответствующей требуемому размеру. • /FontBBox [0 0 60 100] def • Задание прямоугольника, объемлющего все символы данного шрифта. • /Encoding 256 array def • Массив для связи кодов символов с ключами слов, изображающих эти символы. Слова находятся в словаре • /CharProcs 3 dict def • /BuildChar • Процедура, исполняемая при печати каждого символа данного шрифта.

  18. Шрифт Брайля (заполнение массива) • Массив заполняется в два приема. Сначала во все его клеточки пишется невозможный символ.notdef(это делается обычным циклом), • 0 1 255 {Encoding exch /.notdef put} for • а затем каждый нужный символ заполняется отдельно, например, • Encoding 98 /b put • Encoding 44 /comma put • (так в элемент 98, а это код ASCII буквы b, помещается ключ /b, а в элемент 44 помещается ключ /comma, чтобы рисовать запятую).

  19. Шрифт Брайля (заполнение словаря) • Словарь /CharProcsзаполняется внутри операторных скобок. Мыуже знаем про эти скобки и можем кое-что записать внутрь. • CharProcs begin • /b {1 1 0 0 0 0 bc } def • /comma {0 1 0 0 0 0 bc } def • /space {0 0 0 0 0 0 bc } def • /.notdef {} def • end • Для примера взято четыре символа. Они будут печататься так: в стек помещается шесть символов, единиц для черных точек и нулей для белых, и вызывается рисующая процедураbc(она еще появится).Убедитесь в правильном задании буквы. Важно, что пробел задается как буква — набором из шести белых точек. В описание входит и определение пустого символа .notdef. 

  20. Шрифт Брайля (вспомогательная процедура bc) • /bc { 6 3 roll /w 30 def /wr 12 def • 0 0 m GS col w 0 rm col GR} defРисуется сначала левый столбец, а затем правый. Поэтому начи-наем с перестановки данных о столбцах. Вводим шаг между «точками» и размер точки. Встаем в начало координат (оно перенесено в опорную точку символа), рисуем левый столбец, сдвигаемся вправо и рисуем правый столбец. Рационально рисование столбца сделать специальной процедурой. • /col {GS 0 LW • 3 {GS CP T wr 0 rm wr wr wr -90 270 arc • 1 eq {fill} {stroke} ifelse • GR 0 w rm} repeat GR} def  • Основная часть col — троекратное повторение действия, которое само состоит из трех шагов: рисование кружка, в зависимости от числа в стеке закраска его или обводка, сдвиг вверх.

  21. Шрифт Брайля (процедура рисования символа) • /BuildChar {% stack has font char  • /col {. . .} def  • /bc { . . .} def  • 80 0 % width • 0 0 60 100 % bounding box • setcachedevice • exch begin % font begin • Encoding exch get % index by char in Encoding • CharProcs exch get % lookup name in CharProcs • end • exec % execute char procdure • } def

  22. Шрифт Брайля (использование) • /Braille braille definefont pop % подключ.шрифта • 100 100 T % использ. шрифта • /Braille findfont 36 scalefont setfont • 0 162 m (abcdefghij) show • 0 102 m (klmnopqrst) show • 0 42 m (uvxyz w) show • /Courier findfont 14 scalefont setfont • 5 150 m (abcdefghij) • [ 30 30 28 30 30 26 30 30 26 ] xshow • 5 90 m (klmnopqrst) • [ 32 26 30 28 29 30 30 28 30 ] xshow • 5 30 m (uvxyzw) [ 30 29 30 28 86 ] xshow • showpage

  23. Включение шрифтов в систему • В системе GhostScript имеется файл Fontmap, который связывает имена шрифтов с файлами. Если вам нужно добавить шрифты в свою систему, просто добавьте строки. • Вот так: • /American-Uncial (america_.pfb) ; • /Cloister_Black-Light (cloister.pfb) ; • /Cyrillic-Narrow (cyrnarrw.pfb) ; • /Izhitsa (izhitsa.pfb) ; • /Kimberly (kimberly.pfb) ; • /Osiris (osiris.pfb) ; • /TimesET (tet.pfb) ; • /Symbol (sy.pfb) ; • /ZapfDingbats (zd______.pfb) ;

  24. Образцы использования шрифтов (1) • Вот примеры упомянутых выше шрифтов • /TimesET • /Symbol • /ZapfDingbats

  25. Образцы использования шрифтов (2) • Вот примеры приведенных нами шрифтов • /American-Uncial • /Cloister_Black-Light • /Izhitsa

  26. Образцы использования шрифтов (3) • Вот примеры приведенных нами шрифтов • /Cyrillic-Narrow • /Kimberly • /Osiris

  27. Программа FontLab

  28. Программа FontLab (контроль)

  29. Хорошая книга о шрифтах • Книга издана в СПб в 1994 г. Ее автор — один из основных (может быть, самый основной) разработчиков программы FontLab. • Уж он-то знает про шрифты. • ISBN 5-85237-015-0 • УДК 681.3.06

More Related