Лекция
Download
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

Лекция 10

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


Текст и шрифт

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

  • Во-первых,нужно найти шрифт по его имени или имени файла, в котором он содержится

  • /Times-Roman findfont

  • (times.pfb) findfont

  • Первый вариант использования – основной, он относится к шрифтам, которые известны мащине.

  • Второй работает не всегда, но в GS работает.


Шкалирование и установка шрифта

  • Найденный шрифт можно запомнить для будущего использования.

  • /TR /Times-Roman findfont def

  • Но это только для того, чтобы больше шрифт не искать. Для использования с ним нужно выполнить еще две операции.

  • Шкалирование снимает со стека шрифт и размер и определяет новый шрифт нужного размера. Например,

  • /TR 12 scalefont

  • /Helvetica findfont 10 scalefont

  • Исходный шрифт имеет размер 1000.

  • Найденный или шкалированный шрифт можно установить командой setfont

  • /TR 12 scalefont setfont


Использование установленного шрифта

  • Основная «печатающая» команда называется show. Она требует, чтобы был установлен шрифт, чтобы была определена текущая точка и чтобы в стеке лежала печатаемая строка.

  • Печатаемый текст пишется в круглых скобках. Например,

  • (Мы хотим сказать) show

  • (иногда текст (его часть) содержит скобки) show

  • (если скобки парные \(сбалансированные) show

  • (вхождения\), то это не страшно) show

  • Специальные знаки в строках

  • \ddd – символ, задаваемый восьмеричным номером

  • \\ - backslash

  • После выполнения командыshowтекущая точка определена и находится за напечатанным текстом.


Ширина строки и ее использование шрифта

  • При выравнивании текста нужно использовать ширину печатаемой строки (которая, конечно, зависит от параметров шрифта). Команда stringwidthснимает со стека строку и кладет в стек координаты x и y ширины(обычно y=0). Вот примеры использования ширины

  • \rshow{dup stringwidth pop neg hrm show}def

  • \censhow{dup stringwidth pop –0.5 mul hrm show}def

  • Первая из этих процедур печатает текст справа от текущей точки, а вторая центрует его по текущей точке.


Варианты команды шрифтаshow

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


Пример шрифта

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


Решение шрифта

  • %!

  • /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


Контур печатаемой строки являются блок действий и печатаемая строка. При печати строки (как в

  • Для некоторых целей может захотеться получить контур печатаемой строки. Например, для того, чтобы залить буквы одним цветом или закрасить другим, или для того, чтобы использовать контур для вырезания части рисунка.

  • Такие возможности предоставляет командыcharpath. Она использует кроме строки еще логический параметр, определяющий дальнейшее использование пути.

  • string bool charpath –

  • Если логическое значение – истина, то путь годится для заливки или вырезания, а если ложь, то только для обвода.



Как программировалась буквица В.Н.Малоземову)

  • /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


Шрифты В.Н.Малоземову)

  • Шрифты бывают фирменные (в файлах) и самодельные. Фирменные шрифты имеют расширения

  • pfb Postscript Font Binary

  • pfa Postscript Font Alphabetic.

  • Самодельный шрифт описывается прямо в программе. На самодельных шрифтах хорошо показывать, как шрифт устроен.

  • Я увидел как-то шрифт, изготовленный для штрихового кода «3 из 9» и по аналогии с ним сделал шрифт Брайля, который используют слепые. Посмотрим, как он устроен.


Шрифт Брайля (что это такое) В.Н.Малоземову)

  • Шрифт Брайля предназначен для слепых. Каждый знак кодируется, говоря по-нашему, шестеркой битов, которые занумерованы от 1 до 6 вот так:

  • 1 4

  • 2 5

  • 3 6

  • Слепые кодируют единицы выпуклыми точками и различают их наощупь. На следующем слайде показан полностью латинский алфавит.

  • Шрифт, которым набран этот алфавит, мы и хотим показать.


Шрифт Брайля (алфавит) В.Н.Малоземову)


Шрифт Брайля (общая структура описания)

  • Описание состоит из задания для создаваемого шрифта специального информационного объекта — словаря и его заполнения. Словарь вводится так 

  • /braille 10 dict def

  •  Словоdict создает словарь, а 10 — это его первоначальная емкость. В каких единицах? В «элементах словаря», а как они определяются, будет видно при заполнении. Заполнение происходит внутри «операторных скобок»

  • braille begin

  • . . . . .

  • end

  • В основном заполнение состоит из обычных описаний обязательных параметров шрифта.


Шрифт Брайля (обязательные параметры)

  • /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

  • Процедура, исполняемая при печати каждого символа данного шрифта.


Шрифт Брайля (заполнение массива)

  • Массив заполняется в два приема. Сначала во все его клеточки пишется невозможный символ.notdef(это делается обычным циклом),

  • 0 1 255 {Encoding exch /.notdef put} for

  • а затем каждый нужный символ заполняется отдельно, например,

  • Encoding 98 /b put

  • Encoding 44 /comma put

  • (так в элемент 98, а это код ASCII буквы b, помещается ключ /b, а в элемент 44 помещается ключ /comma, чтобы рисовать запятую).


Шрифт Брайля (заполнение словаря)

  • Словарь /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. 


Шрифт Брайля (вспомогательная процедура 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 — троекратное повторение действия, которое само состоит из трех шагов: рисование кружка, в зависимости от числа в стеке закраска его или обводка, сдвиг вверх.


Шрифт Брайля (процедура рисования символа)

  • /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


Шрифт Брайля (использование) рисования символа)

  • /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


Включение шрифтов в систему рисования символа)

  • В системе 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) ;


Образцы использования шрифтов (1) рисования символа)

  • Вот примеры упомянутых выше шрифтов

  • /TimesET

  • /Symbol

  • /ZapfDingbats


Образцы использования шрифтов рисования символа) (2)

  • Вот примеры приведенных нами шрифтов

  • /American-Uncial

  • /Cloister_Black-Light

  • /Izhitsa


Образцы использования шрифтов рисования символа) (3)

  • Вот примеры приведенных нами шрифтов

  • /Cyrillic-Narrow

  • /Kimberly

  • /Osiris


Fontlab
Программа рисования символа)FontLab


Fontlab1
Программа рисования символа)FontLab (контроль)


Хорошая книга о шрифтах рисования символа)

  • Книга издана в СПб в 1994 г. Ее автор — один из основных (может быть, самый основной) разработчиков программы FontLab.

  • Уж он-то знает про шрифты.

  • ISBN 5-85237-015-0

  • УДК 681.3.06


ad