coldbreeze16 Posted July 25, 2015 Posted July 25, 2015 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 isfeature blwf { # Below-base Forms script orya; # Oriya sub or_ta or_halant by or_ta_phalaa;}blwffeature pres { # Pre-base Substitutions script orya; # Oriya sub or_ta or_ta_phalaa by or_t_ta;}presSo 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
Richard W Posted July 17, 2022 Posted July 17, 2022 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). 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now