lib/common: add character width lookup tables for more fonts and variants
This allows Graphviz to estimate the widths of text spans more accurately when built without a textlayout plugin. The textlayout plugins are platform-specific and can be difficult to build for obscure platforms (e.g. Graphviz Online), resulting in node labels not fitting within their nodes nicely.
lib/common: add new source file and header
lib/common: don't install new header
lib/common: redesign hard-coded font metrics
lib/common: remove unused variables
lib/common: format new source file with clang-format
lib/common: add more fonts
lib/common: add warning spam guards
lib/common: improve code style and comments
lib/common: improve code style and comments
lib/common: fix const compiler error
lib/common: reuse existing isalpha_no_locale function
lib/common: fix another const compilation error
lib/common: fix yet another const compilation error