mifesta / hyphenation-php
Hyphenation for Russian, English and German text
Package info
github.com/cardee2000/PhpHyphenation
Language:Perl
pkg:composer/mifesta/hyphenation-php
Requires
- php: >=8.5.0 <8.6.0
- ext-iconv: *
- ext-mbstring: *
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Библиотека расставляет в тексте мягкие переносы по алгоритму Ляна–Кнута. Строку можно разорвать только в отмеченных местах, а при копировании символ переноса обычно не попадает в буфер. Словари взяты из TeX.
Установка
composer require mifesta/hyphenation-php:~8.5.1
| Релиз | PHP |
|---|---|
~7.4.1 |
7.4 |
~8.0.1 |
8.0 |
~8.1.1 |
8.1 |
~8.2.1 |
8.2 |
~8.3.1 |
8.3 |
~8.4.1 |
8.4 |
~8.5.1 |
8.5 |
Нужны расширения iconv и mbstring.
Языки
| Код | Правила |
|---|---|
ru_RU |
русский, не меньше 4 букв слева и 4 справа |
en_US |
английский, США, не меньше 2 и 2 |
en_GB |
английский, Великобритания, не меньше 2 и 2 |
de-1996 |
немецкий по орфографии после реформы 1996 года, не меньше 2 и 2 |
de_DE |
те же правила и тот же словарь, что у de-1996 |
Слово короче суммы двух полей не переносится: для русского это 8 букв, для английского и немецкого — 4. Неизвестный код языка выбрасывает InvalidArgumentException.
Использование
use Hyphenation\Hyphenation; $hy = new Hyphenation('ru_RU'); echo $hy->hyphenate('Автоматическая расстановка переносов в узкой колонке.', 'UTF-8'); $de = new Hyphenation('de_DE'); echo $de->hyphenate('Donaudampfschifffahrt', 'UTF-8');
hyphenate($text, $encoding, $shy, $preserveTags):
$encoding— кодировка текста. Пустая строка означает внутреннюю кодировку словаря, у этих языков это UTF-8. Подойдут и другие именаiconv, напримерCP1251.$shy— маркер переноса в UTF-8. По умолчанию это символ U+00AD. Можно передать­; выбранный маркер сохраняется у объекта.$preserveTags— по умолчаниюtrue. Слова внутри<...>не переносятся, текст между тегами переносится.
Слово, перед которым стоит \, остаётся целым. Слово из одних заглавных пропускается. Заглавные в середине слова тоже, пока не включено $hy->proceed_uppercase = true.
set_limits($left, $right, $length, $rightLast, $leftUc) поднимает пороги. Опустить их ниже минимума языка нельзя. $rightLast относится к последнему слову текста, $leftUc — к слову с заглавной первой буквы. По умолчанию они равны обычным полям.
Первый вызов собирает словарь и записывает его в src/completed. Если каталог пакета закрыт для записи, кэш кладётся во временный каталог системы. Следующие вызовы читают готовый словарь.
Проверка
composer test
Лицензия
GNU Lesser General Public License v3.0 or later. См. LICENSE.
Уведомления о правах на файлы шаблонов лежат в src/patterns.