# Devanagari character tables #
This document lists the per-character shaping information needed to
[shape Devanagari text](../opentype-shaping-devanagari.md).
**Contents**
- [Devanagari character table](#devanagari-character-table)
- [Devanagari Extended character table](#devanagari-extended-character-table)
- [Vedic Extensions character table](#vedic-extensions-character-table)
- [Miscellaneous character table](#miscellaneous-character-table)
## Devanagari character table ##
Devanagari glyphs should be classified as in the following
table. Codepoints in the Devanagari block with no assigned meaning are
designated as _unassigned_ in the _Unicode category_ column.
Assigned codepoints with a _null_ in the _Shaping class_
column evoke no special behavior from the shaping engine. Note that
this does include some valid codepoints, such as currency marks,
punctuation, and other symbols.
> Note: the `NUMBER` and `SYMBOL` _Shaping classes_ are important
> during syllable identification, but generally evoke no further
> special behavior during the rest of the shaping process.
The _Mark-placement subclass_ column indicates mark-placement
positioning for codepoints in the _Mark_ category. Assigned, non-mark
codepoints have a _null_ in this column and evoke no special
mark-placement behavior. Marks tagged with [Mn] in the _Unicode
category_ column are categorized as non-spacing; marks tagged with
[Mc] are categorized as spacing-combining.
Some codepoints in the following table use a _Shaping class_ that
differs from the codepoint's Unicode _General Category_. The _Shaping
class_ takes precedence during OpenType shaping, as it captures more
specific, script-aware behavior.
:::{table} Devanagari character table
| Codepoint | Unicode category | Shaping class | Mark-placement subclass | Glyph |
|:----------|:-----------------|:------------------|:---------------------------|:-----------------------------|
|`U+0900` | Mark [Mn] | BINDU | TOP_POSITION | ऀ Inverted Candrabindu|
|`U+0901` | Mark [Mn] | BINDU | TOP_POSITION | ँ Candrabindu |
|`U+0902` | Mark [Mn] | BINDU | TOP_POSITION | ं Anusvara |
|`U+0903` | Mark [Mc] | VISARGA | RIGHT_POSITION | ः Visarga |
|`U+0904` | Letter | VOWEL_INDEPENDENT | _null_ | ऄ Short A |
|`U+0905` | Letter | VOWEL_INDEPENDENT | _null_ | अ A |
|`U+0906` | Letter | VOWEL_INDEPENDENT | _null_ | आ Aa |
|`U+0907` | Letter | VOWEL_INDEPENDENT | _null_ | इ I |
|`U+0908` | Letter | VOWEL_INDEPENDENT | _null_ | ई Ii |
|`U+0909` | Letter | VOWEL_INDEPENDENT | _null_ | उ U |
|`U+090A` | Letter | VOWEL_INDEPENDENT | _null_ | ऊ Uu |
|`U+090B` | Letter | VOWEL_INDEPENDENT | _null_ | ऋ Vocalic R |
|`U+090C` | Letter | VOWEL_INDEPENDENT | _null_ | ऌ Vocalic L |
|`U+090D` | Letter | VOWEL_INDEPENDENT | _null_ | ऍ Candra E |
|`U+090E` | Letter | VOWEL_INDEPENDENT | _null_ | ऎ Short E |
|`U+090F` | Letter | VOWEL_INDEPENDENT | _null_ | ए E |
| | | | |
|`U+0910` | Letter | VOWEL_INDEPENDENT | _null_ | ऐ Ai |
|`U+0911` | Letter | VOWEL_INDEPENDENT | _null_ | ऑ Candra O |
|`U+0912` | Letter | VOWEL_INDEPENDENT | _null_ | ऒ Short O |
|`U+0913` | Letter | VOWEL_INDEPENDENT | _null_ | ओ O |
|`U+0914` | Letter | VOWEL_INDEPENDENT | _null_ | औ Au |
|`U+0915` | Letter | CONSONANT | _null_ | क Ka |
|`U+0916` | Letter | CONSONANT | _null_ | ख Kha |
|`U+0917` | Letter | CONSONANT | _null_ | ग Ga |
|`U+0918` | Letter | CONSONANT | _null_ | घ Gha |
|`U+0919` | Letter | CONSONANT | _null_ | ङ Nga |
|`U+091A` | Letter | CONSONANT | _null_ | च Ca |
|`U+091B` | Letter | CONSONANT | _null_ | छ Cha |
|`U+091C` | Letter | CONSONANT | _null_ | ज Ja |
|`U+091D` | Letter | CONSONANT | _null_ | झ Jha |
|`U+091E` | Letter | CONSONANT | _null_ | ञ Nya |
|`U+091F` | Letter | CONSONANT | _null_ | ट Tta |
| | | | |
|`U+0920` | Letter | CONSONANT | _null_ | ठ Ttha |
|`U+0921` | Letter | CONSONANT | _null_ | ड Dda |
|`U+0922` | Letter | CONSONANT | _null_ | ढ Ddha |
|`U+0923` | Letter | CONSONANT | _null_ | ण Nna |
|`U+0924` | Letter | CONSONANT | _null_ | त Ta |
|`U+0925` | Letter | CONSONANT | _null_ | थ Tha |
|`U+0926` | Letter | CONSONANT | _null_ | द Da |
|`U+0927` | Letter | CONSONANT | _null_ | ध Dha |
|`U+0928` | Letter | CONSONANT | _null_ | न Na |
|`U+0929` | Letter | CONSONANT | _null_ | ऩ Nnna |
|`U+092A` | Letter | CONSONANT | _null_ | प Pa |
|`U+092B` | Letter | CONSONANT | _null_ | फ Pha |
|`U+092C` | Letter | CONSONANT | _null_ | ब Ba |
|`U+092D` | Letter | CONSONANT | _null_ | भ Bha |
|`U+092E` | Letter | CONSONANT | _null_ | म Ma |
|`U+092F` | Letter | CONSONANT | _null_ | य Ya |
| | | | |
|`U+0930` | Letter | CONSONANT | _null_ | र Ra |
|`U+0931` | Letter | CONSONANT | _null_ | ऱ Rra |
|`U+0932` | Letter | CONSONANT | _null_ | ल La |
|`U+0933` | Letter | CONSONANT | _null_ | ळ Lla |
|`U+0934` | Letter | CONSONANT | _null_ | ऴ Llla |
|`U+0935` | Letter | CONSONANT | _null_ | व Va |
|`U+0936` | Letter | CONSONANT | _null_ | श Sha |
|`U+0937` | Letter | CONSONANT | _null_ | ष Ssa |
|`U+0938` | Letter | CONSONANT | _null_ | स Sa |
|`U+0939` | Letter | CONSONANT | _null_ | ह Ha |
|`U+093A` | Mark [Mn] | VOWEL_DEPENDENT | TOP_POSITION | ऺ Sign Oe |
|`U+093B` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ऻ Sign Ooe |
|`U+093C` | Mark [Mn] | NUKTA | BOTTOM_POSITION | ़ Nukta |
|`U+093D` | Letter | AVAGRAHA | _null_ | ऽ Avagraha |
|`U+093E` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ा Sign Aa |
|`U+093F` | Mark [Mc] | VOWEL_DEPENDENT | LEFT_POSITION | ि Sign I |
| | | | |
|`U+0940` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ी Sign Ii |
|`U+0941` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ु Sign U |
|`U+0942` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ू Sign Uu |
|`U+0943` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ृ Sign Vocalic R |
|`U+0944` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ॄ Sign Vocalic Rr |
|`U+0945` | Mark [Mn] | VOWEL_DEPENDENT | TOP_POSITION | ॅ Sign Candra E |
|`U+0946` | Mark [Mn] | VOWEL_DEPENDENT | TOP_POSITION | ॆ Sign Short E |
|`U+0947` | Mark [Mn] | VOWEL_DEPENDENT | TOP_POSITION | े Sign E |
|`U+0948` | Mark [Mn] | VOWEL_DEPENDENT | TOP_POSITION | ै Sign Ai |
|`U+0949` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ॉ Sign Candra O |
|`U+094A` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ॊ Sign Short O |
|`U+094B` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ो Sign O |
|`U+094C` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ौ Sign Au |
|`U+094D` | Mark [Mn] | VIRAMA | BOTTOM_POSITION | ् Virama |
|`U+094E` | Mark [Mc] | VOWEL_DEPENDENT | LEFT_POSITION | ॎ Sign Prishthamatra E|
|`U+094F` | Mark [Mc] | VOWEL_DEPENDENT | RIGHT_POSITION | ॏ Sign Aw |
| | | | |
|`U+0950` | Mark [Mc] | _null_ | _null_ | ॐ Om |
|`U+0951` | Mark [Mn] | CANTILLATION | TOP_POSITION | ॑ Udatta |
|`U+0952` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ॒ Anudatta |
|`U+0953` | Mark [Mn] | SYLLABLE_MODIFIER | TOP_POSITION | ॓ Grave accent |
|`U+0954` | Mark [Mn] | SYLLABLE_MODIFIER | TOP_POSITION | ॔ Acute accent |
|`U+0955` | Mark [Mn] | VOWEL_DEPENDENT | TOP_POSITION | ॕ Sign Candra Long E |
|`U+0956` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ॖ Sign Ue |
|`U+0957` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ॗ Sign Uue |
|`U+0958` | Letter | CONSONANT | _null_ | क़ Qa |
|`U+0959` | Letter | CONSONANT | _null_ | ख़ Khha |
|`U+095A` | Letter | CONSONANT | _null_ | ग़ Ghha |
|`U+095B` | Letter | CONSONANT | _null_ | ज़ Za |
|`U+095C` | Letter | CONSONANT | _null_ | ड़ Dddha |
|`U+095D` | Letter | CONSONANT | _null_ | ढ़ Rha |
|`U+095E` | Letter | CONSONANT | _null_ | फ़ Fa |
|`U+095F` | Letter | CONSONANT | _null_ | य़ Yya |
| | | | |
|`U+0960` | Letter | VOWEL_INDEPENDENT | _null_ | ॠ Vocalic Rr |
|`U+0961` | Letter | VOWEL_INDEPENDENT | _null_ | ॡ Vocalic Ll |
|`U+0962` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ॢ Sign Vocalic L |
|`U+0963` | Mark [Mn] | VOWEL_DEPENDENT | BOTTOM_POSITION | ॣ Sign Vocalic Ll |
|`U+0964` | Punctuation | _null_ | _null_ | । Danda |
|`U+0965` | Punctuation | _null_ | _null_ | ॥ Double Danda |
|`U+0966` | Number | NUMBER | _null_ | ० Digit Zero |
|`U+0967` | Number | NUMBER | _null_ | १ Digit One |
|`U+0968` | Number | NUMBER | _null_ | २ Digit Two |
|`U+0969` | Number | NUMBER | _null_ | ३ Digit Three |
|`U+096A` | Number | NUMBER | _null_ | ४ Digit Four |
|`U+096B` | Number | NUMBER | _null_ | ५ Digit Five |
|`U+096C` | Number | NUMBER | _null_ | ६ Digit Six |
|`U+096D` | Number | NUMBER | _null_ | ७ Digit Seven |
|`U+096E` | Number | NUMBER | _null_ | ८ Digit Eight |
|`U+096F` | Number | NUMBER | _null_ | ९ Digit Nine |
| | | | |
|`U+0970` | Punctuation | _null_ | _null_ | ॰ Abbreviation Sign |
|`U+0971` | Punctuation | _null_ | _null_ | ॱ Sign High Spacing Dot|
|`U+0972` | Letter | VOWEL_INDEPENDENT | _null_ | ॲ Candra Aa |
|`U+0973` | Letter | VOWEL_INDEPENDENT | _null_ | ॳ Oe |
|`U+0974` | Letter | VOWEL_INDEPENDENT | _null_ | ॴ Ooe |
|`U+0975` | Letter | VOWEL_INDEPENDENT | _null_ | ॵ Aw |
|`U+0976` | Letter | VOWEL_INDEPENDENT | _null_ | ॶ Ue |
|`U+0977` | Letter | VOWEL_INDEPENDENT | _null_ | ॷ Uue |
|`U+0978` | Letter | CONSONANT | _null_ | ॸ Marwari Dda |
|`U+0979` | Letter | CONSONANT | _null_ | ॹ Zha |
|`U+097A` | Letter | CONSONANT | _null_ | ॺ Heavy Ya |
|`U+097B` | Letter | CONSONANT | _null_ | ॻ Gga |
|`U+097C` | Letter | CONSONANT | _null_ | ॼ Jja |
|`U+097D` | Letter | CONSONANT | _null_ | ॽ Glottal Stop |
|`U+097E` | Letter | CONSONANT | _null_ | ॾ Ddda |
|`U+097F` | Letter | CONSONANT | _null_ | ॿ Bba |
:::
## Devanagari Extended character table ##
> Note: the cantillation marks of the "combining consonant" variety in
> the Devanagari Extended block are _not_ considered consonants for
> shaping purposes (including syllable identification, the
> determination of the base consonant, or positioning "Reph").
:::{table} Devanagari Extended character table
| Codepoint | Unicode category | Shaping class | Mark-placement subclass | Glyph |
|:----------|:-----------------|:------------------|:---------------------------|:-----------------------------|
|`U+A8E0` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣠ Combining Zero |
|`U+A8E1` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣡ Combining One |
|`U+A8E2` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣢ Combining Two |
|`U+A8E3` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣣ Combining Three |
|`U+A8E4` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣤ Combining Four |
|`U+A8E5` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣥ Combining Five |
|`U+A8E6` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣦ Combining Six |
|`U+A8E7` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣧ Combining Seven |
|`U+A8E8` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣨ Combining Eight |
|`U+A8E9` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣩ Combining Nine |
|`U+A8EA` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣪ Combining A |
|`U+A8EB` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣫ Combining U |
|`U+A8EC` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣬ Combining Ka |
|`U+A8ED` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣭ Combining Na |
|`U+A8EE` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣮ Combining Pa |
|`U+A8EF` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣯ Combining Ra |
| | | | |
|`U+A8F0` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣰ Combining Vi |
|`U+A8F1` | Mark [Mn] | CANTILLATION | TOP_POSITION | ꣱ Combining Avagraha |
|`U+A8F2` | Letter | SYMBOL | _null_ | ꣲ Spacing Candrabindu |
|`U+A8F3` | Letter | BINDU | _null_ | ꣳ Candrabindu Virama |
|`U+A8F4` | Letter | _null_ | _null_ | ꣴ Double Candrabindu Virama|
|`U+A8F5` | Letter | _null_ | _null_ | ꣵ Candrabindu Two |
|`U+A8F6` | Letter | _null_ | _null_ | ꣶ Candrabindu Three |
|`U+A8F7` | Letter | SYMBOL | _null_ | ꣷ Candrabindu Avagraha|
|`U+A8F8` | Punctuation | _null_ | _null_ | ꣸ Pushpika |
|`U+A8F9` | Punctuation | _null_ | _null_ | ꣹ Gap Filler |
|`U+A8FA` | Punctuation | _null_ | _null_ | ꣺ Caret |
|`U+A8FB` | Letter | _null_ | _null_ | ꣻ Headstroke |
|`U+A8FC` | Punctuation | _null_ | _null_ | ꣼ Siddham |
|`U+A8FD` | Letter | _null_ | _null_ | ꣽ Jain Om |
|`U+A8FE` | Letter | VOWEL_INDEPENDENT | _null_ | ꣾ Ay |
|`U+A8FF` | Mark [Mn] | VOWEL_DEPENDENT | TOP_POSITION | ꣿ Sign Ay |
| | | | |
:::
## Devanagari Extended-A character table ##
:::{table} Devanagari Extended-A character table
| Codepoint | Unicode category | Shaping class | Mark-placement subclass | Glyph |
|:----------|:-----------------|:--------------|:------------------------|:----------------------------------------|
| `U+11B00` | Punctuation | _null_ | _null_ | 𑬀 Head Mark |
| `U+11B01` | Punctuation | _null_ | _null_ | 𑬁 Head Mark With Headstroke |
| `U+11B02` | Punctuation | _null_ | _null_ | 𑬂 Sign Bhale |
| `U+11B03` | Punctuation | _null_ | _null_ | 𑬃 Sign Bhale With Hook |
| `U+11B04` | Punctuation | _null_ | _null_ | 𑬄 Sign Extended Bhale |
| `U+11B05` | Punctuation | _null_ | _null_ | 𑬅 Sign Extended Bhale With Hook |
| `U+11B06` | Punctuation | _null_ | _null_ | 𑬆 Sign Western Five-like Bhale |
| `U+11B07` | Punctuation | _null_ | _null_ | 𑬇 Sign Western Nine-like Bhale |
| `U+11B08` | Punctuation | _null_ | _null_ | 𑬈 Sign Reversed Nine-like Bhale |
| `U+11B09` | Punctuation | _null_ | _null_ | 𑬉 Sign Mindu |
| `U+11B0A` | _unassigned_ | | | |
| `U+11B0B` | _unassigned_ | | | |
| `U+11B0C` | _unassigned_ | | | |
| `U+11B0D` | _unassigned_ | | | |
| `U+11B0E` | _unassigned_ | | | |
| `U+11B0F` | _unassigned_ | | | |
| | | | | |
| `U+11B10` | _unassigned_ | | | |
| `U+11B11` | _unassigned_ | | | |
| `U+11B12` | _unassigned_ | | | |
| `U+11B13` | _unassigned_ | | | |
| `U+11B14` | _unassigned_ | | | |
| `U+11B15` | _unassigned_ | | | |
| `U+11B16` | _unassigned_ | | | |
| `U+11B17` | _unassigned_ | | | |
| `U+11B18` | _unassigned_ | | | |
| `U+11B19` | _unassigned_ | | | |
| `U+11B1A` | _unassigned_ | | | |
| `U+11B1B` | _unassigned_ | | | |
| `U+11B1C` | _unassigned_ | | | |
| `U+11B1D` | _unassigned_ | | | |
| `U+11B1E` | _unassigned_ | | | |
| `U+11B1F` | _unassigned_ | | | |
| | | | | |
| `U+11B20` | _unassigned_ | | | |
| `U+11B21` | _unassigned_ | | | |
| `U+11B22` | _unassigned_ | | | |
| `U+11B23` | _unassigned_ | | | |
| `U+11B24` | _unassigned_ | | | |
| `U+11B25` | _unassigned_ | | | |
| `U+11B26` | _unassigned_ | | | |
| `U+11B27` | _unassigned_ | | | |
| `U+11B28` | _unassigned_ | | | |
| `U+11B29` | _unassigned_ | | | |
| `U+11B2A` | _unassigned_ | | | |
| `U+11B2B` | _unassigned_ | | | |
| `U+11B2C` | _unassigned_ | | | |
| `U+11B2D` | _unassigned_ | | | |
| `U+11B2E` | _unassigned_ | | | |
| `U+11B2F` | _unassigned_ | | | |
| | | | | |
| `U+11B30` | _unassigned_ | | | |
| `U+11B31` | _unassigned_ | | | |
| `U+11B32` | _unassigned_ | | | |
| `U+11B33` | _unassigned_ | | | |
| `U+11B34` | _unassigned_ | | | |
| `U+11B35` | _unassigned_ | | | |
| `U+11B36` | _unassigned_ | | | |
| `U+11B37` | _unassigned_ | | | |
| `U+11B38` | _unassigned_ | | | |
| `U+11B39` | _unassigned_ | | | |
| `U+11B3A` | _unassigned_ | | | |
| `U+11B3B` | _unassigned_ | | | |
| `U+11B3C` | _unassigned_ | | | |
| `U+11B3D` | _unassigned_ | | | |
| `U+11B3E` | _unassigned_ | | | |
| `U+11B3F` | _unassigned_ | | | |
| | | | | |
| `U+11B40` | _unassigned_ | | | |
| `U+11B41` | _unassigned_ | | | |
| `U+11B42` | _unassigned_ | | | |
| `U+11B43` | _unassigned_ | | | |
| `U+11B44` | _unassigned_ | | | |
| `U+11B45` | _unassigned_ | | | |
| `U+11B46` | _unassigned_ | | | |
| `U+11B47` | _unassigned_ | | | |
| `U+11B48` | _unassigned_ | | | |
| `U+11B49` | _unassigned_ | | | |
| `U+11B4A` | _unassigned_ | | | |
| `U+11B4B` | _unassigned_ | | | |
| `U+11B4C` | _unassigned_ | | | |
| `U+11B4D` | _unassigned_ | | | |
| `U+11B4E` | _unassigned_ | | | |
| `U+11B4F` | _unassigned_ | | | |
| | | | | |
| `U+11B50` | _unassigned_ | | | |
| `U+11B51` | _unassigned_ | | | |
| `U+11B52` | _unassigned_ | | | |
| `U+11B53` | _unassigned_ | | | |
| `U+11B54` | _unassigned_ | | | |
| `U+11B55` | _unassigned_ | | | |
| `U+11B56` | _unassigned_ | | | |
| `U+11B57` | _unassigned_ | | | |
| `U+11B58` | _unassigned_ | | | |
| `U+11B59` | _unassigned_ | | | |
| `U+11B5A` | _unassigned_ | | | |
| `U+11B5B` | _unassigned_ | | | |
| `U+11B5C` | _unassigned_ | | | |
| `U+11B5D` | _unassigned_ | | | |
| `U+11B5E` | _unassigned_ | | | |
| `U+11B5F` | _unassigned_ | | | |
| | | | | |
:::
## Vedic Extensions character table ##
Sanskrit runs written in the Devanagari script may also include
characters from the Vedic Extensions block. These characters should be
classified as follows.
> Note: See the [Vedic Extensions](../opentype-shaping-vedic-extensions.md)
> document for additional information.
:::{table} Vedic Extensions character table
| Codepoint | Unicode category | Shaping class | Mark-placement subclass | Glyph |
|:----------|:-----------------|:------------------|:---------------------------|:-----------------------------|
|`U+1CD0` | Mark [Mn] | CANTILLATION | TOP_POSITION | ᳐ Tone Karshana |
|`U+1CD1` | Mark [Mn] | CANTILLATION | TOP_POSITION | ᳑ Tone Shara |
|`U+1CD2` | Mark [Mn] | CANTILLATION | TOP_POSITION | ᳒ Tone Prenkha |
|`U+1CD3` | Punctuation | _null_ | _null_ | ᳓ Sign Nihshvasa |
|`U+1CD4` | Mark [Mn] | CANTILLATION | OVERSTRUCK | ᳔ Tone Midline Svarita |
|`U+1CD5` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳕ Tone Aggravated Independent Svarita |
|`U+1CD6` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳖ Tone Independent Svarita |
|`U+1CD7` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳗ Tone Kathaka Independent Svarita |
|`U+1CD8` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳘ Tone Candra Below |
|`U+1CD9` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳙ Tone Kathaka Independent Svarita Schroeder |
|`U+1CDA` | Mark [Mn] | CANTILLATION | TOP_POSITION | ᳚ Tone Double Svarita |
|`U+1CDB` | Mark [Mn] | CANTILLATION | TOP_POSITION | ᳛ Tone Triple Svarita |
|`U+1CDC` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳜ Tone Kathaka Anudatta |
|`U+1CDD` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳝ Tone Dot Below |
|`U+1CDE` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳞ Tone Two Dots Below |
|`U+1CDF` | Mark [Mn] | CANTILLATION | BOTTOM_POSITION | ᳟ Tone Three Dots Below |
| | | | |
|`U+1CE0` | Mark [Mn] | CANTILLATION | TOP_POSITION | ᳠ Tone Rigvedic Kashmiri Independent Svarita |
|`U+1CE1` | Mark [Mc] | CANTILLATION | RIGHT_POSITION | ᳡ Tone Atharavedic Independent Svarita |
|`U+1CE2` | Mark [Mn] | AVAGRAHA | OVERSTRUCK | ᳢ Sign Visarga Svarita |
|`U+1CE3` | Mark [Mn] | _null_ | OVERSTRUCK | ᳣ Sign Visarga Udatta |
|`U+1CE4` | Mark [Mn] | _null_ | OVERSTRUCK | ᳤ Sign Reversed Visarga Udatta |
|`U+1CE5` | Mark [Mn] | _null_ | OVERSTRUCK | ᳥ Sign Visarga Anudatta |
|`U+1CE6` | Mark [Mn] | _null_ | OVERSTRUCK | ᳦ Sign Reversed Visarga Anudatta |
|`U+1CE7` | Mark [Mn] | _null_ | OVERSTRUCK | ᳧ Sign Visarga Udatta With Tail |
|`U+1CE8` | Mark [Mn] | AVAGRAHA | OVERSTRUCK | ᳨ Sign Visarga Anudatta With Tail |
|`U+1CE9` | Letter | SYMBOL | _null_ | ᳩ Sign Anusvara Antargomukha |
|`U+1CEA` | Letter | _null_ | _null_ | ᳪ Sign Anusvara Bahirgomukha |
|`U+1CEB` | Letter | _null_ | _null_ | ᳫ Sign Anusvara Vamagomukha |
|`U+1CEC` | Letter | SYMBOL | _null_ | ᳬ Sign Anusvara Vamagomukha With Tail |
|`U+1CED` | Mark [Mn] | AVAGRAHA | BOTTOM_POSITION | ᳭ Sign Tiryak |
|`U+1CEE` | Letter | SYMBOL | _null_ | ᳮ Sign Hexiform Long Anusvara |
|`U+1CEF` | Letter | _null_ | _null_ | ᳯ Sign Long Anusvara |
| | | | |
|`U+1CF0` | Letter | _null_ | _null_ | ᳰ Sign Rthang Long Anusvara |
|`U+1CF2` | Letter | CONSONANT_DEAD | _null_ | ᳲ Sign Ardhavisarga |
|`U+1CF3` | Letter | CONSONANT_DEAD | _null_ | ᳳ Sign Rotated Ardhavisarga |
|`U+1CF3` | Mark [Mc] | VISARGA | _null_ | ᳳ Sign Rotated Ardhavisarga |
|`U+1CF4` | Mark [Mn] | CANTILLATION | TOP_POSITION | ᳴ Tone Candra Above |
|`U+1CF5` | Letter | CONSONANT_WITH_STACKER | _null_ | ᳵ Sign Jihvamuliya |
|`U+1CF6` | Letter | CONSONANT_WITH_STACKER | _null_ | ᳶ Sign Upadhmaniya |
|`U+1CF7` | Mark [Mc] | _null_ | _null_ | ᳷ Sign Atikrama |
|`U+1CF8` | Mark [Mn] | CANTILLATION | _null_ | ᳸ Tone Ring Above |
|`U+1CF9` | Mark [Mn] | CANTILLATION | _null_ | ᳹ Tone Double Ring Above |
|`U+1CFA` | Letter | PLACEHOLDER | _null_ | ᳺ Sign Double Anusvara Antargomukha |
|`U+1CFB` | _unassigned_ | | | |
|`U+1CFC` | _unassigned_ | | | |
|`U+1CFD` | _unassigned_ | | | |
|`U+1CFE` | _unassigned_ | | | |
|`U+1CFF` | _unassigned_ | | | |
:::
## Miscellaneous character table ##
Other important characters that may be encountered when shaping runs
of Devanagari text include the dotted-circle placeholder (`U+25CC`), the
zero-width joiner (`U+200D`) and zero-width non-joiner (`U+200C`), and
the no-break space (`U+00A0`).
The dotted-circle placeholder is frequently used when displaying a
dependent vowel (matra) or a combining mark in isolation. Real-world
text syllables may also use other characters, such as hyphens or dashes,
in a similar placeholder fashion; shaping engines should cope with
this situation gracefully.
:::{table} Miscellaneous character table
| Codepoint | Unicode category | Shaping class | Mark-placement subclass | Glyph |
|:----------|:-----------------|:------------------|:---------------------------|:-------------------------------|
|`U+00A0` | Separator | PLACEHOLDER | _null_ | No-break space |
|`U+200C` | Other | NON_JOINER | _null_ | Zero-width non-joiner |
|`U+200D` | Other | JOINER | _null_ | Zero-width joiner |
|`U+2010` | Punctuation | PLACEHOLDER | _null_ | ‐ Hyphen |
|`U+2011` | Punctuation | PLACEHOLDER | _null_ | ‑ No-break hyphen |
|`U+2012` | Punctuation | PLACEHOLDER | _null_ | ‒ Figure dash |
|`U+2013` | Punctuation | PLACEHOLDER | _null_ | – En dash |
|`U+2014` | Punctuation | PLACEHOLDER | _null_ | — Em dash |
|`U+25CC` | Symbol | DOTTED_CIRCLE | _null_ | ◌ Dotted circle |
:::
The zero-width joiner (ZWJ) is primarily used to prevent the formation
of a conjunct from a "_Consonant_,Halant,_Consonant_" sequence. The
sequence "_Consonant_,Halant,ZWJ,_Consonant_" blocks the formation of
a conjunct between the two consonants.
Note, however, that the "_Consonant_,Halant" subsequence in the above
example may still trigger a half-forms feature. To prevent the
application of the half-forms feature in addition to preventing the
conjunct, the zero-width non-joiner (ZWNJ) must be used instead. The
sequence "_Consonant_,Halant,ZWNJ,_Consonant_" should produce the
first consonant in its standard form, followed by an explicit
"Halant".
A secondary usage of the zero-width joiner is to prevent the formation of
"Reph". An initial "Ra,Halant,ZWJ" sequence should not produce a "Reph",
where an initial "Ra,Halant" sequence without the zero-width joiner
otherwise would.
The no-break space (NBSP) is primarily used to display those
codepoints that are defined as non-spacing (marks, dependent vowels
(matras), below-base consonant forms, and post-base consonant forms)
in an isolated context, as an alternative to displaying them
superimposed on the dotted-circle placeholder. These sequences will
match "NBSP,ZWJ,Halant,_Consonant_", "NBSP,_mark_", or "NBSP,_matra_".