Об использовании нестандартных пробелов

В таблице символов Unicode имеется несколько видов нестандартных пробелов. Эти пробелы могут применяться для форматирования текста словарей такими способами, которые невозможно реализовать стандартными средствами DSL. Перечислим наиболее распространённые примеры:

Сымитировать перечисленное при помощи обычных пробелов не удаётся, поскольку в словарных программах действует правило их сокращения. Имитация успешно осуществляется при помощи пробелов нестандартных.

Красную строку, т.е. отступ первой строки в абзаце, можно набирать неразрывными пробелами обычной ширины (No-break space, первый в таблице ниже), как правило от 4 до 7. При этом последним пробелом, примыкающим к первой букве слова, рекомендуется ставить стандартный пробел (о причинах см. ниже).

Отбивка, т.е. пустая строка между абзацами, также создаётся при помощи неразрывного пробела, помещённого на отдельной строке. Для удобства чтения и дальнейшей обработки исходного DSL можно заключать пробел в тэг отступа [m0], хотя побочно это незначительно повлияет на размер файла.

Существует возможность регулировать высоту отбивки при помощи тэгов надстрочного [sup] и подстрочного [sub] индекса, расставленных вокруг неразрывного пробела. Это средство вполне работоспособно, но к сожалению неодинаково трактуется словарными программами. В Lingvo максимальная высота получается при употреблении [sub], а минимальная — при [sup]:

В GoldenDict максимальную высоту даёт неразрывный пробел без тэгов, а минимальную — в связке с [sub]:

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

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

Можно воспользоваться сторонней утилитой BabelMap (или её аналогами: PopChar, системной Character Map), при помощи которой откопировать нужный символ в текст словаря и далее дублировать его по необходимости.

Можно использовать способ набора с клавиатуры при помощи т.н. Alt-кодов. Как правило в профессиональных текстовых редакторах такой способ доступен и заключается в следующем. Для вставки в текст требуемого символа, нужно зажать клавишу Alt и, не отпуская клавишы, набрать десятичный код этого символа на цифровой клавиатуре (отдельная группа клавиш в правой части полной клавиатуры, т.н. NumPad). Так, например, для вставки неразрывного пробела (No-break space) необходимо зажать Alt и набрать на NumPad 0160, для вставки M-пробела (Em space) — Alt+8195. В некоторых редакторах перед десятичным кодом требуется дополнительно набирать ноль 0 или два ноля 00.

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

  1. Набираем слово р@а@з@р@я@д@к@а.
  2. Выделяем это слово и вызываем диалог поиска/замены.
  3. В поле Найти набираем @, а в поле Заменить — \u2008 (Escape-последовательность с шестнадцатеричным кодом т.н. пунктуационного пробела).
  4. Активизируем переключатели Регулярные выражения и Заменить в выделенном отрывке, затем жмём на кнопку Заменить всё.
  5. Смотрим на результат: слово «р а з р я д к а» отображается на экране с эффектом разреженного текста.

Название
в Юникоде
Код в Юникоде Выглядит Мнемоника
в HTML 4
Пояснения
HEX DEC
NO-BREAK SPACE A0 160 п р и м е р   аналогичен обычному пробелу, но неразрывный
EN QUAD 2000 8192 п р и м е р канонически эквивалентен символу 0x2002 EN SPACE
EM QUAD 2001 8193 п р и м е р канонически эквивалентен символу 0x2003 EM SPACE
EN SPACE 2002 8194 п р и м е р   равен половине кегля шрифта (исторически такой была ширина заглавной буквы «N»)
EM SPACE 2003 8195 п р и м е р   равен кеглю шрифта (исторически такой была ширина заглавной буквы «M»)
THREE-PER-EM SPACE 2004 8196 п р и м е р ближе всех к обычному пробелу, втрое меньше, чем EM-SPACE
FOUR-PER-EM SPACE 2005 8197 п р и м е р в четыре раза меньше, чем EM-SPACE
SIX-PER-EM SPACE 2006 8198 п р и м е р в шесть раз меньше, чем EM-SPACE
FIGURE SPACE 2007 8199 п р и м е р имеет такую же ширину, что и цифры в текущем шрифте; предназначен для набора таблиц; неразрывный
PUNCTUATION SPACE 2008 8200 п р и м е р ширина равна ширине точки
THIN SPACE 2009 8201 п р и м е р   обычно имеет ширину в 15 (реже — в 16) кегля;
пропорционально соответствует двухпунктовой шпации при наборе кеглем в 10 пунктов
HAIR SPACE 200A 8202 п р и м е р самый тонкий пробел, соответствует самой тонкой шпации в кассе наборщика
ZERO-WIDTH SPACE 200B 8203 п​р​и​м​е​р ширина нулевая; ставится в местах, где нужно разорвать строку, не добавляя знак переноса; применяется в языках, где нет пробелов; при выравнивании текста по ширине может расширяться, как и любой другой пробел
NARROW NO-BREAK SPACE 202F 8239 п р и м е р узкий неразрывный пробел
MEDIUM MATHEMATICAL SPACE 205F 8287 п р и м е р узкий пробел, применяемый в математических формулах
WORD JOINER 2060 8288 п⁠р⁠и⁠м⁠е⁠р аналогичен ZERO-WIDTH SPACE, но неразрывный
IDEOGRAPHIC SPACE 3000 12288 п р и м е р используется в восточных языках;
равняется ширине одного иероглифа
Источник таблицы: Энциклопедия Руниверсалис, статья Пробел.

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

Текущая версия Lingvo (x6) не воспринимает нестандартные пробелы как разделители слов. Это оказывает влияние на поиск слов в тексте словарей, приводя к следующим последствиям:

  1. Нестандартный пробел, прилегающий к слову, воспринимается как часть слова, его дополнительная буква. Такие слова не ищутся ни порознь, ни вместе при полнотекстовом поиске, если в соответствующих местах строки поиска не вставить употреблённый пробел.
  2. Нестандартный пробел, стоящий обособленно, воспринимается как отдельное слово. Это влияет на результаты поиска при включенной настройке Ограничивать расстояние: Не более N слов между словами запроса.

Во избежание 1о последствия при создании красных строк после группы неразрывных пробелов перед примыкающим словом рекомендуется ставить один обычный пробел (как было упомянуто выше). Во избежание 2о последствия можно заключать обособленные нестандартные пробелы в тэг [!trs], соблюдая при этом и правило его расположения — только внутри одной из зон индексирования.

На работу поисковой системы в программе GoldenDict наличие в тексте нестандартных пробелов не влияет.