React-pdfで、文書全体に以下の設定を適用する方法
- 改行時にハイフンを入れないようにする
- 単語の途中で改行する
こちらにスマートな解決法がありました。
Font.registerHyphenationCallback((word) =>
Array.from(word).flatMap((char) => [char, ''])
)
解説
React-pdfで改行時の体裁を変更するには、
Font.registerHyphenationCallback
でメソッドをオーバーライドする。
この時、文章が単語ごとに区切られてword
としてメソッドに渡されるのだが、
その区切り方は英語に準拠したものとなっているため、日本語の単語では適切に区切られない場合がある。
そこで、メソッドに1文字づつをword
として認識させ、単語の区切りを気にせずどこでも改行するようにする。
改行時に挿入される文字には''
を指定して、'-'
と置き換える。