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
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.

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

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.

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
If any of these sound familiar, UniText is your solution.
Rich text with bold, italic, colors — in any language. Arabic dialogues read right-to-left. Hindi vowels connect properly. Emoji reactions just work.
Localizing to Arabic, Hebrew, Hindi, Thai, or Bengali? UniText is the only Unity text solution that renders these scripts correctly.
Damage numbers, name plates, world signs — rendered via MeshRenderer. No Canvas overhead. Full Unicode support in 3D space.
Chat messages, player names, custom text — any Unicode input, including complex emoji sequences, rendered correctly.
Mobile, VR, large worlds — zero garbage collection means no stuttering, even with hundreds of text objects.
Use familiar **bold**, *italic*, ~~strikethrough~~ syntax directly in Unity. Perfect for dialogue systems, tutorials, and in-game text.
Built on the same technologies used by Chrome, Firefox, Adobe, and Android.
Every script on Earth — tested and passed. 891,757 official Unicode conformance tests, zero failures. From Arabic to Tibetan.
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.
Text layout runs across all CPU cores. 100, 500, 1000 text objects — performance scales linearly.
Families 👨👩👧👦, flags 🇬🇪, skin tones 👋🏻👋🏿 — all correct. Uses device fonts: zero impact on build size, always up-to-date.
Rich text effects via simple tags. Customizable color, thickness, offset, and softness — all GPU-accelerated.

Text in 3D space via MeshRenderer — no Canvas required. Full feature parity: every language, every emoji, every effect — in world space.
Custom modifier creation in 10 lines of C#
Plug & play modifier system. Add only what you need. Create custom text effects in minutes with a simple C# API.
Thai, Lao, and other SE Asian scripts don't use spaces between words. UniText knows where to break lines — correctly, every time.
We pass every single official Unicode test. No exceptions.
Real benchmarks on Android production build.
* 100 objects, 10 iterations, 3 warmup, ~2300 characters per object (Latin + Arabic + Hebrew + Mixed). UniText.UseParallel = false.
Adding glyphs to texture atlas
Font compression keeps your shipped game tiny
Sub-millisecond decompression at runtime — players won't notice.
The codebase tells the story — UniText is a complete text engine, not a component.
Far more engine — and still faster and leaner than TMP.
Native HarfBuzz and FreeType libraries compiled for every major platform and architecture.
Side-by-side feature comparison
| Feature | UniText | TextMesh Pro | UI 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) |
UniText Folio adds selection, editing, IME, clipboard, input behaviors and decorators — with native BiDi and grapheme-cluster support.
| Feature | UniText | TMP InputField | UI 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 | |
Stop fighting with broken Arabic, missing emoji, and RTL bugs. UniText handles it all.