Пример #1
0
        private void DrawTextWithFont(DocumentData documentData, Font font, Matrix3X3 parentMatrix, BitmapCanvas canvas)
        {
            var parentScale = Utils.GetScale(parentMatrix);
            var typeface    = _lottieDrawable.GetTypeface(font.Family, font.Style);

            if (typeface == null)
            {
                return;
            }
            var text         = documentData.Text;
            var textDelegate = _lottieDrawable.TextDelegate;

            if (textDelegate != null)
            {
                text = textDelegate.GetTextInternal(text);
            }
            _fillPaint.Typeface   = typeface;
            _fillPaint.TextSize   = documentData.Size * _composition.DpScale;
            _strokePaint.Typeface = _fillPaint.Typeface;
            _strokePaint.TextSize = _fillPaint.TextSize;
            for (var i = 0; i < text.Length; i++)
            {
                var character = text[i];
                var size      = DrawCharacterFromFont(character, documentData, canvas);

                // Add tracking
                var tracking = documentData.Tracking / 10f;
                if (_trackingAnimation?.Value != null)
                {
                    tracking += _trackingAnimation.Value.Value;
                }
                var tx = (float)size.Width + tracking * parentScale;
                canvas.Translate(tx, 0);
            }
        }