public Size Measure(string text, double fontSize, Typeface typeface, double maxWidth)
        {
            if (!text.IsNullOrEmpty() && text.EndsWith(Environment.NewLine))
            {
                text += " ";
            }

            wpf::System.Windows.Media.FormattedText formattedText = new wpf::System.Windows.Media.FormattedText(
                text.DefaultIfNullOrEmpty("A"),
                System.Globalization.CultureInfo.CurrentCulture,
                wpf::System.Windows.FlowDirection.LeftToRight,
                converter.Convert(typeface),
                fontSize,
                wpf::System.Windows.Media.Brushes.Black);

            formattedText.Trimming     = wpf::System.Windows.TextTrimming.None;
            formattedText.MaxTextWidth = Double.IsInfinity(maxWidth) ? 0 : maxWidth;

            return(new Size(text.IsNullOrEmpty() ? 0 : Math.Ceiling(formattedText.WidthIncludingTrailingWhitespace + 4), Math.Ceiling(formattedText.Height)));
        }
        public Size Measure(string text, double fontSize, Typeface typeface, double maxWidth)
        {
            if (!text.IsNullOrEmpty() && text.EndsWith(Environment.NewLine))
            {
                text += " ";
            }

            wpf::System.Windows.Media.FormattedText formattedText = new wpf::System.Windows.Media.FormattedText(
                text.DefaultIfNullOrEmpty("A"),
                System.Globalization.CultureInfo.CurrentCulture,
                wpf::System.Windows.FlowDirection.LeftToRight,
                converter.Convert(typeface),
                fontSize,
                wpf::System.Windows.Media.Brushes.Black);

            formattedText.Trimming = wpf::System.Windows.TextTrimming.None;
            formattedText.MaxTextWidth = Double.IsInfinity(maxWidth) ? 0 : maxWidth;

            return new Size(text.IsNullOrEmpty() ? 0 : Math.Ceiling(formattedText.WidthIncludingTrailingWhitespace + 4), Math.Ceiling(formattedText.Height));
        }