斷字¶
NextPDF 的斷字模組基於 TeX 的 Liang 演算法,使用語言特定的模式字典來計算最佳斷字位置。支援 40+ 種語言的斷字模式,確保多語言文件的排版品質。
啟用斷字¶
use NextPDF\Content\Hyphenation\HyphenationConfig;
// 在設定中啟用斷字
$config = Configuration::create(
hyphenation: HyphenationConfig::create(
enabled: true,
language: 'en-US',
minimumWordLength: 6, // 少於 6 字元的單詞不斷字
minimumBeforeBreak: 2, // 斷字前至少保留 2 個字元
minimumAfterBreak: 3, // 斷字後至少保留 3 個字元
),
);
語言模式¶
use NextPDF\Content\Hyphenation\HyphenationPatterns;
// 載入特定語言模式
$patterns = HyphenationPatterns::forLanguage(language: 'de-DE'); // 德文
$patterns = HyphenationPatterns::forLanguage(language: 'fr-FR'); // 法文
$patterns = HyphenationPatterns::forLanguage(language: 'zh-TW'); // 繁體中文(字元邊界)
支援的語言清單¶
| 語言 | 標籤 | 字典來源 |
|---|---|---|
| 英文(美) | en-US | TeX Hyphenation Patterns |
| 英文(英) | en-GB | TeX Hyphenation Patterns |
| 德文 | de-DE | TeX Hyphenation Patterns |
| 法文 | fr-FR | TeX Hyphenation Patterns |
| 西班牙文 | es-ES | TeX Hyphenation Patterns |
| 繁體中文 | zh-TW | 字元邊界演算法 |
| 日文 | ja-JP | Unicode 行分割演算法 |
| 韓文 | ko-KR | Unicode 行分割演算法 |
| 阿拉伯文 | ar | Unicode 行分割演算法 |
混合語言文件¶
// 在同一份文件中使用不同語言的斷字
$document->text()->write(
text: 'Dokumentenverwaltungssystem',
position: Position::at(x: 20.0, y: 50.0),
hyphenationLanguage: 'de-DE', // 覆蓋文件預設語言
);
自訂斷字字典¶
use NextPDF\Content\Hyphenation\CustomHyphenationDictionary;
// 加入專業術語的自訂斷字規則
$dictionary = CustomHyphenationDictionary::fromArray([
'Next-PDF' => ['Next', 'PDF'],
'micro-services' => ['micro', 'ser', 'vices'],
]);
$process->hyphenation()->addDictionary(
language: 'en-US',
dictionary: $dictionary,
);
效能考量¶
斷字模式字典在 Process 層初始化後被快取,同一語言的模式只載入一次。對於大量文字的文件,建議預先熱身斷字模式: