Subject: [PATCH] Add support for the Hanifi Rohingya script
From: समीर सिंह Sameer Singh<[email-masked]>
To: [email-masked]
Date: Wed, 1 Jun 2022 08:10:39 +0530
List-Id: <debbugs-submit.debbugs.gnu.org>

This time the hanifi rohingya script is added to Emacs.

Please review the patch.
Thank You.
From b1960eaeae25aa198c5ce62bd3bd9b479a3a2abc 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?= <[email-masked]>
Date: Tue, 31 May 2022 19:37:34 +0530
Subject: [PATCH] Add support for the Hanifi Rohingya script

* lisp/language/misc-lang.el ("Hanifi Rohingya"):
New language environment.
Add composition rules for Hanifi Rohingya.
Add sample text and input method.
* lisp/international/fontset.el (script-representative-chars)
(setup-default-fontset): Support Hanifi Rohingya.
* lisp/leim/quail/misc-lang.el ("hanifi-rohingya"):
New input method.

* etc/HELLO: Add a Hanifi Rohingya greeting.
* etc/NEWS: Announce the new language environment.
---
 etc/HELLO                     |   1 +
 etc/NEWS                      |   1 +
 lisp/international/fontset.el |   3 +-
 lisp/language/misc-lang.el    |  22 ++++++++
 lisp/leim/quail/misc-lang.el  | 101 ++++++++++++++++++++++++++++++++++
 5 files changed, 127 insertions(+), 1 deletion(-)
 create mode 100644 lisp/leim/quail/misc-lang.el

diff --git a/etc/HELLO b/etc/HELLO
index f63f65ff7d..4148183949 100644
--- a/etc/HELLO
+++ b/etc/HELLO
@@ -60,6 +60,7 @@ Greek (ελληνικά)	Γειά σας
 Greek, ancient (ἑλληνική)	Οὖλέ τε καὶ μέγα χαῖρε
 Gujarati (ગુજરાતી)	નમસ્તે
 Gurmukhi (ਗੁਰਮੁਖੀ)	ਸਤ ਸ੍ਰੀ ਅਕਾਲ
+Hanifi Rohingya (𐴌𐴟𐴇𐴥𐴝𐴚𐴒𐴙𐴝 𐴇𐴝𐴕𐴞𐴉𐴞 𐴓𐴠𐴑𐴤𐴝)	𐴀𐴝𐴏𐴓𐴝𐴀𐴡𐴤𐴛𐴝𐴓𐴝𐴙𐴑𐴟𐴔
 Hanunoo (ᜱᜨᜳᜨᜳᜢ)	ᜫᜬᜧ᜴ ᜣᜭᜯᜥ᜴ ᜰᜲᜭᜥ᜴
 Hebrew (עִבְרִית)	שָׁלוֹם
 Hindi (हिन्दी)	प्रणाम / पाय लागू
diff --git a/etc/NEWS b/etc/NEWS
index 166e991c49..1ae80755e3 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -840,6 +840,7 @@ corresponding language environments are:
 **** Rejang script and language environment
 **** Makasar script and language environment
 **** Lontara script and language environment
+**** Hanifi Rohingya 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 425e9dcb41..2c54c86ab7 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -237,7 +237,7 @@ font-encoding-charset-alist
 	(lydian #x10920)
 	(kharoshthi #x10A00)
 	(manichaean #x10AC0)
-	(hanifi-rohingya #x10D00)
+	(hanifi-rohingya #x10D00 #x10D24 #x10D39)
 	(yezidi #x10E80)
 	(old-sogdian #x10F00)
 	(sogdian #x10F30)
@@ -791,6 +791,7 @@ setup-default-fontset
 		    cypriot-syllabary
 		    phoenician
 		    lydian
+                    hanifi-rohingya
                     yezidi
 		    kharoshthi
 		    manichaean
diff --git a/lisp/language/misc-lang.el b/lisp/language/misc-lang.el
index c8a4821abf..46429a4380 100644
--- a/lisp/language/misc-lang.el
+++ b/lisp/language/misc-lang.el
@@ -212,6 +212,28 @@ egyptian-shape-grouping
    (list (vector "[\U00013000-\U0001342E]+"
                  0 #'font-shape-gstring))))
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Hanifi Rohingya
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(set-language-info-alist
+ "Hanifi Rohingya" '((charset unicode)
+                     (coding-system utf-8)
+                     (coding-priority utf-8)
+                     (input-method . "hanifi-rohingya")
+                     (sample-text . "Hanifi Rohingya (𐴌𐴟𐴇𐴥𐴝𐴚𐴒𐴙𐴝 𐴇𐴝𐴕𐴞𐴉𐴞 𐴓𐴠𐴑𐴤𐴝)	𐴀𐴝𐴏𐴓𐴝𐴀𐴡𐴤𐴛𐴝𐴓𐴝𐴙𐴑𐴟𐴔")
+                     (documentation . "\
+Rohingya language and its script Hanifi Rohingya are supported
+in this language environment.")))
+
+;; Hanifi Rohingya composition rules
+(set-char-table-range
+ composition-function-table
+ '(#x10D1D . #x10D27)
+ (list (vector
+        "[\x10D00-\x10D27]+"
+        1 'font-shape-gstring)))
+
 (provide 'misc-lang)
 
 ;;; misc-lang.el ends here
diff --git a/lisp/leim/quail/misc-lang.el b/lisp/leim/quail/misc-lang.el
new file mode 100644
index 0000000000..bdb86ab528
--- /dev/null
+++ b/lisp/leim/quail/misc-lang.el
@@ -0,0 +1,101 @@
+;;; misc-lang.el --- Quail package for inputting Miscellaneous characters  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+
+;; Author: समीर सिंह Sameer Singh <[email-masked]>
+;; Keywords: multilingual, input method, i18n, Miscellaneous
+
+;; 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:
+
+;; Input methods for Miscellaneous languages.
+
+;;; Code:
+
+(require 'quail)
+
+(quail-define-package
+ "hanifi-rohingya" "Hanifi Rohingya" "𐴌𐴟" t "Hanifi Rohingya 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"  ?𐴤)
+ ("r"  ?𐴌)
+ ("R"  ?𐴥)
+ ("t"  ?𐴃)
+ ("T"  ?𐴦)
+ ("y"  ?𐴘)
+ ("Y"  ?𐴙)
+ ("u"  ?𐴟)
+ ("U"  ?𐴧)
+ ("i"  ?𐴞)
+ ("o"  ?𐴡)
+ ("p"  ?𐴂)
+ ("a"  ?𐴀)
+ ("A"  ?𐴝)
+ ("s"  ?𐴏)
+ ("S"  ?𐴐)
+ ("d"  ?𐴊)
+ ("f"  ?𐴉)
+ ("F"  ?𐴢)
+ ("g"  ?𐴒)
+ ("h"  ?𐴇)
+ ("j"  ?𐴅)
+ ("k"  ?𐴑)
+ ("K"  ?𐴈)
+ ("l"  ?𐴓)
+ ("z"  ?𐴎)
+ ("c"  ?𐴆)
+ ("C"  #x200C) ; ZWNJ
+ ("v"  ?𐴖)
+ ("V"  ?𐴗)
+ ("`v" ?𐴜)
+ ("b"  ?𐴁)
+ ("n"  ?𐴕)
+ ("N"  ?𐴚)
+ ("`n" ?𐴛)
+ ("`N" ?𐴣)
+ ("m"  ?𐴔))
+
+(provide 'misc-lang)
+;;; misc-lang.el ends here
-- 
2.36.1