В типографике , и особенно в компьютерной типографии, пробел или пробел — это любой символ или серия символов, которые представляют горизонтальное или вертикальное пространство . При визуализации символ пробела не соответствует видимому знаку, но обычно занимает область на странице. Например, общий символ пробела U+0020 ПРОБЕЛ (также ASCII 32) представляет собой символ пунктуации пробела в тексте, используемый в качестве разделителя слов в западных сценариях .
Во многих раскладках клавиатуры пробельный символ можно ввести, нажав spacebar. Горизонтальные пробелы также можно вводить на многих клавиатурах с помощью клавиши , хотя длина пробела может различаться. Вертикальные пробелы можно ввести, набрав , что в большинстве программ создает последовательность кода новой строки. В некоторых системах оно имеет отдельное значение, но в других они объединены. Во многих ранних компьютерных играх для рисования экрана использовались пробельные символы (например, Kingdom of Kroz ).Tab ↹Return↵ 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 год оно еще не поддерживается повсеместно в браузерах. [ нужно обновить ] Тонкое пространство — это именованный объект и числовые ссылки или . Эти пробелы намного тоньше, чем обычное пространство (за исключением моноширинного (непропорционального) шрифта ), причем пространство для волос, в частности, является самым тонким из горизонтальных символов пробелов.[обновлять] 
 
 
В синтаксисе языка программирования для явного разделения токенов часто используются пробелы . В большинстве языков несколько пробельных символов обрабатываются так же, как один пробельный символ (за пределами строк в кавычках); такие языки называются свободной формой . В некоторых языках, включая Haskell , occam , ABC и Python , пробелы и отступы используются для синтаксических целей. В сатирическом языке под названием Whitespace символы пробелов являются единственными допустимыми символами для программирования, а любые другие символы игнорируются.
Чрезмерное использование пробелов, особенно пробелов в конце строк, считается неудобством. Однако правильное использование пробелов может облегчить чтение кода и помочь сгруппировать связанную логику.
Большинство языков распознают только символы ASCII как пробелы, а в некоторых случаях и символы новой строки Unicode, но не большинство символов, перечисленных выше. Язык C определяет пробельные символы как «пробел, горизонтальную табуляцию, новую строку, вертикальную табуляцию и перевод страницы». [29] Сетевой протокол HTTP требует использования разных типов пробелов в разных частях протокола, например: только символ пробела в строке состояния , CRLF в конце строки и «линейный пробел» в значениях заголовка. . [30]
В командах, обрабатываемых командными процессорами , например, в сценариях и набираемых, символ пробела может вызвать проблемы, поскольку он имеет две возможные функции: как часть команды или параметра или как параметр или разделитель имени . Неоднозначность можно предотвратить либо запретив вставленные пробелы, либо заключив имя со встроенными пробелами между символами кавычек.
Некоторые языки разметки , такие как 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, которое иногда корректируется.