Take the 2-minute tour ×
Graphic Design Stack Exchange is a question and answer site for Graphic Design professionals, students, and enthusiasts. It's 100% free, no registration required.

I frequently create labels that follow the same format: white text on a 75% opaque black background, with 10px of margin around the text. Currently, I have to manually build these labels, which takes a lot of work.

In one method, I write the text, figure out its height and width, then create a separate rectangle and place it behind it. This takes a lot of clicking around for every label.

In the other method, I draw out a text box, select it directly, give it the correct background and margins, and then insert the text. However, I must then resize the box manually, meaning more clicking around and greater imprecision. There doesn't seem to be a way to directly select a text box once it has text inside it.

I tried using the script contained in a related answer to resize the text box to the content, but it only resizes the box vertically, and removes my color and margins.

Does anyone have suggestions on how to resolve these problems, or for a better method? I'm using CS3.

share|improve this question

2 Answers 2

up vote 5 down vote accepted

You really don't need any scripting for this.

  • Select text object with Selection Tool
  • Add new fill via Appearance Panel
  • Move new fill below characters
  • Highlight new fill and choose Effect > Convert to Shape > Rectangle
  • Enter relative amount of points/pixels/inches etc. you want the rectangle to be offset from the text
  • click OK
  • drag the text object to Graphic Styles Panel

label

When you need to reapply the appearance, select the text object and click the Graphic Style.

The background rectangle is relative to the size of the text object. Should the text object change in size the rectangle adjusts to match.

share|improve this answer
    
Nice hack! Has that been there since CS3 (which the OP is using)? –  plainclothes Jul 25 '13 at 23:02
    
Yes. It's been around since about Illustrator 7. –  Scott Jul 26 '13 at 0:59
1  
Geesh. Look what I've been missing. –  plainclothes Jul 26 '13 at 15:37

I feel like I have to say this a lot with Adobe products but ...

The most efficient answer is scripting.

You need to get the bounds of the text, draw a box based on those numbers, and position it behind the text. With some basic math and an understanding of how to get to Illustrator's various scripting objects, it's not that tough.

For starters, you need to get the points defining the object's location:

activeDocument.selection[0].geometricBounds

That will return the array [x1, y1, x2, y2]. From there you can start building and styling your box and move it behind the text object.

You could start with the script that you linked as a reference of how it's done. If you don't know javascript and Illy's scripting interface it will take some time. The upside is that the operation will take seconds each subsequent time and you'll have a whole new world of efficiency opened up to you.

The reason that script didn't do what you wanted is that you can't apply a background color to area text. It converts it to area text to do the centering, leaving you without your box styles.

share|improve this answer
1  
I'll leave this answer here for kicks, but I'm happy to say that Scott has rendered it unnecessary. –  plainclothes Jul 25 '13 at 23:04

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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