%AMR.jam
%Maureen Stone December 12, 1984 12:47:02 pm PST
% 20 120 .setoffset 4 .setscale
%amr, amsl,
(doAllFonts) {
(///fit/AMR10.ac) (///fonts/amr10-fit03.sf) doFont
(///fit/AMSL10.ac) (///fonts/amsl10-fit01.sf) doFont
(///fit/AMSY10.ac) (///fonts/amsy10-fit00.sf) doFont
(///fit/AMEX10.ac) (///fonts/amex10-fit00.sf) doFont
(///fit/AMBX10.ac) (///fonts/ambx10-fit00.sf) doFont
(///fit/AMTI10.ac) (///fonts/amti10-fit00.sf) doFont
(///fit/AMTT10.ac) (///fonts/amtt10-fit00.sf) doFont
}.cvx .def
(setupac) (acfont Contour.openACFont).cvx .def
(acfont) (///fit/AMSL10.ac) .def
(sfName) (///fit/AMSL10-fit01-original.sf) .def
(initAMR) {5 .5 0 0 .metrics setupac}.cvx .def
(doFont) {(sfName) .exch .def (acfont) .exch .def
acfont =
.false log .openlogfile
sfName .note  ( From: ) .note acfont .noter
( Started at: ) .note .time () .noter
.closelogfile
acfont Contour.openACFont
5 .5 0 0 .metrics
0 128 doRange
.false log .openlogfile
( Finished at: ) .note .time (
) .noter
.closelogfile
}.cvx .def
(doRange) {
(last) .exch .def (first) .exch .def
5 .5 0 0 .metrics
first last first .sub .cvi { .dup .cvchar dochar 1 .add}.cvx .rept
}.cvx .def
(dochar) (
.dup
getChar {doContour .nextcon}.cvx .rept
logChar
).cvx .def
(getChar) {Contour.getACChar .outlineBlackEdge .resetallcon Outline.setallsa .true .closed .nextcon}.cvx .def
(doContour) {
e ds
5 0 .true PK.find90 %find special points so they don't move
2 .resettangents %but don't set the tangents before filtering
.true .avefilter .true .avefilter
.true PK.hvextremes 2 .resettangents
18 .1 .true PK.hvlines 
.25 20 40 PK.dynpoly 
70 .true PK.quicktangents
2 PK.nearlyequal
1 .false PK.hvtangents
80 PK.forcecorners
mn
1000 .true .dynspline
}.cvx .def
(log) (May-27.log) .def
%(pts/inch)*(em/pts)/(pixels/inch) = 72.27*0.1/1200
(logChar) {
sfName Contour.openSF
1.0
Contour.writeSFChar
Contour.closeSF
}.cvx .def
(doContour0) {
.true .closed
e ds
1 PK.dynpoly
89 .true PK.quicktangents
5 .false PK.hvtangents
89 PK.nearlyninety
mn
.true .avefilter .true .avefilter .true .avefilter
1000 .true .dynspline
}.cvx .def
Stone, May 16, 1985 2:11:02 pm PDT
change to doContour for AMSL
changes to: (.5 (was 1) dynpoly, (75 (was 80) quicktangents, (
Stone, May 25, 1985 12:11:46 pm PDT
Forcing a h/v tangent at an extreme is a bad idea. Soften to placing a potential knot there
cleanup the tangent setting code, particularly the stuff that finds corners. Angle tolerances should make more sense now. Change parameters to quicktangents, nearly equal and hvtangents
Change dynpoly to test for long lines
changes to: (, (, (
Stone, May 27, 1985 0:51:57 am PDT
Changed h/v lines and 90 corners to include adjacent samples in length calculations when appropriate. This fixes the problem of getting multiple joints near 90 corners.
redefined length on PK.find90 to be 5
Change dynpoly to test for intersections of long lines. Needed for 40 degree bend in angle bracket.
Decided basic philosophy for pre-filtering information: select points but not tangents. This works fine for the h/v finders. Tangents set correctly with a little help from PK.hvtangents.
Changed LSPieceImpl to so its not forced to iterate the maximum number of times but must iterate at least once. Noted that second change made a visible effect
changes to: (, (, (, (, (, (, (, (, (, (, (, (, (, (, }