From 01dbb96cc14f8c7a85e6c5339634c917769cc583 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: Thu, 26 May 2022 18:35:00 +0530 Subject: [PATCH] Add support for the Sundanese script * lisp/language/indonesian.el ("Sundanese"): New language environment. Add composition rules for Sundanese. Add sample text and input method. Improve composition rules for Balinese and Javanese. * lisp/international/fontset.el (script-representative-chars) (setup-default-fontset): Support Sundanese. * lisp/leim/quail/indonesian.el ("sundanese"): New input method. * etc/HELLO: Add a Sundanese greeting. * etc/NEWS: Announce the new language environment and its input method. --- etc/HELLO | 1 + etc/NEWS | 1 + lisp/international/fontset.el | 2 + lisp/language/indonesian.el | 33 ++++++++++++- lisp/leim/quail/indonesian.el | 91 +++++++++++++++++++++++++++++++++++ 5 files changed, 126 insertions(+), 2 deletions(-) diff --git a/etc/HELLO b/etc/HELLO index 248c02b7ab..4ff066847d 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -89,6 +89,7 @@ Sinhala (සිංහල) ආයුබෝවන් Slovak (slovenčina) Dobrý deň Slovenian (slovenščina) Pozdravljeni! Spanish (español) ¡Hola! +Sundanese (ᮃᮊ᮪ᮟᮛᮞᮥᮔ᮪ᮓ) ᮞᮙ᮪ᮕᮥᮛᮞᮥᮔ᮪ Swedish (svenska) Hej / Goddag / Hallå Syloti Nagri (ꠍꠤꠟꠐꠤ ꠘꠣꠉꠞꠤ) ꠀꠌ꠆ꠍꠣꠟꠣꠝꠥ ꠀꠟꠣꠁꠇꠥꠝ / ꠘꠝꠡ꠆ꠇꠣꠞ Tamil (தமிழ்) வணக்கம் diff --git a/etc/NEWS b/etc/NEWS index c03ec850c6..97a04405f5 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -825,6 +825,7 @@ corresponding language environments are: **** Limbu script and language environment **** Balinese script and language environment **** Javanese script and language environment +**** Sundanese script and language environment --- *** The "Oriya" language environment was renamed to "Odia". diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 6b51125629..00ee0cf475 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -190,6 +190,7 @@ font-encoding-charset-alist (mongolian #x1826) (limbu #x1901 #x1920 #x1936) (balinese #x1B13 #x1B35 #x1B5E) + (sundanese #x1B8A #x1BAB #x1CC4) (tai-le #x1950) (tai-lue #x1980) (tai-tham #x1A20 #x1A55 #x1A61 #x1A80) @@ -760,6 +761,7 @@ setup-default-fontset tagbanwa limbu balinese + sundanese symbol braille yi diff --git a/lisp/language/indonesian.el b/lisp/language/indonesian.el index 994be2484a..4bdcd0a49c 100644 --- a/lisp/language/indonesian.el +++ b/lisp/language/indonesian.el @@ -45,6 +45,14 @@ (documentation . "\ Javanese language and its script are supported in this language environment."))) +(set-language-info-alist + "Sundanese" '((charset unicode) + (coding-system utf-8) + (coding-priority utf-8) + (input-method . "sundanese") + (sample-text . "Sundanese (ᮃᮊ᮪ᮞᮛᮞᮥᮔ᮪ᮓ) ᮞᮙ᮪ᮕᮥᮛᮞᮥᮔ᮪") + (documentation . "\ +Sundanese language and its script are supported in this language environment."))) ;; Balinese composition rules (let ((consonant "[\x1B13-\x1B33\x1B45-\x1B4B]") @@ -58,7 +66,7 @@ '(#x1B34 . #x1B44) (list (vector ;; Consonant based syllables - (concat consonant rerekan "?" "\\(?:" adeg-adeg consonant + (concat consonant rerekan "?\\(?:" adeg-adeg consonant rerekan "?\\)*\\(?:" adeg-adeg "\\|" vowel "*" rerekan "?" modifier-above "?" musical-symbol "?\\)") 1 'font-shape-gstring) @@ -80,7 +88,7 @@ '(#xA9B3 . #xA9C0) (list (vector ;; Consonant based syllables - (concat consonant telu "?" "\\(?:" pangkon consonant + (concat consonant telu "?\\(?:" pangkon consonant telu "?\\)*\\(?:" pangkon "\\|" vowel "*" telu "?" modifier-above "?" dependant-consonant "?\\)") 1 'font-shape-gstring) @@ -90,5 +98,26 @@ vowel "?" modifier-above "?" dependant-consonant "?") 1 'font-shape-gstring)))) +;; Sundanese composition rules +(let ((consonant "[\x1B8A-\x1BA0\x1BAE\x1BAF\x1BBB-\x1BBF]") + (independent-vowel "[\x1B83-\x1B89]") + (vowel "[\x1BA4-\x1BA9]") + (dependant-consonant "[\x1BA1-\x1BA3\x1BAC-\x1BAD]") + (modifier-above "[\x1B80-\x1B82]") + (virama "[\x1BAA\x1BAB]")) + (set-char-table-range composition-function-table + '(#x1BA1 . #x1BAD) + (list (vector + ;; Consonant based syllables + (concat consonant "\\(?:" virama consonant + "\\)*\\(?:" virama "\\|" vowel "*" + modifier-above "?" dependant-consonant "?\\)") + 1 'font-shape-gstring) + (vector + ;; Vowels based syllables + (concat independent-vowel virama "?" + vowel "?" modifier-above "?" dependant-consonant "?") + 1 'font-shape-gstring)))) + (provide 'indonesian) ;;; indonesian.el ends here diff --git a/lisp/leim/quail/indonesian.el b/lisp/leim/quail/indonesian.el index 82d0a2c269..dd931e9879 100644 --- a/lisp/leim/quail/indonesian.el +++ b/lisp/leim/quail/indonesian.el @@ -286,5 +286,96 @@ ("M" ?ꦁ) ("`m" ?ꦀ)) +(quail-define-package + "sundanese" "Sundanese" "ᮃ" t "Sundanese 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" ?ᮋ) + ("w" ?ᮝ) + ("W" ?ᮭ) + ("e" ?ᮨ) + ("E" ?ᮩ) + ("`e" ?ᮈ) + ("`E" ?ᮉ) + ("r" ?ᮛ) + ("R" ?ᮢ) + ("`r" ?ᮁ) + ("`R" ?ᮻ) + ("t" ?ᮒ) + ("y" ?ᮚ) + ("Y" ?ᮡ) + ("u" ?ᮥ) + ("U" ?ᮅ) + ("i" ?ᮤ) + ("I" ?ᮄ) + ("o" ?ᮧ) + ("O" ?ᮇ) + ("p" ?ᮕ) + ("P" ?ᮖ) + ("a" ?ᮃ) + ("A" ?ᮦ) + ("`a" ?ᮆ) + ("s" ?ᮞ) + ("S" ?ᮯ) + ("d" ?ᮓ) + ("D" ?᳆) + ("f" ?᮪) + ("F" ?᮫) + ("g" ?ᮌ) + ("h" ?ᮠ) + ("H" ?ᮂ) + ("j" ?ᮏ) + ("k" ?ᮊ) + ("K" ?ᮮ) + ("`k" ?ᮾ) + ("`K" ?᳅) + ("l" ?ᮜ) + ("L" ?ᮣ) + ("`l" ?ᮼ) + ("`L" ?᳄) + ("z" ?ᮐ) + ("x" ?ᮟ) + ("c" ?ᮎ) + ("`c" #x200C) ; ZWNJ + ("b" ?ᮘ) + ("B" ?ᮽ) + ("`b" ?ᮺ) + ("`B" ?᳇) + ("n" ?ᮔ) + ("N" ?ᮍ) + ("`n" ?ᮑ) + ("m" ?ᮙ) + ("M" ?ᮀ) + ("`m" ?ᮿ) + ("`M" ?ᮬ)) + (provide 'indonesian) ;;; indonesian.el ends here -- 2.36.1