Пробел нулевой ширины в типографике¶
Пробел нулевой ширины (англ. zero-width space, ZWSP, U+200B) — типографский символ, не имеющий видимой ширины, но используемый для указания мест возможного переноса строки или для разделения слов без визуального разрыва. В отличие от обычного пробела, он не создаёт горизонтального отступа, однако позволяет текстовым редакторам и браузерам разрывать строку в этой точке, если слово не помещается в текущей строке.
¶История и стандартизация
Символ U+200B был включён в стандарт Unicode в версии 1.1 (1993 год) в блоке «Общая пунктуация» (General Punctuation). Его появление связано с необходимостью типографской обработки текстов на языках, где отсутствуют пробелы (например, тайский, кхмерский, лаосский), а также с задачами вёрстки длинных слов и аббревиатур. В более ранних кодировках (ISO 8859, CP1251) символ отсутствовал, что создавало трудности при переносе текстов между платформами.
В стандарте HTML и CSS пробел нулевой ширины может быть задан через сущность ​ или свойство word-break: break-all с соответствующими маркерами. В языках программирования (Python, JavaScript, C++) символ поддерживается через Unicode-эскейпы (\u200B).
¶Применение
¶Типографика и вёрстка
Основная функция ZWSP — управление переносами. Вставка символа внутрь длинного слова (например, в химических формулах, терминах или URL-адресах) позволяет браузеру разорвать строку в этой позиции, не добавляя дефиса и не нарушая читаемость. Это особенно актуально для адаптивной вёрстки, где ширина контейнера может изменяться.
¶Обработка текста
В программах обработки текста (Microsoft Word, Adobe InDesign) ZWSP используется как невидимый разделитель, который не создаёт видимого пробела, но позволяет выполнять выравнивание и переносы. В некоторых системах он применяется для предотвращения склеивания слов при копировании из PDF.
¶Программирование и данные
В разработке ZWSP применяется для:
- разделения длинных строк кода или идентификаторов без изменения их внешнего вида;
- защиты от нежелательного переноса в интерфейсах;
- создания «невидимых» разделителей в данных, например, в сериализованных строках.
¶Проблемы и критика
¶Уязвимости безопасности
Пробел нулевой ширины часто используется в фишинговых атаках. Злоумышленники вставляют ZWSP в доменные имена или ссылки, чтобы имитировать легитимные адреса. Например, строка example.com с невидимым символом внутри может выглядеть идентично оригиналу, но вести на другой ресурс. Браузеры и почтовые клиенты постепенно внедряют защиту от таких подмен, однако полностью проблема не решена.
¶Проблемы доступности
Символ невидим, но экранные дикторы (screen readers) могут игнорировать его или, наоборот, делать неестественные паузы. Это создаёт трудности для пользователей с нарушениями зрения при чтении текста с ZWSP.
¶Ошибки ввода и обработки
Из-за невидимости символа его случайное попадание в текст (например, при копировании из веб-страницы) может вызывать ошибки в базах данных, поисковых системах и системах проверки орфографии. Символ не отображается в большинстве редакторов, что затрудняет его обнаружение и удаление.
¶Спам и модерация
ZWSP используется для обхода фильтров в социальных сетях и мессенджерах: вставка символа в запрещённое слово (например, в оскорбление или рекламный хэштег) позволяет обойти автоматическую модерацию. Это привело к тому, что многие платформы начали удалять символ при вводе текста.
¶Альтернативы
Существуют схожие символы:
- Соединитель слов (word joiner, U+2060) — предотвращает перенос строки в точке вставки, не создавая видимого пробела.
- Узкий неразрывный пробел (U+202F) — видимый пробел малой ширины, запрещающий перенос.
- Мягкий перенос (soft hyphen, U+00AD) — невидимый символ, который отображается как дефис только при переносе строки.
В отличие от ZWSP, мягкий перенос добавляет видимый дефис при разрыве, что не всегда желательно.
¶Интересные факты
- В некоторых шрифтах ZWSP может иметь ненулевую ширину из-за ошибок настройки метрик, что приводит к появлению «призрачных» отступов.
- В языке программирования Rust символ ZWSP в строковых литералах вызывает ошибку компиляции, что используется как защита от случайной вставки.
- Некоторые мессенджеры (например, Telegram) автоматически удаляют ZWSP из сообщений для предотвращения скрытого форматирования.
¶Источники
- Unicode Standard, версия 15.0, раздел «General Punctuation».
- W3C Recommendation «CSS Text Module Level 3», раздел о переносах строк.
- Документация Microsoft Typography по символам управления.
- Отчёты по безопасности OWASP о фишинговых атаках с использованием Unicode-символов.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


