An oddity with the replacements via 'locl'

I noticed a fact that baffled me.
I do not know if it is physiological, or derives from some mistake of mine.
Imposed a 'locl' substitution lookup that concerns both lowercase letters and small caps (the example I report is purely simplifying; I did an experiment by modifying EB Garamond as a test).

Now:
1) the lowercase letter (in my experiment the <a>) respects the replacement of the lookup;
2) the same substitution is also applied to the <a> small cap, I don't understand why;
3) the substitutions for the letters small caps are not carried out at all.
What's strange or wrong?

Comments

  • mauro sacchetto
    mauro sacchetto Posts: 353
    edited August 2019
    I have:
    lookup loclLocalizedFormslookup4 {
      lookupflag 0;
        sub \m by \perthousand ;
        sub \a.sc by \ampersand ;
        sub \e.sc by \w.sc ;
        sub \i.sc by \i.dotsc ;
        sub \o.sc by \oslashacute.sc ;
        sub \r.sc by \multiply ;
        sub \lacute.sc by \Wcircumflex ;
    } loclLocalizedFormslookup4;
    
    feature locl {
      script DFLT;
         language dflt ;
          lookup loclLocalizedFormslookup4;
      script grek;
         language dflt ;
          lookup loclLocalizedFormslookup4;
      script latn;
         language AZE  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language CRT  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language DEU  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language FRA  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language ITA  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language MOL  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language ROM  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language TRK  exclude_dflt;
          lookup loclLocalizedFormslookup4;
         language dflt ;
          lookup loclLocalizedFormslookup4;
    
    } locl;
    and

    lookup smcpLowercasetoSmallCapitalslookup20 {
      lookupflag 0;
        sub \quotedbl by \quotedbl.sc ;
        sub \quotesingle by \quotesingle.sc ;
        sub \grave by \grave.sc ;
        sub \a by \a.sc ;
        sub \b by \b.sc ;
        sub \c by \c.sc ;
        sub \d by \d.sc ;
        sub \e by \e.sc ;
        sub \f by \f.sc ;
        sub \g by \g.sc ;
        sub \h by \h.sc ;
        sub \i by \i.sc ;
        sub \j by \j.sc ;
        sub \k by \k.sc ;
        sub \l by \l.sc ;
        sub \m by \m.sc ;
        sub \n by \n.sc ;
        sub \o by \o.sc ;
        sub \p by \p.sc ;
        sub \q by \q.sc ;
        sub \r by \r.sc ;
        sub \s by \s.sc ;
        sub \t by \t.sc ;
        sub \u by \u.sc ;
        sub \v by \v.sc ;
        sub \w by \w.sc ;
        sub \x by \x.sc ;
        sub \y by \y.sc ;
        sub \z by \z.sc ;
        .
        .
        .
        sub \dieresis by \dieresis.sc ;
        sub \macron by \macron.sc ;
        sub \uni1EF5 by \uni1EF5.sc ;
        sub \uni1EF7 by \uni1EF7.sc ;
        sub \uni1EF9 by \uni1EF9.sc ;
    } smcpLowercasetoSmallCapitalslookup20;
    
    feature smcp {
      script DFLT;
         language dflt ;
          lookup smcpLowercasetoSmallCapitalslookup20;
      script grek;
         language dflt ;
          lookup smcpLowercasetoSmallCapitalslookup20;
      script latn;
         language AZE  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language CRT  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language DEU  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language FRA  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language ITA  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language MOL  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language ROM  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language TRK  exclude_dflt;
          lookup smcpLowercasetoSmallCapitalslookup20;
         language dflt ;
          lookup smcpLowercasetoSmallCapitalslookup20;
    
    } smcp;

    Do you see anything wrong? 'locl" is lookup04, 'smcp' is lookup 20; both applied to all languages

  • mauro sacchetto
    mauro sacchetto Posts: 353
    edited August 2019
    I understand, although in reality it is my fault that I have probably complicated things.
    I have a font in which, immediately after the 'aalt' (0 and 1) lookups, I have two 'locl' replacement lookups.
    https://www.dropbox.com/s/q7r6jcf5e9iyhwc/test-Regular.otf?dl=0
    Now, in lookup 3 the substitution cedilla.sc -> ccommaaccent.sc for MOL and ROM works.
    Instead in lookup 2 the i.sc -> i.dotsc for TRK does not go and I always find the lower case <i>.
    Apparently the settings are the same, and I can't understand this different behavior ...
  • Ahhhh solved. It was lacking
    i.dot --> i.dotsc

    in "smtp" lookup.

    Sorry for posting a not useful tread and thank you