Opentype Contextual glyph replacement
Has anybody done this yet? Contextual replacement in OpenType using Kerning as the context.
I would like to offer a version of my font Army Pool Tiles ( which has kerning pairs ) in a reverse mode. Originally I thought I could just reverse the tiles but then I found I was getting unacceptable overlaps and gaps when the kerning was used ( suprise suprise) - so I need to create context dependent alternatives that fit correctly for the reverse font/s.
Has anybody here done this?
I am also just starting to learn this aspect of Fontlab. Does anybody have opinions about if it is better to code for contextual substitution in fontlab or with some 3rd part tool?
******
Update. I added an image which shows the kerning result. What the blue highlight is showing is the area I am concerned with in a reverse version of my font. In a reverse version the blue area would be mostly filled with tiles. When I apply a kern between the ’V’ & ’a’, the ’a’ comes closer to the ’V’. Without substitution part of the V would be overlapped. What I plan to do is create an ’a’ which has it’s first line of tiles removed to substitute in when it occurs after ’V’ (and some other glyphs). I have 298 pairs total.
If I get this working I will show the results.
| Attachment | Size |
|---|---|
| example.jpg | 32.9 KB |























18.Oct.2005 12.16pm
i’m confused... can you make your meaning a bit clearer. (for dummies like me)
18.Oct.2005 12.16pm
You can’t use kerning per se as the context, i.e. there is no way to change whether a lookup is applied depending on whether or not kerning is active, but you can certainly substitute special glyphs to resolve spacing issues. I’m doing this in one of my current projects: I have special glyphs of some lowercase letters to use after g and r, so that they don’t collide.
18.Oct.2005 2.04pm
I think Cambria uses a special ’f’ when placed next to ’i’ instead of a traditional ligature.
Cheers, Si
18.Oct.2005 2.36pm
I am attempting to use a special “r” when next to “i” in a typeface I am working on. That part works fine. The problem I am having is when I get a double r next to an i. I can’t get the script to compile. I want to get 2 alternnate r’s next to the i but instead I get two different kinds of r. Anybody have any ideas why? The font is in the Critique section here:
http://typophile.com/node/15626
ChrisL
18.Oct.2005 4.04pm
Aha! So you guys are doing this!
Sorry Paul, I am sure the fault is with my explanation. I will post an visual example of why I want to do this - the best way no doubt.
John, I didn’t think I could get the font’s kerning table to talk to the replacement engine in open type - but I can look at my kerning table & see where I might want to make substitutions and then make them based on context ( V next to a or A) etc.
Chris, & John: You are using Fontlab to make your substitution scripts right?
18.Oct.2005 4.50pm
Eben,
I am using FontLab 4.6 on a Mac. I am not an expert by any means. I am just plodding through the opentype resourse PDFs available from Adobe and Microsoft. John Hudson and Thomas Phinney are very good resources though.
ChrisL
18.Oct.2005 6.18pm
Eben, no, I’m not using FontLab for my substitutions. I do all my OpenType Layout work in MS VOLT.
19.Oct.2005 1.16am
How did each of you decide? MS Volt is windows only right?
19.Oct.2005 3.43am
Eben, I use FontLab for my own substitutions. VOLT is more powerful and definitely worth learning if you have access to a Windows machine. (Which you also want anyway because FontLab Studio 5 is Windows-only so far, and because soon you’ll want to test OpenType font behavior in Avalon applications.) I have not learned VOLT yet because I don’t do complex script type design. (Yet.) Er, and because I’m sorta lazy.
OpenType is supposed to have contextual kerning at some point in the future. At present, only Graphite can do that. So far Graphite is only used in a limited range of applications.
19.Oct.2005 2.56pm
Update ^ up top.
19.Oct.2005 3.13pm
Eben,
I use a Mac so VOLT is not an option. I am more of a visual person and VOLT may be more geeky than I want albeit very powerful.
ChrisL
19.Oct.2005 3.21pm
Eben,
If you can define your context as a particular glyph following a particular glyph or glyphs, it should work fine. The substitution won’t be due to a degree of kerning but the pairing of stated glyphs in sequence.
In my case, I am subing r when it precedes i or j. Here is my script:
feature calt { # contextual alternate
sub r’ [i j] by r.alt;
} calt;
ChrisL
19.Oct.2005 5.01pm
Wow. Thats cool. Very cool.
Actually making the *preceding* character change seems X-TRA cool!
Do you know if there are web pages which offer example code so I can start to deduce what is going on in the code? And maybe make off with some that is relevant too? For some reson I get MEGO when I read directions meant for programmers. But I can code CSS & HTML just fine because I can look at the code & look at what it makes & make the intuitive leap. This probably means I won’t be coding javascript but maybe I can manage some Opentype code with time. It doesn’t look too hairy.
I did find this example from Adam Twardoch @ fontlab’s MSN help site:
feature calt {
sub n o’ by o.calt1;
sub b o’ by o.calt2;
} calt;
It is for ’The first substitutions means: if the “o” glyph is preceded by “n”, substitute the “o” with the “o.calt1” glyph. The second means: if the “o” glyph is preceded by “b”, substitute the “o” with “o.calt2” ’.
So... I think I could maybe say:
feature calt {
sub V a’ by a.calt1;
} calt;
And as long as I have a glyph named ’a.calt1’ then it should work.
Does anybody know what apps support what open type ’calls’ now (eg. ’calt’) - or is there a master list somewhere? I imagine that ’calt’ is a basic call supported by all apps that support open type - but is this right?
19.Oct.2005 6.09pm
Right now the Adobe apps but more will come next year. Microsoft maybe 2007.
You might look at the .fea files of sample fonts from FontLab or peak at the Opentype window of the font to see coded features.
ChrisL
20.Oct.2005 9.19am
The freeware AbiWord activates contextual alternates automatically in Windows XP Service Pack 2, once you go into international settings and turn on complex script support.
On Mac OS X, the inexpensive Mellel supports contextual alternates plus a number of other OpenType features.
20.Oct.2005 9.57am
short sidebar:
Dez said: “more geeky”.
I question that. At what point is working with scripting less geeky in general?
;^)
as you were.
20.Oct.2005 10.28am
Do you know if there are web pages which offer example code so I can start to deduce what is going on in the code? And maybe make off with some that is relevant too?
I started a bit of a OpenType crash course in the wiki at OT_How-To. There it links to some sample code from Adobe that you can look at and learn from.
20.Oct.2005 12.58pm
“I question that. At what point is working with scripting less geeky in general?”
When you are not working in a text editor :-)
ChrisL
20.Oct.2005 3.42pm
”...The problem I am having is when I get a double r next to an i. I can’t get the script to compile. I want to get 2 alternnate r’s next to the i but instead I get two different kinds of r. Anybody have any ideas why? ...”
KUDOS to Paul Hunt for helping me with this one! It is now working fine thanks to Paul showing me the proper placement of the single quote and space.
ChrisL
20.Oct.2005 7.47pm
Ah, I’m late to the party, I see.
I’ve posted some unusual code examples of contextual substitutions on the Adobe User Forum for our OpenType FDK (same code works in FontLab, too).
http://www.adobeforums.com/OpenType%20Font%20Developers%27%20Kit%20(FDK)/160
I’m also working on an article on contextual subs for my blog. I’ll let you know when it’s up.
Cheers,
T
20.Oct.2005 8.13pm
Awesome.
I end up grabbing the .AFM from a postsctipt version of my Font to get a complete pair listing. Then I massaged the text in preperation for merging it with the ’Calt’ function set.
I noticed that I ma going to want to substitute both glyphs in a character pair in one case
I was wondering how this code looks to ’yall.
The pair is: F J
feature calt { #
sub F’ J’ by F.calt3 J.calt3;
} calt;
Also, The code that Chris showed us uses this phrase : [ij]
Is that bracket set effectively saying ’including’?
Is so, can you transalte this:
feature calt {
sub n o’ by o.calt1;
sub b o’ by o.calt1;
} calt;
(Meaning: if you have ’no’ or ’bo’ sub the o to the glyph o.calt1)
to this:
feature calt {
sub [n b] o’ by o.calt1;
} calt;
?
Thanks!
20.Oct.2005 9.40pm
John Butler: OpenType is supposed to have contextual kerning at some point in the future. At present, only Graphite can do that.
I don’t think this is accurate, unless you are thinking of contextual kerning in some different sense. I do contextual kerning lookups for Arabic OpenType pretty regularly, e.g. adjusting the kerning between two letters when a mark on the second provides context. As far as I know, this is one of the things that you need to use VOLT for, as the Adobe FDK code used by FontLab doesn’t support contextual GPOS.
Eben, the main reason I use VOLT for all my OT stuff is that it is much more powerful than what FontLab has available: it supports a wider range of lookup types, including the GPOS mark positioning that I need in most of my projects.
20.Oct.2005 9.43pm
Chris Lozos: I use a Mac so VOLT is not an option. I am more of a visual person and VOLT may be more geeky than I want albeit very powerful.
Ironically, one of the things I like about VOLT is that it is more visual than FontLab. You can see the input and output for every lookup directly in the lookup window as you are working.
20.Oct.2005 11.28pm
Hmmm That sounds like a ringing endorsement to me!
21.Oct.2005 4.52am
I don’t think this is accurate, unless you are thinking of contextual kerning in some different sense. I do contextual kerning lookups for Arabic OpenType pretty regularly, e.g. adjusting the kerning between two letters when a mark on the second provides context. As far as I know, this is one of the things that you need to use VOLT for, as the Adobe FDK code used by FontLab doesn’t support contextual GPOS.
I’m talking about Latin script fonts as rendered in the applications used by most Latin-script OT font buyers by a wide margin.
21.Oct.2005 1.11pm
I found a way of doing a two letter calt switch.
Example ’FJ’ I want altrenate glyphs for both F & J in this case
here is how I did it.
sub F’ J by F.calt3;
sub F.calt3 J’ by J.calt1;
originally I had tried
sub F’ J’ by F.calt3 J.calt1;
but that didn’t work.
21.Oct.2005 2.06pm
Eben, the F’ J’ sub was never going to work, as the ’ means “in this contect, change this one”, and having two of them goes against the syntax. Doing it as two lines is definitely the right way, and you’ll have to make sure that the F’ J comes before the F.alt J’ in the feature.
21.Oct.2005 2.27pm
“Ironically, one of the things I like about VOLT is that it is more visual than FontLab. You can see the input and output for every lookup directly in the lookup window as you are working.”
So John, anyone plan to port that puppy to the Mac :-)
My fontLab is acting freaky lately, everytime I close and reopen a file, the five features get all jumbled and strung out as one entry. I have to re-build my features everytime I open a file. My .fea files seem to have vanished too. Maybe it is just Adam messing with my mind:-)
ChrisL
21.Oct.2005 2.29pm
“http://www.adobeforums.com/OpenType%20Font%20Developers%27%20Kit%20(FDK)/160”
Hi Thomas, welcome to the frey. I am going to look at your site as soon as I can decifer your URL :-)
ChrisL
21.Oct.2005 4.10pm
The URL looks like that because it is on a mac I think. The % signs are directories like / are more usually. It does go somewhere - but somewhere needing a password... for now.
21.Oct.2005 4.15pm
The % signs indicate a character that would not normally be allowed in a URL. %20 is a space; %27 is a single quote. Nothing to do with Macs, I don’t think.
21.Oct.2005 5.55pm
It seemed like for a while when people were serving web pages from macs the directories were separated by % signs too. I think when macs went unix/osx this went away but I am not sure...
Now I am curious! Mark, How did you find out about the %20?
21.Oct.2005 7.41pm
Mac users for many years could use space characters in their file names. When they started naming web pages and directories, the space habit was still there, Web servers replaced spaces with %20 because spaces are a no-no in URLs. Mac users have since learned not to use spaces in their URLs and that is why you don’t see it anymore. It had nothing to do with OS-X. Iknew about %20 for years but didn’y know about %27 ’til Mark’s post tonight.
I was joking with Thomas by the way.
ChrisL
21.Oct.2005 10.40pm
The % thing is a Unix thing. It indicates that a character code (in hexadecimal) will follow. It’s like an escape character. Every programming and scripting language has something like it. In Javascript, it’s the backslash.
21.Oct.2005 11.23pm
“Curiouser and curiouser!” Cried Alice
22.Oct.2005 1.08pm
Note that you can do many-to-one subs (contextually or not), or one-to-many, it’s just many-to-many that’s not supported. However, you can usually get equivalent results by doing one or both of the other two.
T
22.Oct.2005 1.16pm
John Butler: I’m talking about Latin script fonts as rendered in the applications used by most Latin-script OT font buyers by a wide margin.
Ah, understood. From the way you stated it originally, it sounded like a limitation of OpenType, rather than a limitation of applications and font some development tools.
22.Oct.2005 1.18pm
Tom Phinney: Note that you can do many-to-one subs (contextually or not), or one-to-many...
In FDK? As far as I know, one-to-many (type 2 GSUB lookups) are not still supported in FDK/FontLab, although it is a long time since I tried it.
22.Oct.2005 1.23pm
John H: You’re probably right that Type 2 lookups aren’t currently supported in the FDK and FontLab. If so, it should be fixed in another two FDK releases, some time next summer.
(UPDATE: more likely spring 2007)
T
24.Oct.2005 1.24pm
I have figured out how to do this
sub [Yacute F T V X Y f florin] a’ by a.calt1;
This let’s me change my ’a’ glyph to ’a.calt1’ if it is preceded by Yacute ’F T V X Y f’ or ’florin’
Which is great. I should be able to get the list down to a somewhat more manageable size and find and edit errors/omissions more easily now.
Speaking of which - I had started to think that it might not be a bad idea to look at the .afm of a similar font to see what pairs are being kerned. I found my original kerning info was best accessed in my own .afm file. Since my face is modular but not a monospace it ends up having a slightly different set of kerning needs than is typical. I am not sure what font I would look to.
Any suggestions?
Also, Does anybody have any suggestions on how to organize the calt code further? Any common traps to avoid?
Any favorite pairs?
And last but certainly not least: Now that I have created 30 or so altrenates glyphs I need to figure out the best way to test them in pairs - especially where they precede another glyph. So for instance I need to include F.calt3 in my ’a’ lists like this:
sub [Yacute F F.calt3 T V X Y f florin] a’ by a.calt1;
Any suggestions on managing this kind of echo effect in the code?
25.Oct.2005 7.14am
> sub F’ J’ by F.calt3 J.calt1;
> but that didn’t work.
You may try next code:
feature clig {
sub @anyletter F’ J’ by FJ.clig;
} clig;
where
@anyletter — special class contains all letters
FJ.clig — specially prepared ligature
or more simple, as usual “ligature”
It really works, tested with electronics! ;)))
25.Oct.2005 7.45am
Why not just do it as a simple liga feature:
feature liga {sub F J by F_J;
} liga;
where F_J is your ligature.
Seems like a lot of unnecessary trouble to use clig for it.
25.Oct.2005 8.59am
I think I understand liga already - but I don’t know what clig does yet. I will have to dig into the code references again. Thanks for the examples! Looking into it I found that one good reason to go with Liga aside from simplicity is that it is more broadly supported
http://www.typotheque.com/fonts/opentype_feature_support/
Simon, Thomas, what code have you eneded up using the most? Liga? There are tons of code ellements out there but for roman type at least it seems like 3-4 bits would be good for up 98% of the time. This idea of mine is admittedly naive - but is it wrong?
Also, I see that the code I have been using ’calt’ is not supported as widely as Liga. Maybe I aught to reverse course & use liga for all my combinations. It would make for fewer altrnate glyphs - thats for sure!
Henadij, Which ones do you use & why?
25.Oct.2005 9.03am
Man, it’s riveting to see my childhood friend Code
so tangibly showing up in a typographic forum...
hhp
25.Oct.2005 9.45am
Does VOLT help you track/manage combinations? Fontlab is great at lots of things but tracking kerns & Opentype code - and the interaction between them doesn’t seem to be one of them.
26.Oct.2005 1.47am
> Seems like a lot of unnecessary trouble to use clig for it.
May be, or may not to be ;)
From my own experience: clig working perfectly (Adobe CS/CS2 products)
26.Oct.2005 9.07am
I said before ’It would make for fewer altrnate glyphs - thats for sure!’ This is false. Actually it increases the # by tenfold or so. I still haven’t decided which model makes the most sense. I am leaning towards liga because Photoshop 6 & 7 use it. But I haven’t decided. Also, which is easier to deal with and manage - the 300 combinations of 30 glyphs or so or the 300 glyphs? The visual and kerning management of 300 glyphs would be easier because each combination is directly represented. Testing would be faster because of a reduced # of characters to change for each test. However the # of tests will be the same. But 30 glyphs makes a lighter font in terms of data size.
I am not sure how so many non-standard glyphs would be accepted into an opentype font - alot to be sure but maybe not an infinite amount.
My case is atypical because I am using the liga or calt to help me past a problem in the reverse version of the font.
Henadij, how many instances end up being created in your work? IS it a large number? What is your method for managing them?
Mark, how about you?
26.Oct.2005 11.56am
I don’t know. I just saw a simpler way to do what Henadij was doing with the clig definition. I don’t have any good ideas how to solve your problem. Seems like you have painted yourself into a corner with this particular design concept. You may be better off not kerning at all.
26.Oct.2005 12.26pm
Oh, I don’t know. It’s not so bad. It’s a day or two’s work once I decide what I want to do and it’s an interesting technical & mental excersize for me.
One thing I am still unclear about is is how clig is more complex than Liga. Liga is more widely supported and is invoked no matter the context. Whereas in some ways Henadij is getting around the point of having the Clig feature at all ( context ) with his ’sub @anyletter’. Appart from support differences the code is pretty similar in length. The one advantage i see in using Clig is that if you decided to start invoking special cases later on you could do so more quickly/easily with the clig code... On the other hand, Mark, you are right in that Clig code isn’t quite orthodox. But all of this is shades of grey.
27.Oct.2005 3.07am
Hi, all!
I think that clig using is really extreme way, particularly in case
sub @anyletter :)
If I need many instances of “ligature”, constructing it from two alternate glyphs seems more logically, but in case of only few instances I prefer clig, particularly if calt definition is complicated and contains constructions such as
sub a b c’ by c.alt;
which may be not generated with FL 4.x :(
28.Oct.2005 2.45pm
The definition of “contextual” (as in ’clig’ and ’calt’) is that some glyphs, other than those being substituted, provide the context. There’s no reason to use ’clig’ when it’s not contextual; you might as well use ’liga’, ’dlig’ or ’hlig’ as appropriate.
You can of course use what’s supported by current applications as a guiding factor as well. But beware that using inappropriate features will just confuse things later when future applications do implement the more “correct” features. Remember, fonts last almost forever.
Cheers,
T
31.Oct.2005 1.54am
Thanks, Tom!
But please answer on question: how to call hlig replacement in InDesign CS/CS2 manually? I don’t see it in OT-menu...
31.Oct.2005 2.22am
Henyk,
InDesign does not support “hlig” but Mac OS X 10.4 Tiger does (so it works in TextEdit, Keynote, Pages and other Cocoa applications).
Adam
31.Oct.2005 10.33am
Actually, in InDesign turning on “discretionary ligatures” activates both the ’dlig’ and ’hlig’ OT layout feature tags.
T
31.Oct.2005 10.58am
Is there a way to globally use alternates? Let’s assume you have an alternate “g” and want to use it in a column of text. Is there a way of doing this without using the Glyph palette a hundred times? What I do now is the the alternate as Swash and use the Swash feature in InD. It works but it is kind of false advertising sing the alternate g is not swash by any means.
ChrisL
31.Oct.2005 4.49pm
You could always do the old fashioned thing and offer ant alt font...
What I want OTF to do is to let us specify color. It wouldn’t be *that* hard surely!.
And it would open up a whole new market! Think of what you could do with overlays!
1.Nov.2005 2.21am
Czesc!
> but Mac OS X 10.4 Tiger does
But I’m working with WinXP-SP2, and haven’t another way then InDesign now :)
1.Nov.2005 2.36am
> Actually, in InDesign turning on “discretionary ligatures” activates both the ‘dlig’ and ‘hlig’ OT layout feature tags.
Oh my, how complicated! ;)
Thanks, Tom.
1.Nov.2005 6.26am
> Actually, in InDesign turning on “discretionary ligatures” activates both the ‘dlig’ and ‘hlig’ OT layout feature tags.
but not in PhotoShop. Down with discrepancies!
1.Nov.2005 6.34am
Is there a way to globally use alternates?
In InDesign, you can apply a stylistic set. There can be up to 20 of them.
Personally, I think the mechanism for choosing alternate characters in OT fonts is flawed and limited.
Let’s say you always want to use a certain alternate “e” in a certain font.
You could insert it manually every time an “e” appears, but that would be extremely tedious.
Or, you see that the alternate “e” is part of Stylistic Set 2, so you select all the text and apply that. But then you notice that Stylistic Set 2 also contains a bunch of other alternates that you don’t want. The only recourse is to apply the Stylistic set just wherever an “e” appears, but that’s almost as tedious as the first method. (You get a similar problem when you put the alternates in a separate font.)
It seems like you ought to be able to look at a list of alternates for a particular character and set a preference for which one to use in a particular text selection or style sheet. This would be a sort of user-defined “stylistic set.”
(Yet something else for Adobe’s feature request page. Not that Adobe should be the only one listening.)
1.Nov.2005 8.34am
It does seem like setting preferences for use by the user - and being able to offer these preferences pre-set as part of the font design would be a far more practical addition. I agree. In the meantime, although it takes up more space than is ideal you can release several versions of a font with the features set that you think most likeley to be of use. Even if it’s just 1 2 or 3 glyphs.
1.Nov.2005 9.32am
Imagine, though, if you had a font with even just five alternate characters (corresponding to five normal characters). With five alternates, there are 31 possible stylistic sets using 1 to all 5 alternate characters. Add one more alternate character and you get 63 possible sets. Ad one more and you get 127, and so on. How do you decide which are the most likely combinations? What if the user wants some other combination? Having a UI in which the user can choose alternates à la carte and apply them to an entire range of text seems like it would be a less cumbersome approach.
1.Nov.2005 9.47am
Having a UI in which the user can choose alternates à la carte and apply them to an entire range of text seems like it would be a less cumbersome approach.
i agree. i think it would be great if there were some type of panel that let you basically build your own OT rules, something like stylesheets but actual user defined stylistic sets would be awesome.
1.Nov.2005 10.05am
Mark, I agree of course - I just meant that in some cases, not even the majority, it could make sense (and be practical) to have a regular & then an alt 1 set & maybe an alt 2 set where a few glyphs are changed either with OT script/feature or simply by using different outlines. Chris’ new font to be being one possble case. His font has both a double bowl g & a single bowl g and it makes a big difference to how the face comes across. Given the change in feeling he perhaps cound redesign or tweak 2-3 other characters in a version of his font and create a different feeling. Like I said it is no panacea. But he could do it today without waiting for improvements to the OT standard.
1.Nov.2005 11.37am
I just noticed something about InDesign’s implementation of stylistic sets: You can apply more than one at a time. A type designer could put just one alternate character in each set, thereby getting the “à la carte” effect that I described. You would still be limited to 20 sets, but it would work if you had a limited number of alternates. If have more than 20 alternates, and there are certain alternates that, as a rule, should go together, you could put them in the same set to get them into the 20 available sets...
1.Nov.2005 12.53pm
In fact, I think this is such a great idea, I’m going to do an update to Proxima Nova. I wish I’d though of this before I released it.
(Free update for licensed users—you will be notified when it’s ready.)
1.Nov.2005 1.51pm
”...Given the change in feeling he perhaps could redesign or tweak 2-3 other characters in a version of his font and create a different feeling...”
The problem is also educating the user of how to do it and even letting them know it is available as a selling point.
I know you can get into rapid growth with the factorial of variables. Twenty factorial is a large number. Many font users don’t even try the basic alternates. I guess we have to be satisfied we are at least offering many possibilities to the very type savvy designer.
I like the “Alternate style Sheet” idea. This would be a universal tool which would not have to be redefined for each and every typeface.
ChrisL
1.Nov.2005 1.54pm
“(Free update for licensed users—you will be notified when it’s ready.)”
Thanks Mark!
Also, I’d be interested in how you do it. This seems like something of universal value to type designers.
ChrisL
1.Nov.2005 1.56pm
Note: You can apply one or more Stylistic Sets to a character- or paragraph-level style sheet in InDesign.
I will provide a user guide with Proxima Nova on how its Stylistic Sets work when the new version is out.
1.Nov.2005 2.22pm
What I intend to do is this:
There are four alternate characters in Proxima Nova: A more geometric (Futura-like) G, a one-story a (and corresponding two-story a in the italic), an l with a tail, and a curved y (similar to a one-story g). Note: The normal roman a is two-story; the normal italic a is one-story.
There will be seven stylistic sets:
Set 1: Alternate a, l, and y in the roman; Alternate l, and y in the italic. This is the “primer” or “schoolbook” set, intended for early reader books.
Set 2: Alternate G and a in the roman; Alternate G in the italic. This is the “Futura-like” set.
Set 3: Alternate G.
Set 4: Alternate (one-story) a (roman only).
Set 5: Alternate (two-story) a (italic only).
Set 6: Alternate l.
Set 7: Alternate y.
The first two are Stylistic Sets in the way (I think) the feature is intended to be used. The rest are effectively à la carte alternate character styles which can be mixed and matched to taste. You could actually recreate the first to sets using the others like this:
Equivalent to Set 1: Apply Set 4, Set 6, and Set 7.
Equivalent to Set 2: Apply Set 3 and Set 4.
And so on.
(By the way, the current version of Proxima Nova has two Stylistic Sets, basically the same as the first two of the proposed sets, except that the alternate (two-story) a is included in the italic. This was ill-conceived, I realize on hindsight.)
1.Nov.2005 4.37pm
“By the way, the current version of Proxima Nova has two Stylistic Sets, basically the same as the first two of the proposed sets, except that the alternate (two-story) a is included in the italic. This was ill-conceived, I realize on hindsight.)”
Now I’ll have to take another look it.
Thanks so much for sharing your wisdom on this Mark! I see I have much to learn about opentype features.
ChrisL
1.Nov.2005 5.31pm
InDesign CS2 was the first application (that I’m aware of) to support Stylistic Sets. I didn’t have a copy of it until about a week before I released Proxima Nova, and didn’t realize the program supported them until even later. Consequently, I put the features in before I really understood how they would be implemented on the user end.
I’m still learning, too.
2.Nov.2005 4.10am
Mr Simonson —
but don’t forget the manual! ;-)
Karsten
2.Nov.2005 6.01am
http://www.kltf.de/downloads/KLTFTiptoeManual.pdf
I’m impressed! (Nice font, too.)
There was a time when even PostScript Type 1 fonts came with printed manuals and disks. Of course, the prices were quite a bit higher back then. (In 1986, for a three-weight font family like Goudy Oldstyle, Adobe charged $185—equivalent to $317 in 2005 dollars.)
2.Nov.2005 6.35am
Great idea Karsten!
ChrisL
2.Nov.2005 7.25am
Wow, Karsten - impressive, on many counts.
hhp
2.Nov.2005 7.35am
Oh thanks.
But it will turn out useful manuals really are. I doubt anyone will save fonts and manual together.
My first idea was to use ssXX features consistently throughout my typefaces, so, ss01 for certain substitutions, ss02 for certain others &c. But with the second and now third type it turns out the idea is unrealistic.
Now I read that a font’s Description [in FL’s FontInfo / Name ID 10 in the specifications] was also intended for feature descriptions which may be a nice idea. Then information are part of the font. Provided however that apps or font management tools would display these information ... But I haven’t made use of this myself yet. Maybe you can do this for an updated Proxima Nova?
Karsten
2.Nov.2005 2.30pm
Nice to see you on typophile Karsten!
4.Nov.2005 6.58pm
I agree that Stylistic Sets are the best solution for the problem Chris proposes when he writes: “Is there a way to globally use alternates? Let’s assume you have an alternate “g” and want to use it in a column of text....”
Also, Stylistic Sets can perfectly legitimately be used much as Mark has suggested for Proxima Nova. The typeface I’m working on right now has quite a few of them, and in much this way. They can be mutually exclusive, or they can be mix-and-match.
Regards,
T
4.Nov.2005 8.34pm
Thomas, good to hear you say that. Part of me worried that my proposed use of Stylistic Sets was a sort of hack.
13.Apr.2006 11.11am
I’ve been reading through this interesting thread and have a question...
The book publisher I work for had this custom font developed years ago. It’s a cursive font designed to teach children cursive writing. It’s quite an amazing piece of work, each character has the ability to connect with the next character at either a high, middle, or low connector.
Originally the type 1 font was a 3-piece font: screen, printer, and some sort of executable that had to be downloaded to the postscript printer to control the contextual connections. This method caused 2 problems: 1) the font would sometimes get kicked out of the PostScript RIP if another font was downloaded, 2) You could not save to postscript for making PDFs.
Later this was all combined in to one font with built-in contextual intelligence. so that on postscript output from Quark Xpress (in OS 9) had all the processed contextual characters in place and PDFs could be made properly.
Well, we haven’t used the font in awhile, have upgraded to OS X and InDesign and it occurred to a couple of us the other day that perhaps this special font will no longer work.
After a few tests we found that not only does it not work in OS X, but it only worked with QuarkXpress 4.11 in OS 9... Even a dusty copy of InDesign 2.02 in OS 9 would not work properly with the font.
Given all this back history, anyone have a clue as to how this font was made? We outsourced the original design of the font, so no one here knows how it was done.
At any rate, we have Font Lab on order and hopefully soon enough I’ll be re-constructing the font in OpenType, and perhaps asking for hints along the way on this here messageboard...
Cheers,
/ed
13.Apr.2006 2.08pm
You can create an Opentype font from it and it will work on all your Opentype savvy apps. Nick Shinn and Thomas Phinney gave a class at last years NYC TypeCon on exactly such a face.
ChrisL
14.Apr.2006 7.19am
Cool! Thanks for the info...
Will Font Lab be able to make the conversion? I was reading the Font Lab 5 user manual yesterday and it stated that Font Lab didn’t support the positioning lookup required to get the connectors to connect each glyph.
there wouldn’t happen to be any sort of archive of the class from the NYC TypeCon, a PDF or powerpoint presentation kicking around, would there?
Thanks again for getting back so quickly.
cheers,
/ed
14.Apr.2006 10.57am
I don’t think it would be a straightforward conversion, but it’s unlikely you will need to use the positioning lookup.
You would probably have to examine the glyph sets, make them into classes, and learn how to implement the “Contextual Alternates” feature.
I figured out how to do it using the Fontlab manual.
Contact me and I will send you a reference PDF I made for the workshop.
14.Apr.2006 11.30am
Font Lab didn’t support the positioning lookup required to get the connectors to connect each glyph.
it’s unlikely you will need to use the positioning lookup.
Here you’re looking for substitution lookups (not positioning lookups, which FontLab does support) that happen contextually. I recently did a connecting script using these types of lookups. I could post some code here if you’re interested.
14.Apr.2006 1.42pm
Please, Paul, do share!
14.Apr.2006 2.36pm
this may be able to be condensed somehow, but this works for letters that connect low and high (no middle connections).
OT Code:
feature calt {lookup calt1 {
sub @lc_highexit @lc_all' by @lc_highentry;
} calt1;
lookup calt2 {
sub @bovw_default' by @bovw_natural;
} calt2;
} calt;
Classes:
@lc_highexit: b o v w b.high o.high v.high w.high@lc_all: a b c d e f g h i j k l m n o p q r s t u v w x y z
@lc_highentry: a.high b.high c.high d.high e.high f.high g.high h.high i.high j.high k.high l.high m.high n.high o.high p.high q.high r.high s.high t.high u.high v.high w.high x.high y.high z.high
@bovw_default: b o v w
@bovw_natural: b.calt o.calt v.calt w.calt
just to explain a bit, if it doesn’t all make sense on it’s own: x.high is a lc character which has a high entry stroke, b.calt has a low entry stroke and a high exit stroke, b.high has high entry and exit strokes. This is an abbreviated chunk of code, leaving out diacritic forms (or else the class info would be much longer, but the OT coding would be the same). Critiques to this method are welcome.
26.Apr.2006 8.14pm
Thank you Paul!
2.May.2006 8.25am
Thank you Paul!
We unearthed some more info on our special cursive font... it was actually a type1/type3 postscript hybrid.
and thank you for posting the code. I look forward to diving in to FontLab real soon.
cheers,
/ed