From: ntakahas Date: Tue, 29 Jun 2004 10:52:27 +0000 (+0000) Subject: New file. X-Git-Tag: REL-1-1-0~90 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=907a71fb55fa52d68e54b230ec2fc6bd6d249b08;p=m17n%2Fm17n-db.git New file. --- diff --git a/TEL-OTF.flt b/TEL-OTF.flt new file mode 100644 index 0000000..f75c077 --- /dev/null +++ b/TEL-OTF.flt @@ -0,0 +1,138 @@ +;; TEL-OTF.flt -- Font Layout Table for Telugu OpenType fonts +;; Copyright (C) 2004 +;; 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., 59 Temple Place, Suite 330, Boston, MA +;; 02111-1307, USA. + +;;;
  • TEL-OTF.flt +;;; +;;; For Telugu OpenType fonts to draw Telugu. +;;; Designed for Pothana2000.ttf + +(category + ;; C: general consonant + ;; R: no below-base consonat (RRA, NNNA, LLLA) + ;; H: HALANT + ;; u: MATRA (above) + ;; b: MATRA (below) + ;; p: MATRA (post) + ;; t: MATRA (two-part) + ;; a: vowel modifier (post) + ;; V: independent vowel + ;; N: ZWNJ (ZERO WIDTH NON-JOINER) + ;; J: ZWJ (ZERO WIDTH JOINER) + ;; E: ELSE + ;; + (0x200C ?N) ; ZWNJ + (0x200D ?J) ; ZWJ + (0x0964 ?E) ; DANDA + (0x0965 ?E) ; DOUBLE DANDA + (0x0C00 0x0C7F ?E) ; ELSE + (0x0C01 0x0C03 ?a) ; post signs + (0x0C05 0x0C14 ?V) ; LETTER A .. LETTER AU + (0x0C15 0x0C39 ?C) ; LETTER KA .. LETTER HA + (0x0C29 ?R) ; LETTER NNNA + (0x0C31 ?R) ; LETTER RRA + (0x0C34 ?R) ; LETTER LLLA + (0x0C3E 0x0C40 ?u) ; VOWEL SIGN AA, I, II (above) + (0x0C41 0x0C44 ?p) ; VOWEL SIGN U, UU, R, RR (post) + (0x0C46 0x0C47 ?u) ; VOWEL SIGN E, EE (above) + (0x0C48 ?t) ; VOWEL SIGN AI (tow-part) + (0x0C4A 0x0C4C ?u) ; VOWEL SIGN O, OO, AU (above) + (0x0C4D ?H) ; SIGN VIRAMA (HALANT) + (0x0C55 ?u) ; LENGTH SIGN (above) + (0x0C56 ?b) ; AI LENGTH SIGN (below) + (0x0C60 0x0C61 ?V) ; LETTER VOCALIC RR, LL + (0x0C7E ?Y) ; internal use + (0x0C7F ?X) ; internal use + ) + +;; Step 1 : Syllable identification and Halant movement. +(generator + (0 + (cond + ;; A syllable containing a two-part vowel sign. + ("([CR](HC)*)(t)(a)?" + < | (1 move-base-Halant) (3 0x0C46 0x0C56) (4 =) | >) + + ;; A syllable ending with vowel signs and/or a vowel modifier. + ("([CR](HC)*)([ubp]+a?|a)" + < | (1 move-base-Halant) (3 = *) | >) + + ;; Forced Halant form + ("((RH)?(CH)*)(CH)N" + < | (1 move-base-Halant) | > + < | (4 move-base-Halant) | >) + + ;; Forced Half form + ("((RH)?(CH)*)(CH)J" + < | (1 move-base-Halant) > + < | (4 otf:telu=blwf) | >) + + ;; A syllable without a vowel sign nor a vowel modifier. + ("[CR](HC)*H?" + < | move-base-Halant | >) + + ;; A syllable starting with an independent vowel. + ("Va?" + < | = * | > ) + + ("." =)) + *) + + ;; Move Halant on the base consonant to the tail if the syllable ends + ;; with a consonant. + ;; A leading 0x0C7F means Halant movement. + ;; A leading 0x0C7E means a syllable ending with a Halant. + (move-base-Halant + (cond + (".*H$" + 0x0C7E = *) + ("(.)(H)(.*)" + 0x0C7F (1 =) (3 = *) (2 =)) + (".*" + = *)))) + +;; Step 2 : Move Matra if applicable. +;; The base consonant in a Halant-ending syllable is changed into Halant form. +(generator + (0 + (cond + ;; 1 2 3 4 5 6 + (" X(.)([CH]*)(u)?(b)?(p)?(a)? " + | (1 =) (3 =) (4 =) (5 =) (2 = *) (6 =) |) + (" Y(..)([^ ]*) " + | (1 otf:telu=haln) (2 = *) |) + ("." =)) + *)) + +;; Step 3 : Drive OTF tables. +(generator + (0 + (cond + (" ([^ ]*) " + (1 otf:telu)) + ("." + [ otf:telu=+ ])) + *)) + +;; Local Variables: +;; mode: emacs-lisp +;; End: