From 0258124c258e8889941342a2a161c66233cd4eb5 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: Sat, 7 May 2022 17:55:25 +0530 Subject: [PATCH] Add the Kaithi script to Emacs * lisp/language/indian.el ("Kaithi"): New language environment. Add composition rules for Kaithi. Add sample text and input method. * lisp/international/fontset.el (script-representative-chars) (setup-default-fontset): Support Kaithi. * lisp/leim/quail/indian.el ("kaithi"): New input method. * etc/HELLO: Add a Kaithi greeting. * etc/NEWS: Announce the new language environment and its input method. --- etc/HELLO | 2 + etc/NEWS | 6 ++ lisp/international/fontset.el | 2 + lisp/language/indian.el | 38 +++++++++++++ lisp/leim/quail/indian.el | 101 ++++++++++++++++++++++++++++++++++ 5 files changed, 149 insertions(+) diff --git a/etc/HELLO b/etc/HELLO index dbbcc0493b..ac0cb823ea 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -59,6 +59,8 @@ Hindi (हिंदी) नमस्ते / नमस्कार । Inuktitut (ᐃᓄᒃᑎᑐᑦ) ᐊᐃ Italian (italiano) Ciao / Buon giorno Javanese (ꦧꦱꦗꦮꦶ) console.log("ꦲꦭꦺꦴ"); + +Kaithi (𑂍𑂶𑂟𑂲) 𑂩𑂰𑂧𑂩𑂰𑂧 Kannada (ಕನ್ನಡ) ನಮಸ್ಕಾರ Khmer (ភាសាខ្មែរ) ជំរាបសួរ Lakota (Lakȟotiyapi) Taŋyáŋ yahí! diff --git a/etc/NEWS b/etc/NEWS index f7dddd36de..86bebe918c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -722,6 +722,12 @@ This language environment supports Brahmi, which is a historical script that was used in ancient South Asia. A new input method, 'brahmi', is provided to type text in this script. +*** New language environment "Kaithi". +This language environment supports Kaithi or Kayasthi, which was +an important writing system of the past mainly used for administrative +purposes. A new input method, 'kaithi', 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 883f08905e..66f5068cf7 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -232,6 +232,7 @@ (elymaic #x10FE0) (old-uyghur #x10F70) (brahmi #x11013 #x11045 #x11052 #x11065) + (kaithi #x1108D #x110B0 #x110BD) (mahajani #x11150) (khojki #x11200) (khudawadi #x112B0) @@ -772,6 +773,7 @@ elymaic old-uyghur brahmi + kaithi makasar dives-akuru cuneiform diff --git a/lisp/language/indian.el b/lisp/language/indian.el index c3d59b6f77..0031405182 100644 --- a/lisp/language/indian.el +++ b/lisp/language/indian.el @@ -136,6 +136,17 @@ South Indian language Malayalam is supported in this language environment.")) The ancient Brahmi script is supported in this language environment.")) '("Indian")) ; Should we have an "Old" category? +(set-language-info-alist + "Kaithi" '((charset unicode) + (coding-system utf-8) + (coding-priority utf-8) + (input-method . "kaithi") + (sample-text . "Kaithi (𑂍𑂶𑂟𑂲) 𑂩𑂰𑂧𑂩𑂰𑂧") + (documentation . "\ +Languages such as Awadhi, Bhojpuri, Magahi and Maithili +which used the Kaithi script are supported in this language environment.")) + '("Indian")) + ;; Replace mnemonic characters in REGEXP according to TABLE. TABLE is ;; an alist of (MNEMONIC-STRING . REPLACEMENT-STRING). @@ -421,6 +432,33 @@ The ancient Brahmi script is supported in this language environment.")) (concat multiplier number-joiner numeral) 1 'font-shape-gstring)))) +;; Kaithi composition rules +(let ((consonant "[\x1108D-\x110AF]") + (nukta "\x110BA") + (vowel "[\x1108D-\x110C2]") + (anusvara-candrabindu "[\x11080\x11081]") + (virama "\x110B9") + (number-sign "\x110BD") + (number-sign-above "\x110CD") + (numerals "[\x966-\x96F]+") + (zwj "\x200D")) + (set-char-table-range composition-function-table + '(#x110B0 . #x110BA) + (list (vector + (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 + (concat number-sign numerals) + 0 'font-shape-gstring))) + (set-char-table-range composition-function-table + '(#x110CD . #x110CD) + (list (vector + (concat number-sign-above numerals) + 0 'font-shape-gstring)))) + (provide 'indian) ;;; indian.el ends here diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el index f2d5f9bad4..a52d44bc08 100644 --- a/lisp/leim/quail/indian.el +++ b/lisp/leim/quail/indian.el @@ -835,5 +835,106 @@ Full key sequences are listed below:") ("`/" ?𑁿) ) +(quail-define-package + "kaithi" "Kaithi" "𑂍𑂶" t "Kaithi 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" ?९) +("0" ?०) +("`0" ?0) +("`\)" ?𑂻) +("`\\" ?𑃀) +("`|" ?𑃁) +("`" ?𑂗) +("q" ?𑂗) +("Q" ?𑂘) +("w" ?𑂙) +("W" ?𑂛) +("`w" ?𑂚) +("`W" ?𑂜) +("e" ?𑂵) +("E" ?𑂶) +("`e" ?𑂉) +("`E" ?𑂊) +("r" ?𑂩) +("R" ?𑃂) +("t" ?𑂞) +("T" ?𑂟) +("y" ?𑂨) +("Y" ?⸱) +("u" ?𑂳) +("U" ?𑂴) +("`u" ?𑂇) +("`U" ?𑂈) +("i" ?𑂱) +("I" ?𑂲) +("`i" ?𑂅) +("`I" ?𑂆) +("o" ?𑂷) +("O" ?𑂸) +("`o" ?𑂋) +("`O" ?𑂌) +("p" ?𑂣) +("P" ?𑂤) +("a" ?𑂰) +("A" ?𑂄) +("`a" ?𑂃) +("s" ?𑂮) +("S" ?𑂬) +("d" ?𑂠) +("D" ?𑂡) +("`d" ?𑂼) +("`D" #x110BD) ; Kaithi Number Sign +("f" ?𑂹) +("F" #x110CD) ; Kaithi Number Sign Above +("`f" ?𑂾) +("`F" ?𑂿) +("g" ?𑂏) +("G" ?𑂐) +("h" ?𑂯) +("H" ?𑂂) +("j" ?𑂔) +("J" ?𑂕) +("k" ?𑂍) +("K" ?𑂎) +("l" ?𑂪) +("z" ?𑂖) +("Z" ?𑂑) +("x" ?𑂭) +("X" ?𑂺) +("c" ?𑂒) +("C" ?𑂓) +("`c" #x200C) ; ZWNJ +("`C" #x200D) ; ZWJ +("v" ?𑂫) +("b" ?𑂥) +("B" ?𑂦) +("n" ?𑂢) +("N" ?𑂝) +("m" ?𑂧) +("M" ?𑂁) +("`m" ?𑂀) +) + ;;; indian.el ends here -- 2.36.0