spipremix / typography
构建优美排版的工具。扩展了 JoliTypo 的新规则。
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: 2024-09-21 02:56:44 UTC
README
SpipRemix Typography 是一个提供微排印修正的文本工具。它依赖于 JoliCode/JoliTypo 库,并增加了额外的规则。
此库可用于任何 PHP 项目。若要与 SPIP CMS 一起使用,请参阅 SpipRemix/Typographer 库。
安装
composer require spipremix/typography
使用方法
内置的 Fixer 类扩展了原生的 JoliTypo 类,因此语法相似。有关更多信息,请参阅 JoliTypo。
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);
常量 DEFAULT_RULES_BY_LOCALE
我们引入了 Fixer::DEFAULT_RULES_BY_LOCALE
常量,其与原生的 Fixer::RECOMMENDED_RULES_BY_LOCALE
不同之处在于
- 移除连字符 规则:此规则特别耗时。此外,由于 CSS 已支持连字符划分(但并非所有浏览器和语言都支持),因此它变得不那么有用。
- 为
fr_FR
区域添加了 Fr/PunctuationMissingNoBreakSpace 规则:与 JoliTypo 不同,此规则在需要时会在单词和标点符号之间添加非断行空格。原生 JoliTypo 只有在存在空格的情况下才会将字符串替换为非断行空格。有关详细信息,请参阅 JoliTypo#31 问题
加载额外规则
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');
额外规则
我们引入了一些额外的规则来升级 JoliTypo 的一些部分。
TildeAsNoBreakSpace
将波浪字符 ~
转换为非断行空格的 Fixer,除非它们用斜杠转义,例如 \~
。
注意:波浪字符用于 Tex 或 LaTex 来表示非断行空格字符。SPIP 编辑语法也提供此类写作,以及潜在的其他工具。
此规则虽然特定,但不在 Fixer::DEFAULT_RULES_BY_LOCALE
规则列表中。
Fr/PunctuationMissingNoBreakSpace
此规则补充了原生的 FrenchNoBreakSpace
规则,并应在规则顺序中先添加。
此规则在需要时会在单词和标点符号之间添加非断行空格,例如在 Quoi?
、Quoi?
或 Quoi:
中。原生 JoliTypo 只有在存在空格的情况下才会将字符串替换为非断行空格,例如在 Quoi ?
中。
此规则试图在特定边缘情况下变得聪明,例如不会触及特定模式如 12:34
、:happy:
、:-)
等。