How to control font spacing values on one text object from another

I’m setting up a scene that will have two text objects similar to the recent blenderguru tutorial on text. However, I wanted to go a bit further and make it so that its easier to modify the text. One thing I’d like to do is make it so that when you change a text object value like “character spacing” that it automatically changes the same value on the other text object. I’m wondering if you can do this with drivers. I looked up the tutorial on drivers but am still not sure if you can control these values without writing a python script or something. I’m open to writing a python script, but was wondering if there is a more direct way of doing this kind of thing. THe only attributes I expect to change between the two font objects is their size, spacing, alignment (maybe) and perhaps the typeface itself.

Yes you can…
I just tried it with adding a text object and one empty. Under the object panel in the properties I added one custom property…
Making sure I edited it to increase the maximum value.
I right clicked the propery and chose copy data path…

On the font object I added a driver to the spacing element and went into the graph editor/drivers…
Here’s the general settings I used…

Scripted expression
var

for var:
Single property
Object Empty
I pasted the copied data path which basically is [“prop”] or whatever name you gave the custom property.

Then I went back and adjusted the custom property slider for my empty and save the spacing change…


Here you see I can change the spacing of two text objects using the same property…

Ok, great that works. Thanks. I think I understand drivers a lot better now. I tried to setup the properties to be directly driven from the first font object, but that was unreliable for some reason.

Is there a way to “drive” or change the text body of the second text object when the text of the first text object is changed? I noticed that Script Constraints are not supported yet in 2.6. :frowning:

Not quite sure what you mean there and I admit to having limited knowledge about the possibilities of the text objects.
But to me it sounds like you ‘just’ want a duplicate of the first text so that changing one text instance also changes the other…


Well, that would work, except that it links all the other settings and drivers to the other instance, which isn’t what I’m trying to do. I just want the actual text to be the same. I wrote a simple script that does the trick, but I have to run it manually:

import bpy
bpy.data.objects[“Text2”].data.body = bpy.data.objects[“Text”].data.body

Groovy… I’m fairly script illiterate myself so that’s a good one that I’m gonna copy and save for a ‘just in case’…
Thanks… If you find another way, please do share as I’m curious to learn more about the text objects…