[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In the BZR format, a character shape is defined as a sequence of (non-contiguous) closed paths, i.e., outlines. Each path can contain straight lines and Bezier cubic splines. As a BZR-reading program interprets the character definition, it keeps track of a "current point", which is initially undefined.
Each path--and therefore also the character shape itself--starts with a
path command: PATH
, x
[3], y
[3]. This
finishes off any previous outline and starts a new one, setting the
current point to (x,y)
. x
and y
are
designsize-scaled values in printer's points.
After a path command has started an outline, a sequence of zero or more line and/or spline commands, intermixed in any order, follows. (A path command followed by another path command is allowed, but does nothing useful.)
Although the BZR format itself does not require it, for the font to work properly when translated to some other formats, the "outside curves" must be drawn counterclockwise, and the inside ones clockwise.
The BZR format defines both abbreviated and long versions of both straight line and spline commands, as follows.
The abbreviated line command is:
|
which defines a straight line from the current point to
(ex,ey)
. ex
and ey
are designsize-scaled numbers
in points. After drawing the line, the current point is set to
(ex,ey)
.
The long form of the line command differs only in starting with a
LINE
opcode, and the coordinate parameters being three bytes long,
instead of two.
The spline commands are analogous. Here is the abbreviated form:
|
This defines a Bezier spline with initial point the
current point, control points (c1x,c1y)
and (c2x,c2y)
, and
ending point (ex,ey)
. The current point is then set to
(ex,ey)
. As with the line commands, the coordinate parameters
are designsize-scaled in units of points.
Also as with the line commands, the long form of the spline command
differs only in starting with a SPLINE
opcode and the other
parameters being three bytes long instead of two.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |