zoibana / typograph
Requires
- php: >=7.4.0
Requires (Dev)
- phpunit/phpunit: ^11.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-23 16:09:41 UTC
README
Переписанный в относительно нормальный вид типограф Муравьева на PHP. Поддерживает все возможности оригинального типографа, и добавляет возможность кастомизации и добавления своих правил обработки текста.
Устройство
Все правила сгруппированны по типам (согласно группировке, используемой в оригинальном типографе)
Классы групп правил реализуют интерфейс RuleGroupInterface.
Классы групп правил объединяют в себе правила, реализующие интерфейс RuleInterface.
Вы можете создать свой класс группы правил, реализующий интерфейс RuleGroupInterface
и/или свой класс правила, реализующий интерфейс RuleInterface.
Установка
composer require zoibana/typograph
Использование
Типограф со всеми правилами:
<?php use zoibana\Typograph; $text = "initial text"; // Инициализируем типограф со стандартным набором правил $typo = new Typograph(); // Задаем текст для обработки $typo->setText($text); // Получаем обработанный текст $formattedText->apply()); // Получаем содержимое css-файла со всеми стилями, примененными к тексту $cssStyles = $typo->getCssStyles();
Типограф со своими правилами:
<?php use zoibana\Typograph; $text = "initial text"; // Инициализируем типограф с собственным набором правил $typo = new Typograph([ CustomRuleGroup::class, ]); // Задаем текст для обработки $typo->setText($text); // Получаем обработанный текст $formattedText->apply()); // Получаем содержимое css-файла со всеми стилями, примененными к тексту $cssStyles = $typo->getCssStyles();
Простой текст вместо HTML — текстовый узел документа редактора, заголовок, подпись:
<?php use zoibana\Typograph\Typograph; // "Итог\u{A0}— «ок»": символы и неразрывные пробелы вместо сущностей, без тегов (new Typograph())->applyToPlainText('Итог - "ок"');
applyToPlainText() не ставит параграфы, переносы, автоссылки и висячую пунктуацию (группы Text и
OpticalAlign), сохраняет пробелы по краям, оставляет символы <, >, & символами и не трогает адреса,
почту и домены.
Поведение по умолчанию
- Точка в конце текста не дописывается:
PunctuationPeriodAtEndRuleне входит в группуPunctuation(заголовки и пункты списков не должны получать точку). Правило можно подключить своей группой. apply()возвращает типографские символы вместо HTML-сущностей («,—, неразрывный пробел), кроме сущностей разметки:<,>,&,"и их числовые формы не раскодируются — иначе экранированный текст стал бы тегами.
Тесты
composer install vendor/bin/phpunit
CI прогоняет их на PHP 8.3 (.github/workflows/tests.yml).