Skip to content
alirezapkgPublic

About

A lightweight, zero-dependency Persian text reshaper and RTL layout helper for Rust GUI frameworks (like egui).

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fa-shaper

راهنمای فارسی

A simple, lightweight Rust crate for Persian text shaping and RTL layout handling.

Designed primarily for GUI frameworks (like egui) that lack native support for Right-to-Left (RTL) text ordering and Persian character joining.

⚠️ Font Requirement: Make sure to load a font that supports Persian characters (e.g., Vazirmatn) in your UI framework; otherwise, shaped text will not render correctly.

Installation

Run in your terminal:

cargo add fa-shaper

Or add it directly to Cargo.toml:

[dependencies]
fa-shaper = "0.1.0"

Usage

Bring everything into scope using use fa_shaper::*; to gain access to functions and extension methods.

1. Reshaping and Joining Characters

use fa_shaper::*;

fn main() {
    // Using the function directly
    let text1 = reshape("درود 123");

    // Or using the extension method
    let text2 = "درود بر شما".reshape_fa();
}

2. Digit Conversion (Persian / English)

use fa_shaper::*;

fn main() {
    // Convert ASCII digits to Persian digits
    let fa_num = "کد: 1234".to_fa_digits(); // کد: ۱۲۳۴

    // Convert Persian/Arabic digits to ASCII digits (useful for parsing)
    let en_num = "۱۲۳۴".to_en_digits(); // "1234"
    let parsed: i32 = "۱۲۳۴".to_en_digits().parse().unwrap();
}

شکل‌دهنده فارسی (fa-shaper)

ابزاری ساده و سبک برای پردازش متون فارسی و اصلاح RTL در Rust.

این ابزار برای محیط‌های گرافیکی (مانند egui) که از چیدمان راست‌به‌چپ (RTL) و اتصال حروف پشتیبانی نمی‌کنند، طراحی شده است.

⚠️ نکته درباره فونت: برای نمایش درست حروف پس از پردازش، حتماً باید یک فونت فارسی (مانند Vazirmatn) در فریم‌ورک خود بارگذاری کرده باشید.

نصب

در ترمینال:

cargo add fa-shaper

یا افزودن به Cargo.toml:

[dependencies]
fa-shaper = "0.1.0"

نحوه استفاده

با اضافه کردن use fa_shaper::*; به توابع و Extension متدها دسترسی خواهید داشت.

۱. اصلاح و چسباندن حروف (Reshape)

use fa_shaper::*;

fn main() {
    // استفاده از تابع
    let text1 = reshape("درود 123");

    // یا استفاده به صورت Extension متد
    let text2 = "درود بر شما".reshape_fa();
}

۲. تبدیل اعداد (فارسی / انگلیسی)

use fa_shaper::*;

fn main() {
    // تبدیل اعداد انگلیسی به فارسی
    let fa_num = "کد: 1234".to_fa_digits(); // کد: ۱۲۳۴

    // تبدیل اعداد فارسی/عربی به انگلیسی (مثلاً برای پارس کردن به عدد)
    let en_num = "۱۲۳۴".to_en_digits(); // "1234"
    let parsed: i32 = "۱۲۳۴".to_en_digits().parse().unwrap();
}

About

A lightweight, zero-dependency Persian text reshaper and RTL layout helper for Rust GUI frameworks (like egui).

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages