The following code show how the FontProperties is currently hashed.
l = self.__dict__.items()
The hash does not account user's rcParams setting. And due to the font
caching, findfont(FontProperties()) returns the same font even if user
changes the rcParams["font.family"] and other parameters.
So, I propose to change it to something like below.
l = [(k, getattr(self, "get" + k)()) for k in self.__dict__]
The other change I want to make is the behavior of the findfont(None).
As of now, it returns "fontManager.defaultFont" which is set when
fontManager is initialized. Therefore, it returns same font even if
user change the rcParams. I prefer to have "findfont(None) ==
Unless others object, I'll commit the changes to the trunk.