> For the complete documentation index, see [llms.txt](https://olexsyn.gitbook.io/enote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olexsyn.gitbook.io/enote/progr/html-css/ob-ispolzovanii-nestandartnykh-probelov.md).

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

Якась стаття про Lingvo і GoldenDict, але є дещо цікавого

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

* создание отбивок между абзацами;
* создание красных строк;
* эффект разрядки между буквами в словах.

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

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

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

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

<figure><img src="https://4139891804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaVFf8QE6D10SVr8XNJun%2Fuploads%2F5TvXiz8s7oce0R6lYdPU%2Fnbsp_spases_lingvo.png?alt=media&amp;token=21a16da6-d29c-4d51-93f8-c93e97e6d978" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4139891804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaVFf8QE6D10SVr8XNJun%2Fuploads%2F6iVOuOcP6ebHLgWZ81pJ%2Fnbsp_spases_gd.png?alt=media&amp;token=05768c7e-1f91-40a0-92bd-927e0ce4bbc1" alt=""><figcaption></figcaption></figure>

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

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

Можно воспользоваться сторонней утилитой 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. Смотрим на результат: слово «р а з р я д к а» отображается на экране с эффектом разреженного текста.

<table data-header-hidden><thead><tr><th></th><th width="104"></th><th width="99"></th><th></th><th width="119"></th><th></th></tr></thead><tbody><tr><td>Название<br>в Юникоде</td><td>Код в Юникоде</td><td>Выглядит</td><td>Мнемоника<br>в HTML 4</td><td>Пояснения</td><td></td></tr><tr><td>HEX</td><td>DEC</td><td></td><td></td><td></td><td></td></tr><tr><td>NO-BREAK SPACE</td><td>A0</td><td>160</td><td>п р и м е р</td><td>&#x26;nbsp;</td><td>аналогичен обычному пробелу, но неразрывный</td></tr><tr><td>EN QUAD</td><td>2000</td><td>8192</td><td>п р и м е р</td><td></td><td>канонически эквивалентен символу 0x2002 EN SPACE</td></tr><tr><td>EM QUAD</td><td>2001</td><td>8193</td><td>п р и м е р</td><td></td><td>канонически эквивалентен символу 0x2003 EM SPACE</td></tr><tr><td>EN SPACE</td><td>2002</td><td>8194</td><td>п р и м е р</td><td>&#x26;ensp;</td><td>равен половине кегля шрифта (исторически такой была ширина заглавной буквы «N»)</td></tr><tr><td>EM SPACE</td><td>2003</td><td>8195</td><td>п р и м е р</td><td>&#x26;emsp;</td><td>равен кеглю шрифта (исторически такой была ширина заглавной буквы «M»)</td></tr><tr><td>THREE-PER-EM SPACE</td><td>2004</td><td>8196</td><td>п р и м е р</td><td></td><td>ближе всех к обычному пробелу, втрое меньше, чем EM-SPACE</td></tr><tr><td>FOUR-PER-EM SPACE</td><td>2005</td><td>8197</td><td>п р и м е р</td><td></td><td>в четыре раза меньше, чем EM-SPACE</td></tr><tr><td>SIX-PER-EM SPACE</td><td>2006</td><td>8198</td><td>п р и м е р</td><td></td><td>в шесть раз меньше, чем EM-SPACE</td></tr><tr><td>FIGURE SPACE</td><td>2007</td><td>8199</td><td>п р и м е р</td><td></td><td>имеет такую же ширину, что и цифры в текущем шрифте; предназначен для набора таблиц; неразрывный</td></tr><tr><td>PUNCTUATION SPACE</td><td>2008</td><td>8200</td><td>п р и м е р</td><td></td><td>ширина равна ширине точки</td></tr><tr><td>THIN SPACE</td><td>2009</td><td>8201</td><td>п р и м е р</td><td>&#x26;thinsp;</td><td>обычно имеет ширину в 1⁄5 (реже — в 1⁄6) кегля;<br>пропорционально соответствует двухпунктовой шпации при наборе кеглем в 10 пунктов</td></tr><tr><td>HAIR SPACE</td><td>200A</td><td>8202</td><td>п р и м е р</td><td></td><td>самый тонкий пробел, соответствует самой тонкой шпации в кассе наборщика</td></tr><tr><td>ZERO-WIDTH SPACE</td><td>200B</td><td>8203</td><td>п​р​и​м​е​р</td><td></td><td>ширина нулевая; ставится в местах, где нужно разорвать строку, не добавляя знак переноса; применяется в языках, где нет пробелов; при выравнивании текста по ширине может расширяться, как и любой другой пробел</td></tr><tr><td>NARROW NO-BREAK SPACE</td><td>202F</td><td>8239</td><td>п р и м е р</td><td></td><td>узкий неразрывный пробел</td></tr><tr><td>MEDIUM MATHEMATICAL SPACE</td><td>205F</td><td>8287</td><td>п р и м е р</td><td></td><td>узкий пробел, применяемый в математических формулах</td></tr><tr><td>WORD JOINER</td><td>2060</td><td>8288</td><td>п⁠р⁠и⁠м⁠е⁠р</td><td></td><td>аналогичен ZERO-WIDTH SPACE, но неразрывный</td></tr><tr><td>IDEOGRAPHIC SPACE</td><td>3000</td><td>12288</td><td>п　р　и　м　е　р</td><td></td><td>используется в восточных языках;<br>равняется ширине одного иероглифа</td></tr></tbody></table>

<br>

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

<https://lingvoboard.ru/store/html/DSLReference\\_HTML/spaces.html>
