Code Monkey home page Code Monkey logo

fonts-znam's Introduction

fonts-znam

OpenType fonts for Znamenny Notation

OpenType шрифты для знаменной нотации

Description

This repository provides fonts for typesetting Znamenny and other related Slavic neumatic music notations systems (Demestvenny, Put, Kondakarian).

All fonts provide necessary OpenType features and supply PostScript (.otf) outlines for glyphs. Note that support for SIL Graphite features has been discontinued.

Encoding

Znamenny and related notation systems have been accepted for encoding in version 14 of Unicode. The proposed codepoints are specified in the proposal. These codepoints have been approved by the UTC, but may still change before the release of Unicode 14.0.

Building

To build fonts:

make fonts

To build the web version:

make web

Requirements

The fonts include color data in both COLR / CPAL format and OpenType-SVG format. Building the fonts requires:

The latter three packages can be installed via pip:

pip3 install fonttools
pip3 install opentypesvg
pip3 install gftools

Building the web version additionally requires:

License

Fonts are licensed under the SIL Open Font License v. 1.1 without reserved font names.

Documentation

Font documentation is available on the website.

Disclaimer

This package is beta-stage software and is intended primarily for software testing purposes.

fonts-znam's People

Contributors

starover77 avatar typiconman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fonts-znam's Issues

Add anchor points for Shaidur font

The task of adding anchor points to the Shaidur font was started, but was not finished. Most of the anchor points in the PUA are just copied from Mezenets and need to be adjusted. Anchor points need to be added to the glyphs in the range accepted by UTC.

Solutions needed for the alternate placement of pitch marks

We need to find solutions for the alternate placement of pitch marks. While the pitch mark placements are now fully resolved for Znamenny notation, there remain several complex placement issues for Kalashnikov's version of Demestvenny notation. One solution we had discussed was to use the Combining Grapheme Joiner to disrupt the sequence of pitch stacking. I am compiling a list of these problematic neumes and providing images of them to guide us in this work.

GSUB lookup needs to be corrected

When the Zanozhek (U+1CF55) is followed by the Kryzhik (U+1CF40), it should point to the composited form in the PUA. For the default (old style) form, it correctly pints to U+EA7B, but for SS02, it incorrectly points to the variant with the vertical omet (U+EA8D) instead of EADE. This should be an easy fix/

Dual option of red/black Podvertka mark

We need to create a stylistic set option so that the Podvertka (RED by default) can be alternatively typeset in BLACK, in which case it also uses lookups to point to composite forms in the PUA.

Explanation: In Type A and B notations, both systems allow for the presentation of the Podvertka in either red or black. Red is historically more accurate, as the Podvertka was introduced by Shaidur as a "markup" symbol below the right side of a base neume to indicate an extra descending note, where previously it was known to add the extra note through context. Over time, even in the Type B usage, the red mark SOMETIMES lost its color in certain contexts, but it was never firmly settled on, so we can find a dual usage of red or black, sometimes even in the same source. Note that its usage as a black mark was "in-line", rather than the red version being a "subscript" mark. See U+EAE1, EAE5, EAE9, EAEB, EAEF and EAF2 for black-podvertka composites. (This usage was also applied to the Statiya in certain popevki; the form with the red podvertka was mistaken for the Polukulizma Malaya, and so they ended up being conflated into a single all-black form.)

The dual usage was carried over into Type A notation, which also added a black-composite version of the Palka with Podvertka (see U+EA9B and EA9D). Type B usage didn't make this switch.

New GSUB needs to be added

For Demestvenny notation, the seldom-used sequence of Skameitsa klyuchevaya (U+1CF75) plus Slozhitie (U+1CF7D) forms a ligature that cannot be conveniently produced by kerning, as the amount of kerning would be excessive and the anchor points would be problematic. I propose that we add a lookup to point to a newly-added composite (or contracted) character at U+EC11.

Add monochrome version of Put/Kazan priznaki

In the Mezenets font, selecting Stylistic Set 4 should turn the coloring of PUT/Kazan priznaki off. To do this, we need to duplicate the priznakified glyphs in the PUA and then add mappings to them in SS04.

Changes to PUA - blue subzone

Here is a TODO for changes to the PUA (blue subzone), best done in this order:

  1. Move the following four characters into the PUA (by swapping them out and then deleting the unneeded ones):
    U+1CF70 to U+EAC5 (chaska polnaya)
    U+1CF87 to U+EAFA (zmeitsa)
    U+1CFC3 to U+EB5E (truba)
    U+1CFC6 to U+EB5F (pauk velikii)

  2. Delete U+EB20 and U+EB22.

  3. Move U+EB5B and U+EB5C into the two slots that were just vacated in #2 above.

  4. Move U+EB58 and U+EB59 into the two empty slots at U+EADA and U+EADB.

  5. Move U+EB35 to U+EB32.

  6. Move U+EB52 to the slot that was just vacated at U+EB35.

  7. Move U+EB51 to U+EAC8.

  8. Add lookups to the following new characters:
    U+EA9E
    U+EABC
    U+EABD
    U+EB37

A color-reverse version of the font is needed

A color-reverse version of the font is needed, for use in polyphonic scores, as well as for explanations of neumes according to the usage of Kalashnikov and an entire manuscript tradition. In this variant font, all base neumes and black marks should appear in red by default, and all red marks should appear in black.

Support OpenType-SVG

Right now color is handled via COLR/CPAL. We should also support the new OpenType-SVG standard:
See here; support is described here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.