]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/contributor/feta-font.itexi
Issue 4425: Fix some CG musing about music functions
[lilypond.git] / Documentation / contributor / feta-font.itexi
index a8bf78fe75dfb56af19f6f62e08ce12737028f38..002aa895a43167a4fc9eac319d2925e6de207b9e 100644 (file)
@@ -8,6 +8,7 @@
 * Adding a new font section::
 * Adding a new glyph::
 * Building the changed font::
+* METAFONT formatting rules::
 @end menu
 
 @node Overview of the feta font
@@ -17,7 +18,10 @@ The feta font is a font that was created specifically for use in
 LilyPond.  The sources for the font are found in mf/*.mf.
 
 The feta font is merged from a number of subfonts.  Each subfont
-can contain at most 223 glyphs.
+can contain at most 224 glyphs.  This is because each subfont is
+limited to a one-byte address space (256 glyphs maximum) and we
+avoid the first 32 points in that address space, since they are
+non-printing control characters in ASCII.
 
 In LilyPond, glyphs are accessed by glyph name, rather than by code point.
 Therefore, the naming of glyphs is significant.
@@ -38,13 +42,15 @@ available at CTAN.
 
 mf2pt1 is used to create type 1 fonts from the metafont sources.
 
-FontForge is used to display the resulting glyph shapes.
+FontForge is used to postprocess the output of mf2pt1 and clean up
+details of the font.  It can also be used by a developer to
+display the resulting glyph shapes.
 
 @node Adding a new font section
 @section Adding a new font section
 
 The font is divided into sections, each of which contains less
-than 223 glyphs.  If more than 223 glyphs are included in a section,
+than 224 glyphs.  If more than 224 glyphs are included in a section,
 an error will be generated.
 
 Each of the sections is contained in a separate @code{.mf} file.  The
@@ -62,6 +68,8 @@ An entry in the generic file used to create the font, or a new
 generic file
 @item
 If necessary, new entries in the GNUmakefile
+@item
+An entry in @file{scripts/build/gen-emmentaler-scripts.py}
 @end itemize
 
 See the examples in @code{mf/} for more information.
@@ -105,3 +113,28 @@ rm mf/out/*
 make
 @end example
 
+@node METAFONT formatting rules
+@section METAFONT formatting rules
+
+There are special formatting rules for METAFONT files.
+
+Tabs are used for the indentation of commands.
+
+When a path contains more than two points, put each point on a
+separate line, with the operator at the beginning of the line.
+The operators are indented to the same depth as the initial point
+on the path using spaces.  The indentation mechanism is illustrated
+below, with @samp{------->} indicating a tab character and any other
+indentation created using spaces.
+
+@example
+def draw_something (test) =
+------->if test:
+------->------->fill z1
+------->------->     -- z2
+------->------->     -- z3
+------->------->     .. cycle;
+------->fi;
+enddef;
+@end example
+