[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |

As mentioned above, Limn moves the control points on the spline to optimally fit the bitmap. But it cannot just move them arbitrarily, because it must make sure that the spline fitting one part of the bitmap blends smoothly with those fit to adjacent parts.

Technically, this smooth blending is called *continuity*, and it
comes in degrees. Limn is concerned with the first two degrees: zero-
and first-order. Zero-order continuity between two curves simply means
the curves are connected; first-order geometric (G1) continuity means
the tangents to each curve at the point of connection have the same
direction. (There are other kinds of continuity besides "geometric",
but they are not important for our purposes.)

Informally, this means that the final shape will not abruptly turn at the point where two splines meet. (Any computer graphics textbook will discuss the properties of tangents, continuity, and splines, if you're unfamiliar with the subject.)

To achieve G1 continuity, Limn puts the first control point of a spline
on a line going in the direction of the tangent to the start of the
spline; and it puts the second control point on a line in the direction
of the tangent to the end of the spline. (It would be going far afield
to prove that this together with the properties of Bezier splines imply
G1 continuity, but they do. See Schneider's thesis referenced in
``limn/README'` for a complete mathematical treatment.)

For the purposes of using Limn, the important thing is that Limn must
compute the tangents to the spline at the beginning and end, and must do
so accurately in order to achieve a good fit to the bitmap. Since Limn
has available only samples (i.e., the pixel coordinates) of the curve
being fit, it cannot compute the true tangent. Instead, it must
approximate the tangent by looking at some number of coordinates on
either side of a point. By default, the number is 3, but you can
specify a different number with the ``-tangent-surround'` option. If
the resolution of the input font is different than 300dpi, or if
the outline Limn fits to the bitmap seems off, you will want to scale it
proportionately.

[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |