Architecting Zero-Telemetry Indic Keyboards: Overcoming Complex Conjuncts in Assamese & Bodo
How Borluit.tech engineered the Barna Assamese Keyboard with zero-latency phonetic transliteration, custom Unicode conjunct mapping, and strict local sandboxing.
Introduction: The Challenge of Regional Script Input
Typing in Brahmic script derivatives such as Assamese (অসমীয়া) and Bodo presents unique computational hurdles that standard Latin keyboard architectures fail to address. Unlike alphabetic writing systems where each keystroke corresponds directly to an isolated glyph, Indic scripts rely on complex ligatures, vowel signs (matras), virama (hasant), and multi-consonant conjuncts (Yuktakshar যেমন: ক্ষ, জ্ঞ, ঙ্ক, ঙ্গ).
When global operating systems initially deployed Indic keyboards, users were frequently frustrated by broken character joining, laggy transliteration dictionaries, and intrusive cloud telemetries capturing sensitive keystroke data.
At Borluit.tech, we set out to build Barna Assamese Keyboard—a native Android Input Method Editor (IME) engineered with three fundamental architectural mandates:
- Zero-Latency Transliteration: Sub-millisecond keystroke-to-glyph resolution.
- Absolute Privacy Sandboxing: 100% offline execution with zero internet permissions.
- Ergonomic Dual Layout: Frictionless toggling between phonetic Romanized typing and standard Inscript layouts.
1. Deterministic Trie Engine for Phonetic Transliteration
Standard Latin-to-Indic transliteration frequently relies on heavy neural models that require either constant network access or massive on-device weights exceeding 80MB. For mobile users in northeastern India—often operating entry-tier hardware with constrained RAM—this approach causes perceptible typing latency and battery drain.
We designed a lightweight Prefix-Compressed Trie Engine implemented in Kotlin and optimized with native C++ bindings for hot lookups.
// Simplified illustration of the transliteration node traversal
class IndicTransliterationTrie {
private val root = TrieNode()
fun insert(phoneticKey: String, unicodeGlyph: String, priority: Int) {
var current = root
for (char in phoneticKey) {
current = current.children.getOrPut(char) { TrieNode() }
}
current.glyph = unicodeGlyph
current.priority = priority
}
fun resolve(buffer: CharSequence): TransliterationResult {
var current = root
var longestMatch = ""
var matchLength = 0
for (i in buffer.indices) {
val char = buffer[i]
current = current.children[char] ?: break
if (current.glyph != null) {
longestMatch = current.glyph!!
matchLength = i + 1
}
}
return TransliterationResult(longestMatch, matchLength)
}
}
Solving Yuktakshar Ligature Ordering
In Assamese Unicode (U+0980 to U+09FF), a conjunct is formed by placing a Virama (্ / U+09CD) between two consonants. For example:
- ক (
U+0995) + ্ (U+09CD) + ষ (U+09B7) = ক্ষ (ksha) - জ (
U+099C) + ্ (U+09CD) + ঞ (U+099E) = জ্ঞ (gya/jnya)
Our engine dynamically detects multi-keystroke combinations in real-time, handling ambiguous phonetic roots and substituting canonical Unicode normalizations (NFC) before delivering the commit string to the active InputConnection.
2. The Keystroke Privacy Sandbox
Keyboards operate with the highest security privileges on mobile devices. An unscrupulous IME can harvest passwords, credit card credentials, and personal chats.
To guarantee unbreakable user confidentiality, Barna Keyboard operates in a hardened offline sandbox:
- Zero Network Permissions in Manifest: The application manifest does not request
android.permission.INTERNETorACCESS_NETWORK_STATE. Android’s kernel physically prevents the process from opening socket connections. - On-Device Dictionary Storage: User dictionary additions and custom vocabulary are stored locally in an encrypted Room SQLite database using SQLCipher.
- No Background Diagnostics: Crash reports and performance metrics are handled via standard Android system vitals through the Play Console, eliminating third-party analytics SDKs.
<!-- Manifest Security Isolation: No Internet Allowed -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sltdassam.rodalikeyboard">
<!-- Only IME and Vibrate service permissions -->
<uses-permission android:name="android.permission.VIBRATE" />
<!-- Explicitly NO INTERNET PERMISSION -->
</manifest>
3. Memory & Render Optimization
To ensure seamless 60fps keyboard drawing across all Android versions (from Android 5.0 Lollipop to Android 15), we eliminated XML view inflation during keypress rendering.
- Hardware-Accelerated Canvas Keyboards: Key layouts are rendered on a single custom
SurfaceView/Canvasrather than nested View hierarchies, keeping layout hierarchy depth to $O(1)$. - Sub-8MB Binary Size: All Unicode tables, phonetic mapping dictionaries, and UI themes are packed into a compressed binary asset format, resulting in an install footprint under 7.5 MB.
- Zero Garbage Collection Stutters: Key event dispatchers reuse pre-allocated object pools, preventing GC pauses during high-speed typing bursts.
Summary & Future Roadmap
By pairing deterministic algorithmic structures with strict privacy architecture, we proved that regional language tools can match the speed and responsiveness of global software while preserving user rights.
Our next iterations focus on:
- Next-word predictive modeling using quantized on-device n-gram Markov chains.
- Expanded phonetic layouts for Tai-Ahom and Dimasa languages.
- Voice typing integration using offline on-device speech recognition models.
Explore Barna Assamese Keyboard on Google Play or inspect our application catalog.
Related Articles & Engineering Logs
Sub-Millisecond Offline Lookups: High-Performance SQLite & Room Architecture on Android
How we structured two-way 50,000+ word dictionary lookups and competitive exam datasets with FTS4 indexing, binary search caches, and zero network calls.
Navigating Google Play Data Safety Audits: A Blueprint for Privacy-First Regional Utilities
How independent Android studios can pass Google Play Console Data Safety reviews, implement GDPR-compliant user deletion portals, and build trustworthy regional apps.