From b9e3d8cd09c959cd996a55ed89f3fe7b645dd71a Mon Sep 17 00:00:00 2001 From: ntakahas Date: Thu, 2 Jun 2005 06:20:39 +0000 Subject: [PATCH] New file. --- MLYM-RACHANA.flt | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 MLYM-RACHANA.flt diff --git a/MLYM-RACHANA.flt b/MLYM-RACHANA.flt new file mode 100644 index 0000000..1f62f62 --- /dev/null +++ b/MLYM-RACHANA.flt @@ -0,0 +1,127 @@ +;; MLYM-RACHANA.flt -- Font Layout Table for Malayalam Rachana font +;; Copyright (C) 2005 +;; 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. + +;;;
  • MLYM-RACHANA.flt +;;; +;;; For the Rachana Malayalam fonts to draw the traditional Malayalam +;;; script. This fonts handles virtually all ligatures with the AKHN +;;; feature without character reordering. + +;; The first stage is to extract a syllable and re-order characters. +(category + ;; C: consonant + ;; H: HALANT + ;; m: MATRA (Mpre) + ;; p: MATRA (Mpost) + ;; t: MATRA (two-part: Mpre+Mpost) + ;; A: vowel modifier (post) (ANUSVARA and VISARGA) + ;; V: independent vowel + ;; E: else (all other independnt characters) + (0x0D00 0x0D7F ?E) ; else + (0x0D02 0x0D03 ?A) ; ANUSVARA & VISARGA + (0x0D05 0x0D14 ?V) ; independent vowel + (0x0D15 0x0D39 ?C) ; consonant + (0x0D3E 0x0D43 ?p) ; dependent vowel (Mpost) + (0x0D46 0x0D48 ?m) ; dependent vowel (Mpre) + (0x0D4A 0x0D4C ?t) ; dependent vowel (two-part) + (0x0D4D ?H) ; VIRAMA (HALANT) + (0x0D57 ?p) ; dependent vowel (Mpost) + (0x0D60 ?V) ; VOCALIC RR + (0x0D61 ?V) ; VOCALIC LL + (0x0D7F ?x) ; Internal use + (0x200C ?N) ; ZERO WIDTH NON-JOINER + (0x200D ?J) ; ZERO WIDTH JOINER + ) + +;; Step 0. Syllable identification. +(generator + (0 + (cond + ;; Halant + ZWNJ -- forced explicit halant. + ("((CH)*C)HN" + < | (1 otf:mlym=akhn,psts,haln) 0x0D4D | >) + + ;; Halant + ZWJ -- forced cillaksaram. + ("(CH)*(CH)J" + < | (1 otf:mlym=akhn,psts,haln) (2 otf:mlym=haln) | >) + + ;; Pre-consonant vowel is temporarily moved to the leftmost + ;; position to permit consonant ligature. + ("((CH)*C)(m)(A?)" + < | (3 =) (1 otf:mlym=akhn,psts,haln) 0x0D7F (4 =) | >) + + ;; Two-part vowel sign. + ("((CH)*C)(t)(A?)" + < | (3 pre) (1 otf:mlym=akhn,psts,haln) 0x0D7F (3 post) (4 =) | >) + + ;; Post-consonant vowel sign and/or vowel modifier. + ("((CH)*C(pA?|A))" + < | (1 otf:mlym=akhn,psts,haln) | >) + + ;; No vowel sign. + ("((CH)*C(H?))" + < | (1 otf:mlym=akhn,psts,haln) | >) + + ;; A syllable starting with an independent vowel. + ("(VA?)" + < | (1 = *) | >) + + ;; Other independent character. + ("." =)) + *) + + ;; Former part of two-part vowel sign. + (pre + (cond + ((0x0D4A) 0x0D46) + ((0x0D4B) 0x0D47) + ((0x0D4C) 0x0D46))) + + ;; Latter part of two-part vowel sign. + (post + (cond + ((0x0D4A) 0x0D3E) + ((0x0D4B) 0x0D3E) + ((0x0D4C) 0x0D57)))) + +;; Step 1. Move Mpre to the left of base consonant(-cluster). +(generator + (0 + (cond + (" (m)([^x]*)([^x])x([^ ]*) " + (2 = *) (1 =) (3 =) (4 = *)) + ("." + =)) + *)) + +;; Step 2. Finalise. +(generator + (0 + (cond + (" ([^ ]*) " (1 otf:mlym=+)) + ("." =)) + *)) + +;; Local Variables: +;; mode: emacs-lisp +;; End: -- 1.7.10.4