The Ekmelos Font

Download Ekmelos 2.8

Ekmelos is a music font compliant with SMuFL1.

It has been initially designed for use in conjunction with Ekmelily – an extension for LilyPond – and ekmelib to provide mainly accidental symbols for the notation of microtonal music. Meanwhile, it includes over 1000 glyphs of several groups (clefs, noteheads, flags, articulations, rests, repeats, etc.)

The Ekmelos Font Software is a family consisting of four fonts:

  • Ekmelos
  • Ekmelos 12-EDO
  • Ekmelos 24-EDO
  • Ekmelos 72-EDO

The three "Ekmelos N-EDO" fonts are intended for use with ekmelib and include only the glyphs required by the respective version 12-, 24-, 72-EDO, thus reducing significantly the download volume.

Ekmelos is licensed under the SIL Open Font License, version 1.1, which means it is free to use, redistribute, and modify, but please do respect the conditions set out in the license.

Ekmelos is created with the excellent FontForge 2.0.
The WOFF2 fonts are created with woff2woff2.

See also

Repertoire

The latest version 2.8 implements 1140 glyphs. It includes some "Optional glyphs" starting at code point U+F600; among others, the accidentals of the Richter Herf / Maedel notation which are used in the predefined notation style rhm of Ekmelily. These glyphs are private supplements and subject to change.

Beside musical symbols, the font includes the Unicode Basic Latin (ASCII) characters for textual alternatives to the accidentals, as used in the HEWM (Helmholtz / Ellis / Wolf / Monzo) notation, and in the Sagittal Pure-long and Mixed-short ASCII representation, e.g. the small letter v or \!/ for a quarter-tone down.

Installation

Install the OpenType font file Ekmelos.otf like other fonts on your system:

  • On GNU/Linux, copy the file 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 to /Library/Fonts.
  • On Windows, drag the file to C:\Windows\Fonts.

For use with Ekmelily, LilyPond's own font cache 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.

Metadata

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

metadata.json
Provides font-specific metadata for Ekmelos compliant with SMuFL. It includes the keys "fontName", "fontVersion", "engravingDefaults", "glyphBBoxes", "ligatures", and "optionalGlyphs" – but not "glyphsWithAnchors", "glyphsWithAlternates", "sets".
classes.json
Corresponds to the SMuFL file of the same name but only with the classes that include glyphs of Ekmelos and the following supplements (mostly for optional glyphs):
  • accidentalsMedRen: Medieval and Renaissance accidentals. These are SMuFL Recommended characters, however without a class.
  • accidentalsRHM: Accidentals of the Richter Herf / Maedel notation used in the predefined notation style rhm of Ekmelily for 72-EDO.
  • accidentalsHalf: Accidentals used in the predefined notation style sth of Ekmelily for 31-EDO.
  • accidentalsHelmholtzEllisSupplement: Supplements to the Extended Helmholtz-Ellis accidentals.
  • noteheadSetTick: A note head used for the note name t (a metronome tick) in ekmelib.
  • letter, number, punctuation, separator, symbol: Unicode characters for textual alternatives to accidentals. The classes correspond to the Unicode “General Categories” L, N, P, Z, S.
glyphnames.json
Corresponds to the SMuFL file of the same name but only with the glyph names of Ekmelos.
The value of "description" is either taken from SMuFL, or for a Unicode character, the character name in lowercase, or for a ligature, a comma-separated concatenation of its components' descriptions. Note: The latest version of Ekmelos does not include ligatures.
glyphdata.json
Provides summarized metadata of the glyphs of Ekmelos. This is an extended version of glyphnames.json with the following keys for each glyph name:
  • "codepoint", "alternateCodepoint", "description": See glyphnames.json.
  • "code": Codepoint as a numeric value.
  • "block": Name of the block range that includes this glyph:
    "0000"Basic latin (ASCII)U+0020..U+007F
    "2000"General PunctuationU+2000..U+206F
    "2600"Miscellaneous symbolsU+2600..U+26FF
    "E000"Recommended characterU+E000..U+F3FF
    "F400"Optional glyphU+F400..U+F8FF
    "1D100"Musical symbolsU+1D100..U+1D1FF
  • "classes": List of classes that include this glyph.
  • "ligature": List of glyph names of the components. This is defined only for ligatures.
  • "ekmelily": True if the glyph is used in predefined notation styles of Ekmelily. Else it is not defined.
  • "ekmelib": True if the glyph is used in tunings of ekmelib. Else it is not defined.
ekmelos-map.ily
Provides a Scheme alist with code points mapped onto the glyph names of Ekmelos:
#(define ekmelos-map '(
  ("GLYPHNAME" . CODEPOINT)
  ...
))
ekmelily.json
Groups the accidental glyphs of Ekmelos together into the tunings and notation styles supported by Ekmelily:
{
  "EDO": {
    "NOTATION": {
      "GLYPHNAME": DEGREE,
      ...
    },
    ...
  },
  ...
}

  • EDO is one of the equal-temperament tunings 12, 19, 24, 31, 36, 48, 72.
  • NOTATION is a predefined notation style, e.g. sag, rhm.
  • GLYPHNAME can appear in multiple tunings and notation styles, possibly representing different degrees.
  • DEGREE is the degree of the alteration that the glyph represents in the respective EDO and NOTATION.
ekmelib.json
Groups the glyphs of Ekmelos together into the tunings supported by ekmelib:
{
  "EDO": [
    "GLYPHNAME",
    ...
  ],
  ...
}

  • EDO is one of the equal-temperament tunings 12, 24, 72.
  • GLYPHNAME can appear in multiple tunings.
  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) starting at code point U+E000.