I would convert the text to shape layers, or create the original art in Illustrator as a layered file, then animate the scale of the layers. If you tied everything together with expressions animating the scale of one layer would change the scale of the other so that you would only have to deal with one set of keyframes.
There is no plug-in or script that I know of that would automate the process.
Thanks so much for your reply Rick. I used expressions to animate the scale. The only problem I encountered was where it anchored from made the space inbetween shapes was uneven.
I would put all of the anchor points in the top left corner of each graphic. Then I would take the entire width and height of the frame into account, the width of each section into account, and adjust the position of the slave layers as the scale changes. It's all just a matter of building the equations and linking each layer to the true size of the upper left graphic so the position changes as the scale changes. Only the top left graphic would have scale keyframes. The position and scale of all the other layers would be based on the scale of the top left graphic. If you threw a value + argument into the mix on the top right image you could independently animate the scale of the other layers so you would have complete control over all of the graphics but they would all still fill the frame.
I don't know how you are doing on this project but I thought it would be an interesting experiment so I set up a test comp with four text layers and started tying things together with the first two layers. To simplify everything I parented all the text layers to the top layer so I would not have to do additional position calculations.
Here is a start on the expressions I used for position and scale for the second text layer:
// For Position MstrLyr = thisComp.layer(index - 1); xOffset = MstrLyr.sourceRectAtTime().width; // yOffset = MstrLyr.sourceRectAtTime().height; lyrSize = thisLayer.sourceRectAtTime(); lyrX = lyrSize.width; // lyrY = lyrSize.height; newX = xOffset; [newX, 0] // For scale MstrLyr = thisComp.layer(index - 1); xOffset = MstrLyr.sourceRectAtTime().width; // yOffset = MstrLyr.sourceRectAtTime().height; lyrSize = thisLayer.sourceRectAtTime(); lyrX = lyrSize.width; // lyrY = lyrSize.height; totalWidth = lyrX + xOffset; // totalHeight = lyrY + yOffset; boxWidth = 1000; // boxHeight = 1000; lyrScale = scale/100; newX = 100 * (boxWidth - xOffset) / lyrX ; [newX, 100]
I set the box size I wanted to 1000 pixels and simply offset the left-justified text by the real width of the top layer. Then I copied the position expression and modified it to scale the second layer, the one on the right as the content of the first layer changes. It works very well for these two layers.
I have added everything I think I need to the expressions in the other layers and just not used them yet. So far, so good.
The next step in the process is to add in compensation for the scale of the master (first) layer so no matter how you scale the layer the total width of the box will still be the same. It will probably take me another 20 minutes to finish the expressions but I thought this might give you a start.
The final goal would be to modify these expressions for the other three layers so they would automatically distribute themselves and scale right along with the other layers to keep the same box size. In the long run, I would tie all of the individual text layers to each other and add a value plus argument to each of the scale expressions that would allow me to animate the scale of each text layer independently and still keep the same box size. I'm not trying to copy the design, I'm just trying to improve my expression writing skills.