Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

В компьютерном программировании , пробельные является любой символ или последовательность символов , которые представляют собой горизонтальное или вертикальное пространство в типографике . При визуализации пробельный символ не соответствует видимой метке, но обычно занимает область на странице. Например, общий символ пробела U + 0020 SPACE (также ASCII 32) представляет собой пробел в тексте, используемый в качестве разделителя слов в западных шрифтах . 

Обзор [ править ]

Относительная ширина различных пробелов в Юникоде

Во многих раскладках клавиатуры пробельный символ можно вводить с помощью символа spacebar. Горизонтальные пробелы также могут быть введены на многих клавиатурах с помощью Tab ↹клавиши, хотя длина пробела может варьироваться. Вертикальные пробелы немного более разнообразны в отношении того, как они кодируются, но наиболее очевидным при вводе является ↵ Enterрезультат, который создает последовательность кода «новой строки» в прикладных программах. Вместо этого на старых клавиатурах можно было бы сказать Return, сокращая клавиатуру пишущей машинки, означающую «возврат каретки», которая генерировала электромеханический возврат к левому упору (код CR в ASCII- шестнадцатеричный& 0D;) и перевод строки или переход к следующей строке (код LF в шестнадцатеричном формате ASCII & 0A;); в некоторых приложениях они независимо использовались для рисования дисплеев на основе текстовых ячеек на мониторах или для печати на управляемых трактором принтерах, которые также могли содержать последовательности кодов обратного движения / позиционирования, позволяющие устройствам вывода на основе текста обеспечивать более сложный вывод. Многие ранние компьютерные игры использовали такие коды для рисования экрана (например, Kingdom of Kroz ), а программное обеспечение для обработки текстов использовало бы их для создания печатных эффектов, таких как жирный шрифт, подчеркивание и зачеркивание.

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

Определение и двусмысленность [ править ]

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

Юникод [ править ]

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

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

Заменить изображения [ править ]

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

  1. ^ Над нулевым «0» или отрицательным «(-)» ключом.
Точное место
  • Cambridge Z88 предусмотрен специальный «точное пространство» (код пункт 160 аки 0xa0) (доступно посредством клавиши быстрого доступа + SPACE, [19] ) отображается как «...» драйвер дисплея операционной системы. [20] [21] Поэтому он также был известен как «точечное пространство» в сочетании с BBC BASIC . [20] [21]
  • Под кодовой точкой 224 (0xE0) компьютер также предоставил специальный символ SPACE для трех ячеек «SPC» (аналогично U + 2420 для одной ячейки Unicode). [20] [21]

Пробелы [ править ]

  • Блок Unicode шаблонов Брайля содержит U + 2800BRAILLE PATTERN BLANK (HTML  ), шаблон Брайля без выпуклых точек. Некоторые шрифты отображают символ как пробел фиксированной ширины, однако в стандарте Unicode явно указано, что он не действует как пробел. [22] ⠀
  • Покрытие Unicode корейского алфавита включает несколько кодовых точек, которые представляют отсутствие письменной буквы и, следовательно, не отображают глиф:
    • Unicode включает символ- заполнитель хангыль в блоке Jamo совместимости с хангыль ( U + 3164HANGUL FILLER (HTML  )). Это классифицируется как буква, но отображается как пустое место, как блок хангыль, не содержащий джамо. Он используется в комбинирующих последовательностях KS X 1001 Hangul, чтобы представить их или обозначить отсутствие буквы в позиции, но не в комбинирующей системе джамо Unicode. [23] ㅤ
    • Комбинированная система джамо Unicode использует аналогичные символы Hangul Choseong Filler и Hangul Jungseong Filler для обозначения отсутствия буквы в начальной или средней позиции внутри блока слога, которые включены в блок Hangul Jamo ( U + 115F ᅟ HANGUL CHOSEONG FILLER (HTML  ) , U + 1160HANGUL JUNGSEONG FILLER (HTML  )). [24] ᅟ ᅠ
    • Кроме того, заполнитель хангыль с половинной шириной включен в формы половинной и полной ширины ( U + FFA0HANGUL FILLER HALFWIDTH (HTML  )), который используется при сопоставлении кодировок, которые включают символы как из Джохаба (или Вансунга ), так и из N-байтового хангыля ( или его аналог EBCDIC ), например IBM-933, который включает как заполнители Johab, так и EBCDIC. [25] [26] ᅠ

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

Экранное меню [ править ]

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

Универсальное пространство переменной ширины [ править ]

В компьютерных кодировках символов есть обычное пространство общего назначения (символ Unicode U + 0020), ширина которого будет варьироваться в зависимости от дизайна шрифта. Типичные значения варьируются от 1/5 em до 1/3 em (в цифровой типографии em равно номинальному размеру шрифта, поэтому для шрифта размером 10 пунктов пробел, вероятно, будет между 2 и 3,3 пунктами). Сложные шрифты могут иметь пробелы разного размера для полужирного, курсивного и маленького начертания, и часто составители вручную настраивают ширину пространства в зависимости от размера и заметности текста.

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

Пробелы вокруг черточек [ править ]

Длинные тире, используемые в качестве разделителей в скобках, и дефисы, когда используются в качестве соединителей слов, обычно устанавливаются непрерывно с текстом. [27] Однако такое тире может быть окружено пространством для волос , U + 200A, или тонким пространством , U + 2009. Пространство волос может быть написано в HTML, используя числовые ссылки на символы   или  , или именованный объект  , но не везде поддерживается в браузерах все же, как в 2016 году [ который? ] Тонкое пространство называется сущность и числовые ссылки или . Эти пространства намного тоньше обычных (кроме   моноширинный (непропорциональный) шрифт ), причем пространство для волос является более тонким из двух.

Вычислительные приложения [ править ]

Языки программирования [ править ]

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

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

Большинство языков распознают только символы ASCII как пробелы или, в некоторых случаях, символы новой строки Unicode, но не большинство символов, перечисленных выше. В языке C пробельные символы определяются как «пробел, горизонтальная табуляция, новая строка, вертикальная табуляция и перевод страницы». [28] HTTP , сетевой протокол требует различных типов пробелов , которые будут использоваться в различных частях протокола, например: только символ пробела в состоянии линии, CRLF в конце строки, и «линейный пробельный» в значениях заголовков . [29]

Пользовательские интерфейсы командной строки [ править ]

В командах, обрабатываемых командными процессорами , например, в сценариях и вводимых с клавиатуры, пробел может вызывать проблемы, поскольку он выполняет две возможные функции: как часть команды или параметра или как параметр или разделитель имен . Двусмысленность можно предотвратить, запретив встроенные пробелы или заключив имя со встроенными пробелами между символами кавычек.

Языки разметки [ править ]

Некоторые языки разметки, такие как SGML , сохраняют записанные пробелы.

Языки веб-разметки, такие как XML и HTML, специально обрабатывают пробельные символы, включая пробелы, для удобства программистов. Один или несколько пробелов, считываемых соответствующими процессорами времени отображения этих языков разметки , сжимаются до 0 или 1 пробела, в зависимости от их семантического контекста. Например, двойные (или более) пробелы в тексте сжимаются до единственного пробела, а пробелы, которые появляются по обе стороны от символа « =», отделяющего имя атрибута от его значения, не влияют на интерпретацию документа. Конечные теги элементов могут содержать завершающие пробелы, а теги пустых элементов в XML могут содержать пробелы перед "/>". В этих языках ненужные пробелы увеличивают размер файла и, следовательно, могут замедлять передачу данных по сети. С другой стороны, ненужные пробелы могут также незаметно пометить код, аналогичный, но менее очевидный, чем комментарии в коде. Это может быть желательно для доказательства нарушение лицензии или авторского права , которое было совершено копирование и вставка .

В значениях атрибутов XML последовательности пробельных символов обрабатываются как один пробел, когда документ читается синтаксическим анализатором. [30] Пробелы в содержимом элемента XML не изменяются таким образом анализатором, но приложение, получающее информацию от анализатора, может решить применить аналогичные правила к содержимому элемента. Автор XML-документа может использовать xml:space="preserve"атрибут элемента, чтобы дать синтаксическому анализатору команду препятствовать тому, чтобы нижележащее приложение изменяло пробелы в содержимом этого элемента.

В большинстве HTML-элементов последовательность символов пробела рассматривается как один разделитель между словами , который может проявляться как один символ пробела при отображении текста на языке, который обычно вставляет такое пространство между словами. [31] Соответствующие средства визуализации HTML должны применять более буквальную обработку пробелов в нескольких предписанных элементах, таких как preтег и любой элемент, для которого CSS был использован для применения pre-подобной обработки пробелов. В таких элементах пробелы не будут «сворачиваться» в разделители между словами.

И в XML, и в HTML неразрывный пробел вместе с другими нестандартными пробелами не рассматривается как сворачиваемый «пробел», поэтому на него не распространяются приведенные выше правила.

Имена файлов [ править ]

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

Еще один такой символ - U + 2422 ␢ ПУСТОЙ СИМВОЛ . Это использовалось в первые годы компьютерного программирования при написании кодовых форм. Операторы Keypunch сразу же распознали символ как «явный пробел». [16] Он использовался в BCDIC , [16] EBCDIC , [16] и ASCII-1963 . [16]

См. Также [ править ]

  • Возврат каретки
  • Эм (типографика)
  • En (типографика)
  • Подача формы
  • Стиль отступа
  • Перевод строки
  • Новая линия
  • Стиль программирования
  • Знаки для кода Морзе
  • Регулярное выражение # Классы символов для класса символов пробела.
  • Пробел
  • Пробел (знаки препинания)
  • Клавиша Tab
  • Обрезка (компьютерное программирование)
  • Пробел (язык программирования)
  • Пространство нулевой ширины

Ссылки [ править ]

  1. ^ "Стандарт Юникода" . Консорциум Unicode.
  2. ^ «Стандарты дизайна персонажей - символы пробела» . Стандарты дизайна персонажей . Microsoft . 1998–1999. Архивировано из оригинального 23 августа 2000 года . Проверено 18 мая 2009 .
  3. ^ Стандарт Unicode 5.0, печатное издание, стр.205
  4. ^ "Общая пунктуация" (PDF) . Стандарт Юникода 5.1 . Unicode Inc . 1991–2008 гг . Проверено 13 мая 2009 .
  5. Сарджент, Мюррей III (29 августа 2006 г.). «Юникодное кодирование почти простого текста математики (версия 2)» . Техническая записка по Unicode № 28 . Unicode Inc . С. 19–20 . Проверено 19 мая 2009 .
  6. ^ Гиллам, Ричард (2002). Unicode Demystified: Практическое руководство программиста по стандарту кодирования . Эддисон-Уэсли. ISBN 0-201-70052-2.
  7. ^ а б Хиксон, Ян . «12.5 Ссылки на именованные символы» . Стандарт HTML . WHATWG .
  8. ^ Вольфрам . "\ [NegativeThickSpace]" . Документация по языку Wolfram Language .
  9. ^ Вольфрам . "\ [NegativeMediumSpace]" . Документация по языку Wolfram Language .
  10. ^ Вольфрам . "\ [NegativeThinSpace]" . Документация по языку Wolfram Language .
  11. ^ Вольфрам . "\ [NegativeVeryThinSpace]" . Документация по языку Wolfram Language .
  12. ^ Faltstrom П., изд. (Август 2010 г.). «Несоединение нулевой ширины» . Кодовые точки Unicode и интернационализированные доменные имена для приложений (IDNA) . IETF . сек. А.1. DOI : 10,17487 / RFC5892 . RFC 5892 . Проверено 4 сентября 2019 года .
  13. ^ Faltstrom П., изд. (Август 2010 г.). «Столяр нулевой ширины» . Кодовые точки Unicode и интернационализированные доменные имена для приложений (IDNA) . IETF . сек. А.2. DOI : 10,17487 / RFC5892 . RFC 5892 . Проверено 4 сентября 2019 года .
  14. ^ "Приложение № 44 к стандарту Unicode, База данных символов Unicode" .
  15. ^ a b c d e f Европейская ассоциация производителей компьютеров (1968-11-28). Графическое представление управляющих символов набора 7-битных кодированных символов ECMA для обмена информацией (PDF) . ЭКМА-17.
  16. ^ a b c d e f g h Маккензи, Чарльз Э. (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). 1963-06-17.
  18. ^ Никлаус Вирт, Программирование в Modula-2
  19. ^ «Руководство пользователя Cambridge Z88» . 4.7 (4-е изд.). Cambridge Computer Limited . 2016 [1987]. Основные понятия - Клавиатура. Архивировано 12 декабря 2016 года . Проверено 12 декабря 2016 .
  20. ^ a b c «Руководство пользователя Cambridge Z88» . 4.0 (4-е изд.). Cambridge Computer Limited . 1987. Приложение D. Архивировано 12 декабря 2016 года . Проверено 12 декабря 2016 .
  21. ^ a b c «Руководство пользователя Cambridge Z88» . 4.7 (4-е изд.). Cambridge Computer Limited . 2015 [1987]. Приложение D. Архивировано 12 декабря 2016 года . Проверено 12 декабря 2016 .
  22. ^ Таблица Unicode U + 2800 , шаблоны Брайля
  23. ^ Chung, Jaemin (2017-03-30). Предложение добавить информативную заметку к U + 3164 HANGUL FILLER (PDF) . Консорциум Unicode . UTC L2 / 17-081.
  24. ^ Хангыль Джамо (PDF) . Консорциум Unicode . 2020-10-25.
  25. ^ "ibm-933_P110-1995" . Демонстрация ICU - Converter Explorer . Международные компоненты для Unicode .
  26. ^ "ibm-933_P110-1995 (ведущие байты 0E84)" . Демонстрация ICU - Converter Explorer . Международные компоненты для Unicode .
  27. ^ Использование различных типов тире проиллюстрировано, например, в Чикагском руководстве по стилю , §§ 6.80, 6.83–6.86.
  28. ^ http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf Раздел 6.4, параграф 3
  29. ^ Fielding, R .; и др., «2.2 Основные правила», протокол передачи гипертекста - HTTP / 1.1 , RFC 2616 
  30. ^ «3.3.3 Нормализация значения атрибута» . Расширяемый язык разметки (XML) 1.0 (пятое издание) . Консорциум World Wide Web.
  31. ^ «9.1 Пробел» . W3CHTML 4.01 Спецификация . Консорциум World Wide Web.

Внешние ссылки [ править ]

  • Список свойств базы данных символов Юникода