static KerningTable GetKerningTable(string fontFilePath, int pointSize) { KerningTable kerningInfo = new KerningTable(); kerningInfo.kerningPairs = new List <KerningPair>(); // Temporary Array to hold the kerning pairs from the Native Plug-in. FT_KerningPair[] kerningPairs = new FT_KerningPair[7500]; int kpCount = TMPro_FontPlugin.FT_GetKerningPairs(fontFilePath, m_kerningSet, m_kerningSet.Length, kerningPairs); for (int i = 0; i < kpCount; i++) { // Proceed to add each kerning pairs. KerningPair kp = new KerningPair((uint)kerningPairs[i].ascII_Left, (uint)kerningPairs[i].ascII_Right, kerningPairs[i].xAdvanceOffset * pointSize); // Filter kerning pairs to avoid duplicates int index = kerningInfo.kerningPairs.FindIndex(item => item.firstGlyph == kp.firstGlyph && item.secondGlyph == kp.secondGlyph); if (index == -1) { kerningInfo.kerningPairs.Add(kp); } else if (!TMP_Settings.warningsDisabled) { Debug.LogWarning("Kerning Key for [" + kp.firstGlyph + "] and [" + kp.secondGlyph + "] is a duplicate."); } } return(kerningInfo); }