Ekmelos Font

Download Ekmelos 2.0

Ekmelos is a music font, designed primarily for use together with Ekmelily and ekmelib for the notation of microtonal music, in particular in the 72-tone equal-temperament system (72-EDO, Ekmelic System), as well as in the included sixth-, quarter-, and third-tone systems (36-,24-,18-EDO).

The latest version 2.0 includes 337 glyphs, mainly accidentals representing semi-, third-, quarter-, sixth-, and twelfth-tone equal-temperament degrees. The standard 12-EDO accidentals correspond to the glyphs of the Feta font in LilyPond. Many others are arrow-like signs, upward and downward, to be placed either alone or in combination to the left of a standard 12-EDO accidental. The font includes, beside musical symbols, a selection of Unicode characters for textual alternatives to the accidentals as used in the Monzo HEWM notation and in the Sagittal Pure-long and Mixed-short ASCII representation, e.g. the small letter v or \!/ for a quarter-tone down.

Ekmelos (since version 1.0) is compliant with SMuFL1 version 1.20 (in terms of character encoding and guidelines for the font metrics). It defines an extended subset of the “Recommended characters” of SMuFL.

All glyphs defined in Ekmelos are listed in the file Ekmelos.pdf in the download package. See also the Ekmelos project and the table of Alterations.

Ekmelos is created with FontForge 2.0. It is released under the SIL Open Font License, version 1.1.

Installation

Install Ekmelos like other OpenType fonts on your system:

  • On GNU/Linux, copy the file Ekmelos.otf e.g. to /usr/local/share/fonts (or a subfolder), and rebuild the font cache with fc-cache -f -v (or reboot).
  • On OS X, copy the file EkmelosMac.otf to /Library/Fonts.
  • On Windows, drag the file Ekmelos.otf to C:\Windows\Fonts.

For use with LilyPond (Ekmelily), LilyPond's own font cache must be deleted, i.e. the folder ~/.lilypond-fonts.cache-2 (on Windows %HOMEPATH%\.lilypond-fonts.cache-2) must be emptied or completely deleted. So at the next execution of LilyPond this cache will be rebuilt from scratch inlcuding the new font. This applies also after each update with a new version of Ekmelos.

Examples

Some accidental symbols defined in Ekmelos (and combinations) which are used for notation styles in Ekmelily:

  • rhmRichter Herf / Maedel notation
  • simsSims notation
  • sagSagittal notation' ' '
  • wysWyschnegradsky notation' ' '' ' '

Metadata

The folder metadata in the download package contains the following files with metadata for Ekmelos, in JSON format 2 and as LilyPond include file (ily).

metadata.json
Provides font-specific metadata of the Ekmelos font compliant with SMuFL. It includes the keys "fontName", "fontVersion", "engravingDefaults", "glyphBBoxes", "ligatures", and "optionalGlyphs" (but not "glyphsWithAnchors", "glyphsWithAlternates", and "sets").
classes.json
Corresponds to the SMuFL file of the same name but with the classes that include glyphs of the Ekmelos font; in particular, classes with optional glyph:
  • accidentalsRHM: Newly defined class with the accidentals of the Richter Herf / Maedel notation.
  • accidentalsSims: Extended with the ligatures of Sims accidentals for quarter- and sixth-tone degrees.
glyphnames.json
Corresponds to the SMuFL file of the same name but with the glyph names in the Ekmelos font. The value of "description" is either taken from SMuFL, or for a ligature, a comma-separated concatenation of its components' descriptions, or for a Basic Latin (ASCII) character, its Unicode character name (in lowercase).
glyphdata.json
Provides summarized metadata of the glyphs in the Ekmelos font. This is an extended version of glyphnames.json with the following keys for each glyph name:
  • "codepoint", "alternateCodepoint", and "description" as in glyphnames.json.
  • "code": Codepoint as a numeric value.
  • "block": Start (as a hex string) of the block range that includes the glyph:
    0000Basic latin (ASCII)U+0020..U+007F
    2000General PunctuationU+2000..U+206F
    2600Miscellaneous symbolsU+2600..U+26FF
    E000Recommended characterU+E000..U+F3FF
    F400Optional glyphU+F400..U+F8FF
    1D100Musical symbolsU+1D100..U+1D1FF
  • "classes": List of classes including this glyph.
  • "ligature": List of glyph names of the components (only for ligatures).
  • "ekmelily": Structure with all notation styles predefined in Ekmelily which use the glyph as an accidental (or empty for unused glyphs). ACCIDENTAL is the index of the accidental type (an integer in the range 0..34, used in the Ekmelic Music Tables.)
    "ekmelily": {
      "STYLENAME": ACCIDENTAL,
      ...
    }
ekmelily.json
Groups the glyphs in the Ekmelos font together into the notation styles predefined in Ekmelily:
"STYLENAME": {
  "GLYPHNAME": "ALTERATION",
  ...
}

STYLENAME is a predefined notation style, e.g. rhm. ALTERATION is the tone fraction (inflection) in the range −5/4 thru +5/4 that the glyph (accidental) represents in the notation style STYLENAME. The same GLYPHNAME can appear in multiple notation styles, in each representing another alteration.
ekmelos-map.ily
Provides a Scheme alist with code points mapped onto the glyph names in the Ekmelos font:
#(define ekmelos-map '(
  ("GLYPHNAME" . CODEPOINT)
  ...
))
  1. SMuFL (Standard Music Font Layout) is a specification for music symbols, developed by the W3C Music Notation Community Group. It uses the Unicode Private Use Area (PUA) in the Basic Multilingual Plane (BMP) starting at code point U+E000.
  2. See json.org for more information about the JSON format.