Введение
Символ компьютерного текстового файла, представляющий собой пробел.
Символ пробела – это элемент данных, который представляет собой пустое пространство при отображении текста компьютером. Например, символ пробела (ASCII 32) представляет собой пустое пространство, такое как разделитель слов в западных системах письма. При рендеринге печатаемый символ выдает результат, а символ пробела – нет. Вместо этого, символы пробела определяют компоновку текста в определенной степени, прерывая нормальную последовательность отображения символов рядом друг с другом. Вывод последующих символов обычно сдвигается вправо (или влево для систем письма, читаемых справа налево) или в начало следующей строки. Эффект нескольких последовательных символов пробела является кумулятивным, так что следующий печатаемый символ отображается в позиции, основанной на суммарном эффекте предшествующих символов пробела. Термин "пробел" происходит из распространенной практики отображения текста на белой бумаге. Обычно символ пробела не отображается белым цветом. Он влияет на отображение, но сам не является частью отображаемого текста.
rendered for display by a computer. For example, a space character (, ASCII 32) represents blank space such as a word divider in a Western script. A printable character results in output when rendered,
but a whitespace character does not. Instead, whitespace characters define the layout of text to a limited degree interrupting the normal sequence of rendering characters next to each other. The output of subsequent characters is typically shifted to the right (or to the left for right to left script) or to the start of the next line. The effect of multiple sequential whitespace characters is cumulative such that the next printable character is rendered in a location based on the accumulated effect of preceding whitespace characters. The term whitespace is rooting in the common practice of rendering text on white paper. Normally, a whitespace character is not rendered as white. It affects rendering, but it is not itself rendered.
Обзор
Пробельный символ обычно вставляет горизонтальный интервал, ширина которого примерно соответствует ширине буквы. Для моноширинного шрифта ширина равна ширине буквы, а для шрифта с переменной шириной – определяется шрифтом. Некоторые шрифты поддерживают несколько пробельных символов различной ширины. Символ табуляции обычно вставляет горизонтальный интервал, основанный на позициях табуляции, которые могут различаться в разных приложениях. Последовательность символов новой строки обычно перемещает позицию вывода в начало следующей строки. Если она следует за текстом, это не создает видимого пробельного символа. Однако две последовательные последовательности новой строки между текстовыми блоками создают пустую строку между ними. Высота пустой строки может различаться в разных приложениях. Использование пробельных символов для форматирования текста – общепринятая практика. Приложения иногда отображают пробельные символы как видимую разметку, чтобы пользователь мог видеть то, что обычно невидимо. Обычно пользователь вставляет пробельный символ, нажав клавишу «пробел», символ табуляции – клавишу «Tab», а новую строку – клавишу «Enter».
Юникод
В таблице ниже перечислены двадцать пять символов, определенных как символы пробельного пространства ("WSpace=Y", "WS") в базе данных символов Unicode. Семнадцать из них используют определение пробельного пространства, соответствующее алгоритму для двунаправленной записи ("Bidirectional Character Type=WS") и известны как символы "Bidi WS". Остальные символы также могут использоваться, но не относятся к этому типу "Bidi". Обратите внимание: в зависимости от используемого браузера и шрифтов, некоторые пробелы в следующей таблице могут отображаться некорректно.
На экране
Текстовые редакторы, текстовые процессоры и программы верстки отличаются способом отображения пробельных символов на экране, а также способом отображения пробелов в конце строк, превышающих ширину экрана или колонки. В некоторых случаях пробелы отображаются как пустое место, в других – точкой или другими символами. Для создания пробелов можно использовать множество различных символов (описанных ниже), а также на пробельные символы могут влиять несимвольные функции, такие как поля и настройки табуляции. Многие пробельные символы Unicode были созданы для обеспечения совместимости с классической печатной типографикой. Даже если цифровая типография использует алгоритмическую кернинга и выравнивание, эти символы пробела могут быть использованы для дополнения электронной форматировки при необходимости.
Общецелевое пространство с переменной шириной
В компьютерных кодировках символов существует обычный пробел общего назначения (символ Unicode U+0020), ширина которого меняется в зависимости от дизайна шрифта. Типичные значения находятся в диапазоне от 1/5 em до 1/3 em (в цифровой типографике em равен номинальному размеру шрифта, поэтому для шрифта размером 10 пунктов пробел, скорее всего, будет между 2 и 3,3 пунктами). В сложных шрифтах могут быть пробелы разной ширины для жирного, курсива и шрифта с прописными и строчными буквами, и часто наборщики вручную корректируют ширину пробела в зависимости от размера и выразительности текста. Помимо этого пробела общего назначения, можно закодировать пробел фиксированной ширины. Полный список приведен в таблице ниже.
Языки программирования
В большинстве синтаксисов языков программирования символы пробела могут использоваться для разделения токенов. В языке со свободной формой символы пробела игнорируются обработчиками кода (т.е. компилятором). Даже если синтаксис языка требует пробелов, часто несколько символов пробела обрабатываются так же, как и один. В языке с правилами отступов пробелы, используемые для отступов, имеют синтаксическое значение. В сатирическом и противоречивом языке под названием Whitespace, символы пробела являются единственными значимыми символами, а обычный текст игнорируется. Правильное использование пробелов в исходном коде может объединять связанную логику и облегчать понимание кода. Чрезмерное использование пробелов, включая пробелы в конце строки, где они не влияют на отображение, считается неудобством. Большинство языков распознают только символы пробела с кодами ASCII. Они не допускают большинство или все кодов Unicode, перечисленных выше. Язык C определяет символы пробела как "пробел, горизонтальная табуляция, новая строка, вертикальная табуляция и перевод страницы". Сетевой протокол HTTP требует использования различных типов пробелов в разных частях протокола, например: только символ пробела в строке состояния, CRLF в конце строки и "линейный пробел" в значениях заголовков.
Языки разметки
Некоторые языки разметки, такие как SGML, сохраняют пробелы в том виде, в котором они написаны. Веб-языки разметки, такие как XML и HTML, по соображениям удобства программистов, по-особенному обрабатывают символы пробелов, включая обычные пробелы. Один или несколько пробелов, считываемых соответствующими обработчиками отображения этих языков разметки, приводятся к 0 или 1 пробелу, в зависимости от их семантического контекста. Например, двойные (или более) пробелы в тексте сводятся к одному пробелу, а пробелы, расположенные по обе стороны от знака "=", разделяющего имя атрибута и его значение, не влияют на интерпретацию документа. Закрывающие теги элементов могут содержать завершающие пробелы, а пустые теги элементов в XML могут содержать пробелы перед "/>". В этих языках избыточные пробелы увеличивают размер файла и, следовательно, могут замедлять сетевые передачи. С другой стороны, избыточные пробелы также могут незаметно маркировать код, подобно, но менее явно, чем комментарии в коде. Это может быть полезно для доказательства нарушения лицензии или авторских прав, допущенного путем копирования и вставки. В значениях атрибутов XML последовательности символов пробелов рассматриваются как один пробел при чтении документа парсером. Парсер не изменяет пробелы в содержимом элемента XML таким образом, но приложение, получающее информацию от парсера, может выбрать применение аналогичных правил к содержимому элемента. Автор XML-документа может использовать атрибут xml:space="preserve" в элементе, чтобы указать парсеру не допускать изменения пробелов в содержимом этого элемента последующим приложением. В большинстве элементов HTML последовательность символов пробелов рассматривается как один разделитель между словами, который может отображаться как один пробельный символ при отображении текста на языке, который обычно вставляет такие пробелы между словами. Соответствующие HTML-рендереры должны применять более буквальную обработку пробелов в нескольких предопределенных элементах, таких как тег `<pre>` и любой элемент, для которого CSS используется для применения обработки пробелов, аналогичной `<pre>`. В таких элементах символы пробелов не будут "сворачиваться" в разделители между словами. Как в XML, так и в HTML, неразрывный пробел и другие "нестандартные" пробелы не рассматриваются как сворачиваемые "пробелы" и, следовательно, не подлежат вышеуказанным правилам.
Имена файлов
Такое использование аналогично многословным именам файлов, создаваемым для операционных систем и приложений, которые некорректно обрабатывают встроенные пробелы. Вместо пробелов в таких именах файлов используется символ подчеркивания ( _ ) в качестве разделителя слов, как и в этой фразе. Другой подобный символ использовался в ранние годы компьютерного программирования при записи на перфокарты. Операторы перфораторов сразу же узнавали этот символ как "явный пробел". Он применялся в кодировках BCDIC, EBCDIC и ASCII в 1963 году.