113 строки
3.3 KiB
Plaintext
113 строки
3.3 KiB
Plaintext
README for ppedit
|
|
|
|
Raph Levien
|
|
4 May 2007
|
|
|
|
ppedit is my prototype application for editing curves using my
|
|
curvature-continuous spirals. While I have used this code to draw many
|
|
font outlines, it is very rough around the edges, and is far from a
|
|
polished tool.
|
|
|
|
|
|
== License and patent grant ==
|
|
|
|
All code in this package is released under the terms of the GNU GPL,
|
|
version 2 or later, at your choice.
|
|
|
|
Further, there is a provisional patent application filed for the
|
|
underlying curve technology. The following patent grant applies to any
|
|
patent which may be issued as a result of that application:
|
|
|
|
Whereas, Raph Levien (hereinafter "Inventor") has obtained patent
|
|
protection for related technology (hereinafter "Patented Technology"),
|
|
Inventor wishes to aid the the GNU free software project in achieving
|
|
its goals, and Inventor also wishes to increase public awareness of
|
|
Patented Technology, Inventor hereby grants a fully paid up,
|
|
nonexclusive, irrevocable, royalty free license to practice the
|
|
patents listed below ("the Patents") if and only if practiced in
|
|
conjunction with software distributed under the terms of any version
|
|
of the GNU General Public License as published by the Free Software
|
|
Foundation, 59 Temple Place, Suite 330, Boston, MA 02111. Inventor
|
|
reserves all other rights, including without limitation, licensing for
|
|
software not distributed under the GNU General Public License.
|
|
|
|
== Building ==
|
|
|
|
The main build supported right now is the Gtk2/cairo one. There's also
|
|
a Mac build and a Gtk1 one, but those aren't guaranteed to work.
|
|
|
|
1. Make sure you've got ../x3/ in a directory parallel to ppedit. If
|
|
you've unpacked from a tarball, this should be the case already.
|
|
From darcs, use: darcs get http://levien.com/garden/x3
|
|
|
|
2. make
|
|
|
|
3. The binary is ppedit
|
|
|
|
== Using ==
|
|
|
|
The numeric keys 1-6 select the mode. 1 is selection, 2-6 select
|
|
different point modes:
|
|
|
|
2: Add G4-continuous curve point
|
|
3: Add corner point
|
|
4: Add left-facing one-way point
|
|
5: Add right-facing one-way point
|
|
6: Add G2-continuous curve point
|
|
|
|
Note: Dave Crossland has a set of alternate keybindings which are
|
|
probably faster.
|
|
|
|
== Plate files ==
|
|
|
|
Ctrl-S saves a plate file in a file of the name 'plate'. Additionally,
|
|
a plate file can be given as a command line argument. The file uses
|
|
simple S-expressions, with a one-character code for each point, then
|
|
the X and Y coordinates - 0,0 is top left.
|
|
|
|
Here's the cap U from Inconsolata, for example:
|
|
|
|
(plate
|
|
(v 68 78)
|
|
(v 159 78)
|
|
(o 158 92)
|
|
([ 148 115)
|
|
(] 148 552)
|
|
(o 298 744)
|
|
([ 459 549)
|
|
(v 459 78)
|
|
(v 536 78)
|
|
(] 536 547)
|
|
(o 295 813)
|
|
([ 68 551)
|
|
(z)
|
|
)
|
|
|
|
v: corner
|
|
o: g4
|
|
c: g2
|
|
[: left-facing one-way
|
|
]: right-facing one-way
|
|
|
|
== Conversion to PostScript ==
|
|
|
|
Ctrl-P converts to PostScript, saving '/tmp/foo.ps'. Other utilities
|
|
can convert that representation into FontForge, and also optimize the
|
|
Beziers.
|
|
|
|
== Stability ==
|
|
|
|
The spline solver in this release is _not_ numerically robust. When
|
|
you start drawing random points, you'll quickly run into divergence.
|
|
However, "sensible" plates based on real fonts usually converge. Some
|
|
tips:
|
|
|
|
1. Huge changes of angle are likely to diverge.
|
|
|
|
2. For the first two or three points, G4 points are likelier to
|
|
converge than G2's. For longer segments, G2 is more likely.
|
|
|
|
3. Start on a curve point.
|
|
|
|
A more numerically robust approach is in the works.
|