]> git.eshelyaron.com Git - emacs.git/commitdiff
Add support for Tai Tham script
authorEli Zaretskii <eliz@gnu.org>
Wed, 16 Feb 2022 15:07:58 +0000 (17:07 +0200)
committerEli Zaretskii <eliz@gnu.org>
Wed, 16 Feb 2022 15:07:58 +0000 (17:07 +0200)
* lisp/international/fontset.el (setup-default-fontset)
(script-representative-chars): Add tai-tham.
* lisp/language/thai.el ("Northern Thai"): New language
environment.  Patch by Richard Wordingham
<richard.wordingham@ntlworld.com>.  Set
'composition-function-table' for the Tai Tham block.  Original
code by Richard Wordingham <richard.wordingham@ntlworld.com>.

* etc/HELLO: Add Northern Thai greeting.
* etc/NEWS: Announce addition of Northern Thai language environment.

etc/HELLO
etc/NEWS
lisp/international/fontset.el
lisp/language/thai.el

index 5b2002ff9333c7006a9b91536512db1736ee68ec..da9b388f3635b573270b1e96011cfba501ad1e60 100644 (file)
--- a/etc/HELLO
+++ b/etc/HELLO
@@ -66,6 +66,7 @@ Maldivian (ދިވެހި)      އައްސަލާމު ޢަލައިކުމް / ކިހިނ
 Maltese (il-Malti)     Bonġu / Saħħa
 Mathematics    ∀ p ∈ world • hello p  □
 Mongolian (монгол хэл)        Сайн байна уу?
+Northern Thai (ᨣᩣᩴᨾᩮᩬᩥᨦ / ᨽᩣᩈᩣᩃ᩶ᩣ᩠ᨶᨶᩣ)   ᩈ᩠ᩅᩢᩔ᩠ᨯᩦᨣᩕᩢ᩠ᨸ
 Norwegian (norsk)      Hei / God dag
 Oriya (ଓଡ଼ିଆ)   ଶୁଣିବେ
 Polish  (język polski)        Dzień dobry! / Cześć!
index 8d28340c33270ea2a77f3a14a50fccc5d14d72a2..0bc0b120a975d0d5f2bf22be42051b4ea7de8d29 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -514,6 +514,9 @@ Setting it to a non-nil value temporarily disables automatic
 composition of character sequences at point, and thus makes it easier
 to edit such sequences by allowing point to "enter" the sequence.
 
+*** New language environment "Northern Thai".
+This uses the Tai Tham script, whose support has been enhanced.
+
 \f
 * Changes in Specialized Modes and Packages in Emacs 29.1
 
index bd557df180c9f85cbc835aeaf31e9d4619c33213..973c637eff9627f99fe7439a90aff715e844e567 100644 (file)
        (runic #x16A0)
        (khmer #x1780)
        (mongolian #x1826)
+        (tai-tham #x1A20 #x1A55 #x1A61 #x1A80)
        (symbol . [#x201C #x2200 #x2500])
        (braille #x2800)
        (ideographic-description #x2FF0)
                    counting-rod-numeral
                     toto
                    adlam
+                    tai-tham
                    mahjong-tile
                    domino-tile
                     emoji))
index 6a6289a44c75101ffe34348c264f6f63d849fda9..60f5f9d2a38c0cbd6703c5bab1f44e6f249017e8 100644 (file)
@@ -82,6 +82,43 @@ This is the same as `thai-tis620' with the addition of no-break-space."
     (aset composition-function-table (aref chars i) elt)))
 (aset composition-function-table ?ำ '(["[ก-ฯ]." 1 thai-composition-function]))
 
+;; Tai-Tham
+
+(set-language-info-alist
+ "Northern Thai" '((charset unicode)
+                  (coding-system utf-8)
+                  (coding-priority utf-8)
+                  (sample-text .
+                    "Northern Thai (ᨣᩣᩴᨾᩮᩬᩥᨦ / ᨽᩣᩈᩣᩃ᩶ᩣ᩠ᨶᨶᩣ)      ᩈ᩠ᩅᩢᩔ᩠ᨯᩦᨣᩕᩢ᩠ᨸ")
+                  (documentation . t)))
+
+;; From Richard Wordingham <richard.wordingham@ntlworld.com>:
+(defvar tai-tham-composable-pattern
+  (let ((table
+         ;; C is letters, independent vowels, digits, punctuation and symbols.
+         '(("C" . "[\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD]")
+           ("M" .           ; Marks, CGJ, ZWNJ, ZWJ
+            "[\u0324\u034F\u0E49\u0E4A\u0E4B\u1A55-\u1A57\u1A59-\u1A5E\u1A61-\u1A7C\u1A7F\u200C\200D]")
+           ("H" . "\u1A60") ; Sakot
+           ("S" .           ; Marks commuting with sakot
+            "[\u0E49-\u0E4B\u0EC9\u0ECB\u1A75-\u1A7C]")
+           ("N" . "\u1A58"))) ; mai kang lai
+        (basic-syllable "C\\(N*\\(M\\|HS*C\\)\\)*")
+        (regexp "X\\(N\\(X\\)?\\)*H?")) ; where X is basic syllable
+    (let ((case-fold-search nil))
+      (setq regexp (replace-regexp-in-string "X" basic-syllable regexp t t))
+      (dolist (elt table)
+        (setq regexp (replace-regexp-in-string (car elt) (cdr elt)
+                                               regexp t t))))
+    regexp))
+
+(let ((elt (list (vector tai-tham-composable-pattern 0 'font-shape-gstring)
+                )))
+  (set-char-table-range composition-function-table '(#x1A20 . #x1A54) elt)
+  (set-char-table-range composition-function-table '(#x1A80 . #x1A89) elt)
+  (set-char-table-range composition-function-table '(#x1A90 . #x1A99) elt)
+  (set-char-table-range composition-function-table '(#x1AA0 . #x1AAD) elt))
+
 (provide 'thai)
 
 ;;; thai.el ends here