1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- (define-coding-system 'lao
- "8-bit encoding for ASCII (MSB=0) and LAO (MSB=1)."
- :coding-type 'charset
- :mnemonic ?L
- :charset-list '(lao))
- (set-language-info-alist
- "Lao" '((charset lao)
- (coding-system lao)
- (coding-priority lao)
- (input-method . "lao")
- (unibyte-display . lao)
- (features lao-util)
- (documentation . t)))
- (let ((consonant "ກ-ຮໜໝ")
- (tone "່-໌")
- (vowel-upper-lower "ັິ-ົໍ")
- (semivowel-lower "ຼ")
- (fallback-rule [nil 0 compose-gstring-for-graphic]))
-
-
- (dolist (l `((,vowel-upper-lower . "[c].[t]?")
- (,tone . "[c].")
- (,semivowel-lower . "[c].[v][t]?")
- (,semivowel-lower . "[c].[t]")))
- (let* ((chars (car l))
- (len (length chars))
-
- (regexp (mapconcat #'(lambda (c)
- (cond ((= c ?c) consonant)
- ((= c ?t) tone)
- ((= c ?v) vowel-upper-lower)
- (t (string c))))
- (cdr l) ""))
-
- (elt (list (vector regexp 1 'lao-composition-function)
- fallback-rule))
- ch)
- (dotimes (i len)
- (setq ch (aref chars i))
- (if (and (> i 1) (= (aref chars (1- i)) ?-))
-
- (set-char-table-range composition-function-table
- (cons (aref chars (- i 2)) ch) elt)
- (if (or (= (1+ i) len)
- (and (/= ch ?-) (/= (aref chars (1+ i)) ?-)))
-
- (set-char-table-range composition-function-table ch elt)))))))
- (provide 'lao)
|