Calt not working

mauro sacchetto
mauro sacchetto Posts: 353
edited February 2023 in Font Technology
I created a CALT (related to a simply substitution) which, for French and Latin, replaces quoteright with quoteright.fr; in truth, I have never understood the reason for having a different bearing for French and Italian than for other languages, except for the different function of the apostrophe, which in French and Italian indicates elision.
I similarly created a CALT that should replace quoteright.sc with quoteright.frsc, but it doesn't work in this case.
In fact, in the respective lookups that FontForge creates, I find the correct syntax in the first case:
========================================================================
lookup caltContextualAlternatesinLatinlookup40 {
  lookupflag 0;
    sub [\A \B \C \D \E \F \G \H \I \J \K \L \M \N \O \P \Q \R \S \U \V \W \X \Y \Z \a \b \c \d \e \f \g \h \i \j \k
    \l \m \n \o \p \q \r \s \t \u \v \w \x \y \z ] [\quoteright ]'  by [\quoteright.fr ];
} caltContextualAlternatesinLatinlookup40;
========================================================================
In the second case, however, I find a confused (incorrect) syntax, which I can't decipher:
========================================================================
lookup SingleSubstitutionlookup46 {
  lookupflag 0;
    sub \quoteright.sc by \quoteright.frsc ;
} SingleSubstitutionlookup46;

lookup caltContextualAlternatesinLatinlookup41 {
  lookupflag 0;
    sub [\a.sc \b.sc \c.sc \d.sc \e.sc \f.sc \g.sc \h.sc \i.sc \j.sc \k.sc \l.sc \m.sc \n.sc
    \o.sc \p.sc \q.sc \r.sc \s.sc \t.sc \u.sc \v.sc \w.sc \x.sc \y.sc \z.sc ] [\quoteright.sc ]'lookup SingleSubstitutionlookup46  ;
} caltContextualAlternatesinLatinlookup41;
========================================================================
Or perhaps the transition from quoteright to quoteright.sc and then to quoteright.frsc needs to be done differently?
Thank you
m







Comments

  • I saved the files in UFO3 format, edited the features.fea file by hand and generated the otf with fontmake and now everything works. I don't understand if FontForge gets confused with a non-Unicode glyph like quoteright.frsc


  • This may be irrelevant, or an artifact of something else in copying the code over, but… isn’t there a missing space near the end of the problem example?

     > [\quoteright.sc ]'lookup SingleSubstitutionlookup46  ;

    should be 

    >  [\quoteright.sc ]' lookup SingleSubstitutionlookup46  ;
  • mauro sacchetto
    mauro sacchetto Posts: 353
    edited February 2023
    That syntax is automatically generated by FontForge based on the provisions provided in the GUI. In any case, it is not clear why this hypothetical error occurs only in that lookup.
    (Unfortunately, FontForge is not free from bugs, I myself have identified more than one. But to work with Glyphs I'll have to wait until I buy an iMac, probably the next one, announced for the end of the year).