How do I obtain the font size for a given text run in PDF user space?

Q: I have an PDF element which has a e_text type and I need to know
which kind of font name and font size are assigned to this element. I
know that I need GState for it:

  Element elem = pageReader.Next();
  GState gs = elem.GetGState();
  Font ft = gs.GetFont();

  UString fontName = s.GetFontName(); // it is ok and works fine for
   double fontSize = gs.GetFontSize(); // the GetFontSize always
return for me the 1.0000 value...

  Could you please tell me why I can't get the font size from
GState::GetFontSize() and how I can receive the font size for an text
A: GetFontSize() may in some cases return 1. The relative appearance
of text on the page is influenced by couple of additional scaling
factors besides font size parameter in the graphics state. These
factors are text matrix and Current Transformation Matrix or CTM. To
get the font size as it appears on the page you need to scale
GetFontSize() with the text matrix (Element.GetTextMatrix()), as well
as, the current transformation matrix (CTM).

For example:

double GetFontHeight(double dy, const Matrix2D& mtx) {
  double x = mtx.m_c * dy;
  double y = mtx.m_d * dy;
  return sqrt(x*x + y*y);

double font_sz = GetFontHeight(gs.GetFontSize(), element.GetCTM() *

For an example on how to get font size in the user space please refer
to ElementReaderAdv test project in Samples folder.