Символы нулевой ширины

Чтобы контролировать внешний вид и поведение текста, обычного пробела не хватает. Например, отделяю пробелом в шестую часть кегля единицы измерения от значений. Или склеиваю предлоги с последующими словами. С раскладкой Бирмана неразрывный пробел вводить легко, но с пробелами, меньше обычного, она не помогает. Поэтому копировал их со страницы «Все о пробелах». Там вконце — таблица. Но всего нужного там нет. Из символов нулевой ширины есть только третий:

Название Юникод ХТМЛ Мнемоника
1 Zero Width No-break Space U+FEFF 
2 Word Joiner U+2060 ⁠ ⁠
3 Zero Width ​Space U+200B ​ ​
4 Zero Width Joiner U+200D ‍ ‍
5 Zero Width Non-joiner U+200C ‌ ‌

Не все эти символы — пробелы. Работают они похожим образом, поэтому их можно перепутать.

В свежем стандарте Юникода (3.2) «Word Joiner» заменил «Zero Width No-break Space», и о последнем можно забыть, несмотря на стройность названия. «Word Joiner» — непробел, но как и пробел определяет границы слов. Это влияет на поиск, парсинг, сортировку и прочее. Символ подходит для склейки конструкций вроде «км/ч» (км⁠/⁠ч).

«Zero Width ​Space» похож на «Word Joiner», но не склеивает слова и растягиваться при выключке по ширине, как прочие пробелы.

Управление внутри слова поручают «Zero Width Non-joiner» и «Zero Width Joiner». Например, чтобы отменить или задать лигатуру (конечно, при наличии нужных символов в шрифте). Эти символы используют в арабской, индийской, тайской, корейской и прочих письменностях без пробелов.

Поделиться
Отправить
1 комментарий
Никита Качаев

Кирилл, а можно больше примеров нафига они нужны? Про лигатуру понял, а ещё?

Кирилл Беляев

Традиционно в английском длинное тире (em dash) не отбивается пробелами от предыдущего и последующего слова. Чтобы одиночное тире не перенеслось на новую строку, его можно «отбить» неразрывный пробел нулевой ширины. Именно пробелом, потому что другие символы объявят тире частью предыдущего слова.

Других примеров не вспомню. Но подчеркну, что, даже если нужен только один символ из пяти, важно понять, как его выбрать. На русском мне хватает «Zero Width Joiner», но пока не разобрался, использовал всё подряд.

Популярное