我需要以编程方式获取Nuke脚本中使用的所有字体的位置。如果在GUI中打开文本节点,则可以在Font
下看到字体文件路径,但是使用以下代码,我只会得到字体系列,字体样式的元组。这使我成为那里的一部分。
有趣的是,如果我打印出文本节点本身,则至少可以看到当前字体的文件名,但是我无法确定该信息。
FreeType_Knob的文档没有提供任何实际的解决方案...
for node in nuke.selectedNodes():
print(node.knob('font').getValue())
答案 0 :(得分:0)
我无法使用
Class=Text2
节点,因为调用它时– NUKE每次意外退出。因此,我使用先前的Class=Text
对其进行了测试。
我在 for 循环中使用了上述提到的 print 命令,用于三个选定的旧Class = Text
节点:
for node in nuke.selectedNodes():
print(node.knob("font").value()) # pay attention to syntax
在macOS 10.14 Mojave中的NUKE 11.2v4的GUI中并获得以下结果:
# Result: /Library/Fonts/Zapfino.ttf
# Result: /Library/Fonts/Arial.ttf
# Result: /Library/Fonts/Georgia.ttf
如果无法获取字体的文件路径-看来这是Windows问题。 假设您需要设置环境变量。或仅仅是新的Class = {Text2
节点的问题。
答案 1 :(得分:0)
好吧,这是一个超级混乱的答案,实际上确实可以完成工作。拥有更多正则表达式知识的人可能可以整理一下:
import re
def get_font(node):
m = re.search(r'(font {{.*}})', str(node))
line = m.group(0)
return line.split(":")[2].lstrip().rstrip()
for node in nuke.selectedNodes():
print(get_font(node))
至少会为您获取字体文件名。从那里,您只需要在系统字体目录或Nuke字体路径之前添加。显然,这仅涵盖了这两个目录中的字体,但这只是一个开始!