yank out all the unique font tag combinations, make each a classid, make the appropriate substituions, and you're done
I think that strategy would defeat the background idea of CSS, which is to separate the visual format from the coding.
By listing all unique font tag combos, you drop the content-related bits. e.g. you might find a combination of Arial - Bold and 14 point in a "h2" header and in the top row of a table. By giving this combination a unique classid ("ArialBold14" ?) and putting this info in the CSS-file, you really make the problem worse, as now you cannot anymore change the appearance of the "h2" header without also changing the top row of the table.
At least you should also code into your "CSS-database" the "surroundings" of where the classid is to be put.
CSS-items should be "meaningful", i.e. something like "ColumnHeader" or "BodyText" or "Title" or ... and should not directly describe the form of these items as this will get you no benefit for using CSS.
Update: Podmaster I agree a H1-tag is not a font-tag, but you find the one contained within the other and similarity in (font)-formatting says nothing about the meaning this formatting wants to convey.
"If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law
<code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>