;; TAML-CDAC.flt -- Font Layout Table for Tamil (C-DAC font)
;; Copyright (C) 2003, 2004, 2007  AIST (H15PRO112)
;; See the end for copying conditions.

(font layouter taml-cdac nil
      (font (nil tm-ttvalluvar apple-roman)))

;;; <li> TAML-CDAC.flt
;;;
;;; For the font TMVL0ntt.ttf (developped by C-DAC, encoding is ISFOC)
;;; to draw Tamil script.  The font is available at:
;;; <ul>
;;; <li>	infopage: http://www.iiit.net/ltrc/iscii/FAQ.htm#SEC2.1
;;; <li> download: http://www.iiit.net/ltrc/iscii/iscii_plugin_linux.tar.gz
;;; </ul>

(category
 ;; C: CONSONANT
 ;; I: INDEPENDENT VOWEL
 ;; R: DEPENDENT VOWEL RIGHT
 ;; L: DEPENDENT VOWEL LEFT
 ;; B: DEPENDENT VOWEL LEFT AND RIGHT TYPE 1
 ;; b: DEPENDENT VOWEL LEFT AND RIGHT TYPE 2
 ;; V: VIRAMA
 ;; E: ELSE
 ;;
 (0x0B83	?E)
 (0x0B85 0x0B8A	?I)
 (0x0B8E 0x0B90	?I)
 (0x0B92 0x0B94	?I)
 (0x0B95	?C)
 (0x0B99 0x0B9A	?C)
 (0x0B9C	?C)
 (0x0B9E 0x0B9F	?C)
 (0x0BA3 0x0BA4	?C)
 (0x0BA8 0x0BAA	?C)
 (0x0BAE 0x0BB5	?C)
 (0x0BB7 0x0BB9	?C)
 (0x0BBE 0x0BC2	?R)
 (0x0BC6 0x0BC8	?L)
 (0x0BCA	?B)
 (0x0BCB	?b)
 (0x0BCC	?B)
 (0x0BCD	?V)
 (0x0BD7	?E))

;; CHAR->GLYPH STAGE
(generator
 (0
  (cond
   ("((CV)*)(C)(R)"
    (1 consonant-virama *)
    (3 consonant)
    (4 dependent-vowel))
   ("((CV)*)(C)(L)"
    < |
    (4 dependent-vowel)
    (1 consonant-virama *)
    (3 consonant)
    | >)
   ("((CV)*)(C)(B)"
    < |
    0xAA
    (1 consonant-virama *)
    (3 consonant)
    (4 dependent-vowel)
    | >)
   ("((CV)*)(C)(b)"
    < |
    0xAB
    (1 consonant-virama *)
    (3 consonant)
    (4 dependent-vowel)
    | >)
   ("CV"
    < consonant-virama >)
   ("[RLBb]"
    isolated-dependent-vowel)
   ("." independent consonant))
  *)

 (consonant-virama
  (cond
   ((0x0B95 0x0BCD)	0xE8 0xA2)	; k
   ((0x0B99 0x0BCD)	0xE9 0xA2)	; n^
   ((0x0B9A 0x0BCD)	0xEA 0xA2)	; c
   ((0x0B9E 0x0BCD)	0xEB 0xA2)	; n~
   ((0x0B9F 0x0BCD)	0xEC 0xA2)	; t.
   ((0x0BA3 0x0BCD)	0xED 0xA2)	; n.
   ((0x0BA4 0x0BCD)	0xEE 0xA2)	; t
   ((0x0BA8 0x0BCD)	0xEF 0xA2)	; n
   ((0x0BAA 0x0BCD)	0xF0 0xA2)	; p
   ((0x0BAE 0x0BCD)	0xF1 0xA2)	; m
   ((0x0BAF 0x0BCD)	0xF2 0xA2)	; y
   ((0x0BB0 0x0BCD)	0xF3 0xA2)	; r
   ((0x0BB2 0x0BCD)	0xF4 0xA2)	; l
   ((0x0BB5 0x0BCD)	0xF5 0xA2)	; v
   ((0x0BB4 0x0BCD)	0xF6 0xA2)	; l_
   ((0x0BB3 0x0BCD)	0xF7 0xA2)	; l.
   ((0x0BB1 0x0BCD)	0xF8 0xA2)	; r_
   ((0x0BA9 0x0BCD)	0xA1)		; n_
   ((0x0BB8 0x0BCD)	0x76)		; s
   ((0x0BB7 0x0BCD)	0x77)		; s'
   ((0x0B9C 0x0BCD)	0x78)		; j
   ((0x0BB9 0x0BCD)	0x79)		; h
   ))

 (consonant
  (cond
   ((0x0B95)	0xE8)			; k
   ((0x0B99)	0xE9)			; n^
   ((0x0B9A)	0xEA)			; c
   ((0x0B9E)	0xEB)			; n~
   ((0x0B9F)	0xEC)			; t.
   ((0x0BA3)	0xED)			; n.
   ((0x0BA4)	0xEE)			; t
   ((0x0BA8)	0xEF)			; n
   ((0x0BAA)	0xF0)			; p
   ((0x0BAE)	0xF1)			; m
   ((0x0BAF)	0xF2)			; y
   ((0x0BB0)	0xF3)			; r
   ((0x0BB2)	0xF4)			; l
   ((0x0BB5)	0xF5)			; v
   ((0x0BB4)	0xF6)			; l_
   ((0x0BB3)	0xF7)			; l.
   ((0x0BB1)	0xF8)			; r_
   ((0x0BA9)	0xF9)			; n_
   ((0x0BB8)	0xFA)			; s
   ((0x0BB7)	0xFB)			; s'
   ((0x0B9C)	0xFC)			; j
   ((0x0BB9)	0xFD)			; h
   ))
   
 (dependent-vowel
  (cond
   ((0x0BBE)	0xA3)			; a~
   ((0x0BBF)	0xA4)			; i
   ((0x0BC0)	0xA6)			; i~
   ((0x0BC1)	0xA7)			; u
   ((0x0BC2)	0xA8)			; u~
   ((0x0BC6)	0xAA)			; e
   ((0x0BC7)	0xAB)			; e~
   ((0x0BC8)	0xAC)			; ai
   ((0x0BCA)	0xA3)			; o (right part)
   ((0x0BCB)	0xA3)			; o~ (right part)
   ((0x0BCC)	0xF7)			; au (right part)
   ))

 (independent
  (cond
   ;; VOWELS
   ((0x0B85)	0xDC)			; a
   ((0x0B86)	0xDD)			; a~
   ((0x0B87)	0xDE)			; i
   ((0x0B88)	0xDF)			; i~
   ((0x0B89)	0xE0)			; u
   ((0x0B8A)	0xE1)			; u~
   ((0x0B8E)	0xE2)			; e
   ((0x0B8F)	0xE3)			; e~
   ((0x0B90)	0xE4)			; ai
   ((0x0B92)	0xE5)			; o
   ((0x0B93)	0xE6)			; o~
   ((0x0B94)	0xE5 0xF7)		; au
   ;; VISARGA
   ((0x0B83)	0xE7)
   ))

 (isolated-dependent-vowel
  (cond
   ((0x0BBE)	0x81 0xA3)		; a~
   ((0x0BBF)	0x81 0xA4)		; i
   ((0x0BC0)	0x81 0xA6)		; i~
   ((0x0BC1)	0x81 0xA7)		; u
   ((0x0BC2)	0x81 0xA8)		; u~
   ((0x0BC6)	0xAA 0x81)		; e
   ((0x0BC7)	0xAB 0x81)		; e~
   ((0x0BC8)	0xAC 0x81)		; ai
   ((0x0BCA)	0xAA 0x81 0xA3)		; o
   ((0x0BCB)	0xAB 0x81 0xA3)		; o~
   ((0x0BCC)	0xAA 0x81 0xF7)		; au
   )))

;; LIGATURE STAGE
(category
 ;; C: CONSONANT (except for K, R, S)
 ;; K: CONSONANT K
 ;; R: CONSONANT R
 ;; S: CONSONANT S'
 ;; V: LIGATURE VOWEL (except for I,i)
 ;; I: DEPENDENT VOWEL I
 ;; i: DEPENDENT VOWEL I~
 ;; L: LEFT PART OF VOWEL 
 ;; v: VIRAMA
 ;; E: ELSE
 ;;
 (0x00 0xFF	?E)
 (0xA2		?v)
 (0xE9 0xFD	?C)
 (0xE8		?K)
 (0xF3		?R)
 (0xFB		?S)
 (0xA4		?I)			; i
 (0xA6		?i)			; i~
 (0xA7 0xA8	?V)			; u, u~
 (0xAA 0xAC	?L)
 )

(generator
 (0
  (cond
   ;; 1  23      4      5    6
   (" (L)(([CKRS](v)?)*)(KvS)(.)? "
    (2 = *) (1 =) (5 0xFE) (6 =))
   ;; 1  23      4      5
   (" (L)(([CKRS](v)?)*)([CKRS].?) "
    (2 = *) (1 =) (5 = =))
   ("KvS[Iiv]?"
    ligature-ks)
   ("[CKRS][IiV]"
    ligature = =)
   ("SvRi"	0xFF)
   ("."
    =))
  *)
     
 (ligature-ks
  (cond
   ((0xE8 0xA2 0xFB 0xA4)	0x56)	; ksi
   ((0xE8 0xA2 0xFB 0xA6)	0x72)	; ksi~
   ((0xE8 0xA2 0xFB 0xA2)	0x7A)	; ks
   ((0xE8 0xA2 0xFB)		0xFE)	; ks
   ))

 (ligature
  (cond
   ((0xE8 0xA2 0x76 0xA2)	0x7A)	; ks.

   ((0xE8 0xA4)		0x41)		; ki
   ((0xE9 0xA4)		0x42)		; n^i
   ((0xEA 0xA4)		0x43)		; ci
   ((0xEB 0xA4)		0x44)		; n~i
   ((0xEC 0xA4)		0xAE)		; t.i
   ((0xED 0xA4)		0x45)		; n.i
   ((0xEE 0xA4)		0x46)		; ti
   ((0xEF 0xA4)		0x47)		; ni
   ((0xF0 0xA4)		0x48)		; pi
   ((0xF1 0xA4)		0x49)		; mi
   ((0xF2 0xA4)		0x4A)		; yi
   ((0xF3 0xA4)		0x4B)		; ri
   ((0xF4 0xA4)		0x4C)		; li
   ((0xF5 0xA4)		0x4D)		; vi
   ((0xF6 0xA4)		0x4E)		; l_i
   ((0xF7 0xA4)		0x4F)		; l.i
   ((0xF8 0xA4)		0x50)		; r_i
   ((0xF9 0xA4)		0x51)		; n_i
   ((0xFA 0xA4)		0x52)		; si
   ((0xFB 0xA4)		0x53)		; s'i
   ((0xFC 0xA4)		0x54)		; ji
   ((0xFD 0xA4)		0x55)		; hi

   ((0xE8 0xA6)		0x57)		; ki~
   ((0xE9 0xA6)		0x58)		; n^i~
   ((0xEA 0xA6)		0x59)		; ci~
   ((0xEB 0xA6)		0x5A)		; n~i~
   ((0xEC 0xA6)		0xAF)		; t.i~
   ((0xED 0xA6)		0x61)		; n.i~
   ((0xEE 0xA6)		0x62)		; ti~
   ((0xEF 0xA6)		0x63)		; ni~
   ((0xF0 0xA6)		0x64)		; pi~
   ((0xF1 0xA6)		0x65)		; mi~
   ((0xF2 0xA6)		0x66)		; yi~
   ((0xF3 0xA6)		0x67)		; ri~
   ((0xF4 0xA6)		0x68)		; li~
   ((0xF5 0xA6)		0x69)		; vi~
   ((0xF6 0xA6)		0x6A)		; l_i~
   ((0xF7 0xA6)		0x6B)		; l.i~
   ((0xF8 0xA6)		0x6C)		; r_i~
   ((0xF9 0xA6)		0x6D)		; n_i~
   ((0xFA 0xA6)		0x6E)		; si~
   ((0xFB 0xA6)		0x6F)		; s'i~
   ((0xFC 0xA6)		0x70)		; ji~
   ((0xFD 0xA6)		0x71)		; hi~

   ((0xE8 0xA7)		0xB0)		; ku
   ((0xE9 0xA7)		0xB1)		; n^u
   ((0xEA 0xA7)		0xB2)		; cu
   ((0xEB 0xA7)		0xB3)		; n~u
   ((0xEC 0xA7)		0xB4)		; t.u
   ((0xED 0xA7)		0xB5)		; n.u
   ((0xEE 0xA7)		0xB6)		; tu
   ((0xEF 0xA7)		0xB8)		; nu
   ((0xF0 0xA7)		0xB9)		; pu
   ((0xF1 0xA7)		0xBA)		; mu
   ((0xF2 0xA7)		0xBB)		; yu
   ((0xF3 0xA7)		0xBC)		; ru
   ((0xF4 0xA7)		0xBD)		; lu
   ((0xF5 0xA7)		0xBE)		; vu
   ((0xF6 0xA7)		0xBF)		; l_u
   ((0xF7 0xA7)		0xC0)		; l.u
   ((0xF8 0xA7)		0xC1)		; r_u
   ((0xF9 0xA7)		0xC2)		; n_u

   ((0xE8 0xA8)		0xC3)		; ku~
   ((0xE9 0xA8)		0xC4)		; n^u~
   ((0xEA 0xA8)		0xC5)		; cu~
   ((0xEB 0xA8)		0xC6)		; n~u~
   ((0xEC 0xA8)		0xC7)		; t.u~
   ((0xED 0xA8)		0xC8)		; n.u~
   ((0xEE 0xA8)		0xC9)		; tu~
   ((0xEF 0xA8)		0xCB)		; nu~
   ((0xF0 0xA8)		0xCC)		; pu~
   ((0xF1 0xA8)		0xCD)		; mu~
   ((0xF2 0xA8)		0xCE)		; yu~
   ((0xF3 0xA8)		0xCF)		; ru~
   ((0xF4 0xA8)		0xD6)		; lu~
   ((0xF5 0xA8)		0xD7)		; vu~
   ((0xF6 0xA8)		0xD8)		; l_u~
   ((0xF7 0xA8)		0xD9)		; l.u~
   ((0xF8 0xA8)		0xDA)		; r_u~
   ((0xF9 0xA8)		0xDB)		; n_u~
   ))
 )

;; Copyright (C) 2003, 2004, 2007
;;   National Institute of Advanced Industrial Science and Technology (AIST)
;;   Registration Number H15PRO112

;; This file is part of the m17n database; a sub-part of the m17n
;; library.

;; The m17n library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public License
;; as published by the Free Software Foundation; either version 2.1 of
;; the License, or (at your option) any later version.

;; The m17n library is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; Lesser General Public License for more details.

;; You should have received a copy of the GNU Lesser General Public
;; License along with the m17n library; if not, write to the Free
;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;; Local Variables:
;; mode: lisp
;; End:
