diff options
| author | Kenichi Handa | 2008-02-22 01:49:10 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2008-02-22 01:49:10 +0000 |
| commit | cdbe6a039d5bb5a1655f3ab4cbe1a5c042b96b4c (patch) | |
| tree | 1943bb3d737bfdd774259b14a44a681c108ec629 | |
| parent | cc8d131137a4c3767f0b4a7d342781a5c0afa14f (diff) | |
| download | emacs-cdbe6a039d5bb5a1655f3ab4cbe1a5c042b96b4c.tar.gz emacs-cdbe6a039d5bb5a1655f3ab4cbe1a5c042b96b4c.zip | |
(indian-font-foundry)
(indian-script-language-alist, indian-font-char-index-table)
(indian-font-char, indian-font-char-range, indian-script-table)
(indian-default-script, indian-composable-pattern): Delete them.
("Devanagari", "Kannada", "Malayalam", "Tamil"): Definitions of
language environments moved to here.
("Bengali", "Punjabi", "Gujarati", "Oriya", "Telugu"): New
language environments.
| -rw-r--r-- | lisp/language/indian.el | 212 |
1 files changed, 91 insertions, 121 deletions
diff --git a/lisp/language/indian.el b/lisp/language/indian.el index 8bceb0ac008..fdd903376c5 100644 --- a/lisp/language/indian.el +++ b/lisp/language/indian.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; indian.el --- Indian languages support -*- coding: iso-2022-7bit; -*- | 1 | ;;; indian.el --- Indian languages support -*- coding: utf-8; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 | 3 | ;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; Free Software Foundation, Inc. |
| @@ -6,7 +6,8 @@ | |||
| 6 | ;; National Institute of Advanced Industrial Science and Technology (AIST) | 6 | ;; National Institute of Advanced Industrial Science and Technology (AIST) |
| 7 | ;; Registration Number H14PRO021 | 7 | ;; Registration Number H14PRO021 |
| 8 | 8 | ||
| 9 | ;; Maintainer: KAWABATA, Taichi <kawabata@m17n.org> | 9 | ;; Maintainer: Kenichi Handa <handa@m17n.org> |
| 10 | ;; KAWABATA, Taichi <kawabata@m17n.org> | ||
| 10 | ;; Keywords: multilingual, i18n, Indian | 11 | ;; Keywords: multilingual, i18n, Indian |
| 11 | 12 | ||
| 12 | ;; This file is part of GNU Emacs. | 13 | ;; This file is part of GNU Emacs. |
| @@ -28,8 +29,8 @@ | |||
| 28 | 29 | ||
| 29 | ;;; Commentary: | 30 | ;;; Commentary: |
| 30 | 31 | ||
| 31 | ;; This file defines in-is13194 coding system and relationship between | 32 | ;; This file contains definitions of Indian language environments, and |
| 32 | ;; indian-glyph character-set and various CDAC fonts. | 33 | ;; setups for displaying the scrtipts used there. |
| 33 | 34 | ||
| 34 | ;;; Code: | 35 | ;;; Code: |
| 35 | 36 | ||
| @@ -44,120 +45,91 @@ | |||
| 44 | 45 | ||
| 45 | (define-coding-system-alias 'devanagari 'in-is13194-devanagari) | 46 | (define-coding-system-alias 'devanagari 'in-is13194-devanagari) |
| 46 | 47 | ||
| 47 | (defvar indian-font-foundry 'cdac | 48 | (set-language-info-alist |
| 48 | "Font foundry for Indian characters. | 49 | "Devanagari" '((charset unicode) |
| 49 | Currently supported foundries are `cdac' and `akruti'.") | 50 | (coding-system utf-8) |
| 50 | 51 | (coding-priority utf-8) | |
| 51 | (defvar indian-script-language-alist | 52 | (input-method . "dev-aiba") |
| 52 | '((devanagari (hindi sanskrit) nil) | 53 | (documentation . "\ |
| 53 | (bengali (bengali assamese) nil) | 54 | Such languages using Devanagari script as Hindi and Marathi |
| 54 | (gurmukhi (punjabi) nil) | 55 | are supported in this language environment.")) |
| 55 | (gujarati (gujarati) nil) | 56 | '("Indian")) |
| 56 | (oriya (oriya) nil) | 57 | |
| 57 | (tamil (tamil) nil) | 58 | (set-language-info-alist |
| 58 | (telugu (telugu) nil) | 59 | "Bengali" '((charset unicode) |
| 59 | (kannada (kannada) nil) | 60 | (coding-system utf-8) |
| 60 | (malayalam (malayalam) nil)) | 61 | (coding-priority utf-8) |
| 61 | "Alist of Indian scripts vs the corresponding language list and font foundry. | 62 | (input-method . "bengali-itrans") |
| 62 | Each element has this form: | 63 | (documentation . "\ |
| 63 | 64 | Such languages using Bengali script as Bengali and Assamese | |
| 64 | (SCRIPT LANGUAGE-LIST FONT-FOUNDRY) | 65 | are supported in this language environment.")) |
| 65 | 66 | '("Indian")) | |
| 66 | SCRIPT is one of Indian script names. | 67 | |
| 67 | 68 | (set-language-info-alist | |
| 68 | LANGUAGE-LIST is a list of Indian langauge names SCRIPT is used for. | 69 | "Punjabi" '((charset unicode) |
| 69 | The list is in the priority order. | 70 | (coding-system utf-8) |
| 70 | 71 | (coding-priority utf-8) | |
| 71 | FONT-FOUNDRY is a font foundry representing a group of Indian | 72 | (input-method . "punjabi-itrans") |
| 72 | fonts. If the value is nil, the value of `indian-font-foundry' | 73 | (documentation . "\ |
| 73 | is used.") | 74 | North Indian language Punjabi is supported in this language environment.")) |
| 74 | 75 | '("Indian")) | |
| 75 | (defconst indian-font-char-index-table | 76 | |
| 76 | '( ; for which language(s) | 77 | (set-language-info-alist |
| 77 | ;; CDAC fonts | 78 | "Gujarati" '((charset unicode) |
| 78 | (#x0000 . cdac:dv-ttsurekh) ; hindi, etc | 79 | (coding-system utf-8) |
| 79 | (#x0100 . cdac:sd-ttsurekh) ; sanskrit | 80 | (coding-priority utf-8) |
| 80 | (#x0200 . cdac:bn-ttdurga) ; bengali | 81 | (input-method . "gujarati-itrans") |
| 81 | (#x0300 . cdac:tm-ttvalluvar) ; tamil | 82 | (documentation . "\ |
| 82 | (#x0400 . cdac:tl-tthemalatha) ; telugu | 83 | North Indian language Gujarati is supported in this language environment.")) |
| 83 | (#x0500 . cdac:as-ttdurga) ; assamese | 84 | '("Indian")) |
| 84 | (#x0600 . cdac:or-ttsarala) ; oriya | 85 | |
| 85 | (#x0700 . cdac:kn-ttuma) ; kannada | 86 | (set-language-info-alist |
| 86 | (#x0800 . cdac:ml-ttkarthika) ; malayalam | 87 | "Oriya" '((charset unicode) |
| 87 | (#x0900 . cdac:gj-ttavantika) ; gujarati | 88 | (coding-system utf-8) |
| 88 | (#x0A00 . cdac:pn-ttamar) ; punjabi | 89 | (coding-priority utf-8) |
| 89 | 90 | (input-method . "oriya-itrans") | |
| 90 | ;; AKRUTI fonts | 91 | (documentation . "\ |
| 91 | (#x0B00 . akruti:dev) ; hindi, etc | 92 | Such languages using Oriya script as Oriya, Khonti, and Santali |
| 92 | (#x0C00 . akruti:bng) ; bengali | 93 | are supported in this language environment.")) |
| 93 | (#x0D00 . akruti:pnj) ; punjabi | 94 | '("Indian")) |
| 94 | (#x0E00 . akruti:guj) ; gujarati | 95 | |
| 95 | (#x0F00 . akruti:ori) ; oriya | 96 | (set-language-info-alist |
| 96 | (#x1000 . akruti:tml) ; tamil | 97 | "Tamil" '((charset unicode) |
| 97 | (#x1100 . akruti:tlg) ; telugu | 98 | (coding-system utf-8) |
| 98 | (#x1200 . akruti:knd) ; kannada | 99 | (coding-priority utf-8) |
| 99 | (#x1300 . akruti:mal) ; malayalam | 100 | (input-method . "tamil-itrans") |
| 100 | ) | 101 | (documentation . "\ |
| 101 | "Alist of indices of `indian-glyph' character vs Indian font identifiers. | 102 | South Indian Language Tamil is supported in this language environment.")) |
| 102 | Each element has this form: (INDEX . FONT-IDENTIFIER) | 103 | '("Indian")) |
| 103 | 104 | ||
| 104 | INDEX is an index number of the first character in the charset | 105 | (set-language-info-alist |
| 105 | `indian-glyph' assigned for glyphs in the font specified by | 106 | "Telugu" '((charset unicode) |
| 106 | FONT-IDENTIFIER. Currently FONT-IDENTIFIERs are defined for CDAC | 107 | (coding-system utf-8) |
| 107 | and AKRUTI font groups.") | 108 | (coding-priority utf-8) |
| 108 | 109 | (input-method . "telugu-itrans") | |
| 109 | (defun indian-font-char (index font-identifier) | 110 | (documentation . "\ |
| 110 | "Return character of charset `indian-glyph' made from glyph index INDEX. | 111 | South Indian Language Telugu is supported in this language environment.")) |
| 111 | FONT-IDENTIFIER is an identifier of an Indian font listed in the | 112 | '("Indian")) |
| 112 | variable `indian-font-char-index-table'. It specifies which | 113 | |
| 113 | font INDEX is for." | 114 | (set-language-info-alist |
| 114 | (if (or (< index 0) (> index 255)) | 115 | "Kannada" '((charset unicode) |
| 115 | (error "Invalid glyph index: %d" index)) | 116 | (coding-system mule-utf-8) |
| 116 | (let ((start (car (rassq font-identifier indian-font-char-index-table)))) | 117 | (coding-priority mule-utf-8) |
| 117 | (if (not start) | 118 | (input-method . "kannada-itrans") |
| 118 | (error "Unknown font identifier: %s" font-identifier)) | 119 | (sample-text . "Kannada (ಕನ್ನಡ) ನಮಸ್ಕಾರ") |
| 119 | (setq index (+ start index)) | 120 | (documentation . "\ |
| 120 | (make-char 'indian-glyph (+ (/ index 96) 32) (+ (% index 96) 32)))) | 121 | Kannada language and script is supported in this language |
| 121 | 122 | environment.")) | |
| 122 | ;; Return a range of characters (cons of min and max character) of the | 123 | '("Indian")) |
| 123 | ;; charset `indian-glyph' for displaying SCRIPT in LANGUAGE by a font | 124 | |
| 124 | ;; of FOUNDRY. | 125 | (set-language-info-alist |
| 125 | 126 | "Malayalam" '((charset unicode) | |
| 126 | (defun indian-font-char-range (font-identifier) | 127 | (coding-system utf-8) |
| 127 | (cons (indian-font-char 0 font-identifier) | 128 | (coding-priority utf-8) |
| 128 | (indian-font-char 255 font-identifier))) | 129 | (input-method . "malayalam-itrans") |
| 129 | 130 | (documentation . "\ | |
| 130 | (defvar indian-script-table | 131 | South Indian language Malayalam is supported in this language environment.")) |
| 131 | '[ | 132 | '("Indian")) |
| 132 | devanagari | ||
| 133 | sanskrit | ||
| 134 | bengali | ||
| 135 | tamil | ||
| 136 | telugu | ||
| 137 | assamese | ||
| 138 | oriya | ||
| 139 | kannada | ||
| 140 | malayalam | ||
| 141 | gujarati | ||
| 142 | punjabi | ||
| 143 | ] | ||
| 144 | "Vector of Indian script names.") | ||
| 145 | |||
| 146 | (let ((len (length indian-script-table)) | ||
| 147 | (i 0)) | ||
| 148 | (while (< i len) | ||
| 149 | (put (aref indian-script-table i) 'indian-glyph-code-offset (* 256 i)) | ||
| 150 | (setq i (1+ i)))) | ||
| 151 | |||
| 152 | (defvar indian-default-script 'devanagari | ||
| 153 | "Default script for Indian languages. | ||
| 154 | Each Indian language environment sets this value | ||
| 155 | to one of `indian-script-table' (which see). | ||
| 156 | The default value is `devanagari'.") | ||
| 157 | |||
| 158 | (defvar indian-composable-pattern | ||
| 159 | (make-char-table nil) | ||
| 160 | "Char table of regexps for composable Indian character sequence.") | ||
| 161 | 133 | ||
| 162 | (let ((script-regexp-alist | 134 | (let ((script-regexp-alist |
| 163 | '((devanagari . "[\x900-\x9FF\x200C\x200D]+") | 135 | '((devanagari . "[\x900-\x9FF\x200C\x200D]+") |
| @@ -168,8 +140,7 @@ The default value is `devanagari'.") | |||
| 168 | (tamil . "[\xB80-\xBFF\x200C\x200D]+") | 140 | (tamil . "[\xB80-\xBFF\x200C\x200D]+") |
| 169 | (telugu . "[\xC00-\xC7F\x200C\x200D]+") | 141 | (telugu . "[\xC00-\xC7F\x200C\x200D]+") |
| 170 | (kannada . "[\xC80-\xCFF\x200C\x200D]+") | 142 | (kannada . "[\xC80-\xCFF\x200C\x200D]+") |
| 171 | (malayalam . "[\xD00-\xD7F\x200C\x200D]+") | 143 | (malayalam . "[\xD00-\xD7F\x200C\x200D]+")))) |
| 172 | (sinhala . "[\xD80-\xDFF\x200C\x200D]+")))) | ||
| 173 | (map-char-table #'(lambda (key val) | 144 | (map-char-table #'(lambda (key val) |
| 174 | (let ((slot (assq val script-regexp-alist))) | 145 | (let ((slot (assq val script-regexp-alist))) |
| 175 | (if slot | 146 | (if slot |
| @@ -177,7 +148,6 @@ The default value is `devanagari'.") | |||
| 177 | composition-function-table key | 148 | composition-function-table key |
| 178 | (list (cons (cdr slot) 'font-shape-text)))))) | 149 | (list (cons (cdr slot) 'font-shape-text)))))) |
| 179 | char-script-table)) | 150 | char-script-table)) |
| 180 | |||
| 181 | 151 | ||
| 182 | (provide 'indian) | 152 | (provide 'indian) |
| 183 | 153 | ||