Development of PostScript Development of PostScript Procedures for Procedures for
Transformations of Digital Transformations of Digital Typography Typography
Ph. D. Sc. Klaudio Pap, Ph. D. Sc. Vilko Ph. D. Sc. Klaudio Pap, Ph. D. Sc. Vilko ŽiljakŽiljak
Faculty of Graphic Arts, Zagreb, Croatia
ICTVC Conference, 2007, Thessaloniki
AimAim to develop designer programmatical to develop designer programmatical
modules which has not existed in modules which has not existed in conventional graphic programsconventional graphic programs
researching of digital typography researching of digital typography transformations which are based on the transformations which are based on the development of PostScript proceduresdevelopment of PostScript procedures
new possibilities of designing original new possibilities of designing original typographic solutionstypographic solutions
Em-Square transformationsEm-Square transformations Em-Square transformations according to Em-Square transformations according to
transformation array (matrix)transformation array (matrix) Transformation matrix Transformation matrix
[a b c d t[a b c d tx x tty y ] ]
defines linear transformation of the coordinated defines linear transformation of the coordinated pair (x,y) into (x’,y’) as follows:pair (x,y) into (x’,y’) as follows:
x’=ax+cy+tx’=ax+cy+tx x y’=bx+dy+ty’=bx+dy+tyy
Em-Square transformationsEm-Square transformations By means of transformation matrix also are By means of transformation matrix also are
defined PostScript commands: translate, scale, defined PostScript commands: translate, scale, rotate, scalefont:rotate, scalefont:10 20 translate 10 20 translate => [1 0 0 1 10=> [1 0 0 1 10 20]20] x’=x+10x’=x+10 y’=y+20y’=y+2024 scale24 scale => [2 0 0 4 0=> [2 0 0 4 0 0] 0] x’=2xx’=2x y’=4yy’=4y 45 rotate 45 rotate => [cos(45) sin(45) -sin(45) cos(45) 0 0 ]=> [cos(45) sin(45) -sin(45) cos(45) 0 0 ] x’=cos(45)x-sin(45)yx’=cos(45)x-sin(45)y y’=sin(45)x+cos(45)yy’=sin(45)x+cos(45)y
30 scalefont30 scalefont => [30 0 0 30 0=> [30 0 0 30 0 0] makefont 0] makefont x’=30xx’=30x y’=30yy’=30y
Em-Square transformationsEm-Square transformations Transformation of the font is executed by transforming Transformation of the font is executed by transforming
the the coordinated system of each charactercoordinated system of each character bounding box (Em-Square), while bounding box (Em-Square), while existing existing coordinated system stays intactcoordinated system stays intact
m a k e f o n t PostScript command provides forming m a k e f o n t PostScript command provides forming new deformated (transformated) fonts:new deformated (transformated) fonts:
/fontname findfont [a b c d t/fontname findfont [a b c d tx x ttyy] makefont setfont ] makefont setfont
Beginning of the new letter is defined by the Beginning of the new letter is defined by the movement of the s h o w commandmovement of the s h o w command
Custom PostScript Custom PostScript Typographic ProceduresTypographic Procedures
k s h o w command enables the execution of the program k s h o w command enables the execution of the program procedure between every string character, as follows:procedure between every string character, as follows:{proc} string kshow{proc} string kshow1. The first string character is drawn, and the current1. The first string character is drawn, and the current position is moved for the amount of a letter width; position is moved for the amount of a letter width;2. Decimal number of ASCII of the first letter is set to2. Decimal number of ASCII of the first letter is set to stack, afterwards comes the second letter; stack, afterwards comes the second letter;3. The procedure {proc} is executed;3. The procedure {proc} is executed;4. Second letter is being printed…4. Second letter is being printed…
Procedure is not loaded before the first letter is shown. If the Procedure is not loaded before the first letter is shown. If the number of characters in the string is n, k s h o w command loads number of characters in the string is n, k s h o w command loads procedure n-1 timeprocedure n-1 time
Simple Program modules Simple Program modules with combination Em-with combination Em-
Square and custom Square and custom functionsfunctions
In our simple examples we use m a k e f o n t In our simple examples we use m a k e f o n t command in combination with k s h o w commandcommand in combination with k s h o w command
m a k e f o n t is used for Em-Square m a k e f o n t is used for Em-Square transformationtransformation
k s h o w is used for loading procedure n-1 time k s h o w is used for loading procedure n-1 time for n string characters and showing of charactersfor n string characters and showing of characters
[k j 0 k 0[k j 0 k 0 00 ] makefont] makefontx’=kxx’=kx y’=jx+kyy’=jx+ky
200 300 moveto/j 140 def /jkorak -10 def/k 70 def/FSTimesRom findfont [k j 0 k 0 0 ] makefont setfont/H 0 def 1 18 div /Hkorak exch def0 1 0.8 sethsbcolor{ pop pop /FSTimesRom findfont [k j 0 k 0 0 ] makefont setfont/H H Hkorak add def/j j jkorak add defH 1 0.8 sethsbcolor} (Thessaloniki, 2007 Typography) kshow
[k 0 j k 0[k 0 j k 0 00 ] makefont] makefontx’=kx+jyx’=kx+jy y’=jyy’=jy
200 300 moveto/j 130 def /jkorak -10 def/k 70 def/FSTimesRom findfont [k 0 j k 0 0 ] makefont setfont/H 0 def 1 18 div /Hkorak exch def0 1 0.8 sethsbcolor{ pop pop /FSTimesRom findfont [k 0 j k 0 0 ] makefont setfont/H H Hkorak add def/j j jkorak add defH 1 0.8 sethsbcolor } ( Thessaloniki, 2007 Typography) kshow
[k j j k 0[k j j k 0 00 ] makefont] makefontx’=kx+jyx’=kx+jy y’=jx+kyy’=jx+ky
20 300 moveto/j 140 def /jkorak -10 def/k 70 def/FSTimesRom findfont [k j j k 0 0 ] makefont setfont/H 0 def 1 18 div /Hkorak exch def0 1 0.8 sethsbcolor{ pop pop /FSTimesRom findfont [k j j k 0 0 ] makefont setfont/H H Hkorak add def/j j jkorak add defH 1 0.8 sethsbcolor } ( Thessaloniki, 2007 Typography) kshow
Complex Program module Complex Program module with combination Em-with combination Em-
Square and custom functionSquare and custom function in our complex program we use hybrid method of in our complex program we use hybrid method of
m a k e f o n t command in combination with k s h o w m a k e f o n t command in combination with k s h o w commandcommand
one control switch variable one control switch variable sklopkasklopka is implemented in is implemented in k s h o w procedure for switching 3 different k s h o w procedure for switching 3 different transformation matrices depending of transformation matrices depending of jj value value
jj value is changed in interval [130,-130] with step -10 value is changed in interval [130,-130] with step -10 starting from 130. When j is less or equal of -130 then j starting from 130. When j is less or equal of -130 then j is reset on 130 is reset on 130
200 100 moveto/j 130 def /jkorak -10 def /minj j neg def /maxj j def/k 70 def /m j def/n 0 def /sklopka 1 def /FSTimesRom findfont [k m n k 0 0 ] makefont setfont/H 0 def 1 18 div /Hkorak exch def0 1 0.8 sethsbcolor { pop pop /FSTimesRom findfont [k m n k 0 0 ] makefont setfont-10 rotate /H H Hkorak add def H 1 0.8 sethsbcolor sklopka 1 eq {/m j def /n 0 def
j 50 lt {/sklopka 2 def} if} ifsklopka 2 eq {/m 0 def /n j def
j 0 lt {/sklopka 3 def} if} ifsklopka 3 eq {/m j def /n j def
j minj le {/sklopka 1 def /j maxj def } if} if/j j jkorak add def} ( Thessaloniki, 2007 Digital Typography) kshow
ConclusionConclusion Procedures are interpreted by PostScript Procedures are interpreted by PostScript
interpreter for the given output resolution so interpreter for the given output resolution so their processing is on fastest possibly speed. their processing is on fastest possibly speed.
Procedures which are prepared in encapsulated Procedures which are prepared in encapsulated format can be integrate with conventional format can be integrate with conventional vector graphics.vector graphics.
This work gives the contribution to the This work gives the contribution to the development of digital typography and development of digital typography and typographic design through new native typographic design through new native PostScript procedures and new possibilities of PostScript procedures and new possibilities of designing original typographic solutionsdesigning original typographic solutions