Search by

mifesta / hyphenation-php

Cardee

Hyphenation for Russian, English and German text

Package info

github.com/cardee2000/PhpHyphenation

Language:Perl

pkg:composer/mifesta/hyphenation-php

Statistics

Installs: 94

Dependents: 0

Suggesters: 0

Stars: 0

v8.5.1 2026-11-12 08:56 UTC

This package is auto-updated.

Last update: 2026-11-13 11:13:00 UTC


README

English · Deutsch

Latest Stable Version License Total Downloads

Библиотека расставляет в тексте мягкие переносы по алгоритму Ляна–Кнута. Строку можно разорвать только в отмеченных местах, а при копировании символ переноса обычно не попадает в буфер. Словари взяты из 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.