/// <summary>
        /// Initializes a new instance of the <see cref="SpriteFontFace"/> class.
        /// </summary>
        /// <param name="uv">The Ultraviolet context.</param>
        /// <param name="texture">The texture that contains the font face's glyphs.</param>
        /// <param name="regions">A collection containing the font face's character regions.</param>
        /// <param name="glyphs">A collection containing the positions of the font face's glyphs on its texture.</param>
        /// <param name="kerning">The font's kerning information.</param>
        /// <param name="ascender">The height of the font's ascender in pixels.</param>
        /// <param name="descender">The height of the font's descender in pixels.</param>
        /// <param name="substitutionCharacter">The character that corresponds to the font face's substitution glyph.</param>
        /// <param name="ownsTexture">A value indicating whether this font face is responsible for disposing of its texture.</param>
        public SpriteFontFace(UltravioletContext uv, Texture2D texture, IEnumerable <CharacterRegion> regions, IEnumerable <Rectangle> glyphs,
                              SpriteFontKerning kerning, Int32 ascender, Int32 descender, Char substitutionCharacter, Boolean ownsTexture = false)
            : base(uv)
        {
            Contract.Require(texture, nameof(texture));
            Contract.Require(glyphs, nameof(glyphs));

            this.texture     = texture;
            this.ownsTexture = ownsTexture;

            this.glyphs  = new SpriteFontGlyphIndex(regions ?? new[] { CharacterRegion.Default }, glyphs, substitutionCharacter);
            this.kerning = kerning ?? new SpriteFontKerning();

            this.Ascender  = ascender;
            this.Descender = descender;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SpriteFontFace"/> class.
 /// </summary>
 /// <param name="uv">The Ultraviolet context.</param>
 /// <param name="texture">The texture that contains the font face's glyphs.</param>
 /// <param name="regions">A collection containing the font face's character regions.</param>
 /// <param name="glyphs">A collection containing the positions of the font face's glyphs on its texture.</param>
 /// <param name="kerning">The font's kerning information.</param>
 /// <param name="substitutionCharacter">The character that corresponds to the font face's substitution glyph.</param>
 /// <param name="ownsTexture">A value indicating whether this font face is responsible for disposing of its texture.</param>
 public SpriteFontFace(UltravioletContext uv, Texture2D texture, IEnumerable <CharacterRegion> regions, IEnumerable <Rectangle> glyphs,
                       SpriteFontKerning kerning, Char substitutionCharacter, Boolean ownsTexture = false)
     : this(uv, texture, regions, glyphs, kerning, 0, 0, substitutionCharacter, ownsTexture)
 {
 }