Subject: bug#55341: Independent vowels with nasal sounds do not render in the Tirhuta and Sharada script.

From: समीर सिंह Sameer Singh <[email-masked]>
Date: Tue, 10 May 2022 01:04:12 +0530

Due to my mistake, I had overlooked the composition rules for the nasal
vowels for the scripts which I had added.
Therefore I have attached a patch which will fix the problem.
Even though I did not notice the problem with the kaithi script, I have
added the rule to that too.
I have also renamed "anusvara-candrabindu" as "nasal".

Steps to reproduce:
1. emacs -Q
2. Type:
     𑒅𑒿 𑒆𑓀
     𑆅𑇏 𑆏𑇏
From 1d08f4ab76952264296a0f0d0e1725d53dbe4147 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E0=A4=B8=E0=A4=AE=E0=A5=80=E0=A4=B0=20=E0=A4=B8=E0=A4=BF?=
 =?UTF-8?q?=E0=A4=82=E0=A4=B9=20Sameer=20Singh?= <[email-masked]>
Date: Tue, 10 May 2022 00:49:58 +0530
Subject: [PATCH] * ; lisp/language/indian.el Improve composition rules.

---
 lisp/language/indian.el | 39 +++++++++++++++++++++++++--------------
 1 file changed, 25 insertions(+), 14 deletions(-)

diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 4b6c4744f1..1e10c2a61a 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -462,8 +462,9 @@ malayalam-composable-pattern
 ;; Kaithi composition rules
 (let ((consonant            "[\x1108D-\x110AF]")
       (nukta                "\x110BA")
+      (independent-vowel    "[\x11083-\x1108C]")
       (vowel                "[\x1108D-\x110C2]")
-      (anusvara-candrabindu "[\x11080\x11081]")
+      (nasal                "[\x11080\x11081]")
       (virama               "\x110B9")
       (number-sign          "\x110BD")
       (number-sign-above    "\x110CD")
@@ -474,7 +475,11 @@ malayalam-composable-pattern
                         (list (vector
                                ;; Consonant based syllables
                                (concat consonant nukta "?\\(?:" virama zwj "?" consonant nukta "?\\)*\\(?:"
-                                       virama zwj "?\\|" vowel "*" nukta "?" anusvara-candrabindu "?\\)")
+                                       virama zwj "?\\|" vowel "*" nukta "?" nasal "?\\)")
+                               1 'font-shape-gstring)
+                              (vector
+                               ;; Nasal vowels
+                               (concat independent-vowel nasal "?")
                                1 'font-shape-gstring)))
   (set-char-table-range composition-function-table
                         '(#x110BD . #x110BD)
@@ -489,29 +494,33 @@ malayalam-composable-pattern
                                (concat number-sign-above numerals)
                                0 'font-shape-gstring))))
 
-(provide 'indian)
-
 ;; Tirhuta composition rules
 (let ((consonant            "[\x1148F-\x114AF]")
       (nukta                "\x114C3")
+      (independent-vowel    "[\x11481-\x1148E]")
       (vowel                "[\x114B0-\x114BE]")
-      (anusvara-candrabindu "[\x114BF\x114C0]")
+      (nasal                "[\x114BF\x114C0]")
       (virama               "\x114C2"))
   (set-char-table-range composition-function-table
                         '(#x114B0 . #x114C3)
                         (list (vector
                                ;; Consonant based syllables
                                (concat consonant nukta "?\\(?:" virama consonant nukta "?\\)*\\(?:"
-                                       virama "\\|" vowel "*" nukta "?" anusvara-candrabindu "?\\)")
+                                       virama "\\|" vowel "*" nukta "?" nasal "?\\)")
+                               1 'font-shape-gstring)
+                              (vector
+                               ;; Nasal vowels
+                               (concat independent-vowel nasal "?")
                                1 'font-shape-gstring))))
 
 ;; Sharada composition rules
 (let ((consonant              "[\x11191-\x111B2]")
       (nukta                  "\x111CA")
+      (independent-vowel      "[\x11183-\x11190]")
       (vowel                  "[\x111B3-\x111BF\x111CE]")
       (vowel-modifier         "\x111CB")
       (extra-short-vowel-mark "\x111CC")
-      (anusvara-candrabindu   "[\x11181\x11180\x111CF]")
+      (nasal                  "[\x11181\x11180\x111CF]")
       (virama                 "\x111C0")
       (fricatives             "[\x111C2\x111C3]")
       (sandhi-mark            "\x111C9")
@@ -522,15 +531,17 @@ malayalam-composable-pattern
                                ;; Consonant based syllables
                                (concat consonant nukta "?" vowel-modifier "?\\(?:" virama
                                        consonant nukta "?" vowel-modifier "?\\)*\\(?:" virama
-                                       "\\|" vowel "*" nukta "?" anusvara-candrabindu "?"
-                                       extra-short-vowel-mark "?" vowel-modifier "?" sandhi-mark
-                                       "?+" misc "?\\)")
-                               1 'font-shape-gstring)))
-  (set-char-table-range composition-function-table
-                        '(#x111C2 . #x111C3)
-                        (list (vector
+                                       "\\|" vowel "*" nukta "?" nasal "?" extra-short-vowel-mark
+                                       "?" vowel-modifier "?" sandhi-mark "?+" misc "?\\)")
+                               1 'font-shape-gstring)
+                              (vector
+                               ;; Nasal vowels
+                               (concat independent-vowel nasal "?")
+                               1 'font-shape-gstring)
+                              (vector
                                ;; Fricatives with Consonants
                                (concat fricatives "?" consonant vowel "?")
                                0 'font-shape-gstring))))
 
+(provide 'indian)
 ;;; indian.el ends here
-- 
2.36.1