> In FreeSerif, all Hanunó’o consonant–vowel ligatures (e.g. ⟨ᜮᜳ⟩)
> use 'liga'. These ligatures are required.

agreed. but will the 'rlig' tables be applied in Hanuno?
I seem to remember some problem with this.

> In FreeSerif Bold, Italic, and Bold Italic, the descender is removed from a
> few Thai consonants before subscript vowels (e.g. ⟨ญุ⟩). This behavior
> is required. Note that FreeSerif has a table named "'liga' std. ligatures in
> Thai", but despite its name it is actually an 'rlig' table, so it is not a
> problem in that font.

I'll fix the names and the wrong tables.

> In FreeSerif, with the language set to Dutch, the two tittles of ⟨ĳ́⟩
> are replaced with acutes. Disabling ligatures breaks that.

We were involved in a long debate about this.
The problem is, it isn't clear to me that the simple ij ligature is required at all.
And it hasn't been standardized how to provide this accent. I provided a way.
Until the behavior is standardized, it's unclear what is "required" behavior.

> In FreeMono, ⟨ײַ⟩ uses 'liga' to raise the pataḥ. Disabling ligatures
> leaves the pataḥ low. This must seem odd from a user’s point of view,
> since it is not really ligation but mark placement.

The raising or lowering is supposed to depend on language, not on
whether ligatures are turned on. Agreed--it's a bug

OK all but one of your points are addessed in the latest commit.
Could you have a look at your tests, to see if I've broken anything?
Thanks!

'liga' is for ligatures that should be on by default but that can be disabled by the user. Turning 'liga' off should not produce broken text. Some FreeFonts use 'liga' such that disabling it breaks text. Such lookups should use 'rlig' instead.

In FreeSerif, all Hanunó’o consonant–vowel ligatures (e.g. ⟨ᜮᜳ⟩) use 'liga'. These ligatures are required.

In FreeSerif Bold, Italic, and Bold Italic, the descender is removed from a few Thai consonants before subscript vowels (e.g. ⟨ญุ⟩). This behavior is required. Note that FreeSerif has a table named "'liga' std. ligatures in Thai", but despite its name it is actually an 'rlig' table, so it is not a problem in that font.

In FreeSerif, with the language set to Dutch, the two tittles of ⟨ĳ́⟩ are replaced with acutes. Disabling ligatures breaks that.

In FreeMono, ⟨ײַ⟩ uses 'liga' to raise the pataḥ. Disabling ligatures leaves the pataḥ low. This must seem odd from a user’s point of view, since it is not really ligation but mark placement.