Bengali Script
Bengali writes both Bengali and Assamese, and Microsoft's own OpenType documentation states its family tie plainly: the script is "closely related to the Devanagari script." It inherits Devanagari's reph, its pre-base vowel reordering, and its habit of ligating consonant clusters into fused conjuncts, but it kept a leaner vowel inventory than some of this series' other scripts, and it built its own vocabulary for consonant clusters: named subjoined forms called ra-phala and ya-phala, plus a single dedicated letter, khanda ta, for a consonant that needs no vowel and no virama at all. This article covers its letters, that inheritance, and what a font needs to render it correctly.
Bengali, in one screen
An abugida closely related to Devanagari, sharing its reph and pre-base reordering while naming its own subjoined consonant forms.
Bengali's letter count sits close to Devanagari's, trimmed in one place and extended in another. It has twelve independent vowels rather than the fourteen this series found in Telugu, Kannada, and Malayalam, because Bengali, like Devanagari, keeps a single e and a single o instead of splitting each into short and long forms. Its consonant set numbers thirty-two, plus three further letters built with a nukta, a dot placed below a base glyph, for sounds that entered Bengali through Persian and Arabic contact: ড় (ṛa), ঢ় (ṛha), and য় (ẏa).
Microsoft's own OpenType documentation states the relationship without qualification: "The Bengali script, closely related to the Devanagari script, is used to write Bengali, Assamese and Manipuri." The shaping mechanics carry over directly. Bengali uses reph for an initial, non-base "Ra," reorders its e vowel sign to a pre-base position, and ligates consonant clusters into fused conjuncts, the same three behaviors this series already tracked through Devanagari and, on the western side of the family, Gujarati. Where Bengali quietly diverges is its vowel count: twelve independent vowels, the same lean set Devanagari uses, rather than the fourteen-vowel Dravidian pattern this series found in Telugu, Kannada, and Malayalam.
What sets Bengali apart is the vocabulary it uses for its own consonant clusters. Rather than treat every subjoined consonant as an anonymous "conjunct," Bengali typographic tradition names specific, fixed shapes: ra-phala, a below-base "Ra" hanging off the preceding consonant, and ya-phala, a post-base "Ya" that attaches to the right. Both appear constantly in ordinary text, common enough that a font's design has to get their exact shape right, not just approximate it. Bengali also adds a device no sibling script in this series has built quite this way: khanda ta, a single dedicated letter for a word-final "ta" that carries no vowel and needs no virama to show it. It is a much narrower cousin of Malayalam's nine chillu letters, dedicated codepoints for a bare consonant, but Bengali built only one, for the one consonant common enough to need it.
Set the same word in Devanagari and a single horizontal stroke would run across the top, linking every letter into one continuous line. Bengali letters keep a flat top edge of their own, a visible trace of the same design logic, but the stroke stops at each letter instead of joining the next one.
বাংলা, the word "Bangla," shows the pattern plainly: ব, া, ং, ল, and the final া each carry their own short top stroke, but nothing draws a line across the whole word the way Devanagari's shirorekha would. Zoom in on a longer word and the same thing holds: every letter sits independently on the baseline, related in style to its neighbors but not physically joined to them.
Bengali's dependent vowel signs attach in three different positions relative to their consonant, and one of them splits into two visible pieces that wrap the consonant from both sides, the same two-part construction this series first described for Devanagari.
কা is the simple case: the vowel sign attaches after its consonant, in logical reading order. কে reorders to the left, the same pre-base pattern Devanagari and Gujarati use for their own e-class vowel signs. কো is the more distinctive case: the o vowel sign is really two combining marks, one that reorders before the consonant and one that stays after it, and a font has to draw and position both halves so they read as a single, unified sign rather than two disconnected marks.
These three mechanisms are where Bengali's own typographic identity shows up most clearly: two named subjoined forms that recur throughout ordinary text, and one dedicated letter that sidesteps the virama entirely for a single, common consonant.
প্রেম ("love") shows ra-phala doing its ordinary work: "Ra" preceded by a consonant that doesn't ligate with it drops to a below-base hook rather than staying full-height in reading order. বিদ্যা ("education") shows the ya-phala counterpart, "Ya" attaching as a post-base form after its consonant. হঠাৎ ("suddenly") ends in khanda ta, a single atomic glyph, not a visible ত plus virama, standing in for a bare final consonant the way ordinary Bengali spelling expects.
Bengali runs on the same Indic shaping engine as Devanagari and Gujarati, with two features doing extra work: below-base substitution for ra-phala, and post-base substitution for ya-phala, both named explicitly in Microsoft's own feature documentation for this script.
| Feature | Tag | What it builds here |
|---|---|---|
| Localized forms | locl | Swaps in Bengali-specific glyph shapes where they differ from the script default. |
| Nukta forms | nukt | Substitutes the three nukta-marked consonants, ড়, ঢ়, য়. |
| Akhand ligatures | akhn | Required ligatures, like ক্ষ, formed before any reordering happens. |
| Reph | rphf | Substitutes the above-base form of an initial, non-base "Ra." |
| Half forms | half | Builds the reduced pre-base form of a consonant that ligates into the next. |
| Below-base forms | blwf | Substitutes ra-phala, the below-base "Ra" form. |
| Post-base forms | pstf | Substitutes ya-phala, the post-base "Ya" form. |
| Vattu variants | vatu | Ligates a full or half consonant with a below-base ra-phala into one fused glyph. |
| Conjunct forms | cjct | Forms remaining ligatures where the first consonant has no dedicated half form. |
A font that already handles Devanagari's reph and conjunct ligation is partway to a working Bengali implementation. What's specific to Bengali is drawing ra-phala and ya-phala as their own named shapes rather than treating them as generic stacked forms, and giving khanda ta its own glyph entirely separate from a visible ত + ্ sequence.
| Symptom | Likely cause | Fix |
|---|---|---|
| Ra-phala or ya-phala render as a generic stacked blob instead of the traditional hook shape | Font lacks dedicated blwf / pstf glyphs for these forms | Draw ra-phala and ya-phala as their own named shapes, matching Bengali typographic convention |
| Khanda ta shows as ত with a visible virama instead of a single letter | Font is missing or mismapping the glyph for U+09CE | Draw khanda ta as its own atomic glyph, distinct from ত plus virama |
| Text written for Assamese shows tofu or falls back to the Bengali-only letters | Font doesn't cover ৰ and ৱ (U+09F0, U+09F1) | Include both Assamese-specific letters even when the primary target is Bengali |
| Reph and a pre-base e vowel sign collide in the same syllable | No coordinated anchoring between the two above-base elements | Test words that carry both together, not each mechanism in isolation |
| The split o or au vowel sign renders as two disconnected marks instead of one wraparound sign | The two components aren't positioned or anchored as a matched pair | Test কো and কৌ explicitly, not just single-piece vowel signs |
- 1Draw all 32 consonants, the 3 nukta consonants, and 12 independent vowels at consistent weight.
- 2Draw dedicated ra-phala and ya-phala glyphs matching traditional shapes, not generic fallback stacks.
- 3Draw khanda ta as its own atomic glyph, fully separate from a visible ত + virama sequence.
- 4Include the Assamese-specific ৰ and ৱ, even if the primary target is Bengali-only text.
- 5Implement reph, pre-base e-matra reordering, and the split o/au vowel signs, and test them together.
- 6Test across shaping engines and at multiple sizes and weights before calling the script done.
Copy these into a test document. Each targets a different part of the shaping pipeline covered above.