不太确定如何正确地说出这一点,但是如果我在其工作的文件目录中运行我的脚本,一切都很好。如果我将脚本指向另一个目录中的文件,则会失败。 我确定这是某种路径扩展或其他什么,但我似乎无法使其发挥作用。
这是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中,则错误会发生变化,但如果我从工作目录中调用它,则脚本可以正常工作。
我知道我错过了一些明显的东西,但我无法理解。谢谢你的帮助。
答案 0 :(得分:0)
我对fontforge一无所知,但语法看起来有些类似于shell,所以我有一个镜头:
变量名中的空格可能有问题吗?如果从目录中运行脚本,那么目录名称只是./
,没有空格。但是,如果从其他位置运行它,目录名称为/home/akovia/Fonts_Other/Al Fresco Bold
,其中包含空格。尝试引用脚本中所有变量的每次出现?
编辑:只是快速浏览了语言教程,并没有提到任何空格问题。
这是另一个想法:如果你不在目录中,那么你的fname
变量不仅包含字体名称(它还包含目录名称)。尝试以某种方式删除额外信息。