changeset 50256:104cf4fa2a8e

(indian-font-foundry): New variable. (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.
author Kenichi Handa <handa@m17n.org>
date Sat, 22 Mar 2003 01:07:17 +0000
parents a716a67fdf9d
children 19c37f19c706
files lisp/language/indian.el
diffstat 1 files changed, 87 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/language/indian.el	Sat Mar 22 00:40:00 2003 +0000
+++ b/lisp/language/indian.el	Sat Mar 22 01:07:17 2003 +0000
@@ -45,6 +45,89 @@
 
 (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 @@
       (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