First & Only
Text Engine for Unity

Every language. Every emoji. Every style. Production-grade, extensible, high-performance, built on industry standards.

Unicode 17.0 · HarfBuzz · SDF/MSDF · Variable Fonts · Zero GC

150+
Languages supported
100%
Unicode compliance
UI + 3D
Text rendering
Emoji support
The Problem

1.8 Billion Users Left Behind

If your game has Arabic, Hebrew, Hindi, Thai, or Bengali-speaking players — TextMeshPro is showing them broken text. These aren't edge cases — they're a quarter of the world's population.

TextMeshProBROKEN
TextMeshPro

Arabic completely unreadable

Letters disconnected, RTL ignored, words reversed. Native speakers cannot read the text at all. No emoji support out of the box.

RTL TMPro pluginPARTIAL
RTL TMPro plugin

Arabic letters connect, but BiDi is broken

The plugin handles basic Arabic shaping — letters connect into words correctly. But there's no real BiDi algorithm. With embedded numbers, English words, or punctuation (chat, dialogue, prices, dates) the visual order is wrong — native readers struggle. On some inputs the plugin doesn't activate at all and falls back to the exact same broken output as TextMeshPro. Emoji don't work either way.

UniTextPERFECT
UniText

Everything works correctly

Full Unicode BiDi algorithm. Mixed scripts in correct order. Color emoji including complex ZWJ sequences. Production-ready out of the box.

Real Unity Editor screenshots — same text, same font, same scene

1.8B+
Users whose languages TextMeshPro cannot correctly display
العربية400M
हिन्दी600M
বাংলা230M
עברית9M
ไทย60M
தமிழ்80M
Is This For You?

Built for Real Game Scenarios

If any of these sound familiar, UniText is your solution.

Dialogue Systems

Rich text with bold, italic, colors — in any language. Arabic dialogues read right-to-left. Hindi vowels connect properly. Emoji reactions just work.

Game Localization

Localizing to Arabic, Hebrew, Hindi, Thai, or Bengali? UniText is the only Unity text solution that renders these scripts correctly.

3D Floating Text

Damage numbers, name plates, world signs — rendered via MeshRenderer. No Canvas overhead. Full Unicode support in 3D space.

Player-Generated Content

Chat messages, player names, custom text — any Unicode input, including complex emoji sequences, rendered correctly.

Performance-Critical Games

Mobile, VR, large worlds — zero garbage collection means no stuttering, even with hundreds of text objects.

Rich Text & Markdown

Use familiar **bold**, *italic*, ~~strikethrough~~ syntax directly in Unity. Perfect for dialogue systems, tutorials, and in-game text.

Features

Everything You Need

Built on the same technologies used by Chrome, Firefox, Adobe, and Android.

Every Writing System

Every script on Earth — tested and passed. 891,757 official Unicode conformance tests, zero failures. From Arabic to Tibetan.

Variable Fonts

One font file, infinite variations. Smoothly animate weight, width, slant — in real time. One font replaces your entire font family.

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

Multi-Core Processing

Text layout runs across all CPU cores. 100, 500, 1000 text objects — performance scales linearly.

Full Color Emoji

Families 👨‍👩‍👧‍👦, flags 🇬🇪, skin tones 👋🏻👋🏿 — all correct. Uses device fonts: zero impact on build size, always up-to-date.

Outline & Shadow

Rich text effects via simple tags. Customizable color, thickness, offset, and softness — all GPU-accelerated.

3D World Text

3D World Text

Text in 3D space via MeshRenderer — no Canvas required. Full feature parity: every language, every emoji, every effect — in world space.

SCREENSHOT

Custom modifier creation in 10 lines of C#

Modular Architecture

Plug & play modifier system. Add only what you need. Create custom text effects in minutes with a simple C# API.

Smart Word Breaking

Thai, Lao, and other SE Asian scripts don't use spaces between words. UniText knows where to break lines — correctly, every time.

Compliance

100% Unicode Conformance

We pass every single official Unicode test. No exceptions.

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
Latest Unicode standard (2024) — always up to date
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.

Scale

Engineered at a different scale

The codebase tells the story — UniText is a complete text engine, not a component.

473
UniText · Source files
80,519 Lines of code
116
TMP · Source files
41,892 Lines of code
4.1× more · Source files1.9× more · Lines of code

Far more engine — and still faster and leaner than TMP.

Cross-Platform

All Platforms Supported

Native HarfBuzz and FreeType libraries compiled for every major platform and architecture.

Windows
x86x64ARM64
macOS
x64Apple Silicon
Linux
x64
Android
ARMv7ARM64x86x64
iOS
ARM64
WebGL
2.0
Unity 2021 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
Per-Glyph Metric Overrides
Limited (not under ATG)
Rendering
MSDF Rendering
GPU Glyph Rasterization
3D World-Space Text
(batched, ~1 draw call)8
(no batching, draw calls per object)8
(2D panel)
Lit / Shaded 3D Text
Limited (shader swap)
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)
Support & Maintenance
Direct Developer Support
Fast, dedicated9
(Unity issue tracker / forums)
(Unity issue tracker / forums)
  1. 1.TMP has no native BiDi/Arabic/Hebrew. The usual plugin (RTL Text Mesh Pro) is a workaround, not real RTL: no proper Unicode Bidirectional Algorithm (UAX #9) — a heuristic glyph "fixer" whose own docs note mixed English/RTL multiline text breaks — and Arabic-script shaping via a fixed presentation-form table only (no OpenType shaping, no other complex scripts).
  2. 2.UI Toolkit: requires the Advanced Text Generator (HarfBuzz/ICU) — opt-in in Unity 6.4, default from 6.5. Without ATG there is no shaping/BiDi/ICU.
  3. 3.TMP does not compose ZWJ/skin-tone/flag sequences at all; UI Toolkit attempts them but Unity itself flags emoji with flags and skin tones as "problematic".
  4. 4.TMP has no bundled UCD table: emoji data tracks Unicode 14.0, character properties come from the .NET runtime.
  5. 5.UI Toolkit text-generation parallelization ships in Unity 6.5.
  6. 6.No engine builds true extruded 3D geometry. UniText stacks offset quad copies (2.5D, z=0) with a near→far gradient and a bevel mode; TMP uses a faux bevel via normal-map shading.
  7. 7.TMP fixed-ratio distribution (wordWrappingRatios 0.4) forces ~40% of the slack into inter-letter spacing on every script (not script-aware), hardcodes last-line alignment (no text-align-last), and tolerates 5% box overflow.
  8. 8.UniText merges all UniTextWorld components sharing a material and sorting into one mesh → typically a single draw call per group (extra meshes only past the ~64k-vertex limit). World-space TextMeshPro renders each object as its own MeshRenderer with no cross-object batching, so draw calls grow linearly with the number of text objects.
  9. 9.UniText direct developer support: responses within 10 minutes, bug fixes from 1 hour to 1 day, feature implementation from 3 hours to 3 days. TMP and UI Toolkit only have Unity’s official issue tracker and community forums, with no guaranteed response or fix times.
UniText FolioUpcoming

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
Editing Accessibility (screen-reader)
Limited (manual)
Pluggable / Non-Blinking Caret
Limited
Basic
Extensibility
Skinnable Selection Highlight
Limited
Basic
Rich Pointer-Event Model
Basic
Limited
  1. 1.TMP has no native BiDi/Arabic. RTL editing needs a third-party plugin (RTL Text Mesh Pro) — a heuristic glyph "fixer", not real RTL: no proper Unicode Bidirectional Algorithm (UAX #9), only fixed Arabic-script presentation forms (no OpenType shaping), with known mixed-direction multiline issues.
  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.

Ready to support every language?

Stop fighting with broken Arabic, missing emoji, and RTL bugs. UniText handles it all.