# N'Ko character tables # This document lists the per-character shaping information needed to [shape N'Ko text](../opentype-shaping-nko.md). **Contents** - [NKo character table](#nko-character-table) - [Miscellaneous character table](#miscellaneous-character-table) ## NKo character table ## N'Ko glyphs should be classified as in the following table. Codepoints in the NKo block with no assigned meaning are designated as _unassigned_ in the _Unicode category_ column. The _Joining type_ column indicates whether each codepoint is defined as joining with adjacent characters on the left side, right side, left and right sides ("DUAL"), or neither side ("NON_JOINING"). Codepoints designated TRANSPARENT in the _Joining type_ column do not join with adjacent characters and, in addition, do not affect the joining behavior of surrounding characters. Non-spacing marks are of type TRANSPARENT. Codepoints designated JOIN_CAUSING force adjacent characters to join. The _Joining group_ column lists the fundamental letter that the listed codepoint behaves like for joining purposes. Assigned codepoints with a _null_ in the _Joining group_ column evoke no special behavior from the shaping engine during the join-computation stage. > Note: No codepoints in the NKo block are assigned a non-null _Joining group_. The _Mark class_ column indicates the Canonical Combining Class for the codepoint. Marks are assigned non-zero combining classes so that sequences of adjacent marks can be reordered as required by the orthography. :::{table} N'Ko character table | Codepoint | Unicode category | Joining type | Joining group | Mark class | Glyph | |:----------|:-----------------|:-------------|:---------------------|:-----------|-----------------------------------------------| |`U+07C0` | Number | NON_JOINING | _null_ | _0_ | ߀ Digit Zero | |`U+07C1` | Number | NON_JOINING | _null_ | _0_ | ߁ Digit One | |`U+07C2` | Number | NON_JOINING | _null_ | _0_ | ߂ Digit Two | |`U+07C3` | Number | NON_JOINING | _null_ | _0_ | ߃ Digit Three | |`U+07C4` | Number | NON_JOINING | _null_ | _0_ | ߄ Digit Four | |`U+07C5` | Number | NON_JOINING | _null_ | _0_ | ߅ Digit Five | |`U+07C6` | Number | NON_JOINING | _null_ | _0_ | ߆ Digit Six | |`U+07C7` | Number | NON_JOINING | _null_ | _0_ | ߇ Digit Seven | |`U+07C8` | Number | NON_JOINING | _null_ | _0_ | ߈ Digit Eight | |`U+07C9` | Number | NON_JOINING | _null_ | _0_ | ߉ Digit Nine | |`U+07CA` | Letter | DUAL | _null_ | _0_ | ߊ A | |`U+07CB` | Letter | DUAL | _null_ | _0_ | ߋ Ee | |`U+07CC` | Letter | DUAL | _null_ | _0_ | ߌ I | |`U+07CD` | Letter | DUAL | _null_ | _0_ | ߍ E | |`U+07CE` | Letter | DUAL | _null_ | _0_ | ߎ U | |`U+07CF` | Letter | DUAL | _null_ | _0_ | ߏ Oo | | | | | | | |`U+07D0` | Letter | DUAL | _null_ | _0_ | ߐ O | |`U+07D1` | Letter | DUAL | _null_ | _0_ | ߑ Dagbasinna | |`U+07D2` | Letter | DUAL | _null_ | _0_ | ߒ N | |`U+07D3` | Letter | DUAL | _null_ | _0_ | ߓ Ba | |`U+07D4` | Letter | DUAL | _null_ | _0_ | ߔ Pa | |`U+07D5` | Letter | DUAL | _null_ | _0_ | ߕ Ta | |`U+07D6` | Letter | DUAL | _null_ | _0_ | ߖ Ja | |`U+07D7` | Letter | DUAL | _null_ | _0_ | ߗ Cha | |`U+07D8` | Letter | DUAL | _null_ | _0_ | ߘ Da | |`U+07D9` | Letter | DUAL | _null_ | _0_ | ߙ Ra | |`U+07DA` | Letter | DUAL | _null_ | _0_ | ߚ Rra | |`U+07DB` | Letter | DUAL | _null_ | _0_ | ߛ Sa | |`U+07DC` | Letter | DUAL | _null_ | _0_ | ߜ Gba | |`U+07DD` | Letter | DUAL | _null_ | _0_ | ߝ Fa | |`U+07DE` | Letter | DUAL | _null_ | _0_ | ߞ Ka | |`U+07DF` | Letter | DUAL | _null_ | _0_ | ߟ La | | | | | | | |`U+07E0` | Letter | DUAL | _null_ | _0_ | ߠ Na Woloso | |`U+07E1` | Letter | DUAL | _null_ | _0_ | ߡ Ma | |`U+07E2` | Letter | DUAL | _null_ | _0_ | ߢ Nya | |`U+07E3` | Letter | DUAL | _null_ | _0_ | ߣ Na | |`U+07E4` | Letter | DUAL | _null_ | _0_ | ߤ Ha | |`U+07E5` | Letter | DUAL | _null_ | _0_ | ߥ Wa | |`U+07E6` | Letter | DUAL | _null_ | _0_ | ߦ Ya | |`U+07E7` | Letter | DUAL | _null_ | _0_ | ߧ Nya Woloso | |`U+07E8` | Letter | DUAL | _null_ | _0_ | ߨ Jona Ja | |`U+07E9` | Letter | DUAL | _null_ | _0_ | ߩ Jona Cha | |`U+07EA` | Letter | DUAL | _null_ | _0_ | ߪ Jona Ra | |`U+07EB` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߫ Combining Short High Tone | |`U+07EC` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߬ Combining Short Low Tone | |`U+07ED` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߭ Combining Short Rising Tone | |`U+07EE` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߮ Combining Long Descending Tone | |`U+07EF` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߯ Combining Long High Tone | | | | | | | |`U+07F0` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߰ Combining Long Low Tone | |`U+07F1` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߱ Combining Long Rising Tone | |`U+07F2` | Mark [Mn] | TRANSPARENT | _null_ | 220 | ߲ Combining Nasalization Mark | |`U+07F3` | Mark [Mn] | TRANSPARENT | _null_ | 230 | ߳ Combining Double Dot Above | |`U+07F4` | Letter modifier | NON_JOINING | _null_ | _0_ | ߴ High Tone Apostrophe | |`U+07F5` | Letter modifier | NON_JOINING | _null_ | _0_ | ߵ Low Tone Apostrophe | |`U+07F6` | Symbol | NON_JOINING | _null_ | _0_ | ߶ Symbol Oo Dennen | |`U+07F7` | Symbol | NON_JOINING | _null_ | _0_ | ߷ Symbol Gbakurunen | |`U+07F8` | Punctuation | NON_JOINING | _null_ | _0_ | ߸ Comma | |`U+07F9` | Punctuation | NON_JOINING | _null_ | _0_ | ߹ Exclamation Mark | |`U+07FA` | Letter modifier | JOIN_CAUSING | _null_ | _0_ | ߺ Lajanyalan | |`U+07FB` | _unassigned_ | | | | | |`U+07FC` | _unassigned_ | | | | | |`U+07FD` | Mark [Mn] | TRANSPARENT | _null_ | 220 | ߽ Dantalayan | |`U+07FE` | Symbol | NON_JOINING | _null_ | _0_ | ߾ Dorome Sign | |`U+07FF` | Symbol | NON_JOINING | _null_ | _0_ | ߿ Taman Sign | ::: ## Miscellaneous character table ## Other important characters that may be encountered when shaping runs of N'Ko text include the dotted-circle placeholder (`U+25CC`), the combining grapheme joiner (`U+034F`), the zero-width joiner (`U+200D`) and zero-width non-joiner (`U+200C`), the left-to-right text marker (`U+200E`) and right-to-left text marker (`U+200F`), and the no-break space (`U+00A0`). The dotted-circle placeholder is frequently used when displaying 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 | Joining type | Joining group | Mark class | Glyph | |:----------|:-----------------|:-------------|:---------------------|:-----------|--------------------------------| |`U+00A0` | Separator | NON_JOINING | _null_ | _0_ |   No-break space | |`U+034F` | Other | NON_JOINING | _null_ | _0_ | ͏ Combining grapheme joiner | |`U+200C` | Other | NON_JOINING | _null_ | _0_ | ‌ Zero-width non-joiner | |`U+200D` | Other | JOIN_CAUSING | _null_ | _0_ | ‍ Zero-width joiner | |`U+200E` | Other | NON_JOINING | _null_ | _0_ | ‎ Left-to-Right marker | |`U+200F` | Other | NON_JOINING | _null_ | _0_ | ‏ Right-to-Left marker | |`U+2010` | Punctuation | NON_JOINING | _null_ | _0_ | ‐ Hyphen | |`U+2011` | Punctuation | NON_JOINING | _null_ | _0_ | ‑ No-break hyphen | |`U+2012` | Punctuation | NON_JOINING | _null_ | _0_ | ‒ Figure dash | |`U+2013` | Punctuation | NON_JOINING | _null_ | _0_ | – En dash | |`U+2014` | Punctuation | NON_JOINING | _null_ | _0_ | — Em dash | |`U+25CC` | Symbol | NON_JOINING | _null_ | _0_ | ◌ Dotted circle | ::: The combining grapheme joiner (CGJ) is primarily used to alter the order in which adjacent marks are positioned during the mark-reordering stage, in order to adhere to the needs of a non-default language orthography. The zero-width joiner (ZWJ) is primarily used to force the usage of the cursive connecting form of a letter even when the context of the adjoining letters would not trigger the connecting form. For example, to show the initial form of a letter in isolation (such as for displaying it in a table of forms), the sequence "_Letter_,ZWJ" would be used. To show the medial form of a letter in isolation, the sequence "ZWJ,_Letter_,ZWJ" would be used. The right-to-left mark (RLM) and left-to-right mark (LRM) are used by the Unicode bidirectionality algorithm (BiDi) to indicate the points in a text run at which the writing direction changes. The no-break space is primarily used to display those codepoints that are defined as non-spacing (such as vowel or diacritical marks and "Hamza") in an isolated context, as an alternative to displaying them superimposed on the dotted-circle placeholder.