SerializedFontData GetOrCreateSerializedFont(string name, string path) { var fullPath = Path.Combine(path, name + ".asset"); if (File.Exists(fullPath)) { return(AssetDatabase.LoadAssetAtPath <SerializedFontData>(fullPath)); } else { Directory.CreateDirectory(path); var data = SerializedFontData.CreateInstance <SerializedFontData>(); AssetDatabase.CreateAsset(data, fullPath); return(data); } }
void ConvertTMProToFontData(TMP_FontAsset tmp, SerializedFontData result) { result.Material = tmp.material; result.CharacterLookupTable = BuildCharacterLookup(tmp.characterLookupTable); result.GlyphLookupTable = BuildGlyphInfos(tmp.glyphLookupTable); var featureTableType = typeof(TMP_FontFeatureTable); var field = featureTableType.GetField("m_GlyphPairAdjustmentRecords", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); var featureTable = tmp.fontFeatureTable; var kerningSourceData = field.GetValue(featureTable) as List <TMP_GlyphPairAdjustmentRecord>; result.Kerning = BuildKerningInfo(kerningSourceData); result.AtlasWidth = tmp.atlasWidth; result.AtlasHeight = tmp.atlasHeight; result.PointSize = tmp.faceInfo.pointSize; result.Scale = tmp.faceInfo.scale; }