at first I hope I'm using the wright english words to make the problem understandable, if not please ask.
InDesign decides at a certain letter spacing to divide a ligature into his original Letters. This certain amount of spacing is different at every font. So which factors decide this certain amount of letterspacing at which the ligatures are divided? (There must be factors, otherwise it would be the same amount of letter spacing at every font) I'm creating fonts so its important for me to know the parameters InDesign uses to calculate this amount of letterspacing.
Thank you very much in advance!
Copy link to clipboard
Ligatures, as I understand it, are created by the designer of the font. You can discover which ligatures the font designer included by using the Glyphs panel. As such you can't edit the space between the glyphs they contain.
Here's a short discourse on how ligatures came to be:
the question—so I think—is more about the issue when the ligature will break.
It needs not much tracking to do it.
Thanks you for your answer. Shure you can't change the space between the glyphs a ligature contains but you can change the letterspacing of a ligature in InDesign...as you say, by doing this nothing will happen to the ligature itself. But at a certain amount of letterspacing (mostly between 16 and 27) InDesign will divide the ligature back into separate Glyphs, in your example "f" and "l". And this amount of letterspacing, at which the ligature gets divided automatically by InDesign is different for every font. Since it is InDesign itself that divides the ligature at this point (Not the code of the font), there must be factors for InDesigns calculation of this amount of letterspacing at which a ligature gets divided (Since InDesign calculates a different amount of letterspacing needed to divide ligatures for every font its not a fixed amount for every font). My Question is: What are these factors?
tracking is one factor.
Justification of a paragraph could be another one.
In conjunction with an amount of tracking…
shure justification divides the ligature. But it only divides it because the letterspacing you inserted is ignored when you turn on the justification (So as long as the letterspacing needed for justification in this line is high enough, the ligature is divided). But It´s still the same amount of letter space needed to achieve this. A justification in which the line fits perfectly won't divide the ligature.
To come back to the topic:
I´m not searching for factors in InDesign, that divide a ligature. (Like Kerning, justification etc.)
I´m searching for factors InDesign uses to calculate the amount of letterspacing at which the ligatures are divided.
(So is it for example calculated with the proportions of the font, or is the x-hight a factor (I already checked a lot of possible factors and found nothing yet))
I cannot tell you exactly when a pair of glyphs no longer will work as a ligature.
I only can tell it's not just one single number somewhere. As you can see from my second example tracking value of 10 and fully justified text with a given width of the text frame does not drive the two glyphs apart. If you just change tracking to 0 in this example there would be no ligature anymore. The overall width of the word is no indication.
got it, thanks! So let's focus on the normal case of no justification and see if someone is able to find some factors. I tried to contact adobe but had no success. (The real factors are probably only known by the people who wrote the code for it, I don't know if a customer like us can find it by trial and error, it seems to be complex/hidden. But here are also staff members of adobe right? Maybe they see this link and are able to help)
I also make fonts. What has always amazed me is that even unmapped ligs (like ffh) get decomposed into their constituent parts whether the lig has separate glyphs which make up the lig or are a single character like:
And in ID...once tracking increases X amount:
I also have never known the "how" of it. But the two layout applications I use do this decomposition. I can (sort of) understand they can do it with mapped ligs. It's the unmapped ones that boggle my mind.
I know the developer responsible for another application. I'll try reaching out. However they do it will be how Adobe does it. It may well be part of the OS response to the changing metrics and if so, should be documented.
Also I note that none of the vector design software I use do this decomposition. The below is in AI CS6, so perhaps this has been done in a later version.
Thanks for your answer and for asking the developer, this could really help!
To your other question. Due to the english words I'm not sure if I understand the word "mapped" wright, but if a ligature appears in InDesign it has to appear somewhere in the code of the font. So somewhere is this line (sub f f h by f_f_h;). So with this line Indesign also knows of which parts the ligature consists of. If you mean that the ligature is not mentioned in the ligature section of the code and you can only insert it with the glyphs panel in InDesign I have no idea how InDesign knows of which letters the ligature consists to divide it, I think its not possible.
Sorry for any confusion. Aaron.
A lig such as f f has a Unicode code-point. it is distinctly mapped to that Unicode place:
But others have no Unicode value / mapping, such as the f f h ligature I used:
Now, the glyph name is there (in this case, ffh) and is made up of the constituent parts in this font's case, so perhaps that's it. I should recompile the font with the font name for the f f h lig as zzz and see what happens! I'll try it tonight for fun.
I'm still awaiting a response for one of the behaviors--and it's the main one, the how of it all.
But I was informed that in QXP, there is actually a preference setting to control whether two-character or more ligs can break apart. I don't know why one wouldn't want them to when tracking is so increased that the spacing would be just odd, but it is controllable.
I couldn't find a corresponding setting in ID's preferences. If it is there but hidden, though, it may be addressable via scripting. Dunno. But like I mentioned, I don't know why the default behavior of either application isn't appropriate off the top of my head.
@MW Design This thread is several years old, but I have a question that seems to line up with what you were talking about back in 2018 and wondered if perhaps you could help me. I am working on an indesign mail merge envelope document where the font has ligatures. I want the font to have the tracking set at 150, but when I set the tracking above 10, it automatically changes it to the normal characters instead of the ligatures. *Of note, I'm a relatively new designer and know little about the technical jargon, so pardon me if I miss something in my explanation.
When I design in illustrator, it'll keep the ligatures no matter how far it is tracked, but it won't let me do it in indesign. Now, I recognize that in the discussion being had here, it didn't make sense to keep the ligatures when the tracking got too big because then the spacing looks funny. The font I am using doeson't have that problem; it looks fine tracked out. Is there a way to override the indesign default to remove the ligatures so that I can keep them? The panel shown here from QXP (which I don't even know what that is) is what I need, but can't find anything in indesign that would allow you to change that even 3 years later from this thread.
Any help? I'll post a few pictures to show you what I'm trying to accomplish and the font. The font I am using is Le Grand Ligatures. It seems to be a separate font face than it's own Regular, Bold, etc. Help? Could it be a script?
My only other thought was would there be an option to set the tracking at 10 as it wants and then change the tracking in acrobat like a customizable preflight option? Any help would be much appreciated. I really don't want to do this manually.
I replied in this other thread you opened:
Trick for including ligatures and tracking?
racheli38559884, Apr 06, 2021
FWIW: I still cannot see any control to tell InDesign not to break ligatures at a given amount of tracking.
( ACP )
I replied on the other thread as well. Thanks for the reply. It won't help because it is a data merge document. All the names and addresses are different, plus there are lots of ligatures beyond the LL. The LL just happens to be the one showing up in this address.
OK. Maybe just a partial answer...I awoke to an email.
It is due to the underlying text run that is substituted for the ligature that determines when to decompose the glyphs into their constituent parts. So the applications are keeping the GSUB string in memory and when tracking exceeds the original spacing by X amount, the lig glyph is broke down into its parts so the spacing can increase. The amount of tracking in a given font and given text run that has a lig feature supplied is slightly variable and in part depends upon the GPOS table values for the underlying glyphs.
The "in part" statement then means there is a little voodoo going on ;^) ID and QXP have slightly different means of reporting tracking to the user. And how that plays out on the surface I think is a little different, but I think that the innards of ID & QXP are simply using some internal value for which to test the tracking against and then making the decision to decompose.
Now, I haven't tested an un-kerned font for which there is no GPOS values in order to see if/when it breaks and the values needed. But hey, it's 5:30 am here and I am in dire need for coffee.
Sounds good, but did you find out how to change these behaviors; If I'm right the GPOS table is mainly the feature code, right?
I had also finally complete success at the trial and error part! I found the factor...and it seems to be just one simple factor, that completely decides at which amount of letterspacing all the ligatures of a font are divided. Its simply the glyph "space". If the glyph "space" has got a width of 270 the ligatures will break at 22. If the width of the glyph "space" is 2700 the ligatures will break at 216.
My understanding is it is hard-coded. So there can be no changing it.
By "space," are you referring to the Advance Width? The sum of LSB + Glyph width (its bounding box) + RSB?
Your example works out to about an 8% tracking...unless my math is wrong. However, it is somewhat font dependent and seems to depend upon the XAdvance width in the GPOS table (which, among other things, contains the kern table) and the Advance Width. But the value can also simply be a fixed percentage.
I am still awaiting follow-up from the developer(s). But they are also within a month of a new release and so I suspect they are a bit busy quashing bugs at the end of a release cycle.
No I really mean the glyph/letter "space" (unicode 0020), which you produce by pressing the spacebar
InDesign just checks the width of this one glyph/letter (I dont know which english word is correct here) with the name "space" to calculate the amount at which all ligatures for this font break.
I think of decomposing ligatures as a typografical feature.
If I look at your Illustrator CS6 sample I cannot think, that it's a good idea to keep ligatures like that.
Here a screenshot from AI 2018 v 22.1 with a tracking value of 200 ( Minion Pro Regular 😞
Yes, not very handsome, is it? I have set heading for ads where I increased the tracking quite a bit and I just turn of liga, dlig and hlig for the style or text run when using a vector design application. I retried 4 vector editors and all of them do the same thing even if their OT Feature support is otherwise better than Illy's.
I was reading through the OT Specs and it appears the GSUB table may be responsible...which would make sense for glyphs that have Unicode values (mapped). Still boggles me about the unmapped ones, though.
I had never really given this issue much thought other than Application A does this, Application B doesn't and worked around it. It's been just a fact to me. But thanks to Aaron, I'm also now curious as to the How of it all.
How would I turn off that ligature feature with Illustrator?
Answer: You need the OpenType Panel:
Not off-topic really. But yeppers, that's how it's done in any feature-aware application. In my case, that f f h lig is a discretionary lig, so I would need to turn off the discretionary lig feature (or both).
Sorry, I just understood what you meant in your picture.
I think the problem in the case you showed is more, that at one "Mist" you use optical and on the other "Mist" you use metrical. At the metrical "Mist" the space between the M and the i is smaller so for the justification the space between the s and the t has to be bigger...bigger than it would have been at the optical version. Try to turn on and off metrical and optical during justification, it will divide the ligature at a certain point. As I mentioned, this is not the core of my problem but thanks for your input!