1 ;;; lao.el --- support for Lao -*- coding: utf-8; no-byte-compile: t -*-
3 ;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4 ;; Free Software Foundation, Inc.
5 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
6 ;; 2007, 2008, 2009, 2010
7 ;; National Institute of Advanced Industrial Science and Technology (AIST)
8 ;; Registration Number H14PRO021
10 ;; National Institute of Advanced Industrial Science and Technology (AIST)
11 ;; Registration Number H13PRO009
13 ;; Keywords: multilingual, Lao
15 ;; This file is part of GNU Emacs.
17 ;; GNU Emacs is free software: you can redistribute it and/or modify
18 ;; it under the terms of the GNU General Public License as published by
19 ;; the Free Software Foundation, either version 3 of the License, or
20 ;; (at your option) any later version.
22 ;; GNU Emacs is distributed in the hope that it will be useful,
23 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
24 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 ;; GNU General Public License for more details.
27 ;; You should have received a copy of the GNU General Public License
28 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
34 (define-coding-system 'lao
35 "8-bit encoding for ASCII (MSB=0) and LAO (MSB=1)."
40 (set-language-info-alist
44 (input-method .
"lao")
45 (unibyte-display . lao
)
49 (let ((consonant "ກ-ຮໜໝ")
51 (vowel-upper-lower "ັິ-ົໍ")
53 (fallback-rule [nil
0 compose-gstring-for-graphic
]))
54 ;; target characters regexp
55 ;; ----------------- ------
56 (dolist (l `((,vowel-upper-lower .
"[c].[t]?")
58 (,semivowel-lower .
"[c].[v][t]?")
59 (,semivowel-lower .
"[c].[t]")))
60 (let* ((chars (car l
))
62 ;; Replace `c', `t', `v' to consonant, tone, and vowel.
63 (regexp (mapconcat #'(lambda (c)
64 (cond ((= c ?c
) consonant
)
66 ((= c ?v
) vowel-upper-lower
)
69 ;; Element of composition-function-table.
70 (elt (list (vector regexp
1 'lao-composition-function
)
74 (setq ch
(aref chars i
))
75 (if (and (> i
1) (= (aref chars
(1- i
)) ?-
))
76 ;; End of character range.
77 (set-char-table-range composition-function-table
78 (cons (aref chars
(- i
2)) ch
) elt
)
79 (if (or (= (1+ i
) len
)
80 (and (/= ch ?-
) (/= (aref chars
(1+ i
)) ?-
)))
81 ;; A character not forming a range.
82 (set-char-table-range composition-function-table ch elt
)))))))
86 ;; arch-tag: ba540fd9-6352-4449-a9cd-669afd21fa57