With XeTeX the primitive \XeTeXglyphbounds is available.
\documentclass{article}
\usepackage{fontspec}
\newfontface{\geeza}{Geeza Pro}
\begin{document}
\edef\gid{\the\XeTeXcharglyph`- }
Top: \the\XeTeXglyphbounds2 \gid
Bottom: \the\XeTeXglyphbounds4 \gid
-\,\vrule
width\dimexpr\fontcharwd\font`- -\XeTeXglyphbounds1 \gid -\XeTeXglyphbounds3 \gid\relax
height \XeTeXglyphbounds2 \gid
depth \XeTeXglyphbounds4 \gid
\,\vrule
width \fontcharwd\font`- height \fontcharht\font`- depth \fontchardp\font`-
\ Real height \the\dimexpr\XeTeXglyphbounds2 \gid + \XeTeXglyphbounds4 \gid\relax
\edef\gid{\the\XeTeXcharglyph`; }
;\,\vrule
width\dimexpr\fontcharwd\font`- -\XeTeXglyphbounds1 \gid -\XeTeXglyphbounds3 \gid\relax
height \XeTeXglyphbounds2 \gid
depth \XeTeXglyphbounds4 \gid
\,\vrule
width \fontcharwd\font`; height \fontcharht\font`; depth \fontchardp\font`;
\ Real height \the\dimexpr\XeTeXglyphbounds2 \gid + \XeTeXglyphbounds4 \gid\relax
{\geeza
\edef\gid{\the\XeTeXcharglyph"0640 }
\char"0640 \,\vrule
width\dimexpr\fontcharwd\font"0640 -\XeTeXglyphbounds1 \gid -\XeTeXglyphbounds3 \gid\relax
height \XeTeXglyphbounds2 \gid
depth \XeTeXglyphbounds4 \gid
\,\vrule
width \fontcharwd\font"0640 height \fontcharht\font"0640 depth \fontchardp\font"0640
\xdef\therealheight{\the\dimexpr\XeTeXglyphbounds2 \gid + \XeTeXglyphbounds4 \gid\relax}%
}\ Real height \therealheight
\end{document}

In the examples each character is followed by a rule drawn using the “real” dimensions and by a rule using the bounding box data. The first two lines show how the bounding box data are represented for the hyphen.
\XeTeXglyphbounds; see XeTeX's manual (texdoc xetex). – egreg Nov 14 '13 at 14:14