Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > by-pkgid > efc75c1dcfa45d4b2a545c38cda30759 > files > 130

pfaedit-020312-2mdk.i586.rpm

<HTML>
<HEAD>
  <!-- Created with AOLpress/2.0 -->
  <!-- AP: Created on: 6-Dec-2000 -->
  <!-- AP: Last modified: 11-Feb-2002 -->
  <TITLE>PfaEdit -- A postscript&reg; font editor</TITLE>
</HEAD>
<BODY>
<H1 Align=Center>
  PfaEdit<BR>
  <SMALL>A PostScript&reg; Font Editor</SMALL>
</H1>
<H2>
  <IMG SRC="splash.png" WIDTH="383" HEIGHT="398" ALIGN="Right">Table of Contents
</H2>
<UL>
  <LI>
    <A HREF="#Overview">Overview</A>
    <UL>
      <LI>
	<A HREF="#Installing">Installing</A>
      <LI>
	<A HREF="#Starting">Starting the program</A>
      <LI>
	<A HREF="#intro">Introductory concepts: splines, lines, points and paths</A>
      <LI>
	<A HREF="#Hints">Hints</A>
      <LI>
	<A HREF="#References">References</A>
      <LI>
	<A HREF="#FontView">Font View</A>
      <LI>
	<A HREF="#CharView">Outline Character View</A>
      <LI>
	<A HREF="#BitmapView">Bitmap Character View</A>
      <LI>
	<A HREF="#MetricsView">Metrics View</A>
    </UL>
  <LI>
    <A HREF="editexample.html">Example (&amp; Tutorial)</A>
  <LI>
    <A HREF="fontview.html">Font View</A>
    <UL>
      <LI>
	<A HREF="fontview.html#Encodings">Encodings</A>
      <LI>
	<A HREF="fontview.html#Unicode">Unicode</A>
      <LI>
	<A HREF="fontview.html#CID">CID keyed fonts</A>
      <LI>
	<A HREF="fontview.html#Vertical-Metrics">Vertical Metrics</A>
    </UL>
  <LI>
    <A HREF="charview.html">Outline Character View</A>
    <UL>
      <LI>
	<A HREF="charview.html#Layers">Layers</A>
      <LI>
	<A HREF="charview.html#Tools">Tools</A>
      <LI>
	<A HREF="charview.html#Vertical">Vertical view</A>
    </UL>
  <LI>
    <A HREF="bitmapview.html">Bitmap Character View</A>
    <UL>
      <LI>
	<A HREF="bitmapview.html#Layers">Layers</A>
      <LI>
	<A HREF="bitmapview.html#Tools">Tools</A>
    </UL>
  <LI>
    <A HREF="metricsview.html">Metrics View</A>
    <UL>
      <LI>
	<A HREF="metricsview.html#Entering">Entering non-ASCII characters</A>
    </UL>
  <LI>
    <A HREF="filemenu.html">Menu Commands</A>
    <UL>
      <LI>
	<A HREF="filemenu.html">File</A>
      <LI>
	<A HREF="editmenu.html">Edit</A>
      <LI>
	<A HREF="pointmenu.html">Points</A>
      <LI>
	<A HREF="elementmenu.html">Element</A>
      <LI>
	<A HREF="hintsmenu.html">Hints</A>
      <LI>
	<A HREF="viewmenu.html">View</A>
      <LI>
	<A HREF="metricsmenu.html">Metrics</A>
      <LI>
	<A HREF="cidmenu.html">CID</A>
      <LI>
	<A HREF="windowmenu.html">Window</A>
      <LI>
	<A HREF="helpmenu.html">Help</A>
      <LI>
	<A HREF="HotKeys.html">Hot Keys</A>
    </UL>
  <LI>
    <A HREF="locale.html">Localization</A>
  <LI>
    <A HREF="errrecovery.html">Error Recovery</A>
  <LI>
    <A HREF="sfdformat.html">Spline Font Database File Format</A>
  <LI>
    <A HREF="xres.html">X Resources</A>
    <UL>
      <LI>
	<A HREF="xres.html#Keyboards">Keyboards and Mice</A>
    </UL>
  <LI>
    <A HREF="cliargs.html">Command line arguments</A>
  <LI>
    <A HREF="scripting.html">Scripting</A>
  <LI>
    <A HREF="faqFS.html">Frequently Asked Questions</A>
  <LI>
    <A HREF="license.html">License and Copyright</A>
  <LI>
    <A HREF="index.html">Download</A><BR>
    &nbsp;
  <LI>
    Appendix: <A HREF="bezier.html">PostScript &lt;-&gt; TrueType Conversions</A>
  <LI>
    Appendix: <A HREF="corpchar.html">PfaEdit's use of the Unicode Private Use
    Area</A><BR>
    &nbsp;
  <LI>
    <A HREF="src.html">Source file overview</A> (out of date, but goes over the
    basics)<BR>
    &nbsp;
  <LI>
    <A HREF="sfds/index.html">Font samples</A>
</UL>
<P ALIGN=Center>
<H2>
  <A NAME="Overview">Overview</A>
</H2>
<P>
PfaEdit allows you to create and modify postscript fonts. You can save fonts
in several different postscript formats, and generate bitmaps.
<H3>
  <A NAME="Installing">Installing</A> a binary
</H3>
<UL>
  <LI>
    <A HREF="index.html#binary">Copy the distribution </A>to some directory on
    your machine
  <LI>
    <KBD>$ gunzip pfaedit-*.tgz</KBD>
  <LI>
    <KBD>$ tar xfv pfaedit.tar</KBD>
  <LI>
    <KBD>$ cp pfaedit /usr/local/bin</KBD>
    <!--<LI>
    <KBD>$ cp *.so* /usr/local/lib</KBD>
    <LI>
    <KBD>$ setenv LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH</KBD>-->
  <LI>
    <KBD>$ vi README</KBD>
</UL>
<H3>
  Building from a source distribution
</H3>
<UL>
  <LI>
    Copy the <A HREF="index.html#source">complete source archive</A> to some
    directory on your machine
  <LI>
    <KBD>$ gunzip *.tgz</KBD>
  <LI>
    <KBD>$ tar xf pfaedit_full.tar</KBD>
  <LI>
    <KBD>$ cd pfaedit </KBD>
  <LI>
    <KBD>$ configure</KBD>
  <LI>
    <KBD>$ make</KBD>
  <LI>
    <KBD>$ make install</KBD>
</UL>
<P>
Obviously you may choose to place the executable somewhere other than
/usr/local/bin.
<P>
(If you have already pulled down the sources and just want to update to a
new version then you only need to pull down those archives which have changed)
<P>
You may also want to pull down some extra fonts
<UL>
  <LI>
    <A HREF="http://bibliofile.mc.duke.edu/gww/fonts/Monospace/index.html">my
    monospace fonts</A>
  <LI>
    <A HREF="http://bibliofile.mc.duke.edu/gww/fonts/Caliban/index.html">my
    sans-serif font</A>
  <LI>
    <A HREF="http://czyborra.com/unifont/">The unifont</A>
  <LI>
    <A HREF="http://clr.nmsu.edu/~mleisher/cu.html">ClearlyU's font</A>
  <LI>
    <A HREF="http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html">X fixed</A>
</UL>
<P>
To install these, put them in a directory
<UL>
  <LI>
    $ mkfontdir
  <LI>
    $ xset fp+ `pwd`
</UL>
<P>
Again you should make sure that the xset line happens whenever X is started
on your machine (put it in your .xsession file).
<H3>
  <A NAME="Starting">Starting the program</A>
</H3>
<DL>
  <DT>
    <CODE>$ pfaedit -new</CODE>
  <DD>
    Will create a new postscript font with the ISO 8859-1 encoding (the international
    encoding standard for western europe, and the standard for most X fonts)
    and open a <A HREF="#FontView">font view </A>which will allow you to edit
    that font.
  <DT>
    <CODE>$ pfaedit fontname</CODE>
  <DD>
    Will open a <A HREF="#FontView">font view</A> looking at the font you selected.
    This may be a binary or ascii postscript type1 font (.pfa, .pfb or .gsf
    extensions), one of pfaedit's spline font database files
    (.<A HREF="sfd.html">sfd</A> extension), a postscript type 0 font (.ps extension,
    though the encoding will probably be lost here), a truetype font (.ttf or
    .ttc extension), an Open Type font (.otf) a mac resource file (.bin, .hqx
    or .dfont), or even a bitmap font (.bdf).
    <P>
    More than one fontname may be specified on the command line.
  <DT>
    <CODE>$ pfaedit "gulim.ttc(GulimChe)"</CODE>
  <DD>
    If a file format supports several fonts within the file (.ttc or mac resource
    files) then you may specify which font you want by following the filename
    with the font name in parentheses.
  <DT>
    <CODE>$ pfaedit</CODE>
  <DD>
    Will open a file picker dialog and allow you to browse your disk to find
    the appropriate font file, or create a new one.
</DL>
<P>
On Mac OS/X you must start XDarwin before you can start pfaedit. See the
<A HREF="Problems-MacOSX.html#Running">Mac specific notes</A> for more
info.<BR>
On windows under cygwin you must again start X first
<H3>
  <A NAME="intro">Introductory</A> concepts: Splines, Lines, Points and Paths
</H3>
<P>
What is a postscript font? What is a bitmap font?
<P>
Each character (or to be more precise, each glyph) in a font has a shape
and there are various ways of describing that shape on a computer. Postscript
fonts generally describe the outline of the shape and then color in the interior
of that outline, this coloring process is called rasterizing. On the other
hand a bitmap font describes each character by drawing a picture of that
character on a rectangular grid of pixels. There is a third type, a stroked
font, where each stem of the character is represented by one line down the
center of the stem, and the line is later drawn with a certain width. We
will not deal with stroked fonts directly (the
<A HREF="elementmenu.html#Expand">Expand Stroke</A> command can be used to
turn them into outlines).
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD><P ALIGN=Center>
      <I><IMG WIDTH="117" HEIGHT="201" SRC="outlinechar.png"></I><BR>
      A character's outline</TD>
    <TD><P ALIGN=Center>
      <IMG SRC="bitmapchar.png" WIDTH="117" HEIGHT="201">
      <P ALIGN=Center>
      A character's bitmap</TD>
    <TD><P ALIGN=Center>
      <IMG SRC="strokechar.png" WIDTH="208" HEIGHT="198"><BR>
      A stroked character<BR>
      (showing the equiv. outline in grey)</TD>
  </TR>
</TABLE>
<P>
An outline is composed of a set of paths. In the picture on the above left
the letter A is described by three different paths. The main one is on the
outside and the two smaller ones are internal. Each of these paths is composed
of a series of splines and line segments. Each spline is defined by four
points, two of which mark the end points of the spline and two more to describe
the slope of the spline at those end points. Here are <A HREF="bezier.html">two
splines</A> with all their points shown:
<P>
<IMG SRC="splines.gif" WIDTH="172" HEIGHT="179" ALIGN="Left">
<P>
The points which describe the slope are called control points. They are
represented here (and in pfaedit) by little blue x's. Moving a control point
will change the shape of the spline, but it will not alter where the spline
begins or ends.
<P>
<IMG SRC="pnts.gif" WIDTH="169" HEIGHT="165" ALIGN="Right">A series of splines
and lines are joined together to make a path. There are several possible
ways to make these joins as is shown in the example to the right. In each
case we have three points in approximately the same relative positions. The
three points are joined by splines or lines, but the type of joins alter
the appearance of the connections.
<P>
In the first case there are no control points and the result is two straight
lines, in the second case there is a line and a curved spline which are tangent
at their point of intersection, in the third case there are two splines which
are again tangent at their point of intersection. The point of intersection
in the first case is called a corner point, and the incoming and outgoing
splines or lines may be in any orientation with respect to each other. This
is represented in pfaedit by a square box. In the second case the point of
intersection is called a tangent point, it is represented by a triangle.
The third case is a curved point and is represented by a circle.
<P>
A path is closed when it comes back and joins its start. All paths in an
outline font should be closed. Once a path is closed in may be said to have
a direction, essentially this may be thought of as "Was the path created
in a clockwise or a counter-clockwise fashion?" (this is actually a little
simplistic, if a path intersects itself, as in a figure 8, then the direction
cannot be described as either clockwise or counter-clockwise, but most paths
do not self-intersect and we will simplify our life by pretending that we
can call paths clockwise or counter).
<P>
When time comes to draw our outline character we want to make dark everything
in the interior of the outline. But let's look at the outline of our A above.
We have two paths inside the main outline path, and we want the interior
of those two paths to be white rather than dark. How do we make this distinction?
We do it by the direction of the paths. Consider any point in the character.
If we draw an imaginary line from that point out to infinity (in any direction)
and count the number of times we cross a path, each time we cross a clockwise
path we add one to our count, each time we cross a counter clockwise path
we subtract one. If the result of our count is non-zero then we color the
point dark, otherwise we leave it white. So to make the A above work we make
the outer path be clockwise and the two inner ones be counter-clockwise (Things
could be done the other way around, but the convention is that the outer
path should be clockwise).
<P>
All of these points (both the end points and the control points) are described
mathematically. Each point is positioned on a cartesian coordinate system
which has its origin on the character's base line (the line on which letters
without descenders rest). Most font formats expect coordinates to be integers
between -32768 and 32767, PfaEdit uses real numbers internally but (usually)
rounds to the nearest integer when generating a font file.
<P>
The horizontal distance between the origin and the leftmost edge of the character
is called the left side bearing (it may be negative, positive or zero). All
characters have a width, this is the distance from the current character's
origin to the origin of the next character. The distance between the right
edge of the character and the width is called the right side bearing.
<P>
A character like "g" or "y" extends below the baseline, this is called a
descender, while a character like "k" or "l" extends above it, this is called
an ascender. Most latin (and greek and cyrillic) fonts have certain standard
heights: the height of a lower case letter (without an ascender) is called
the x-height, the height of a capital letter is called the cap-height, the
height of the ascenders is called the ascender height (some, but not all,
fonts have the ascenders and capitals at the same approximate height). Usually
these will not be exactly the same for all characters, the letter "O" is
usually slightly taller than the letter "I", but they both are within the
range of the cap height for the font.
<P>
The font itself has an ascent and descent associated with it. In the old
days of metal type nothing could ascend above or descend below these values,
nowadays accents and ascenders may reach above the font-wide ascent and
descenders below it, but the concept is still a convenient one to retain.
It is true that in almost all cases the characters will not ascend above
or descend below the font-wide ascent and descent. The sum of the ascent
and descent is the size of the font. The point size of a piece of metal type
was determined by this value (essentially the height of the metal block holding
the character). In a postscript font the local coordinate system is independent
of the final size at which the font will be draw. By convention in postscript
the sum of the ascent and descent is 1000 units, while in TrueType it is
usually a power of two, often 2048.
<H3>
  TrueType vs. PostScript vs OpenType fonts
</H3>
<P>
PfaEdit can produce both TrueType and PostScript fonts. What's the difference?
<P>
PostScript is based on a <A HREF="bezier.html">cubic spline</A> technology
described above, while TrueType is based on a
<A HREF="bezier.html">quadratic</A> technology. Cubic splines are generally
easier to edit (more shapes are possible with them). Any quadratic spline
can be converted to a cubic spline with essentially no loss. A cubic spline
can be converted to a quadratic with arbitrary precision, but there will
be a slight loss of accuracy in most cases. This means it is easy to convert
TrueType outlines to PostScript outlines, harder to convert PostScript to
TrueType.
<P>
Within PfaEdit all spline editing is done on cubic splines. These are converted
to quadratic when a truetype font is generated.
<P>
The other major difference between the two is how they solve the problem
of drawing nice images at small pointsizes. PostScript calls this "Hinting",
while TrueType calls it "Instructing" a font.
<P>
What's OpenType?
<P>
Open Type is just a postscript font put into a truetype format -- It looks
like a truetype font except that the outline descriptions are postscript
Type2 font descriptions rather than TrueType. (Actually any truetype font
can be called an OpenType font. OpenType is a superset of TrueType)
<H3>
  <A NAME="Hints">Hints</A>
</H3>
<P>
At small pixel sizes, the process of drawing the interior of an outline font
is quite difficult to do well. Postscript and TrueType have different approaches
to the problem of providing extra information to the rasterizer about how
to draw small fonts.
<TABLE BORDER CELLPADDING="2" ALIGN="Center">
  <CAPTION>
    <SMALL>Rasterization improvements<BR>
    from hinting TrueType.<BR>
    18pt font rasterized by Windows<BR>
    (scaled by a factor of 2)</SMALL>
  </CAPTION>
  <TR>
    <TD><P ALIGN=Center>
      &nbsp;&nbsp;<IMG SRC="HI.nohints.png" WIDTH="44" HEIGHT="28">&nbsp;&nbsp;<BR>
      no hints</TD>
    <TD><P ALIGN=Center>
      &nbsp;&nbsp;<IMG SRC="HI.hints.png" WIDTH="44" HEIGHT="28">&nbsp;&nbsp;<BR>
      hints</TD>
  </TR>
</TABLE>
<DL>
  <DT>
    <H4>
      Postscript
    </H4>
  <DD>
    Adobe incorporated several different ways of hinting to the rasterizer how
    things should be treated. The most obvious of these are the horizontal and
    vertical stem hints.Each character has its own set of hints to tell the
    rasterizer where to find stems. PfaEdit can usually figure out a reasonable
    set of stem hints (a process called autohinting), but some characters are
    too complex for it and it can make bad choices. It also provides a mode for
    you to override its choices.
    <P>
    Adobe also has a mechanism for handling dished serifs called flex hinting.
    This means a curve that is only slightly deformed from the horizontal (or
    vertical) will display as a line at small point sizes and as a curve at larger
    ones. PfaEdit will use these when it seems appropriate.
    <P>
    The original version of hints did not allow them to overlap, this meant that
    most serifs could not be described, Adobe then developed a mechanism called
    hint substitution which allows for different sets of non-overlapping hints
    to exist in different parts of the character. There are still shapes which
    cannot be fully hinted, but hint substitution is an improvement. PfaEdit
    will use hint substitution when it can.
    <P>
    Most recently Adobe has provide a means to control the counters -- the spaces
    between stems -- in a character. The original Type1 description provided
    support for the horizontal counters in "m" and the vertical counters in "E"
    but more complex shapes could not be dealt with. Counter Hints (in a type1
    font) may only be used with non-latin (non-greek, non-cyrillic) character
    sets, but in OpenType this restriction appears to have been relaxed. PfaEdit
    will generate counter hints when appropriate.
    <P>
    Adobe provides some font-wide hinting mechanisms. The two most obvious are
    the BlueValues and StemSnap settings in the private dictionary. BlueValues
    provides a list of vertical zones in which interesting things happen (so
    in a latin font this might include the ascender height, the cap-height, the
    x-height and the descender height. At small point sizes everything within
    one of these zones will snap to the same height, while at larger point sizes
    the heights will be slightly different (for instance an "o" and an "x" usually
    have slightly different heights, but displaying that at a small point size
    would be ugly). Similarly the StemSnap variables specify standard stem widths
    for the font. PfaEdit will try to guess reasonable values for these. It also
    allows you to override these guesses and
    <A HREF="fontinfo.html#Private">specify your own values</A>. For a more
    comprehensible description of the private dictionary and what it can do,
    look at
    <A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF">Adobe's
    Type1 font specification</A>.
    <P>
    Adobe also provides a mechanism for allowing different sets of hints to exist
    in different parts of a character. This is called Hint Substitution and PfaEdit
    should implement it automatically.
  <DT>
    <H4>
      True Type
    </H4>
  <DD>
    <TABLE ALIGN=Right>
      <TR>
	<TD ALIGN=Center><IMG SRC="GridFitM.png" WIDTH="246" HEIGHT="241"><BR>
	  Grid Fit M</TD>
      </TR>
    </TABLE>
    <P>
    On the other hand, True Type says that figuring out what pixels to turn on
    would be a lot simpler if only the points and the splines were in the right
    place (ie. at pixel boundaries). And so True Type provides a set of instructions
    that move points around until they are positioned appropriately for a given
    size.
    <P>
    PfaEdit's hinting of True Type (properly called "instructing") is very primitive,
    and is based on the stem hints also used by PostScript. It uses these hints
    to determine which points to move and where to move them. It also supports
    the concept of diagonal stems and hints them so they will have approximately
    the same width. It does a little extra work, trying to detect serifs that
    are attached to vertical stems and providing hints for them as well. It also
    uses the equivalent of the PostScript BlueValues to generate cvt entries
    that force characters to have the same height at small pointsizes.
    <P>
    I am not happy with the instructions I generate for TrueType. They have improved
    recently, but still leave a lot to be desired. I am working on a
    <A HREF="TtfMod/index.html">tool</A> to provide better access to true type
    hints, but it isn't done yet.
</DL>
<P>
Most of my <A HREF="hinting.html">hinting user interface</A> is designed
with PostScript fonts in mind.
<H3>
  <A NAME="References">References</A>
</H3>
<P>
In addition to a set of outlines (splines) characters may be built out of
references to other characters. This is especially handy for the accented
characters, "&agrave;" can be made up of a reference to the "a" character
and another reference to the "`" character. This can result in significant
space savings, and in ease of design (if you change the "a" character after
making a reference to it the "&agrave;" character will automatically change
to, whereas if you just copied the "a" you would have to recopy it.
<P>
PfaEdit has three commands for manipulating references, and one higher level
command for building accented characters. The Edit-&gt;Copy Reference command
will put a reference to the current character into the clipboard, which a
subsequent Edit-&gt;Paste command will install as a reference. The
Edit-&gt;Unlink Reference command will turn a reference in a character into
it's component splines. The Element-&gt;Get Info command (when applied to
a reference) will bring up a dialog showing you what character is referred
to, and allowing you to bring up an editing window on that character. Finally
the <CODE>Element-&gt;Build Accented Characters</CODE> command will figure
out what characters should be refered to to build this composite character,
and then will make those references and position them appropriately. So if
"&agrave;" were selected and you did a <CODE>Element-&gt;Build Accented
Characters</CODE> command, the PfaEdit would make a reference to "a" and
another to "`", and place the accent above the letter, and centered on it.
<P>
Sadly life is not quite that simple. Both PostScript and TrueType place
restrictions on what kinds of characters may be referenced, worse they make
different restrictions. About the only restriction PfaEdit makes is that
it won't let you put a reference to a character inside itself. When generating
a font, if it finds a situation where it can't use a refered character as
a reference it will fix it up somehow, usually this means replacing it with
the equivalent outlines.
<P>
In both TrueType and PostScript a character must either be composed of all
reference characters or all splines.
<P>
In PostScript characters refered to must be in the Adobe Standard Encoding,
which includes all of the Ascii characters, a collection of accents and certain
ligatures. One of the referenced characters may be translated, but neither
may be rotated, skewed or scaled. There must be exactly two referenced
characters, and the reference character which is not translated must have
the same width as the one being built.
<BLOCKQUOTE>
  <STRONG><SMALL><SMALL>Technical and confusing:</SMALL></SMALL></STRONG> PfaEdit
  has some tricks it can use to improve things. If you are working on U+04D2
  (Cyrillic capital letter A with diaeresis) and you make it out of U+0410
  (Cyrillic capital letter A) and U+00A8 (diaeresis) and U+0410 is itself a
  reference to U+0041 (Latin capital letter A), then PfaEdit will generate
  a postscript font where U+04D2 is a composite of U+0041 and U+00A8, both
  of which are in the Adobe Set (while U+0410 is not). Again when generating
  U+0410 PfaEdit will make it be a composite of U+0041 and U+0020 (space) so
  as to get exactly two characters.
  <P>
  <STRONG><SMALL><SMALL>Technical and confusing:</SMALL></SMALL></STRONG> If
  that fails PfaEdit will attempt to put the referenced characters into subroutines
  and then invoke those. This only works if the characters in question either:
  <UL>
    <LI>
      Have no overlapping hints (don't need hint substitution) and don't require
      flex hints
    <LI>
      Or (if there are overlapping hints or flex hints) if the character in question
      is not translated and has the same left side bearing as the character refering
      to it (which is often the case)
  </UL>
</BLOCKQUOTE>
<P>
In TrueType characters refered to must not themselves contain reference
characters (at least in some versions of TrueType), references may be skewed
and rotated as well as translated, and may be scaled as long as it is by
an amount less than 2.
<BLOCKQUOTE>
  <STRONG><SMALL><SMALL>Technical and confusing:</SMALL></SMALL></STRONG> So
  in the example above a generated TrueType font would also have U+04D2 composed
  of U+0041 and U+00A8.
</BLOCKQUOTE>
<P>
In OpenType (actually Postscript type2 fonts) things are different again.
There is no direct support for references. PfaEdit will produce something
which will allow for the space saving that references provide (by using
subroutines), but it will not be able to detect what's a reference and what
isn't when it reads the font in. Any character which does not itself contain
a reference may be in a reference (like truetype), but only translations
are allowed on those references, and as above either the characters must
not have any overlapping hints (flex hints are ok here) or must not be translated
and none of the other references may have any hints at all.
<H3>
  <A NAME="FontView">Font View</A>
</H3>
<P>
The font view displays all the characters in the font (or all that will fit
in the window). Every line has two parts, at the top are small clear letters,
underneath that, somewhat larger is a 24 pixel rasterization of the font
you have designed. As you edit a character in an <A HREF="#CharView">outline
character view</A> its small version in the font view will change with it.
<P>
Double-clicking on a character will bring up an outline character view of
that character which will allow you to edit it.
<P>
Selecting several characters will allow you to apply various operations to
all of them, or to cut and paste them.
<P>
<IMG SRC="AmbrosiaFV.png" WIDTH="423" HEIGHT="226">
<P>
Fonts do not need to be for the latin alphabet alone. Below is a view of
one of <A HREF="ftp://ftp.ipl.t.u-tokyo.ac.jp/Font/">Wadalab</A>'s public
domain Kanji fonts...
<P>
<IMG SRC="kanjifont.png" WIDTH="423" HEIGHT="212">
<P>
Another Wadalab font encapsulated in a CID keyed font
<P>
<IMG SRC="fontview-cid.png" WIDTH="473" HEIGHT="226">
<H3>
  <A NAME="CharView">Outline Character View</A>
</H3>
<P>
The outline view is probably the most complex. This is where you actually
edit the postscript splines (<A HREF="bezier.html">Bezier splines</A>).
<P>
You may have a background image loaded into the view to help you trace out
the shape you are working on (it is displayed in grey). There are various
grid lines visible, some created by default (the baseline, the ascent line,
the descent line, and a line at x=0), you may add others yourself.
<P>
There is a layer showing the character's hints.
<P>
In the foreground are the splines and points of the character itself, and
the width line (you may adjust the character's width by moving this line).
If a point is selected then its control points will be displayed.
<P>
To the left of the main window (the image below shows them on the right,
that was just to keep them from crowding things, you can move them around)
are two palettes, one a palette of tools, and the other a palette controlling
what layers (foreground, background, grid, hints) are visible and editable.
<P>
<IMG SRC="charview2.png" WIDTH="544" HEIGHT="656">
<H3>
  <A NAME="BitmapView">Bitmap View</A>
</H3>
<P>
This is similar to the outline view above. It also has a tools and layer
palette.
<P>
This allows you to edit bitmap versions of the outline characters you create
above.
<P>
In the background is a small rendition of the outline, and in the foreground
are the bits of the image. You may make the program calculate which bits
should be set by pressing the "Recalculate button", the results usually need
to be tweaked by hand. In the upper left corner is a full sized image of
your bitmap character.
<P>
<IMG SRC="BitmapView.png" WIDTH="254" HEIGHT="273">
<H3>
  <A NAME="MetricsView">Metrics View</A>
</H3>
<P>
Allows you to see how the characters look together.
<P>
You can change the width and left/right bearings of a character, either by
dragging in the upper part of the window or by entering an appropriate number
in the lower.
<P>
You can also provide kerning information for any two adjacent characters.
<P>
<IMG SRC="MetricsView.png" WIDTH="428" HEIGHT="323">
<P>
Note that in Hebrew, or Arabic (or any other right to left alphabet) the
characters will start on the right and run to the left.
<P>
<IMG SRC="HebrewMetrics.png" WIDTH="511" HEIGHT="323">
<P>
<P ALIGN=Center>
-- <A HREF="editexample.html">Next</A> --
</BODY></HTML>