(indian-font-foundry): New variable.
authorKenichi Handa <handa@m17n.org>
Sat, 22 Mar 2003 01:07:17 +0000 (01:07 +0000)
committerKenichi Handa <handa@m17n.org>
Sat, 22 Mar 2003 01:07:17 +0000 (01:07 +0000)
(indian-script-language-alist): New variable.
(indian-font-char-index-table): New variable.
(indian-font-char): New function.
(indian-font-char-range): New function.
(font-ccl-encoder-alist): Add entry for AKRUTI font.

lisp/language/indian.el

index 16435d7..993a084 100644 (file)
 
 (define-coding-system-alias 'devanagari 'in-is13194)
 
+(defvar indian-font-foundry 'cdac
+  "Font foundry for Indian characters.
+Currently supported foundries are `cdac' and `akruti'.")
+
+(defvar indian-script-language-alist
+  "Alist of Indian scripts vs the corresponding language list and font foundry.
+Each element has this form:
+
+  (SCRIPT LANGUAGE-LIST FONT-FOUNDRY)
+
+SCRIPT is one of Indian script names.
+
+LANGUAGE-LIST is a list of Indian langauge names SCRIPT is used for.
+The list is in the priority order.
+
+FONT-FOUNDRY is a font foundry representing a group of Indian
+fonts.  If the value is nil, the value of `indian-font-foundry'
+is used."
+  '((devanagari (hindi sanskrit) nil)
+    (bengali (bengali assamese) nil)
+    (gurmukhi (punjabi) nil)
+    (gujarati (gujarati) nil)
+    (oriya (oriya) nil)
+    (tamil (tamil) nil)
+    (telugu (telugu) nil)
+    (kannada (kannada) nil)
+    (malayalam (malayalam) nil)))
+
+(defconst indian-font-char-index-table
+  '(                                   ; for which language(s)
+    ;; CDAC fonts
+    (#x0000 . cdac:dv-ttsurekh)                ; hindi, etc
+    (#x0100 . cdac:sd-ttsurekh)                ; sanskrit
+    (#x0200 . cdac:bn-ttdurga)         ; bengali
+    (#x0300 . cdac:as-ttdurga)         ; assamese
+    (#x0400 . cdac:pn-ttamar)          ; punjabi
+    (#x0500 . cdac:gj-ttavantika)      ; gujarati
+    (#x0600 . cdac:or-ttsarala)                ; oriya
+    (#x0700 . cdac:tm-ttvalluvar)      ; tamil
+    (#x0800 . cdac:tl-tthemalatha)     ; telugu
+    (#x0900 . cdac:kn-ttuma)           ; kannada
+    (#x0A00 . cdac:ml-ttkarthika)      ; malayalam
+
+    ;; AKRUTI fonts
+    (#x0B00 . akruti:dev)              ; hindi, etc
+    (#x0C00 . akruti:bng)              ; bengali
+    (#x0D00 . akruti:pnj)              ; punjabi
+    (#x0E00 . akruti:guj)              ; gujarati
+    (#x0F00 . akruti:ori)              ; oriya
+    (#x1000 . akruti:tml)              ; tamil
+    (#x1100 . akruti:tlg)              ; telugu
+    (#x1200 . akruti:knd)              ; kannada
+    (#x1300 . akruti:mal)              ; malayalam
+    )
+  "Aliat of indices of `indian-glyph' character vs Indian font identifiers.
+Each element has this form: (INDEX . FONT-IDENTIFIER)
+
+INDEX is an index number of the first character in the charset
+`indian-glyph' assigned for glyphs in the font specified by
+FONT-IDENTIFIER.  Currently FONT-IDENTIFIERs are defined for CDAC
+and AKRUTI font groups.")
+  
+(defun indian-font-char (index font-identifier)
+  "Return character of charset `indian-glyph' made from glyph index INDEX.
+FONT-IDENTIFIER is an identifier of an Indian font listed in the
+variable `indian-font-char-index-table'.  It specifies which
+font INDEX is for."
+  (if (or (< index 0) (> index 255))
+      (error "Invalid glyph index: %d" index))
+  (let ((start (car (rassq font-identifier indian-font-char-index-table))))
+    (if (not start)
+       (error "Unknown font identifier: %s" font-identifier))
+    (setq index (+ start index))
+    (make-char 'indian-glyph (+ (/ index 96) 32) (+ (% index 96) 32))))
+
+;; Return a range of characters (cons of min and max character) of the
+;; charset `indian-glyph' for displaying SCRIPT in LANGUAGE by a font
+;; of FOUNDRY.
+
+(defun indian-font-char-range (font-identifier)
+  (cons (indian-font-char 0 font-identifier)
+       (indian-font-char 255 font-identifier)))
+        
 (defvar indian-script-table
   '[
     devanagari
@@ -82,6 +165,10 @@ The default value is `devanagari'.")
       (cons (cons "-CDAC" 'ccl-encode-indian-glyph-font)
            font-ccl-encoder-alist))
 
+(setq font-ccl-encoder-alist
+      (cons (cons "-AKRUTI" 'ccl-encode-indian-glyph-font)
+           font-ccl-encoder-alist))
+
 (provide 'indian)
 
 ;;; indian.el ends here