title: Is There a Non-Win2D Text Solution for UWP Composition API
body: <p>To avoid an XY question, first the Y: Is there a way to create a text on a SpriteVisual that does not require Win2D?</p>
  
  <p>Now the X: The problem I'm trying to solve is that I need text on a SpriteVisual (instead of a TextBlock) to apply perspective rotate 3D Expression animations on it. Text on a SpriteVisual can be done with Win2D. Here's a piece of the <a href="https://docs.microsoft.com/en-us/windows/uwp/composition/composition-brushes" rel="nofollow noreferrer">Microsoft sample code</a>:</p>
  
  <pre><code>using (var ds = CanvasComposition.CreateDrawingSession(_drawingSurface))
  {
       ds.Clear(Colors.Transparent);
       var rect = new Rect(new Point(2, 2), (_drawingSurface.Size.ToVector2() - new Vector2(4, 4)).ToSize());
       ds.FillRoundedRectangle(rect, 15, 15, Colors.LightBlue);
       ds.DrawRoundedRectangle(rect, 15, 15, Colors.Gray, 2);
       ds.DrawText("This is a composition drawing surface", rect, Colors.Black, new CanvasTextFormat()
       {
            FontFamily = "Comic Sans MS",
            FontSize = 32,
            WordWrapping = CanvasWordWrapping.WholeWord,
            VerticalAlignment = CanvasVerticalAlignment.Center,
            HorizontalAlignment = CanvasHorizontalAlignment.Center
       }
  );
  
  _drawingBrush.Surface = _drawingSurface;
  
  _drawingVisual = _compositor.CreateSpriteVisual();
  _drawingVisual.Brush = _drawingBrush;
  </code></pre>
  
  <p>To color text in this requires Win2D ICanvasBrush. But I want to animate the color in an Expression Animation, so I need the text color to come from a CompositionBrush. Now I could create a CompositionMaskBrush with the text brush as the mask and the CompositionBrush as the source. But with a CompositionMaskBrush I cannot add an additional mask or any other composition effects to it, which is problematic for me.</p>
  
  <p>Is there an alternate approach or perhaps an enhancement to the Composition API in an Insider Build that I'm not familiar with?</p>