2

これを適切に表現する方法はよくわかりませんが、スクリプトが動作するファイルのディレクトリ内でスクリプトを実行すると、すべて問題ありません。スクリプトで別のディレクトリのファイルを指定すると、失敗します。ある種のパス拡張か何かだと確信していますが、それを機能させることができないようです。

これがFontForgeスクリプトです。

#!/usr/bin/fontforge
Open($1)
fname = ($1:r)
Print(fname)
SetTTFName(0x409,2,"")
SetFontNames(fname,fname,fname,"")
Print($fullname)
Print($familyname)
Print(GetTTFName(0x409,2))
Generate($1:r + ".ttf")

そして失敗するコマンド:

./fix_font_names ~/Fonts_Other/*

そしてエラー:

SetFontNames: Invalid character in PostScript name token (probably fontname): : /home/akovia/Fonts_Other/Al Fresco Bold
Called from...
./fix_font_names: line 7

たとえば、引用符または fname に $1 を入れるとエラーが変わりますが、作業ディレクトリ内から呼び出すと、スクリプトは完全に機能します。

明らかな何かが欠けていることは知っていますが、それを理解することはできません。助けてくれてありがとう。

4

1 に答える 1

0

私は FontForge について何も知りませんが、構文はシェルに多少似ているように見えるので、試してみます。

変数名のスペースに問題があるのでしょうか? ディレクトリ内からスクリプトを実行する場合、ディレクトリ名は./スペースなしの . ただし、別の場所から実行すると、ディレクトリ名は/home/akovia/Fonts_Other/Al Fresco Boldになり、スペースが含まれます。スクリプト内のすべての変数を引用符で囲みますか?

編集:言語チュートリアルをざっと読んだだけで、スペースの問題については言及されていません。

ここに別のアイデアがあります: ディレクトリにいない場合、fname変数にはフォント名だけではありません (ディレクトリ名も含まれます)。どうにかして余分な情報を削除してみてください。

于 2014-07-22T16:02:51.497 に答える