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