summaryrefslogtreecommitdiff
path: root/third_party/spiro/ppedit/README
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/spiro/ppedit/README')
-rw-r--r--third_party/spiro/ppedit/README112
1 files changed, 112 insertions, 0 deletions
diff --git a/third_party/spiro/ppedit/README b/third_party/spiro/ppedit/README
new file mode 100644
index 0000000..c99037d
--- /dev/null
+++ b/third_party/spiro/ppedit/README
@@ -0,0 +1,112 @@
+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.