I'm making a map that has five inset maps that display a smaller map scale where point features are more dense. I have exported my labels to annotations in the geodatabase so that I could fit the labels that maplex wouldn't draw and move things around for the final touches. I am using the same annotation layer across all the insets so my GDB isn't cluttered with multiple annotation classes.

The problem is that because these data frames use different map scales the annotations are drawing at different sizes because it is set to a single reference scale. I can't set it to 0 because it is in a geodatabase. Using Symbol Substitution changes the font size, but it doesn't scale the font to the same sizes (10pt in one data frame displays at a different size than 10pt in another data frame).

My question is: How do you display the same geodatabase annotation class in multiple data frames, with diffent scales, at the same page layout font size?

3 Answers 3


Text placement is very scale specific. There are many cases where drawing text at the same screen/page size for different map scales will result in text collisions. If you happen to be in the rare case where you can re-size without collisions, use Symbol Substitutions as @Jakub notes. You'll need to calculate a text size to mimic the size seen at the other scales etc.

For cases where you need to generate annotation at different scales, I'd recommend using the Tiled Labels to Annotation tool. This works with data driven pages workflows etc. and can generate different scales.

[UPDATE] To do the size calculation, it's a matter of remembering that scales are fractions:

original size / anno reference scale = x / new scale

so for a scale where I have twelve point font at a reference scale of 1:90,000,000 and I want that text to draw at 1:400,000,000, do this:

12 / 90,000,000 = x / 400,000,000

which means x ~ 35.56

Setup symbol substitation with a size of 35.56 pts and you'll be ok.

  • I tried to scale it proportionately while using symbol susbstitituions but it didn't seem to be directly proportinate with reference scale. Any idea on how to figure out what font size to use?
    – Pete
    Commented Apr 30, 2014 at 21:44
  • updated post above, please see Commented May 1, 2014 at 4:05
  • Ok, I see what I was missing. I was doing a fractional relationships but between two data frames, not the reference scale of the annotations and the current data frame. Now everything scales just fine, Thanks!
    – Pete
    Commented May 1, 2014 at 19:08

Did you try Symbol substitution?

Annotation Layer Properties --> Symbology --> Substitute individual symbols in the symbol collection.

You can play around with the font sizes and create a symbol roughly equivalent for each scale.

  • I have played around with that as stated in the question but it does not easily produce fonts with the same size. I played around to get them somewhat close but I would like a uniform size (not one being 9.8pt and the other 10.2pt) and that guess and check process is time consuming. I also tried doing it proportionately to the reference scale of other data frames and they don't display as the same size at all. If there is some relationship that could be explained that would be great.
    – Pete
    Commented Apr 28, 2014 at 21:37
  • Sorry @Pete. I missed that part. As far as I know, there is no other way to do what you are asking in ArcGIS other than scaling the same input layer labels and exporting several annotation classes (one for each scale) Commented Apr 28, 2014 at 23:59

You might be cheeky and add a new data frame on the top of the existing ones. Ensure the new data frame's layout extent matches the underlying one. Add the geodatabase annotation, ensuring there's no reference scale. Then set the new data frame properties > Data Frame > Extent to "Other Data Frame" and specify the underlying one.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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