}; // HACK: this is just for dancing dots, to be removed later on private bool CheckFilters(LetterFilters filters, LetterData data) { if (filters.requireDiacritics && !data.IsOfKindCategory(LetterKindCategory.DiacriticCombo)) { return(false); } if (filters.excludeDiacritics && data.IsOfKindCategory(LetterKindCategory.DiacriticCombo)) { return(false); } if (filters.excludeDiacritics_keepMain && data.IsOfKindCategory(LetterKindCategory.DiacriticCombo) && !mainDiacriticsIds.Contains(data.Symbol)) { return(false); } if (filters.excludeLetterVariations && data.IsOfKindCategory(LetterKindCategory.LetterVariation)) { return(false); } if (data.IsOfKindCategory(LetterKindCategory.Symbol)) { return(false); // always skip symbols } return(true); }
public static void DebugLetter(Db.LetterData letterData) { byte[] bytesUtf16 = Encoding.Unicode.GetBytes(letterData.Isolated); foreach (var item in bytesUtf16) { Debug.Log("DebugLetter " + letterData.Id + " lenght: " + letterData.Isolated.Length + " - " + item); } // Encoding.Convert(Encoding.UTF8, Encoding.Unicode, encodedBytes); //Debug.Log("DebugLetter " + str + " lenght: " + str.Length); }
/// <summary> /// Returns the list of letters found in a word string /// </summary> public static List <Db.LetterData> SplitWordIntoLetters(string arabicWord, bool reverseOrder = false, bool separateDiacritics = false) { List <Db.LetterData> allLetterData = new List <Db.LetterData>(AppManager.I.DB.StaticDatabase.GetLetterTable().GetValuesTyped()); var returnList = new List <Db.LetterData>(); char[] chars = arabicWord.ToCharArray(); if (reverseOrder) { Array.Reverse(chars); } //Debug.Log(arabicWord); for (int i = 0; i < chars.Length; i++) { char _char = chars[i]; string unicodeString = GetHexUnicodeFromChar(_char); Db.LetterData letterData = allLetterData.Find(l => l.Isolated_Unicode == unicodeString); if (letterData != null) { if (!separateDiacritics && letterData.Kind == Db.LetterDataKind.Symbol && letterData.Type == Db.LetterDataType.DiacriticSymbol) { var symbolId = letterData.Id; var lastLetterData = allLetterData.Find(l => l.Id == returnList[returnList.Count - 1].Id); var baseLetterId = lastLetterData.Id; //Debug.Log(symbolId); var diacriticLetterData = allLetterData.Find(l => l.Symbol == symbolId && l.BaseLetter == baseLetterId); returnList.RemoveAt(returnList.Count - 1); //Debug.Log(baseLetterId); //Debug.Log(diacriticLetterData); if (diacriticLetterData == null) { Debug.LogError("NULL " + baseLetterId + " + " + symbolId + ": we remove the diacritic for now."); // returnList.Add(diacriticLetterData.Id); } else { returnList.Add(diacriticLetterData); } } else { returnList.Add(letterData); } } } return(returnList); }
public LL_LetterData(Db.LetterData _data) { Data = _data; }
public LL_LetterData(string _id, Db.LetterData _data) : this(_data) { }