0

I'm working on a WOFF2 font using FontForge. All ligatures render correctly in Chrome, except those defined between θ and latin vowels which always appear as separate characters.

The ligatures are defined in the GSUB table with feature 'liga' and scripts "DFLT{dflt} latn{dflt} grek{dflt}". The ligatures render as expected in the Metrics preview in Fontforge, just not when compiled as WOFF2 and used in Chrome.

If I do nothing other than change the character θ to a latin character, the ligatures appear as expected, so my working theory is that the issue is due to the fact that θ is the only character defined by Unicode as being in the Greek range whereas all other ligatures are between characters defined as latin. Can anyone explain this behaviour or offer a solution?

One option is to replace the character θ with a latin character, but this breaks IPA support somewhat so is undesireable, so I would much rather find a method of allowing Chrome to recognise such ligatures (e.g. "θu").

  • Through further testing I've (more or less) confirmed that in both Chrome and Windows itself that it won't create ligatures out of (or kern) characters than span different scripts. I can see how this might be a desireable behaviour in many cases, but it's rather unfortunate that there isn't a separate theta defined as part of latin since it's so prominent in the IPA. Still searching for a workaround. – Revenantus Apr 03 '22 at 12:41
  • Curious: I've never seen or heard of IPA transcription using ligatures with theta. The text layout engine is likely segmenting strings into script runs and shaping those separately. You should open an issue in the Harfbuzz repo to see if that's the case: https://github.com/harfbuzz/harfbuzz/issues – Peter Constable Apr 03 '22 at 15:24
  • The reason is that it's a font for a phonetic (admittedly invented... though not by me) language where a θ + vowel is written as a single character, so it's a legitimate reason for a ligature. I'm increasingly convinced that it's not possible with the currrent standards though, so instead I may have to use the character T instead, which works but isn't 100% ideal due to it not being the official IPA character. Thanks very much for the suggestion, I'll see what they say. – Revenantus Apr 03 '22 at 16:02
  • Please remember not to put additional details in comments, though, [put them in your post](/help/how-to-ask) (and don't use "edit: more details", future visitors will never have seen the original, just edit your post to now include the additional details). And having said that: if it doesn't work in Chrome, please also update your post to show the CSS that you're using to ensure the opentype features you need get used. – Mike 'Pomax' Kamermans Apr 05 '22 at 03:18

1 Answers1

0

Having spoken to one of the developers at HarfBuzz, it turns out that this simply can't be done in Chrome because the text from different scripts will be separated into different runs before being passed to HB for rendering and thus such a ligature will never be triggered.

The solution for now will be to use T instead of θ.