Заметно, что на Хабре в последнее время всё чаще поднимается вопрос типографики, и это не может не радовать, ибо «оттипографленные» тексты и читать приятнее, и выглядят они куда аккуратнее обычных. Да и в целом создается ощущение, что автор заботился о своих читателях.
Примерно год–полтора назад я написал свой плагин для популярного редактора TinyMCE, который умел типографить тексты посредством веб-интерфейса типографа Студии Лебедева. С того времени плагин успешно используется в проектах студий Nimax и Artilleria. После недавнего поста я решил таки его опубликовать, а также немного его усовершенствовал — добавил Типограф тов. spearance, а также Типограф студии Муравьёва. Способ типографирования можно выбрать непосредственно перед «операцией».
Усовершенствованный типограф я сегодня и представляю на суд публики.
P.S. Теоретически баг может сидеть в любой программе ;) Любой фидбэк ценится.
P.P.S. Комментарии к коду внутри плагина не по-русски… Писал так — еще не перевел.
Примерно год–полтора назад я написал свой плагин для популярного редактора TinyMCE, который умел типографить тексты посредством веб-интерфейса типографа Студии Лебедева. С того времени плагин успешно используется в проектах студий Nimax и Artilleria. После недавнего поста я решил таки его опубликовать, а также немного его усовершенствовал — добавил Типограф тов. spearance, а также Типограф студии Муравьёва. Способ типографирования можно выбрать непосредственно перед «операцией».
Усовершенствованный типограф я сегодня и представляю на суд публики.
- Демка (UTF-8): test.dis.dj/typograf
- Демка (CP1251): test.dis.dj/typograf/cp1251.php
- Качаем по адресу: test.dis.dj/typograf/typograf.zip
- Скрипты самих типографов: test.dis.dj/typograf/typograf-engines.zip (рекоммендую ознакомиться с инструкцией)
Возможности:
- Возможность выбора типографа
- Корректно обрабатывает выделенный текст
- Работает через веб-интерфейс, поэтому мгновенно воспринимает все багфиксы используемых движков (хотя, с другой стороны, это может стать минусом, если на хостинге PHP урезан в правах и не сможет установить соединение)
- Для случая, когда PHP урезан — можно использовать типограф студии Муравьёва, он локален
- Мультиязычный интерфейс (пока только русский и английский)
- Сразу видно результат, непосредственно в поле редактирования
- Если что-то пойдет не так — можно отказаться от результатов работы плагина
- Корректно работает с кодировками
Установка:
- Скачиваем PHP скрипт Студии Лебедева для работы с их типографом
- Скачиваем Типограф студии Муравьёва
- Распаковываем оба скрипта куда-нибудь так, чтобы в каталоге оказались файл remotetypograf.php и каталог Jare (с файлом Typograf.php)
Важное замечание! — в данный момент версия 2.0.0-rc2 типографа Студии Муравьёва имеет метку BOM во многих файлах, что может приводить к ошибкам вида preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset на ряде серверов. Также из-за этого метка BOM попадает в выходной поток backend-скрипта, добавляя в контент пустой тег «P»«/P». Типограф обучен бороться с этой проблемой, вырезая метку из ответа сервера (спасибо юзеру pixxxel). Проблема с preg функциями решается банальным приведением файлов к обычному UTF-8 без метки (уж не знаю как это связано, но работает) - Для ленивых — в этом архиве есть оба скрипта, однако возможно это будут не самые свежие версии, но там устранена проблема с BOM
- Распаковываем архив с плагином в папку плагинов TinyMCE (например /tinymce/plugins/)
- В файле /tinymce/plugins/typograf/typograf.php правим константу MCETYPOGRAF_ENGINES, чтобы указывала на папку с типографами
- При инициализации прописать плагин в plugins и theme_advanced_buttonsX, например:
tinyMCE.init({
…
"plugins": "…table,advimage,advlink,typograf",
"theme_advanced_buttons1": "…pagebreak,|,spellchecker,typograf,|,advcode…" - Опционально, если пользуетесь TinyMCE.Compressor, то плагин надо также прописать и в конфиг-файл компрессора в plugins
Планируемые фичи:
- Расширение круга движков
- Поддержка типографирования текстов на разных языках. Пока что оба используемых плагина не позволяют задать язык или напрямую символы кавычек. Тов. spearance обещал сделать это в 3й версии своего типографа, от Лебедева пока ничего не известно
Известные баги:
- При слишком хитром выделении (через несколько ячеек таблицы, к примеру), может заглючить объект Range, с этим я еще работаю…
P.S. Теоретически баг может сидеть в любой программе ;) Любой фидбэк ценится.
P.P.S. Комментарии к коду внутри плагина не по-русски… Писал так — еще не перевел.