Перенос длинных URL и строк
Поместите U+200B после каждого слэша или точки в длинном URL, и браузер перенесёт строку в этих точках, а не будет вытягивать вёрстку. В месте разрыва не появится дефис.
Текстовый инструмент
Копируйте пробел нулевой ширины (U+200B). Форматный символ нулевой ширины, говорящий браузерам и текстовым движкам, где строке разрешено переноситься, — без дефиса и без занятия места.
Пробел нулевой ширины (ZWSP, U+200B) — Unicode-форматный символ без видимого глифа и с нулевой шириной продвижения. Его задача — сказать движку отрисовки, где строке разрешено разрываться. HTML-элемент <wbr> ведёт себя идентично. Браузеры и текстовые процессоры сверяются с этими точками переноса при упаковке длинных строк — длинный URL с символами U+200B после каждого слэша будет аккуратно переноситься в этих точках, а не вылезать из контейнера. Символ создан для письменностей вроде тайской, лаосской и кхмерской, где не используют пробелы между словами; вставка U+200B между словами позволяет движку их переносить. В латинском тексте у него другой набор применений: разрыв @упоминаний и #хэштегов в Twitter, чтобы они не превращались в авто-ссылки, разбиение длинных составных слов в немецком и скрытая разметка точек переноса внутри длинных идентификаторов.
Поместите U+200B после каждого слэша или точки в длинном URL, и браузер перенесёт строку в этих точках, а не будет вытягивать вёрстку. В месте разрыва не появится дефис.
Twitter и другие платформы превращают @username и #hashtag в ссылки. Пробел нулевой ширины между символом и текстом ломает совпадение, не меняя того, как оно читается.
Пара U+200B и word-break: keep-all отмечает разрешённые точки переноса в CJK-тексте, подавляя переносы в остальных местах. В спеке CSS Text это названо предполагаемым шаблоном.
Вставьте 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 поддерживается каждым современным браузером и большинством текстовых процессоров, где работает как точка возможного переноса. Спецификация CSS Text Module явно ссылается на него наряду с элементом <wbr> как на способ отметить точки переноса. В чатах и социальных сетях поддержка рваная. WhatsApp, Instagram и Discord принимают его в одних полях и вырезают в других. TikTok удаляет его из био. Игровые платформы редко принимают его в никах. Эмпирическое правило: в браузере или текстовом редакторе U+200B надёжен; в чате или социальном поле — сначала проверяйте и держите U+2800 или U+3164 как запасной вариант.
Он отмечает позицию, где строке разрешено разрываться. Сам символ невидим и не имеет ширины, но браузер или текстовый движок, выбирающий, где перенести длинную строку, сочтёт U+200B приемлемой точкой разрыва — без вставки дефиса.
Обычный пробел (U+0020) имеет видимую ширину и является пробельным символом. U+200B имеет нулевую ширину, является форматным символом, а не пробельным, и никогда не вставляет видимый промежуток. Его единственная функция — разрешать разрыв строки в выбранной точке внутри слова или строки.
Укажите количество выше и нажмите «Копировать». Символы попадут в буфер обмена без видимого признака, и это ожидаемо — вставьте в тестовое поле, чтобы убедиться, что они на месте.
Да. У него фиксированный код (U+200B), поэтому любой инструмент, инспектирующий Unicode, его найдёт. Поиск по этому коду найдёт каждое вхождение. Он невидим для людей, но не для ПО.
Его удалил очиститель ввода платформы. Чаты и соцсети часто фильтруют форматные символы нулевой ширины для защиты от злоупотреблений. Переключитесь на брайлевский пробел (U+2800) или хангыльский заполнитель (U+3164), которые классифицируются как символ и буква и обычно переживают фильтрацию.
Фактически да. Документация MDN указывает, что <wbr> ведёт себя как код U+200B. Оба отмечают точку возможного переноса без видимого глифа и без дефиса. Используйте <wbr> в HTML-разметке; используйте U+200B в простом тексте.