====== Nextcloudのプレビューの文字化けを直す ====== Web版Nextcloudで表示されるテキストファイルのプレビュー画像が文字化けしてたので直してみた。 {{ :blog:2019:nextcloud_garbled_preview.png |}} やることは、プレビュー生成で使っているフォントをNotoSansCJKに変更するだけ。手順は↓こんな感じ。 - [[https://github.com/minoryorg/Noto-Sans-CJK-JP/tree/master/fonts]] から NotoSansCJKjp-Regular.ttf をダウンロード - DLしたフォントを ''Nextcloudのインストール先/core/fonts'' に入れる - 上記フォルダで''NotoSansCJKjp-Regular.ttf''を''NotoSans-Regular.ttf (Nunito-Regular.ttf)''にリネームする(シンボリックリンクでも可) Nextcloudの標準フォントに、日本語のグリフが含まれていないのが原因のようだ。当初は文字コード周りかと思ってたが、プレビューをよく見ると“豆腐”になっていることが分かる。 プレビューの生成はファイルが変わった時に行われるようなので、てきとーにファイルを編集すれば正常な表示になるはず。 {{ :blog:2019:nextcloud_correct_preview.png |}} もう少し詳しく解説すると、テキストファイルのプレビューの生成は''lib/private/Preview/TXT.php''で行われており、80行目あたりでNotoSans-Regularが指定されている→[[https://github.com/nextcloud/server/blob/master/lib/private/Preview/TXT.php#L80|GitHub/master]] Notoなのに何で文字化け…?と思ったのだが、同梱のNotoには日本語のグリフが含まれていないようだ。ついでに、Notoが使われるようになったのはごく最近で、以前はNunitoが使われていたようだ→[[https://github.com/nextcloud/server/commit/d14c0f2ed7ab02fb470941752d0a027631a6a19a#diff-05ba0e7cbd6974f01721f0508b03a137|GitHub/Move font from Nunito to Noto Sans]] というわけで、使ってるNextcloudのバージョンに応じて、NotoSans-Regular.ttfもしくはNunito-Regular.ttfを日本語グリフを含むフォントに差し替えればおkというわけ。