Символ пробела — это символьный элемент данных , который представляет пробел при отображении текста на компьютере .
Например, символ пробела ( U+0020 SPACE , ASCII 32) представляет собой пробел , например разделитель слов в западном алфавите .
Печатаемый символ приводит к выводу при визуализации, а символ пробела — нет. Вместо этого символы пробелов в ограниченной степени определяют расположение текста, нарушая обычную последовательность отображения символов рядом друг с другом. Вывод последующих символов обычно смещается вправо (или влево для сценария с письмом справа налево ) или к началу следующей строки. Эффект от нескольких последовательных символов пробелов является накопительным, так что следующий печатаемый символ отображается в месте, основанном на накопленном эффекте предыдущих символов пробелов.
Термин «пробелы» уходит корнями в общепринятую практику отображения текста на белой бумаге . Обычно пробельный символ не отображается как белый. Он влияет на рендеринг, но сам не рендерится.
Символ пробела обычно вставляет горизонтальное пространство шириной примерно с букву. Для моноширинного шрифта ширина равна ширине буквы, а для шрифта переменной ширины ширина зависит от шрифта. Некоторые шрифты поддерживают несколько пробелов разной ширины.
Символ табуляции обычно вставляет горизонтальное пространство, основанное на позициях табуляции , которые различаются в зависимости от приложения .
Последовательность символов новой строки обычно перемещает место вывода рендеринга в начало следующей строки. Если следовать за текстом, это фактически не приводит к появлению пробелов. Но две последовательные последовательности новой строки между текстовыми блоками приводят к появлению пустой строки между блоками. Высота пустой строки зависит от приложения.
Использование пробелов для компоновки текста является общепринятым . Приложения иногда отображают пробельные символы как видимую разметку, чтобы пользователь мог видеть то, что обычно не видно.
Обычно пользователь вводит символ пробела, нажав spacebar, символ табуляции, нажав и новую строку, нажав .Tab ↹↵ Enter
В таблице ниже перечислены двадцать пять символов, определенных как пробелы («WSpace=Y», «WS») в базе данных символов Юникода . [1] Семнадцать используют определение пробелов, соответствующее алгоритму двунаправленной записи («Тип двунаправленного символа = WS»), и известны как символы «Bidi-WS». Остальные символы также можно использовать, но они не относятся к типу «Биди».
Примечание. В зависимости от браузера и шрифтов, используемых для просмотра следующей таблицы, не все пробелы могут отображаться правильно.
Unicode также предоставляет некоторые видимые символы, которые можно использовать для обозначения различных символов пробелов в контекстах, где видимый символ должен отображаться:
"SPC"
(аналогично U + 2420 шириной в одну ячейку). [20] [21]Текстовые редакторы , текстовые процессоры и настольные издательские программы различаются тем, как они представляют пробелы на экране и как они представляют пробелы на концах строк, длина которых превышает ширину экрана или столбца. В некоторых случаях пробелы отображаются просто как пустое пространство; в других случаях они могут быть представлены интерпунктом или другими символами. Для создания пробелов можно использовать множество различных символов (описанных ниже), а несимвольные функции (такие как поля и настройки табуляции) также могут влиять на пробелы.
Многие пробельные символы Юникода были созданы для совместимости с классической печатной типографикой. [27]
Даже если цифровая типографика имеет алгоритмический кернинг и выравнивание, эти пробелы при необходимости можно использовать для дополнения электронного форматирования.
В компьютерных кодировках символов имеется обычное пространство общего назначения (символ Юникода 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 "фу бар"
Некоторые языки разметки , такие как SGML , сохраняют пробелы в том виде, в каком они написаны.
Языки веб-разметки, такие как XML и HTML, специально обрабатывают пробельные символы, включая пробелы, для удобства программистов. Один или несколько пробельных символов, считываемых соответствующими процессорами времени отображения этих языков разметки, сжимаются до 0 или 1 пробела, в зависимости от их семантического контекста. Например, двойные (или более) пробелы в тексте сворачиваются в один пробел, а пробелы, которые появляются по обе стороны от знака " =
", отделяющего имя атрибута от его значения, не влияют на интерпретацию документа. Конечные теги элементов могут содержать конечные пробелы, а теги пустых элементов в XML могут содержать пробелы перед " />
". В этих языках ненужные пробелы увеличивают размер файла и могут замедлить передачу по сети. С другой стороны, ненужные пробелы также могут незаметно отмечать код, аналогично комментариям в коде, но менее очевидным. Это может быть желательно, чтобы доказать нарушение лицензии или авторских прав, совершенное путем копирования и вставки .
В значениях атрибутов XML последовательности символов пробелов обрабатываются как один пробел, когда документ читается анализатором. [31] Пробелы в содержимом XML-элемента не изменяются синтаксическим анализатором таким образом, но приложение, получающее информацию от синтаксического анализатора, может применить аналогичные правила к содержимому элемента. Автор XML-документа может использовать xml:space="preserve"
атрибут элемента, чтобы указать синтаксическому анализатору не допускать изменения нижестоящим приложением пробелов в содержимом этого элемента.
В большинстве элементов HTML последовательность символов пробелов рассматривается как один разделитель между словами , который может проявляться как одиночный символ пробела при рендеринге текста на языке, который обычно вставляет такой пробел между словами. [32] Соответствующие средства визуализации HTML должны применять более буквальную обработку пробелов в нескольких предписанных элементах, таких как pre
тег и любой элемент, для которого CSS использовался для применения pre
обработки пробелов. В таких элементах пробелы не будут «сворачиваться» в разделители между словами.
И в XML, и в HTML неразрывный пробел вместе с другими нестандартными пробелами не рассматривается как свертываемый «пробел», поэтому на него не распространяются приведенные выше правила.
Такое использование похоже на имена файлов, состоящие из нескольких слов, написанные для операционных систем и приложений, которые путаются из-за встроенных пробельных кодов — вместо этого в таких именах файлов используется подчеркивание ( _) в качестве разделителя слов, as_in_this_phrase.
Другим таким символом был U+2422 ␢ ПУСТОЙ СИМВОЛ . Это использовалось в первые годы компьютерного программирования при написании форм кодирования. Операторы Keypunch сразу распознали этот символ как «явный пробел». [16] Он использовался в BCDIC , [16] EBCDIC , [16] и ASCII-1963 . [16]
Пробелы фиксированной ширины (U+2000..U+200A) взяты из традиционной типографики (горячего вывода).
Алгоритмический кернинг и выравнивание в компьютерной типографике не используют эти символы.
Однако там, где они используются (например, при наборе математических формул), их ширина обычно задается шрифтом, и они обычно не расширяются при выравнивании.
Исключением является тонкое пространство U+2009, которое иногда корректируется.