The Foundry Nuke - Получить путь к файлу шрифта - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно программно получить расположение всех шрифтов, используемых в скрипте Nuke.Если вы откроете текстовый узел в графическом интерфейсе, вы увидите путь к файлу шрифта в Font, однако, используя следующий код, я получаю только кортеж семейства шрифтов, стиль шрифта.Это дает мне часть пути там.

Интересно, что если я распечатываю сам текстовый узел, я могу видеть хотя бы имя файла текущего шрифта, но эта информация недоступна, как я могу выяснить.

Документациядля FreeType_Knob не предлагает никакого реального решения ...

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

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Хорошо, вот супер грязный ответ, который фактически выполняет свою работу.Кто-то с большим знанием регулярных выражений, вероятно, может привести в порядок это:

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.Очевидно, это касается только шрифтов в этих двух каталогах, но это только начало!

0 голосов
/ 25 октября 2018

Я не могу использовать Class=Text2 узел, потому что когда я его вызываю - NUKE неожиданно завершает работу каждый раз.Таким образом, я проверил это с предыдущей Class=Text.

Я использовал упомянутую команду print внутри цикла for-in для трех выбранных старых Class =Text узлов:

for node in nuke.selectedNodes():
    print(node.knob("font").value())            # pay attention to syntax

в GUI NUKE 11.2v4 в macOS 10.14 Mojave и получите следующий результат:

# 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

...