spipremix / typography
Tool to build nice typography. Extends JoliTypo with new rules.
Installs: 2
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Forks: 0
pkg:composer/spipremix/typography
Requires
- php: ^7.4|^8.0
 - jolicode/jolitypo: ^1.2
 
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.3
 - phpunit/phpunit: ^9.5
 
This package is auto-updated.
Last update: 2025-10-21 05:50:32 UTC
README
SpipRemix Typography is a tool that provide microtypography corrections for texts. It relies on JoliCode/JoliTypo library with additional rules.
This library can be used in any PHP project. For usage alongside the SPIP CMS, see SpipRemix/Typographer library.
Installation
composer require spipremix/typography
Usage
The integrated Fixer class extends the native JoliTypo’s one, so the syntax is similar. See JoliTypo for more informations.
use SpipRemix/Typography/Fixer;
$rules = Fixer::DEFAULT_RULES_BY_LOCALE['fr_FR'];
$fixer = new Fixer($rules);
$fixer->setLocale('fr_FR');
$htmlContent = $fixer->fix($htmlContent);
$stringContent = $fixer->fixString($stringContent);
constant DEFAULT_RULES_BY_LOCALE
We have introduced Fixer::DEFAULT_RULES_BY_LOCALE constant which differ from native Fixer::RECOMMENDED_RULES_BY_LOCALE in that way :
- Removed Hyphen rule : This rule si notably time consuming. By the way it becomes less useful as CSS gets an hyphenation support (not on all browsers nor languages yet however).
 - Added Fr/PunctuationMissingNoBreakSpace rule for 
fr_FRlocale : Unlike JoliTypo, this rule adds non-breaking space beetween a word and a punctuation sign when it’s missing and needed. Native JoliTypo only alter the string for a non-breaking space if a space already exists. See JoliTypo#31 issue 
Load additional rules
use SpipRemix/Typography/Fixer;
use SpipRemix/Typography/Fixer/TildeAsNoBreakSpace;
$rules = Fixer::DEFAULT_RULES_BY_LOCALE['fr_FR'];
// adds TildeAsNoBreakSpace in first place.
$rules = [TildeAsNoBreakSpace::class, ...$rules];
$fixer = new Fixer($rules);
$fixer->setLocale('fr_FR');
Additional Rules
We introduced some additional rules to upgrade some part of the JoliTypo ones.
TildeAsNoBreakSpace
Fixer that change tilde char ~ to non-breaking space, unless they are escaped with a slash, as in \~.
Note: Tilde character is used in Tex or LaTex to represent a non-breaking space character. The SPIP editing syntax also offer this kind of writing, and potentally other tools.
This rule, somehow specific, is not in the Fixer::DEFAULT_RULES_BY_LOCALE rules list.
Fr/PunctuationMissingNoBreakSpace
This rule completes the FrenchNoBreakSpace native one, and should be added before it in the rules order.
This rule adds non-breaking space beetween a word and a punctuation sign when it’s missing and needed, like in Quoi?, Quoi? or Quoi:. Native JoliTypo only replaces the string for a non-breaking space if a space already exists, like in Quoi ?.
This rule try to be smart in some edge cases by not touching specific patterns like 12:34, :happy:, :-) an so on.