Invisible Texts

Текстовый инструмент

Генератор пробелов нулевой ширины

Копируйте пробел нулевой ширины (U+200B). Форматный символ нулевой ширины, говорящий браузерам и текстовым движкам, где строке разрешено переноситься, — без дефиса и без занятия места.

Генератор в реальном времени
Сгенерировать пробел нулевой ширины
Выберите, сколько символов U+200B копировать
Результат: Жирный

Зачем нужен пробел нулевой ширины

Пробел нулевой ширины (ZWSP, U+200B) — Unicode-форматный символ без видимого глифа и с нулевой шириной продвижения. Его задача — сказать движку отрисовки, где строке разрешено разрываться. HTML-элемент <wbr> ведёт себя идентично. Браузеры и текстовые процессоры сверяются с этими точками переноса при упаковке длинных строк — длинный URL с символами U+200B после каждого слэша будет аккуратно переноситься в этих точках, а не вылезать из контейнера. Символ создан для письменностей вроде тайской, лаосской и кхмерской, где не используют пробелы между словами; вставка U+200B между словами позволяет движку их переносить. В латинском тексте у него другой набор применений: разрыв @упоминаний и #хэштегов в Twitter, чтобы они не превращались в авто-ссылки, разбиение длинных составных слов в немецком и скрытая разметка точек переноса внутри длинных идентификаторов.

Где U+200B действительно полезен

Перенос длинных URL и строк

Поместите U+200B после каждого слэша или точки в длинном URL, и браузер перенесёт строку в этих точках, а не будет вытягивать вёрстку. В месте разрыва не появится дефис.

Отключение авто-ссылок в постах

Twitter и другие платформы превращают @username и #hashtag в ссылки. Пробел нулевой ширины между символом и текстом ломает совпадение, не меняя того, как оно читается.

Управление переносом слов в CSS

Пара U+200B и word-break: keep-all отмечает разрешённые точки переноса в CJK-тексте, подавляя переносы в остальных местах. В спеке CSS Text это названо предполагаемым шаблоном.

Вотермаркинг текста

Вставьте 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 как запасной вариант.

Частые вопросы об U+200B

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

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

Чем U+200B отличается от обычного пробела?

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

Как скопировать символы пробела нулевой ширины?

Укажите количество выше и нажмите «Копировать». Символы попадут в буфер обмена без видимого признака, и это ожидаемо — вставьте в тестовое поле, чтобы убедиться, что они на месте.

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

Да. У него фиксированный код (U+200B), поэтому любой инструмент, инспектирующий Unicode, его найдёт. Поиск по этому коду найдёт каждое вхождение. Он невидим для людей, но не для ПО.

Почему мой пробел нулевой ширины вырезали?

Его удалил очиститель ввода платформы. Чаты и соцсети часто фильтруют форматные символы нулевой ширины для защиты от злоупотреблений. Переключитесь на брайлевский пробел (U+2800) или хангыльский заполнитель (U+3164), которые классифицируются как символ и буква и обычно переживают фильтрацию.

U+200B — то же самое, что HTML-тег <wbr>?

Фактически да. Документация MDN указывает, что <wbr> ведёт себя как код U+200B. Оба отмечают точку возможного переноса без видимого глифа и без дефиса. Используйте <wbr> в HTML-разметке; используйте U+200B в простом тексте.