CONST PointSize = PS.Huge; PRIVATE PROC WriteString(p, t) IS VAR w, asc, dec IN w := PS.StringWidth(t); asc, dec := PS.FontHeight(); SAVE PS IN PS.SetColor(Color.Grey50); HLine(p, w); HLine((CAR(p), CDR(p) + asc), w); HLine((CAR(p), CDR(p) - dec), w); PS.Stroke() END; PS.Type(p, t) END END; PRIVATE PROC HLine(p, w) IS PS.MoveTo(p); PS.LineTo((CAR(p) + w, CDR(p))) END; PROC AllCharsTest(a) IS PS.SetFont("Times-Roman", PointSize); VAR sz IN VAR asc, dec IN asc, dec := PS.FontHeight(); sz := 2 * (asc + dec) END; WriteString(a, "Hello, Juno!"); a := (CAR(a), CDR(a) - sz); WriteString(a, "abcdefghijklmnopqrstuvwxyz"); a := (CAR(a), CDR(a) - sz); WriteString(a, "ABCDEFGHIJKLM"); a := (CAR(a), CDR(a) - sz); WriteString(a, "NOPQRSTUVWXYZ"); a := (CAR(a), CDR(a) - sz); WriteString(a, "0123456789!@#$%^&*()"); a := (CAR(a), CDR(a) - sz); WriteString(a, "-_=+[]{},.<>/?;:'`~|"); a := (CAR(a), CDR(a) - sz); WriteString(a, "\"+\\+)+(+\305") END END; UI PointTool(AllCharsTest); PROC EscTest(a) IS PS.SetFont("Times-Roman", PointSize); WriteString(a, "\"+\\+)+(+\305") END; UI PointTool(EscTest); PROC Cmd0() IS IF VAR a ~ (-214.3, 223.8), b ~ (-213.6, -169.1) IN AllCharsTest(a) END FI END;