emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master f8b2aa5e0f 1/2: Add support for the Syloti Nagri script


From: Eli Zaretskii
Subject: master f8b2aa5e0f 1/2: Add support for the Syloti Nagri script
Date: Sun, 15 May 2022 02:10:34 -0400 (EDT)

branch: master
commit f8b2aa5e0f531b629d199aa4ca18d211eea666a5
Author: समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Commit: Eli Zaretskii <eliz@gnu.org>

    Add support for the Syloti Nagri script
    
    * 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                     |  1 +
 etc/NEWS                      |  5 +++
 lisp/international/fontset.el |  2 ++
 lisp/language/indian.el       | 79 ++++++++++++++++++++++++++++++++---------
 lisp/leim/quail/indian.el     | 81 +++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 151 insertions(+), 17 deletions(-)

diff --git a/etc/HELLO b/etc/HELLO
index b14fa0e861..16a38b59d3 100644
--- 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 (ꪁꪫꪱꪣ ꪼꪕ)      ꪅꪰꪙꫂ ꪨꪮꫂ ꪁꪫꪱ / ꪅꪽ ꪨꪷ ꪁꪫꪱ
diff --git a/etc/NEWS b/etc/NEWS
index 4651977e61..b89771cdbd 100644
--- 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
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index 144c3761a0..2579b839dd 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -194,6 +194,7 @@
        (kanbun #x319D)
        (han #x5B57)
        (yi #xA288)
+        (syloti-nagri #xA807 #xA823 #xA82C)
        (javanese #xA980)
        (cham #xAA00)
        (tai-viet #xAA80)
@@ -748,6 +749,7 @@
                    symbol
                    braille
                    yi
+                    syloti-nagri
                     javanese
                    tai-viet
                    aegean-number
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index b399756bbe..559239b491 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -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)
diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el
index 6c58fdd40b..eb9d1183e5 100644
--- a/lisp/leim/quail/indian.el
+++ b/lisp/leim/quail/indian.el
@@ -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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]