From a2bb02ac33b95fb476eeb18b59c6f318d3975f5b 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 05:34:30 +0530 Subject: [PATCH] Add support for the Balinese script * lisp/language/indonesian.el ("Balinese"): New language environment. Add composition rules for Balinese. Add sample text and input method. * lisp/international/fontset.el (script-representative-chars) (setup-default-fontset): Support Balinese. * lisp/leim/quail/indonesian.el ("balinese"): New input method. * lisp/loadup.el: Preload lisp/language/indonesian.el. * etc/HELLO: Add a Balinese 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 | 64 ++++++++++++ lisp/leim/quail/indonesian.el | 177 ++++++++++++++++++++++++++++++++++ lisp/loadup.el | 1 + 6 files changed, 246 insertions(+) create mode 100644 lisp/language/indonesian.el create mode 100644 lisp/leim/quail/indonesian.el diff --git a/etc/HELLO b/etc/HELLO index 31f753c73a..248c02b7ab 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -27,6 +27,7 @@ LANGUAGE (NATIVE NAME) HELLO Amharic (አማርኛ) ሠላም Arabic (العربيّة) السّلام عليكم Armenian (հայերեն) Բարև ձեզ +Balinese (ᬅᬓ᭄ᬱᬭᬩᬮᬶ) ᬒᬁᬲ᭄ᬯᬲ᭄ᬢ᭄ᬬᬲ᭄ᬢᬸ Belarusian (беларуская) Прывітанне Bengali (বাংলা) নমস্কার Brahmi (𑀩𑁆𑀭𑀸𑀳𑁆𑀫𑀻) 𑀦𑀫𑀲𑁆𑀢𑁂 diff --git a/etc/NEWS b/etc/NEWS index 0f59d545e3..d6221d5586 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -823,6 +823,7 @@ corresponding language environments are: **** Buhid script and language environment **** Tagbanwa script and language environment **** Limbu script and language environment +**** Balinese 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 42fbedae1d..a7d7109c8d 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -189,6 +189,7 @@ font-encoding-charset-alist (khmer #x1780) (mongolian #x1826) (limbu #x1901 #x1920 #x1936) + (balinese #x1B13 #x1B35 #x1B5E) (tai-le #x1950) (tai-lue #x1980) (tai-tham #x1A20 #x1A55 #x1A61 #x1A80) @@ -758,6 +759,7 @@ setup-default-fontset buhid tagbanwa limbu + balinese symbol braille yi diff --git a/lisp/language/indonesian.el b/lisp/language/indonesian.el new file mode 100644 index 0000000000..9a86135d89 --- /dev/null +++ b/lisp/language/indonesian.el @@ -0,0 +1,64 @@ +;;; indonesian.el --- Indonesian languages support -*- coding: utf-8; lexical-binding: t; -*- + +;; Copyright (C) 2022 Free Software Foundation, Inc. + +;; Author: समीर सिंह Sameer Singh +;; Keywords: multilingual, input method, i18n, Indonesia + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; This file contains definitions of Indonesia language environments, and +;; setups for displaying the scripts used there. + +;;; Code: + +(set-language-info-alist + "Balinese" '((charset unicode) + (coding-system utf-8) + (coding-priority utf-8) + (input-method . "balinese") + (sample-text . "Balinese (ᬅᬓ᭄ᬱᬭᬩᬮᬶ) ᬒᬁᬲ᭄ᬯᬲ᭄ᬢ᭄ᬬᬲ᭄ᬢᬸ") + (documentation . "\ +Balinese language and its script are supported in this language environment."))) + + +;; Balinese composition rules +(let ((consonant "[\x1B13-\x1B33\x1B45-\x1B4B]") + (independent-vowel "[\x1B05-\x1B12]") + (rerekan "\x1B34") + (vowel "[\x1B35-\x1B43]") + (modifier-above "[\x1B00-\x1B04]") + (adeg-adeg "\x1B44") + (musical-symbol "[\x1B6B-\x1B73]")) + (set-char-table-range composition-function-table + '(#x1B34 . #x1B44) + (list (vector + ;; Consonant based syllables + (concat consonant rerekan "?" "\\(?:" adeg-adeg consonant + rerekan "?\\)*\\(?:" adeg-adeg "\\|" vowel "*" rerekan + "?" modifier-above "?" musical-symbol "?\\)") + 1 'font-shape-gstring) + (vector + ;; Vowels based syllables + (concat independent-vowel rerekan "?" adeg-adeg "?" + vowel "?" modifier-above "?" musical-symbol "?") + 1 'font-shape-gstring)))) + + +(provide 'indonesian) +;;; indonesian.el ends here diff --git a/lisp/leim/quail/indonesian.el b/lisp/leim/quail/indonesian.el new file mode 100644 index 0000000000..46dafc89f5 --- /dev/null +++ b/lisp/leim/quail/indonesian.el @@ -0,0 +1,177 @@ +;;; indonesian.el --- Quail package for inputting Indonesian characters -*- lexical-binding: t; -*- + +;; Copyright (C) 2022 Free Software Foundation, Inc. + +;; Author: समीर सिंह Sameer Singh +;; Keywords: multilingual, input method, i18n, Indonesia + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; Input methods for Indonesian languages. + +;;; Code: + +(require 'quail) + +;; This input method supports languages like Buginese, Balinese, Sundanese and +;; Javanese. + +(quail-define-package + "balinese" "Balinese" "ᬅ" t "Balinese 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" ?ᬣ) + ("`t" ?᭜) + ("`T" ?᭝) + ("y" ?ᬬ) + ("Y" ?ᭂ) + ("`y" ?ᭃ) + ("`Y" ?᭴) + ("u" ?ᬸ) + ("U" ?ᬹ) + ("`u" ?ᬉ) + ("`U" ?ᬊ) + ("i" ?ᬶ) + ("I" ?ᬷ) + ("`i" ?ᬇ) + ("`I" ?ᬈ) + ("o" ?ᭀ) + ("O" ?ᭁ) + ("`o" ?ᬑ) + ("`O" ?ᬒ) + ("p" ?ᬧ) + ("P" ?ᬨ) + ("`p" ?ᭈ) + ("`P" ?᭠) + ("a" ?ᬵ) + ("A" ?ᬆ) + ("`a" ?ᬅ) + ("`A" ?᭵) + ("s" ?ᬲ) + ("S" ?ᬰ) + ("`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" ?ᭅ) + ("`K" ?ᭆ) + ("l" ?ᬮ) + ("L" ?ᬼ) + ("`l" ?ᬍ) + ("`L" ?᭪) + ("z" ?ᭊ) + ("Z" ?ᬽ) + ("`z" ?ᬎ) + ("`Z" ?᭷) + ("x" ?ᬱ) + ("X" ?᬴) + ("`x" ?᭸) + ("c" ?ᬘ) + ("C" ?ᬙ) + ("`c" #x200C) ; ZWNJ + ("v" ?ᬯ) + ("V" ?ᭉ) + ("`v" ?᭹) + ("`V" ?᭺) + ("b" ?ᬩ) + ("B" ?ᬪ) + ("`b" ?᭻) + ("n" ?ᬦ) + ("N" ?ᬡ) + ("`n" ?ᬗ) + ("`N" ?ᬜ) + ("m" ?ᬫ) + ("M" ?ᬂ) + ("`m" ?ᬁ) + ("`M" ?ᬀ)) + +(provide 'indonesian) +;;; indonesian.el ends here diff --git a/lisp/loadup.el b/lisp/loadup.el index 9f1da4c0f9..aa15a3bbe8 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -246,6 +246,7 @@ (load "language/burmese") (load "language/cham") (load "language/philippine") +(load "language/indonesian") (load "indent") (let ((max-specpdl-size (max max-specpdl-size 1800))) -- 2.36.1