Subject: bug#55621: [PATCH] Add support for the Limbu script

From: समीर सिंह Sameer Singh <[email-masked]>
Date: Wed, 25 May 2022 07:51:39 +0530

The Limbu script is added to Emacs this time.

Please review the patch.
Thank You.
From 8cceeccae8e01685c5636d8d73c19ef525745333 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: Wed, 25 May 2022 07:42:29 +0530
Subject: [PATCH] Add support for the Limbu script

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

* etc/HELLO: Add a Limbu greeting.
* etc/NEWS: Announce the new language environment and its
input method.
---
 etc/HELLO                     |  1 +
 etc/NEWS                      |  1 +
 lisp/international/fontset.el |  2 +
 lisp/language/indian.el       | 26 ++++++++++
 lisp/leim/quail/indian.el     | 91 +++++++++++++++++++++++++++++++++++
 5 files changed, 121 insertions(+)

diff --git a/etc/HELLO b/etc/HELLO
index a9653a4164..31f753c73a 100644
--- a/etc/HELLO
+++ b/etc/HELLO
@@ -70,6 +70,7 @@ Kannada (ಕನ್ನಡ)	ನಮಸ್ಕಾರ
 Khmer (ភាសាខ្មែរ)	ជំរាបសួរ
 Lakota (Lakȟotiyapi)	Taŋyáŋ yahí!
 Lao (ພາສາລາວ)	ສະບາຍດີ / ຂໍໃຫ້ໂຊກດີ
+Limbu (ᤕᤰᤌᤢᤱ ᤐᤠᤴ)	ᤛᤣᤘᤠᤖᤥ
 Malayalam (മലയാളം)	നമസ്കാരം
 Maldivian (ދިވެހި)	އައްސަލާމު ޢަލައިކުމް / ކިހިނެހް؟
 Maltese (il-Malti)	Bonġu / Saħħa
diff --git a/etc/NEWS b/etc/NEWS
index 857f300384..960e422699 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -822,6 +822,7 @@ corresponding language environments are:
 **** Hanunoo script and language environment
 **** Buhid script and language environment
 **** Tagbanwa script and language environment
+**** Limbu 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 5967648f36..42fbedae1d 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -188,6 +188,7 @@ font-encoding-charset-alist
         (tagbanwa #x1760)
 	(khmer #x1780)
 	(mongolian #x1826)
+        (limbu #x1901 #x1920 #x1936)
         (tai-le #x1950)
         (tai-lue #x1980)
         (tai-tham #x1A20 #x1A55 #x1A61 #x1A80)
@@ -756,6 +757,7 @@ setup-default-fontset
                     hanunoo
                     buhid
                     tagbanwa
+                    limbu
 		    symbol
 		    braille
 		    yi
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index a5563a3ff7..5082a97f34 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -222,6 +222,17 @@ 'devanagari
 in this language environment."))
  '("Indian"))
 
+(set-language-info-alist
+ "Limbu" '((charset unicode)
+           (coding-system utf-8)
+           (coding-priority utf-8)
+           (input-method . "limbu")
+           (sample-text . "Limbu (ᤕᤠᤰᤌᤢᤱ ᤐᤠᤴ)	ᤛᤣᤘᤠᤖᤥ")
+           (documentation . "\
+Limbu language and its script is supported in this
+language environment."))
+ '("Indian"))
+
 ;; Replace mnemonic characters in REGEXP according to TABLE.  TABLE is
 ;; an alist of (MNEMONIC-STRING . REPLACEMENT-STRING).
 
@@ -670,5 +681,20 @@ malayalam-composable-pattern
                                        nasal "?" visarga "?")
                                1 'font-shape-gstring))))
 
+;; Limbu composition rules
+(let ((consonant            "[\x1900-\x191E]")
+      (vowel                "[\x1920-\x1928]")
+      (subjoined-letter     "[\x1929-\x192B]")
+      (small-letter         "[\x1930-\x1938]")
+      (other-signs          "[\x1939\x193A]")
+      (sa-i                 "\x193B"))
+  (set-char-table-range composition-function-table
+                        '(#x1920 . #x193B)
+                        (list (vector
+                               ;; Consonant based syllables
+                               (concat consonant sa-i "?" subjoined-letter "?" small-letter
+                                       "?" vowel "?" other-signs "?")
+                               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 b76cf9a80d..031c30aabb 100644
--- a/lisp/leim/quail/indian.el
+++ b/lisp/leim/quail/indian.el
@@ -1565,4 +1565,95 @@ "||"
 ("`M" ?ଽ)
 )
 
+(quail-define-package
+ "limbu" "Limbu" "ᤕ" t "Limbu 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"  ?ᤨ)
+("`q" ?᥀)
+("w"  ?ᤘ)
+("W"  ?ᤫ)
+("e"  ?ᤣ)
+("E"  ?ᤤ)
+("r"  ?ᤖ)
+("R"  ?ᤷ)
+("`r" ?ᤪ)
+("t"  ?ᤋ)
+("T"  ?ᤌ)
+("`t" ?ᤳ)
+("`T" ?ᤞ)
+("y"  ?ᤕ)
+("Y"  ?ᤩ)
+("u"  ?ᤢ)
+("i"  ?ᤡ)
+("o"  ?ᤥ)
+("O"  ?ᤦ)
+("p"  ?ᤐ)
+("P"  ?ᤑ)
+("`p" ?ᤵ)
+("a"  ?ᤠ)
+("A"  ?ᤀ)
+("s"  ?ᤛ)
+("S"  ?ᤙ)
+("d"  ?ᤍ)
+("D"  ?ᤎ)
+("f"  ?᤻)
+("g"  ?ᤃ)
+("G"  ?ᤄ)
+("`g" ?ᤝ)
+("h"  ?ᤜ)
+("j"  ?ᤈ)
+("J"  ?ᤉ)
+("k"  ?ᤁ)
+("K"  ?ᤂ)
+("`k" ?ᤰ)
+("l"  ?ᤗ)
+("L"  ?ᤸ)
+("z"  ?ᤊ)
+("Z"  ?ᤅ)
+("x"  ?ᤚ)
+("X"  ?᤹)
+("c"  ?ᤆ)
+("C"  ?ᤇ)
+("`c" #x200C)  ; ZWNJ
+("v"  ?᤺)
+("b"  ?ᤒ)
+("B"  ?ᤓ)
+("n"  ?ᤏ)
+("N"  ?ᤴ)
+("m"  ?ᤔ)
+("M"  ?ᤱ)
+("`m" ?ᤲ)
+("`?" ?᥅)
+)
+
 ;;; indian.el ends here
-- 
2.36.1