MakeOTF error on NotoSansDevanagari-Regular

Glyphs 2.4 (939) on MacOS.

Open NotoSansDevanagari-Regular.ttf (https://github.com/googlei18n/noto-fonts/blob/master/unhinted/NotoSansDevanagari-Regular.ttf).

Export it.

MakeOTF error
Error: “empty block” in Feature rkrf in line: 84

The relevant region in the features.fea is:

sub g545 uni094D uni0930 by g323;
sub g551 uni094D uni0930 by g555;
sub g552 uni094D uni0930 by g556;
} rkrf0;
lookup rkrf1 {
} rkrf1;
language MAR ;
lookup rkrf2 {
sub uni0915 uni094D uni0930 by g254;
sub uni0916 uni094D uni0930 by g255;

If I am not mistaken, rkrf1 should have been something like this (AOTS syntax):

     <lookup id="lookup_7" type="5">
        <contextual format="1">
           <pattern in="127 81 52">
              <apply pos="1" lookup="lookup_8"/>
           </pattern>
           <pattern in="128 81 52">
              <apply pos="1" lookup="lookup_8"/>
           </pattern>
           <pattern in="130 81 52">
              <apply pos="1" lookup="lookup_8"/>
           </pattern>
           <pattern in="131 81 52">
              <apply pos="1" lookup="lookup_8"/>
           </pattern>
        </contextual>
     </lookup>
     <lookup id="lookup_8" type="4">
        <ligatureSubst format="1">
           <subst in="81 52" out="182"/>
        </ligatureSubst>
     </lookup>

Thanks,
Eric.

Reverse engineering feature code from binary data is not always possible. I’ll have a look.

My curiosity was aroused. After all, Noto Sans Devanagari is one of mine.

With the advantage of having the same TTF with a human friendly post table, I can see what happens with Glyphs attempts to open and generate a font.

In the feature file in the temp folder, I recognize the general structure of the original GSUB, but it is a mess. The empty block lookup rkrf1 { } rkrf1; is the first of many, as it seems all contextual lookups are missing, or incorrect (at least incomprehensible to me). There is no sign of GPOS data.

It is possible that the Adobe feature file syntax representation of OpenType Layout tables doesn’t do justice to the richness of contextual lookup formats?

Jelle.

PS: not to mention that for the non-contextual lookups, where the original has 1 lookup, the decompiled source may end up with up to 6 duplicates.

Could you send the one of the original feature files? That would help a lot improving the parser.

If you search GitHub for Noto Sans Devanagari GSUB, you are bound to find sources. They are for a later version with some additional ligatures and some refinements, but essentially the same.

It is not exactly “feature files”. The format is documented at https://github.com/Monotype/OpenType_Table_Source. But for those with familiarity with the actual layout tables, rather than Adobe’s representation, they should not be hard to decrypt without documentation.

Jelle