The Foundry Nuke –获取字体的文件路径

时间:2018-10-22 22:39:22

标签: python nuke

我需要以编程方式获取Nuke脚本中使用的所有字体的位置。如果在GUI中打开文本节点,则可以在Font下看到字体文件路径,但是使用以下代码,我只会得到字体系列,字体样式的元组。这使我成为那里的一部分。

有趣的是,如果我打印出文本节点本身,则至少可以看到当前字体的文件名,但是我无法确定该信息。

FreeType_Knob的文档没有提供任何实际的解决方案...

for node in nuke.selectedNodes():
    print(node.knob('font').getValue())

2 个答案:

答案 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

enter image description here

如果无法获取字体的文件路径-看来这是Windows问题。 假设您需要设置环境变量。或仅仅是新的Class = {Text2节点的问题。

enter image description here

答案 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字体路径之前添加。显然,这仅涵盖了这两个目录中的字体,但这只是一个开始!