This is a font of music symbols. All MF sources are original. Most of the documentation is in comments in the MF code. Non-square pixels are not supported; with other words, the horizontal and vertical resolution of the output device must be the same. Currently, outline fonts are created by using `autotrace', but we are already in the process of converting the MF code directly to PostScript code with a tool called `mf2pt1', which in turn calls `FontForge' to postprocess the output (mainly to remove outline overlaps and to add hints). The recommended calling sequence of mf2pt1 is mf2pt1 --rounding=0.001 You need mf2pt1 version 2.1 or newer. Here some guidelines to assure a clean conversion. . Never use `---'. Replace it with `--' together with explicit path directions (if necessary). . Don't use self-intersecting outlines in general since they can confuse mf2pt1's algorithm to get the orientation of a closed path. Note that MetaPost's implementation of the `turningnumber' primitive (which would immediately give the orientation of a path) is severely broken before version 1.0 of MetaPost, thus some hand-made code in mf2pt1.mp is used to work around this bug. . If outlines intersect, avoid grazing intersections. In case two outlines intersect in an explicitly defined point, include this point in both intersecting paths to avoid problems due to rounding errors. . Don't use `draw' with a polygonal pen but for straight lines (consisting of exactly two points). In most cases it is quite easy to emulate `draw' with an explicit definition of the outline or with `penstroke'. . Don't apply transformations after calling `fill' -- for example, don't mirror `currentpicture'. Instead, transform the path and call `fill' afterwards. This ensures that mf2pt1 gets the correct outline directions which is a necessary prerequisite for FontForge's algorithm to remove overlaps. Some glyph name rules: . Most glyph names have the form ., where is defined with the `fet_begingroup' command, and is given with `fet_beginchar' (within a `fet_begingroup' block). Example: `clefs.vaticana.fa'. . Sometimes it would be sensible to use negative numbers in glyph names. However, the `-' character shouldn't be used in a glyph name. Replace it with `M'. For example, write `rests.M3mensural' instead of `rests.-3mensural'. . Glyphs which exist in both an `up' and `down' version should start the part with either `u' or `d', respectively. Example: `flags.d3', `flags.u3'. Glyphs which are neutral w.r.t. the direction, and where members of the glyph group exist which have `up' and `down' versions, should start with an `s'. Example: `noteheads.s0re'. Some design rules: . Always use smooth curve transitions. Since this is difficult to see in MetaFont proof sheets (which don't show the tangents) I recommend to call mf2pt1 like this FONTFORGE=foo mf2pt1 ... (`foo' should be a non-existent program; this avoids the default postprocessing). Then call FontForge to inspect the outlines. . Use rounded corners. Finally, some rules to assure that rasterization at low resolutions gives good results. Today, this is a minor issue, but in some cases it might show design flaws. . Use `define_whole_pixels' and friends where appropriate. . Use `hround' and `vround' consistently. A lot of auxiliary macros are defined in feta-macros.mf. . If a path element is duplicated or shifted, use an integer value for the offset. . Add `eps' for mirrored paths to assure correct MetaFont rasterization. See the comment and the variables at the end of `feta-params.mf' for details how vertical symmetry should be achieved.