Example of text that doesn't render correctly?
For example in tirhuta, when I do this:
;; Tirhuta composition rules
(let ((consonant "[\x1148F-\x114AF]")
(nukta "\x114C3")
(independent-vowel "[\x11481-\x1148E]")
(vowel "[\x114B0-\x114BE]")
(nasal "[\x114BF\x114C0]")
(virama "\x114C2"))
(set-char-table-range composition-function-table
'(#x114B0 . #x114BE)
(list (vector
;; Consonant based syllables
(concat consonant nukta "?\\(?:" virama consonant nukta "?\\)*\\(?:"
virama "\\|" vowel "*" nukta "?" nasal "?\\)")
1 'font-shape-gstring))))
Notice here, the nasal sign is not included in the range.
And then I type: 𑒅𑓀 𑒆𑒿
It is rendered correctly
But when I do:
;; Tirhuta composition rules
(let ((consonant "[\x1148F-\x114AF]")
(nukta "\x114C3")
(independent-vowel "[\x11481-\x1148E]")
(vowel "[\x114B0-\x114BE]")
(nasal "[\x114BF\x114C0]")
(virama "\x114C2"))
(set-char-table-range composition-function-table
'(#x114B0 . #x114C0)
(list (vector
;; Consonant based syllables
(concat consonant nukta "?\\(?:" virama consonant nukta "?\\)*\\(?:"
virama "\\|" vowel "*" nukta "?" nasal "?\\)")
1 'font-shape-gstring))))
The range now has the nasal signs.
And then type the above characters: 𑒅𑓀 𑒆𑒿
They are not rendered correctly
But when I include their composition rules:
;; Tirhuta composition rules
(let ((consonant "[\x1148F-\x114AF]")
(nukta "\x114C3")
(independent-vowel "[\x11481-\x1148E]")
(vowel "[\x114B0-\x114BE]")
(nasal "[\x114BF\x114C0]")
(virama "\x114C2"))
(set-char-table-range composition-function-table
'(#x114B0 . #x114C0)
(list (vector
;; Consonant based syllables
(concat consonant nukta "?\\(?:" virama consonant nukta "?\\)*\\(?:"
virama "\\|" vowel "*" nukta "?" nasal "?\\)")
1 'font-shape-gstring)
(vector
;; Nasal vowels
(concat independent-vowel nasal "?")
1 'font-shape-gstring))))
They are now once more rendered correctly.
So my suggestion is to debug this and figure out why it hangs. Maybe
begin by posting the composition rules that you tried originally, and
let's take it from there.
I think I found the problem, this was due to the independent vowel and nasal rule, I will fix it later.
I don't think I understand this part, either. Please elaborate.
You had said that since the range only contains vowel signs, (consonant + nasal) rule does not apply, only (consonant + vowel + nasal) will.
I then said that (consonant + nasal) renders fine without a rule, but (consonant + vowel + nasal) does not, therefore I had to add a rule for that.