Closed21

管理者権限のない Windows PC で FontForge を使いたい

XirdimXirdim

Windows PC で FontForge を使いたいが,普通に\sf\small\overset{install}{引装}しようとすると管理者権限で\sf\small\overset{installer}{引装屋}を実行しないといけない。
家族共用 PC で管理者権限を持っていないので困った。

XirdimXirdim

Windows では MSYS2 でこの\sf\small\overset{command}{駒手}を実行せよ,というので,それを\sf\small\overset{install}{引装}する(した)。普通に\sf\small\overset{installer}{引装屋}に従えばできた。
UNIX に近い環境を Windows で動かせるというものらしい。初めて見た。

XirdimXirdim

そして言われるがまま\sf\small\overset{command}{駒手}を実行:

git clone https://github.com/fontforge/fontforge && cd fontforge && mkdir build && cd build
cmake -GNinja ..
ninja

git がないよ,と怒られたので,path の通し方について調べる。

こちらを参考にさせていただき,Windows の\sf\small\overset{user}{用者}環境変数 MSYS2_PATH_TYPEinherit に設定。動いた。

XirdimXirdim

\sf\small\overset{install}{引装}先が MSYS2 の HOME \sf\small\overset{directory}{台録}の直下になってしまうことに気づき中止(他のところに入れたかったので)。

調べてみると,cd /c/(どこか)みたいな感じで Windows の絶対パスに対応した場所に行けるっぽい。

FontForge を入れたい目的の\sf\small\overset{directory}{台録}に移動し再度実行。

XirdimXirdim

ところで MSYS2 のシェルへのコピペは Shift + Insert でできる。癖つよっ(って思ってしまったのは私が経験無いせいです)。

XirdimXirdim

動いたと思いきや,4 つ問題発生。

  1. 間違えて git の過去のコミットも含めて全部クローンしちゃった。ただ最新版使いたいだけなのでそんなに要らない。
  2. master ブランチを引っ張ってきちゃった。ほしいのは Windows の最新の安定版。
  3. cmake コマンドが見つかりません
  4. ninja コマンドが見つかりません

git 関係の 1. 2. は,前者は depth 指定すればいいとして,後者はどうやるんだっけ。調べる。

環境関係の 3. 4. はがんばる。

XirdimXirdim

ブランチ指定(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なんてできるのか不安だったけど一応できたっぽい。

XirdimXirdim

ninjacmake の中のものらしいので,cmake をパッケージ追加すればよいのだろうか。

MSYS2 のパッケージ管理システムは pacman というらしい。これをもとにググりながら次を実行:

pacman -S cmake
XirdimXirdim

どうも ninja が使えなくてハマる。

ここから ninja のインストーラを得る(よくわからないのでninja-win.zip, ninja-linux.zip, ninja-linux-aarch64.zip , ninja-winarm64.zipを順に試す)が,実行できず失敗。

XirdimXirdim

引き続き調べていたら,そもそも先ほどcmake ではなく mingw-w64-x86_64-cmake というのを入れるべきだったらしい。

入れてしまった cmake をアンインストールするべく

pacman -u cmake

を実行するが,できない。一旦放っておく。

pacman -S mingw-w64-x86_64-cmake

を無事に実行。

XirdimXirdim

次いで

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!
XirdimXirdim

作業再開。

「MSYS2 MSYS」というのの中でやっていたのだけど,どうやら「MSYS2 MINGW64」というのの中でやるべきだったらしい。

↑のコマンドを実行する代わりに ffbuild.sh というツールを使用。

10 分くらいかかって Finished installing precompiled libraries! までいったが,!!! Build failed at: Failed to infer the installed FreeType version となって引っかかる。

XirdimXirdim

ロケールを日本語にしていたため,バージョンの認識がうまくいっていなかった模様。

内部で $ 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が無いからダウンロードするよ」→「ダウンロードしたのに無いよ」と怒られてしまった。

XirdimXirdim

ここから freetype-2.13.2.tar.xz を手動でダウンロードして,指定のディレクトリに配置した。そこは突破。

run_fontforge なるところで引っかかる。

XirdimXirdim

ffbuild.sh が入ってる repo の README をちゃんと読んでなかった。repo 丸ごとクローンする必要があったのね(そりゃそうか)。

README からここに誘導され,手順に従って進める。

XirdimXirdim
  • 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 をクローンし直した関係で相対パスが変わっているので再配置。
XirdimXirdim

現在順調に動いているように見える。(が,このスクリプト,fontforge/fontforge のクローンもやってくれるんだ…。がっつり重複したわ。)

XirdimXirdim

ビルドできました。ReleasePackage/run_fontforge.exeで実行できる。

XirdimXirdim

補足
今回導入した MSYS2 のなかで,p7zip というのをインストールし使用することができた。これで管理者権限なく 7zip の展開ができる。早速 Inkscape の 7zip 版を手に入れて導入できたよ。

このスクラップは4ヶ月前にクローズされました