/* Fills the specified buffer with the metrics for the currently selected font. */
        internal static int GetTextMetrics(HandleRef hDC, ref NativeMethods.TEXTMETRIC lptm)
        {
            if (Marshal.SystemDefaultCharSize != 1)
            {
                // Handle Unicode
                return(SafeNativeMethods.GetTextMetricsW(hDC, out lptm));
            }

            // Handle ANSI; call GetTextMetricsA and translate to Unicode struct
            NativeMethods.TEXTMETRICA tEXTMETRICA = new NativeMethods.TEXTMETRICA();
            int result = SafeNativeMethods.GetTextMetricsA(hDC, out tEXTMETRICA);

            lptm.tmHeight           = tEXTMETRICA.tmHeight;
            lptm.tmAscent           = tEXTMETRICA.tmAscent;
            lptm.tmDescent          = tEXTMETRICA.tmDescent;
            lptm.tmInternalLeading  = tEXTMETRICA.tmInternalLeading;
            lptm.tmExternalLeading  = tEXTMETRICA.tmExternalLeading;
            lptm.tmAveCharWidth     = tEXTMETRICA.tmAveCharWidth;
            lptm.tmMaxCharWidth     = tEXTMETRICA.tmMaxCharWidth;
            lptm.tmWeight           = tEXTMETRICA.tmWeight;
            lptm.tmOverhang         = tEXTMETRICA.tmOverhang;
            lptm.tmDigitizedAspectX = tEXTMETRICA.tmDigitizedAspectX;
            lptm.tmDigitizedAspectY = tEXTMETRICA.tmDigitizedAspectY;
            lptm.tmFirstChar        = Convert.ToChar(tEXTMETRICA.tmFirstChar);
            lptm.tmLastChar         = Convert.ToChar(tEXTMETRICA.tmLastChar);
            lptm.tmDefaultChar      = Convert.ToChar(tEXTMETRICA.tmDefaultChar);
            lptm.tmBreakChar        = Convert.ToChar(tEXTMETRICA.tmBreakChar);
            lptm.tmItalic           = tEXTMETRICA.tmItalic;
            lptm.tmUnderlined       = tEXTMETRICA.tmUnderlined;
            lptm.tmStruckOut        = tEXTMETRICA.tmStruckOut;
            lptm.tmPitchAndFamily   = tEXTMETRICA.tmPitchAndFamily;
            lptm.tmCharSet          = tEXTMETRICA.tmCharSet;

            return(result);
        }
 private static extern int GetTextMetricsA(HandleRef hDC, out NativeMethods.TEXTMETRICA lptm);