Beispiel #1
0
        public BorderedFont(Texture2D borderedTexture, Texture2D innerTexture, string borderedDefStr, string innerDefStr, string kerning, bool isRetina)
        {
            Kerning = kerning == "" ? null : new KerningDef(kerning, isRetina);

            Border = new SubFont(borderedTexture, borderedDefStr, Kerning, isRetina);
            Inner = new SubFont(innerTexture, innerDefStr, Kerning, isRetina);
        }
Beispiel #2
0
            public SubFont(Texture2D texture, string def, KerningDef kerning, bool isRetina)
            {
                _kerning = kerning;
                IsRetina = isRetina;

                string[] split = def.Split(' ', '\r', '\n');

                int idx = 0;

                while (idx < split.Length - 2)
                {
                    //Read this char
                    char i = split[idx][0]; idx++;

                    var width = int.Parse(split[idx]); idx++;
                    var height = int.Parse(split[idx]); idx++;
                    var x = int.Parse(split[idx]); idx++;
                    var y = int.Parse(split[idx]); idx++;
                    float xOffset = int.Parse(split[idx]); idx++;
                    float yOffset = int.Parse(split[idx]); idx++;
                    float xAdvance = int.Parse(split[idx]); idx++;

                    if (isRetina)
                    {
                        xOffset *= 0.5f;
                        yOffset *= 0.5f;
                        xAdvance *= 0.5f;
                    }
                    _characters[i] = new CharDetail
                        {
                            Texture = new SubTexture2D(texture, new Rectangle(x, y, width, height), isRetina),
                            XOffset = xOffset,
                            YOffset = yOffset,
                            XAdvance = xAdvance
                        };
                }

                AboveLineSize = _characters.Select(x => x.Value.YOffset).Max();

                SpaceWidth = int.Parse(split[idx]); idx++;
                LineHeight = int.Parse(split[idx]);

                if (IsRetina)
                {
                    SpaceWidth *= 0.5f;
                    LineHeight *= 0.5f;
                }
            }