123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 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.
|