# Zero-width character test
Below are several zero-width Unicode characters, placed between
underscores. Can your browser display them? Your text editor? Your
terminal? To understand why not being able to display them might be a
problem, read "Tracking via pasted text":
https://nervuri.net/stega
This file also contains unassigned code points and various control
characters which certain programs render as zero-width even though they
shouldn't.
As a point of reference, here are a few positive-width Unicode
characters:
0020: _ _ | 00E9: _é_ | 03A9: _Ω_ | 5B57: _字_ | 1F407: _🐇_
## Zero-width characters
00AD: __ soft hyphen
034F: _͏_ combining grapheme joiner
061C: __ Arabic letter mark
070F: __ Syriac abbreviation mark
115F: _ᅟ_ Hangul choseong filler
1160: _ᅠ_ Hangul jungseong filler
17B4: _឴_ Khmer vowel inherent aq
17B5: _឵_ Khmer vowel inherent aa
180B: _᠋_ Mongolian free variation selector one (FVS1)
180C: _᠌_ Mongolian free variation selector two (FVS2)
180D: _᠍_ Mongolian free variation selector three (FVS3)
180E: __ Mongolian vowel separator
180F: _᠏_ Mongolian free variation selector four (FVS4)
200B: __ zero width space
200C: __ zero width non-joiner
200D: __ zero width joiner
200E: __ left-to-right mark
200F: __ right-to-left mark
2028: _
_ line separator
2029: _
_ paragraph separator
202A: __ left-to-right embedding
202B: __ right-to-left embedding
202C: __ pop directional formatting
202D: __ left-to-right override
202E: __ right-to-left override
2060: __ word joiner
2061: __ function application
2062: __ invisible times
2063: __ invisible separator
2064: __ invisible plus
2065: __ unassigned
2066: __ left-to-right isolate
2067: __ right-to-left isolate
2068: __ first strong isolate
2069: __ pop directional isolate
206A: __ inhibit symmetric swapping (deprecated)
206B: __ activate symmetric swapping (deprecated)
206C: __ inhibit arabic form shaping (deprecated)
206D: __ activate arabic form shaping (deprecated)
206E: __ national digit shapes (deprecated)
206F: __ nominal digit shapes (deprecated)
3164: _ㅤ_ Hangul filler
FE00: _︀_ variation selector-1 (VS1)
FE01: _︁_ variation selector-2 (VS2)
FE02: _︂_ variation selector-3 (VS3)
FE03: _︃_ variation selector-4 (VS4)
FE04: _︄_ variation selector-5 (VS5)
FE05: _︅_ variation selector-6 (VS6)
FE06: _︆_ variation selector-7 (VS7)
FE07: _︇_ variation selector-8 (VS8)
FE08: _︈_ variation selector-9 (VS9)
FE09: _︉_ variation selector-10 (VS10)
FE0A: _︊_ variation selector-11 (VS11)
FE0B: _︋_ variation selector-12 (VS12)
FE0C: _︌_ variation selector-13 (VS13)
FE0D: _︍_ variation selector-14 (VS14)
FE0E: _︎_ variation selector-15 (VS15)
FE0F: _️_ variation selector-16 (VS16)
FEFF: __ zero width no-break space
FFA0: _ᅠ_ halfwidth Hangul filler
FFF0: __ unassigned
FFF1: __ unassigned
FFF2: __ unassigned
FFF3: __ unassigned
FFF4: __ unassigned
FFF5: __ unassigned
FFF6: __ unassigned
FFF7: __ unassigned
FFF8: __ unassigned
FFF9: __ interlinear annotation anchor
FFFA: __ interlinear annotation separator
FFFB: __ interlinear annotation terminator
FFFC: __ object replacement character
FFFE: __ <not a character>
FFFF: __ <not a character>
13430: __ Egyptian hieroglyph vertical joiner
13431: __ Egyptian hieroglyph horizontal joiner
13432: __ Egyptian hieroglyph insert at top start
13433: __ Egyptian hieroglyph insert at bottom start
13434: __ Egyptian hieroglyph insert at top end
13435: __ Egyptian hieroglyph insert at bottom end
13436: __ Egyptian hieroglyph overlay middle
13437: __ Egyptian hieroglyph begin segment
13438: __ Egyptian hieroglyph end segment
13439: __ Egyptian hieroglyph insert at middle
1343A: __ Egyptian hieroglyph insert at top
1343B: __ Egyptian hieroglyph insert at bottom
1343C: __ Egyptian hieroglyph begin enclosure
1343D: __ Egyptian hieroglyph end enclosure
1343E: __ Egyptian hieroglyph begin walled enclosure
1343F: __ Egyptian hieroglyph end walled enclosure
1BCA0: __ shorthand format letter overlap
1BCA1: __ shorthand format continuing overlap
1BCA2: __ shorthand format down step
1BCA3: __ shorthand format up step
1D159: _𝅙_ musical symbol null notehead
1D173: __ musical symbol begin beam
1D174: __ musical symbol end beam
1D175: __ musical symbol begin tie
1D176: __ musical symbol end tie
1D177: __ musical symbol begin slur
1D178: __ musical symbol end slur
1D179: __ musical symbol begin phrase
1D17A: __ musical symbol end phrase
E0000: __ unassigned
E0001: __ language tag (deprecated)
E0002: __ unassigned
.. (E0002-E0019 unassigned)
E0019: __ unassigned
E0020: __ tag space
.. (E0020-E007F formerly used for tagging texts by language)
E007F: __ cancel tag
E0080: __ unassigned
.. (E0080-E00FF unassigned)
E00FF: __ unassigned
E0100: _󠄀_ variation selector 17
.. (E0100-E01EF: variation selectors supplement)
E01EF: _󠇯_ variation selector 256
E01F0: __ unassigned
.. (E01F0-E0FFF unassigned)
E0FFF: __ unassigned
EFFFD: __ unassigned
EFFFE: __ <not a character>
EFFFF: __ <not a character>
10FFFD: __ unassigned (private use)
10FFFE: __ <not a character>
10FFFF: __ <not a character>
Not included: samples from unassigned ranges `*FF80-*FFFF`, with the
exception of `EFF80-EFFFF`, a sample of which is included.
## ASCII control codes
00: _
01: __ start of heading
02: __ start of text
03: __ end of text
04: __ end of transmission
05: __ enquiry
06: __ acknowledge
07: __ bell
08: __ backspace
0B: __ line tabulation (vertical tabulation)
0C: __ form feed
0E: __ shift out
0F: __ shift in
10: __ data link escape
11: __ device control one
12: __ device control two
13: __ device control three
14: __ device control four
15: __ negative acknowledge
16: __ synchronous idle
17: __ end of transmission block
18: __ cancel
19: __ end of medium
1A: __ substitute
1B: __ escape
1C: __ information separator four (file separator)
1D: __ information separator three (group separator)
1E: __ information separator two (record separator)
1F: __ information separator one (unit separator)
7F: __ delete
80: __
81: __
82: __ break permitted here
83: __ no break here
84: __ formerly known as "index"
85: _
_ next line
86: __ start of selected area
87: __ end of selected area
88: __ character tabulation set
89: __ character tabulation with justification
8A: __ line tabulation set
8B: __ partial line forward
8C: __ partial line backward
8D: __ reverse line feed
8E: __ single shift two
8F: __ single shift three
90: __ device control string
91: __ private use one
92: __ private use two
93: __ set transmit state
94: __ cancel character
95: __ message waiting
96: __ start of guarded area
97: __ end of guarded area
98: __ start of string
99: __
9A: __ single character introducer
9B: __ control sequence introducer
9C: __ string terminator
9D: __ operating system command
9E: __ privacy message
9F: __ application program command
## Thin space characters
0020: _ _ space [for comparison]
205F: _ _ medium mathematical space (MMSP)
202F: _ _ narrow no-break space
2006: _ _ six-per-em space
2009: _ _ thin space
200A: _ _ hair space
Contact me if you know of any other character that should be included in
this file. Contact info:
gopher://rawtext.club/0/~nervuri/contact.txt
This test page is also available on the Web and on Gemini:
https://nervuri.net/zero-width
gemini://rawtext.club/~nervuri/zero-width.gmi
The web version also contains links to programs which (more or less)
pass the test.