aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/language
diff options
context:
space:
mode:
authorEli Zaretskii2022-01-29 21:22:02 +0200
committerEli Zaretskii2022-01-29 21:22:02 +0200
commited3bbeb80db07d41747f0a046446ea3d3128c4bb (patch)
tree0cbb93713debedef3581f3bb859ed7dbb7a8d3b5 /lisp/language
parent5ef3a523425a77276ac524f3ef2a9563805f30c0 (diff)
downloademacs-ed3bbeb80db07d41747f0a046446ea3d3128c4bb.tar.gz
emacs-ed3bbeb80db07d41747f0a046446ea3d3128c4bb.zip
Fix rendering of Malayalam script
* 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)
Diffstat (limited to 'lisp/language')
-rw-r--r--lisp/language/indian.el32
1 files changed, 6 insertions, 26 deletions
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 614d0767e72..971ecd7ca91 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -341,30 +341,6 @@ South Indian language Malayalam is supported in this language environment."))
341 table)) 341 table))
342 "Regexp matching a composable sequence of Kannada characters.") 342 "Regexp matching a composable sequence of Kannada characters.")
343 343
344(defconst malayalam-composable-pattern
345 (let ((table
346 '(("A" . "[\u0D02\u0D03]") ; SIGN ANUSVARA .. VISARGA
347 ("V" . "[\u0D05-\u0D14\u0D60\u0D61]") ; independent vowel
348 ("C" . "[\u0D15-\u0D39]") ; consonant
349 ("Y" . "[\u0D2F\u0D30\u0D32\u0D35]") ; YA, RA, LA, VA
350 ("v" . "[\u0D3E-\u0D4C\u0D57\u0D62\u0D63]") ; postbase matra
351 ("H" . "\u0D4D") ; SIGN VIRAMA
352 ("N" . "\u200C") ; ZWNJ
353 ("J" . "\u200D") ; ZWJ
354 ("X" . "[\u0D00-\u0D7F]")))) ; all coverage
355 (indian-compose-regexp
356 (concat
357 ;; consonant-based syllables, or
358 "C\\(?:J?HJ?C\\)*\\(?:H[NJ]?\\|v?A?\\)\\|"
359 ;; syllables with an independent vowel, or
360 "V\\(?:J?HY\\)?v*?A?\\|"
361 ;; special consonant form, or
362 "JHY\\|"
363 ;; any other singleton characters
364 "X")
365 table))
366 "Regexp matching a composable sequence of Malayalam characters.")
367
368(let ((script-regexp-alist 344(let ((script-regexp-alist
369 `((devanagari . ,devanagari-composable-pattern) 345 `((devanagari . ,devanagari-composable-pattern)
370 (bengali . ,bengali-composable-pattern) 346 (bengali . ,bengali-composable-pattern)
@@ -373,8 +349,7 @@ South Indian language Malayalam is supported in this language environment."))
373 (oriya . ,oriya-composable-pattern) 349 (oriya . ,oriya-composable-pattern)
374 (tamil . ,tamil-composable-pattern) 350 (tamil . ,tamil-composable-pattern)
375 (telugu . ,telugu-composable-pattern) 351 (telugu . ,telugu-composable-pattern)
376 (kannada . ,kannada-composable-pattern) 352 (kannada . ,kannada-composable-pattern))))
377 (malayalam . ,malayalam-composable-pattern))))
378 (map-char-table 353 (map-char-table
379 #'(lambda (key val) 354 #'(lambda (key val)
380 (let ((slot (assq val script-regexp-alist))) 355 (let ((slot (assq val script-regexp-alist)))
@@ -384,6 +359,11 @@ South Indian language Malayalam is supported in this language environment."))
384 (list (vector (cdr slot) 0 #'font-shape-gstring)))))) 359 (list (vector (cdr slot) 0 #'font-shape-gstring))))))
385 char-script-table)) 360 char-script-table))
386 361
362;; Malayalam: pass any sequence of characters to the shaping engine.
363(set-char-table-range composition-function-table '(#x0D00 . #x0D7F)
364 `([,(purecopy "[\u0D00-\u0D7F]+")
365 0 font-shape-gstring]))
366
387(provide 'indian) 367(provide 'indian)
388 368
389;;; indian.el ends here 369;;; indian.el ends here