The implementation with the :before class definitely qualifies as a bit of a hack. No question.
Some of the icons themselves represent something of a universal language for websites. Using those symbols in a typeface is similar in some ways to character based languages like Japanese or Chinese. So I might argue that icons as fonts are quite an appropriate use.
Some of the icons themselves represent something of a universal language for websites. Using those symbols in a typeface is similar in some ways to character based languages like Japanese or Chinese. So I might argue that icons as fonts are quite an appropriate use.