stringtranslate.com

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

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

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

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

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

Обзор

Ширина различных пробельных символов Юникода

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

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

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

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

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

Юникод

В таблице ниже перечислены двадцать пять символов, определенных как пробелы («WSpace=Y», «WS») в базе данных символов Юникода . [1] Семнадцать используют определение пробелов, соответствующее алгоритму двунаправленной записи («Тип двунаправленного символа = WS»), и известны как символы «Bidi-WS». Остальные символы также можно использовать, но они не относятся к типу «Биди».

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

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

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

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

Пробелы без пробелов

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

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

Экранное меню

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

Многие пробельные символы Юникода были созданы для совместимости с классической печатной типографикой. [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]

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

Рекомендации

  1. ^ «Стандарт Юникод». Консорциум Юникод.
  2. ^ «Стандарты дизайна персонажей - пробелы» . Стандарты дизайна персонажей . Майкрософт . 1998–1999 гг. Архивировано из оригинала 14 марта 2010 года . Проверено 18 мая 2009 г.
  3. ^ Стандарт Unicode 5.0, печатное издание, стр. 205; также доступно в «Главе 6 — Системы письма и пунктуации» (PDF) . Стандарт Unicode 5.0, электронное издание. Консорциум Юникод . 14 июля 2006 г. п. 11 (205) . Проверено 22 декабря 2022 г.
  4. ^ «Общая пунктуация» (PDF) . Стандарт Юникод 5.1 . Юникод Инк . 1991–2008 гг . Проверено 13 мая 2009 г.
  5. ^ Сарджент, Мюррей III (29 августа 2006 г.). «Математическое кодирование почти простого текста в Юникоде (версия 2)». Техническое примечание Unicode №28 . Юникод Инк . стр. 19–20 . Проверено 19 мая 2009 г.
  6. ^ Гиллам, Ричард (2002). Демистификация Unicode: Практическое руководство программиста по стандарту кодирования . Аддисон-Уэсли. ISBN 0-201-70052-2.
  7. ^ Аб Хиксон, Ян . «12.5 Ссылки на именованные символы». Стандарт HTML . ЧТОРГ .
  8. ^ Вольфрам . «\[NegativeThickSpace]». Документация по языку Wolfram .
  9. ^ Вольфрам . «\[NegativeMediumSpace]». Документация по языку Wolfram .
  10. ^ Вольфрам . «\[NegativeThinSpace]». Документация по языку Wolfram .
  11. ^ Вольфрам . «\[NegativeVeryThinSpace]». Документация по языку Wolfram .
  12. ^ Фальтстрем, П., изд. (август 2010 г.). «Нулевая ширина без соединения». Кодовые точки Unicode и интернационализированные доменные имена для приложений (IDNA). IETF . сек. А.1. дои : 10.17487/RFC5892 . РФК 5892 . Проверено 4 сентября 2019 г.
  13. ^ Фальтстрем, П., изд. (август 2010 г.). «Столяр нулевой ширины». Кодовые точки Unicode и интернационализированные доменные имена для приложений (IDNA). IETF . сек. А.2. дои : 10.17487/RFC5892 . РФК 5892 . Проверено 4 сентября 2019 г.
  14. ^ «Стандартное приложение Юникода № 44, База данных символов Юникода» .
  15. ^ abcdef Европейская ассоциация производителей компьютеров (1968-11-28). Графическое представление управляющих символов 7-битного набора кодированных символов ECMA для обмена информацией (PDF) . ЭКМА-17.
  16. ^ abcdefgh Маккензи, Чарльз Э. (1980). Кодированные наборы символов, история и развитие. Серия системного программирования (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 . Проверено 22 мая 2016 г.[1]
  17. ^ «Американский стандартный код обмена информацией, ASA X3.4-1963» . Американская ассоциация стандартов (ASA). 17 июня 1963 г.
  18. ^ Никлаус Вирт, Программирование в Модуле-2
  19. ^ «Руководство пользователя Cambridge Z88» . 4.7 (4-е изд.). Кембридж Компьютер Лимитед . 2016 [1987]. Основные понятия - Клавиатура. Архивировано из оригинала 12 декабря 2016 г. Проверено 12 декабря 2016 г.
  20. ^ abc «Руководство пользователя Cambridge Z88». 4.0 (4-е изд.). Кембридж Компьютер Лимитед . 1987. Приложение D. Архивировано из оригинала 12 декабря 2016 г. Проверено 12 декабря 2016 г.
  21. ^ abc «Руководство пользователя Cambridge Z88». 4.7 (4-е изд.). Кембридж Компьютер Лимитед . 2015 [1987]. Приложение D. Архивировано из оригинала 12 декабря 2016 г. Проверено 12 декабря 2016 г.
  22. ^ Таблица Unicode U + 2800, образцы Брайля
  23. ^ Чунг, Джемин (30 марта 2017 г.). Предложение добавить информационную заметку к U+3164 HANGUL FILLER (PDF) . Консорциум Юникод . 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, электронное издание. Консорциум Юникод . 13 сентября 2022 г. стр. 12–13 (267–268) . Проверено 23 декабря 2022 г. Пробелы фиксированной ширины (U+2000..U+200A) взяты из традиционной типографики (горячего вывода). Алгоритмический кернинг и выравнивание в компьютерной типографике не используют эти символы. Однако там, где они используются (например, при наборе математических формул), их ширина обычно задается шрифтом, и они обычно не расширяются при выравнивании. Исключением является тонкое пространство U+2009, которое иногда корректируется.
  28. ^ Использование различных типов тире проиллюстрировано, например, в Чикагском руководстве по стилю , §§ 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 Нормализация значений атрибутов» . Расширяемый язык разметки (XML) 1.0 (пятое издание) . Консорциум Всемирной паутины.
  32. ^ «9.1 Пробелы» . Спецификация W3CHTML 4.01 . Консорциум Всемирной паутины.

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