管理者権限のない Windows PC で FontForge を使いたい
Windows PC で FontForge を使いたいが,普通に
家族共用 PC で管理者権限を持っていないので困った。
GitHub 上の
こっちに飛ばされる。
Windows では MSYS2 でこの
UNIX に近い環境を Windows で動かせるというものらしい。初めて見た。
そして言われるがまま
git clone https://github.com/fontforge/fontforge && cd fontforge && mkdir build && cd build
cmake -GNinja ..
ninja
git
がないよ,と怒られたので,path の通し方について調べる。
こちらを参考にさせていただき,Windows のMSYS2_PATH_TYPE
を inherit
に設定。動いた。
調べてみると,cd /c/(どこか)
みたいな感じで Windows の絶対パスに対応した場所に行けるっぽい。
FontForge を入れたい目的の
ところで MSYS2 のシェルへのコピペは Shift + Insert でできる。癖つよっ(って思ってしまったのは私が経験無いせいです)。
動いたと思いきや,4 つ問題発生。
- 間違えて git の過去のコミットも含めて全部クローンしちゃった。ただ最新版使いたいだけなのでそんなに要らない。
-
master
ブランチを引っ張ってきちゃった。ほしいのは Windows の最新の安定版。 - 「
cmake コマンドが見つかりません
」 - 「
ninja コマンドが見つかりません
」
git 関係の 1. 2. は,前者は depth
指定すればいいとして,後者はどうやるんだっけ。調べる。
環境関係の 3. 4. はがんばる。
ブランチ指定(2.)については,-b (ブランチ名)
と指定すればよいとのこと。
一旦ディレクトリごと削除して,例のコマンドの一行目のみやり直す。
リリース履歴によれば,最新安定版リリースは 20230101
で良いのかな。コミット ID の代わりに 20230101
っていう表示になってる。Git におけるタグ機能というらしい(そんなのあるんだ)。
というわけで,
git clone https://github.com/fontforge/fontforge -b 20230101 --depth 1 && cd fontforge && mkdir build && cd build
を実行する。--depth 1
なんてできるのか不安だったけど一応できたっぽい。
ninja
は cmake
の中のものらしいので,cmake
をパッケージ追加すればよいのだろうか。
MSYS2 のパッケージ管理システムは pacman
というらしい。これをもとにググりながら次を実行:
pacman -S cmake
どうも ninja
が使えなくてハマる。
ここから ninja のインストーラを得る(よくわからないのでninja-win.zip
, ninja-linux.zip
, ninja-linux-aarch64.zip
, ninja-winarm64.zip
を順に試す)が,実行できず失敗。
引き続き調べていたら,そもそも先ほどcmake
ではなく mingw-w64-x86_64-cmake
というのを入れるべきだったらしい。
入れてしまった cmake
をアンインストールするべく
pacman -u cmake
を実行するが,できない。一旦放っておく。
pacman -S mingw-w64-x86_64-cmake
を無事に実行。
次いで
pacman -S mingw-w64-x86_64-ninja
を無事実行するが,当初のコマンドの 2 行目が実行できない。ずっとこれ:
CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
作業再開。
「MSYS2 MSYS」というのの中でやっていたのだけど,どうやら「MSYS2 MINGW64」というのの中でやるべきだったらしい。
↑のコマンドを実行する代わりに ffbuild.sh というツールを使用。
10 分くらいかかって Finished installing precompiled libraries!
までいったが,!!! Build failed at: Failed to infer the installed FreeType version
となって引っかかる。
ロケールを日本語にしていたため,バージョンの認識がうまくいっていなかった模様。
内部で $ pacman -Qi mingw-w64-x86_64-freetype
というコマンドを用いており,
$ pacman -Qi mingw-w64-x86_64-freetype
Name : mingw-w64-x86_64-freetype
Version : 2.13.2-1
Description : TrueType font rendering library (mingw-w64)
Architecture : any
URL : https://www.freetype.org/
[以下略]
のような出力のなかから Version
の行を読み取る仕組みになっていたようなのだが,日本語ロケールだと バージョン
という表示になってしまうのでうまく読み取れないらしい。
ロケールをデフォルトに戻して再実行したところ,「freetype-2.13.2.tar.xz
が無いからダウンロードするよ」→「ダウンロードしたのに無いよ」と怒られてしまった。
ここから freetype-2.13.2.tar.xz
を手動でダウンロードして,指定のディレクトリに配置した。そこは突破。
run_fontforge
なるところで引っかかる。
ffbuild.sh
が入ってる repo の README をちゃんと読んでなかった。repo 丸ごとクローンする必要があったのね(そりゃそうか)。
README からここに誘導され,手順に従って進める。
- potrace を配置。指定通りの
potrace-1.11.win64.tar.gz
ではなくpotrace-1.16.win64.tar.gz
に変わってしまっているみたいだけど多分大丈夫かな? - VcXsrv minimal を配置。執筆時点では,
VcXsrv-1.17.0.0-x86_64-minimal.tar
というので良さそう。 - Cairo を配置。
cairo-1.15.6.tar.xz
が指定されている(執筆時点)ので,最新版ではないようだがこれを使う。 - Pango を配置。同様に指定通り
pango-1.40.6.tar.xz
を使う。 - FreeType については既に配置していたが,ff-build をクローンし直した関係で相対パスが変わっているので再配置。
現在順調に動いているように見える。(が,このスクリプト,fontforge/fontforge のクローンもやってくれるんだ…。がっつり重複したわ。)
ビルドできました。ReleasePackage/run_fontforge.exe
で実行できる。
使い方を勉強したいと思います()
補足
今回導入した MSYS2 のなかで,p7zip というのをインストールし使用することができた。これで管理者権限なく 7zip の展開ができる。早速 Inkscape の 7zip 版を手に入れて導入できたよ。