public void LoadFont(string name, string elementName, string configPath, float offsetX, float offsetY, FTextParams textParams) { FAtlasElement element = GetElementWithName(elementName); FFont font = new FFont(name, element, configPath, offsetX, offsetY, textParams); _fonts.Add(font); _fontsByName.Add(name, font); }
public FLabel(string fontName, string text, FTextParams textParams) : base() { _fontName = fontName; _text = text; _font = Futile.atlasManager.GetFontWithName(_fontName); _textParams = textParams; Init(FFacetType.Quad, _font.element, 0); CreateTextQuads(); }
public FLabel (string fontName, string text, FTextParams textParams) : base() { _fontName = fontName; _text = text; _font = Futile.atlasManager.GetFontWithName(_fontName); _textParams = textParams; Init(FFacetType.Quad, _font.element, 0); CreateTextQuads(); }
/// <summary> /// Checks how long pixels would the text take. /// <para>This is very costy in performance, so do not use this too much. See also <see cref="CharMean"/></para> /// </summary> /// <param name="text">Text you want to test</param> /// <param name="bigText">Whether the font is big variant or not</param> /// <returns>Text width in pxl</returns> public static float GetWidth(string text, bool bigText) { /* * if (!hasChecked) { return CharMean(bigText) * text.Length; } * MenuLabel l = !bigText ? tester : testerB; * l.text = text; * return l.label.textRect.width;*/ FFont font = Futile.atlasManager.GetFontWithName(GetFont(bigText, !HasNonASCIIChars(text))); float width = 0f; foreach (var item in font.GetQuadInfoForText(text, new FTextParams())) { width = Mathf.Max(width, item.bounds.width); } return(width); }
public void LoadFont(string name, string elementName, string configPath, float offsetX, float offsetY, FTextParams textParams) { FAtlasElement element = GetElementWithName(elementName); FFont font = new FFont(name,element,configPath, offsetX, offsetY, textParams); _fonts.Add(font); _fontsByName.Add (name, font); }
/// <summary> /// Text wrapper by <c>dual curly potato noodles</c> /// </summary> /// <param name="text">Text you want to wrap</param> /// <param name="bigText">Whether the font is big variant or not</param> /// <param name="width">Pixel width</param> /// <returns></returns> public static string WrapText(this string text, bool bigText, float width, bool ascii = false) { FFont font = Futile.atlasManager.GetFontWithName(GetFont(bigText, ascii)); string[] lines = text.Replace("\r\n", "\n").Split('\n'); StringBuilder ret = new StringBuilder(); for (int i = 0; i < lines.Length; i++) { ret.Append(WrapLine(lines[i])); if (i < lines.Length - 1) { ret.Append('\n'); } } return(ret.ToString()); string WrapLine(string t) { StringBuilder r = new StringBuilder(t); List <FLetterQuad> quads = new List <FLetterQuad>(); foreach (var item in font.GetQuadInfoForText(t, new FTextParams())) { quads.AddRange(item.quads); quads.Add(new FLetterQuad() { charInfo = new FCharInfo() }); // Placeholders for newlines } int lastStartLineIndex = 0; int lastWhitespaceIndex = -1; for (int i = 0; i < t.Length; i++) { void TrimWhitespace() { while (i < t.Length - 1 && t[i] != '\n' && char.IsWhiteSpace(t[i])) { i++; } } var lineWidth = quads[i].rect.x + quads[i].rect.width - (quads[lastStartLineIndex].rect.x + quads[lastStartLineIndex].rect.width); var curChar = r[i]; if (curChar == '\n') { TrimWhitespace(); // Trim line-ending whitespace lastWhitespaceIndex = -1; lastStartLineIndex = i; continue; } if (lineWidth < 0.01f) { TrimWhitespace(); // Trim line-starting whitespace } else if (char.IsWhiteSpace(curChar)) { lastWhitespaceIndex = i; } if (lineWidth > width) { if (lastWhitespaceIndex == -1) { r.Insert(i + 1, '\n'); } else { r.Insert(lastWhitespaceIndex + 1, '\n'); i = lastWhitespaceIndex; } continue; } } return(r.ToString()); } }
public void LoadFont(string name, string elementName, string configPath, FTextParams fontTextParams) { FAtlasElement element = _allElementsByName[elementName]; FFont font = new FFont(name,element,configPath, fontTextParams); _fonts.Add(font); _fontsByName.Add (name, font); }