I'd like to suggest a different approach based on the assumption that you are not creating hundreds of different instances of Fonts.
a. in Application wide, or Form wide, scope create instances of the Fonts you are going to use.
b. use them
c. when the Application closes, the Fonts are going to be garbage collected.
d. if you are really paranoid about Font disposal:
using (Font arial12 = new Font("Arial",12))
{
}
I have never seen a WinForms app yet that needed to explicitly dispose of Fonts.
See this discussion on StackOverFlow for further details on what a Font actually is, and issues around 'Dispose with Fonts: [
^]. You might also be interested in the discussion here [
^].
Note that you may have no ability to control the way some of your WinForm Controls internally manage Fonts (RichTextBox, TreeView, for example).