slide1
Download
Skip this Video
Download Presentation
Лекция 10

Loading in 2 Seconds...

play fullscreen
1 / 29

Лекция 10 - PowerPoint PPT Presentation


  • 179 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Лекция 10' - knoton


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Лекция 10

Текст и шрифты

slide2
Текст и шрифт
  • Печать текстов – это главная задача любой печатающей системы. Прежде чем печатать текст в ПостСкрипте мы должны установить шрифт. Для этого нужно выполнить несколько действий. Начнем с этих действий, еще не объяснив даже, что такое шрифт (а по-английски font)
  • Во-первых,нужно найти шрифт по его имени или имени файла, в котором он содержится
  • /Times-Roman findfont
  • (times.pfb) findfont
  • Первый вариант использования – основной, он относится к шрифтам, которые известны мащине.
  • Второй работает не всегда, но в GS работает.
slide3
Шкалирование и установка шрифта
  • Найденный шрифт можно запомнить для будущего использования.
  • /TR /Times-Roman findfont def
  • Но это только для того, чтобы больше шрифт не искать. Для использования с ним нужно выполнить еще две операции.
  • Шкалирование снимает со стека шрифт и размер и определяет новый шрифт нужного размера. Например,
  • /TR 12 scalefont
  • /Helvetica findfont 10 scalefont
  • Исходный шрифт имеет размер 1000.
  • Найденный или шкалированный шрифт можно установить командой setfont
  • /TR 12 scalefont setfont
slide4
Использование установленного шрифта
  • Основная «печатающая» команда называется show. Она требует, чтобы был установлен шрифт, чтобы была определена текущая точка и чтобы в стеке лежала печатаемая строка.
  • Печатаемый текст пишется в круглых скобках. Например,
  • (Мы хотим сказать) show
  • (иногда текст (его часть) содержит скобки) show
  • (если скобки парные \(сбалансированные) show
  • (вхождения\), то это не страшно) show
  • Специальные знаки в строках
  • \ddd – символ, задаваемый восьмеричным номером
  • \\ - backslash
  • После выполнения командыshowтекущая точка определена и находится за напечатанным текстом.
slide5
Ширина строки и ее использование
  • При выравнивании текста нужно использовать ширину печатаемой строки (которая, конечно, зависит от параметров шрифта). Команда stringwidthснимает со стека строку и кладет в стек координаты x и y ширины(обычно y=0). Вот примеры использования ширины
  • \rshow{dup stringwidth pop neg hrm show}def
  • \censhow{dup stringwidth pop –0.5 mul hrm show}def
  • Первая из этих процедур печатает текст справа от текущей точки, а вторая центрует его по текущей точке.
slide6
Варианты командыshow
  • Команда show имеет несколько вариантов, которые разрешают в промежутках между рисованием отдельных символов строки выполнять те или иные действия.
slide7
Пример
  • Как, например, сделать надпись в форме спирали
slide8
Решение
  • %!
  • /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
kshow
Аргументами этой команды являются блок действий и печатаемая строка. При печати строки (как в show) между каждыми двумя печатями символов выполняется блок действий

{-10 rotate 3 0 rmoveto

0.99 0.99 scale} % Это блок действий

text % это строка

kshow

Другие команды

ashow, cshow, xshow, yshow, xyshow, widthshow, awidthshow

Объяснение командыkshow
slide10
Контур печатаемой строки
  • Для некоторых целей может захотеться получить контур печатаемой строки. Например, для того, чтобы залить буквы одним цветом или закрасить другим, или для того, чтобы использовать контур для вырезания части рисунка.
  • Такие возможности предоставляет командыcharpath. Она использует кроме строки еще логический параметр, определяющий дальнейшее использование пути.
  • string bool charpath –
  • Если логическое значение – истина, то путь годится для заливки или вырезания, а если ложь, то только для обвода.
slide12
Как программировалась буквица
  • /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
slide13
Шрифты
  • Шрифты бывают фирменные (в файлах) и самодельные. Фирменные шрифты имеют расширения
  • pfb Postscript Font Binary
  • pfa Postscript Font Alphabetic.
  • Самодельный шрифт описывается прямо в программе. На самодельных шрифтах хорошо показывать, как шрифт устроен.
  • Я увидел как-то шрифт, изготовленный для штрихового кода «3 из 9» и по аналогии с ним сделал шрифт Брайля, который используют слепые. Посмотрим, как он устроен.
slide14
Шрифт Брайля (что это такое)
  • Шрифт Брайля предназначен для слепых. Каждый знак кодируется, говоря по-нашему, шестеркой битов, которые занумерованы от 1 до 6 вот так:
  • 1 4
  • 2 5
  • 3 6
  • Слепые кодируют единицы выпуклыми точками и различают их наощупь. На следующем слайде показан полностью латинский алфавит.
  • Шрифт, которым набран этот алфавит, мы и хотим показать.
slide16
Шрифт Брайля (общая структура описания)
  • Описание состоит из задания для создаваемого шрифта специального информационного объекта — словаря и его заполнения. Словарь вводится так 
  • /braille 10 dict def
  •  Словоdict создает словарь, а 10 — это его первоначальная емкость. В каких единицах? В «элементах словаря», а как они определяются, будет видно при заполнении. Заполнение происходит внутри «операторных скобок»
  • braille begin
  • . . . . .
  • end
  • В основном заполнение состоит из обычных описаний обязательных параметров шрифта.
slide17
Шрифт Брайля (обязательные параметры)
  • /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
  • Процедура, исполняемая при печати каждого символа данного шрифта.
slide18
Шрифт Брайля (заполнение массива)
  • Массив заполняется в два приема. Сначала во все его клеточки пишется невозможный символ.notdef(это делается обычным циклом),
  • 0 1 255 {Encoding exch /.notdef put} for
  • а затем каждый нужный символ заполняется отдельно, например,
  • Encoding 98 /b put
  • Encoding 44 /comma put
  • (так в элемент 98, а это код ASCII буквы b, помещается ключ /b, а в элемент 44 помещается ключ /comma, чтобы рисовать запятую).
slide19
Шрифт Брайля (заполнение словаря)
  • Словарь /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. 
slide20
Шрифт Брайля (вспомогательная процедура 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 — троекратное повторение действия, которое само состоит из трех шагов: рисование кружка, в зависимости от числа в стеке закраска его или обводка, сдвиг вверх.
slide21
Шрифт Брайля (процедура рисования символа)
  • /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
slide22
Шрифт Брайля (использование)
  • /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
slide23
Включение шрифтов в систему
  • В системе 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) ;
slide24
Образцы использования шрифтов (1)
  • Вот примеры упомянутых выше шрифтов
  • /TimesET
  • /Symbol
  • /ZapfDingbats
slide25
Образцы использования шрифтов (2)
  • Вот примеры приведенных нами шрифтов
  • /American-Uncial
  • /Cloister_Black-Light
  • /Izhitsa
slide26
Образцы использования шрифтов (3)
  • Вот примеры приведенных нами шрифтов
  • /Cyrillic-Narrow
  • /Kimberly
  • /Osiris
slide29
Хорошая книга о шрифтах
  • Книга издана в СПб в 1994 г. Ее автор — один из основных (может быть, самый основной) разработчиков программы FontLab.
  • Уж он-то знает про шрифты.
  • ISBN 5-85237-015-0
  • УДК 681.3.06
ad