PHPackages                             chulakov/ch-php-typograph - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. chulakov/ch-php-typograph

ActivePhp-typograph-component[Utility &amp; Helpers](/categories/utility)

chulakov/ch-php-typograph
=========================

Component lets tune Muravjev typograph and use it

1.0.7(4y ago)114.8k↓33.3%11BSD-3-ClausePHPPHP &gt;=5.6

Since Nov 11Pushed 4y ago5 watchersCompare

[ Source](https://github.com/OlegChulakovStudio/ch-php-typograph)[ Packagist](https://packagist.org/packages/chulakov/ch-php-typograph)[ RSS](/packages/chulakov-ch-php-typograph/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (7)Dependencies (2)Versions (10)Used By (1)

### Компонент типографа на ЯП PHP со встроенным конфигуратором

[](#компонент-типографа-на-яп-php-со-встроенным-конфигуратором)

Конфигуратор типографа настраивает правила типографа Муравьева.

Добавление или удаление третов в конфигураторе не реализовано. Если какой-либо трет нужно полностью исключть из типографирования, то можно отключить все его правила.

- **Трет** - это блок или модуль правил. Например: трет Symbol содержит правила обнаружения и обработки различных символов. ---
- **Правило** - это массив, состоящий из регулярок(-ки) обнаружения случая в тексте и регулярок(-ки), на которые соответственно необходимо заменить найденный случай в тексте.
    Также имеется (неоябзательная) ячейка в массиве с описанием сути правила. ---
- **Typograph composer-пакета oleg-chulakov-studio/mdash** - это наследник *TypographBase*. В нем объявлены не все правила третов, которые доступны в классе *TypographBase*.
    В результате не все правила класса TypographBase можно подключить / отключить. Потому некоторые правила третов класса *TypographBase* прописаны
    в переменной *$additionalOptions* класса *TypographConfigurator* для их последующей настройки. ---
- Класс *Typograph* с пространством имен *Chulakov\\PhpTypograph* наследуется от класса *Typograph* из composer-пакета *oleg-chulakov-studio/mdash*, т. к. необходимо было добавить
    правила типографу, которые были доступны в классе *TypographBase*, но перестали быть доступны в классе *Typograph* из composer-пакета *oleg-chulakov-studio/mdash*. ---

### Установка

[](#установка)

Чтобы установить компонент, нужно в composer.json добавить следующие строки:

```
"require": {
    "chulakov/ch-php-typograph": "^1.0.0",
}
```

Или набрать команду:

```
composer require chulakov/ch-php-typograph
```

### Работа конфигуратора

[](#работа-конфигуратора)

1. Объявление конфигуратора типографа. Настройка типографа с правилами, прописанными в конфигах и внутри самого конфигуратора по умолчанию

```
$configurator = new TypographConfigurator();
$configurator->configure();
```

2. Настройка типографа с правилами, переданными через конструктор конфигуратора

```
$configurator = new TypographConfigurator($additionalRules, $changedRules);
```

3. Пример объявления новых правил

```
$additionalRules = [
    [
        'selector' => 'Abbr',
        'ruleName' => 'nobr_vtch_BC',
        'params' => [
            'pattern' => '/(^|\s|\&nbsp\;|)([дД]о)?[ ](н)\.?[ ]?э\./ue',
            'replacement' => '$m[1] . $this->tag($m[2] . " н."." э.", "span", array("class" => "nowrap"))',
        ],
    ],
];
```

4. Пример объявления изменений правил

```
$changedRules = [
    [
        'selector' => 'Etc.time_interval',
        'keysOfRule' => [
            'pattern',
            'replacement',
        ],
        'valuesOfKeyRule' => [
            '/([\d]{1,2}\:[\d]{2})(-|\&mdash\;|\&minus\;)([\d]{1,2}\:[\d]{2})/eui',
            '$this->tag($m[1] . "&ndash;" . $m[3], "span", array("class" => "nowrap"))',
        ],
    ],
];
```

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

[](#использование-типографа)

1. Создание объекта типографа с пользовательскими настройками и обработка текста. В момент создания обекта класса *TypographFacade* внутри него создается
    конфигуратор типографа

```
$typograph = new TypographFacade();
$processedText = $typograph->process('до н. э.');
```

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 51.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

8

Last Release

1621d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a7cb11be37853072fe7ab807b40211e2c135bc04bf5c7c79d9c523dc4022ed2d?d=identicon)[Oleg Chulakov Studio](/maintainers/Oleg%20Chulakov%20Studio)

---

Top Contributors

[![esco8800](https://avatars.githubusercontent.com/u/47655755?v=4)](https://github.com/esco8800 "esco8800 (15 commits)")[![AnastasiyaSha](https://avatars.githubusercontent.com/u/92023267?v=4)](https://github.com/AnastasiyaSha "AnastasiyaSha (12 commits)")[![dzahkiev](https://avatars.githubusercontent.com/u/15817728?v=4)](https://github.com/dzahkiev "dzahkiev (2 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/chulakov-ch-php-typograph/health.svg)

```
[![Health](https://phpackages.com/badges/chulakov-ch-php-typograph/health.svg)](https://phpackages.com/packages/chulakov-ch-php-typograph)
```

###  Alternatives

[paragonie/stern

Stern lets you built type-safe PHP projects, even if your project's users aren't writing type-safe code

201.5k1](/packages/paragonie-stern)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
