public void CalculateRotationProgressions(ref float[] letter_progressions, int num_progressions, Vector3[] offset_vecs, TextFxBezierCurve curve_override = null)
    {
        if (curve_override != null)
        {
            // Work out letter rotations based on the provided bezier curve setup

            var constant_offset = offset_vecs != null && offset_vecs.Length == 1;
            m_values = new Vector3[num_progressions];

            for (var idx = 0; idx < num_progressions; idx++)
                m_values[idx] = m_is_offset_from_last ? offset_vecs[constant_offset ? 0 : idx] : Vector3.zero;

            for (var idx = 0; idx < letter_progressions.Length; idx++)
                m_values[idx] += curve_override.GetCurvePointRotation(letter_progressions[idx]);
        }

        CalculateProgressions(num_progressions, curve_override == null ? offset_vecs : m_values, curve_override != null);
    }