You can't. An empty glyph never has something to draw, but it still
has dimensions. It's a natural non-uniformity.
Should I not simply switch my "engine" to never use CBox, and
instead go with glyph metris (bearing, advance, width, height) and
pen position?
Metrics don't reliably reflect the real dimensions of a glyph. Just
think of a `O' character -- there's some overshoot below and above the
glyph which is not part of the bounding box given by the metrics.
Do empty characters still have an actual width and bearing? Or do I
have to rely on glyph advance in such special cases?
Empty glyphs in general don't have a width or a bearing. You should
use the advance width for that.
Note that, for example, TeX fonts don't have a space glyph at all
because it is something redundant in general -- in most cases it's the
job of the text formatting engine to adjust the spaces between words
while breaking text into paragraphs.
Werner