跳轉到

斷字

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 層初始化後被快取,同一語言的模式只載入一次。對於大量文字的文件,建議預先熱身斷字模式:

// 應用程式啟動時預載語言模式
$process->hyphenation()->warmUp(languages: ['en-US', 'de-DE', 'zh-TW']);

參見