123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- using UnityEngine;
- using UnityEditor;
- using NUnit.Framework;
- using UnityEngine.TextCore.LowLevel;
-
-
- namespace TMPro
- {
- [Category("Text Parsing & Layout")]
- class FontEngineTests
- {
- [OneTimeSetUp]
- public void Setup()
- {
- // Check if "TextMesh Pro" folder is present in project
- string folderPath = AssetDatabase.GUIDToAssetPath("f54d1bd14bd3ca042bd867b519fee8cc");
-
- if (string.IsNullOrEmpty(folderPath))
- {
- // Import TMP Essential Resources and TMP Examples & Extras
- TMP_PackageResourceImporter.ImportResources(true, true, false);
- }
- }
-
- [TestCase("e3265ab4bf004d28a9537516768c1c75", "Liberation Sans", "Regular")]
- [TestCase("4beb055f07aaff244873dec698d0363e", "Roboto", "Bold")]
- [TestCase("997a43b767814dd0a7642ec9b78cba41", "Anton", "Regular")]
- public void CreateFontAsset_from_FilePath(string fontFileGUID, string familyName, string styleName)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
-
- TMP_FontAsset fontAsset = TMP_FontAsset.CreateFontAsset(filePath, 0, 90, 9, GlyphRenderMode.SDFAA, 512, 512);
-
- Assert.NotNull(fontAsset);
-
- Assert.AreEqual(fontAsset.faceInfo.familyName, familyName);
- Assert.AreEqual(fontAsset.faceInfo.styleName, styleName);
- }
-
- [TestCase("e3265ab4bf004d28a9537516768c1c75", "Liberation Sans", "Regular")]
- [TestCase("4beb055f07aaff244873dec698d0363e", "Roboto", "Bold")]
- [TestCase("997a43b767814dd0a7642ec9b78cba41", "Anton", "Regular")]
- public void CreateFontAsset_from_FontObject(string fontFileGUID, string familyName, string styleName)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
-
- Font font = AssetDatabase.LoadAssetAtPath<Font>(filePath);
-
- TMP_FontAsset fontAsset = TMP_FontAsset.CreateFontAsset(font, 90, 9, GlyphRenderMode.SDFAA, 512, 512);
-
- Assert.NotNull(fontAsset);
-
- Assert.AreEqual(fontAsset.faceInfo.familyName, familyName);
- Assert.AreEqual(fontAsset.faceInfo.styleName, styleName);
- }
-
- [TestCase("e3265ab4bf004d28a9537516768c1c75", "Liberation Sans", "Regular")]
- public void TryAddCharacters_SanityCheck(string fontFileGUID, string familyName, string styleName)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
-
- TMP_FontAsset fontAsset = TMP_FontAsset.CreateFontAsset(filePath, 0, 90, 9, GlyphRenderMode.SDFAA, 512, 512);
-
- Assert.NotNull(fontAsset);
-
- fontAsset.TryAddCharacters("abc");
- Assert.IsTrue(fontAsset.HasCharacters("abc"));
- }
-
- // =============================================
- // FONT ENGINE - OPENTYPE TESTS
- // =============================================
-
- #if TEXTCORE_FONT_ENGINE_1_5_OR_NEWER
- [TestCase("e3265ab4bf004d28a9537516768c1c75", 1)]
- [TestCase("4beb055f07aaff244873dec698d0363e", 623)]
- [TestCase("24007ea0bd4d6b2418f4caf1b06e2cb4", 43)]
- public void GetSingleSubstitutionRecords(string fontFileGUID, int recordCount)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
- if (FontEngine.LoadFontFace(filePath) != FontEngineError.Success)
- return;
-
- UnityEngine.TextCore.LowLevel.SingleSubstitutionRecord[] records = FontEngine.GetAllSingleSubstitutionRecords();
-
- if (records == null)
- return;
-
- Assert.AreEqual(recordCount, records.Length);
- }
-
- [TestCase("47a9b34e6f77bbd4d94f512d266bcd0c", 77)] // Inter - Regular
- public void GetAlternateSubstitutionRecords(string fontFileGUID, int recordCount)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
- if (FontEngine.LoadFontFace(filePath) != FontEngineError.Success)
- return;
-
- UnityEngine.TextCore.LowLevel.AlternateSubstitutionRecord[] records = FontEngine.GetAllAlternateSubstitutionRecords();
-
- if (records == null)
- return;
-
- Assert.AreEqual(recordCount, records.Length);
- }
-
- [TestCase("e3265ab4bf004d28a9537516768c1c75", 184)]
- [TestCase("4beb055f07aaff244873dec698d0363e", 177)]
- [TestCase("c9f6d0e7bc8541498c9a4799ba184ede", 5)]
- public void GetLigatures(string fontFileGUID, int recordCount)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
- if (FontEngine.LoadFontFace(filePath) != FontEngineError.Success)
- return;
-
- UnityEngine.TextCore.LowLevel.LigatureSubstitutionRecord[] records = FontEngine.GetAllLigatureSubstitutionRecords();
-
- if (records == null)
- return;
-
- Assert.AreEqual(recordCount, records.Length);
- }
-
- [TestCase("e3265ab4bf004d28a9537516768c1c75", 2016)]
- [TestCase("4beb055f07aaff244873dec698d0363e", 70027)]
- [TestCase("c9f6d0e7bc8541498c9a4799ba184ede", 1940)]
- public void GetPairAdjustmentRecords(string fontFileGUID, int recordCount)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
- if (FontEngine.LoadFontFace(filePath) != FontEngineError.Success)
- return;
-
- GlyphPairAdjustmentRecord[] records = FontEngine.GetAllPairAdjustmentRecords();
-
- if (records == null)
- return;
-
- Assert.AreEqual(recordCount, records.Length);
- }
-
- [TestCase("e3265ab4bf004d28a9537516768c1c75", 8911)]
- [TestCase("4beb055f07aaff244873dec698d0363e", 0)]
- [TestCase("24007ea0bd4d6b2418f4caf1b06e2cb4", 432)]
- public void GetMarkToBaseAdjustmentRecords(string fontFileGUID, int recordCount)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
- if (FontEngine.LoadFontFace(filePath) != FontEngineError.Success)
- return;
-
- UnityEngine.TextCore.LowLevel.MarkToBaseAdjustmentRecord[] records = FontEngine.GetAllMarkToBaseAdjustmentRecords();
-
- if (records == null)
- return;
-
- Assert.AreEqual(recordCount, records.Length);
- }
-
- [TestCase("e3265ab4bf004d28a9537516768c1c75", 0)]
- [TestCase("4beb055f07aaff244873dec698d0363e", 0)]
- [TestCase("24007ea0bd4d6b2418f4caf1b06e2cb4", 324)]
- public void GetMarkToMarkAdjustmentRecords(string fontFileGUID, int recordCount)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
- if (FontEngine.LoadFontFace(filePath) != FontEngineError.Success)
- return;
-
- UnityEngine.TextCore.LowLevel.MarkToMarkAdjustmentRecord[] records = FontEngine.GetAllMarkToMarkAdjustmentRecords();
-
- if (records == null)
- return;
-
- Assert.AreEqual(recordCount, records.Length);
- }
-
- // GetOpenTypeFontFeatureList throws NotImplementedException with new FontEngine changes to support FontFeature (TEXTCORE_FONT_ENGINE_1_5_OR_NEWER)
- /*
- [TestCase("e3265ab4bf004d28a9537516768c1c75", 0)]
- [TestCase("4beb055f07aaff244873dec698d0363e", 0)]
- [TestCase("24007ea0bd4d6b2418f4caf1b06e2cb4", 324)]
- [TestCase("47a9b34e6f77bbd4d94f512d266bcd0c", 324)]
- [TestCase("d01f31227e1b4cd49bc293f44aab2253", 324)]
- public void GetFontFeatureList(string fontFileGUID, int recordCount)
- {
- string filePath = AssetDatabase.GUIDToAssetPath(fontFileGUID);
- if (FontEngine.LoadFontFace(filePath) != FontEngineError.Success)
- return;
-
- OpenTypeFeature[] fontFeatureList = FontEngine.GetOpenTypeFontFeatureList();
-
- if (fontFeatureList == null)
- return;
-
- Assert.AreEqual(recordCount, fontFeatureList.Length);
- } */
- #endif
- }
- }
|