I'm looking for an ArcGIS 9.3.1 solution to change annotation font size in an automated/dynamic way. The annotation data represents civic addresses and are displayed over a parcel fabric. What we would like to do is have the font size change in proportion to the area of the parcel. The current dataset has several classes and this kind of lets us do what we want, but still, it doesn't cut it. In the past we have done this manually, but our quickly growing municipality makes this task rather arduous and cumbersome. I can't foresee a simple solution to this problem, but I'm willing to try anything.
I'd probably use ArcObjects to create a simple little command line utility that took as params 1) a path to the dataset, and 2) the AnnoFeatureClass's layer name, then measured the parcel areas and imposed a font size. Next, I'd use the Windows TaskScheduler to run the utility every night and ensure the dataset stays tip-top.
Modifying your annos dataset may not be straightforward, however---if you use Annotation Classes, you may have to set the feature's class id from a handful of class options/categories, but if you're storing the characteristics inline (bold, font family, font size), then I think you can forcibly update the anno's
FontSize field. It sounds like you're already setting the
FontSize manually, so I would expect you could pursue that case programmatically without introducing new concerns (that is, I recall inline styling is bulky, and can lead to heavy data sets).
Next, associating the anno points back to their parcel features may present another obstacle, especially if some of your annos are placed outside of the polygons they label (i.e. via leaderlines)---in this case, you can't expect a geometric intersection of point-in-polyon to return a perfect match of anno-to-feature, but they may be good enough to satisfy. Alternatively, you might have feature-linked annos, which in theory, should simplify that problem.
I've never much enjoyed working with the AnnotationFeatureClass, but I do believe I have some old code hibernating somewhere that might apply to this sort of problem. I'll see if I can find it.