stringtranslate.com

Пробельный символ

Пробельный символ — это символьный элемент данных , представляющий собой пробел при отображении текста на компьютере .

Например, символ пробела ( U+0020 SPACE , ASCII 32) представляет собой пустое пространство, например разделитель слов в западном письме . 

Печатный символ приводит к выводу при отображении, а пробельный символ — нет. Вместо этого пробельные символы определяют макет текста в ограниченной степени — прерывая обычную последовательность отображения символов рядом друг с другом. Вывод последующих символов обычно смещается вправо (или влево для письма справа налево ) или в начало следующей строки. Эффект нескольких последовательных пробельных символов является кумулятивным, так что следующий печатный символ отображается в месте, основанном на накопленном эффекте предыдущих пробельных символов.

Термин «пробел» берет свое начало в общепринятой практике отображения текста на белой бумаге . Обычно символ пробела не отображается как белый. Он влияет на отображение, но сам не отображается.

Обзор

Ширина различных символов пробела Unicode

Символ пробела обычно вставляет горизонтальный пробел, который примерно такой же ширины, как буква. Для моноширинного шрифта ширина равна ширине буквы, а для шрифта переменной ширины ширина зависит от шрифта. Некоторые шрифты поддерживают несколько символов пробела, которые имеют разную ширину.

Символ табуляции обычно вставляет горизонтальное пространство, которое основано на позициях табуляции , которые различаются в зависимости от приложения .

Последовательность символов новой строки обычно перемещает место вывода рендеринга в начало следующей строки. Если она следует за текстом, она фактически не приводит к появлению пробела. Но две последовательные последовательности новой строки между текстовыми блоками приводят к появлению пустой строки между блоками. Высота пустой строки зависит от приложения.

Использование пробельных символов для разметки текста является соглашением . Приложения иногда отображают пробельные символы как видимую разметку, чтобы пользователь мог видеть то, что обычно не видно.

Обычно пользователь вводит символ пробела, нажимая spacebar, символ табуляции, нажимая , а символ новой строки, нажимая .Tab ↹↵ Enter

Юникод

В таблице ниже перечислены двадцать пять символов, определенных как пробельные символы ("WSpace=Y", "WS") в базе данных символов Unicode . [1] Семнадцать используют определение пробельных символов, соответствующее алгоритму двунаправленного письма ("Bidirectional Character Type=WS"), и известны как символы "Bidi-WS". Остальные символы также могут использоваться, но не относятся к этому типу "Bidi".

Примечание: в зависимости от браузера и шрифтов, используемых для просмотра следующей таблицы, не все пробелы могут отображаться правильно.

Заменить изображения

Unicode также предоставляет некоторые видимые символы, которые можно использовать для представления различных пробельных символов в контекстах, где должен отображаться видимый символ:

  1. ^ Над клавишей нуля «0» или отрицательной «(‒)».
Точное пространство

Непробелы

Пробелы и цифровая типографика

В Чикагском руководстве по стилю изложены правила использования пробелов разного размера.

Отображение на экране

Текстовые редакторы , текстовые процессоры и программное обеспечение для настольных издательских систем различаются тем, как они представляют пробелы на экране и как они представляют пробелы в концах строк, длиннее ширины экрана или столбца. В некоторых случаях пробелы отображаются просто как пустое пространство; в других случаях они могут быть представлены интерпунктом или другими символами. Для создания пробелов можно использовать множество различных символов (описанных ниже), а несимвольные функции (такие как поля и настройки табуляции) также могут влиять на пробелы.

Многие из символов пробела 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]

Смотрите также

Ссылки

  1. ^ "Стандарт Unicode". Консорциум Unicode.
  2. ^ "Стандарты дизайна персонажей – космические персонажи". Стандарты дизайна персонажей . Microsoft . 1998–1999. Архивировано из оригинала 14 марта 2010 г. Получено 2009-05-18 .
  3. ^ The Unicode Standard 5.0, печатное издание, стр. 205; также доступно в "Глава 6 — Системы письма и пунктуация" (PDF) . The Unicode Standard 5.0, электронное издание. Unicode Consortium . 2006-07-14. стр. 11 (205) . Получено 2022-12-22 .
  4. ^ "Общая пунктуация" (PDF) . Стандарт Unicode 5.1 . Unicode Inc . 1991–2008 . Получено 2009-05-13 .
  5. ^ Сарджент, Мюррей III (29.08.2006). «Unicode Almostly Plain Text Encoding of Mathematics (Version 2)». Unicode Technical Note #28 . Unicode Inc . стр. 19–20 . Получено 19.05.2009 .
  6. ^ Гиллам, Ричард (2002). Unicode Demystified: A Practical Programmer's Guide to the Encoding Standard . Addison-Wesley. ISBN 0-201-70052-2.
  7. ^ ab Hickson, Ian . "12.5 Ссылки на именованные символы". Стандарт HTML . WHATWG .
  8. ^ Вольфрам . "\[NegativeThickSpace]". Документация по языку Wolfram .
  9. ^ Вольфрам . "\[NegativeMediumSpace]". Документация по языку Wolfram .
  10. ^ Вольфрам . "\[NegativeThinSpace]". Документация по языку Wolfram .
  11. ^ Вольфрам . "\[NegativeVeryThinSpace]". Документация по языку Wolfram .
  12. ^ Faltstrom, P., ред. (август 2010 г.). "Zero Width Non-Joiner". Кодовые точки Unicode и интернационализированные доменные имена для приложений (IDNA). IETF . раздел A.1. doi : 10.17487/RFC5892 . RFC 5892. Получено 4 сентября 2019 г.
  13. ^ Фальтстром, П., ред. (август 2010 г.). "Zero Width Joiner". Кодовые точки Unicode и интернационализированные доменные имена для приложений (IDNA). IETF . раздел A.2. doi : 10.17487/RFC5892 . RFC 5892. Получено 4 сентября 2019 г.
  14. ^ «Приложение № 44 к стандарту Unicode, База данных символов Unicode».
  15. ^ abcdef Европейская ассоциация производителей компьютеров (1968-11-28). Графическое представление управляющих символов 7-битного кодированного набора символов ECMA для обмена информацией (PDF) . ECMA-17.
  16. ^ abcdefgh Маккензи, Чарльз Э. (1980). Coded Character Sets, History and Development (PDF) . The Systems Programming Series (1-е изд.). Addison-Wesley Publishing Company, Inc. стр. 41, 47, 52, 102–103, 117, 119, 130, 132, 141, 148, 150–151, 212, 424. ISBN 978-0-201-14460-4. LCCN  77-90165. Архивировано (PDF) из оригинала 26 мая 2016 г. Получено 25 августа 2019 г.
  17. ^ "Американский стандартный код для обмена информацией, ASA X3.4-1963". Американская ассоциация стандартов (ASA). 1963-06-17.
  18. ^ Вирт, Никлаус (1988). Программирование в Модуле-2 (PDF) . дои : 10.1007/978-3-642-83565-0. ISBN 978-3-642-83567-4.
  19. ^ "Cambridge Z88 User Guide". 4.7 (4-е изд.). Cambridge Computer Limited . 2016 [1987]. Основные понятия - Клавиатура. Архивировано из оригинала 2016-12-12 . Получено 2016-12-12 .
  20. ^ abc "Cambridge Z88 User Guide". 4.0 (4-е изд.). Cambridge Computer Limited . 1987. Приложение D. Архивировано из оригинала 2016-12-12 . Получено 2016-12-12 .
  21. ^ abc "Cambridge Z88 User Guide". 4.7 (4-е изд.). Cambridge Computer Limited . 2015 [1987]. Приложение D. Архивировано из оригинала 2016-12-12 . Получено 2016-12-12 .
  22. ^ Таблица Unicode U+2800, образцы Брайля
  23. ^ Чунг, Джаэмин (2017-03-30). Предложение добавить информативное примечание к U+3164 HANGUL FILLER (PDF) . Консорциум Unicode . UTC L2/17-081.
  24. ^ Хангыль Джамо (PDF) . Консорциум Юникод . 2020-10-25.
  25. ^ "ibm-933_P110-1995". Демонстрация ICU - Converter Explorer . Международные компоненты для Unicode .
  26. ^ "ibm-933_P110-1995 (ведущие байты 0E84)". Демонстрация ICU - Converter Explorer . Международные компоненты для Unicode .
  27. ^ "Глава 6 — Системы письма и пунктуация" (PDF) . Стандарт Unicode 15.0, электронное издание. Консорциум Unicode . 2022-09-13. стр. 12–13 (267–268) . Получено 2022-12-23 . Символы пробела фиксированной ширины (U+2000..U+200A) получены из обычной (горячеканальной) типографики. Алгоритмический кернинг и выравнивание в компьютерной типографике не используют эти символы. Однако там, где они используются (например, при наборе математических формул), их ширина обычно указывается шрифтом, и они, как правило, не расширяются во время выравнивания. Исключением является тонкий пробел U+2009, который иногда корректируется.
  28. ^ Использование различных типов тире проиллюстрировано, например, в The Chicago Manual of Style , §§ 6.80, 6.83–6.86.
  29. ^ http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf Раздел 6.4, абзац 3
  30. ^ Филдинг, Р. и др. (июнь 1999 г.), «2.2 Основные правила», Протокол передачи гипертекста — HTTP/1.1 , doi : 10.17487/RFC2616, RFC 2616 
  31. ^ "3.3.3 Нормализация атрибутов и значений". Extensible Markup Language (XML) 1.0 (пятое издание) . World Wide Web Consortium.
  32. ^ "9.1 Пробелы". Спецификация W3CHTML 4.01 . Консорциум Всемирной паутины.

Внешние ссылки