I'm gathering here some informations about khmer fonts design. This is a work in progress but feel free to tell me how to improve it!
The last 4 characters are used only for pali.
If you want the same shape for lower subscripts, you don't need to design them separately. Glyph positioning (GPOS for OpenType and vertical kerning for AAT) are meant for that kind of situations.
These need a version with a longer descender.
As for type 1 subscript consonants, superscript and subscript vowels might need a higher/lower version but this could also be achieved with positioning features.
uni17BF and uni17C0 also need a version with longer descender.
Different strategies are possible regarding the ligatures:
In the last case, the ka glyph gets substituted by the ligature but keeps the advance of the ka alone, aa being then substituted by a space. This makes shaping with subscripts as simple as with individual glyphs while keeping the beauty of single glyphs.
A khmer-aware OpenType engine (Uniscribe, Harfbuzz, ICU, etc.) takes care of the reordering of the RO, E, AE, AI and the first part of the split vowels (OE, YA, IE, OO, AU). For AAT and Graphite engines, you need to program it into the font.
The rest (subscripts, ligatures, ...) has to be programmed for both types of engines.
COENG (U+17D2) followed by a consonant or some independent vowels should be changed into the corresponding subscript. COENG RO followed by subscripts (after the base letter) as well as Type 3 subscripts preceeded by other subscripts need to be changed into an alternate with longer descender. Type 1 subscripts preceeded by another subscript need to be lowered, or change into a lower alternate (if exists). The same applies to vocalic signs U, UU and UA.
When letter NYO ញ is followed by a subscript, its glyph needs to be changed into the "subscript-less" alternate. If the following subscript is COENG NYO, it also needs to be changed into its alternate form.
This includes the consonants directly followed by AA/OO/AU but also the ones with one or several subscripts and/or vowels, in which cases these need to be shifted to the left, unless using alternate forms instead of ligatures.