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

例如,如果我将 $1 放在引号或 fname 中,则错误会发生变化,但如果我从工作目录中调用它,则脚本可以完美运行。

我知道我遗漏了一些明显的东西,但我就是想不通。谢谢你的帮助。

4

1 回答 1

0

我对 fontforge 一无所知,但语法看起来有点类似于 shell,所以我会试一试:

变量名中的空格可能有问题吗?如果从目录中运行脚本,则目录名称只是./,没有空格。但是,如果您从其他地方运行它,则目录名称为/home/akovia/Fonts_Other/Al Fresco Bold,其中包含空格。尝试引用脚本中所有变量的每次出现?

编辑:只是快速浏览了语言教程,并没有提到空格的任何问题。

这是另一个想法:如果您不在目录中,那么您的fname变量不仅包含字体名称(它还包含目录名称)。尝试以某种方式删除额外的信息。

于 2014-07-22T16:02:51.497 回答