Skip to content

About

A browser extension for intelligently formatting mixed Persian/Arabic RTL and English LTR text across the web.

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

🎨 RTL Atelier | دستیار هوشمند تایپوگرافی و راست‌چین‌سازی وب

RTL Atelier Logo

موتور هوشمند، محلی و فوق‌سریع اصلاح متون دوزبانه (فارسی و انگلیسی) در وب مدرن و چت‌بات‌های هوش مصنوعی

License: MIT Manifest V3 Zero Dependencies Tests Passed English Documentation

[ English Documentation | مستندات انگلیسی ]


📖 فهرست مطالب

  1. چرا RTL Atelier؟ (بیان مسئله و تمایز کلیدی)
  2. حالت‌های سه‌گانه چیدمان و جهت متن
  3. قابلیت‌های شاخص و نوآوری‌های نسخه جدید
  4. قلم‌های توکار و پشتیبانی از قلم دلخواه
  5. اصلاح هوشمند خط، نیم‌فاصله و نشانه‌گذاری
  6. راهنمای گام‌به‌گام نصب و راه‌اندازی
  7. کلیدهای میانبر
  8. معماری فنی و امنیت ۱۰۰٪ محلی
  9. راهنمای توسعه‌دهندگان و آزمون‌ها
  10. مجوز و مشارکت

🔍 چرا RTL Atelier؟ (بیان مسئله و تمایز کلیدی)

در وب امروز، به‌ویژه هنگام تعامل با پلتفرم‌های مدرن هوش مصنوعی نظیر ChatGPT، Claude، DeepSeek، Gemini، Qwen، Grok و Perplexity، ترکیب زبان‌های راست‌به‌چپ (فارسی و عربی) با زبان‌های چپ‌به‌راست (انگلیسی، کدها و شناسه‌ها) با مشکلات جدی مواجه است:

  • 💥 جابجایی کلمات و نسخه‌ها: ترکیب کلمات انگلیسی و اعداد (مانند GPT-4 یا Python 3.12) در متن فارسی معکوس شده و به صورت 4-GPT نمایش می‌یابد.
  • 🌀 تخریب چیدمان سایت‌ها (Layout Breakdown): افزونه‌های ساده با اعمال مستقیم و سراسری جهت راست‌به‌چپ، ساختار فلکس‌باکس و گرید صفحات را جابجا می‌کنند و منوها و داشبوردها به هم می‌ریزند.
  • 🔒 مسدودسازی قلم توسط سیاست‌های امنیتی (CSP Block): سرویس‌های حساسی مانند کلاد به دلیل قوانین امنیتی سخت‌گیرانه، اجازهٔ بارگذاری فایل‌های فونت را از طریق لینک‌های وب یا استایل‌شیت‌های معمولی نمی‌دهند.
  • 🕳️ پدیدار نشدن تغییرات در چت‌های قدیمی و اسکرول مجازی: هنگام تعویض گفتگوها در برنامه‌های تک‌صفحه‌ای یا اسکرول کردن پیام‌های گذشته، تغییرات متن اعمال نمی‌شوند و نیاز به رفرش مداوم ایجاد می‌شود.

RTL Atelier پاسخی مهندسی‌شده و قطعی به تمام این چالش‌هاست: یک موتور دوجهتهٔ مستقل و بلادرنگ در مرورگر که هر پاراگراف را به صورت مجزا تحلیل نموده، اصطلاحات فنی را ایزوله می‌کند، قلم‌های زیبای فارسی را بدون تداخل اعمال می‌نماید و در عین حال ساختار لایوت سایت و بلوک‌های کد را کاملاً حفظ می‌کند.

[نمایش پیش‌فرض و به‌هم‌ریخته مرورگرها]
نادرست:  است . GPT-4 مدل جدیدترین این (نرم افزار)
نادرست:  مي روم و مي گويم .

[نمایش استاندارد با RTL Atelier]
درست:   این جدیدترین مدل GPT-4 است. (نرم‌افزار)
درست:   می‌روم و می‌گویم.

🧭 حالت‌های سه‌گانه چیدمان و جهت متن

RTL Atelier دارای سه حالت جهت‌دهی دقیق برای سناریوهای مختلف مطالعه و وب‌گردی است:

حالت چیدمان عملکرد دقیق و رفتار مهندسی‌شده سناریوی کاربردی
Auto (هوشمند) سازماندهی هوشمند متن بدون دستکاری لایوت: تنها پاراگراف‌ها، لیست‌ها و متون فارسی راست‌چین می‌شوند. ساختار کلی صفحه، ستون‌های وب‌سایت، المان‌های فلکس و گرید کاملاً دست‌نخورده باقی می‌مانند. وب‌گردی روزمره، مطالعه مقالات، کار با فرم‌ها و داشبوردهای اداری
RTL (راست‌چین سراسری) بهینه‌سازی کامل ساختار برای زبان فارسی: کل بدنه، جداول، سایدبارها و منوها راست‌چین می‌شوند، دقیقاً مثل اینکه سایت از ابتدا برای زبان فارسی طراحی شده باشد. بلوک‌های کد و فرمول‌های ریاضی محافظت می‌شوند. چت‌بات‌های خارجی و سایت‌های مطالعهٔ متنی که نیاز به چیدمان بومی دارند
LTR (چپ‌چین سراسری) چیدمان استاندارد انگلیسی به همراه قلم دلخواه: جهت صفحه کاملاً چپ‌به‌راست تنظیم شده و فونت انتخابی کاربر روی متون اعمال می‌شود؛ بدون تغییر در ارقام و ساختار لاتین. مطالعه مستندات فنی و مقالات انگلیسی با فونت سفارشی

[!TIP] بازگشت‌پذیری ۱۰۰٪: با بازگشت از حالت‌های RTL یا LTR به حالت Auto، کلیهٔ صفات و استایل‌های تغییر یافته دقیقاً به وضعیت اولیه سایت بازمی‌گردند.


⚡ قابلیت‌های شاخص و نوآوری‌های نسخه جدید

۱. مرکز پیشرفته عیب‌یابی و پایش زنده صفحه (Diagnostics & Troubleshooting Center)

یک محیط مانیتورینگ بلادرنگ درون پاپ‌آپ افزونه که اطلاعات کاملی از وضعیت صفحه در اختیارتان می‌گذارد:

  • نشانگر زنده سلامت (Health Indicator): پایش وضعیت موتور در نوار عنوان پاپ‌آپ با رنگ‌های سبز، زرد و قرمز.
  • شبکه تله‌متری ۲×۲ (Live Telemetry Grid):
    • پاراگراف‌های شناسایی‌شده: تعداد دقیق بلوک‌های متنی صفحه و درصد پوشش متن فارسی.
    • حالت جهت متن: نمایش وضعیت فعال (Auto ،RTL یا LTR).
    • محیط‌های چت شناسایی‌شده: تشخیص هوشمند کانتینرهای پیام در پلتفرم‌های هوش مصنوعی.
    • صف پردازش زمان‌بند: بررسی لحظه‌ای عمق صف و اطمینان از عملکرد بدون وقفه.
  • بررسی وضعیت قلم و امنیت (Font & CSP Security Verification): اعتبارسنجی زندهٔ بارگذاری قلم در حافظه از طریق document.fonts.check().
  • توصیه‌های هوشمند رفع اختلال: ارائهٔ راهکارهای پویا در صورت تأخیر در رندرینگ سایت‌ها.
  • دکمه «اسکن عمیق و رفع فوری مشکل» (Run Deep Scan & Quick Fix): بازنشانی سریع و اسکن لحظه‌ای المان‌های صفحه بدون نیاز به بارگذاری مجدد (Reload).
  • دکمه «کپی گزارش کامل» (Copy Full Technical Report): تهیه گزارش ساختاریافته در قالب مارک‌داون برای ارسال یا بررسی فنی.

۲. بارگذاری فونت ۱۰۰٪ مصون از محدودیت‌های امنیتی (CSP-Immune Font Loader)

پلتفرم‌هایی نظیر Claude.ai دارای هدرهای امنیتی سخت‌گیرانه‌ای هستند که فونت‌های تزریق‌شده از طریق فایل‌های وب را مسدود می‌کنند:

  • در RTL Atelier، بایت‌های باینری قلم از طریق پردازش پس‌زمینه با دسترسی ممتاز خوانده شده و مستقیماً به حافظه اسکریپت صفحه منتقل می‌شوند.
  • فونت با استفاده از new FontFace(family, arrayBuffer) و متد document.fonts.add() در لحظه فعال می‌شود. این روش هیچ درخواست شبکه‌ای ارسال نکرده و به طور ۱۰۰٪ از قوانین CSP عبور می‌کند.

۳. زمان‌بند ۶۰ فریم بر ثانیه و هماهنگ با ری‌اکت (60fps Frame-Budget Scheduler)

  • بهینه‌سازی زمان‌بندی پردازش متن با بودجهٔ ۱۶ میلی‌ثانیه‌ای در هر فریم نمایش.
  • استفاده از requestAnimationFrame همراه با ترن‌های سریع setTimeout(0) مانع از گرسنگی حلقه رندر ری‌اکت ۱۸ (React 18 Concurrent Starvation) در چت‌های سنگین می‌شود.

۴. ناوبری بی‌نقص در چت‌های قبلی و پلتفرم‌های تک‌صفحه‌ای (SPA Navigation & Hydration Sweeps)

  • پاکسازی خودکار کش گره‌ها هنگام جابجایی بین گفتگوهای گذشته.
  • اجرای امواج چندمرحله‌ای جاروب هیدراسیون در زمان‌های ۸۰، ۲۰۰، ۵۰۰، ۱۲۰۰ و ۲۵۰۰ میلی‌ثانیه برای اعمال فونت و راست‌چین‌سازی بدون وقفه.

🔤 قلم‌های توکار و پشتیبانی از قلم دلخواه

RTL Atelier با ۷ خانواده قلم فارسی با وزن‌های گوناگون عرضه می‌شود:

  • 💎 وزیر (Vazir): قلم پیش‌فرض مدرن و فوق‌العاده خوانا در ۵ وزن (Thin, Light, Regular, Medium, Bold)
  • 🍃 شبنم (Shabnam): قلم چشم‌نواز و نرم در ۵ وزن
  • 🌊 ساحل (Sahel): قلم شیک با خوانایی عالی در ۳ وزن (Regular, Bold, Black)
  • ☀️ صمیم (Samim): قلم مینیمال و تمیز در ۲ وزن
  • 🕊️ پرستو (Parastoo): قلم رسمی و متوازن در ۲ وزن
  • 🌾 گندم (Gandom): قلم سنتی با هندسهٔ دقیق
  • 🌸 تنها (Tanha): قلم مناسب تیترها و عناوین

قابلیت بارگذاری قلم دلخواه با کشیدن و رها کردن (Drag & Drop):

کافیست فایل فونت دلخواه خود را با پسوندهای .woff2، .woff، .ttf یا .otf داخل پنجره پاپ‌آپ رها کنید تا درجا به فهرست قلم‌ها اضافه شده و روی صفحات وب اعمال گردد.


✍️ اصلاح هوشمند خط، نیم‌فاصله و نشانه‌گذاری

  • 🔄 یکسان‌سازی حروف: تبدیل خودکار «ي» و «ك» عربی به «ی» و «ک» فارسی و حذف کشیدگی‌های غیرضروری (تطویل).
  • ✂️ تنظیم هوشمند نیم‌فاصله (ZWNJ): درج نیم‌فاصله استاندارد در پیشوندهای «می‌/نمی‌» و پسوندهای جمع و تفضیلی («‌ها/‌های/ترین»).
  • 📐 تنظیم فواصل علائم نگارشی: اصلاح چسبیدگی و فاصلهٔ استاندارد در ویرگول، نقطه، دونقطه، پرانتزها و علامت سؤال.
  • 🔢 تبدیل هوشمند ارقام: امکان تبدیل ارقام به فارسی با حفظ هوشمندانهٔ عبارات فنی، کدها، کلاس‌های CSS و آدرس‌های IP.

🚀 راهنمای گام‌به‌گام نصب و راه‌اندازی

نصب آسان در مرورگرهای مبتنی بر کروم (Chrome, Edge, Brave, Opera):

برای اجرای نسخهٔ توسعه، ابتدا build را بسازید؛ چون پوشهٔ dist/ فایل تولیدی است و عمداً در Git ذخیره نمی‌شود.

۱. مخزن را کلون کنید و build تولیدی را بسازید:

git clone https://github.com/<YOUR_USERNAME>/rtl-atelier.git
cd rtl-atelier
npm run build

۲. مرورگر خود را باز کرده و به بخش مدیریت افزونه‌ها بروید:

chrome://extensions

۳. گزینهٔ Developer mode را روشن کنید.

۴. روی Load unpacked کلیک کرده و پوشهٔ ریشهٔ پروژهٔ Smart-RTL را انتخاب کنید.

۵. پس از هر تغییر در کد، برای بازسازی فایل‌های تولیدی دوباره npm run build را اجرا کنید و افزونه را در صفحهٔ Extensions با Reload بازخوانی کنید.


⌨️ کلیدهای میانبر

کلید میانبر عملکرد
Alt + Shift + R فعال یا غیرفعال کردن افزونه روی وب‌سایت جاری
Alt + Shift + T روشن یا خاموش کردن کلید اصلی افزونه در سراسر مرورگر

(امکان سفارشی‌سازی کلیدها در آدرس chrome://extensions/shortcuts فراهم است)


🏗️ معماری فنی و امنیت ۱۰۰٪ محلی

flowchart TD
    subgraph Browser ["محیط امن داخل مرورگر کاربر"]
        Page["صفحه وب (DOM)"]
        CS["Content Script Bundle"]
        SW["Service Worker (MV3 پس‌زمینه)"]
        Popup["پاپ‌آپ رابط کاربری (UI)"]
    end

    Page -->|رویدادهای جهش DOM| CS
    CS -->|تحلیل متن و تفکیک جهات| Engine["موتور RtlEngine"]
    Engine -->|ایزولاسیون عبارات لاتین| Flow["Smart BiDi Flow"]
    Engine -->|ثبت تاریخچه تغییرات| Patch["PatchStore"]
    Engine -->|تزریق قلم در حافظه| FF["FontFace API"]

    Popup <-->|ارتباط سریع IPC| SW
    CS <-->|همگام‌سازی تنظیمات| SW
    SW <-->|ذخیره‌سازی ایمن| Storage["chrome.storage.local"]
Loading
  • 🛡️ حفظ کامل حریم خصوصی (Zero Telemetry): هیچ داده‌ای از متون یا تاریخچهٔ مرور شما به هیچ سروری ارسال نمی‌شود؛ تمام پردازش‌ها ۱۰۰٪ داخل حافظه مرورگر شما انجام می‌پذیرد.
  • ⚡ بدون هیچ‌گونه وابستگی خارجی (Zero Dependencies): تمام هسته پروژه بدون استفاده از فریم‌ورک‌های سنگین و تنها با استانداردهای بومی وب توسعه داده شده است.
  • 🧩 سازگاری کامل با Manifest V3: بر اساس جدیدترین رهنمودهای امنیتی وب و پلتفرم افزونه‌های گوگل.

🧪 راهنمای توسعه‌دهندگان و آزمون‌ها

پروژه دارای ۲۱۷ آزمون خودکار برای تضمین پایداری در انواع سناریوها، آزمون‌های مرزی و پلتفرم‌های چت است:

# اجرای مجموعه کامل آزمون‌ها
npm test

# بازتولید فایل‌های قلم و مانیفست‌ها
npm run fonts

# بیلد و باندل کدهای اسکریپت
npm run bundle

# ساخت بسته انتشار zip افزونه
npm run package

# اعتبارسنجی کامل چرخه انتشار (Tests + Icons + Fonts + Bundles + Package + Smoke)
npm run verify

📄 مجوز و مشارکت

این پروژه به عنوان یک نرم‌افزار آزاد تحت مجوز معتبر MIT License منتشر شده است. از نظرات، گزارش مشکلات و مشارکت‌های سازندهٔ شما به گرمی استقبال می‌کنیم.

About

A browser extension for intelligently formatting mixed Persian/Arabic RTL and English LTR text across the web.

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages