NextcloudのCollabora Officeに日本語フォント入れてみた

NextcloudのオフィスアプリにCollabora Officeというものがあったので、仮想環境に入れて試してみたメモ書き。

インストール

Nextcloudのアプリインストール画面から「Nextcloud Office」と「Collabora Online – Built-in CODE Server」をインストール。

ちなみにnextcloudはpodmanでコンテナを動かして、nginxでリバースプロクシしてる。

試しに表示

インストールが終わったら設定で「ビルトインCODEを使う」に設定して、ファイルから適当なofficeファイルにアクセス。

日本語フォントが入っていないため、日本語がない

デフォルトでは日本語フォントがないらしく、日本語がほぼ表示できない。

流石にこれでは困るので調査。ざっくりググってみたところ、「設定ファイルをかけばいい」「ただし、ビルトインサーバーだとちょっと面倒」とのことだったけど、custom_apps/richdocumentscode/proxy.phpを眺めてたところ

// Remote font config URL (HTTPS only)
$remoteFontConfig = "";
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
{
    $remoteFontConfigUrl = escapeshellarg("https://" . $_SERVER['HTTP_HOST'] . preg_replace("/richdocumentscode.*$/", "richdocuments/settings/fonts.json", $_SERVER['REQUEST_URI']));
    $remoteFontConfig = "--o:remote_font_config.url=" . $remoteFontConfigUrl;
}

こんな感じのコードがあり、設定ファイルとフォントさえ準備すればできそうな雰囲気。

見た感じ、/cutom_apps/richdocuments/settings/fonts.jsonを読みに行くようなので、richdocumentsディレクトリ以下にsettingsディレクトリを作って、以下の設定ファイルを保存

{
    "kind": "fontconfiguration",
    "server": "192.168.122.17",
    "fonts": [
        {
            "uri": "https://192.168.122.17/custom_apps/richdocuments/fonts/TakaoGothic.ttf"
        }
    ]
}

次にcustom_apps/richdocuments/fonts/TakaoGothic.ttfを読むように指定してるので、そこにフォントファイルを配置。フォントは何かとよく使ってるTakaoフォントを使用。

ちょっと困った

一応これだけで日本語が表示できるかと思ったけど、困ったことに表示できない。

あれこれ調べた感じ、nginxまではhttpsなんだけどnginxからphpまでがhttp通信なので$_SERVER['HTTPS']がonにならず、フォント設定を見に行かないらしい。

ちょっと眠い目擦って調べたけどどうにもうまくいかなかったので

*** proxy.php 
--- custom_apps/richdocumentscode/proxy.php
***************
*** 80,85 ****
--- 80,86 ----

      // Remote font config URL (HTTPS only)
      $remoteFontConfig = "";
+     $_SERVER['HTTPS'] = 'on';
      if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
      {
          $remoteFontConfigUrl = escapeshellarg("https://" . $_SERVER['HTTP_HOST'] . preg_replace("/richdocumentscode.*$/", "richdocuments/settings/fonts.json", $_SERVER['REQUEST_URI']));

直前で無理やりonにしてnextcloudを再起動してテスト。

日本語フォントが読み込まれて、日本語が表示可能に

なんとかTakaoフォントが読み込まれて、日本語が表示可能になった。

あとはこれをメインのサーバーに入れてテストだ。

EC-1でBVEをプレイするプラグインと、JR東日本トレインシミュレータを操作するプログラムを公開することにした

せっかく作ったので、公開することにした。

続きを読む EC-1でBVEをプレイするプラグインと、JR東日本トレインシミュレータを操作するプログラムを公開することにした