Генератор пробелов нулевой ширины
Копируйте пробел нулевой ширины (U+200B). Форматный символ нулевой ширины, говорящий браузерам и текстовым движкам, где строке разрешено переноситься, — без дефиса и без занятия места.
Форматный символ нулевой ширины, отмечающий возможность переноса строки. Ничего не отрисовывает, не занимает места и никогда не вставляет дефис.
Зачем нужен пробел нулевой ширины
Пробел нулевой ширины (ZWSP, U+200B) — Unicode-форматный символ без видимого глифа и с нулевой шириной продвижения. Его задача — сказать движку отрисовки, где строке разрешено разрываться. HTML-элемент <wbr> ведёт себя идентично. Браузеры и текстовые процессоры сверяются с этими точками переноса при упаковке длинных строк — длинный URL с символами U+200B после каждого слэша будет аккуратно переноситься в этих точках, а не вылезать из контейнера. Символ создан для письменностей вроде тайской, лаосской и кхмерской, где не используют пробелы между словами; вставка U+200B между словами позволяет движку их переносить. В латинском тексте у него другой набор применений: разрыв @упоминаний и #хэштегов в Twitter, чтобы они не превращались в авто-ссылки, разбиение длинных составных слов в немецком и скрытая разметка точек переноса внутри длинных идентификаторов.
Где U+200B действительно полезен
Как U+200B ведёт себя на краях
U+200B — форматный символ (общая категория Cf), а не пробел. Это различие важно. Он не пробельный, поэтому JavaScript trim() его не удаляет — но он и невидим, поэтому строка, идентичная для человека, может отличаться на уровне байтов. Исследователи безопасности использовали это свойство, чтобы прятать нагрузку в идентификаторах: две строки, отрисовываемые как «admin», могут быть разными для базы, если в одной есть U+200B. Раскрытия Trojan Source (CVE-2021-42574 и CVE-2021-42694) задокументировали, как невидимые Unicode-символы могут заставить исходный код компилироваться не так, как он читается. Со стороны отрисовки U+200B широко поддерживается браузерами, но вырезается чатами, очищающими ввод, — WhatsApp и TikTok удаляют его из сообщений и био, а Discord обрабатывает непоследовательно по полям. Когда платформа его вырезает, fallback обычно — видимый, но пустой символ вроде U+2800 (брайлевский пробел).
Заметки перед использованием U+200B
U+200B отмечает возможность переноса; он её не принуждает. Движок всё равно решает, переносить ли, исходя из доступной ширины.
Он никогда не показывает дефис в точке разрыва. Для видимого дефиса при переносе используйте мягкий перенос (U+00AD).
JavaScript trim() не удаляет U+200B, потому что он не классифицируется как пробельный. Используйте регэксп, нацеленный на U+200B, если нужно его вырезать.
Чтобы запретить перенос вместо разрешения, используйте U+2060 (соединитель слов) — противоположность U+200B и современная замена устаревшему U+FEFF.
Чаты, очищающие ввод, часто вырезают U+200B. Для пустых сообщений или ников переключайтесь на U+2800 или U+3164.
Помещение U+200B внутрь хэштега или @упоминания ломает ссылку. Полезно, когда нужно упомянуть CSS-правило @media, не активируя профиль-ссылку.
Где работает пробел нулевой ширины
U+200B поддерживается каждым современным браузером и большинством текстовых процессоров, где работает как точка возможного переноса. Спецификация CSS Text Module явно ссылается на него наряду с элементом <wbr> как на способ отметить точки переноса. В чатах и социальных сетях поддержка рваная. WhatsApp, Instagram и Discord принимают его в одних полях и вырезают в других. TikTok удаляет его из био. Игровые платформы редко принимают его в никах. Эмпирическое правило: в браузере или текстовом редакторе U+200B надёжен; в чате или социальном поле — сначала проверяйте и держите U+2800 или U+3164 как запасной вариант.
