Об использовании нестандартных пробелов
Якась стаття про Lingvo і GoldenDict, але є дещо цікавого
В таблице символов 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.
Можно воспользоваться возможностями поиска/замены. Вначале набрать произвольный символ в местах, где необходимо вставить нестандартный пробел, а затем заменить набранный символ на требуемый при помощи регулярных выражений. Например:
Набираем слово р@а@з@р@я@д@к@а.
Выделяем это слово и вызываем диалог поиска/замены.
В поле Найти набираем @, а в поле Заменить — \u2008 (Escape-последовательность с шестнадцатеричным кодом т.н. пунктуационного пробела).
Активизируем переключатели Регулярные выражения и Заменить в выделенном отрывке, затем жмём на кнопку Заменить всё.
Смотрим на результат: слово «р а з р я д к а» отображается на экране с эффектом разреженного текста.
Название в Юникоде | Код в Юникоде | Выглядит | Мнемоника в 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 | п р и м е р |   | обычно имеет ширину в 1⁄5 (реже — в 1⁄6) кегля; пропорционально соответствует двухпунктовой шпации при наборе кеглем в 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 | п р и м е р | используется в восточных языках; равняется ширине одного иероглифа |
Замечания: При использовании нестандартных пробелов необходимо учитывать, что не во всех шрифтах есть глифы для их отображения. Впрочем, в современных программах этот недостаток нивелируется благодаря системе подстановки шрифтов.
https://lingvoboard.ru/store/html/DSLReference_HTML/spaces.html
Last updated