]> git.eshelyaron.com Git - emacs.git/commitdiff
Add support for the Syloti Nagri script
authorसमीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Sat, 14 May 2022 23:39:15 +0000 (05:09 +0530)
committerEli Zaretskii <eliz@gnu.org>
Sun, 15 May 2022 05:45:04 +0000 (08:45 +0300)
* lisp/language/indian.el ("Syloti Nagri"): New language environment.
Add composition rules for Syloti Nagri.  Add sample text and input
method.
Improve composition rules for Kaithi, Tirhuta, Sharada and Siddham.
* lisp/international/fontset.el (script-representative-chars)
(setup-default-fontset): Support Syloti Nagri.
* lisp/leim/quail/indian.el ("syloti-nagri"): New input method.

* etc/HELLO: Add two Syloti Nagri greetings.
* etc/NEWS: Announce the new language environment and its
input method.

etc/HELLO
etc/NEWS
lisp/international/fontset.el
lisp/language/indian.el
lisp/leim/quail/indian.el

index b14fa0e861429c76d5af30efd8a66b1957dafeb9..16a38b59d3ac7b52adc986cf957a51891d6d597a 100644 (file)
--- a/etc/HELLO
+++ b/etc/HELLO
@@ -82,6 +82,7 @@ Slovak (slovenčina)  Dobrý deň
 Slovenian (slovenščina)      Pozdravljeni!
 Spanish (español)     ¡Hola!
 Swedish (svenska)      Hej / Goddag / Hallå
+Syloti Nagri (ꠍꠤꠟꠐꠤ ꠘꠣꠉꠞꠤ) ꠀꠌ꠆ꠍꠣꠟꠣꠝꠥ ꠀꠟꠣꠁꠇꠥꠝ / ꠘꠝꠡ꠆ꠇꠣꠞ
 Tamil (தமிழ்)        வணக்கம்
 Telugu (తెలుగు)    నమస్కారం
 TaiViet (ꪁꪫꪱꪣ ꪼꪕ)  ꪅꪰꪙꫂ ꪨꪮꫂ ꪁꪫꪱ / ꪅꪽ ꪨꪷ ꪁꪫꪱ
index 4651977e610c60e3d81191e8cbe7c518a38874c9..b89771cdbda2d62ec8c47a13037f93c432d82ae2 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -796,6 +796,11 @@ language.  Nowadays it is mostly used by the Buddhist monks in Japan for
 religious writings.  A new input method, 'siddham', is provided to type
 text in this script.
 
+*** New language environment "Syloti Nagri"
+This language environment supports the Syloti Nagri script for the Sylheti
+language, which is spoke in parts of Bangladesh, Assam and Tripura.  A new
+input method, 'syloti-nagri', is provided to type text in this script.
+
 ---
 *** New Greek translation of the Emacs tutorial.
 Type 'C-u C-h t' to select it in case your language setup does not do
index 144c3761a017bccf0026adb9b51d57cc28cdf519..2579b839dd9060fb9b6c75d6bdfe873bbc48a390 100644 (file)
        (kanbun #x319D)
        (han #x5B57)
        (yi #xA288)
+        (syloti-nagri #xA807 #xA823 #xA82C)
        (javanese #xA980)
        (cham #xAA00)
        (tai-viet #xAA80)
                    symbol
                    braille
                    yi
+                    syloti-nagri
                     javanese
                    tai-viet
                    aegean-number
index b399756bbea28288645218b62b2d9c8eb6dffa0a..559239b4918a78a4af48100594f3c8915afb9745 100644 (file)
@@ -180,6 +180,17 @@ Sanskrit language and one of its script Siddham is supported
 in this language environment."))
  '("Indian"))
 
+(set-language-info-alist
+ "Syloti Nagri" '((charset unicode)
+                  (coding-system utf-8)
+                  (coding-priority utf-8)
+                  (input-method . "syloti-nagri")
+                  (sample-text . "Syloti Nagri (ꠍꠤꠟꠐꠤ ꠘꠣꠉꠞꠤ)        ꠀꠌ꠆ꠍꠣꠟꠣꠝꠥ ꠀꠟꠣꠁꠇꠥꠝ")
+                  (documentation . "\
+Sylheti language and its script Syloti Nagri is supported
+in this language environment."))
+ '("Indian"))
+
 
 ;; Replace mnemonic characters in REGEXP according to TABLE.  TABLE is
 ;; an alist of (MNEMONIC-STRING . REPLACEMENT-STRING).
@@ -485,12 +496,13 @@ in this language environment."))
                         '(#x110B0 . #x110BA)
                         (list (vector
                                ;; Consonant based syllables
-                               (concat consonant nukta "?\\(?:" virama zwj "?" consonant nukta "?\\)*\\(?:"
-                                       virama zwj "?\\|" vowel "*" nukta "?" nasal "?\\)")
+                               (concat consonant nukta "?\\(?:" virama zwj "?" consonant
+                                       nukta "?\\)*\\(?:" virama zwj "?\\|" vowel "*" nukta
+                                       "?" nasal "?\\)")
                                1 'font-shape-gstring)
                               (vector
-                               ;; Nasal vowels
-                               (concat independent-vowel nasal "?")
+                               ;; Vowel based syllables
+                               (concat independent-vowel nukta "?" virama "?" vowel "?")
                                1 'font-shape-gstring)))
   (set-char-table-range composition-function-table
                         '(#x110BD . #x110BD)
@@ -516,12 +528,13 @@ in this language environment."))
                         '(#x114B0 . #x114C3)
                         (list (vector
                                ;; Consonant based syllables
-                               (concat consonant nukta "?\\(?:" virama consonant nukta "?\\)*\\(?:"
-                                       virama "\\|" vowel "*" nukta "?" nasal "?\\)")
+                               (concat consonant nukta "?\\(?:" virama consonant nukta
+                                       "?\\)*\\(?:" virama "\\|" vowel "*" nukta "?"
+                                       nasal "?\\)")
                                1 'font-shape-gstring)
                               (vector
-                               ;; Nasal vowels
-                               (concat independent-vowel nasal "?")
+                               ;; Vowel based syllables
+                               (concat independent-vowel nukta "?" virama "?" vowel "?" nasal "?")
                                1 'font-shape-gstring))))
 
 ;; Sharada composition rules
@@ -535,19 +548,21 @@ in this language environment."))
       (virama                 "\x111C0")
       (fricatives             "[\x111C2\x111C3]")
       (sandhi-mark            "\x111C9")
-      (misc                   "[^\x11180-\x111C0\x111C2\x111C3\x111C9-\x111CC\x111CE-\x111CF]"))
+      (misc                   "[\x111C4-\x111C8\x111CD]"))
   (set-char-table-range composition-function-table
-                        '(#x111B3 . #x111CF)
+                        '(#x111B3 . #x111CE)
                         (list (vector
                                ;; Consonant based syllables
                                (concat consonant nukta "?" vowel-modifier "?\\(?:" virama
                                        consonant nukta "?" vowel-modifier "?\\)*\\(?:" virama
                                        "\\|" vowel "*" nukta "?" nasal "?" extra-short-vowel-mark
-                                       "?" vowel-modifier "?" sandhi-mark "?+" misc "?\\)")
+                                        "?" vowel-modifier "?" sandhi-mark "?+" misc "?\\)")
                                1 'font-shape-gstring)
                               (vector
-                               ;; Nasal vowels
-                               (concat independent-vowel nasal "?")
+                               ;; Vowel based syllables
+                               (concat independent-vowel nukta "?" vowel-modifier "?" virama "?"
+                                       vowel "?" extra-short-vowel-mark "?" sandhi-mark "?"
+                                       fricatives "?" misc "?")
                                1 'font-shape-gstring)
                               (vector
                                ;; Fricatives with Consonants
@@ -560,17 +575,47 @@ in this language environment."))
       (independent-vowel    "[\x11580-\x1158D\x115D8-\x115DB]")
       (vowel                "[\x115AF-\x115BB\x115DC\x115DD]")
       (nasal                "[\x115BC\x115BD]")
+      (visarga              "\x115BE")
       (virama               "\x115BF"))
   (set-char-table-range composition-function-table
                         '(#x115AF . #x115C0)
                         (list (vector
                                ;; Consonant based syllables
-                               (concat consonant nukta "?\\(?:" virama consonant nukta "?\\)*\\(?:"
-                                       virama "\\|" vowel "*" nukta "?" nasal "?\\)")
+                               (concat consonant nukta "?" "\\(?:" virama consonant nukta
+                                       "?\\)*\\(?:" virama "\\|" vowel "*" nukta "?" nasal
+                                       "?" visarga "?\\)")
                                1 'font-shape-gstring)
                               (vector
-                               ;; Nasal vowels
-                               (concat independent-vowel nasal "?")
+                               ;; Vowels based syllables
+                               (concat independent-vowel nukta "?" virama "?" vowel "?"
+                                       nasal "?" visarga "?")
+                               1 'font-shape-gstring))))
+
+;; Syloti Nagri composition rules
+(let ((consonant            "[\xA807-\xA80A\xA80C-\xA822]")
+      (vowel                "[\xA802\xA823-\xA827]")
+      (nasal                "[\xA80B]")
+      (virama               "\xA806")
+      (alternate-virama     "\xA82C"))
+  (set-char-table-range composition-function-table
+                        '(#xA806 . #xA806)
+                        (list (vector
+                               ;; Consonant conjunct based syllables
+                               (concat consonant "\\(?:" virama consonant "\\)+"
+                                       vowel "?" nasal "?")
+                               1 'font-shape-gstring)))
+  (set-char-table-range composition-function-table
+                        '(#xA823 . #xA827)
+                        (list (vector
+                               ;; Non Consonant conjunct based syllables
+                               (concat consonant vowel nasal "?")
+                               1 'font-shape-gstring)))
+    (set-char-table-range composition-function-table
+                        '(#xA82C . #xA82C)
+                        (list (vector
+                               ;; Consonant with the alternate virama
+                               (concat consonant "\\(?:" alternate-virama consonant "\\)+"
+                                       vowel "?" nasal "?")
                                1 'font-shape-gstring))))
 
 (provide 'indian)
index 6c58fdd40bea8f8d29e07f4cd39aed1947afce73..eb9d1183e5a91704ebc39f3766c08f3840f3c33a 100644 (file)
@@ -1267,4 +1267,85 @@ Full key sequences are listed below:")
 ("`m" ?𑖼)
 )
 
+
+(quail-define-package
+ "syloti-nagri" "Syloti Nagri" "ꠍꠤ" t "Syloti Nagri 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" ?꠨)
+("`Q" ?꠩)
+("w"  ?ꠒ)
+("W"  ?ꠓ)
+("`w" ?꠪)
+("`W" ?꠫)
+("e"  ?ꠦ)
+("E"  ?ꠄ)
+("r"  ?ꠞ)
+("R"  ?ꠠ)
+("t"  ?ꠔ)
+("T"  ?ꠕ)
+("y"  ?ꠂ)
+("u"  ?ꠥ)
+("U"  ?ꠃ)
+("i"  ?ꠤ)
+("I"  ?ꠁ)
+("o"  ?ꠧ)
+("O"  ?ꠅ)
+("p"  ?ꠙ)
+("P"  ?ꠚ)
+("a"  ?ꠣ)
+("A"  ?ꠀ)
+("s"  ?ꠡ)
+("d"  ?ꠖ)
+("D"  ?ꠗ)
+("f"  ?꠆)
+("F" ?꠬)
+("g"  ?ꠉ)
+("G"  ?ꠊ)
+("h"  ?ꠢ)
+("j"  ?ꠎ)
+("J"  ?ꠏ)
+("k"  ?ꠇ)
+("K"  ?ꠈ)
+("l"  ?ꠟ)
+("c"  ?ꠌ)
+("C"  ?ꠍ)
+("`c" #x200C)  ; ZWNJ
+("b"  ?ꠛ)
+("B"  ?ꠜ)
+("n"  ?ꠘ)
+("m"  ?ꠝ)
+("M"  ?ꠋ)
+)
+
 ;;; indian.el ends here