From 72f5abdfb5df853cc0d2f241938571c209250007 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: Mon, 9 May 2022 04:22:57 +0530 Subject: [PATCH] Add support for the Sharada script * lisp/language/indian.el ("Sharada"): New language environment. Add composition rules for Sharada. Add sample text and input method. * lisp/international/fontset.el (script-representative-chars) (setup-default-fontset): Support Sharada. * lisp/leim/quail/indian.el ("sharada"): New input method. * etc/HELLO: Add a Sharada greeting. * etc/NEWS: Announce the new language environment and its input method. --- etc/HELLO | 2 + etc/NEWS | 5 ++ lisp/international/fontset.el | 2 + lisp/language/indian.el | 43 ++++++++++++ lisp/leim/quail/indian.el | 119 ++++++++++++++++++++++++++++++++++ 5 files changed, 171 insertions(+) diff --git a/etc/HELLO b/etc/HELLO index f5e2adae94..96da105e73 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -75,6 +75,7 @@ Norwegian (norsk) Hei / God dag Oriya (ଓଡ଼ିଆ) ଶୁଣିବେ Polish (język polski) Dzień dobry! / Cześć! Russian (русский) Здра́вствуйте! +Sharada (𑆯𑆳𑆫𑆢𑆳) 𑆤𑆩𑆱𑇀𑆑𑆳𑆫 Sinhala (සිංහල) ආයුබෝවන් Slovak (slovenčina) Dobrý deň Slovenian (slovenščina) Pozdravljeni! diff --git a/etc/NEWS b/etc/NEWS index 5d2b5e12cf..430f788436 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -749,6 +749,11 @@ This language environment supports Tirhuta or Mithilaakshar, which is used to write the Maithili language. A new input method, 'tirhuta', is provided to type text in this script. +*** New language environment "Sharada". +This language environment supports the Sharada script. Named after the +goddess of learning, this script is used to write the Kashmiri language. +A new input method, 'sharada', is provided to type text in this script. + * Changes in Specialized Modes and Packages in Emacs 29.1 diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 2d417d632f..7fa390a34b 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -234,6 +234,7 @@ font-encoding-charset-alist (brahmi #x11013 #x11045 #x11052 #x11065) (kaithi #x1108D #x110B0 #x110BD) (mahajani #x11150) + (sharada #x11191 #x111B3 #x111CD) (khojki #x11200) (khudawadi #x112B0) (grantha #x11305) @@ -774,6 +775,7 @@ setup-default-fontset old-uyghur brahmi kaithi + sharada tirhuta makasar dives-akuru diff --git a/lisp/language/indian.el b/lisp/language/indian.el index 922061c3b6..4b6c4744f1 100644 --- a/lisp/language/indian.el +++ b/lisp/language/indian.el @@ -158,6 +158,17 @@ 'devanagari language environment.")) '("Indian")) +(set-language-info-alist + "Sharada" '((charset unicode) + (coding-system utf-8) + (coding-priority utf-8) + (input-method . "sharada") + (sample-text . "Sharada (𑆯𑆳𑆫𑆢𑆳) 𑆤𑆩𑆱𑇀𑆑𑆳𑆫") + (documentation . "\ +Kashmiri language and its script Sharada is supported in this +language environment.")) + '("Indian")) + ;; Replace mnemonic characters in REGEXP according to TABLE. TABLE is ;; an alist of (MNEMONIC-STRING . REPLACEMENT-STRING). @@ -461,17 +472,20 @@ malayalam-composable-pattern (set-char-table-range composition-function-table '(#x110B0 . #x110BA) (list (vector + ;; Consonant based syllables (concat consonant nukta "?\\(?:" virama zwj "?" consonant nukta "?\\)*\\(?:" virama zwj "?\\|" vowel "*" nukta "?" anusvara-candrabindu "?\\)") 1 'font-shape-gstring))) (set-char-table-range composition-function-table '(#x110BD . #x110BD) (list (vector + ;; Number sign (concat number-sign numerals) 0 'font-shape-gstring))) (set-char-table-range composition-function-table '(#x110CD . #x110CD) (list (vector + ;; Number sign above (concat number-sign-above numerals) 0 'font-shape-gstring)))) @@ -486,8 +500,37 @@ malayalam-composable-pattern (set-char-table-range composition-function-table '(#x114B0 . #x114C3) (list (vector + ;; Consonant based syllables (concat consonant nukta "?\\(?:" virama consonant nukta "?\\)*\\(?:" virama "\\|" vowel "*" nukta "?" anusvara-candrabindu "?\\)") 1 'font-shape-gstring)))) +;; Sharada composition rules +(let ((consonant "[\x11191-\x111B2]") + (nukta "\x111CA") + (vowel "[\x111B3-\x111BF\x111CE]") + (vowel-modifier "\x111CB") + (extra-short-vowel-mark "\x111CC") + (anusvara-candrabindu "[\x11181\x11180\x111CF]") + (virama "\x111C0") + (fricatives "[\x111C2\x111C3]") + (sandhi-mark "\x111C9") + (misc "[^\x11180-\x111C0\x111C2\x111C3\x111C9-\x111CC\x111CE-\x111CF]")) + (set-char-table-range composition-function-table + '(#x111B3 . #x111CF) + (list (vector + ;; Consonant based syllables + (concat consonant nukta "?" vowel-modifier "?\\(?:" virama + consonant nukta "?" vowel-modifier "?\\)*\\(?:" virama + "\\|" vowel "*" nukta "?" anusvara-candrabindu "?" + extra-short-vowel-mark "?" vowel-modifier "?" sandhi-mark + "?+" misc "?\\)") + 1 'font-shape-gstring))) + (set-char-table-range composition-function-table + '(#x111C2 . #x111C3) + (list (vector + ;; Fricatives with Consonants + (concat fricatives "?" consonant vowel "?") + 0 'font-shape-gstring)))) + ;;; indian.el ends here diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el index f730a5ca0f..b1e547a26e 100644 --- a/lisp/leim/quail/indian.el +++ b/lisp/leim/quail/indian.el @@ -1043,5 +1043,124 @@ "||" ("`m" ?𑒿) ) +(quail-define-package + "sharada" "Sharada" "𑆯𑆳" t "Sharada 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" ?𑆽) +("`e" ?𑆍) +("`E" ?𑆎) +("r" ?𑆫) +("R" ?𑆸) +("`r" ?𑆉) +("`R" ?𑇎) +("t" ?𑆠) +("T" ?𑆡) +("y" ?𑆪) +("u" ?𑆶) +("U" ?𑆷) +("`u" ?𑆇) +("`U" ?𑆈) +("i" ?𑆴) +("I" ?𑆵) +("`i" ?𑆅) +("`I" ?𑆆) +("o" ?𑆾) +("O" ?𑆿) +("`o" ?𑆏) +("`O" ?𑆐) +("p" ?𑆥) +("P" ?𑆦) +("`p" ?𑇃) +("a" ?𑆳) +("A" ?𑆄) +("`a" ?𑆃) +("s" ?𑆱) +("S" ?𑆯) +("d" ?𑆢) +("D" ?𑆣) +("`d" ?𑇚) +("`D" ?𑇛) +("f" ?𑇀) +("F" ?𑆹) +("`f" ?𑆊) +("`F" ?𑇌) +("g" ?𑆓) +("G" ?𑆔) +("`g" ?𑇜) +("`G" ?𑇝) +("h" ?𑆲) +("H" ?𑆂) +("`h" ?𑇞) +("`H" ?𑇟) +("j" ?𑆘) +("J" ?𑆙) +("`j" ?᳘) +("`J" ?᳕) +("k" ?𑆑) +("K" ?𑆒) +("`k" ?𑇂) +("l" ?𑆬) +("L" ?𑆭) +("`l" ?𑆺) +("`L" ?𑆋) +("z" ?𑆚) +("Z" ?𑆕) +("`z" ?𑆻) +("`Z" ?𑆌) +("x" ?𑆰) +("X" ?𑇊) +("c" ?𑆖) +("C" ?𑆗) +("`c" #x200C) ; ZWNJ +("v" ?𑆮) +("b" ?𑆧) +("B" ?𑆨) +("n" ?𑆤) +("N" ?𑆟) +("`n" ?𑇄) +("`N" ?𑇁) +("m" ?𑆩) +("M" ?𑆁) +("`m" ?𑆀) +("`M" ?𑇏) +) ;;; indian.el ends here -- 2.36.1