# Is it possible to copy text settings?

I want to change multiple text objects at once.

Is there a way to copy the settings to all selected text objects?

• possible duplicate of How do I copy a property from an active object to selected objects? – Ray Mairlot Mar 4 '15 at 21:27
• @RayMairlot that doesn't work on all properties also – Chebhou Mar 4 '15 at 21:29
• @AttackingHobo do you have specific properties to copy ? – Chebhou Mar 4 '15 at 21:33
• @RayMairlot That does not work for text properties. – AttackingHobo Mar 4 '15 at 22:30
• @Chebhou Everything on the text tab. Geometry, Font, and Paragraph mainly. – AttackingHobo Mar 4 '15 at 22:32

This script will enable you to copy the text object properties from active to selected :

• run the script once to register

• you will find it in: 3D View -> object ->copy text properties

• or hit space and type 'copy text '

import bpy
from bpy.types import Operator  # for defining new operator
from bpy.props import *   # for operator parameters

S = scene   = bpy.context.scene
C = context = bpy.context

def text_prop_copier():

if context.active_object.type != 'FONT':
return False

active = bpy.data.curves[context.active_object.name]

for ob in context.selected_objects:
if ob.type == 'FONT':
text = bpy.data.curves[ob.name]

# collect names of writeable properties
properties = [p.identifier for p in active.bl_rna.properties if not p.is_readonly]

# copy those properties (prop != 'body') will skip from setting body property same as active object this changes all other properties but text content

for prop in properties:
if (not prop.startswith('texspace') ) and (prop != 'name') and (prop != 'body') :
print(prop, 'copied')
setattr(text, prop, getattr(active, prop))

return True

class   tex_prop_cop(Operator):

"""copy active text object properties to selected"""
bl_idname = "fonts.prop_copy"
bl_label = "copy text properties"
bl_options = {'REGISTER', 'UNDO'}

def invoke(self, context, event):
if text_prop_copier():
self.report({'INFO'},"properties copied")
return {'FINISHED'}

self.layout.operator(
tex_prop_cop.bl_idname,
text = tex_prop_cop.bl_label,
icon = 'PLUGIN')

def register():
bpy.utils.register_class(tex_prop_cop)
print("register done")

def unregister():
bpy.utils.unregister_class(tex_prop_cop)
print("unregister done")

if __name__ == "__main__":
register()

• seems to be broken on 2.77? Get key error from selected object? – 3pointedit Mar 24 '16 at 15:02
• WOW, It's such a useful script! but it doesn't works in 2.77!!!!! Can anybody help with this? – LDCO Sep 8 '16 at 21:36
• Or should I open a new question for asking improving this script to work on newest Blender? – LDCO Sep 8 '16 at 21:38
• @Chebhou Is there a way to make this script work in 2.77a? – LDCO Sep 9 '16 at 16:14
• @Chebho Sorry, but no... now it's like this - if one of the text is a duplicate of another - one of them just disparate. if it's two new made textes - nothing changes (it rights although that "properties copied..." . Maybe we should open a new thread and ask for help? It's a really useful feature... – LDCO Sep 11 '16 at 1:44

The only way I know of and that I use, is to copy the text objects with Alt+D. This will copy all settings between them, however the text itself is copied as well:

You can link the font with Ctrl+L > Fonts without linking the actual text:

Sadly it is currently not possible to copy other settings on text objects as they are not meshes.

The standard RMB > Copy to Selected is grayed out and can not be used.

• Thanks for trying, but this doesn't help me. I need to copy everything from the Geometry, Font, and Paragraph. – AttackingHobo Mar 4 '15 at 22:52
• No problem, however I'm afraid you will need to use a script to do the other two. Blender does not have a way to do that AFAIK. – VRM Mar 5 '15 at 1:37