LinuxのWebブラウザ上のFigmaでローカルフォントを参照する
環境
Archlinux
$ uname -r
6.5.6-arch2-1
Google Chrome
117.0.5938.88
問題
ブラウザ上のFigmaで特定のテキストを編集しようとすると、fontが見つからないので代替テキストを選択するモーダルが出る。
画像はFigmaのヘルプページより引用
私の場合、実際には"SF Pro Text" などが見つからないとFigma上で言ってきた。
先に結論
これをインストールすれば、Linuxのブラウザ上のfigmaからローカルフォントを参照できる 👍
以下諸々の調査記録
SF Pro Text
) のインストール自体
font(Archlinuxの場合 https://aur.archlinux.org/packages/apple-fonts があるのでこれでいける
yay -S apple-fonts
- SF Pro Text とかも入るはず。
- 自分の環境の場合
/user/share/fonts/OTF/
の下に入っていた。
私の場合font自体はインストールされていた。
まず fc-list でみつかる
$ fc-list |grep SF-Pro-Text | head -3
/usr/share/fonts/OTF/SF-Pro-Text-BlackItalic.otf: SF Pro Text:style=Black Italic
/usr/share/fonts/OTF/SF-Pro-Text-Regular.otf: SF Pro Text:style=Regular
/usr/share/fonts/OTF/SF-Pro-Text-Thin.otf: SF Pro Text:style=Thin
chromeでも実際に使える
でもFigma(on browser) で使えない。なぜ?
FigmaのヘルプページのManage missing fonts にはこう書いてあった。
Make sure the Figma font service is installed and working (browser only)
You need to install the Figma font service to use your local fonts in Figma's browser app. To confirm it's working:
ブラウザからFigmaを使う場合 Figma font service というのがないとローカルのフォントにアクセスできないらしい。
ローカルにインストールされているFigmaなら font serviceはいらない。
MacとWindowsはローカルマシンにインストールするFigma Font Serviceのインストーラーがここにある。でもLinuxはない。
Access local fonts on your computer
ちなみにローカルになくてもGoogle Web FontsにあるフォントならFigma上で使えるらしいんだが、今回の問題はローカルにはあるけど、Google Web FontsにはないフォントがFigma上で既に使われている場合に自分のマシンから編集できないという点。
Solution-1[ボツ案] LinuxにローカルのFigmaをインストールする
- AURがあるけど、インストールしたら自分のマシンのglibcが新しすぎてlocal figmaが起動できなかった
- repositoryをcloneして、npm install して... という方法をためしたけど、npm installに成功しても npm run build が通らなかった. もうちょい時間使えばこの方法でもいけたとは思うが。
- snapやAppImageはなんか好きでないのでパス。
Solution-2[これでいけた] figma-linux-font-helper + ブラウザ上のFigma利用
Figmaのオフィシャルではないのだけどこんなのがある。素晴らしい。
なるほど、localにhttpサーバーを立ててbrowser上のfigmaからアクセスする感じなんですね。
ちなみにRustで書かれている。
installするとこの辺のやつが生成されていた
- 実行バイナリ
~/.local/share/figma-fonthelper/fonthelper
- systemd の設定ファイル
~/.config/systemd/user/figma-fonthelper.service
[Unit]
Description=Font Helper for Figma
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=${XDG_CONFIG_HOME}/figma-fonthelper/fonthelper
ExecStop=/bin/bash -c '`which killall` fonthelper'
Restart=on-failure
[Install]
WantedBy=multi-user.target
インストール後にchromeのsite-settingから念の為figmaのapplication data(cookie etc..)を削除して、再度ログインした。
これでこれまでMissing fontsモーダルが出て編集できなかった箇所が編集できるようになった。
Figmaの "Account Setting" でも font serviceがEnabledになっていることがわかる。
(2024.01.22 追記) UserAgentを偽装しないとFigmaがFontHelperへ問い合わせてくれない
google-chrome --user-agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
こちらの2024.01.12のFigma Forumの投稿にこの問題を見つけた方がいました。
Requests to font-helper on linux stopped working - General Discussion - Figma Community Forum
Discussion
memo
なんか、figma側から認識されていなくなった。
$ systemctl --user status figma-fonthelper.service
しても同じ
curl http://127.0.0.1:18412/figma/font-files ではそれっぽいものがかえってくるんだけど
※ちなみにcurl は
--write-out '%{json}'
で header部分をjsonで返してくれるFigma Forum よりこの問題に該当する投稿をみつけた
やはり figma側からFont Helperへの動作に問題があるようだ。
というのが上がっている
これをまずためした。
vim ~/.config/figma-linux/settings.json
でポートを変えて、
systemctl --user restart figma-fonthelper.service
ポートのチェック
変わっているので、figmaのトップページ(https://www.figma.com/files/recents-and-sharing/recently-viewed)
の "左上の自分の名前ボタン" -> "Settings" -> "Account"タブ -> "Fonts" を見てみるが、相変わらず
Local fonts are currently not supported for this operating system.
UserAgentをこれにするといけた