úθ^ (c) 2015, M J Oldfield Experimental Safe-InferredThe ' type wraps the basic font: a map from   to  \ is the basic element of the font: the symbol's width, plus the strokes we need to draw it.L is the basic graphic element: a series of points joined by straight lines.Given a  and a  , return  strokes if the   can be rendered.  error otherwise. A varient of 9 which replaces unknown characters with a question mark.™It is guaranteed to render something, and thus useful if you want to ignore the possibility of errors e.g. because you're manually checking the output.SGiven a set of strokes, try to optimize their order and direction so as to prefer:fewer strokes;smaller gaps between strokes;left-most starting position;bottom-most starting position.~The code does a reasonable job of improving fonts where no thought has been given to this, but hand-tweaking is still better.The Hershey font used by  -http://jim.studt.net/canvastext/canvastext.js canvastext.js which provides \!"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~        plotfont-0.1.0.1Graphics.PlotFontPlotFontPFGlyphPFStrokePFPointPFWidthrenderrender'optimizeStrokescanvastextFontghc-prim GHC.TypesCharbaseGHC.BaseString Data.EitherRightLeftdist getGlyphs addErrorMsg leftsOrRightsgetGlyph getGlyph' fallbackGlyph renderLineallArrangementsallDirsscore joinStrokes