For one of my label layers I am using a font that contains typographic ligatures for certain letter pairs. If I increase the letter spacing in Layer Properties, the ligature is retained as a single character, so the spacing between the pair of letters does not increase (see image for example—note the double T ligature).
Method 1: Use a data-defined expression to change the font of labels that contain ligatures
Step 1: Find a font similar to the original font, but without typographic ligatures. We'll call these 'original font' and 'similar font.'
Open the label dialog > click the epsilon button next to Font > select Edit > input this expression:
WHEN regexp_match( "label_field" , TT) THEN 'similar font'
ELSE 'original font'
Substitute the field name that you're using for your labels. If the original font contains more than one typographic ligature, repeat the line that starts with "WHEN" and substitute the additional ligature where it says "TT".
Method 2: Use a font without typographic ligatures for all the labels
This method is self-explanatory.
I've got my answer: according to the QGIS tracker, this is a known issue and will be solved in QGIS 3.0; so the solution will be to use that when it is released.