Subject: [PATCH] Add support for the Meetei Mayek script
From: समीर सिंह Sameer Singh<[email-masked]>
To: [email-masked]
Date: Sun, 12 Jun 2022 15:35:26 +0530
List-Id: <debbugs-submit.debbugs.gnu.org>

This time the Meetei Mayek script is added to Emacs.

Please review the patch.
Thank you.
From 0302d13ac0fc6eea79ebb7745e78c074b63f5757 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: Sat, 11 Jun 2022 18:53:43 +0530
Subject: [PATCH] Add support for the Meetei Mayek script

* lisp/language/indian.el ("Meetei Mayek"): New language environment.
Add composition rules for Meetei Mayek. Add sample text and input method.
* lisp/international/fontset.el (script-representative-chars)
(setup-default-fontset): Support Meetei Mayek.
* lisp/leim/quail/indian.el ("meetei-mayek"): New input method.

* etc/HELLO: Add a Meetei Mayek greeting.
* etc/NEWS: Announce the new language environment.
---
 etc/HELLO                     |  1 +
 etc/NEWS                      |  1 +
 lisp/international/fontset.el |  2 +
 lisp/language/indian.el       | 27 ++++++++++
 lisp/leim/quail/indian.el     | 99 +++++++++++++++++++++++++++++++++++
 5 files changed, 130 insertions(+)

diff --git a/etc/HELLO b/etc/HELLO
index baa8af0f07..d73465318c 100644
--- a/etc/HELLO
+++ b/etc/HELLO
@@ -83,6 +83,7 @@ Malayalam (മലയാളം)	നമസ്കാരം
 Maldivian (ދިވެހި)	އައްސަލާމު ޢަލައިކުމް / ކިހިނެހް؟
 Maltese (il-Malti)	Bonġu / Saħħa
 Mathematics	∀ p ∈ world • hello p  □
+Meetei Mayek (ꯃꯤꯇꯩ ꯃꯌꯦꯛ)	ꯈꯨꯔꯨꯝꯖꯔꯤ
 Modi (𑘦𑘻𑘚𑘲)	𑘡𑘦𑘭𑘿𑘎𑘰𑘨
 Mongolian (монгол хэл)	Сайн байна уу?
 Northern Thai (ᨣᩣᩴᨾᩮᩬᩥᨦ / ᨽᩣᩈᩣᩃ᩶ᩣ᩠ᨶᨶᩣ)	ᩈ᩠ᩅᩢᩔ᩠ᨯᩦᨣᩕᩢ᩠ᨸ
diff --git a/etc/NEWS b/etc/NEWS
index 424d1250c3..7aa1158ed7 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -884,6 +884,7 @@ corresponding language environments are:
 **** Grantha script and language environment
 **** Kharoshthi script and language environment
 **** Lepcha script and language environment
+**** Meetei Mayek script and language environment
 
 ---
 *** The "Oriya" language environment was renamed to "Odia".
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index 273cba8d63..8d34aa99c3 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -211,6 +211,7 @@ font-encoding-charset-alist
 	(javanese #xA98F #xA9B4 #xA9CA)
 	(cham #xAA00)
 	(tai-viet #xAA80)
+        (meetei-mayek #xABC0 #xABE3 #xAAE0 #xAAF6)
 	(hangul #xAC00)
 	(linear-b #x10000)
 	(aegean-number #x10100)
@@ -776,6 +777,7 @@ setup-default-fontset
                     rejang
                     javanese
 		    tai-viet
+                    meetei-mayek
 		    aegean-number
 		    ancient-greek-number
 		    ancient-symbol
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 6e0fb10b4f..c5bb47955d 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -255,6 +255,17 @@ 'devanagari
 language environment."))
  '("Indian"))
 
+(set-language-info-alist
+ "Meetei Mayek" '((charset unicode)
+                  (coding-system utf-8)
+                  (coding-priority utf-8)
+                  (input-method . "meetei-mayek")
+                  (sample-text . "Meetei Mayek (ꯃꯤꯇꯩ ꯃꯌꯦꯛ)	ꯈꯨꯔꯨꯝꯖꯔꯤ")
+                  (documentation . "\
+Meetei language and its script Meetei Mayek are supported in this
+language environment."))
+ '("Indian"))
+
 ;; Replace mnemonic characters in REGEXP according to TABLE.  TABLE is
 ;; an alist of (MNEMONIC-STRING . REPLACEMENT-STRING).
 
@@ -760,5 +771,21 @@ malayalam-composable-pattern
                                        other-signs "?")
                                1 'font-shape-gstring))))
 
+;; Meetei Mayek composition rules
+(let ((akshara              "[\xABC0-\xABE2\xAAE0-\xAAEA]")
+      (vowel                "[\xABE3-\xABEA\xAAEB-\xAAEC]")
+      (nasal                "\xABEA")
+      (visarga              "\xAAF5")
+      (virama               "[\xABED\xAAF6]")
+      (heavy-tone           "\x11640"))
+  (set-char-table-range composition-function-table
+                        '(#xABE3 . #xABED)
+                        (list (vector
+                               ;; Consonant based syllables
+                               (concat akshara "\\(?:" virama akshara "\\)*\\(?:"
+                                       virama "\\|" vowel "*" nasal "?" visarga "?"
+                                       heavy-tone "?\\)")
+                               1 'font-shape-gstring))))
+
 (provide 'indian)
 ;;; indian.el ends here
diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el
index bc61a312fa..8fffcc3511 100644
--- a/lisp/leim/quail/indian.el
+++ b/lisp/leim/quail/indian.el
@@ -1863,5 +1863,104 @@ "||"
  ("M"  ?ᰖ)
  ("`m"  ?ᰮ))
 
+(quail-define-package
+ "meetei-mayek" "Meetei Mayek" "ꯃꯤ" t "Meetei Mayek phonetic input method.
+
+ `\\=`' is used to switch levels instead of Alt-Gr."
+ nil t t t t nil nil nil nil nil t)
+
+(quail-define-rules
+ ("``" ?₹)
+ ("1"  ?꯱)
+ ("`1" ?1)
+ ("2"  ?꯲)
+ ("`2" ?2)
+ ("3"  ?꯳)
+ ("`3" ?3)
+ ("4"  ?꯴)
+ ("`4" ?4)
+ ("5"  ?꯵)
+ ("`5" ?5)
+ ("6"  ?꯶)
+ ("`6" ?6)
+ ("7"  ?꯷)
+ ("`7" ?7)
+ ("8"  ?꯸)
+ ("`8" ?8)
+ ("9"  ?꯹)
+ ("`9" ?9)
+ ("0"  ?꯰)
+ ("`0" ?0)
+ ("`\\" ?꫰)
+ ("`|" ?꯫)
+ ("`"  ?ꫤ)
+ ("q"  ?ꫤ)
+ ("Q"  ?ꫥ)
+ ("w"  ?ꯋ)
+ ("W"  ?ꫦ)
+ ("`w" ?ꫧ)
+ ("e"  ?ꯦ)
+ ("E"  ?ꯩ)
+ ("`e" ?ꫠ)
+ ("r"  ?ꯔ)
+ ("t"  ?ꯇ)
+ ("T"  ?ꯊ)
+ ("`t" ?ꯠ)
+ ("y"  ?ꯌ)
+ ("u"  ?ꯨ)
+ ("U"  ?ꯎ)
+ ("`u" ?ꫬ)
+ ("i"  ?ꯤ)
+ ("I"  ?ꯏ)
+ ("`i" ?ꯢ)
+ ("`I" ?ꫫ)
+ ("o"  ?ꯣ)
+ ("O"  ?ꯧ)
+ ("`o" ?ꫡ)
+ ("`O" ?ꫮ)
+ ("p"  ?ꯄ)
+ ("P"  ?ꯐ)
+ ("`p" ?ꯞ)
+ ("a"  ?ꯥ)
+ ("A"  ?ꯑ)
+ ("`a" ?ꫭ)
+ ("`A" ?ꫯ)
+ ("s"  ?ꯁ)
+ ("S"  ?ꫩ)
+ ("`s" ?ꫪ)
+ ("d"  ?ꯗ)
+ ("D"  ?ꯙ)
+ ("f"  ?꯭)
+ ("F"  ?꫶)
+ ("g"  ?ꯒ)
+ ("G"  ?ꯘ)
+ ("h"  ?ꯍ)
+ ("H"  ?ꫵ)
+ ("j"  ?ꯖ)
+ ("J"  ?ꯓ)
+ ("k"  ?ꯀ)
+ ("K"  ?ꯈ)
+ ("`k" ?ꯛ)
+ ("l"  ?ꯂ)
+ ("L"  ?ꯜ)
+ ("z"  ?ꯉ)
+ ("Z"  ?ꯡ)
+ ("`z" ?ꫣ)
+ ("x"  ?ꯪ)
+ ("c"  ?ꯆ)
+ ("C"  ?ꫢ)
+ ("v"  ?꯬)
+ ("V"  ?ꫳ)
+ ("`v" ?ꫴ)
+ ("b"  ?ꯕ)
+ ("B"  ?ꯚ)
+ ("n"  ?ꯅ)
+ ("N"  ?ꯟ)
+ ("`n" ?ꫨ)
+ ("m"  ?ꯃ)
+ ("M"  ?ꯝ)
+ ("`m" ?ꫲ)
+ ("`?" ?꫱))
+
 (provide 'indian)
 ;;; indian.el ends here
-- 
2.36.1