# 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.