% candy cane lettering, CandyCane.JaM % Rick Beach, June 22, 1982 11:32 am (candycane) {.pushdc 50 200 .translate .8 .8 .scale (borderpattern) (border2).cvx .def candy .popdc}.cvx .def (candy) {candyC candyA candyN candyD candyY}.cvx .def % the letter C (candyC) {.newoutline 0 0 .omoveto 19.53651 0 31.8338 24.99396 31.47971 45.02295 .ocurveto 31.00426 80.1452 58.23015 116.6332 92.23893 90.13776 .ocurveto 105.7132 79.64014 63.64215 102.7454 55.85108 87.73694 .ocurveto 30.68143 64.64636 29.47169 0 101 0 .ocurveto 30 20 outlineborder 100 0 .translate}.cvx .def % the letter A (candyA) {.newoutline -1 0 .omoveto 37.59671 0 61.04228 106.7766 102 98 .ocurveto 136.7254 90.55884 90.6846 -32.95081 99 26 .ocurveto 120.5983 85.29236 97.14027 116.1927 57.99998 51 .ocurveto 33.74081 -2.699402 79.85745 0 124 0 .ocurveto 30 20 outlineborder 124 0 .translate}.cvx .def % the letter N (candyN) {.newoutline 0 0 .omoveto 47.3667 0 51.39708 110.9868 79 87 .ocurveto 76.20679 76.61865 47.80486 -29.96118 67.00001 20 .ocurveto 79.45522 51.26538 71.13297 89.39398 109 96 .ocurveto 182.0348 101.9358 75.94755 0 158 0 .ocurveto 30 20 outlineborder 157 0 .translate}.cvx .def % the letter D (candyD) {.newoutline 0 0 .omoveto 43.55275 0 23.49652 87.71338 73.88702 99 .ocurveto 109.8771 106.9354 128.9642 68.28247 100.7595 89.08636 .ocurveto 65.45583 113.7225 33.37993 57.17767 45.78958 28 .ocurveto 92.94615 -82.87119 158.8459 135.5607 157.4715 162.6174 .ocurveto 152.9077 258.9257 77.61393 0 157 0 .ocurveto 30 20 outlineborder 156 0 .translate}.cvx .def % the letter Y (candyY) {.newoutline -1 0 .omoveto 28.95868 0 29.32411 94.73407 37.99628 94.14777 .ocurveto 54.52634 93.03015 12.75839 1.530762e-1 43.12253 0.802063 .ocurveto 83.38051 1.662476 77.82333 53.49048 88.94458 89.2691 .ocurveto 103.4402 135.9034 92.34982 -74.18329 53.5445 -78.85016 .ocurveto -39.22055 -90.00647 -27.31945 0 115 0 .ocurveto 30 20 outlineborder 115 0 .translate}.cvx .def % draw a border given the Bezier control points % <x0 y0 x1 y1 x2 y2 x3 y3> <border-width> <border-height> outlineborder (outlineborder) {(!bh) .exch .def (!bw) .exch .def (bx) 0 .def conformal (!al) .olength .def (!n) !al !bw .div .cvi .def (!bw) !al !n .div .def !bw !bh .cubicscale !n (borderpattern (bx) bx 1 .add .def).cvx .rept}.cvx .def % draw a border given the Bezier control points % <x0 y0 x1 y1 x2 y2 x3 y3> <border-width> <border-height> outlineborder (eoutlineborder) {(!bh) .exch .def (!bw) .exch .def (bx) 0 .def conformal (!al) .olength .def (!n) !al !bw .div .cvi .def (!bw) !al !n .div .def !bw !bh .cubicscale !n 1 .sub(borderpattern (bx) bx 1 .add .def).cvx .rept}.cvx .def