An open API service indexing awesome lists of open source software.

https://github.com/samdark/typograph

Класс для автоматического применения правил русской типографики для веб
https://github.com/samdark/typograph

russian-specific typographer typography

Last synced: about 1 year ago
JSON representation

Класс для автоматического применения правил русской типографики для веб

Awesome Lists containing this project

README

          

Типограф (PHP5)
===============

- Страничка: http://rmcreative.ru/blog/post/tipograf
- Онлайн-версия: http://rmcreative.ru/typograph/

Авторы:

- [Максим Оранский](http://smee-again.livejournal.com/), первоначальный код, тестирование, правила.
- [Александр Макаров](http://rmcreative.ru), код, тестирование, правила, плагины для Smarty, дальнейшая поддержка.

При создании типографа помимо личного опыта использовались:

- http://philigon.ru/
- http://artlebedev.ru/kovodstvo/
- http://pvt.livejournal.com/

Спасибо:

- [-=Ustas=-](http://vingrad.ru/@-=Ustas=-/)
- [faZeful](http://fazeful.ru/)
- [Naruvi (Begemot)](http://priop.ru/)
- grasshopper
- eagle
- SHAman
- Eagle
- grasshopper
- Max
- Reki
- Zav
- sadhaka
- Алексей Волкогон

… и всем, кто пользуется типографом и сообщает об ошибках.

Отдельное спасибо Max-у за плагин к Wordpress.

На данный момент типограф умеет:
--------------------------------

- Обрабатывать тексты в различных кодировках(требуется iconv).
- Заменять кавычки на ёлочки.
- Склеивать двойные кавычки.
- Заменять знак дефиса или два знака дефиса подряд — на знак длинного тире.
- Заменять знак дефиса, ограниченный с обоих сторон цифрами — на знак короткого тире.
- Заменять множество пробелов или табуляций на один пробел.
- Заменять х в выражениях вроде 10x10 на знак умножения.
- Исправлять неправильную расстановку запятых.
- Разносить неправильно расставленные кавычки.
- Вставлять неразрывный пробел после инициалов, сцеплять инициалы.
- Делать неразрывными названия организаций и аббревиатуры форм собственности.
- Делать неразрывными имя собственное и относящееся к нему сокращение.
- Не разделять 2007 г., ставить пробел, если его нет.
- Сцеплять скобки со словами.
- Заменять 1/2 1/4 3/4 на спецсимволы.
- Следить за тем, чтобы предлоги и союзы не находились в конце строки.
- Следить за тем, чтобы частицы бы, ли, же и т.д. не отрывались от предшествующего слова.
- Форматировать русские денежные суммы, расставляя пробелы в нужных местах.
- Заменять от 3-х до 5-и точек подряд на троеточие.
- Притягивать к слову запятые, отделять пробелом от последующего слова.
- Притягивать к слову восклицательный знак.
- Делать замену для +-.
- Обрабатывать вложенные кавычки.
- Притягивание чисел к знаку умножения.
- Запятые до «а» и «но».
- Притягивание «;» к предшествующему слову.
- Убирает лишние знаки: «??» в «?», «!!!!» в «!!!».
- Правильные апострофы в «LO'Лайт».
- Прямая речь.
- Неразрывные IP-адреса.

Использование класса
--------------------

Простой пример:

~~~
require_once('Typographus.php');
$typo = new Typographus();
$text = $typo->process($text);
~~~

Для обработки текста в кодировке, отличной от `WINDOWS-1251`, укажите кодировку в
конструкторе(требуется iconv):

~~~
$typo = new Typographus('UTF-8');
~~~

Если возникнет необходимость не обрабатывать текст внутри какого-либо блока —
добавьте его при помощи метода `addSafeBlock()`:

~~~
$typo->addSafeBlock('', '');
~~~

Для задания полностью своего набора безопасных блоков можно сначала очистить набор блоков:

~~~
$typo->removeAllSafeBlocks();
~~~

Если вам понадобится изменить символы замены, воспользуйтесь методом setSym():

~~~
$typo->setSym('nbsp', ' ');
~~~

Если хотите, чтобы все буквы ё менялись автоматом на е:

~~~
$typo->setOpt(Typographus::CONVERT_E, true);
~~~

Если хотите, чтобы спец-знаки были выведены как HTML-сущности:

~~~
$typo->setOpt(Typographus::HTML_ENTITIES, true);
~~~

Использование типографа в Smarty
--------------------------------

Вместе с классом типографа в архиве вы можете найти плагины для Smarty.
Скопируйте их в вашу папку `plugins`.

Если вы хотите подключить постфильтр Smarty (т.е. обработать всю страницу уже
после её формирования) — пишем при инициализации Smarty:

~~~
$smarty->load_filter('output', 'typograph');
~~~

Данный подход не рекомендуется использовать т.к. использование может сказаться на производительности.

Если вам необходимо обработать конкретную переменную - применеям модификатор в
шаблоне:

~~~
{$text|typograph}
~~~

Использование типографа в WordPress, Drupal, CakePHP, Invision Power Board
--------------------------------------------------------------------------

В архиве прилагаются инструкции и необходимые файлы.