Postscript def. eth and thorn
Moderator, John S. Quarterman
std-unix at longway.TIC.COM
Thu Apr 28 19:04:26 AEST 1988
From: uunet!mcvax!rhi.hi.is!marius (Marius Olafsson)
>From article <167 at longway.TIC.COM>, by BROOKS at CSSS-A.PRIME.COM (David Brooks):
> From: BROOKS at CSSS-A.PRIME.COM (David Brooks)
>
> Nobody, but nobody, knows how to design eth and thorn. If any
> Icelanders(?) would post a bitmap AND a PostScript definition of these
> four glyphs, many of us would be grateful.
Following is a small PostScript-program that defines a font
containing only the two ISO8859/1 letters 'eth' and 'thorn', both
in upper and lower case, as they should look like in Times-Roman.
The encoding vector puts them at the their places in the ISO 8859/1
character set. After defining the font the program uses it to print
a few copies of the letters in several sizes. Note that upper case
'Eth' is defined by using 'D' in the built-in Times-Roman font.
The letters are not typographically perfect, most notably the lower
case 'eth' (which is a very difficult and often badly designed letter),
but should suffice.
All fonts (almost) that Adobe sells, define these letters with the
same names as used below. They are also defined in the built-in fonts
with PostScript 42.2 and later. In that case, all that is needed to use
them is to include them in the 'Encoding'-vector.
--
Marius Olafsson marius at rhi.hi.is
University of Iceland ..!mcvax!hafro!rhi!marius
%%%%%%%%%%%%%%%%%%%%%%%%%% PostScript begins %%%%%%%%%%%%%%%%%%%%%%%%%%
/BuildCharDict 10 dict def
/IceFont 7 dict def
IceFont begin
/FontType 3 def
/FontMatrix [.001 0 0 .001 0 0] def
/FontBBox [-103 -191 1042 822 ]def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding (\320) 0 get /Eth put
Encoding (\360) 0 get /eth put
Encoding (\336) 0 get /Thorn put
Encoding (\376) 0 get /thorn put
/CharacterDefs 5 dict def
CharacterDefs begin
/.notdef {} def
/Eth % definition for the upper case 'Eth'. It is implemented
% as a Times-Roman 'D' with a line through its left side.
{ /Times-Roman findfont 1000 scalefont setfont
/trD (D) def
0 0 moveto
gsave
trD stringwidth
trD false charpath flattenpath pathbbox
grestore
setcachedevice % width should be like on 'D'
newpath
0 0 moveto
trD show
13 369 moveto
313 369 lineto
313 411 lineto
13 411 lineto
13 369 lineto
fill
} def
/eth % definition for the lower case 'eth'. It should look like
% an 'o' with a curved ascender from its right side, and
% a crossline at a 90 degree angle to the ascender. Note that
% the crossline is not quite right in this case.
{ 522 0 0 -18 540 738 setcachedevice % width should be like on 'o'
newpath
0.91 0.91 scale
261 6 moveto
50 4 48 445 261 445 curveto
490 445 490 4 261 4 curveto
261 -15 moveto
-44 -15 -44 469 261 469 curveto
324 469 373 430 403 401 curveto
420 438 340 563 276 608 curveto
162 555 lineto
137.36 582.3 lineto
248.5 632.3 lineto
211 666 157 700 110 712 curveto
130.4 721 lineto
183.4 710 240.4 681 291.7 651.3 curveto
404.76 703.3 lineto
425.4 679 lineto
323.4 631 lineto
596 434 543 -15 261 -15 curveto
eofill
} def
/Thorn % definition for the upper case 'Thorn'. It should look similar
% to a 'P' but the circle lies lower
{ 594 0 0 0 513 666 setcachedevice % width should be like on 'P'
newpath
32 3 moveto
32 16 lineto
92 16 129 25 133 65 curveto
133 600 lineto
133 639 98 654 32 654 curveto
32 660 lineto
307 660 lineto
307 654 lineto
246 654 211 636 208 600 curveto
208 540 lineto
350 540 lineto
470 537 548 461 548 360 curveto
548 261 467 175 309 173 curveto
276 174 242 176 208 180 curveto
208 65 lineto
208 34 243 16 307 16 curveto
307 3 lineto
31 3 lineto
208 224 moveto
208 475 lineto
208 496 246 501 298 501 curveto
438 501 478 413 478 351 curveto
478 264 435 204 285 204 curveto
258 203 236 217 208 224 curveto
eofill
} def
/thorn % definition for the lower case 'thorn'. It should look like
% a 'p' with an ascender as high as the 'l'.
{ 504 0 0 -234 468 702 setcachedevice % width should be like on 'p'
newpath
5 -217 moveto
5 -202 lineto
57 -202 95 -185 95 -130 curveto
95 578 lineto
95 615 55 628 40 628 curveto
28 628 11 622 5 619 curveto
5 631 lineto
158 689 lineto
158 387 lineto
213 441 254 466 294 466 curveto
410 466 470 337 470 237 curveto
470 135 389 -18 261 -18 curveto
224 -18 189 -2 158 26 curveto
158 -136 lineto
158 -187 182 -204 234 -204 curveto
234 -217 lineto
5 -217 lineto
158 87 moveto
158 341 lineto
176 364 216 404 254 404 curveto
359 404 393 298 393 206 curveto
393 140 366 24 258 24 curveto
212 24 178 50 158 87 curveto
eofill
} def
end
/BuildChar
{ BuildCharDict begin
/char exch def
/fontdict exch def
/charname fontdict /Encoding get
char get def
/charproc fontdict /CharacterDefs get
charname get def
gsave charproc grestore
end
} def
end
/IceTimes-Roman IceFont definefont pop
/IceTimes-Roman findfont 150 scalefont setfont
30 700 moveto
<D0F0DEFE> show
/IceTimes-Roman findfont 200 scalefont setfont
30 520 moveto
<D0F0DEFE> show
/IceTimes-Roman findfont 250 scalefont setfont
30 320 moveto
<D0F0> show
/IceTimes-Roman findfont 250 scalefont setfont
30 100 moveto
<DEFE> show
showpage
%%%%%%%%%%%%%%%%%%%%%%%%%%% PostScript ends %%%%%%%%%%%%%%%%%%%%%%%%%%%
Volume-Number: Volume 14, Number 12
More information about the Comp.std.unix
mailing list