/** * Gets a special kind of Phrase that changes some characters into corresponding symbols. * @param leading * @param string * @param font * @return a newly constructed Phrase */ public static Phrase GetInstance(int leading, String str, Font font) { Phrase p = new Phrase(true); p.Leading = leading; p.font = font; if (font.Family != Font.SYMBOL && font.Family != Font.ZAPFDINGBATS && font.BaseFont == null) { int index; while ((index = SpecialSymbol.Index(str)) > -1) { if (index > 0) { String firstPart = str.Substring(0, index); ((ArrayList)p).Add(new Chunk(firstPart, font)); str = str.Substring(index); } Font symbol = new Font(Font.SYMBOL, font.Size, font.Style, font.Color); StringBuilder buf = new StringBuilder(); buf.Append(SpecialSymbol.GetCorrespondingSymbol(str[0])); str = str.Substring(1); while (SpecialSymbol.Index(str) == 0) { buf.Append(SpecialSymbol.GetCorrespondingSymbol(str[0])); str = str.Substring(1); } ((ArrayList)p).Add(new Chunk(buf.ToString(), symbol)); } } if (str != null && str.Length != 0) { ((ArrayList)p).Add(new Chunk(str, font)); } return(p); }
/** * Gets a chunk with a symbol character. * @param c a character that has to be changed into a symbol * @param font Font if there is no SYMBOL character corresponding with c * @return a SYMBOL version of a character */ public static Chunk Get(char c, Font font) { char greek = SpecialSymbol.GetCorrespondingSymbol(c); if (greek == ' ') { return(new Chunk(c.ToString(), font)); } Font symbol = new Font(Font.SYMBOL, font.Size, font.Style, font.Color); return(new Chunk(greek.ToString(), symbol)); }