Lipi Lekhika โ Rust
A high-performance transliteration library for Indian Brahmic scripts
๐ Website โข ๐ Documentation โข ๐ฆ Crates.io โข ๐ Changelog
โจ Features
- ๐ Bidirectional Transliteration โ Convert between 15+ Indian Brahmic scripts
- โก High Performance โ Zero-overhead abstractions and optimized algorithms
- ๐ก๏ธ Type Safe โ Leverages Rust's type system for safety and correctness
- ๐ฏ Customizable Options โ Fine-tune transliteration and typing behaviour
- โจ๏ธ Typing Mode โ Stateful context for real-time character-by-character input
- ๐ฆ Embedded Script Data โ All script data bundled at compile time
๐ฅ Installation
๐ Quick Start
Basic Transliteration
use transliterate;
With Custom Options
use transliterate;
use HashMap;
๐ API
Core Functions
transliterate
Transliterates text from one script to another.
Parameters:
textโ Text to transliteratefromโ Source script/language name (e.g., "Normal", "Devanagari", "Telugu")toโ Target script/language nametrans_optionsโ Optional custom transliteration options
Returns: Result<String, String> โ Transliterated text or error message
get_all_option
Gets all available custom options for a script pair.
Parameters:
from_script_nameโ Source script/language nameto_script_nameโ Target script/language name
Returns: Result<Vec<String>, String> โ List of option keys or error message
get_script_typing_data_map
Gets typing data mappings for a script (for building custom input methods).
Parameters:
scriptโ Script/language name
Returns: Result<ScriptTypingDataMap, String> โ Typing data or error message
Typing Module
For character-by-character real-time input:
use ;
Types
-
TypingContextโ Stateful context for typing modenew(typing_lang: &str, options: Option<TypingContextOptions>)โ Create new contexttake_key_input(&mut self, key: &str)โ Process single character inputclear_context(&mut self)โ Clear internal state
-
TypingContextOptionsโ Configuration for typing behaviorauto_context_clear_time_ms: u64โ Auto-clear timeout (default: 4500ms)use_native_numerals: boolโ Use script-native numerals (default: true)include_inherent_vowel: boolโ Include inherent vowel/schwa (default: false)
-
TypingDiffโ Result of processing a key inputto_delete_chars_count: usizeโ Characters to delete from current statediff_add_text: Stringโ Text to insert
-
ScriptTypingDataMapโ Typing data for a script (fromget_script_typing_data_map)common_krama_map: Vec<TypingDataMapItem>โ Common character mappingsscript_specific_krama_map: Vec<TypingDataMapItem>โ Script-specific mappings
-
ListTypeโ Character type enum:Anya,Vyanjana,Matra,Svara -
TypingDataMapItemโ Type alias for(String, ListType, Vec<String>)
๐ฏ Supported Scripts
Devanagari, Bengali, Tamil, Telugu, Kannada, Malayalam, Gujarati, Odia, Gurmukhi, Sinhala, Tamil-Extended, Myanmar, Tibetan, Limbu, and more.
๐ Full list: lipilekhika.in/reference/supported_scripts
๐ง Custom Options
See the full list of custom transliteration options:
๐ lipilekhika.in/reference/custom_trans_options
๐ Resources
- Website โ Documentation and guides
- Supported Scripts โ Full list of scripts
- Custom Options โ Transliteration options reference
- GitHub Repository โ Source code and issues
๐ License
MIT License โ See LICENSE for details