[comp.fonts] Universal font standard

richard@gryphon.CTS.COM (Richard Sexton) (04/06/88)

Pretty wild idea, huh ?

Every computer that uses bit-mapped fonts has it's own font file
format.

Apollo fonts cant be used on Macs, Mac fonts can be used on Amigas
etc.

One can write conversion programs to convert font format from any
computer to any other computer, but as the number of different
types of computers goes up, this is a silly idea.

/* HP mode on */

What if...

... there was a common standard. Not some god-awful ANSI thing
that takes years to develop, nobody likes, and then Dennis says
it wont work anyway, but something simple.

Like maybe use ascii characters:



      *
     * *
    *   *
   *     *
  *********
 *         *
*           *


Thus the problem is only to convert one computers format to and from 
this format and universality is guarenteed between all other computers
supporting this.


Before I go any further: Comments ?


-- 
#   richard@gryphon.CTS.COM                  rutgers!marque!gryphon!richard

samalone@athena.mit.edu (Stuart A. Malone) (04/07/88)

The closest thing I've seen to a universal font standard is Adobe's Character
Bitmap Distribution Format, which they use to distribute bitmap fonts.  X
Windows version 11 is also using this format to distribute the fonts that come
with X.

CBDF files are plain ASCII files -- no meta or control characters -- so you can
move them around pretty easily.  The format can handle variable width and
variable height characters, kerning, and leading.  It also allows you to attach
"properties" to a font, which allows you to extend the format to include
machine-specific font information.  (X Windows uses this to encode hints to
programs using the font, like: how many pixels below the baseline should
underlines go and how thick should they be?)  All-in-all, it's a pretty
reasonable format, and would be quite appropriate for distributing fonts on the
net.

I have a copy of the CBDF specs (version 2.1) in postscript format.  (It
includes explanatory pictures, so it's hard to distribute in human-readable
ASCII form.)  However, the document is copyrighted by Adobe, so I don't think
I'm free to distribute it without their permission.  (Would anyone from Adobe
care to grant permission?)

				--Stuart A. Malone

gwyn@brl-smoke.ARPA (Doug Gwyn ) (04/07/88)

In article <3178@gryphon.CTS.COM> richard@gryphon.CTS.COM (Richard Sexton) writes:
>Thus the problem is only to convert one computers format to and from 
>this format and universality is guarenteed between all other computers
>supporting this.

This is of course a good idea if you can make it work.
I've considered doing this myself, but haven't had time.
The main reason people keep inventing new, similar-but-different
font file formats is that the discover deficiencies in
existing formats.  I know several font file formats rather
well and can find something lacking in each (not always
the same something).

Perhaps you should start by trying to figure out some
standard way of designating characters.  If that problem
isn't solved, how could a font format standard work?

karlton@decwrl.dec.com (Philip Karlton) (04/07/88)

In article <4403@bloom-beacon.MIT.EDU> samalone@athena.mit.edu (Stuart A. Malone) writes:
...
>I have a copy of the CBDF specs (version 2.1) in postscript format.  (It
>includes explanatory pictures, so it's hard to distribute in human-readable
>ASCII form.)  However, the document is copyrighted by Adobe, so I don't think
>I'm free to distribute it without their permission.  (Would anyone from Adobe
>care to grant permission?)

The actual copyright note now reads

	Copyright (C) 1984, 1987,Adobe Systems, Inc.

	Permission to use, copy, modify, and distribute this
	software and its documentation for any purpose and without
	fee is hereby granted, provided that the above copyright
	notice appear in all copies and that both that copyright
	notice and this permission notice appear in supporting
	doucmentation.

Adobe does not actually support the BDF format. They distribute their bitmap
fonts in 2.0 (usually called Adobe Screen Format). ASF files, to a certain
extent, cannot stand alone. They depend upon the AFM files to hold the bulk of
the font metrics and other interesting things found in font dictionaires.

The BDF format was developed with Adobe's permission explicitly to support the
needs of the X Window System: to have a single file hold all of the relevant
information about a single set of bitmap glyphs. The BDF format is not much of
extension of the AFM format.

Feel free to post a copy of the BDF specification.

PK

samalone@athena.mit.edu (Stuart A. Malone) (04/07/88)

In article <356@bacchus.DEC.COM> karlton@wsl.dec.com (Philip Karlton) writes:

>The actual copyright note now reads
>
>	Copyright (C) 1984, 1987,Adobe Systems, Inc.
>
>	Permission to use, copy, modify, and distribute this
>	software and its documentation for any purpose and without
>	fee is hereby granted, provided that the above copyright
>	notice appear in all copies and that both that copyright
>	notice and this permission notice appear in supporting
>	doucmentation.
>
>Feel free to post a copy of the BDF specification.
>
>PK

Indeed, I found a more recent copy of the file with the new copyright.  Here it
is.  People should also know that X11 comes with a large number of BDF fonts
and a font compiler to turn them into X11 fonts -- this would be a good
starting point for people who want to write their own font compilers for BDF
files.

============================== Cut Here ==============================
%!PS-Adobe-1.0
%%Title: bdf.mss
%%DocumentFonts: (atend)
%%Creator: Philip Karlton,WSL,8536677,4082526684 and Scribe 5(1501)
%%CreationDate: 16 September 1987 15:31
%%Pages: (atend)
%%EndComments
% PostScript Prelude for Scribe.
/BS {/SV save def 0.0 792.0 translate .01 -.01 scale} bind def
/ES {showpage SV restore} bind def
/SC {setrgbcolor} bind def
/FMTX matrix def
/RDF {WFT SLT 0.0 eq
  {SSZ 0.0 0.0 SSZ neg 0.0 0.0 FMTX astore}
  {SSZ 0.0 SLT sin SLT cos div SSZ mul SSZ neg 0.0 0.0 FMTX astore}
  ifelse makefont setfont} bind def
/SLT 0.0 def
/SI { /SLT exch cvr def RDF} bind def
/WFT /Courier findfont def
/SF { /WFT exch findfont def RDF} bind def
/SSZ 1000.0 def
/SS { /SSZ exch 100.0 mul def RDF} bind def
/AF { /WFT exch findfont def /SSZ exch 100.0 mul def RDF} bind def
/MT /moveto load def
/XM {currentpoint exch pop moveto} bind def
/UL {gsave newpath moveto dup 2.0 div 0.0 exch rmoveto
   setlinewidth 0.0 rlineto stroke grestore} bind def
/LH {gsave newpath moveto setlinewidth
   0.0 rlineto
   gsave stroke grestore} bind def
/LV {gsave newpath moveto setlinewidth
   0.0 exch rlineto
   gsave stroke grestore} bind def
/BX {gsave newpath moveto setlinewidth
   exch
   dup 0.0 rlineto
   exch 0.0 exch neg rlineto
   neg 0.0 rlineto
   closepath
   gsave stroke grestore} bind def
/BX1 {grestore} bind def
/BX2 {setlinewidth 1 setgray stroke grestore} bind def
/PB {/PV save def translate 100.0 -100.0 scale pop} bind def
/PE {PV restore} bind def
/SH /show load def
/MX {exch show 0.0 rmoveto} bind def
/W {0 32 4 -1 roll widthshow} bind def
/WX {0 32 5 -1 roll widthshow 0.0 rmoveto} bind def
%%EndProlog
%%Page: 0 1 
BS
0 SI
17 /Times-Bold AF
15089 14099 MT
(Character Bitmap Distribution Format 2.1)SH
15 SS 
24140 17944 MT
(Adobe Systems, Inc.)SH
12 SS 
21983 20664 MT
(Version of 16 September 87 15:31)SH
/Times-Roman SF
19425 39840 MT
(Copyright)SH
/Symbol SF
24593 XM
(\323)SH
/Times-Roman SF
25841 XM
(1984, 1987, Adobe Systems, Inc.)SH
18262 42766 MT
(Permission to use, copy, modify, and distribute this)SH
16165 44143 MT
(software and its documentation for any purpose and without)SH
17182 45520 MT
(fee is hereby granted, provided that the above copyright)SH
17547 46897 MT
(notice appear in all copies and that both that copyright)SH
17613 48274 MT
(notice and this permission notice appear in supporting)SH
26882 49651 MT
(documentation.)SH
ES
%%Page: 1 2 
BS
0 SI
10 /Times-BoldItalic AF
7200 4291 MT
(Character Bitmap Distribution Format)SH
/Times-Roman SF
53500 XM
(1)SH
14 /Times-Bold AF
7200 8138 MT
(1. Introduction)SH
12 /Times-Roman AF
8200 9515 MT
(This document)
130 W( describes Adobe Systems's character bitmap distribution format,
version 2.1.)129 W
7200 10892 MT
(The format is intended to be easily understood)
230 W( by both humans and computers. The format)231 W
7200 12269 MT
(described in this document is subject to change without prior notification.)SH
14 /Times-Bold AF
7200 16087 MT
(2. Tape Format)SH
12 /Times-Roman AF
8200 17464 MT
(Each tape)
209 W( is 1600 BPI, nine track, unlabeled, and contains two or more
files. Each file is)208 W
7200 18841 MT
(followed by an EOF mark. The last)
154 W( file on the tape is followed by two EOF marks. Physical)155 W
7200 20218 MT
(records contain 512 bytes. The last physical record in a file
\050preceding an EOF mark\051)
231 W( may)230 W
7200 21595 MT
(contain fewer than 512 bytes.)SH
8200 24074 MT
(Each file is encoded in)
22 W( the printable characters \050octal 40 through 176\051 of)23 W
10 SS 
43598 XM
(USASCII)SH
12 SS 
47810 XM
(plus carriage)23 W
7200 25451 MT
(return and linefeed. Each file consists of)
305 W( a sequence of variable-length lines. Each line is)304 W
7200 26828 MT
(terminated by a carriage-return \050octal 015\051 and line-feed
\050octal 012\051. The first file on the tape)
60 W( is)61 W
7200 28205 MT
(the Adobe Systems Copyright notice. Following)
100 W( files are font files.  The format of font files is)99 W
7200 29582 MT
(described in the following sections.)SH
10 SS 
31788 31680 MT
(1)SH
12 SS 
8200 32061 MT
(Note: font tapes may also be obtained in UNIX)115 W
/Times-Bold SF
32703 XM
(tar)SH
/Times-Roman SF
34651 XM
(format. Be sure to specify tar format if)116 W
7200 33438 MT
(desired. No other tape formats are currently supported by Adobe Systems.)SH
14 /Times-Bold AF
7200 37256 MT
(3. File Format)SH
12 /Times-Roman AF
8200 38633 MT
(Character bitmap information will)
15 W( be distributed in an)14 W
10 SS 
34589 XM
(USASCII)SH
12 SS 
38792 XM
(encoded, human readable form.)14 W
7200 40010 MT
(The information about a particular family and face at)
68 W( one size and orientation will be contained)69 W
7200 41387 MT
(in one file. The file begins with information pertaining to)
104 W( the face as a whole, followed by the)103 W
7200 42764 MT
(information and bitmaps for the individual characters.)SH
8200 45243 MT
(A font bitmap description file has the following general form, where each item)
26 W( is contained on)27 W
7200 46620 MT
(a separate line of text in the file. Items on a line are separated by spaces.)SH
9600 48186 MT
(1.)SH
10800 XM
(The word)290 W
10 SS 
16312 XM
(STARTFONT)SH
12 SS 
22680 XM
(followed by a version number)
290 W( indicating the exact file)289 W
10800 49472 MT
(format used. The version described here is number)SH
/Times-Bold SF
35435 XM
(2.1)SH
/Times-Roman SF
(.)SH
9600 51501 MT
(2.)SH
10800 XM
(One or more lines beginning with the word)22 W
10 SS 
31978 XM
(COMMENT)SH
12 SS 
(. These lines may be ignored)22 W
10800 52787 MT
(by any program reading the file.)SH
9600 54816 MT
(3.)SH
10800 XM
(The word)124 W
10 SS 
15979 XM
(FONT)SH
12 SS 
19013 XM
(followed by the)123 W
/Times-Bold SF
27216 XM
(family name)123 W
/Times-Roman SF
34130 XM
(and the)123 W
/Times-Bold SF
38176 XM
(face name)123 W
/Times-Roman SF
43888 XM
(separated by a)123 W
10800 56102 MT
(hyphen.)SH
9600 58131 MT
(4.)SH
10800 XM
(The word)87 W
10 SS 
15906 XM
(SIZE)SH
12 SS 
18404 XM
(followed by the)87 W
/Times-Bold SF
26499 XM
(point size)87 W
/Times-Roman SF
31808 XM
(of the characters, the)87 W
/Times-Bold SF
42456 XM
(x resolution)88 W
/Times-Roman SF
(, and)88 W
10800 59417 MT
(the)SH
/Times-Bold SF
12567 XM
(y resolution)SH
/Times-Roman SF
18902 XM
(of the device for which these characters were intended.)SH
9600 61446 MT
(5.)SH
10800 XM
(The word)68 W
10 SS 
15868 XM
(FONTBOUNDINGBOX)SH
12 SS 
26290 XM
(followed by the)68 W
/Times-Bold SF
34327 XM
(width in x)67 W
/Times-Roman SF
(,)SH
/Times-Bold SF
40263 XM
(height in y)67 W
/Times-Roman SF
(, and the x)67 W
10800 62732 MT
(and y displacement)
61 W( of the lower left corner from the)62 W
/Times-Bold SF
36754 XM
(origin)SH
/Times-Roman SF
(. \050See)
424 W( the examples in)62 W
10800 64018 MT
(section 4\051.)SH
9600 66047 MT
(6.)SH
10800 XM
(Optionally the word)121 W
10 SS 
21131 XM
(STARTPROPERTIES)SH
12 SS 
30609 XM
(followed by the)
121 W( number of properties \050)120 W
/Times-Bold SF
(p)SH
/Times-Roman SF
(\051)SH
10800 67333 MT
(that follow.)SH
10800 50 7200 69990 UL
8 SS 
8200 71655 MT
(1)SH
10 SS 
8600 72000 MT
(UNIX is a trademark of Bell Laboratories.)SH
7200 75600 MT
(Adobe Systems, Inc.)SH
38696 XM
(Version 2.1 of 16 September 87 15:31)SH
ES
%%Page: 2 3 
BS
0 SI
10 /Times-BoldItalic AF
7200 4291 MT
(Character Bitmap Distribution Format)SH
/Times-Roman SF
53500 XM
(2)SH
12 SS 
9600 8023 MT
(7.)SH
10800 XM
(Then come)52 W
/Times-Bold SF
16570 XM
(p)SH
/Times-Roman SF
17589 XM
(lines consisting of a word for the)52 W
/Times-Bold SF
34056 XM
(property name)52 W
/Times-Roman SF
42093 XM
(followed by either)53 W
10800 9309 MT
(an integer or string surrounded)
67 W( by quotedbl \050042\051. Internal quotedbl characters are)66 W
10800 10595 MT
(indicated by using two in a row.)SH
9600 12624 MT
(8.)SH
10800 XM
(The property section, if it exists, is terminated by ENDPROPERTIES)SH
9600 14653 MT
(9.)SH
10800 XM
(The word)SH
10 SS 
15732 XM
(CHARS)SH
12 SS 
19366 XM
(followed by the number of character segments \050)SH
/Times-Bold SF
(c)SH
/Times-Roman SF
(\051 that follow.)SH
9000 16682 MT
(10.)SH
10800 XM
(Then come)SH
/Times-Bold SF
16466 XM
(c)SH
/Times-Roman SF
17299 XM
(character segments of the form:)SH
13267 18248 MT
(a.)SH
14400 XM
(The word)292 W
10 SS 
19917 XM
(STARTCHAR)SH
12 SS 
26455 XM
(followed by up to 14 characters \050no blanks\051 of)293 W
14400 19534 MT
(descriptive)SH
/Times-Bold SF
19968 XM
(name)SH
/Times-Roman SF
23068 XM
(of the glyph.)SH
13200 21563 MT
(b.)SH
14400 XM
(The word)32 W
10 SS 
19395 XM
(ENCODING)SH
12 SS 
24947 XM
(followed by a positive integer representing the Adobe)31 W
14400 22849 MT
(Standard Encoding)
174 W( value. If the character is)175 W
/Times-Italic SF
36958 XM
(not)SH
/Times-Roman SF
38967 XM
(a member of the Adobe)175 W
14400 24135 MT
(Standard Encoding,)181 W
10 SS 
24529 XM
(ENCODING)SH
12 SS 
30231 XM
(is followed by -1 and an optional)
181 W( integer)180 W
14400 25421 MT
(specifying the glyph index.)SH
13267 27450 MT
(c.)SH
14400 XM
(The word)75 W
10 SS 
19482 XM
(SWIDTH)SH
12 SS 
23745 XM
(followed by the)75 W
/Times-Bold SF
31804 XM
(scalable width)75 W
/Times-Roman SF
39556 XM
(in x and)
75 W( y of character.)76 W
14400 28736 MT
(Scalable widths are in units)
98 W( of 1/1000th of the size of the character. If the)97 W
14400 30022 MT
(size of)
137 W( the character is)138 W
/Times-Italic SF
26123 XM
(p)SH
/Times-Roman SF
27161 XM
(points, the width information must be scaled by)138 W
/Times-Italic SF
14400 31308 MT
(p)SH
/Times-Roman SF
(/1000 to get the width of the character in printer's)
258 W( points. This width)257 W
14400 32594 MT
(information should be considered as a vector indication the position)
87 W( of the)88 W
14400 33880 MT
(next character's origin)
131 W( relative to the origin of this character.  To convert)130 W
14400 35166 MT
(the scalable width to the width in device pixels,)
209 W( multiply)210 W
10 SS 
44000 XM
(SWIDTH)SH
12 SS 
48398 XM
(times)SH
/Times-Italic SF
14400 36452 MT
(p)SH
/Times-Roman SF
(/1000 times)93 W
/Times-Italic SF
21122 XM
(r)SH
/Times-Roman SF
(/72 where)93 W
/Times-Italic SF
26841 XM
(r)SH
/Times-Roman SF
27701 XM
(is the device resolution in pixels per inch.  The)92 W
14400 37738 MT
(result is)
139 W( a real number giving the ideal print width in device pixels.  The)140 W
14400 39024 MT
(actual device width must of course be an integral)
100 W( number of device pixels)99 W
14400 40310 MT
(and is given in the next entry.)SH
13200 42339 MT
(d.)SH
14400 XM
(The word)191 W
10 SS 
19714 XM
(DWIDTH)SH
12 SS 
24259 XM
(followed by the width in x and)
191 W( y of the character in)192 W
14400 43625 MT
(device units.  Like the)9 W
10 SS 
25380 XM
(SWIDTH)SH
12 SS 
(, this width)
9 W( information is a vector indicating)8 W
14400 44911 MT
(the position of the next character's)
282 W( origin relative to the origin of this)283 W
14400 46197 MT
(character.)SH
13267 48226 MT
(e.)SH
14400 XM
(The word)68 W
10 SS 
19468 XM
(BBX)SH
12 SS 
21892 XM
(followed by the)68 W
/Times-Bold SF
29929 XM
(width)SH
/Times-Roman SF
33230 XM
(in x \050)67 W
/Times-Italic SF
(BBw)SH
/Times-Roman SF
(\051,)SH
/Times-Bold SF
39231 XM
(height)SH
/Times-Roman SF
42799 XM
(in y \050)67 W
/Times-Italic SF
(BBh)SH
/Times-Roman SF
(\051 and x)67 W
14400 49512 MT
(and y displacement \050)108 W
/Times-Italic SF
(BBox, BBoy)108 W
/Times-Roman SF
(\051 of the lower left corner from)
108 W( the)109 W
/Times-Bold SF
47932 XM
(origin)SH
/Times-Roman SF
14400 50798 MT
(of the character.)SH
13400 52827 MT
(f.)SH
14400 XM
(The optional word)725 W
10 SS 
25742 XM
(ATTRIBUTES)SH
12 SS 
32877 XM
(followed by the attributes as 4)724 W
/Times-Bold SF
14400 54113 MT
(hex-encoded)SH
/Times-Roman SF
21195 XM
(characters. The interpretation of these attributes)
95 W( is undefined)96 W
14400 55399 MT
(in this document.)SH
13200 57428 MT
(g.)SH
14400 XM
(The word)SH
10 SS 
19332 XM
(BITMAP)SH
12 SS 
(.)SH
13200 59457 MT
(h.)SH
/Times-Italic SF
14400 XM
(h)SH
/Times-Roman SF
15542 XM
(lines of)242 W
/Times-Bold SF
19894 XM
(hex-encoded bitmap)241 W
/Times-Roman SF
(, padded on the right with zero's to the)241 W
14400 60743 MT
(nearest byte \050i.e., multiple of 8\051.)SH
13466 62772 MT
(i.)SH
14400 XM
(The word)SH
10 SS 
19332 XM
(ENDCHAR)SH
12 SS 
(.)SH
9000 64801 MT
(11.)SH
10800 XM
(The file is terminated with the word)SH
10 SS 
28370 XM
(ENDFONT)SH
12 SS 
(.)SH
10 SS 
7200 75600 MT
(Adobe Systems, Inc.)SH
38696 XM
(Version 2.1 of 16 September 87 15:31)SH
ES
%%Page: 3 4 
BS
0 SI
10 /Times-BoldItalic AF
7200 4291 MT
(Character Bitmap Distribution Format)SH
/Times-Roman SF
53500 XM
(3)SH
14 /Times-Bold AF
7200 8138 MT
(4. Metric Information)SH
12 /Times-Roman AF
8200 9515 MT
(Figures 4-1 and 4-2 best illustrate the bitmap format and character
metric information.)SH
1 SS 
21600 7200 56881 PB mark
/inch {72 mul}def

/Helvetica findfont [10 0 0 10 0 0] makefont setfont

/ShowCache
   {$sc begin
    gsave
(Helvetica-Oblique) (/adobe/fonts/Helvetica/Oblique/)(j) 
0.0208333 -1.82131e-09 -1.82131e-09 -0.0208333 0 0 
22 9 7.5625 0 -2 -16  CachedChar
0 [6 8 ] Bits
1 [6 8 ] Bits
2 [6 8 ] Bits
3 [6 8 ] Bits
5 [5 7 ] Bits
6 [5 7 ] Bits
7 [5 7 ] Bits
8 [5 7 ] Bits
9 [4 6 ] Bits
10 [4 6 ] Bits
11 [4 6 ] Bits
12 [4 6 ] Bits
13 [4 6 ] Bits
14 [3 5 ] Bits
15 [3 5 ] Bits
16 [3 5 ] Bits
17 [3 5 ] Bits
18 [2 5 ] Bits
19 [1 4 ] Bits
20 [0 3 ] Bits
21 [0 2 ] Bits
 EndCachedChar
    grestore
    end
   } def

/$sc 120 dict def
$sc begin

/CN 100 string def
/CachedChar
   {/sl save def
    /yo exch def /xo exch def
    /yi exch def /xi exch def
    /wb exch def /hb exch def
    6 array astore /cmat exch def
    /cname exch def
    /fpath exch def
    /fname exch def
    DoScale                     % fit the character maximally onto the page
    Grid
    gsave
    DoLabs
    xo neg yo neg translate
    OrigMarks
   } def

/DoLabs
   {gsave
    /Helvetica findfont [1 0 0 1 0 0] makefont setfont
    0.1 setlinewidth
    newpath
    0 -1.5 moveto
    0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto
    0 -1.5 moveto wb -1.5 lineto
    -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto
    stroke newpath
    wb 0.5 sub (BBw ) stringwidth pop sub -0.5 moveto 
    gsave 1 -1 scale (BBw) show grestore
    -1 0.5 moveto -1.5 0 lineto -2 0.5 lineto
    -1.5 0 moveto -1.5 hb lineto
    -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto
    stroke newpath
    -1.5 (BBh ) stringwidth pop sub hb 1 sub moveto 
    gsave 1 -1 scale (BBh) show grestore
    xo neg -3 moveto 0 -3 lineto 
    0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto
    stroke newpath
    newpath
    xo neg -3 moveto
    gsave 1 -1 scale ( BBox) show grestore
    newpath
%    -3 yo neg moveto -3 0 lineto
%    0.5 0.5 rmoveto -0.5 -0.5 rlineto -0.5 0.5 rlineto
%    stroke newpath
    -4 yo neg moveto -4 hb lineto % ???? lower left??????
    -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto
    stroke newpath
    -4 (BBoy ) stringwidth pop sub yo neg moveto
    gsave 1 -1 scale (BBoy) show grestore 
    grestore
   } def

/DoScale
   {3 72 mul hb div dup scale   % hb == 3 inches
    0 hb translate
    1 -1 scale
   } def

/OrigMarks
   {gsave
    0 setgray
    .17 setlinewidth
    newpath 0 -1 moveto 0 1 lineto stroke
    newpath -1 0 moveto 1 0 lineto stroke
    .13 setlinewidth
    /xii xi round def
    newpath xii -.8 moveto 0 1.6 rlineto stroke
    newpath xii .8 sub 0 moveto 1.6 0 rlineto stroke
    grestore
   } def

/Bits
   {/xa exch def
    /yy exch yo add def
    gsave 0.2 setgray
    0 2 xa length 1 sub
       {/i exch def
        xa i get 1 xa i 1 add get
           {/xx exch xo add def
            newpath xx 0.2 add yy 0.2 add moveto 
            0 0.6 rlineto 0.6 0 rlineto 0 -0.6 rlineto closepath fill
           } for 
       } for
    grestore
   } def

/EndCachedChar
   {
    grestore
    sl restore
   } def

/Grid
   {gsave
    /wbround wb 8 div 0.5 add round cvi 8 mul def
    wbround 1 add 
       {newpath 0 0 moveto 0 hb lineto closepath fill
        1 0 translate 
        (-) print
       } repeat
    grestore
    gsave
    hb 1 add 
       {newpath 0 0 moveto wbround 0 lineto closepath fill
        0 1 translate
        (|) print
       } repeat
    grestore
    () = 
   } def
end

190 18 translate
ShowCache
cleartomark

 PE 12 SS 
20113 59504 MT
(BBw = 9, BBh = 22, BBox = -2, BBoy = -6)SH
23028 60790 MT
(Rounded character width = 8  0)SH
22506 62076 MT
(``+'' = character origin and width)SH
/Times-Bold SF
20767 63968 MT
(Figure 4-1:)SH
/Times-Roman SF
27367 XM
(An example of a descender)SH
10 SS 
7200 75600 MT
(Adobe Systems, Inc.)SH
38696 XM
(Version 2.1 of 16 September 87 15:31)SH
ES
%%Page: 4 5 
BS
0 SI
10 /Times-BoldItalic AF
7200 4291 MT
(Character Bitmap Distribution Format)SH
/Times-Roman SF
53500 XM
(4)SH
1 SS 
21600 7200 53280 PB mark
/inch {72 mul}def

/Helvetica findfont [10 0 0 10 0 0] makefont setfont

/ShowCache
   {$sc begin
    gsave
(Helvetica-Oblique) (FontPath)(rightquote) 
0.0222222 -1.94273e-09 -1.94273e-09 -0.0222222 0 0 
6 4 4.95555 0 2 -18  CachedChar
0 [1 3 ] Bits
1 [1 3 ] Bits
2 [1 3 ] Bits
3 [1 2 ] Bits
4 [0 2 ] Bits
5 [0 1 ] Bits
 EndCachedChar

    grestore
    end
   } def

/$sc 120 dict def
$sc begin

/CN 100 string def
/CachedChar
   {/sl save def
    /yo exch def /xo exch def
    /yi exch def /xi exch def
    /wb exch def /hb exch def
    6 array astore /cmat exch def
    /cname exch def
    /fpath exch def
    /fname exch def
    DoScale                     % fit the character maximally onto the page
    Grid
    gsave
    DoLabs
    xo neg yo neg translate
    OrigMarks
   } def

/DoLabs
   {gsave
    /Helvetica findfont [1 0 0 1 0 0] makefont setfont
    0.1 setlinewidth
    newpath
    0 -1.5 moveto
    0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto
    0 -1.5 moveto wb -1.5 lineto
    -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto
    stroke newpath
    wb 0.5 sub (BBw ) stringwidth pop sub -0.5 moveto 
    gsave 1 -1 scale (BBw) show grestore
    -1 0.5 moveto -1.5 0 lineto -2 0.5 lineto
    -1.5 0 moveto -1.5 hb lineto
    -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto
    stroke newpath
    -1.5 (BBh ) stringwidth pop sub hb 1 sub moveto 
    gsave 1 -1 scale (BBh) show grestore
    xo neg -3 moveto  0 -3 lineto 
    -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto
    stroke newpath
    newpath
    0.5 -3 moveto gsave 1 -1 scale ( BBox) show grestore
    newpath
    -4 yo neg moveto 0 -12 rlineto
%    -3 yo neg moveto -3 yo neg hb add lineto % ???? lowerleft?
    0.5 0.5 rmoveto -0.5 -0.5 rlineto -0.5 0.5 rlineto
    stroke newpath
    -4 (BBoy ) stringwidth pop sub yo neg moveto
    gsave 1 -1 scale (BBoy) show grestore 
    grestore
   } def

/DoScale
   {
%    3 72 mul hb div dup scale          % hb == 3 inches
%   0 hb translate
%    1 -1 scale
    3 72 mul 22 div dup scale
    0 22 translate 
    1 -1 scale
    } def

/OrigMarks
   {gsave
    0 setgray
    .17 setlinewidth
    newpath 0 -1 moveto 0 1 lineto stroke
    newpath -1 0 moveto 1 0 lineto stroke
    .13 setlinewidth
    /xii xi round def
    newpath xii -.8 moveto 0 1.6 rlineto stroke
    newpath xii .8 sub 0 moveto 1.6 0 rlineto stroke
    grestore
   } def

/Bits
   {/xa exch def
    /yy exch yo add def
    gsave 0.2 setgray
    0 2 xa length 1 sub
       {/i exch def
        xa i get 1 xa i 1 add get
           {/xx exch xo add def
            newpath xx 0.2 add yy 0.2 add moveto 
            0 0.6 rlineto 0.6 0 rlineto 0 -0.6 rlineto closepath fill
           } for 
       } for
    grestore
   } def

/EndCachedChar
   {
    grestore
    sl restore
   } def

/Grid
   {gsave
    /wbround wb 8 div 0.5 add round cvi 8 mul def
    wbround 1 add 
       {newpath 0 0 moveto 0 hb lineto closepath fill
        1 0 translate 
        (-) print
       } repeat
    grestore
    gsave
    hb 1 add 
       {newpath 0 0 moveto wbround 0 lineto closepath fill
        0 1 translate
        (|) print
       } repeat
    grestore
    () = 
   } def
end

190 18 translate
ShowCache
cleartomark

 PE 12 SS 
19836 55903 MT
(BBh = 6, BBw = 4, BBox = +2, BBoy = +12)SH
23178 57189 MT
(Rounded character width = 5 0)SH
/Times-Bold SF
14464 59081 MT
(Figure 4-2:)SH
/Times-Roman SF
21064 XM
(An example with the origin outside the bounding box)SH
10 SS 
7200 75600 MT
(Adobe Systems, Inc.)SH
38696 XM
(Version 2.1 of 16 September 87 15:31)SH
ES
%%Page: 5 6 
BS
0 SI
10 /Times-BoldItalic AF
7200 4291 MT
(Character Bitmap Distribution Format)SH
/Times-Roman SF
53500 XM
(5)SH
14 /Times-Bold AF
7200 8138 MT
(5. An Example File)SH
12 /Times-Roman AF
8200 9515 MT
(Figure 5-1 is an abbreviated example of)
237 W( a bitmap file containing the specification of two)238 W
10 SS 
24969 10511 MT
(2)SH
12 SS 
7200 10892 MT
(characters \050the j and quoteright in 4\051.)SH
9 /Courier-Bold AF
9360 12785 MT
(STARTFONT 2.1)SH
9360 13823 MT
(COMMENT This is a sample font in 2.1 format.)SH
9360 14861 MT
(FONT Helvetica-Bold)SH
9360 15899 MT
(SIZE 8 200 200)SH
9360 16937 MT
(FONTBOUNDINGBOX 9 24 -2 -6)SH
9360 17975 MT
(STARTPROPERTIES 2)SH
9360 19013 MT
(MinSpace 4)SH
9360 20051 MT
(Copyright "Copyright \050c\051 1987 Adobe Systems, Inc.")SH
9360 21089 MT
(ENDPROPERTIES)SH
9360 22127 MT
(CHARS 2)SH
9360 23165 MT
(STARTCHAR j)SH
9360 24203 MT
(ENCODING 106)SH
9360 25241 MT
(SWIDTH 355 0)SH
9360 26279 MT
(DWIDTH 8 0)SH
9360 27317 MT
(BBX 9 22 -2 -6)SH
9360 28355 MT
(BITMAP)SH
9360 29393 MT
(0380)SH
9360 30431 MT
(0380)SH
9360 31469 MT
(0380)SH
9360 32507 MT
(0380)SH
9360 33545 MT
(0000)SH
9360 34583 MT
(0700)SH
9360 35621 MT
(0700)SH
9360 36659 MT
(0700)SH
9360 37697 MT
(0700)SH
9360 38735 MT
(0E00)SH
9360 39773 MT
(0E00)SH
9360 40811 MT
(0E00)SH
9360 41849 MT
(0E00)SH
9360 42887 MT
(0E00)SH
9360 43925 MT
(1C00)SH
9360 44963 MT
(1C00)SH
9360 46001 MT
(1C00)SH
9360 47039 MT
(1C00)SH
9360 48077 MT
(2C00)SH
9360 49115 MT
(7800)SH
9360 50153 MT
(F000)SH
9360 51191 MT
(E000)SH
9360 52229 MT
(ENDCHAR)SH
9360 53267 MT
(STARTCHAR quoteright)SH
9360 54305 MT
(ENCODING 39)SH
9360 55343 MT
(SWIDTH 223 0)SH
9360 56381 MT
(DWIDTH 5 0)SH
9360 57419 MT
(BBX 4 5 2 12)SH
9360 58457 MT
(ATTRIBUTES 01C0)SH
9360 59495 MT
(BITMAP)SH
9360 60533 MT
(70)SH
9360 61571 MT
(70)SH
9360 62609 MT
(60)SH
9360 63647 MT
(E0)SH
9360 64685 MT
(C0)SH
9360 65723 MT
(ENDCHAR)SH
9360 66761 MT
(ENDFONT)SH
12 /Times-Bold AF
22382 68653 MT
(Figure 5-1:)SH
/Times-Roman SF
28982 XM
(A short example file)SH
10800 50 7200 69990 UL
8 SS 
8200 71655 MT
(2)SH
10 SS 
8600 72000 MT
(Helvetica)SH
/Symbol SF
(\322)SH
/Times-Roman SF
13472 XM
(is a registered trademark of Allied Corporation.)SH
7200 75600 MT
(Adobe Systems, Inc.)SH
38696 XM
(Version 2.1 of 16 September 87 15:31)SH
ES
%%Page: i 7 
BS
0 SI
10 /Times-BoldItalic AF
7200 4291 MT
(Character Bitmap Distribution Format)SH
/Times-Roman SF
53722 XM
(i)SH
14 /Times-Bold AF
25272 8138 MT
(Table of Contents)SH
13 SS 
9150 9482 MT
(1. Introduction)SH
53350 XM
(1)SH
9150 10826 MT
(2. Tape Format)SH
53350 XM
(1)SH
9150 12170 MT
(3. File Format)SH
53350 XM
(1)SH
9150 13514 MT
(4. Metric Information)SH
53350 XM
(3)SH
9150 14858 MT
(5. An Example File)SH
53350 XM
(5)SH
10 /Times-Roman AF
7200 75600 MT
(Adobe Systems, Inc.)SH
38696 XM
(Version 2.1 of 16 September 87 15:31)SH
ES
%%Page: ii 8 
BS
0 SI
10 /Times-BoldItalic AF
7200 4291 MT
(Character Bitmap Distribution Format)SH
/Times-Roman SF
53444 XM
(ii)SH
14 /Times-Bold AF
26244 8138 MT
(List of Figures)SH
13 SS 
9150 9482 MT
(Figure 4-1:)
SH( An)
650 W( example of a descender)SH
53350 XM
(3)SH
9150 10826 MT
(Figure 4-2:)
SH( An)
650 W( example with the origin outside the bounding box)SH
53350 XM
(4)SH
9150 12170 MT
(Figure 5-1:)
SH( A)
650 W( short example file)SH
53350 XM
(5)SH
10 /Times-Roman AF
7200 75600 MT
(Adobe Systems, Inc.)SH
38696 XM
(Version 2.1 of 16 September 87 15:31)SH
ES
%%Trailer
%%Pages: 8 
%%DocumentFonts: Times-Roman Times-Bold Symbol Times-BoldItalic
Times-Italic Courier-Bold

bowen@sunybcs.UUCP (Devon E Bowen) (04/07/88)

In article <3178@gryphon.CTS.COM> richard@gryphon.CTS.COM (Richard Sexton) writes:
>Pretty wild idea, huh ?
>
>Before I go any further: Comments ?

Well, the problem is that as resolution increases (or the size of the fonts
get bigger) you're going to have missing information. That's always been a
problem with bitmap fonts. I'm for pushing something more along the lines
of what PostScript does. By defining the font as a collection of lines and
curves, magnification only makes the fonts bigger. All the continuity is
still there even if you blow up the character to a full page. If a standard
would be made, it would have to do something like this in order to satisfy
everyone and to allow for changes in technology.

				    Devon Bowen (KA2NRC)
				    University at Buffalo

*********************************************************
uucp:	   ..!{ames,boulder,decvax,rutgers}!sunybcs!bowen
Internet:  bowen@cs.Buffalo.EDU
BITNET:    bowen@sunybcs.BITNET
*********************************************************

ken@cs.rochester.edu (Ken Yap) (04/07/88)

|Well, the problem is that as resolution increases (or the size of the fonts
|get bigger) you're going to have missing information. That's always been a
|problem with bitmap fonts. I'm for pushing something more along the lines
|of what PostScript does. By defining the font as a collection of lines and
|curves, magnification only makes the fonts bigger. All the continuity is
|still there even if you blow up the character to a full page. If a standard
|would be made, it would have to do something like this in order to satisfy
|everyone and to allow for changes in technology.

Before we run off and reinvent the wheel, I suggest we look at what
electronic typesetting has been doing for a while. A book I recently
read explained some half a dozen formats, including bitmap, run-length,
outline, grey-scale. The representations are well known, it's just that
every manufacturer has their format. I don't know what efforts are
being made to standardize font representation for high-res equipment,
but I think it would be worthwhile to track their efforts, since the
problems with screen fonts are a subset of theirs.

	Ken

chip@ateng.UUCP (Chip Salzenberg) (04/08/88)

In article <3178@gryphon.CTS.COM> richard@gryphon (Richard Sexton) writes:
>Pretty wild idea, huh ?

Sure is...

>What if...
>
>... there was a common standard. Not some god-awful ANSI thing
>that takes years to develop, nobody likes, and then Dennis says
>it wont work anyway, but something simple.

Well, just because the output is bit-mapped doesn't mean that a bitmap is
the best representation.  A bitmap is a great data format for representing
snow (pseudo-random bits), but for something as orderly as a font it would
be more efficient to use another representation.

Try these on for size:

    1.  How about a format that describes the shape (outline) of the
        character.  Similarities here to Adobe's font technology, with
        echos of the Apple II shape table.

    2.  How about a series of numbers, one or more pairs per X position,
        which describe the Y positions at which the body of the character
        begins/ends.  This will be smaller than a bitmap while still
        providing exactly the same information; and generating a bitmap
        from this format is trivial.

I happen to like (1) if you intend to scale the font, (2) otherwise.
#2 could easily be done in all-ASCII with appropriate punctuation.
#1 could also be ASCII, I suppose, but I've never thought about it.

Any other ideas, folks?
--
Chip Salzenberg                 "chip@ateng.UU.NET" or "codas!ateng!chip"
A T Engineering                 My employer's opinions are a trade secret.
       "Anything that works is better than anything that doesn't."

greid@ondine (Glenn Reid) (04/09/88)

The document from Adobe Systems describing the Character Bitmap
Distribution Format is, indeed, a copyrighted document.  However, we
made the source to it available and we send it to people so that you
can use it.  You may redistribute the document far and wide, as long as
our copyright notice is intact.

It is also available from our file server.  Send mail to
"ps-file-server@adobe.COM" or "..{decwrl,sun}!adobe!ps-file-server"
containing the line:

	send Documents bitmaps.ps

If you have never used the file server before, you might send it a
message containing the word "help".

 Glenn Reid
 Adobe Systems, Developer Support

hrs@homxb.UUCP (H.SILBIGER) (04/09/88)

A six-part standard is being drafted to allow for the intechange of
font and character information: ISO DIS 9541 - Information processing -
Font and character information interchange.

The standard includes procedures of the registration of fonts, and
an organization has been set up to act as registrar.

Information could be obtained from Archie Provan at the Rochester Institute
of Technology.

The standardization work is taking place in the X3V1 Ofiice and Publishing
Systems standards committee, and internationally in the ISO/IEC JTC1/SC18
commitee.

Herman Silbiger homxb!hrs@ATT.COM

gwyn@brl-smoke.ARPA (Doug Gwyn ) (04/10/88)

In article <219@ateng.UUCP> chip@ateng.UUCP (Chip Salzenberg) writes:
>How about a format that describes the shape (outline) of the character.
>...
I happen to like (1) if you intend to scale the font,

Well, I don't!  Isomorphic fonts (ones that are simply linearly
scaled for different sizes) look ugly except near their original
design size.  If we're going to put a lot of effort into font
description, let's do it right.

ken@cs.rochester.edu (Ken Yap) (04/10/88)

|Well, I don't!  Isomorphic fonts (ones that are simply linearly
|scaled for different sizes) look ugly except near their original
|design size.  If we're going to put a lot of effort into font
|description, let's do it right.

In TeX, the design size and magnification are separated. cmtt12.300pk
means a 12 point tt font at design size, while cmtt10.360pk means a 10
point tt font at 120% design size. They look different.  Fonts that
scale linearly do not have a design size suffix. Of the TeX fonts, only
cminch (Inch-High Sans Serif Bold Extended Caps and Digits) lacks the
design size suffix.

So either you have to indicate in the font description how metrics
should vary with design size (like what METAFONT files do) or have
sub-families of fonts, by design size.

	Ken

nelson@sun.soe.clarkson.edu (Russ Nelson) (04/10/88)

In article <7645@brl-smoke.ARPA> gwyn@brl.arpa (Doug Gwyn (VLD/VMB) <gwyn>) writes:
>Isomorphic fonts (ones that are simply linearly
>scaled for different sizes) look ugly except near their original
>design size.  If we're going to put a lot of effort into font
>description, let's do it right.

Doug is right.  Isomorphic fonts look nice iff you have enough bits to
represent them, which implies that low-resolution fonts should be represented
using bitmaps, while high-resolution fonts should be represented using
outlines.
-russ


-- 
-russ
AT&T: (315)268-6591  BITNET: NELSON@CLUTX  Internet: nelson@clutx.clarkson.edu
GEnie: BH01  Compu$erve: 70441,205

elliott@glacier.steinmetz (04/12/88)

In article <3178@gryphon.CTS.COM> richard@gryphon.CTS.COM (Richard Sexton) writes:
>Like maybe use ascii characters:
>
>Thus the problem is only to convert one computers format to and from 
>this format and universality is guarenteed between all other computers
>supporting this.

One problem with this idea is that a simple picture of the characters
in a font isn't the end of the story. You need to know some
information about the overall size of the font, and for each character
what the baseline and origin are, what kerning limits are, and so
forth.

And on some machines this information doesn't even exist to start
with...


 .     .    .    .   .  . ... .  .   .    .    .     .    .   .   .  . ... . .

 Jim Elliott                       /    ...!seismo!uunet!steinmetz!crd!elliott
                                  /
 "Don't look, son, it's          /      Jim_Elliott%mts@itsgw.rpi.edu [school]
  a secular humanist!"          /  (or)     elliott@ge-crd.arpa	      [work]
 .     .    .    .   .  . ... .  .   .    .    .     .    .   .   .  . ... . .

trb@ima.ISC.COM (Andrew Tannenbaum) (04/14/88)

In article <701@sun.soe.clarkson.edu> nelson@sun.soe.clarkson.edu.UUCP (Russ Nelson) writes:
> Doug is right.  Isomorphic fonts look nice iff you have enough bits to
> represent them, which implies that low-resolution fonts should be represented
> using bitmaps, while high-resolution fonts should be represented using
> outlines.

As Dr Peter Karow points out in "Digital Formats for Typefaces"
URW Verlag 1987 ISBN 3-926515-01-5 (this is the English Version)

	(p. 106)
	Inherent in the hierarchy, and fundamental in the URW
	philosophy, is that the IK format has a digital precision which
	is greater than that required by the typesetting machine.
	Letters in IK format are stored in a raster of 15,000 x 15,000
	per em.  This has the advantage that when preparing coarser
	rasters there is no interference between the stored raster and
	the target raster.

He goes on to explain that at 400 rasters/em, which he considers the
current average for good typesetting machines, the samples would be
every 37.5 lines, which is sufficient, whereas if you were sampling
from an 800 rasters/em master, there would be major problems in
generating a smooth image at both 400 and 401 rasters/em (for
instance).

That takes care of the problem of reducing the incidence of aliasing
problems in scaling - a finely grained master coupled with other
smoothing strategies will get you your best scaled bitmap typefaces.

For commonly used coarse grain typefaces, like typical screen
typefaces, you are going to get more palatable results by hand tuning
anyway.  My point is that I don't think that isomorphism is the real
problem, I think that if you take any typeface and scale it down to 100
rasters/inch (current screen size, approximately), it's going to look
ugly without tuning.

The notion of 15000 raster/em masters might make you uncomfortable, but
your system isn't going to be continually referring to the master.
I just don't think that you can just dismiss isomorphic typefaces.

I am talking about the case where you are generating typeface families,
not the case where you have a Postscript engine and you want to
generate a 11 point Times Roman on a 87 degree slant on on a 13 degree
baseline on a 300 dots/inch grid on the fly.  I don't think anyone is
going to give you beautiful typefaces yet in real-time with those kind
of constraints, though Adobe does a hell of a job.  Karow does discuss
other formats besides bitmap, he covers various vector formats and
greyscale formats.

While I don't worship Dr. Karow as the one true master, I would
definitely recommend his book.  If anyone can suggest a better
reference for digital typeface formats, let me know.

	Andrew Tannenbaum   Interactive   Boston, MA   +1 617 247 1155

ken@cs.rochester.edu (Ken Yap) (04/14/88)

|As Dr Peter Karow points out in "Digital Formats for Typefaces"
|URW Verlag 1987 ISBN 3-926515-01-5 (this is the English Version)
|
|	(p. 106)
|	Inherent in the hierarchy, and fundamental in the URW
|	philosophy, is that the IK format has a digital precision which
|	is greater than that required by the typesetting machine.
|	Letters in IK format are stored in a raster of 15,000 x 15,000
|	per em.  This has the advantage that when preparing coarser
|	rasters there is no interference between the stored raster and
|	the target raster.
|
|He goes on to explain that at 400 rasters/em, which he considers the
|current average for good typesetting machines, the samples would be
|every 37.5 lines, which is sufficient, whereas if you were sampling
|from an 800 rasters/em master, there would be major problems in
|generating a smooth image at both 400 and 401 rasters/em (for
|instance).

Perhaps I misinterpreted Karlow, but I understood this 15,000 line per
em raster to be conceptual or at least a transient product during the
generation of a lower resolution raster. As the appendix indicates,
there is a semi-hierarchy of storage formats. My interpretation is that
Ikarus stores glyphs as outlines primarily and the resolution of the
coordinate system is 15k per em.

An interesting fact is that Ikarus fonts are digitized by hand from
large masters. Karlow talks about photographic techniques and asserts
that they found hand digitizing superior. This after years of trial.
At first they couldn't believe that simple was best.  Karlow claims
that some "respectable" foundries have marketed typefaces with noise
from ink smudges in the photo masters!

To be fair, there is a lot more to it than just running out and buying
a tablet and crosshair. It's all in the book. Recommended.

	Ken

hmm@laura.UUCP (Hans-Martin Mosner) (04/15/88)

In article <8620@sol.ARPA> ken@cs.rochester.edu (Ken Yap) writes:
>Perhaps I misinterpreted Karlow, but I understood this 15,000 line per
>em raster to be conceptual or at least a transient product during the
>generation of a lower resolution raster. As the appendix indicates,
>there is a semi-hierarchy of storage formats. My interpretation is that
>Ikarus stores glyphs as outlines primarily and the resolution of the
>coordinate system is 15k per em.

That's the way I understood it, too.  I also talked to the URW people at
a fair recently.  They've shown Mac and PC versions of their font design
software which looked really nice.
I've also bought the book there (the english version, that is :-), and
can recommend it.

	Hans-Martin

PS:  In a recent article I asked if someone has pointers to grayscale fonts.
Obviously this article got lost, or no one knows what grayscale fonts are.
Karlow talks about them, but when I asked him whether such fonts were
available from URW, he said no.  Looks like the market demand for such fonts
is not high enough.  I simply can't understand why everybody is still using
these ugly bitmapped fonts on CRTs when color/grayscale displays of sufficient
resolution are available.  I tested the grayscale example of the book on 2
differebt machines, and the characters look much more readable than the
b/w bitmap characters.
So here's my question again:  Does anyone in this group have pointers to
grayscale fonts (any format, as long as it's documented somewhere) ?
-- 
Hans-Martin Mosner		| Don't tell Borland about Smalltalk - |
hmm@unido.{uucp,bitnet}		| they might invent Turbo Smalltalk !  |
------------------------------------------------------------------------
Disclaimer: Turbo Smalltalk may already be a trademark of Borland...

ken@cs.rochester.edu (Ken Yap) (04/18/88)

I don't have greyscale font software or pointers to any but I have a
bunch of references. No multiplane displays to play with around here
:-(.  I suppose that to make some homebrew greyscale fonts for TeX
previewing one could get METAFONT to generate 16x normal resolution,
then run a filter over the bitmap. I hear somebody already did this.
There is one catch: a 16x16 block has 0 bit to 256 bit occupancy, not 0
to 255!

	Ken

Path: rochester!seismo!brl-adm!rutgers!sri-spam!sri-unix!hplabs!hpcea!hpcehfe!avi
From: avi@hpcehfe.HP.COM (Avi Naiman)
Newsgroups: comp.graphics
Subject: Re: anti-aliasing
Message-ID: <3040001@hpcehfe.HP.COM>
Date: 13 Feb 87 23:05:26 GMT
References: <695@mit-amt.MEDIA.MIT.EDU>
Organization: Corporate Human Factors Engineering
Lines: 97

Here is a bibliography I've put together on filtering text for grayscale
displays (anti-aliasing is only one part of the problem) and related topics
such as the Human Visual System and Digital Typography.

If anyone knows of other relevant references, I'd appreciate hearing about them.


Bige83    Bigelow, C. and D.  Day,  ``Digital  Typography,''
          Scientific  American, Volume 249, Number 2, August
          1983, pp. 106-119.

Blac46    Blackwell, H. R.,  ``Contrast  Thresholds  of  the
          Human  Eye,''  Journal  of  the Optical Society of
          America, Volume 36, 1946, pp. 642-643.

Bruc86    Bruckstein, A. M., ``On  Optimal  Image  Digitiza-
          tion,''  Electrical Engineering Publication Number
          577, Faculty of Electrical  Engineering,  Technion
          Israel  Institute  of  Technology,  Haifa, Israel,
          February 1986.

Buck77    Buckler, A. T., ``A Review of  the  Literature  on
          the  Legibility  of  AlphaNumerics  on  Electronic
          Displays,'' Technical Memo 16-77, U. S. Army Human
          Engineering  Laboratory, Aberdeen  Proving Ground,
          Maryland, May 1977.

Catm79    Catmull,  E.,    ``A   Tutorial  on   Compensation
          Tables,''  Computer Graphics, Volume 13, Number 2,
          August 1979, pp. 1-7.  SIGGRAPH 1979 Proceedings.

Corn70    Cornsweet,  T.  N.,  Visual  Perception,  Academic
          Press, New York, 1970.

Crow78    Crow, F. C., ``The Use of Grayscale  for  Improved
          Raster  Display  of Vectors and Characters,'' Com-
          puter Graphics, Volume 12, Number 3, August  1978,
          pp. 1-6.  SIGGRAPH 1978 Proceedings.

Goul84    Gould, J. D. and N. Grischkowsky, ``Doing the Same
          Work  with  Hard  Copy  and  with Cathode-Ray Tube
          (CRT) Computer Terminals,'' Human Factors,  Volume
          26, Number 3, June 1984, pp. 323-337.

Gupt81    Gupta, S. and R. F. Sproull, ``Filtering Edges for
          Gray-Scale  Displays,''  Computer Graphics, Volume
          15, Number 3, August 1981, pp. 1-5.  SIGGRAPH 1981
          Proceedings.

Kaji81    Kajiya, J. and M. Ullner, ``Filtering High Quality
          Text  for  Display  on Raster Scan Devices,'' Com-
          puter Graphics, Volume 15, Number 3  August  1981,
          pp. 7-15.  SIGGRAPH 1981 Proceedings.

Koba80    Kobayashi, S. C.,  ``Optimization  Algorithms  for
          Grayscale  Fonts,''  B.  Sc. Thesis, Department of
          Electrical Engineering and Computer Science,  Mas-
          sachusetts  Institute  of  Technology,  Cambridge,
          Massachusetts, June 1980.

Lele80    Leler, W. J., ``Human Vision,  Anti-Aliasing,  and
          the  Cheap 4000 Line Display,'' Computer Graphics,
          Volume 14, Number 3, July 1980, pp. 308-313.  SIG-
          GRAPH 1980 Proceedings.

Naim85    Naiman, A.  C.,  ``High-Quality  Text  for  Raster
          Displays,''  M. Sc. Thesis, Department of Computer
          Science, University of Toronto, Toronto,  Ontario,
          1985.

Negr80    Negroponte,  N.,  ``Soft   Fonts,''   Proceedings,
          Society for Information Display, 1980.

Prat78    Pratt, W. K., Digital Image Processing, John Wiley
          and Sons, New York, 1978.

Schm83    Schmandt, C., ``Fuzzy Fonts,'' Proceedings of  the
          National Computer Graphics Association, 1983.

Seit79    Seitz, C., et al., ``Digital Video Display  System
          with  a  Plurality  of Gray-Scale Levels,'' United
          States Patent Number 4,158,200.

Shol82    Sholtz,  P.  N.,  ``Making  High-Quality   Colored
          Images  on  Raster  Displays,''  Computer  Science
          Research Report RC9632 (#42528), IBM T. J.  Watson
          Research   Center,  Yorktown  Heights,  NY  10598,
          October 1982.

Shur80    Shurtleff, D. A., How to  Make  Displays  Legible,
          Human  Interface  Design,  La  Mirada, California,
          1980.

Warn80    Warnock, J. E., ``The Display of Characters  Using
          Gray  Level  Sample  Arrays,''  Computer Graphics,
          Volume 14, Number 3, July 1980, pp. 302-307.  SIG-
          GRAPH 1980 Proceedings.