Phase 5 updates

Phase 5 · Slice 5 ·

UI text

  • Fonts: Font with a dynamic glyph atlas, rasterized natively with fontdue.
    • The atlas grows and rebuilds when full, raising Font.textureRebuilt.
    • CharacterInfo, RequestCharactersInTexture, GetCharacterInfo.
    • Liberation Sans is the built-in font (Resources.GetBuiltinResource<Font>("LegacyRuntime.ttf"), and the scene reference to Arial).
    • .ttf/.otf files load from Resources and Unity projects.
  • TextGenerator, with Unity's whole-pixel metrics:
    • rounded advances; kerning truncated, shifting the glyph after its cursor position is taken;
    • line steps of the floored line height; baselines at the rounded ascent.
    • Also word wrap with breaks inside words too long for a line, tab stops, vertical truncation, best fit, and rich text (b, i, size, color) whose tags lay out as zero-width characters.
  • Legacy Text in UnityEngine.UI, with FontData, FontUpdateTracker and its preferred sizes.
  • Unity.TextMeshPro, Tassix's own assembly (name and asmdef GUID), in TextMeshPro's exact font-unit metrics:
    • TMP_Text, TextMeshProUGUI and 3D TextMeshPro, TMP_FontAsset (CreateFontAsset), TMP_Settings;
    • textInfo (characters, lines, words, mesh info and UpdateVertexData), preferred and rendered values;
    • rich text (b, i, u, s, color, alpha, size, cspace, align, br, noparse), wrapping, alignment, auto sizing, truncation, SetText formatting.
    • Glyphs draw as bitmaps at the on-screen size, not from a signed distance field.
  • A new ui_text scenario recorded in Unity with the same font file on both sides checks the following, and matches:
    • font metrics and advances, preferred sizes, wrapping, truncation, best fit;
    • per-character pen positions for alignment, rich text, overflow and line spacing;
    • TextMeshPro's preferred values, character corners and line info.
    • Glyph bitmap bounds aren't compared: Unity's FreeType hints them. 32 scenarios pass.
  • Package script GUIDs for UI and TextMeshPro components, so they save into Unity scenes; the recorder imports TMP Essential Resources.
  • Not yet: SDF effects (outline, underlay, glow, softness), sprite assets in text, fallback fonts, OS fonts, justified alignment, ellipsis glyphs, a project's TMP Settings asset.
  • Next: EventSystem raycasts and input, then Button, Toggle and Slider with UnityEvent persistent calls.