Blame README-RaphLevien

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