% acfit.jam (FitACContour) { MoveHomeToLowerLeft 5 .dynnodes e ms 55 .squaretangents mn MoveHomeToACorner .filterbetweencorners .filterbetweencorners 55 .squaretangents e ms mn 9 1 2 2 .dynspline e dc mc }.cvx .def (FitACChar) { .countcon {.countsa 0 .eq .not {FitACContour}/if .nextcon}.cvx .rept e dcs mcs .collectgarbage }.cvx .def (FitTheoContour) {50 50 .transa 20 .interpolatesa e ms 5 .dynnodes 55 .quicktangents MoveHomeToACorner 55 .quicktangents e ms mn 9 1 2 2 .dynspline e dc mc}.cvx .def (FitTheo) { .countcon {FitTheoContour .nextcon}.cvx .rept e dcs mcs }.cvx .def (GetAISTempContours) {AISisopen {.freeais}/if (AISTemp.ais) getAIS 0.02 .tvalue e .outline .makecontours 0 .setslen (AISisopen) .true .store}.cvx .def (logc) (types the instructions to draw the curve in Curve.Log) { newcontour {8 6 .roll initmoveto 6 4 .roll logpoint 4 2 .roll logpoint logpoint (.curveto) .noter}.cvx .foralllinks }/xdef (logcs) (types all the contours to Curve.Log or the open log file) { (.flushpath) .notes .countcon {logc .nextcon}.cvx .rept }/xdef (logpoint) {.exch cvtempstring .notes cvtempstring .notes}.cvx .def (cvtempstring) (converts to a string, using a temporary string area) {( ) .cvis}/xdef (FitFont) {PressFont.Open PressFont.AllocateBitmap (Bitmap size = ).print PressFont.BitmapSize .exch cvtempstring .print ( by ).print =}.cvx .def (GetACChar) {(curChar) .exch .store .initdc 100 0 .setcp PressFont.UseBitmap .initdc e BitmapOrigin 1 .add .setcp PressFont.DrawRasterChars PressFont.UseScreen PressFont.DrawBitmap PressFont.WriteAISTemp GetAISTempContours e .setcontours 3 scale}.cvx .def (GetACAsciiChar) {.dup .cviac .exch .cvias (curChar) .exch .store .initdc 100 0 .setcp PressFont.UseBitmap .initdc e PressFont.BitmapOrigin 1 .add .setcp PressFont.DrawRasterChars PressFont.UseScreen PressFont.DrawBitmap PressFont.WriteAISTemp GetAISTempContours e .setcontours 3 scale}.cvx .def (AISisopen) .false .def (GetAISTempContours) {AISisopen {.freeais}/if (AISTemp.ais) getAIS 0 .tvalue e .outlineBlackEdge .makecontours 0 .setslen (AISisopen) .true .store}.cvx .def (FitContour) {(curContour) .exch .store .setsa 3 0 .scalesa .afsa 0 250 .translate ms 2 .subdividespline mc 0 -250 .translate}.cvx .def (LogChar) {.true .setlog (").note curChar .cvaci .cvias .note (" ).note [ curChar .cvaci PressFont.CharDimensions ] {cvtempstring .note ( ).note}.cvx .arrayforall "{setUpTransform" .noter logcs "}.cvx" .noter "WriteSDChar" .noter .false .setlog}.cvx .def (FitACRange) (i n -> . Fits n chars, starting at char i.) {{.dup GetACAsciiChar FitACChar 1 .add}.cvx .rept .pop}/xdef