//using UnityEngine; //using UnityEditor; //using UnityEngine.TextCore; //using TMPro; //using litefeelcustom; //using UnityEngine.TextCore.LowLevel; //using System.Drawing; //using System.Runtime.InteropServices; //namespace Fnt2TMPro.EditorUtilities //{ // public class Fnt2TMPro : EditorWindow // { // [MenuItem("Window/Bitmap Font Converter")] // public static void ShowWindow() // { // EditorWindow.GetWindow(typeof(Fnt2TMPro), false, "Bitmap Font Converter"); // } // private Texture2D m_Texture2D; // private TextAsset m_SourceFontFile; // private TMP_FontAsset m_DestinationFontFile; // static void PatchGlyph(RawCharacterInfo character, int textureHeight, int textureWidth, ref Glyph g) // { // var scaleH = textureWidth / textureHeight > 1 ? textureWidth / textureHeight : 1; // var scaleW = textureHeight / textureWidth > 1 ? textureHeight / textureWidth : 1; // g.glyphRect = new GlyphRect( // character.X * scaleW, // (textureHeight - character.Y - character.Height) * scaleH, // character.Width * scaleW, // character.Height * scaleH // ); // g.metrics = new GlyphMetrics( // character.Width, // character.Height, // character.Xoffset, // -character.Yoffset, // character.Xadvance // ); // } // void UpdateFont(TMP_FontAsset fontFile) // { // var fontText = m_SourceFontFile.text; // var fnt = FntParse.GetFntParse(fontText); // //for (int i = 0; i < fontFile.characterTable.Count; i++) // //{ // // var unicode = fontFile.characterTable[i].unicode; // // var glyphIndex = fontFile.characterTable[i].glyphIndex; // // for (int j = 0; j < fnt.charInfos.Length; j++) // // { // // if (unicode == fnt.charInfos[j].index) // // { // // var glyph = fontFile.glyphLookupTable[glyphIndex]; // // PatchGlyph(fnt.rawCharInfos[j], // // fnt.textureHeight, // // fnt.textureWidth, // // ref glyph); // // fontFile.glyphLookupTable[glyphIndex] = glyph; // // break; // // } // // } // //} // fontFile.characterTable.Clear(); // fontFile.characterLookupTable.Clear(); // fontFile.glyphTable.Clear(); // fontFile.glyphLookupTable.Clear(); // for (uint j = 0; j < fnt.charInfos.Length; j++) // { // var c = fnt.charInfos[j]; // var a = new TMP_Character(); // a.unicode = (uint)c.index; // a.glyphIndex = j; // a.textAsset = fontFile; // var glyph = new Glyph(); // PatchGlyph(fnt.rawCharInfos[j], // fnt.textureHeight, // fnt.textureWidth, // ref glyph); // glyph.index = j; // glyph.atlasIndex = 0; // a.glyph = glyph; // fontFile.characterTable.Add(a); // fontFile.characterLookupTable.Add(a.unicode, a); // fontFile.glyphTable.Add(glyph); // fontFile.glyphLookupTable.Add(j, glyph); // } // var maxHeight = 0; // for (int j = 0; j < fnt.charInfos.Length; j++) // { // maxHeight = Mathf.Max(maxHeight, Mathf.Abs(fnt.charInfos[j].minY - fnt.charInfos[j].maxY)); // } // var newFaceInfo = fontFile.faceInfo; // //newFaceInfo.baseline = fnt.lineBaseHeight; // //newFaceInfo.lineHeight = fnt.lineHeight; // //newFaceInfo.ascentLine = fnt.lineHeight; // newFaceInfo.baseline = 0; // newFaceInfo.lineHeight = maxHeight; // newFaceInfo.ascentLine = 0; // newFaceInfo.pointSize = fnt.fontSize; // newFaceInfo.descentLine = -maxHeight; // var fontType = typeof(TMP_FontAsset); // var faceInfoProperty = fontType.GetProperty("faceInfo"); // faceInfoProperty.SetValue(fontFile, newFaceInfo); // fontFile.material.SetTexture("_MainTex", m_Texture2D); // fontFile.atlasTextures[0] = m_Texture2D; // } // void OnGUI() // { // EditorGUILayout.BeginHorizontal(); // m_Texture2D = EditorGUILayout.ObjectField("Font Texture", m_Texture2D, typeof(Texture2D), false) as Texture2D; // EditorGUILayout.EndHorizontal(); // EditorGUILayout.BeginHorizontal(); // m_SourceFontFile = EditorGUILayout.ObjectField("Source Font File", // m_SourceFontFile, typeof(TextAsset), false) as TextAsset; // EditorGUILayout.EndHorizontal(); // EditorGUILayout.BeginHorizontal(); // m_DestinationFontFile = EditorGUILayout.ObjectField("Destination Font File", // m_DestinationFontFile, typeof(TMP_FontAsset), false) as TMP_FontAsset; // EditorGUILayout.EndHorizontal(); // if (GUILayout.Button("Convert")) // { // UpdateFont(m_DestinationFontFile); // } // } // } //}