;; BENG-OTF.flt -- Font Layout Table for Bengali OpenType font
-;; Copyright (C) 2004
+;; Copyright (C) 2004, 2007
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H15PRO112
(generator
(0
(cond
+ ;; Special case. The sequence "C1 H N C2 m" is reordered as
+ ;; "C1 H m C2", not "m C1 H C2". Besides, "C1 H" is drawn in the
+ ;; halant-form.
+ ("([CRBY]n?H)N"
+ < |
+ (1 otf:beng=hln)
+ | >)
+
;; Case A-C are for those syllables that end with an explicit vowel
;; mark and/or a vowel modifier. They are divided into three cases
;; for the readability of regular expression. The leading
;; Case A : A syllable ending with a vowel modifier.
;;1 23 4 5 6 7
- ("(RH)?(([CRBY]n?H[NJ]?)*([CRBY]n?))([mbp]*)(t)?([Aa])"
+ ("(RH)?(([CRBY]n?HJ?)*([CRBY]n?))([mbp]*)(t)?([Aa])"
< |
(1 = =)
(2 set-marks)
;; Case B : A syllable ending with a two-part vowel.
;;1 23 4 5
- ("(RH)?(([CRBY]n?H[NJ]?)*([CRBY]n?))(t)"
+ ("(RH)?(([CRBY]n?HJ?)*([CRBY]n?))(t)"
< |
(1 = =)
(2 set-marks)
;; two-part vowel may be expressed with two vowel marks for
;; backward compatibility.
;;1 23 4 5
- ("(RH)?(([CRBY]n?H[NJ]?)*([CRBY]n?))([mbp]+)"
+ ("(RH)?(([CRBY]n?HJ?)*([CRBY]n?))([mbp]+)"
< |
(1 = =)
(2 set-marks)
;; with a consonant, analyse it for reordering in the next step.
;; Otherwise, just identify the syllable without changing anything.
;;1 23 4
- ("(RH)?(([CRBY]n?H[NJ]?)*[CRBY]n?)(HN|HJ|H)?"
+ ("(RH)?(([CRBY]n?HJ?)*[CRBY]n?)(HN|HJ|H)?"
< |
(1 = =)
(2 set-marks)
(cond
;; Ending with Y.
;;1 2 3 45 6
- ("([CRBY]n?(H[NJ]?Cn?)*)(H)(([RB]H)*)(Y)"
+ ("([CRBY]n?(HJ?Cn?)*)(H)(([RB]H)*)(Y)"
(1 = *) ; prebase & base
0x09FE ; mark #1
(4 = *) ; below consonants
(3 =)) ; moved HASANT
;; Ending with R or B.
;;1 2 3 45
- ("([CRBY]n?(H[NJ]?Cn?)*)(H)(([RB]H)*[RB])"
+ ("([CRBY]n?(HJ?Cn?)*)(H)(([RB]H)*[RB])"
(1 = *) ; prebase & base
0x09FE ; mark #1
(4 = *) ; below consonants
(0
(cond
;; Special case: a single consonant and a Halant.
- (" (.)xy(H[NJ]?) "
+ (" (.)xy(HJ?) "
|
0x09FE
(1 =)
;; that requires pre-base substitution in the following steps.
;; 1 2 3 4 5 6 7 8 9 10
- (" (RH)?([^ xy]+)x([^ y]*)y(YH)?(m)?(b)?(p)?(A)?(a)?(HN|HJ|H)? "
+ (" (RH)?([^ xy]+)x([^ y]*)y(YH)?(m)?(b)?(p)?(A)?(a)?(HJ|H)? "
|
(5 =) ; [Mpre]
;; Actually, the nukt feature is not necessary for Bengali because
;; One pre-base and base.
;; 1 23 4 5 6
- (" ([^x ]*)x((.H)([^NJ]))(H)?x([^ ]*) "
+ (" ([^x ]*)x((.H)([^J]))(H)?x([^ ]*) "
|
(1 = *)
0x09FE ; x