;; ORYA-OTF.flt -- Font Layout Table for Oriya OpenType font
-;; Copyright (C) 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.
+;; Copyright (C) 2004, 2007, 2008 AIST (H15PRO112)
+;; See the end for copying conditions.
-;; 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.
+(font layouter orya-otf nil
+ (font (nil nil unicode-bmp :otf=orya=rphf)))
;;; <li> ORYA-OTF.flt
;;;
-;;; For Oriya OpenType fonts to draw the Oriya script. Tested with
-;;; utkalm.ttf <http://oriya.sarovar.org/download/utkalm.ttf.gz>
-
-(font layouter orya-otf nil
- (font (nil nil unicode-bmp :otf=orya=rphf)))
+;;; For Oriya OpenType fonts to draw the Oriya script.
(category
;; C: consonant (except for R, B and Y)
(0x0B3E ?p) ; VOWEL SIGN AA
(0x0B3F ?u) ; VOWEL SIGN I
(0x0B40 ?p) ; VOWEL SIGN II
- (0x0B41 0x0B43 ?b) ; VOWEL SIGN U .. VOCALIC R
+ (0x0B41 0x0B44 ?b) ; VOWEL SIGN U .. VOCALIC RR
(0x0B47 ?m) ; VOWEL SIGN E
(0x0B48 0x0B4C ?t) ; VOWEL SIGN AI .. AU
(0x0B4D ?H) ; SIGN VIRAMA
(0x0B5C 0x0B5D ?C) ; LETTER RRA .. RHA
(0x0B5F ?Y) ; LETTER YYA
(0x0B60 0x0B61 ?V) ; LETTER VOCALIC RR .. LL
+ (0x0B62 0x0B63 ?b) ; VOWEL SIGN VOCALIC L .. LL
(0x0B71 ?C) ; LETTER WA
(0x0B64 0x0B65 ?X) ; DANDA .. DOUBLE DANDA
(0x200C ?N) ; ZWNJ
(0x200D ?J) ; ZWJ
)
-;; Decompose two-part vowel signs.
-;; Move ZWJ before the consonant.
(generator
(0
(cond
+ ;; Decompose two-part vowel signs.
((0x0B48)
0x0B47 0x0B56)
((0x0B4B)
0x0B47 0x0B3E)
((0x0B4C)
0x0B47 0x0B57)
- ("(Cn?)(J)"
+ ;; Compose consonant and nukta.
+ ((0x0B21 0x0B3C)
+ 0x0B5C)
+ ((0x0B22 0x0B3C)
+ 0x0B5D)
+ ;; Move ZWJ before the consonant.
+ ("([CRBY]n?)(J)"
(2 =) (1 = *))
("." =))
*))
;; Syllable identification and reordering.
-;; Do not apply 'rphf' if a syllable begins with ZWJ.
+;; Do not apply 'rphf' if a syllable begins with a ZWJ.
(generator
(0
(cond
- ;; A syllable with ZWJ and a pre-base vowel sign.
+ ;; A syllable with a ZWJ and a pre-base vowel sign.
;;1 23 4 5 6 7
("(J)(([CRBY]n?H)*[CRBY]n?)(m)(u)?(p)?(a)?"
< | (1 =) (4 =) (2 pre-below) (5 =) (2 post) (6 =) (7 =) | >)
- ;; A syllable with ZWJ and a non-pre-base vowel sign.
+ ;; A syllable with a ZWJ and a non-pre-base vowel sign.
;;1 23 45 6 7
("(J)(([CRBY]n?H)*[CRBY]n?)(([bu])|(p))(a)?"
< | (1 =) (2 pre-below) (5 =) (2 post) (6 =) (7 =) | >)
- ;; A syllable with ZWJ and a vowel modifier, but without vowel signs.
+ ;; A syllable with a ZWJ and a vowel modifier, but without vowel signs.
;;1 23 4
("(J)(([CRBY]n?H)*[CRBY]n?)(a)"
< | (1 =) (2 pre-below) (2 post) (4 =) | >)
;; Add a ZWNJ explicitly when a syllable ends with a halant.
- ;;1 23 4 5
- ("(J)(([CRBY]n?H)*[CRBY]n?)(H)?(N)?"
+ ;;1 23 4
+ ("(J)(([CRBY]n?H)*[CRBY]n?)(HN?)?"
< | (1 =) (2 pre-below) (4 = 0x200C) (2 post) | >)
;; With a pre-base vowel sign, without a ZWJ.
< | (2 pre-below) (1 otf:orya=rphf) (2 post) (4 =) | >)
;; Add a ZWNJ explicitly when a syllable ends with a halant.
- ;;1 23 4 5
- ("(RH)?(([CRBY]n?H)*[CRBY]n?)(H)?(N)?"
+ ;;1 23 4
+ ("(RH)?(([CRBY]n?H)*[CRBY]n?)(HN?)?"
< | (2 pre-below) (1 otf:orya=rphf) (4 = 0x200C) (2 post) | >)
;; A syllable starting with an independent vowel.
(cond
("[CRBYnH]*[CRBn]H([YH]+)$"
(1 = *) 0x0B4D)
- ("Yn?H(YH)+$"
+ ("Yn?H([YH]+)$"
(1 = *) 0x0B4D)
(".+"
)))
(generator
(0
(cond
- ;; If a syllable contains a ZWNJ, render the preceding halant explicitly.
+ ;; If a syllable contains a ZWNJ, render the final halant explicitly.
(" ([^Z]+)(Z)([^N]*)(HN)([^ ]*) "
- | (1 otf:orya=nukt,akhn,half+) (2 =) (3 otf:orya=blwf+) (4 = =)
+ | (1 otf:orya=nukt,akhn,half,pres+) (2 =) (3 otf:orya=blwf+) (4 = =)
(5 otf:orya=pstf+) |)
(" (J?m?)([^Z]+)(Z)([^ ]*) "
- | (1 = *) (2 otf:orya=nukt,akhn,half+) (3 =) (4 otf:orya=blwf,pstf+) |)
-
- ("." =))
- *))
+ | (1 = *) (2 otf:orya=nukt,akhn,half,pres+) (3 =) (4 otf:orya=blwf,pstf+) |)
-;; Apply 'pres' to get pre-base conjuncts.
-(generator
- (0
- (cond
- (" (J?m?)([^Z]+)(Z)([^ ]*) "
- | (1 = *) (2 otf:orya=pres+) (3 =) (4 = *) |)
("." =))
*))
;; When the number of glyphs between a pre-base vowel sign and the
;; post-base mark is more than one, move the pre-base vowel sign
-;; before the base glyph.
+;; before the final glyph.
(generator
(0
(cond
(0
(cond
(" J([^ ]+) "
- (1 otf:orya=pres,abvs,pstp,haln))
+ (1 otf:orya=pres,abvs,pstp,haln+abvm,blwm,dist))
(" ([^ ]+) "
- (1 otf:orya=vatu,pres,abvs,blws,pstp,haln))
+ (1 otf:orya=vatu,pres,abvs,blws,pstp,haln+abvm,blwm,dist))
("."
- [ otf:orya=+ ]))
+ [ = ]))
*))
+;; Copyright (C) 2004, 2007, 2008
+;; 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: emacs-lisp
;; End: