If your browser supports downloadable web fonts, this page will be displayed using Akhil HE. Otherwise, your browser's default Devanagari font may be used, and some examples may appear differently. See wofonts.com for more information about the Web Open Font Format (WOFF).
This page explains the Unicode control characters Zero Width Joiner (ZWJ) and Zero Width Non-Joiner (ZWNJ) and how they influence the shaping of ĐevaNāgarī text in OpenType fonts. The examples on this page are illustrated using the Akhil HE font, whose development prompted many of these observations.
Unicode ZWJ and ZWNJ in ĐevaNāgarī – Examples Using Akhil HE
Two Unicode format control characters are explained here using ĐevaNāgarī examples. These control characters are important for rendering ĐevaNāgarī text in general and when typesetting with Akhil HE in particular. They can be used to override the default conjunct formation. The SuNāgarī (sunaagaree) keyboard includes the ZWJ character (assigned to Shift+7, replacing '&') for convenient access.
- Zero Width Joiner (ZWJ)
- Zero Width Non-Joiner (ZWNJ)
Zero Width Joiner (ZWJ)
Unicode code point U+200D
Every ĐevaNāgarī consonant has an inherent vowel, 'a'. A consonant followed by a halanŧ (virāma) no longer carries this inherent vowel and is referred to throughout this page as a pure consonant. Such a consonant may participate in conjunct formation. Depending on the context, a pure consonant may be rendered as an explicit consonant with a visible virāma, as a half form, or as part of a conjunct.
In older references, a consonant followed by a halanŧ (virāma) is often referred to as a dead consonant.
In some situations, it is desirable to display a pure consonant as an explicit half-consonant instead of allowing it to merge into a conjunct. Inserting a ZWJ immediately after the halanŧ requests this behaviour from the shaping engine.
| Ex.1 |
This example shows that normally a pure consonant combines with the following consonant in a conjunct. त (ŧa) + ◌् (Halanŧ) + त (ŧa) = त्त (ŧŧa) In this case the त + ◌् creates a pure consonant which combines with the following consonant in the conjunct त्त along-with the base consonant त. If we use ZWJ just after the pure consonant, its half form त् is displayed before the base consonant त. त + ◌् + ZWJ + त = त्त (ŧŧa) |
|---|---|
| Ex.2 |
Generally a 'reph' is formed for pure consonant 'ra'. This reph is placed above the base consonant (य in following case). र (ra) + ◌् (Halanŧ) + य ('ya) = र्य (r'ya) Inserting ZWJ in this sequence requests the eyelash-ra form instead of Reph, where supported. Eyelash-ra is an alternative half form of र (ra) that is commonly used in Marāthī and some other Indic writing traditions. It resembles a short upward-curving stroke attached to the following consonant and should not be confused with the equals sign (=); the upper horizontal stroke belongs to the headline (Shirorekhā; शिरोरेखा). र + ् + ZWJ + य = र्य (r'ya with eyelash-ra) |
In Akhil HE, ZWJ is also used to access alternate conjunct forms. These alternate forms are generally not preferred in Saral Nāgarī for the reasons discussed below. If another font uses these forms as its default rendering, the inserted ZWJ characters may need to be removed.
| Ex.3 |
Normally, the preferred form chosen by the typographer is displayed. In the case of Akhil HE, the preferred form is determined by the Saral Nāgarī design principles. ड (Da) + ◌् (Halanŧ) + ड (Da) = ड्ड (Saral DDa) To get the conjuncts which are not preferred in Saral Nāgarī (but present in our font file,) we can use a ZWJ. ड + ् + ZWJ + ड = ड्ड (Conjunct DDa) |
|---|
Some other conjuncts available in our font files are 'ट्ट', 'द्द', 'ट्ठ', 'ड्ढ', 'न्न' . These conjuncts are formed vertically. These are kept as alternate forms instead of regular forms for two reasons.
- First - To keep text display (rendering) simple ('Saral'). These conjuncts descend too much below the baseline (which is an imaginary line over which all the Latin letters sit). These descended conjuncts require their own set of below base matras. If we start forming below-base conjuncts we will be making it difficult for a regular reader. Also we have to increase interline spacing (leading) which again is uneconomical (for printing on paper) and typographically less preferred.
- Second - These conjuncts make text less legible at @ smaller point sizes.
Akhil HE includes those conjuncts that are common, simple to draw, and easy to distinguish at normal reading sizes. Where appropriate, traditional conjunct forms have been slightly modified to improve legibility while remaining within the limits of typographical tolerance. In designing Akhil HE, readability at ordinary text sizes was given higher priority than preserving every traditional conjunct form.
These conjuncts which have been included in 'Saral Nāgarī' do not descend too much below base-line and do not make text less legible at @ smaller point sizes on computer screens.
Some additional conjuncts are nevertheless included in the Akhil HE glyph set as optional alternate forms.
Some glyphs have been redesigned to improve legibility and reduce ambiguity. For example the glyph for 'NNa' conjunct (न+्+न) which is formed in fonts of most foundries can be confused with Conjunct-TRa (त+्+र = त्र)
Akhil HE provides two distinct glyphs for this sequence:
न्न – The default glyph is formed automatically instead of separately rendering न् and न. It maintains a one-pixel gap between the two horizontal stems, improving clarity even at smaller text sizes.
न्न – This alternate glyph represents a novel glyph design introduced in Akhil HE and is available as an optional form.
Note: न्न्र (न+्+न+्+र) should generally be preferred over न्न्र (न+्+ZWJ+न+्+र). The latter sequence is included for completeness but is expected to have little practical use.
Akhil HE provides these two additional glyph variants (न्न and न्न), even though the default formation न्न (using न् and न) would also address the issue. These dedicated glyphs are also clearer and offer improved legibility, especially at smaller text sizes.
The formation न्न is produced with न+्+ZWJ+ZWJ+न. It can also be produced with न+्+ZWJ+ZWNJ+न. In Akhil HE, the first ZWJ produces the half form न् , while the second ZWJ (or ZWNJ) suppresses the alternate glyph न्न. This sequence is documented for completeness and is not intended for normal text.
In practice, you need not do anything. Just let the saral form न्न render by the sequence न+्+न .
Zero Width Non-Joiner (ZWNJ)
Unicode code point U+200C
ZWNJ is used to exclude pure consonants from forming conjuncts; it generally results in displaying explicit halanŧ.
The conjuncts formed automatically in Akhil HE follow the design principles of Saral Nāgarī. ZWNJ can be used to suppress the automatic formation of these conjuncts and instead display explicit half-consonants, including those otherwise represented by Rakar or Reph. Such rendering can be useful for transliterated text, phonetic notation, or other situations where the underlying character sequence should remain visually explicit.
Note: ZWNJ is required much less frequently than ZWJ and is therefore not assigned a dedicated key in the SuNāgarī keyboard. It is primarily intended for situations requiring finer control over glyph rendering.
| Ex.1 |
As we have seen in an example of ZWJ, the Reph is formed when we type Ra followed by Halanŧ as follows. र (ra) + ◌् (Halanŧ) + य ('ya) = र्य Inserting ZWNJ in this sequence stops formation of Reph. र + ् + ZWNJ + य = र्य Similarly - द (đa) + ◌् (Halanŧ) + म (Ma) = द्म while - द + ् + ZWNJ + म = द्म |
|---|---|
| Ex.2 |
This example shows use of ZWNJ for writing 'Saral' (Simple) & phonetically correct looking text. कंप्यूटर or कम्प्यूटर may also be written as कम्प्यूटर, which more explicitly represents the underlying phonetic structure. Similarly, ड्डि may be rendered as ड्डि. |
Comments, corrections, and examples from real-world usage are always welcome. My email ID is . Although this page is not updated frequently, I expect to revisit and expand it in second half of 2028.
Please enter your email and click 'Recommend It' to receive the address of this page and related pages in your inbox. You can then send this page to your friend(s).