Most Arabic fonts follow the Unicode normalisation for the 'Allah' ligature FDF2 into 0627 0644 0644 0647. However, in the glyph, generally two additional, separately encoded non-spacing marks, 0651 and 0670 are drawn. Typically this normalisation is echoced in the OT code that produces the fully vocalised 'Allah' ligature glyph, even if the underlying text does not contain the displayed marks.
For the sake of consistency, I tend to think that it would be better to include 0651 and 0670 in the OT code that calls the ligature, but this would be in contradiction with Unicode normalisation. Users can get the desired ligature either by keying the correct string or through the glyph palette. Because 0670 is not accessible on the standard keyboard, it may also be considered to allow for a hack, in which a GSUB replacement allows a 0654 to be keyed instead of 0670 to yield the FDF2 ligature.
Any views?
Comments
1. Fonts are not responsible for implementing any Unicode normalisation, and glyphs processing isn't bound by normalisation properties and behaviours. Normalisation is a character level operation.
2. U+FDF2 has a compatibility decomposition to the sequence <0627 0644 0644 0647>; this means that U+FDF2 can be decomposed to that sequence, but that sequence is not to be composed to U+FDF2 in normalisation.
This compatibility decomposition is erroneous for the reason you note: it ignores the presence of the marks, which should be part of the decomposed sequence.
In terms of handling formation of this theograph in glyph processing, my recommendation is to include two versions of the ligature (if using a ligature substitution; it can also be formed with contextual letter shapes): one with marks and one without, and give them appropriate input sequences.