diff --git a/etc/HELLO b/etc/HELLO index 8a7c7dbe706..fdbca768b44 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -12,7 +12,7 @@ Non-ASCII examples: Europe: latin-iso8859-1¡Hola!, Grüß Gott, Hyvää päivää, Tere õhtust,latin-iso8859-3 Bonġu Cześć!,latin-iso8859-2 Dobrý den,cyrillic-iso8859-5 Здравствуйте!,greek-iso8859-7 Γειά σας, გამარჯობა Africa: ethiopicሠላም - Middle/Near East:hebrew-iso8859-8 שָׁלוֹם, السّلام عليكم + Middle/Near East:hebrew-iso8859-8 שָׁלוֹם, السّلام عليكم, ܣܠܡܐ South Asia: નમસ્તે, नमस्ते, ನಮಸ್ಕಾರ, നമസ്കാരം, ନମସ୍କାର, ආයුබෝවන්, வணக்கம், నమస్కారం,tibetan བཀྲ་ཤིས་བདེ་ལེགས༎ South East Asia: ជំរាបសួរ,lao ສະບາຍດີ, မင်္ဂလာပါ,thai-tis620 สวัสดีครับ,vietnamese-viscii-lower vietnamese-viscii-upperCvietnamese-viscii-lowerhào bạn @@ -107,6 +107,7 @@ Spanish (español) ¡Hola! Sundanese (ᮃᮊ᮪ᮟᮛᮞᮥᮔ᮪ᮓ) ᮞᮙ᮪ᮕᮥᮛᮞᮥᮔ᮪ Swedish (svenska) Hej / Goddag / Hallå Syloti Nagri (ꠍꠤꠟꠐꠤ ꠘꠣꠉꠞꠤ) ꠀꠌ꠆ꠍꠣꠟꠣꠝꠥ ꠀꠟꠣꠁꠇꠥꠝ / ꠘꠝꠡ꠆ꠇꠣꠞ +Syriac (ܣܘܪܝܝܐ) ܫܠܡܐ Tamil (தமிழ்) வணக்கம் Telugu (తెలుగు) నమస్కారం Tagalog (ᜊᜌ᜔ᜊᜌᜒᜈ᜔) ᜃᜓᜋᜓᜐ᜔ᜆ diff --git a/etc/NEWS b/etc/NEWS index ccad04ae371..f3a5675284f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -819,6 +819,11 @@ writing in the orthographies of the six languages simultaneously. *** New input methods for languages based on Burmese. These include: Burmese, Burmese (visual order), Shan, and Mon. +--- +*** New input methods for Syriac languages. +Language environment and input methods are implemented now for languages +using the Syriac script: Syriac and Syriac (phonetic) + --- ** 'visual-wrap-prefix-mode' now supports variable-pitch fonts. When using 'visual-wrap-prefix-mode' in buffers with variable-pitch diff --git a/lisp/language/misc-lang.el b/lisp/language/misc-lang.el index 1f5d4ee4c02..8942c86ea1b 100644 --- a/lisp/language/misc-lang.el +++ b/lisp/language/misc-lang.el @@ -135,6 +135,9 @@ thin (i.e. 1-dot width) space." (error (push err arabic-shape-log))) gstring) +;;; `arabic-shape-gstring' is used for shaping of Arabic (range +;;; #x600–#x6ff) and Syriac (range #x700–#x74f) on account of their +;;; identical shaping requirements. (set-char-table-range composition-function-table '(#x600 . #x74F) @@ -146,6 +149,20 @@ thin (i.e. 1-dot width) space." (list (vector "[\u200C\u200D][\u0600-\u074F\u200C\u200D]+" 0 #'arabic-shape-gstring))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Syriac +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(set-language-info-alist + "Syriac" '((charset unicode) + (coding-system utf-8) + (coding-priority utf-8) + (input-method . "syriac") + (sample-text . "Syriac ܫܠܡܐ") + (documentation . "\ +Language environment for Classical Syriac, Aramaic, and other languages +using the Syriac script."))) + ;; The Egyptian Hieroglyph Format Controls were introduced in Unicode ;; Standard v12.0. Apparently, they are not yet well supported in ;; existing fonts, as of late 2020. But there's no reason for us not diff --git a/lisp/leim/quail/syriac.el b/lisp/leim/quail/syriac.el new file mode 100644 index 00000000000..72eef0f1c8c --- /dev/null +++ b/lisp/leim/quail/syriac.el @@ -0,0 +1,236 @@ +;;; syriac.el --- Quail package for inputting Syriac -*- coding: utf-8; lexical-binding:t -*- + +;; Copyright (C) 2026 Free Software Foundation, Inc. + +;; Author: Lee Thompson +;; Keywords: multilingual, input method, Syriac + +;; 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: + +;;; Code: + +(require 'quail) + +(quail-define-package + "syriac" "Syriac" "ܣ" nil "Syriac input method. + +Based on Syriac table in X Keyboard Configuration DB +" nil t t t t nil nil nil nil nil t) + +;; ܏̮ 1! 2̊ 3̥ 4݉ 5♰ 6♱ 7܊ 8» 9) 0( -« =+ +;; ܔܰ ܨܳ ܖܶ ܩܺ ܦܽ ܜ݀ ܥ݁ ܗ̈ ܞ̄ ܚ̇ ܓ̃ ܕ݊ <> +;; ܫܱ ܣܴ ܝܷ ܒܻ ܠܾ ܐܑ ܬـ ܢ̤ ܡ̱ ܟ̣ ܛ̰ ܆: +;; ]ܲ [ܵ ܤܸ ܪܼ ܧܿ ܀ܹ .݂ ܘ، ܙ؛ ܇؟ +;; + +(quail-define-rules + ("`" ?܏) + ("~" ?̮) + + ("!" ?!) + ("@" ?̊) + ("#" ?̥) + ("$" ?݉) + ("%" ?♰) + ("^" ?♱) + ("&" ?܊) + ("*" ?») + ("(" ?\)) + (")" ?\() + ("_" ?«) + ("+" ?+) + + ("Q" ?ܰ) + ("W" ?ܳ) + ("E" ?ܶ) + ("R" ?ܺ) + ("T" ?ܽ) + ("Y" ?݀) + ("U" ?݁) + ("I" ?̈) + ("O" ?̄) + ("P" ?̇) + ("{" ?̃) + ("}" ?݊) + + ("A" ?ܱ) + ("S" ?ܴ) + ("D" ?ܷ) + ("F" ?ܻ ) + ("G" ?ܾ) + ("H" ?ܑ) + ("J" ?ـ) + ("K" ?̤) + ("L" ?̱) + (":" ?̣) + ("\"" ?̰) + ("|" ?:) + + + ("Z" ?ܲ) + ("X" ?ܵ) + ("C" ?ܸ) + ("V" ?ܼ) + ("B" ?ܿ) + ("N" ?ܹ) + ("M" ?݂) + ("<" ?،) + (">" ?؛) + ("?" ?؟) + + ("q" ?ܔ) + ("w" ?ܨ) + ("e" ?ܖ) + ("r" ?ܩ) + ("t" ?ܦ) + ("y" ?ܜ) + ("u" ?ܥ) + ("i" ?ܗ) + ("o" ?ܞ) + ("p" ?ܚ) + ("[" ?ܓ) + ("]" ?ܕ) + + ("a" ?ܫ) + ("s" ?ܣ) + ("d" ?ܝ) + ("f" ?ܒ) + ("g" ?ܠ) + ("h" ?ܐ) + ("j" ?ܬ) + ("k" ?ܢ) + ("l" ?ܡ) + (";" ?ܟ) + ("'" ?ܛ) + ("\\" ?܆) + + ("z" ?\]) + ("x" ?\[) + ("c" ?ܤ) + ("v" ?ܪ) + ("b" ?ܧ) + ("n" ?܀) + ("m" ?.) + ("," ?ܘ) + ("." ?ܙ) + ("/" ?܇)) + +(quail-define-package + "syriac-phonetic" "Syriac" "ܦ" nil "Phonetic input method for Syriac. + +Based on Syriac (phonetic) table in X Keyboard Configuration DB +" nil t t t t nil nil nil nil nil t) + +;; ܏̮ 1! 2̊ 3̥ 4݉ 5♰ 6♱ 7܊ 8» 9) 0( -« =+ +;; ܩܰ ܘܳ ܖܶ ܪܺ ܬܽ ܝ݀ ܜ݁ ܥ̈ ܧ̄ ܦ̇ ]̃ [݊ +;; ܐܱ ܣܴ ܕܷ ܔܻ ܓܾ ܗܑ ܛـ ܟ̤ ܠ̱ ܚ̣ ܞ̰ ܆: +;; ܙܲ ܨܵ ܤܸ ܫܼ ܒܿ ܢܹ ܡ݂ ܀، .؛ ܇؟ + +(quail-define-rules + ("`" ?܏) + ("~" ?̮) + + ("!" ?!) + ("@" ?̊) + ("#" ?̥) + ("$" ?݉) + ("%" ?♰) + ("^" ?♱) + ("&" ?܊) + ("*" ?») + ("(" ?\)) + (")" ?\() + ("_" ?«) + ("+" ?+) + + ("Q" ?ܰ) + ("W" ?ܳ) + ("E" ?ܶ) + ("R" ?ܺ) + ("T" ?ܽ) + ("Y" ?݀) + ("U" ?݁) + ("I" ?̈) + ("O" ?̄) + ("P" ?̇) + ("{" ?̃) + ("}" ?݊) + + ("A" ?ܱ) + ("S" ?ܴ) + ("D" ?ܷ) + ("F" ?ܻ) + ("G" ?ܾ) + ("H" ?ܑ) + ("J" ?ـ) + ("K" ?̤) + ("L" ?̱) + (":" ?̣) + ("\"" ?̰) + ("|" ?:) + + ("Z" ?ܲ) + ("X" ?ܵ) + ("C" ?ܸ) + ("V" ?ܼ) + ("B" ?ܿ) + ("N" ?ܹ) + ("M" ?݂) + ("<" ?،) + (">" ?؛) + ("?" ?؟) + + ("q" ?ܩ) + ("w" ?ܘ) + ("e" ?ܖ) + ("r" ?ܪ) + ("t" ?ܬ) + ("y" ?ܝ) + ("u" ?ܜ) + ("i" ?ܥ) + ("o" ?ܧ) + ("p" ?ܦ) + ("[" ?\]) + ("]" ?\[) + + ("a" ?ܐ) + ("s" ?ܣ) + ("d" ?ܕ) + ("f" ?ܔ) + ("g" ?ܓ) + ("h" ?ܗ) + ("j" ?ܛ) + ("k" ?ܟ) + ("l" ?ܠ) + (";" ?ܚ) + ("\\" ?܆) + ("'" ?ܞ) + + ("z" ?ܙ) + ("x" ?ܨ) + ("c" ?ܤ) + ("v" ?ܫ) + ("b" ?ܒ) + ("n" ?ܢ) + ("m" ?ܡ) + ("," ?܀) + ("." ?.) + ("/" ?܇) + ) + +;;; syriac.el ends here