Skip to main content
Participating Frequently
April 17, 2004
Question

ordinals feature

  • April 17, 2004
  • 12 replies
  • 1564 views
hallo,
I have problem to make ordinals substitution working:

sub [one one.small one.osf] s' t by s.superior
sub [one one.small one.osf] s t' by t.superior

(I have also tried
sub [one one.small one.osf] s.superior t' by t.superior

in any case I alwas get this result /one /s.superior /t

it seems to me that any substitution with the target glyph in the end of the string longer than two glyphs is not working and I cannot find the reason why. but it is working when the target glyph is in the middle.

any ideas?

thanks a lot for any hint

pavel
This topic has been closed for replies.

12 replies

Inspiring
May 14, 2004
The other consideration is that this is very anglo-centric. What about ordinals for other languages?

Adobe started going down that path, and that's why we decided to stop doing our ordinals as contextual. It was just crazy to try to anticipate every relevant language, and there's no reason users should be hobbled to only use the languages we think about.

Regards,

T
Known Participant
May 12, 2004
Wouldn't it be cleaner to have an "s_t.superior" ligature?

Then it's just

sub [one one.small one.osf] s' t' by s_t.superior
Participating Frequently
April 29, 2004
Oh yes, Read. I have found it out.
I will have to use FontLab 4.52 because FL4.60 is simply not able to compile universally working OTF.

Thanks a lot for your support.

Pavel
Inspiring
April 28, 2004
Your solution does work for newer programs, but will fail in InDesign 2.0.

I suggest that it would be better to use the correct syntax in the feature file, and add the necessary text in your name table name ID 5 Version string. That way, both InDesign 2 and InDesign 3 and later will process the rules correctly. Furthermore, when you rebuild your font with FontLab 5, where the underlying tools error ought to be fixed, you will need to change only the Version string, instead of fixing all the affected contextual substitution rules.
Participating Frequently
April 27, 2004
Read,
Thanks for your support.
Version string "mystery" is now solved and clear to me. :-)

Meanwhile I found out (thanks to FontLab support staff) that the main problem is that there must be reversed order of the glyphs in contextual substitution:

sub [one one.small one.osf] s' t by s.superior
sub s.superior [one one.small one.osf] t' by t.superior

Now, this substitution works as expected and returns:
/one /s /t >>>> /one /s.superior /t.superior

(the trick I was not able to find in OTF Features Syntax ver. 1.4)

Pavel
Inspiring
April 26, 2004
The contents of the name table Name ID 5 do affect how InDesign 3 (and other Adobe programs) process contextual substitutions. An ugly hack, but the best we could think of. Certainly is better than making a whole group of fonts not work.

The necessary documentation notes are in the file: "FDKReleaseNotes.txt" at the top level of the FDK directory tree.
Participating Frequently
April 21, 2004
Read,
I did not have a clue that version string (do you really mean 5.x.x in Name table?) affects the interpretation of OTF features in InDesign. I do not know which string identifies OTF as IND2-compatible format. Could you please point me to the document where it is decribed? I have gone through OTF specification and FDK documents but I could not find it.
Thanks a lot.
Pavel
Inspiring
April 21, 2004
You can use FontLab 4.x; you just need to make sure that the name table Version string contains one of the strings of text that will identify your font as having the InDesign2-compatible format,. MakeOTF in the FDK1.6 still builds contextual susbtitutions in the old format by default; you hve to select an option avodi this.
Participating Frequently
April 20, 2004
Thanks Read,

I am currently trying to use FontLab 4.6.0 (instead of FDK 1.6) and this is probably the cause of my problem.

As you have said,
sub a b' c by b.alt; works just fine.

Thank you very much once more.

Pavel
Inspiring
April 20, 2004
Then we are missing some information. As a general statement, rules of the form:
sub a b c' by c.alt;
are correctly built in the font, and do work. If your experience is that they do not, I can think of only one possiblity: you are running into an bug in conextual substitution in MakeOTF, and older FontLabs. Through InDesign 2.0 and FontLab 4.5, and MakeOTF FDK1.5, these tools interpreted the order of glyphs before the substitution in an order opposite that of the MS tools and programs. (These tools all worked together happily, however. ) The symptom is that rules with more than one glyph in the back-track sequence match in the reverse order. Hence the first rule will match in the context expected, as there is only one glyph in the backtrack sequence; the second rule won't because there are two glyphs. You can quickly test this by building the rule with the order being:
b a 'c by c.alt;
if works in the context "a b c", this is the problem.

For details on this issue, please see the message on this forum, in the archives directory:
"New release of the Adobe Font Development Kit for OpenType"
Read Roberts - 10:45pm Mar 10, 2003 Pacific