[smufl-discuss] Re: Glyph Registration and Graphical Metadata

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[smufl-discuss] Re: Glyph Registration and Graphical Metadata

Emil B. Wojtacki
David Webber:
>> Then, to have cue-sized notehead, an application could use a sequence of
> two characters CUE-SIZE + BLACK_NOTEHEAD; Then the font engine would
> draw the correct glyph as a ligature (and 'liga' feature, unlike
> stylistic alternates, is, as to my knowledge, commonly supported,
> because some languages need it for correct spelling).
> It would be very inconvenient for part-time font designers, but seems to
> make sense.
>
> And I'm not sure what would be involved in designing the font to do this.

This requires just one OpenType feature, which is simple. The
inconvenience is to deal with glyphs that have no fixed codepoints and
to provide all the appropriate glyphs.


> I must admit you have now gone beyond what I know to be the
> capabilities of the font engine (in my case in Windows).
>

Well, I'm not sure, what is really necessary to provide this output. It
is simply my experience as engraver and editor using Sibelius (I'll
refer to this program, as this is the one that I use mostly): using
'liga' in font was the most convenient way to achieve properly kerned
parentheses with dynamic marks (editorial parentheses), and the ligated
glyph for mp, in Sibelius 6 under Windows XP (this was an undocumented
feature, and did not work with standard ligatures, like "ffi" in
"soffio").  Perhaps I needed to enable support for Eastern languages in
Windows.

I had also an idea to make a font similar to Finale Mallets, but with
simpler input: for crossed mallets one could type the same character
twice, then the rotated versions of glyphs could be provided by
contextual substitution. And for vertical mallets one could use an
additional character (e.g. vertical bar).
It worked in Sibelius 6, but in Sibelius 7 they changed font engine, and
there is no support for contextual substitution (at least in Latin
script), so my solution is useless in this program (I have not tried
with Private Use Area, maybe it could work).
On the other hand, font engine in Sibelius 7 allows ligatures for digits
(in earlier versions it did not work), so one can have Gregorian chant
fragments set in font Caeciliae (http://marello.org/caeciliae/) within
the score. This font, however, does not work in MS Word, because it uses
ligatures for digits, but (ironically) it works in Notepad in Windows7
as well as in Adobe Illustrator.


> So you're thinking of outputting an entire chord symbol, with numbers
> on the right stacked above each other, with a single operation,as in
> the Windows API
>
> ::TextOutW( L"<characters-representing-entire-chord-symbol>"  );
>
> Is that it?   If so, it's an excellent objective.

I don’t really know, what is necessary to enable support of ligatures,
contextual alternates, and mark-to-mark positioning. But if these are
enabled, then, in my attempt (for C7b5 written so that 7 is displayed
above b5) the characters would be :

CHORD.LETTER.C      HORIZ.ROW.UP      HORIZ.ROW.UP      FLAT
CHORD.FIFTH     HORIZ.ROW.UP      CHORD.SEVENTH      END.STACKING


The problem is, that if there are no letters (ABCDEFGMadgijmnostu - did
I miss something?) and digits provided for this purpose (beyond Latin
Script area), some font engines will not produce the correct output,
since for the Latin script they do not apply any OpenType features.
(This behaviour of engines is basically correct enough for text output,
and seems to conform Unicode standard)

The other disadvantage is that the digits would be relatively small
(because they must fit in five storeys of symbols). I can imagine a font
that would provide additional substitutions depending of the number of
superscripts, but that is not easy.
Anyway, that is the way one could provide displaying of chord symbols
(and general bass) within text. If SMuFL wants to address this purpose,
here is one of possible solutions.

Emil

#############################################################
This message is sent to you because you are subscribed to
  the mailing list <[hidden email]>.
To unsubscribe, E-mail to: <[hidden email]>
To switch to the DIGEST mode, E-mail to <[hidden email]>
To switch to the INDEX mode, E-mail to <[hidden email]>
Send administrative queries to  <[hidden email]>