From 098d86d57115097d259604be0b8526bfe19df0bd Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Sat, 22 Mar 2003 01:07:17 +0000 Subject: [PATCH] (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. --- lisp/language/indian.el | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/lisp/language/indian.el b/lisp/language/indian.el index 16435d7710d..993a084cf61 100644 --- a/lisp/language/indian.el +++ b/lisp/language/indian.el @@ -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 @@ 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 -- 2.11.4.GIT