a question about fonts

Norton, Chris chrisn at Kronos.com
Fri Apr 23 17:02:42 UTC 1999


Hi Andreas, Duane, Reiner & other Squeak friends!

Thanks for the lessons on fonts.  After reading your messages, I did a bit
of web browsing and I can summarize what I've learned so far about fonts
(for those lurkers that are interested).

*  There are 2 types of font:  Bitmap fonts and Outline fonts
*  Bitmap fonts are pre-rendered for a specific platform resolution and
point size.
*  Outline fonts (Andreas called them "Vector" fonts) are fonts that are
stored as coordinates that describe the outlines of their characters -- True
Type fonts (invented by Apple & Microsoft) are examples of outline fonts.
*  Outline fonts are rendered into Bitmap font formats by rasterizing
software (this connects the dots, draws the curves and fills each character
in)
*  Rasterizing software is generally built into most windowing operating
systems
*  There are two types of rasterizing - easy and hard
*  Easy rasterizing algorithms take the Outline font coordinates and create
Bitmap fonts out if them, but they do not make use of the auxiliary
information (often described as "hints").
*  The more complicated rasterizing algorithms use all available information
from the Outline font definition to make the most "pretty", scaleable font
it can.  This process takes longer, so the rendered font is generally cached
(like in the StrikeFont cache).

[I gather from your notes that Squeak's rasterizing algorithms only do the
"easy" rendering, which is accurate only in larger point sizes]

There is lots of technical jargon on the web (and in the Squeak sources)
about fonts, and it is no easy task to find documents that describe all of
the terms (I'm still wondering what "kerning", "ligatures" and "splines"
are, although I can guess at their meanings from the context)

Question:  Since OS's apparently come with built in rasterizing software,
couldn't a primitive call be added to Squeak to accomplish the more
difficult rasterizing tasks?  If an Outline font could be converted into a
Bitmap font, by passing it with size parameters to the OS rasterizing
routines, then the generated Bitmap font could be converted (if needed) and
cached in the StrikeFont cache.  [Note:  I still know nothing about
primitives, so this may be a dumb question]

Observation 1:  Even if Squeak's rasterizing algorithms can only handle the
"simple" rasterizing, I think that adding "asStrikeFont" behavior to the
TTSampleFontMorph would be of benefit for at least some point sizes.  These
could be used for banners, titles, etc. in our Morphic projects.

Observation 2:  Several people have told me that the full rasterizing
algorithms are also very complex and challenging to write.  The general
consensus is:  "don't go there".  This may be true, but I have found hints
on the web (http://w3c1.inria.fr/Fonts/#type1) that there are specs and free
implementations available that maybe could be ported to Squeak (apparently a
low quality rasterizer is available in Ghostscript, and rasterizing source
is distributed with X).  Unfortunately, I am not familiar with either of
these free sources.

This is a deep pool, but interesting stuff!

---==> Chris





More information about the Squeak-dev mailing list