spipremix/typography

构建优美排版的工具。扩展了 JoliTypo 的新规则。

dev-master 2021-11-20 20:01 UTC

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::-) 等。