Beispiel #1
0
        public override void ImportDictionary()
        {
            base.ImportDictionary();

            if (!asset)
            {
                return;
            }

            // sanitize input

            assetmetrices.Clear();

            var info = asset.fontInfo;

            var padding = asset.fontInfo.Padding;

            for (int i = 0; i < catalog.Length; i++)
            {
                if (!asset.characterDictionary.ContainsKey(catalog[i]))
                {
                    assetmetrices[catalog[i]] = new SpriteMetrics();
                    continue;
                }

                TMP_Glyph c = asset.characterDictionary[catalog[i]];

                var factor = c.scale / info.PointSize;

                assetmetrices[catalog[i]] = new SpriteMetrics()
                {
                    size = new Vector4()
                    {
                        x = (-c.xOffset + padding) * factor,
                        y = (c.height - c.yOffset + padding) * factor,
                        z = (c.width + c.xOffset + padding) * factor,
                        w = (c.yOffset + padding) * factor,
                    },
                    advance = c.xAdvance * factor,
                    uv      = new Rect()
                    {
                        x      = (c.x - padding) / info.AtlasWidth,
                        y      = 1 - (c.y + c.height + padding) / info.AtlasHeight,
                        width  = (c.width + 2 * padding) / info.AtlasWidth,
                        height = (c.height + 2 * padding) / info.AtlasHeight
                    }
                };
            }
        }
Beispiel #2
0
        public override void ImportDictionary()
        {
            // sanitize input
            if (catalog.Length > assets.Length)
            {
                Array.Resize(ref catalog, assets.Length);
                Array.Resize(ref chars, assets.Length);
            }

            base.ImportDictionary();

            assetindexes.Clear();
            assetmetrices.Clear();

            for (int i = 0; i < assets.Length; i++)
            {
                var a = assets[i]; var sz = new Vector2(1f / a.texture.width, 1f / a.texture.height);
                var aspect = a.rect.width / a.rect.height; var pivot = Vector2.Scale(a.pivot, sz);
                assetindexes[catalog[i]]  = a;
                assetmetrices[catalog[i]] = new SpriteMetrics()
                {
                    size = new Vector4()
                    {
                        x = aspect * lineHeight * pivot.x,
                        y = -lineOffset + lineHeight * pivot.y,
                        z = aspect * lineHeight * (1 - pivot.x),
                        w = lineOffset + lineHeight * (1 - pivot.y),
                    },
                    advance = aspect * lineHeight,
                    uv      = new Rect()
                    {
                        min = Vector2.Scale(a.rect.min, sz),
                        max = Vector2.Scale(a.rect.max, sz),
                    }
                };
            }
        }