protected override void OnTextPropertyChanged(DependencyPropertyChangedEventArgs args)
        {
            if (String.IsNullOrEmpty(Text))
            {
                flattenedTextPathGeometry = null;
                return;
            }

            FormattedText formattedText =
                new FormattedText(Text, CultureInfo.CurrentCulture,
                        FlowDirection.LeftToRight, typeface, 100, Foreground);

            textLength = formattedText.Width;
            baseline = formattedText.Baseline;
            Geometry formattedTextGeometry = formattedText.BuildGeometry(new Point());
            flattenedTextPathGeometry = PathGeometry.CreateFromGeometry(formattedTextGeometry).GetFlattenedPathGeometry();
            warpedTextPathGeometry = flattenedTextPathGeometry.CloneCurrentValue();
            GenerateWarpedGeometry();
        }