Перейти к содержимому
Ghostchars

Нулевая ширина и невидимые

WORD JOINER (U+2060)

Противоположность пробелу нулевой ширины: невидимый символ, который запрещает перенос строки в своей позиции и не добавляет никакой ширины.

Кодовая позиция
U+2060
Удаляется по умолчанию
Да
Управляющий параметр
Параметр не нужен
Может нести нагрузку
Нет

Откуда он берётся

Программы вёрстки вставляют его, чтобы число не оторвалось от единицы измерения. Он же — штатная замена U+FEFF в середине документа, так что всё, что «осовременивает» метку порядка байтов, оставляет после себя соединители слов. Стеганографические утилиты, ожидающие, что фильтр поймает U+200B, часто берут именно его.

Почему это важно

Он невидим, он не пробельный, и большинство фильтров нулевой ширины ищут только U+200B и соединители — ровно поэтому за него и берутся утилиты для скрытой нагрузки. Две позиции, два символа — и вот у вас двоичный канал, который переживает почти любую чистку.

До и после

До12U+2060кг
После12кг

Соединитель слов стоит между числом и единицей измерения и сваривает их в одно целое.

Символ показан подписанной плашкой, чтобы было видно, где он стоит. В вашем тексте он не рисует ровно ничего.

Когда он уместен

Чтобы «12 кг» или «рис. 4» не разъезжались по двум строкам. В прозе ту же работу лучше делает неразрывный пробел — он хотя бы виден как пробел.

Как его удалить

Его удаляет базовый проход. Ghostchars никогда не оставляет соединитель слов: в отличие от ZWJ, у него нет орфографической роли ни в одной письменности.

Это водяной знак ИИ?

Используется для сокрытия данных — но не водяной знак

Нет. Это типографский управляющий символ, за который утилиты скрытой нагрузки взялись именно потому, что наивные «чистильщики пробелов нулевой ширины» его не замечают. О машинном авторстве он не говорит ничего.

Известный носитель намеренно спрятанных данных. Кто-то поместил его туда специально, а это уже другой вопрос, чем то, кто написал слова.

Вопросы

Чем он отличается от пробела нулевой ширины?

U+200B разрешает перенос строки в своей позиции, U+2060 — запрещает. Оба невидимы, и оба удаляются базовым проходом.

Может, лучше поставить неразрывный пробел?

В прозе — обычно да. U+00A0 виден как пробел, поэтому его замечают и читатель, и diff, а работу «держать вместе» он делает ту же.

Проверьте свой текст

Вставьте что угодно в инструмент очистки, чтобы увидеть каждый скрытый символ: позицию, кодовую позицию и то, что произойдёт с каждым из них. Ничего никуда не отправляется.

Проверьте свой текстВсе символы