5
$\begingroup$

I just experienced a nightmarish Blender episode in which I needed to render an animation with a super tight deadline.

Because of the schedule, I started rendering on several different computers, of which some were Linux machines and others had Windows.

Turns out the fonts I were using did not load up correctly on the Linux machines. It also seems like the "pack external files" doesn't work with fonts anymore? I could make it work by choosing each text layer and assigning the font to it by hand. Because of the large amount of text layers this became a tedious task.

So here's my question: Is there no way of mass-assigning the font type to text layers? I was hoping it would work in a similar way like materials and other things work in Blender, so that I could select all the text layers and have them all update their font simultaneously.

$\endgroup$
3
$\begingroup$

If packing fonts did work in previous versions, then I suggest you report a bug. (See this question and this video for more info on filing a bug report)

Currently, Ctrl+L to link Fonts does actually work:

link fonts

However, if for some reason you want more control over font assignment (perhaps to conditionally assigned based on the name or the existing font), a Python script can be made to automate this too - copy the below text into Blender's internal text editor, then with all the text objects selected and the one you want to copy from as the active object (last selected one), click Run Script

import bpy
if bpy.context.active_object.type == 'FONT':
    font = bpy.context.active_object.data.font

    for obj in bpy.context.selected_objects:
        if obj.type == 'FONT':
            obj.data.font = font
        else:
            print(obj.name + " is not a text object")
else:
    print ("Active object is not a text object")
$\endgroup$
2
$\begingroup$

You could do this in Python to make sure you touch all objects in the blend. (not just objects in the active scene).

import bpy

font = bpy.data.fonts.load("//myfont.ttf")

for obj in bpy.data.objects:
    if obj.type == 'FONT':
        print(obj)
        obj.data.font = font

Note the "//" prefix, this means the font will be referenced relative to the current blend file. so it will load on different systems.

$\endgroup$
2
$\begingroup$

If you prefer with gui, this free add on will help works on a lot of font Blender objects, mass font editor

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.