From 231a113b721e92a62ce171b98c3461c255429862 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?= Date: Sun, 15 May 2022 05:09:15 +0530 Subject: [PATCH] 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 d93a79ed36..2962a50d99 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -791,6 +791,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 @@ font-encoding-charset-alist (kanbun #x319D) (han #x5B57) (yi #xA288) + (syloti-nagri #xA807 #xA823 #xA82C) (javanese #xA980) (cham #xAA00) (tai-viet #xAA80) @@ -748,6 +749,7 @@ setup-default-fontset 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 @@ 'devanagari 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 @@ malayalam-composable-pattern '(#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 @@ malayalam-composable-pattern '(#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 @@ malayalam-composable-pattern (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 @@ malayalam-composable-pattern (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 @@ "||" ("`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 -- 2.36.1