/junicode-font

A new version of Junicode font

Primary LanguageHTMLSIL Open Font License 1.1OFL-1.1

Sample Image

This is the development and distribution site for Junicode 2, a radically rebuilt version of the widely used free font for medievalists, linguists, and specialists in many academic disciplines. (Junicode 1.003, the last in the Junicode 1 series, can also be downloaded here.) Junicode 2 features full compliance with the recommendation of the Medieval Unicode Font Initiative, version 4.0, plus later additions and revisions, and its OpenType programming has been rebuilt with a view to promoting accessibility and searchability in web pages and other electronic document formats.

The Junicode 2 font

  • has the same character set in all faces (unlike Junicode 1);
  • has five weights (Light, Regular, Medium, Semibold, Bold)
  • and five widths (Regular, SemiCondensed, Condensed, SemiExpanded, Expanded);
  • includes a ttf-flavored variable font with three axes: width, weight, and the custom Enlarge axis;
  • has improved outlines,
  • an expanded collection of small caps (covering all case-paired characters),
  • a more comprehensive set of anchors for mark positioning,
  • and an expanded collection of OpenType features—carefully chosen and organized to promote the display of accessible text.

Users of the various versions of Junicode 1 need to be aware that documents originally set in Junicode 1 may reflow when set in Junicode 2. Further, documents that use the OpenType features of Junicode 1 (aside from basics like kerning and standard ligatures) may not be displayed properly when changed over to Junicode 2.

The latest version of Junicode can be downloaded here.

PLEASE NOTE: A great many commercial websites offer versions of Junicode. The fonts offered by these sites are always seriously out of date. Often they are accompanied by incorrect licenses or other faulty information, and often the packages they offer are incomplete. If the archives in which these fonts are packaged are corrupt or infected with malware, that is not the responsibility of Junicode’s developer. Always use versions of Junicode downloaded from this site or from reputable Open Source repositories like Homebrew, Linux distributions, or CTAN. This site will not support versions of Junicode downloaded from commercial websites.

Resources

A specimen page.

My Twitter feed, where I'll share new developments from time to time.

A discussion forum where you can post queries about Junicode and how to use it.

An essay on making Searchable and accessible texts with Junicode.

An introduction to the Enlarge axis: what it's for and how to use it.

Test/demonstration of high-level CSS font properties in Junicode 2.

Building Junicode

If you want to build Junicode for yourself, you'll need a Python environment with version 3.10.4 or higher and these Open Source apps:

  • fontmake (Python app -- install with pip)
  • glyphspkg (Python app -- install with pip)
  • psautohint (for hinting .otf fonts -- Python app -- install with pip)
  • xgridfit (for hinting .ttf fonts -- Python app -- install with pip)
  • ttfautohint (for hinting static .ttf fonts)
  • Various utilities that should already be installed on Mac OS and Linux systems: the Bash shell, xsltproc, sed, mktemp, basename.

The Bash script build_font must be run once for roman fonts and again for italic. It creates two directories: build, a temporary directory, which will be replaced next time the script is run (or you can delete it yourself), and dist, where it will place the finished fonts. Make sure the script is executable and run it from the command line:

  • with no argument (or ttf) to create a collection of static .ttf fonts.
  • with the argument otf to create .otf fonts
  • with the argument variable to create TrueType-flavored variable fonts

These options are available:

  • -r build roman fonts (this is the default).
  • -i build italic fonts.
  • -n skip hinting the fonts.
  • -s produce a minimal set of fonts or instances: Regular, Italic, Bold, Bold Italic.
  • -u skip the step of replacing the build directory and use previously generated UFOs in that directory.
  • -d <dir> source directory (default is ./).
  • -b <dir> build directory (default is ./build).
  • -o <dir> output directory (default is ./dist).