# Mass replace fonts

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.

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:

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")


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