Node.jsで特定のフォントを使えるようにする

Cloud FunctionsなどのNode.js環境で、日本語フォントを使いたいけど入ってないことがあると思います。そんな時にGoogle Fontsなどからダウンロードしてきたフォントを使えるようにできます。

はじめに

Node.js で fc-list コマンドを実行して、既に使えるフォントを確認してみましょう。

const result = spawnSync('fc-list');
console.log(result.stdout.toString();

/usr/share/fonts/truetype/tlwg/TlwgTypo-Bold.ttf: Tlwg Typo:style=Bold
/usr/share/fonts/truetype/tlwg/TlwgTypewriter-BoldOblique.ttf: Tlwg Typewriter:style=Bold Oblique
...

  こんな感じで使えるフォントの一覧が表示されます。

fontconfigを作成する

手元にあるフォントをどこかNode.jsから見えるディレクトリに置きます。そして、fonts.confファイルを作成して、フォントのパスを記載します。例えば、下記の階層だと /src/fonts/google と書きます。

/src/fonts
  ├ fonts.conf
  ├ /google
    ├ 〜.otf

fonts.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/src/fonts/google</dir>
</fontconfig>

FONTCONFIG_PATHを指定する

次にNode.jsの環境変数 FONTCONFIG_PATH に、fonts.confがあるディレクトリを指定します。例の場合だと、/src/fonts/ です。

process.env.FONTCONFIG_PATH = '/src/fonts/';

これで、もう一度 1. を実行すると、Node.jsから使いたかったフォントが一覧に表示されると思います!

※フォントのライセンスにはくれぐれも注意しましょう