Недавно я собрался встроить какой-нибудь типограф в свой блог. Захотелось писать fine text с классными тире, кавычками-«ёлочками» да правильными пробелами по случаю. Ещё прикалывает «висячая» пунктуация, о которой с такой любовью писал Арт. Лебедев в § 120 своего «Ководства», но это уже фетиш, на который не всегда есть время. Расставить все эти знаки в контексте веб-страниц можно по разному. Я, однако, выйду за рамки WWW, рассмотрев TeX, Emacs, XML, Firefox и X.org.
Современный мир подарил нам стандарт Unicode, который позволяет использовать единобразную кодировку для всех языков мира. Среди символов Unicode, помимо букв и знаков из любых современных и исторических видов письменности, есть и разнообразная пунктуация и непечатаемые символы (есть, например, тетраграммы из «Книги Перемен»). И хотя современные программные средства по разному обрабатывают и отображают эти знаки (а иногда и вовсе не поддерживают Юникод), всё же окончательная поддержка Юникода везде неотвратима (хотя и существуют проблемы с принятием Юникода в ряде культур, например, Японии).
В частности, в секции «General Punctuation» в списке символов Unicode определяются и все мыслимые и немыслимые кавычки, различные пробелы, знаки табуляции, переноса и прочая, и прочая, и прочая.
Например, интересен символ «мягкого» переноса — «soft hyphen» aka «SHY» (то есть, «скромный»). Он предназначен для обозначения места, где можно разорвать слово при отображении и поставить знак переноса. Он весьма посредственно поддерживается браузерами. Для больших славных текстов его можно использовать (для быстрых записей в блог расставлять мягкие переносы — слишком).
А ещё в секции «Mathematical symbols» описано множество математических символов. ∀ε>0: ∃ω: ω×ε=1337.
Реальность же такова, что без дополнительных усилий с клавиатуры из всего типографического юникодного блаженства можно ввести лишь знаки дюйма " (в Юникоде в секции «ASCII punctuation» этот знак определяется как «neutral (vertical) quotation mark»), апостроф ' и значок акцента ` aka «backtick». Это всё машинописное наследие.
Справедливости ради стоит отметить, что в
TeX уже несколько десятков лет
есть отличные отточенные шрифты, немыслимые возможности для создания
красивых формул, ну и красивые кавычки, тире и всё такое. С его
помощью очень удобно создавать прекрасные тексты для бумаги. Пишите
диссертации, доклады и письма в TeX! Современный XeTeX позволяет
использовать разнообразные символы Unicode в документах напрямую, были
бы нужные глифы в шрифте; в обычном LaTeX, к примеру, нужно добавлять
в преамбулу \usepackage[utf8x]{inputenc}.
В Виндоус исторически можно зажимать Alt и вводить цифровой код символа. Только помнить цифровые коды всех интересующих символов — тупо, немнемонично и лишняя нагрузка на мöзг. В современых операционных системах также есть разнообразные «Таблицы символов», только их очень долго использовать.
В XML (а следовательно и в XHTML) можно использовать мнемоничные
XML-сущности типа
λ для греческой „λ“ или — для длинного m-тире „—“.
Они покрывают значительное количество интересных Unicode-символов.
Только вот код с их использованием очень плохо читается.
Лучше сразу вводить Юникодные символы.
Есть условия для этого в Emacs, где ввод, например, C-x 8 < даёт кавычку-ёлочку « (общая схема такова: C-x 8 [мнемоника], хотя можно и на что-то более удобное биндинг переопределить). В nxml-mode подсвечиваются неразрывные пробелы, условно показываются места «мягких» переносов:
Подробнее о вводе Unicode-символов в Emacs можно прочитать на домашней странице Xah Lee.
Но набирать текст в Emacs и копировать его в браузер не хотелось, а в w3m, для которого у Emacs есть интерфейс, я постоянно не сижу.
Нынче модны встраиваемые в CMS автоматические типографы. Я рассматривал «Типограф» Лебедева, Jevix, Devanagari, но что-то ни один не устроил. То настройки не те, то с Markdown не дружит. Да и вообще, отложенная и автоматизированная обработка меня не устраивала. Когда у меня в тексте записи приведён исходный код с обычными знаками „"“ — типографы бессовестно «облагораживают» их, превращая в «красивые» кавычки. Единственное, для чего мне хотелось бы их использовать — для расстановки неразрывных пробелов вокруг вспомогательных частей речи (предлогов, союзов, частиц) в тексте. Делать это руками — некошерно.
Кроме того, хотелось использовать правильные символы не только на страницах своего сайта, но и вообще over the Net.
Короче, стал искать что-то ручное, но удобное.
И нашёл: расширение
abcTajpu для
Firefox. Предназначено для
многоязыкового ввода в браузере. Изначально предоставляет что-то вроде
встроенной таблицы символов в отдельном окне и в контекстных меню. Но
самое удобное в нём — возможность использования мнемоничных сочетаний
символов для ввода нестандартных знаков, сходно с Emacs, по общей
схеме [мнемоника] [INS] ([INS] — кнопка «Insert», можно
поменять на другую), например:
Встроенные биндинги (их список есть на домашней странице проекта) уже достаточно удобны и аналогичны тем, что приняты в LaTeX для ввода тире и кавычек. И вообще такая схема ввода нестандартных символов очень удобна. По работе напоминает механизм аббревиатур в Emacs.
Есть также сокращения ALT-F2 для быстрого добавления различных диакритических знаков.
Более того, всё это легко дополняется своими сочетаниями (например, ББ для », чтобы не переключать раскладку при наборе русским).
Короче, abcTajpu для Firefox — славное подспорье. Плюс в том, что работает везде, где есть Firefox (впрочем, с Emacs ситуация такая же).
Самое лучшее средство обнаружилось под носом. Я не сразу наткнулся на
него, однако это в итоге оказалось наилучшим решением. X.org позволяет
вводить различные Юникодные символы, используя клавишу
«Compose» (обычно она
назначается на одну из кнопок «Windows») и, опять же, простые
мнемоники: нажимается сначала Compose, потом вводится
соответствующее сокращение, например:
[CMP] > > даст »
[CMP] + - даст ±
[CMP] O C [CMP] O R даст © ®
[CMP] p ! [CMP] s o даст ¶ §
[CMP] - - - даст — (m-тире)
[CMP] [пробел] [пробел] даст неразрывный пробел
1 [CMP] : - 2 [CMP] ^ 2 = [CMP] 1 4 даст 1÷2²=¼
Полный список Compose-сокращений
лежит в файлах используемой системной локали; у меня он находится в
/usr/share/X11/locale/ru_RU.UTF-8/Compose. Большой: около 5600
строк, по одной на каждое сочетание (для многих символов есть по
нескольку сочетаний). В целом, все сочетания «разумные» и вводить
удобно.
Список доступных сокращений можно пополнить, дописав свои желаемые
сочетания в файл ~/.XCompose:
include "/usr/share/X11/locale/en_US.UTF-8/Compose"
<Multi_key> <slash> <equal> : "≠" U2260 # NOT EQUAL TO
<Multi_key> <equal> <slash> : "≠" U2260 # NOT EQUAL TO
<Multi_key> <apostrophe> <apostrophe> : "́" U0301 # COMBINING ACUTE ACCENT
<Multi_key> <minus> <greater> : "→" U2192 # RIGHTWARDS ARROW
<Multi_key> <less> <minus> : "←" U2190 # LEFTWARDS ARROW
<Multi_key> <equal> <greater> : "⇒" U21D2 # RIGHTWARDS DOUBLE ARROW
Включается клавиша Compose следующим образом:: в /etc/X11/xorg.conf
нужно отыскать секцию "Input Device", отвечающую настройкам
клавиатуры, и в значении опции XkbOptions дописать compose:lwin
(вместо lwin можно использовать и другие кнопки типа ralt и т.
д.). У меня вся строка приняла вид:
Option "XkbOptions" "grp:caps_toggle,grp_led:caps,compose:ralt"
В сервере X.org начиная с версии 1.5
конфигурирование устройств ввода
осуществляется через `.fdi`-файл системы HAL, в котором
соответствующая строчка запишется следующим образом:
<merge key="input.x11_options.XkbOptions" type="strlist">grp:caps_toggle</merge>
<append key="input.x11_options.XkbOptions" type="strlist">grp_led:caps</append>
<append key="input.x11_options.XkbOptions" type="strlist">compose:ralt</append>
Подробности см. в статье по этому поводу.
Этого может не хватить для
полноценной работы Compose в Gtk-приложениях: Gtk+ по умолчанию
использует свой метод ввода; чтобы использовался стандартный иксовый
метод, нужно установить переменную окружения GTK_IM_MODULE в
значение xim (X Input Method); в Gentoo можно сделать это в одном из
файлов в /etc/env.d:
$ sudo echo "GTK_IM_MODULE=xim" >> /etc/env.d/50gtk2
И в Gtk-шных прогах заработают все Compose-сочетания.
Я надеюсь, у вас установлены Юникодные шрифты.
Комментарии:
тест на бесконечность: &infinite [&infinite]
Кстати я проверял твой сайт в IE. Он зачем-то лезет вправо, и фон там белый) Но я думаю к тебе все равно будут заходить те кто в опере или в мозиле, а то бесконечно малое множество может сосать.
Ой! &infin [&infin]
Можешь прислать скриншотик мне на мыло? Мне Гриша тоже говорил, что съезжает что-то в осле.
Ты в комментариях не сможешь XML-сущность ввести. Пользуйся сабжевым расширением или вводи Unicode-символ на уровне Windows.
И помни: ∞+1=∞!
Да уж, я тоже поглядел тут через webshotspro.com. Пипец :) Всё, я вычёркиваю IE из своего большого списка сущностей жизни. Спи сладко, кусок говна.
В "горящей лисице" есть расширение которое осуществляет чтение страниц так, как это делает ИЕ.
но сосать будет огромное множество http://globalstats.hotlog.ru/
ИЕ - говно
capcha - ulet
Ништяк вообще! ©
А как бесконечность ввести?
Клавишей Compose имеется в виду.
В стандартных сочетаниях бесконечности нет.