Пробельный символ — это символьный элемент данных , представляющий собой пробел при отображении текста на компьютере .
Например, символ пробела ( U+0020 SPACE , ASCII 32) представляет собой пустое пространство, например разделитель слов в западном письме .
Печатный символ приводит к выводу при отображении, а пробельный символ — нет. Вместо этого пробельные символы определяют макет текста в ограниченной степени, прерывая обычную последовательность отображения символов рядом друг с другом. Вывод последующих символов обычно смещается вправо (или влево для письма справа налево ) или в начало следующей строки. Эффект нескольких последовательных пробельных символов является кумулятивным, так что следующий печатный символ отображается в месте, основанном на накопленном эффекте предыдущих пробельных символов.
Термин «пробел» берет свое начало в общепринятой практике отображения текста на белой бумаге . Обычно символ пробела не отображается как белый. Он влияет на отображение, но сам не отображается.
Символ пробела обычно вставляет горизонтальный пробел, который примерно такой же ширины, как буква. Для моноширинного шрифта ширина равна ширине буквы, а для шрифта переменной ширины ширина зависит от шрифта. Некоторые шрифты поддерживают несколько символов пробела, которые имеют разную ширину.
Символ табуляции обычно вставляет горизонтальное пространство, которое основано на позициях табуляции , которые различаются в зависимости от приложения .
Последовательность символов новой строки обычно перемещает место вывода рендеринга в начало следующей строки. Если она следует за текстом, она фактически не приводит к появлению пробела. Но две последовательные последовательности новой строки между текстовыми блоками приводят к появлению пустой строки между блоками. Высота пустой строки зависит от приложения.
Использование пробельных символов для разметки текста является соглашением. Приложения иногда отображают пробельные символы как видимую разметку, чтобы пользователь мог видеть то, что обычно не видно.
Обычно пользователь вводит символ пробела, нажимая spacebar, символ табуляции, нажимая , а символ новой строки, нажимая .Tab ↹↵ Enter
В таблице ниже перечислены двадцать пять символов, определенных как пробельные символы ("WSpace=Y", "WS") в базе данных символов Unicode . [1] Семнадцать используют определение пробельных символов, соответствующее алгоритму двунаправленного письма ("Bidirectional Character Type=WS"), и известны как символы "Bidi-WS". Остальные символы также могут использоваться, но не относятся к этому типу "Bidi".
Примечание: в зависимости от браузера и шрифтов, используемых для просмотра следующей таблицы, не все пробелы могут отображаться правильно.
Имя | Кодовая точка | Ширина коробки | Может сломаться ? | В IDN ? | Сценарий | Блокировать | Общая категория | Примечания | |
---|---|---|---|---|---|---|---|---|---|
табуляция символов | U+0009 | 9 | Да | Нет | Общий | Базовая латынь | Другое, контроль | HT, Горизонтальная табуляция . Именованная сущность HTML/XML : 	 , LaTeX : \tab , C escape:\t | |
подача строки | У+000А | 10 | Является ли переносом строки | Общий | Базовая латынь | Другое, контроль | LF, Перевод строки . Именованная сущность HTML/XML: 
 , C escape:\n | ||
строка табуляции | У+000Б | 11 | Является ли переносом строки | Общий | Базовая латынь | Другое, контроль | VT, вертикальная табуляция . C escape:\v | ||
подача формы | У+000С | 12 | Является ли переносом строки | Общий | Базовая латынь | Другое, контроль | FF, подача страницы . C escape:\f | ||
возврат каретки | У+000Д | 13 | Является ли переносом строки | Общий | Базовая латынь | Другое, контроль | CR, Возврат каретки . C escape:\r | ||
космос | U+0020 | 32 | Да | Нет | Общий | Базовая латынь | Разделитель, пространство | Наиболее распространенный (обычный пробел ASCII). LaTeX:\ | |
следующая строка | U+0085 | 133 | Является ли переносом строки | Общий | Дополнение Latin-1 | Другое, контроль | NEL, Следующая строка . LaTeX:\\ | ||
пространство без перерыва | У+00А0 | 160 | Нет | Нет | Общий | Дополнение Latin-1 | Разделитель, пространство | Неразрывный пробел : идентичен U+0020, но не является точкой, в которой может быть разорвана строка. HTML/XML именованная сущность: ,   , LaTeX:~ | |
огамический знак пространства | У+1680 | 5760 | Да | Нет | Огам | Огам | Разделитель, пространство | Используется для разделения слов в тексте огамом . Обычно вертикальная линия в вертикальном тексте или горизонтальная линия в горизонтальном тексте, но может также быть пустым пространством в шрифтах «без основы». Требуется шрифт огамом. | |
вчетвером | У+2000 | 8192 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Ширина одного en . U+2002 канонически эквивалентен этому символу; U+2002 предпочтительнее. | |
эм квадро | У+2001 | 8193 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Также известен как «баранина квадратная». Ширина в один em . U+2003 канонически эквивалентен этому символу; U+2003 предпочтительнее. | |
в пространстве | У+2002 | 8194 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Также известен как «орех». Ширина одного en . U+2000 En Quad канонически эквивалентен этому символу; предпочтительнее U+2002. HTML/XML именованная сущность:   , LaTeX: \enspace (пробел en LaTeX является неразрывным) | |
эм пространство | У+2003 | 8195 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Также известен как «баран». Ширина одного em . U+2001 Em Quad канонически эквивалентен этому символу; U+2003 предпочтительнее. HTML/XML именованная сущность:   , LaTeX:\quad | |
пространство из трех штук | У+2004 | 8196 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Также известен как «толстый пробел». Ширина — одна треть em. HTML/XML-именованная сущность:   , LaTeX: \; (толстый пробел LaTeX — это неразрывный пробел) | |
пространство из четырех клеток | У+2005 | 8197 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Также известно как «промежуток между строками». Ширина — одна четвертая часть em. HTML/XML-именованная сущность:   | |
пространство из шести клеток | У+2006 | 8198 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Одна шестая часть em в ширину. В компьютерной типографике иногда приравнивается к U+2009. | |
пространство для фигур | У+2007 | 8199 | Нет | Нет | Общий | Общая пунктуация | Разделитель, пространство | Интервал между цифрами . В шрифтах с моноширинными цифрами, равный ширине одной цифры. HTML/XML именованная сущность:   | |
пробел пунктуации | У+2008 | 8200 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Ширина узкой пунктуации в шрифте, т.е. ширина точки или запятой. [2] Именованная сущность HTML/XML:   | |
тонкое пространство | У+2009 | 8201 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Тонкий пробел ; одна пятая (иногда одна шестая) ширины em. Рекомендуется использовать в качестве разделителя тысяч для измерений, выполненных в единицах СИ . В отличие от U+2002 до U+2008, его ширина может быть скорректирована при наборе. [3] Именованный объект HTML/XML:   ,   , LaTeX: \, (тонкий пробел LaTeX является неразрывным пробелом) | |
пространство для волос | У+200А | 8202 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | Тоньше тонкого пробела. HTML/XML именованная сущность:   ,  | |
разделитель строк | У+2028 | 8232 | Является ли переносом строки | Общий | Общая пунктуация | Разделитель, линия | |||
разделитель абзацев | У+2029 | 8233 | Является ли переносом строки | Общий | Общая пунктуация | Разделитель, абзац | |||
узкое пространство без перерывов | У+202Ф | 8239 | Нет | Нет | Общий | Общая пунктуация | Разделитель, пространство | Узкий неразрывный пробел . По функциям схож с U+00A0 Неразрывный пробел. При использовании с монгольским его ширина обычно составляет одну треть обычного пробела; в другом контексте его ширина иногда напоминает ширину тонкого пробела (U+2009). LaTeX:\, | |
среднее математическое пространство | У+205Ф | 8287 | Да | Нет | Общий | Общая пунктуация | Разделитель, пространство | MMSP. Используется в математических формулах. Четыре восемнадцатых em. [4] В математической типографике ширина пробелов обычно указывается в целых кратных восемнадцатой em, и 4/18 em может использоваться в нескольких ситуациях, например, между a и + и между + и b в выражении a + b . [5] HTML/XML именованная сущность:   , LaTeX: \: (средний пробел LaTeX является неразрывным пробелом) | |
идеографическое пространство | У+3000 | 12288 | Да | Нет | Общий | Символы и пунктуация CJK | Разделитель, пространство | Ширина ячейки символа CJK ( полная ширина ). Используется, например, в тай тоу . |
Имя | Кодовая точка | Ширина коробки | Может сломаться ? | В IDN ? | Сценарий | Блокировать | Общая категория | Примечания | |
---|---|---|---|---|---|---|---|---|---|
монгольский разделитель гласных | У+180Е | 6158 | | Да | Нет | монгольский | монгольский | Другое, Формат | MVS. Узкий символ пробела, используемый в монгольском языке для придания двум последним символам слова разных форм. [6] Он больше не классифицируется как символ пробела (т. е. в категории Zs) в Unicode 6.3.0, хотя и классифицировался в предыдущих версиях стандарта. |
пространство нулевой ширины | У+200Б | 8203 | | Да | Нет | ? | Общая пунктуация | Другое, Формат | ZWSP, пробел нулевой ширины . Используется для обозначения границ слов в системах обработки текста при использовании скриптов, не использующих явные интервалы. Он похож на мягкий дефис , с той разницей, что последний используется для обозначения границ слогов и должен отображать видимый дефис, когда строка прерывается на нем. Именованный объект HTML/XML : [7] [c] ​ |
нулевая ширина несоединительный элемент | У+200С | 8204 | | Да | Контекстно-зависимый [12] | ? | Общая пунктуация | Другое, Формат | ZWNJ, несоединитель нулевой ширины . При размещении между двумя символами, которые в противном случае были бы соединены, ZWNJ заставляет их печататься в их конечной и начальной формах соответственно. Именованная сущность HTML/XML: ‌ |
соединитель нулевой ширины | У+200Д | 8205 | | Да | Контекстно-зависимый [13] | ? | Общая пунктуация | Другое, Формат | ZWJ, соединитель нулевой ширины . При размещении между двумя символами, которые в противном случае не были бы соединены, ZWJ заставляет их печататься в их соединенных формах. Может также использоваться для отображения соединяющихся форм изолированно. В зависимости от того, ожидается ли лигатура или конъюнкт по умолчанию, может либо вызывать (как в эмодзи и в сингальском языке ), либо подавлять (как в деванагари ) замену одним глифом, при этом все еще разрешая использование отдельных соединяющихся форм (в отличие от ZWNJ). Именованная сущность HTML/XML: ‍ |
соединитель слов | У+2060 | 8288 | | Нет | Нет | ? | Общая пунктуация | Другое, Формат | WJ, соединитель слов . Аналогично U+200B, но не является точкой, в которой может быть разорвана строка. Именованная сущность HTML/XML: ⁠ |
неразрывный пробел нулевой ширины | У+FEFF | 65279 | | Нет | Нет | ? | Арабские формы представления -B | Другое, Формат | Неразрывный пробел нулевой ширины . Используется в основном как знак порядка байтов . Использование в качестве указания на неразрывность устарело, начиная с Unicode 3.2; вместо этого см. U+2060. |
|
Unicode также предоставляет некоторые видимые символы, которые можно использовать для представления различных пробельных символов в контекстах, где должен отображаться видимый символ:
Код | Десятичная дробь | Имя | Блокировать | Отображать | Описание |
---|---|---|---|---|---|
U+00B7 | 183 | Средняя точка | Дополнение Latin-1 | · | Interpunct Именованная сущность: · |
У+21А1 | 8609 | Двусторонняя стрелка вниз | Стрелки | ↡ | Символ ECMA-17 / ISO 2047 для перевода страницы (разрыва страницы) [15] |
U+2261 | 8810 | Идентичен | Математические операторы | ≡ | Среди прочего, это символ ECMA-17 / ISO 2047 для перевода строки [15] |
У+237Д | 9085 | Открытый ящик с плечом | Разное техническое | ⍽ | Используется для обозначения NBSP |
U+23CE | 9166 | Возврат символа | Разное техническое | ⏎ | Символ клавиши возврата , которая вводит разрыв строки |
U+2409 | 9225 | Символ для горизонтальной табуляции | Контрольные картинки | ␉ | Заменяет символ табуляции |
У+240А | 9226 | Символ перевода строки | Контрольные картинки | ␊ | Заменители перевода строки |
У+240Б | 9227 | Символ для вертикальной табуляции | Контрольные картинки | ␋ | Заменяет вертикальную табуляцию (линейную табуляцию) |
У+240С | 9228 | Символ для подачи формы | Контрольные картинки | ␌ | Заменяет подачу страницы (разрыв страницы) |
У+240Д | 9229 | Символ возврата каретки | Контрольные картинки | ␍ | Заменители возврата каретки |
U+2420 | 9248 | Символ космоса | Контрольные картинки | ␠ | Заменяет пробел ASCII |
U+2422 | 9250 | Пустой символ | Контрольные картинки | ␢ | также известный как «заменитель пробела», [16] используемый в BCDIC , [16] EBCDIC , [16] ASCII-1963 [16] [17] и т. д. как символ для разделителя слов |
U+2423 | 9251 | Открытая коробка | Контрольные картинки | ␣ | Используется в печатном письме по крайней мере с 1980-х годов, когда необходимо явно указать количество пробелов (например, при программировании с помощью ручки и бумаги). Используется в учебнике (опубликованном в 1982, 1984, 1985, 1988 годах издательством Springer-Verlag) по Modula-2 [18] — языку программирования , где коды пробелов требуют явного указания. Также используется в клавиатуре [n 1] графических калькуляторов серии TI-8 x компании Texas Instruments . Именованная сущность:␣ |
U+2424 | 9252 | Символ новой строки | Контрольные картинки |  | Заменяет перенос строки |
У+25Б3 | 9651 | Белый треугольник вершиной вверх | Геометрические фигуры | △ | Среди прочего, это символ ECMA-17 / ISO 2047 для пространства ASCII [15] |
У+2А5Б | 10843 | Логическое «ИЛИ» со средней основой | Дополнительные математические операторы | ⩛ | Среди прочего, это символ ECMA-17 / ISO 2047 для вертикальной табуляции (линейная табуляция) [15] |
У+2ААА | 10922 | Меньше чем | Дополнительные математические операторы | ⪪ | Среди прочего, это символ возврата каретки ECMA-17 / ISO 2047 [15] |
У+2ААБ | 10923 | Больше чем | Дополнительные математические операторы | ⪫ | Среди прочего, это символ ECMA-17 / ISO 2047 для символа табуляции [15] |
U+3037 | 12343 | Идеографический телеграфный символ-разделитель перевода строки | Символы и пунктуация CJK | 〷 | Графическое обозначение, используемое для кода 9999 в китайском телеграфном коде , представляющее перевод строки |
"SPC"
(аналогичный символу Юникода U+2420 шириной в одну ячейку). [20] [21]Текстовые редакторы , текстовые процессоры и программное обеспечение для настольных издательских систем различаются тем, как они представляют пробелы на экране и как они представляют пробелы в концах строк, длиннее ширины экрана или столбца. В некоторых случаях пробелы отображаются просто как пустое пространство; в других случаях они могут быть представлены интерпунктом или другими символами. Для создания пробелов можно использовать множество различных символов (описанных ниже), а несимвольные функции (такие как поля и настройки табуляции) также могут влиять на пробелы.
Многие из символов пробела Unicode были созданы для совместимости с классической печатной типографикой. [27]
Даже если в цифровой типографии есть алгоритмический кернинг и выравнивание, эти пробельные символы можно использовать для дополнения электронного форматирования при необходимости.
В компьютерных кодировках символов есть обычный пробел общего назначения (символ Unicode U+0020), ширина которого будет варьироваться в зависимости от дизайна гарнитуры. Типичные значения варьируются от 1/5 em до 1/3 em (в цифровой типографике em равен номинальному размеру шрифта, поэтому для шрифта размером 10 пунктов пробел, вероятно, будет между 2 и 3,3 пунктами). Сложные шрифты могут иметь пробелы разного размера для жирных, курсивных и капительных шрифтов, и часто наборщики вручную регулируют ширину пробела в зависимости от размера и заметности текста.
В дополнение к этому универсальному пространству, можно закодировать пространство определенной ширины. Полный список см. в таблице ниже.
Длинные тире, используемые в качестве разделителей в скобках, и короткие тире , используемые в качестве соединителей слов, обычно устанавливаются непрерывно с текстом. [28] Однако такое тире может быть опционально окружено тонким пробелом , U+200A, или тонким пробелом , U+2009. Тонкий пробел может быть записан в HTML с помощью числовых ссылок на символы  
или  
, или именованной сущности  
, хотя это не поддерживается повсеместно в браузерах по состоянию на 2016 год. [ требуется обновление ] Тонкий пробел — это именованная сущность и числовые ссылки или . Эти пробелы намного тоньше обычного пробела (за исключением моноширинного (непропорционального) шрифта ), при этом тонкий пробел в частности является самым тонким из горизонтальных пробельных символов.[обновлять] 
 
 
Обычный пробел с длинным тире | лево — право |
---|---|
Тонкий пробел с длинным тире | лево — право |
Пространство для волос с длинным тире | лево — право |
Нет пробела с длинным тире | лево—право |
В большинстве языков программирования синтаксис пробельные символы могут использоваться для разделения токенов . Для языка свободной формы пробельные символы игнорируются процессорами кода (т. е. компилятором ). Даже когда синтаксис языка требует пробельных символов, часто несколько пробельных символов обрабатываются так же, как один. В языке правил «вне игры» пробельные символы отступа синтаксически значимы. В сатирическом и противоречивом языке , называемом Whitespace , пробельные символы являются единственными значимыми символами, а обычный текст игнорируется.
Правильное использование пробелов в исходном коде может группировать связанную логику и сделать код более понятным. Чрезмерное использование пробелов, в том числе в конце строки, где они не обеспечивают никакого поведения рендеринга, считается помехой.
Большинство языков распознают только пробельные символы, имеющие код ASCII. Они запрещают большинство или все перечисленные выше коды Unicode. Язык C определяет пробельные символы как «пробел, горизонтальную табуляцию, новую строку, вертикальную табуляцию и перевод страницы». [29] Сетевой протокол HTTP требует использования различных типов пробельных символов в разных частях протокола, например: только символ пробела в строке состояния , CRLF в конце строки и «линейный пробел» в значениях заголовков. [30]
Типичные парсеры командной строки используют символ пробела для разделения аргументов . Значение со встроенным символом пробела является проблематичным, поскольку оно приводит к тому, что значение анализируется как несколько аргументов. Обычно парсер позволяет избежать обычного анализа аргументов, заключив текст в кавычки.
Предположим, что требуется перечислить файлы в каталоге с именем "foo bar". Эта команда вместо этого перечисляет файлы, соответствующие "foo" или "bar":
ls foo бар
Эта команда правильно указывает один аргумент:
ls "foo bar"
Некоторые языки разметки , такие как SGML , сохраняют пробелы в том виде, в котором они написаны.
Языки веб-разметки, такие как XML и HTML, обрабатывают пробельные символы особым образом, включая пробельные символы, для удобства программистов. Один или несколько пробельных символов, считываемых соответствующими процессорами отображения времени этих языков разметки, сворачиваются в 0 или 1 пробел в зависимости от их семантического контекста. Например, двойные (или более) пробелы в тексте сворачиваются в один пробел, а пробелы, которые появляются по обе стороны от " =
", разделяющего имя атрибута от его значения, не оказывают никакого влияния на интерпретацию документа. Теги конца элемента могут содержать конечные пробелы, а теги пустых элементов в XML могут содержать пробелы перед " />
". В этих языках ненужные пробелы увеличивают размер файла и, таким образом, могут замедлять сетевую передачу данных. С другой стороны, ненужные пробелы также могут незаметно отмечать код, аналогично комментариям в коде, но менее очевидно. Это может быть желательно для доказательства нарушения лицензии или авторских прав, которое было совершено путем копирования и вставки .
В значениях атрибутов XML последовательности пробельных символов обрабатываются как один пробел, когда документ считывается парсером. [31] Пробелы в содержимом элемента XML не изменяются таким образом парсером, но приложение, получающее информацию от парсера, может выбрать применение аналогичных правил к содержимому элемента. Автор документа XML может использовать атрибут xml:space="preserve"
в элементе, чтобы дать парсеру указание воспрепятствовать нижестоящему приложению изменять пробелы в содержимом этого элемента.
В большинстве элементов HTML последовательность пробельных символов обрабатывается как один разделитель между словами , который может проявляться как один пробельный символ при отображении текста на языке, который обычно вставляет такой пробел между словами. [32] Соответствующие HTML-рендеры должны применять более буквальную обработку пробелов в пределах нескольких предписанных элементов, таких как pre
тег и любой элемент, для которого CSS использовался для применения pre
обработки пробелов по типу . В таких элементах пробельные символы не будут «сворачиваться» в разделители между словами.
Как в XML, так и в HTML символ неразрывного пробела , наряду с другими нестандартными пробелами, не рассматривается как сворачиваемый «пробел», поэтому на него не распространяются приведенные выше правила.
Такое использование похоже на многословные имена файлов, написанные для операционных систем и приложений, которые путаются из-за встроенных пробельных кодов — такие имена файлов вместо этого используют подчеркивание (_) в качестве разделителя слов, как_в_этой_фразе.
Другим таким символом был U+2422 ␢ ПУСТОЙ СИМВОЛ . Он использовался в ранние годы компьютерного программирования при написании на формах кодирования. Операторы перфоратора сразу же распознали этот символ как «явный пробел». [16] Он использовался в BCDIC , [16] EBCDIC , [16] и ASCII-1963 . [16]
Символы пробела фиксированной ширины (U+2000..U+200A) получены из обычной (горячеканальной) типографики. Алгоритмический кернинг и выравнивание в компьютерной типографике не используют эти символы. Однако там, где они используются (например, при наборе математических формул), их ширина обычно указывается шрифтом, и они, как правило, не расширяются во время выравнивания. Исключением является тонкий пробел U+2009, который иногда корректируется.