Символ-мнемоника (англ. entity «сущность») — конструкция SGML, которая ссылается на символ из набора символов текстового файла. В HTML предопределено большое количество спецсимволов[1]. Чтобы вставить спецсимвол (управляющий/форматный символ) в разметку, нужно вставить в HTML-структуру соответствующий этому символу символ-мнемонику.
Назначение и синтаксис
Назначение
Если необходимо поместить в выводимый текст какую-либо литеру, то сделать это можно двумя способами:
- введя эту литеру непосредственно в исходный текст;
- используя специальный синтаксис представления литеры.
Первый способ плохо применим к литерам, имеющим форматный смысл в HTML, таким, как угловые скобки < и > (знаки «меньше» и «больше»). Такие литеры далеко не всегда будут восприниматься как просто текстовые. Сложности этого способа усугубляются тем, что метод определения того, является ли данная литера форматной или текстовой, зависит от конкретного браузера, так как каждый из них пытается исправлять ошибки синтаксиса HTML по-своему, а использование форматных литер не по форматному назначению — именно ошибка. Этот способ также может быть неудобен, когда требуется ввести литеру, которой нет на клавиатуре. К примеру, кавычки-ёлочки на стандартной клавиатуре Windows отсутствуют.
При непосредственном редактировании исходного кода HTML с использованием текстового редактора редактируемый файл представляется равноширинным шрифтом (шрифтом постоянной ширины), в котором некоторые символы могут выглядеть трудноотличимо: в частности, пробелы разной ширины и смысла (например, «разрывные» и «неразрывные») все будут выглядеть одинаково, одинаково или почти одинаково будут выглядеть различные горизонтальные чёрточки (чёрточка-минус, минус, дефис, неразрывный дефис, мягкий перенос, короткое и длинное тире и т. п.), что делает работу с ними неудобной. Во многих равноширинных шрифтах плохо работает наложение «модифицирующих» литер, таких, как акут (русское ударение, U+0301), из-за чего такой модификатор может накладываться не на предыдущий, а на следующий символ, что создаёт дополнительную путаницу. И, наконец, этот способ полностью неприменим к литерам, отсутствующим в кодировке файла HTML.
Поэтому, во всех этих случаях лучше (если не единственно возможно) применять способ № 2 — использовать специальный синтаксис. Следует иметь в виду, что заданные специальным образом литеры теряют форматный смысл, например, угловые скобки перестают выделять теги, а пробел перестаёт разделять их атрибуты, что и позволяет использовать форматные литеры как просто текстовые, задавая их специальным образом.
Синтаксис
Задание литеры её именем
Литера может быть представлена в исходном коде HTML как «&charname;», где charname — её имя. Кавычки не являются частью синтаксиса. Регистр букв существен. Завершающий символ «точка с запятой» часто можно опускать: если в исходном тексте после такой литеры расположен пробел, директива HTML или что-либо другое, не могущее быть продолжением имени литеры, то браузер всё понимает правильно. Более того, если данное имя не является префиксом другого, то завершитель при нём необязателен. С другой стороны, во избежание недоразумений завершитель лучше ставить всегда[2].
Пример: «&» (амперсанд (англ. ampersand), имя — «amp») — «&», скажем, «John & Mary» — «John & Mary».
Задание литеры её юникод-номером
В качестве имени любой литеры можно использовать её юникод-номер, предварённый значком «#», если номер десятичный, или сочетанием «#x» (знак «#» и латинская буква «x»), если номер шестнадцатеричный. То есть, для литеры с юникод-номером ddddd10, 0≤ddddd≤111411110, можно использовать имя #ddddd, а для юникод-номера hhhh16, 0≤hhhh≤10FFFF16 — #xhhhh или #Xhhhh. Количество цифр не ограничено, лидирующие (незначащие) нули не имеют значения, регистр буквы «x» и шестнадцатеричных цифр ABCDEF несуществен[2].
Пример: «&» ampersand, U+0026, (3810); имя может быть «#38» или «#038» или «#0038», «#x26» или «#x026» или «#X0026» и т. д.; «John & Mary» — «John & Mary».
«Древние» литеры
Литеры, имеющие форматное значение в HTML, будучи помещены в исходный текст непосредственно, без подстановки, могут вызвать синтаксические проблемы. Лучше задавать их специальным образом.
- знак «меньше» (Less-Than sign), U+003C (<);
- знак «больше» (Greater-Than sign), U+003E (>);
- амперсанд (Ampersand symbol), U+0026 (&);
- двойная кавычка (Quote symbol), U+0022 (").
Каждая из этих литер в HTML имеет два имени — одно в нижнем регистре и одно в верхнем. Оба этих имени для одной литеры совершенно одинаковы за исключением регистра букв. Это сделано из соображений совместимости, поскольку древний стандарт HTML был нечувствительным к регистру в отношении таких имён, так что старые HTML‑ные документы могут использовать любой регистр.
В настоящее время форма нижнего регистра является предпочтительной, а форма верхнего регистра — нежелательной, так как может вызывать проблемы. Варианты имён верхнего регистра вводились браузерами для обеспечения реальной совместимости со старыми документами вопреки стандарту HTML, и только в версии 5.0 они были официально введены в стандарт.
Есть ещё три другие литеры с такими же вариантами верхнего/нижнего регистров, но без какого‑либо специального форматного значения в HTML — copyright (©), registered trademark (®) и trademark (™);
Эти литеры также присутствовали в стандарте HTML в тот момент, когда он был изменён с нечувствительного к регистру имён литер на чувствительный, так что правила для них такие же, как для форматных.
Имена всех «старых» (форматных и неформатных) литер:
- < — lt или LT (is less than operator, U+003C, Basic Latin (ASCII));
- > — gt или GT (is greater than operator, U+003E, Basic Latin (ASCII));
- & — amp или AMP (ampersand, U+0026, Basic Latin (ASCII));
- " — quot или QUOT (quote, U+0022, Basic Latin (ASCII));
- © — copy или COPY (Copyright sign, U+00A9, Latin‑1 Supplement);
- ® — reg или REG (Registered Trademark sign, U+00AE, Latin‑1 Supplement);
- ™ — trade или TRADE (Trademark sign, U+2122, Letter‐like Symbols);
Совместимость
Кроме HTML соответствующие соглашения используются в других системах, например, XML, движок Википедии, FB2 и т. д. Однако эти системы следуют стандарту HTML не полностью.
Например, в XML из имён литер допустимы лишь имена форматных литер (включая апостроф) нижнего регистра, то есть lt, gt, amp, quot и apos, при задании литер шестнадцатеричным юникод-номером латинская буква «x» должна быть в нижнем регистре и завершающая точка с запятой обязательна. Движок Википедии использует имена HTML версии до 4.0 и требует обязательного завершения точкой с запятой. FB2 допускает задание литер только юникод-номерами, при этом некоторые обработчики FB2 дополнительно ограничивают эти номера только десятичными.
Таким образом, наиболее совместимый способ задания — десятичными номерами с обязательным завершителем. Если используются шестнадцатеричные имена, то латинскую букву «x» лучше держать в нижнем регистре, а шестнадцатеричные цифры ABCDEF — в верхнем. Из имён наиболее стандартны lt, gt, amp и quot (в XML стандартен ещё и apos). В остальном следует ориентироваться на стандарт HTML 4.0, использование имён версии 5.0 наименее надёжно.
Таблицы ссылок-мнемоник
Управляющие символы C0 и основная латиница
- U+0000—U+007F
Данный диапазон Юникода полностью соответствует стандарту ASCII за исключением соглашения о наложении литер через возврат на шаг.[3]
Управляющие символы C1 и дополнение из Latin-1
- U+0080—U+00FF
Исторически в диапазон U+00A0—U+00FF («Дополнение из Latin‑1») переносились литеры из соответствующих позиций Latin‑1 (ISO 8859‑1), пока не стало объявлено, что стандарт Latin‑1 включён в Юникод полностью — как ASCII (U+0000—U+007F), так и данный диапазон (U+0080—U+00FF), за исключением соглашения о наложении литер через возврат на шаг.
Расширение латиницы — A
U+0100—U+017F
Расширение латиницы — B
U+0180—U+024F
Занимающие позицию модификаторы букв
U+02B0—U+02FF
Комбинируемые диакритические знаки
U+0300—U+036F
Греческие и коптские символы
- U+0370 — U+03FF
Включает Греческий алфавит.
Общая пунктуация
Знаки валют
Буквоподобные символы
Формы чисел
Стрелки
Технические символы
Геометрические фигуры
Различные символы
Примечания
- ↑HTML5. Named character references.
- 12HTML Document Representation.
- ↑Наложение через возврат на шаг используется в ASCII для получения изображений комбинированных литер (u␈` → ù) и полужирных вариантов (u␈u → u). Все последовательности стандарта ASCII, изображающие комбинированные литеры, а так же полужирные варианты алфавитно-цифровых литер, имеют соответствия в Юникоде, но не переводом «литера-в-литеру», а заменой последовательности литер ASCII на одну литеру Юникода. Полужирные варианты прочих литер ASCII соответствий не имеют, и должны изображаться средствами, выходящими за рамки стандарта Юникод. Поскольку многие шрифты не содержат полужирных вариантов литер, их изображение сильно зависит от особенностей работы системы изображения текстов (подстановка литер и шрифтов), поэтому предпочтительно задание полужирных начертаний внеюникодными средствами.
- ↑наложение двойной кавычки через возврат на шаг в ASCII (␈") в Юникоде изображается комбинируемым символом «двойной акут» « ̋» U+030B (̋) или «двойная вертикальная чёрточка сверху» « ̎» U+030E (̏)
- ↑наложение апострофа через возврат на шаг в ASCII (␈') в Юникоде изображается комбинируемым символом «акут» « ́» U+0301 (́)
- ↑для того, чтобы получить именно среднерасположенную звёздочку, нужно использовать математическую операцию «∗» U+2217∗ (∗)
- ↑наложение звёздочки через возврат на шаг в ASCII (␈*) в Юникоде изображается комбинируемым символом «звёздочка сверху» « ⃰» U+20F0 (⃰)
- ↑наложение запятой через возврат на шаг в ASCII (␈,) в Юникоде изображается комбинируемым символом «запятая снизу» « ̦» U+0326 (̦)
- ↑в качестве дефиса следует использовать символы дефис «‐» U+2010 (‐), неразрывный дефис «‑» U+2011 (‑) и мягкий перенос «» U+00AD­ (­); в качестве тире — короткое тире «–» U+2013– (–), длинное тире «—» U+2014— (—), равноширинное («цифровое») тире «‒» U+2012 (‒) и другие; в качестве минуса — математический знак «−» U+2212− (−)
- ↑наложение чёрточки-минуса через возврат на шаг в ASCII (␈-) в Юникоде изображается комбинируемым символом «короткий горизонтальный штрих» « ̵» U+0335 (̵), или, если имеется в виду непрерывное зачёркивание (со стыковкой слева и справа), — «длинный горизонтальный штрих» « ̶» U+0336 (̶)
- ↑наложение точки через возврат на шаг в ASCII (␈.) в Юникоде изображается комбинируемым символом «точка снизу» « ̣» U+0323 (̣)
- ↑для деления (a+b∕c+d с явным (внеюникодным) управлением надстрочным и подстрочным размещением) рекомендована операция « ∕ » U+2215 (∕); для чисто цифровых дробей с неявным (юникодным) управлением надстрочным и подстрочным размещением (12⁄34) — комбинируемый символ дробь-черта U+2044⁄ (⁄)
- ↑наложение косой черты через возврат на шаг в ASCII (␈/) в Юникоде изображается комбинируемым символом «короткое косое перечёркивание» « ̷» U+0337 (̷) или «длинное косое перечёркивание» « ̸» U+0338 (̸)
- ↑полужирные начертания посредством наложение цифры на себя через возврат на шаг в ASCII (0␈0 → 0) в Юникоде изображаются символами диапазона «𝟎» U+1D7CE (𝟎)—«𝟗» U+1D7D7 (𝟗)
- ↑полужирные начертания посредством наложение буквы на себя через возврат на шаг в ASCII (A␈A → A) в Юникоде изображаются символами диапазона «𝐀» U+1D400 (𝐀)—«𝐙» U+1D419 (𝐙)
- ↑наложение обратной косой черты через возврат на шаг в ASCII (␈\) в Юникоде изображается комбинируемым символом «обратное косое перечёркивание» « ⃥» U+20E5 (⃥)
- ↑в качестве гарантированно надстрочного следует использовать последовательность «неразрывный пробел, комбинируемый циркумфлекс» « ̂» U+00A0U+0302 ( ̂) или занимающий позицию циркумфлекс «ˆ» U+02C6ˆ (ˆ)
- ↑наложение циркумфлекса через возврат на шаг в ASCII (␈^) в Юникоде изображается комбинируемым символом «циркумфлекс» « ̂» U+0302 (̂)
- ↑наложение подчёркивания через возврат на шаг в ASCII (␈_) в Юникоде изображается комбинируемым символом «макрон снизу» (без стыковки по горизонтали) « ̱» U+0331 (̱) или «подчёркивание» (со стыковкой по горизонтали) « ̲» U+0332 (̲)
- ↑наложение грейва через возврат на шаг в ASCII (␈`) в Юникоде изображается комбинируемым символом «грейв» « ̀» U+0300 (̀)
- ↑полужирные начертания посредством наложение буквы на себя через возврат на шаг в ASCII (a␈a → a) в Юникоде изображаются символами диапазона «𝐚» U+1D41A (𝐚)—«𝐳» U+1D433 (𝐳)
- ↑наложение вертикальной черты через возврат на шаг в ASCII (␈|) в Юникоде изображается комбинируемым символом «вертикальная черта» « ⃒» U+20D2 (⃒) или «короткая вертикальная черта» « ⃓» U+20D3 (⃓)
- ↑в качестве надстрочной следует использовать последовательность «неразрывный пробел, комбинируемая тильда» « ̃» U+00A0U+0303 ( ̃) или малую тильду ˜U+02DC (˜), в качестве среднестрочной — математическую операцию «∼» U+223C∼ (∼)
- ↑наложение тильды через возврат на шаг в ASCII (␈~) в Юникоде изображается комбинируемым символом «тильда» « ̃» U+0303 (̃)
Ссылки
- Character entity references in HTML 4 (англ.). W3C. Дата обращения: 21 мая 2020.
- HTML Document Representation (англ.). W3C. Дата обращения: 21 мая 2020.
- Named character references (англ.). W3C. Дата обращения: 21 мая 2020.
- The HTML syntax. Character references (англ.). W3C. Дата обращения: 21 мая 2020.
- Encode & decode HTML entities. Convert special characters to HTML entities (англ.). Дата обращения: 21 мая 2020.