Yeah, I like that.  It's similar to what I've done with grid lines and tick locations: it won't cover every plot that people generate, but it will cover 99% of the cases.  Anything beyond that we'll have to just say is "out of scope".

Stylistically, I'd prefer to avoid the try...except.  I've been bitten by it too many times (for example, what if matplotlib updates and some strange corner case throws an ``IndexError`` on ``get_fontsize()``? Sure it's very unlikely, but it could happen, and then we'd cover up the error and have a hell of a time trying to figure out what's going on).  With that in mind, I'd do this:

``` python
# Get major tick label size (assumes that's all we really care about!)
labels = axis.get_ticklabels()
if labels:
    props['fontsize'] = labels[0].get_fontsize()
else:
    props['fontsize'] = None