Skip to content

Some help with OpenType

Featured Replies

I'm trying to develop some open source fonts for an Indic language. My font works almost as expected, except that when ligatures formed by GSUB rules combine with certain marks, they break down. One example is

feature blwf { # Below-base Forms
 script orya; # Oriya
    sub or_ta or_halant by or_ta_phalaa;
}blwf

feature pres { # Pre-base Substitutions
 script orya; # Oriya
    sub or_ta or_ta_phalaa by or_t_ta;
}pres

So when I want the glyph "or_t_ta" it forms fine. But when I combine it with "or_reph" or "or_ikaar" marks, the 2nd substitution <pres> is ignored and I get "or_ta + or_ta_phalaa + or_ikaar".

Any ideas why this might be happening? If you want to take a look at my ttf file, it is here https://goo.gl/02CHev
 

  • 6 years later...

I am assuming coldbreeze16 has already had his answer.  For anyone else who comes to this thread looking for an answer, the answer is stunningly simple.  Indic rearrangement occurs between the applications of features blwf and pres, so or_ikaar or or_reph, if present, will be moved to immediately after  or_ta, so if the input was <TA, VIRAMA, TA, SIGN I>, the glyph order will have become <or_ta, or_ikaar, or_ta_phalaa>.  This is all documented at Developing OpenType Fonts for Odia Script.  I see two solutions.  One is to form or_t_ta in feature cjct before rearrangement occurs - I am not sure if the shapers allow that, as I don't program to work with the complex Indic shaping engine - or in feature akhn.  The other is to modify the second lookup to skip non-spacing marks, so that or_ta and or_ta_phalaa will ligate despite the intervening or_ikaar (or or_reph).

Create an account or sign in to comment

Important Information

We are placing functional cookies on your device to help make this website better.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.