]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix rendering of Malayalam script
authorEli Zaretskii <eliz@gnu.org>
Sat, 29 Jan 2022 19:22:02 +0000 (21:22 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 29 Jan 2022 19:22:02 +0000 (21:22 +0200)
* lisp/language/indian.el (malayalam-composable-pattern): Remove.
(script-regexp-alist): Remove 'malayalam-composable-pattern'.
Instead, pass any sequence of Malayalam codepoints to the shaping
engine.  (Bug#53625)

lisp/language/indian.el

index 614d0767e72101f3dc85e9d65dfe72383eb56934..971ecd7ca91282b28a0b577c0df15983d49404a1 100644 (file)
@@ -341,30 +341,6 @@ South Indian language Malayalam is supported in this language environment."))
      table))
   "Regexp matching a composable sequence of Kannada characters.")
 
-(defconst malayalam-composable-pattern
-  (let ((table
-        '(("A" . "[\u0D02\u0D03]")     ; SIGN ANUSVARA .. VISARGA
-          ("V" . "[\u0D05-\u0D14\u0D60\u0D61]")  ; independent vowel
-          ("C" . "[\u0D15-\u0D39]")              ; consonant
-          ("Y" . "[\u0D2F\u0D30\u0D32\u0D35]")   ; YA, RA, LA, VA
-          ("v" . "[\u0D3E-\u0D4C\u0D57\u0D62\u0D63]")  ; postbase matra
-          ("H" . "\u0D4D")                       ; SIGN VIRAMA
-          ("N" . "\u200C")                       ; ZWNJ
-          ("J" . "\u200D")                       ; ZWJ
-          ("X" . "[\u0D00-\u0D7F]"))))           ; all coverage
-    (indian-compose-regexp
-     (concat
-      ;; consonant-based syllables, or
-      "C\\(?:J?HJ?C\\)*\\(?:H[NJ]?\\|v?A?\\)\\|"
-      ;; syllables with an independent vowel, or
-      "V\\(?:J?HY\\)?v*?A?\\|"
-      ;; special consonant form, or
-      "JHY\\|"
-      ;; any other singleton characters
-      "X")
-     table))
-  "Regexp matching a composable sequence of Malayalam characters.")
-
 (let ((script-regexp-alist
        `((devanagari . ,devanagari-composable-pattern)
         (bengali . ,bengali-composable-pattern)
@@ -373,8 +349,7 @@ South Indian language Malayalam is supported in this language environment."))
         (oriya . ,oriya-composable-pattern)
         (tamil . ,tamil-composable-pattern)
         (telugu . ,telugu-composable-pattern)
-        (kannada . ,kannada-composable-pattern)
-        (malayalam . ,malayalam-composable-pattern))))
+        (kannada . ,kannada-composable-pattern))))
   (map-char-table
    #'(lambda (key val)
        (let ((slot (assq val script-regexp-alist)))
@@ -384,6 +359,11 @@ South Indian language Malayalam is supported in this language environment."))
              (list (vector (cdr slot) 0 #'font-shape-gstring))))))
    char-script-table))
 
+;; Malayalam: pass any sequence of characters to the shaping engine.
+(set-char-table-range composition-function-table '(#x0D00 . #x0D7F)
+                      `([,(purecopy "[\u0D00-\u0D7F]+")
+                         0 font-shape-gstring]))
+
 (provide 'indian)
 
 ;;; indian.el ends here