public static Phrase createPhrase(string content, float fontSize, bool isBold, bool isMarked) { Phrase result; initFonts(); result = new Phrase(); var chunkList = new List <Chunk>(); if (content != null && content.Length > 0) { content = content.Replace(Environment.NewLine, "\n"); int startIndex = 0; int length = 0; bool isEnglishChar = IsEnglishChar(content.First()); Font font = GetFontForChar(content.First(), fontSize, isBold, isMarked); for (int i = 0; i < content.Length; i++) { char item = content[i]; if (isEnglishChar == IsEnglishChar(item)) { length++; } else { if (length > 0) { chunkList.Add(new Chunk(content.Substring(startIndex, length), font)); } startIndex = i; length = 1; font = GetFontForChar(item, fontSize, isBold, isMarked); } } chunkList.Add(new Chunk(content.Substring(startIndex, length), font)); } result.AddAll <Chunk>(chunkList); return(result); }