Every language.
Any style.

Text and document engine for Unity UI and 3D. No fonts required. Top performance. Built-in capabilities include rich editing, pixel fonts, Font Memory Mapping and virtualized documents. Styles and behaviors compose through reusable constructors.

UI + 3D · Native emoji · Visual style constructors · Shared LightSide rendering

Showreel
All
Languages supported
100%
Unicode compliance
UI + 3D
Text rendering
✓
Emoji support
In production

Built with UniText

Ryah's Rhythm: Relaxing Games
Matchala Games
1M+
downloads
4.7 ★
Google Play
48.2K reviews
4.9 ★
App Store
1.1K reviews

“UniText provides literally all the features of text out of the box. We migrated the project in 2 days and added 11 languages without adding a single font to the project.”

Matchala Games

Store figures as published by Google Play and the App Store, September 2026.

Language support

Correct text in every language

Arabic shaping, mixed writing directions and scripts without spaces are part of the text engine.

Arabic shaping, mixed writing directions and scripts without spaces are part of the text engine.
العربيةArabic
हिन्दीHindi
বাংলাBengali
עבריתHebrew
ไทยThai
தமிழ்Tamil
Features

UniText capabilities

One text model across labels, input fields, rich editors and documents. Custom modifiers, parsing rules and input behaviors use the same construction workflow.

Font Memory Mapping

Large font files are read from disk on demand without a full managed copy in memory. Unused font assets stay compressed.

Pixel-perfect fonts

Crisp pixels, automatic grid detection and pixel-aligned effects and animation. Vector pixel fonts and bitmap-only fonts share the same style system.

Text editing and input

Selection, undo and redo, IME, rich clipboard, touch handles, native keyboards, validation, masks and passwords. Input behaviors and field decorators form reusable configurations.

Rich documents

Lists, ruby, formulas, inline images and prefabs. Virtualized scrolling for large documents.

Animation and interaction

Character and range animation, reveal effects and parameter timelines combine with text styles. Links, spoilers and custom targets have their own interaction states.

Extensions and constructors

Custom modifiers, parsing rules, input behaviors and decorators use the existing text model. Extensions compose with built-in features and reuse the same editor tools.

Extruded 3D text

Any text becomes solid, lit letters with depth, bevels and a material per surface. 3D outlines, deformers, prefabs on letters, colliders and mesh export work with the same markup and animations.

Every language

Arabic, Hebrew, Indic scripts, CJK and mixed writing directions in the same text. Unicode shaping, line breaks and selection follow the language.

Variable typography

Weight, width and slant remain editable and animatable. A variable font contains an entire range of styles in one file.

100 UniText + 100 TextMeshPro instances animating Font Size simultaneously. They're stacked at the same position, so all 200 look like a single block.

High performance

Shared caches avoid repeated text work. Local edits rebuild the affected content. Burst and parallel processing handle large workloads.

Native color emoji

Families, flags, skin tones and mixed emoji sequences use the device's fonts. No emoji texture pack is required.

A constructor for any style

Fills, outlines, shadows, glow, gradients and textures combine in editable layers. Presets, markup and Markdown reuse the same styles.

Text in 3D

Text in 3D

World text renders without a Canvas. Languages, emoji, styles, interaction and animation use the same engine as UI text.

No fonts required

Chinese, Japanese and Korean without bundled font assets.

No fonts required

System fonts provide automatic coverage for every language. Custom font files are optional on desktop and mobile; WebGL uses assigned fonts.

Natural line breaks

Language-aware wrapping includes scripts written without spaces, including Thai, Lao, Khmer and Myanmar.

Compliance

Unicode conformance

Official tests cover bidirectional text, line breaking, script detection and grapheme boundaries.

UAX #9
BiDi Algorithm
861,948
100% PASS
UAX #14
Line Breaking
19,338
100% PASS
UAX #24
Script Detection
9,705
100% PASS
UAX #29
Grapheme Clusters
766
100% PASS
Unicode 17.0.0
Unicode 17.0
Performance

Benchmark Comparison

Real benchmarks on Android production build.

Speed Comparison

Object Creation
UniText
166ms×4.9 faster
TMP
572ms
UI Toolkit
809ms
Full Rebuild
UniText
136ms×5.4 faster
TMP
398ms
UI Toolkit
731ms
Layout
UniText
71ms×20.7 faster
TMP
1468ms
UI Toolkit
241ms
Mesh Rebuild
UniText
60ms×7.1 faster
TMP
424ms
UI Toolkit
143ms

Memory & GC

GC Cycles (creation)
3
UniText
147
TMP
0
UI Toolkit
Memory Allocation (creation)
292 MB
UniText
2249 MB
TMP
×8 more
400 MB
UI Toolkit
×1.4 more
Runtime Allocations (per operation)
90 KB
UniText
13.8 MB
TMP
×153 more
39.6 MB
UI Toolkit
×440 more

* 100 objects, 10 iterations, 3 warmup, ~2300 characters per object (Latin + Arabic + Hebrew + Mixed). UniText.UseParallel = false.

Glyph Rendering

Adding glyphs to texture atlas

UniText FreeType
4.7–15.2×
faster
Unity FontEngine

Smaller Builds and Bundles

Font compression keeps your shipped game tiny

12 MB
Original font
→
4.4 MB
In your build

Sub-millisecond decompression at runtime — players won't notice.

LightSide ecosystem

Shared systems across LightSide

LightSide products reuse common systems throughout their runtime and editors. Each adds its own behavior on top of that foundation.

LightSide Core

Examples of Core systems: state and nested property access, clocks and motion primitives, pointer routing, geometry, worker threads, pools, serialization, resource management, GPU transport and editor controls. Common implementations across the products.

The same construction workflow

UniText modifiers and UniShapes layers share selectors, nested settings, presets and property editing.

Common paints and gradients

Colors, gradients, textures and filters use the same Core systems for text and shapes.

Together in one draw call

Text, shapes and Lottie share shaders, materials and batching. MoveIt animates exposed component and layer properties.

Cross-Platform

All Platforms Supported

UI and world text on desktop, mobile, WebGL, tvOS and visionOS.

Windows
x64ARM64
UWP
x64ARM64
macOS
x64Apple Silicon
Linux
x64ARM64
Android
ARMv7ARM64x86x64
iOS
ARM64
tvOS
ARM64
visionOS
ARM64
WebGL
2.0
Unity 2022.3 LTS+
Comparison

UniText vs TMP vs UI Toolkit

Side-by-side feature comparison

FeatureUniTextTextMesh ProUI Toolkit
Scripts & Internationalization
Bidirectional Text (UAX #9)
Requires plugin1
Requires ATG2
Auto Text Direction
Arabic Script (joining)
Requires plugin1
Requires ATG2
Arabic Kashida Justification
Hebrew Script
Requires plugin1
Requires ATG2
Hindi / Devanagari (Indic)
Requires ATG2
Complex OpenType Shaping (GSUB/GPOS)
HarfBuzz
Basic
Requires ATG2
Language-Aware Shaping (locl, pan-CJK)
Thai / Lao Word Segmentation
Requires ATG2
Korean Line Breaking
Requires ATG2
Unicode Line Breaking (UAX #14)
Basic
Limited2
Unicode Version
17.0
14.04
15.02
Emoji
Emoji Sequences (ZWJ / skin tone / flags)
Limited3
Emoji in RTL Text
Requires ATG2
Fonts
Variable Fonts
Font Families (Bold / Italic / weight)
Limited
Limited
Real OS Bold / Italic Cuts
Limited
Limited
Small Caps (OpenType smcp)
Basic (faux)
Basic (faux)
Automatic System-Font Fallback
Limited
Font Compression (build size)
Zstd
Font Memory Mapping
On-demand file cache10
Not documented10
Not documented10
Pixel Fonts
Automatic grid + full styles11
Raster setup11
Raster setup11
Automatic Pixel-Grid Detection
Pixel-Aligned Effects & Animation
Shared style system11
Custom work
Custom work
Per-Glyph Metric Overrides
Limited (not under ATG)
Rendering
MSDF Rendering
GPU Glyph Rasterization
3D World-Space Text
Shared world batching8
MeshRenderer8
World-space panel
Lit / Shaded 3D Text
Limited (shader swap)
Extruded 3D Text (solid meshes)
UniText 3D6
Extrude / Bevel Effect6
(configurable stack + bevel)
Basic (shader bevel)
Gradients (linear / radial / angular)
Limited (linear)
Limited (vertical)
Per-Range Custom Shaders
Multi-Core Processing
Limited (6.5+)5
Layout
Justified Text
(script-aware, CSS Text 3)
Limited7
Limited (inter-word, markup)
Line Height Control
Limited (markup only)
Paragraph Spacing
Limited (broken under ATG)
Text Indent
Limited (markup only)
Lists (ordered / nested)
Ruby / Furigana
Padding (box-model)
Limited (margin)
Limited (element box)
Text-Box Trim (cap-height)
Font-Size-Adjust (x-height match)
Markup & Interaction
Configurable / Custom Tags
Markdown Syntax
Interactive Links / Hashtags
Limited (no events)
(experimental)
Text Selection / Highlighting
Limited (input field)
Limited (TextField)
World-Space Pointer Events
Limited (panel quad)
Styles & Ecosystem
Visual Modifier & Layer Constructors
Nested layers + presets
Material controls
USS + UI Builder
Shared Paints for Text & Shapes
Colors, gradients, textures, filters
Separate graphics
USS styling
Shared Rendering with Shapes & Lottie
Core shaders + batching8
Separate integrations
Custom integration
Nested Property Animation
MoveIt + shared property system
Custom animation
USS transitions / code
Virtualized Rich Documents
Document viewport
Custom implementation
List virtualization
Support
Direct Developer Support
Discord9
(Unity issue tracker / forums)
(Unity issue tracker / forums)
  1. 1.TMP requires an external implementation for Unicode bidirectional processing and complex-script shaping. A right-to-left flag alone does not provide those algorithms.
  2. 2.UI Toolkit complex scripts use Advanced Text Generator. Unity 6.4 requires it to be enabled; behavior depends on the Unity version and generator selected.
  3. 3.Emoji sequence support depends on the text engine and the selected emoji font. TMP sprite substitution does not provide general Unicode sequence shaping.
  4. 4.TMP emoji data and runtime character-property tables are separate; its displayed version is not a claim of complete Unicode conformance.
  5. 5.UI Toolkit text-generation parallelization is available in Unity 6.5.
  6. 6.UniText 3D extrudes glyphs into closed, lit solids with bevels that cast shadows. The extrude effect of Canvas and world text is a layered visual effect with offset quads and bevel shading.
  7. 7.TMP justification distributes spacing using its word/character ratio. UniText also supports script-aware distribution and configurable final-line alignment.
  8. 8.Core batches compatible text, shapes and Lottie. Materials, textures, masks, sorting and geometry capacity can split draw calls. TMP world text uses MeshRenderer and remains subject to Unity renderer batching rules.
  9. 9.Discord is the main LightSide channel for questions, help and discussion. Bug reports and feature requests go to the public issue tracker.
  10. 10.UniText maps file-backed fonts and player font payloads without retaining a full managed copy. WebGL and embedded Editor assets use in-memory data. TMP and TextCore documentation do not specify an equivalent package-managed mapped-payload cache; their internal native storage is not classified here.
  11. 11.UniText detects or accepts a native pixel grid, samples one texel per font pixel and snaps effects and animation to that grid. Integer font-size multiples are pixel-exact. TMP and TextCore document raster font modes that require font-asset configuration; they are not marked as lacking pixel-font rendering.
UniText Folio

Interactive & Editable Text

UniText Folio adds selection, editing, IME, clipboard, input behaviors and decorators — with native BiDi and grapheme-cluster support.

FeatureUniTextTMP InputFieldUI Toolkit TextField
Components & Modes
Read-Only Selectable Text
Limited (full field chrome)
Editable Text without Field Chrome
Limited (cosmetic)
Limited
World-Space (3D) Editing
Limited (World-Space Canvas only)
Limited (2D panel)
Backend-Independent Input
Limited (breaks under Input System-only)
Selection & Caret
BiDi / RTL Caret & Selection
Requires plugin1
Requires ATG2
Grapheme-Cluster Caret (emoji / ZWJ)
Limited (surrogate only)
Limited (codepoint only)
Word / Line / Paragraph Selection
Limited (no triple-click)
Platform Key Bindings (macOS / Win / Linux)
Basic (Ctrl→Cmd only)
Limited
Vertical Caret Column Memory
Editing
Undo / Redo
3
Word / Line Delete (Ctrl+Backspace)
Rich-Text WYSIWYG Editing
4
Programmatic Edit with Undo Policy
Input Sanitization (surrogates / paste cap)
Limited
Limited
IME & Composition
IME Composition (CJK / dead keys)
Limited
Non-Destructive Composition + Clause Styling
Limited (single underline)
Limited (no clauses)
Clipboard
Rich Multi-Format Clipboard (HTML / Markdown)
5
5
Image / Media Paste
Input Behaviors, Filters & Validation
Built-in Input Filters (integer / email / …)
Basic (numeric only)
Live Input Mask (phone / card / date)
Validation Status & Message
Composable / Extensible Behavior Pipeline
Field Decorators
Floating Label (Material)
Character Counter
Supporting / Error Text
Custom / Extensible Decorators
Menus & Mobile
Context Menu (cut / copy / paste)
Limited (Editor-only)6
Touch Selection Handles
Magnifier Loupe
Soft-Keyboard Configuration
Limited
Limited
Keyboard Avoidance
Focus & Accessibility
Focus Guard (external toolbar)
Limited
Accessibility Semantics & Adapter Hooks
Limited (manual)
Pluggable / Non-Blinking Caret
Limited
Basic
Extensibility
Skinnable Selection Highlight
Limited
Basic
Rich Pointer-Event Model
Basic
Limited
  1. 1.TMP editing requires an external implementation for Unicode bidirectional processing and complex-script shaping.
  2. 2.UI Toolkit RTL/complex-script editing requires the Advanced Text Generator (opt-in in Unity 6.4, default from 6.5).
  3. 3.UI Toolkit’s runtime TextField has no undo/redo (the handler’s UndoRedoPerformed is an unimplemented TODO); editor IMGUI fields are a separate path.
  4. 4.TMP’s "Allow Rich Text Editing" edits the raw markup string (tags preserved) — there is no command to toggle bold/italic/color over a selection.
  5. 5.Both TMP and UI Toolkit copy/paste plain text only via Unity’s systemCopyBuffer — no HTML/Markdown/RTF or images.
  6. 6.UI Toolkit’s cut/copy/paste context menu is wired only in the Editor (EditorContextualMenuManager); a built player has no built-in text context menu.

UniText

Text and document engine for Unity UI and 3D. No fonts required. Top performance. Built-in capabilities include rich editing, pixel fonts, Font Memory Mapping and virtualized documents. Styles and behaviors compose through reusable constructors.