| Microsoft Typography | Developer information | Specifications | OpenType font development | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Bengali OpenType Specification | Terms | Shaping | Features | Other | Appendix | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
The features listed below have been defined to create the basic forms for the languages that are supported on Bengali systems. Regardless of the model an application chooses for supporting layout of complex scripts, Uniscribe requires a fixed order for executing features within a run of text to consistently obtain the proper basic form. This is achieved by calling features one-by-one in the standard order listed below. The order of the lookups within each feature is also very important. For more information on lookups and defining features in OpenType fonts, see Encoding feature information in the OpenType font development section. The standard order for applying Bengali features encoded in OpenType fonts:
Feature Tag: "init" This feature takes nominal (full) forms of consonants and produces initial forms when the glyph is at the beginning of a word: Cf -> Cf-init The initial form displays a glyph variant form that does not have a connecting bar on the leading side of the glyph. All initial forms must be based on an input context consisting of the full form of consonants. The initial form applies to the following Unicode letters: As a user types each character, the text-processing application will reshape the glyph or glyph cluster, which is displayed, as illustrated below. Initial feature applied:
Feature Tag: "nukt" This feature takes nominal (full) forms of consonants and produces nukta forms: Cf + Nukta -> Kf-nukta The nukta alters the way a preceding consonant is pronounced. Many of the nukta forms have been defined as separate glyphs in Unicode, with their own code points. All nukta forms must be based on an input context consisting of the full form of consonants. All consonants in a font must have an associated nukta form, and nukta forms must exist in the font for all glyphs with akhand forms as well. As a user types each character, the text-processing application will reshape the glyph or glyph cluster, which is displayed, as illustrated below. Nukta feature applied:
Feature Tag: "akhn" This feature creates an akhand ligature glyph from two consonants in nominal forms separated by a halant: Cf + H + Cf -> Af The input context for the akhand feature always consists of the full form of the consonant. Example of the Akhand feature applied:
Feature Tag: "rphf" Applying this feature produces the reph glyph: Ra + H -> Reph If the first consonant of the cluster consists of the (full form of Ra + Halant), this feature substitutes the combining-mark form of Reph. In addition, the glyph that represents the combining-mark form of Reph is repositioned in the glyph string: it is attached to the final base glyph of the consonant cluster. The input context for the Reph feature always consists of the full form of Ra + Halant. Example of Reph feature applied:
Feature Tag: "blwf" Applying this feature produces below-base forms of consonants. Kf + H -> Ks The input context for the 'below-base form' feature must always consist of the full form of the consonant + Halant. The feature 'below-base form' is applied to consonants having below-base forms and following the base consonant. The exception is vattu, which may appear below half forms as well as below the base glyph. The feature 'below-base form' will be applied to all such occurrences of Ra as well. If a ligature is required between the vattu glyph and the preceding consonant, it will be handled by the feature 'Vattu Variants'. As a user types each character, the text-processing application will reshape the glyph or glyph cluster, which is displayed, as illustrated below. Example of blwf feature applied:
Feature Tag: "half" Applying this feature gives us half forms - forms of consonants used in pre-base position. Half forms must exist for all consonants in the font, and half forms of nukta consonants and Akhand consonants also must exist. Use the halant form for consonants that do not have distinct shapes for half forms. Kf + H -> Kh This feature is not applied to the base glyph even if the syllable ends with a halant. Example of the "half" feature applied:
Feature Tag: "pstf" Applying this feature gives us post-base forms. Examples include 'Bengali Ya'. Kf + H -> Kp Example of the "pstf" feature:
Feature Tag: "vatu" Vattu variants are formed when combining consonants with the vattu mark. Vattu ligatures can be either half or full form, and fonts must contain both. Kh + V -> Lh-vattu Kf + V -> Lf-vattu Vattu is a below-base form of Ra that can occur (and form ligatures) anywhere in the syllable and not just after the base glyph. Since it is an exception we treat it here as such. The input context for the 'vattu variants' feature must always consist of a consonant (in full or half form) + vattu glyph. Very often a specific, context-dependent shape is required when vattu mark is combining with other consonants. We advise font developers to form ligatures of the consonant with the vattu glyph in all such cases, with lookup formats shown above. Example of the "vatu" feature applied:
Feature Tags: "pres", "abvs", "blws", "psts" All previous features have dealt with language features only, dedicated to forming glyph shapes dictated by the languages. The remaining shaping features cover optional features. These optional features range from those that will exist in every font to rare typographical ornaments. It is important to stress that all features operate only within one orthographic syllable. Since the language features do not limit typographical processing , Uniscribe passes the entire syllable to the OTL Services library. Uniscribe does not strictly specify the format of lookup tables to use or their inputs, allowing for context-dependent processing of any of the conjuncts and forms below. The OTL Services library processes the syllable "left to right", executing lookups in the order that they are specified in the font. First, pre-base substitutions will be handled, then below-base, above-base and then post-base substitutions. Therefore a font developer should first take care of all ligatures to the left of the base glyph and then working to the right, substitute below-bases, above-bases and then finally post-base elements. The lookups in the font should be ordered in the same way. With every new element and feature, the following operations should be considered, as appropriate, in this order:
At every feature step, one should take into account all ligatures and forms that were produced by previous steps. In general, at this point the syllable being shaped will have one of the following forms:
Feature Tag: "pres" Pre-base consonant conjuncts This feature produces conjuncts with half forms, the type most common in Bengali. The examples below are common, but you may define lookups for other forms as well. {Kh} + Kf -> Lf {Kh} + Lf -> Lf If forms of pre-base consonants need to be changed (e.g. changing a half form to a halant form in a certain context) it is handled with this feature as well. Example using the "pres" feature:
Pre-base Matra conjuncts This feature produces the correct shape of I-Matra and also may take care of pre-base matra ligatures. For example, Mpre + {Kh} + Kf -> correct form of Mpre or a ligature Mpre + {Kh} + Lf -> correct form of Mpre or a ligature
Feature Tag: "abvs" Above-base vowel modifiers and Reph conjuncts This feature produces the correct typographic shape when a Reph or above-base vowel modifier interacts with the base glyph. Examples using the "abvs" feature:
Feature Tag: "blws" Below-base consonant conjuncts This feature produces conjuncts of the base glyph with below-base consonants. For example, Kf + {Ks} -> Lf Specific context-dependent forms or below-base consonants are handled by this lookup as well.
This feature produces matra ligatures with the base consonants. For example, Kf + Msub -> Ligature Lf + Msub -> Ligature In the presence of below-base consonants, the below-base matra can be used for a ligature with them or change shape as well.
Feature Tag: "psts" Post-base consonant conjuncts This feature produces ligatures of the base glyph with post-base forms of consonants. Example of "psts" feature:
This feature produces the correct typographic shape when a post-base matra forms a ligature with the base glyph. Note: This feature will be executed prior to any 'above-base' features.
This feature produces different forms of post-base vowel modifiers, including the visarga.
Feature Tag: "haln" This feature produces the halant form of the base glyph in syllables ending with a halant. Kf + H -> Khalant Lf + H -> Lhalant Halant forms can also be created by positioning the halant as a below-base mark on the base glyph. This feature is applied only on the base glyph and the following halant. "Halant Form of Consonant" feature applied:
Feature Tag: "abvm" This feature positions all above-base marks on the base glyph or the post-base matra. The best method for encoding this feature in an OpenType font is to use a chaining context positioning lookup that triggers mark-to-base and mark-to-mark attachments for below-base marks. Example with "abvm" feature applied:
Feature Tag: "blwm" This feature positions all below-base marks on the base glyph. The best method for encoding this feature in an OpenType font is to use a chaining context positioning lookup that triggers mark-to-base and mark-to-mark attachments for below-base marks. Example with "blwm" feature applied:
Feature Tag: "dist" This feature covers all other positioning lookups defining various distances between glyphs, such as kerning between pre- and post-base elements (like Visarga) and the base glyph.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Bengali OpenType Specification | Terms | Shaping | Features | Other | Appendix | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Microsoft Typography | Developer information | Specifications | OpenType font development | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||