Мнемоники в HTML

Символ-мнемоника ( «сущность») — конструкция SGML, которая ссылается на символ из набора символов текстового файла. В HTML предопределено большое количество спецсимволов. Чтобы вставить спецсимвол (управляющий/форматный символ) в разметку, нужно вставить в HTML-структуру соответствующий этому символу символ-мнемонику.

Назначение и синтаксис

Назначение 
Если необходимо поместить в выводимый текст какую-либо литеру, то сделать это можно двумя способами:
 введя эту литеру непосредственно в исходный текст;
 используя специальный синтаксис представления литеры.

Первый способ плохо применим к литерам, имеющим форматный смысл в HTML, таким, как угловые скобки < и > (знаки «меньше» и «больше»). Такие литеры далеко не всегда будут восприниматься как просто текстовые. Сложности этого способа усугубляются тем, что метод определения того, является ли данная литера форматной или текстовой, зависит от конкретного браузера, так как каждый из них пытается исправлять ошибки синтаксиса HTML по-своему, а использование форматных литер не по форматному назначению — именно ошибка. Этот способ также может быть неудобен, когда требуется ввести литеру, которой нет на клавиатуре. К примеру, кавычки-ёлочки на стандартной клавиатуре Windows отсутствуют.

При непосредственном редактировании исходного кода HTML с использованием текстового редактора редактируемый файл представляется равноширинным шрифтом (шрифтом постоянной ширины), в котором некоторые символы могут выглядеть трудноотличимо: в частности, пробелы разной ширины и смысла (например, «разрывные» и «неразрывные») все будут выглядеть одинаково, одинаково или почти одинаково будут выглядеть различные горизонтальные чёрточки (чёрточка-минус, минус, дефис, неразрывный дефис, мягкий перенос, короткое и длинное тире и т. п.), что делает работу с ними неудобной. Во многих равноширинных шрифтах плохо работает наложение «модифицирующих» литер, таких, как акут (русское ударение, U+0301), из-за чего такой модификатор может накладываться не на предыдущий, а на следующий символ, что создаёт дополнительную путаницу. И, наконец, этот способ полностью неприменим к литерам, отсутствующим в кодировке файла HTML.

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

Синтаксис

Задание литеры её именем 
Литера может быть представлена в исходном коде HTML как «&charname;», где charname — её имя. Кавычки не являются частью синтаксиса. Регистр букв существен. Завершающий символ «точка с запятой» часто можно опускать: если в исходном тексте после такой литеры расположен пробел, директива HTML или что-либо другое, не могущее быть продолжением имени литеры, то браузер всё понимает правильно. Более того, если данное имя не является префиксом другого, то завершитель при нём необязателен. С другой стороны, во избежание недоразумений завершитель лучше ставить всегда.

Пример: «&» (амперсанд (), имя — «amp») — «&amp;», скажем, «John & Mary» — «John &amp; Mary».

Задание литеры её юникод-номером 
В качестве имени любой литеры можно использовать её юникод-номер, предварённый значком «#», если номер десятичный, или сочетанием «#x» (знак «#» и латинская буква «x»), если номер шестнадцатеричный. То есть, для литеры с юникод-номером ddddd10, 0≤ddddd≤111411110, можно использовать имя #ddddd, а для юникод-номера hhhh16, 0≤hhhh≤10FFFF16 — #xhhhh или #Xhhhh. Количество цифр не ограничено, лидирующие (незначащие) нули не имеют значения, регистр буквы «x» и шестнадцатеричных цифр ABCDEF несуществен.

Пример: «&» ampersand, U+0026, (3810); имя может быть «#38» или «#038» или «#0038», «#x26» или «#x026» или «#X0026» и т. д.; «John & Mary» — «John &#38; 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 за исключением соглашения о наложении литер через возврат на шаг.

Управляющие символы 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
Включает Греческий алфавит.

Общая пунктуация

Знаки валют

Буквоподобные символы

Формы чисел

Стрелки

Математические операции

Технические символы

Геометрические фигуры

Различные символы

Примечания

Ссылки 
 
 
 
 
 

Символьный тип
HTML
XML