Add language-environment and input methods for Syriac

* lisp/leim/quail/syriac.el: New file
* lisp/language/misc-lang.el: ("Syriac"): New language environment.
("Arabic"): Add comment explaining usage of `arabic-shape-gstring'
for Syriac as well as Arabic.
* etc/NEWS: Announce the new language environment and input methods.
* etc/HELLO: Add a Syriac greeting.
(Bug#80451)
This commit is contained in:
Lee Thompson 2026-01-20 21:58:54 +00:00 committed by Eli Zaretskii
parent fe1d9562f1
commit 39202daedd
4 changed files with 260 additions and 1 deletions

View file

@ -12,7 +12,7 @@ Non-ASCII examples:
Europe: <x-charset><param>latin-iso8859-1</param>¡Hola!, Grüß Gott, Hyvää päivää,</x-charset> Tere õhtust,<x-charset><param>latin-iso8859-3</param> Bonġu Europe: <x-charset><param>latin-iso8859-1</param>¡Hola!, Grüß Gott, Hyvää päivää,</x-charset> Tere õhtust,<x-charset><param>latin-iso8859-3</param> Bonġu
Cześć!,</x-charset><x-charset><param>latin-iso8859-2</param> Dobrý den,</x-charset><x-charset><param>cyrillic-iso8859-5</param> Здравствуйте!,</x-charset><x-charset><param>greek-iso8859-7</param> Γειά σας,</x-charset> გამარჯობა Cześć!,</x-charset><x-charset><param>latin-iso8859-2</param> Dobrý den,</x-charset><x-charset><param>cyrillic-iso8859-5</param> Здравствуйте!,</x-charset><x-charset><param>greek-iso8859-7</param> Γειά σας,</x-charset> გამარჯობა
Africa: <x-charset><param>ethiopic</param>ሠላም</x-charset> Africa: <x-charset><param>ethiopic</param>ሠላም</x-charset>
Middle/Near East:<x-charset><param>hebrew-iso8859-8</param> שָׁלוֹם,</x-charset> السّلام عليكم Middle/Near East:<x-charset><param>hebrew-iso8859-8</param> שָׁלוֹם,</x-charset> السّلام عليكم, ܣܠܡܐ
South Asia: નમસ્તે, नमस्ते, ನಮಸ್ಕಾರ, നമസ്കാരം, ନମସ୍କାର, South Asia: નમસ્તે, नमस्ते, ನಮಸ್ಕಾರ, നമസ്കാരം, ନମସ୍କାର,
ආයුබෝවන්, வணக்கம், నమస్కారం,<x-charset><param>tibetan</param> བཀྲ་ཤིས་བདེ་ལེགས༎</x-charset> ආයුබෝවන්, வணக்கம், నమస్కారం,<x-charset><param>tibetan</param> བཀྲ་ཤིས་བདེ་ལེགས༎</x-charset>
South East Asia: ជំរាបសួរ,<x-charset><param>lao</param> ສະບາຍດີ,</x-charset> မင်္ဂလာပါ,<x-charset><param>thai-tis620</param> สวัสดีครับ,</x-charset><x-charset><param>vietnamese-viscii-lower</param> </x-charset><x-charset><param>vietnamese-viscii-upper</param>C</x-charset><x-charset><param>vietnamese-viscii-lower</param>hào bạn</x-charset> South East Asia: ជំរាបសួរ,<x-charset><param>lao</param> ສະບາຍດີ,</x-charset> မင်္ဂလာပါ,<x-charset><param>thai-tis620</param> สวัสดีครับ,</x-charset><x-charset><param>vietnamese-viscii-lower</param> </x-charset><x-charset><param>vietnamese-viscii-upper</param>C</x-charset><x-charset><param>vietnamese-viscii-lower</param>hào bạn</x-charset>
@ -107,6 +107,7 @@ Spanish (español) ¡Hola!
Sundanese (ᮃᮊ᮪ᮟᮛᮞᮥᮔ᮪ᮓ) ᮞᮙ᮪ᮕᮥᮛᮞᮥᮔ᮪ Sundanese (ᮃᮊ᮪ᮟᮛᮞᮥᮔ᮪ᮓ) ᮞᮙ᮪ᮕᮥᮛᮞᮥᮔ᮪
Swedish (svenska) Hej / Goddag / Hallå Swedish (svenska) Hej / Goddag / Hallå
Syloti Nagri (ꠍꠤꠟꠐꠤ ꠘꠣꠉꠞꠤ) ꠀꠌ꠆ꠍꠣꠟꠣꠝꠥ ꠀꠟꠣꠁꠇꠥꠝ / ꠘꠝꠡ꠆ꠇꠣꠞ Syloti Nagri (ꠍꠤꠟꠐꠤ ꠘꠣꠉꠞꠤ) ꠀꠌ꠆ꠍꠣꠟꠣꠝꠥ ꠀꠟꠣꠁꠇꠥꠝ / ꠘꠝꠡ꠆ꠇꠣꠞ
Syriac (ܣܘܪܝܝܐ) ܫܠܡܐ
Tamil (தமிழ்) வணக்கம் Tamil (தமிழ்) வணக்கம்
Telugu (తెలుగు) నమస్కారం Telugu (తెలుగు) నమస్కారం
Tagalog (ᜊᜌ᜔ᜊᜌᜒᜈ᜔) ᜃᜓᜋᜓᜐ᜔ᜆ Tagalog (ᜊᜌ᜔ᜊᜌᜒᜈ᜔) ᜃᜓᜋᜓᜐ᜔ᜆ

View file

@ -819,6 +819,11 @@ writing in the orthographies of the six languages simultaneously.
*** New input methods for languages based on Burmese. *** New input methods for languages based on Burmese.
These include: Burmese, Burmese (visual order), Shan, and Mon. 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. ** 'visual-wrap-prefix-mode' now supports variable-pitch fonts.
When using 'visual-wrap-prefix-mode' in buffers with variable-pitch When using 'visual-wrap-prefix-mode' in buffers with variable-pitch

View file

@ -135,6 +135,9 @@ thin (i.e. 1-dot width) space."
(error (push err arabic-shape-log))) (error (push err arabic-shape-log)))
gstring) 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 (set-char-table-range
composition-function-table composition-function-table
'(#x600 . #x74F) '(#x600 . #x74F)
@ -146,6 +149,20 @@ thin (i.e. 1-dot width) space."
(list (vector "[\u200C\u200D][\u0600-\u074F\u200C\u200D]+" (list (vector "[\u200C\u200D][\u0600-\u074F\u200C\u200D]+"
0 #'arabic-shape-gstring))) 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 ;; The Egyptian Hieroglyph Format Controls were introduced in Unicode
;; Standard v12.0. Apparently, they are not yet well supported in ;; 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 ;; existing fonts, as of late 2020. But there's no reason for us not

236
lisp/leim/quail/syriac.el Normal file
View file

@ -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 <lee.p.thomp@gmail.com>
;; 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 <https://www.gnu.org/licenses/>.
;;; 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