راست-به-چپ نویسی برای همیشه!

آیا درج کاراکترهای LTRM و RTLM برای نوشتن هر متنی در دو جهت (راست به چپ و چپ به راست) کافی است؟

– خیر! برای یادگیری دو کاراکتر جدید یونیکد آماده هستین؟
این دو کاراکتر را مدیون دوست خوبمون آقای «سجاد احمدی» هستیم که مسئله‌ی «زیرنویس‌ها» را مطرح کرد:

خب یک سوال.
برای زیرنویس فیلم‌ها که به فرمت معمول ‏srt هستن، معمولا کل خط چپ به راست در نظر گرفته میشه.
اگه واژه انگلیسی میان جمله بیاد نوشته به هم می‌ریزه مثلا:
اینجا KLKB است.ما به کمک احتیاج داریم
ولی اونچه که موقع پخش نشان داده میشه اینه:
است.ما به کمک احتیاج داریم ‏KLKB اینجا
در واقع تمام واژه های فارسی بعد از واژه انگلیسی اول میاد بعد واژه انگلیسی میاد و بعد واژه های فارسی قبل از انگلیسی.این به تعداد واژه های انگلیسی داخل جمله تعمیم هم پیدا می کنه.
چه راه حلی برای این مشکل پیشنهاد می‌کنی؟

در متون زیرنویس متن به صورت پیش‌فرض چپ به راست در نظر گرفته می‌شود و همین باعث بروز این مشکل است؛ راه حل این مشکل در دو کاراکتر LRE و RLE نهفته است:

اول اینکه این متون می‌بایست با انکدینگ unicode ذخیره شوند، در غیر اینصورت تلاشتان بی‌فایده خواهد بود. در مرحله‌ی بعد، می‌بایست پیش از شروع جمله کاراکتر Right-to-Left Embedding درج شود و سپس شروع به نوشتن جمله‌ نمایید. این روش در اکثر پخش کننده‌های ویدیویی بدون اشکال نمایش داده می‌شود.

right-to-left subtitle shows correctly with unicode encoding and rle character in the beginning
right-to-left subtitle

سوال: چطور کاراکتر Right-to-Left Embedding  و Left-to-Right Embedding را درج کنیم؟

 کاراکتر در صفحه کلید استاندارد فارسی  در صفحه کلید ویندوز
 Left-to-Right Embedding ‪ alt + [  ؟؟
 Right-to-Left Embedding ‪ alt + ]  ؟؟

*‌ توجه دارین که این کلید‌ها در صفحه کلید فارسی استاندارد (لینوکس) عمل خواهند کرد.
** منظور از alt کلید alt سمت راست صفحه کلید است. (درود بر شاهین آزاد به خاطر تذکر این مطلب)
*** متاسفانه هنوز کلید‌های معادل این کاراکترها را در صفحه‌ کلید ویندوز پیدا نکرده‌ام.

این کاراکترها چند جای دیگر هم به کار می‌آیند:

  • در فروم‌ها یا کادرهای متنی‌ای که امکان راست به چپ نویسی در آن‌ها وجود ندارد (مثل فروم kmplayer)
  • در کلاینت‌های twitter و Identica یا کلاینت‌های IRC و…

فراموش نکنید با تمرین و تجربه نحوه‌ی درج این کاراکترها را یاد بگیرید تا قدرت فارسی نویسی‌مان را باز هم بهبود داده باشیم.

کاربر ویندوز! نرم افزار صفحه کلید استاندارد فارسی حاصل تلاش احسان اخگری منتظر دانلود شماست 😉

Thanks for passing by: ↓



34 دیدگاه برای “راست-به-چپ نویسی برای همیشه!”

  1. توضیحاتی برای سایر سیستم عامل‌ها:
    http://hajloo.wordpress.com/2009/03/02/persian-text-problem-in-ltr-forms/

    [پاسخ]

    ali پاسخ در تاريخ مرداد ۳ام, ۱۳۹۰ ۹:۴۶ ق.ظ:

    سعید جان، ضمن تشکر از شما؛ این لینک حاوی «توضیحاتی برای سایر سیستم عامل‌ها» نیست! صرفا موضوع رو با گرایش تئوری توضیح داده و بحث یونیکد و کاراکترهایی که در این امر دخیل هستند رو معرفی کرده و در انتها یک نرم افزار جهت درج کارکترها معرفی کرده.
    در مورد کاراکتر LRM و RLM هم نوشتن این کاراکترها پیش از شروع عبارت انگلیسی همه جا کارگر نیست، من در پست «چند کاراکتر برای بهبود فارسی نویسی در ویندوز و لینوکس» به این موضوع پرداختم.
    در مورد کارکترهای LRO و RLO هم به دلیل اینکه می‌تونن از نظر امنیتی مسئله‌ساز بشن چیزی ننوشتم، البته این دو کاراکتر به دید من خیلی افراطی رفتار می‌کنن و مشکلی رو از کاربر فارسی‌زبان حل نمی‌کنن.
    به هر شکل، متشکر از لینکی که گذاشتین.

    [پاسخ]

  2. ممنون علی جان خیلی عالی
    فقط من یه مشکلی دارم من از فدورا LXED استفاده میکنم یخورده قاطی داره مثلا برای درج کوتیشن به جای SHIFT+”‎ باید ALT+SHIFT+”‎ رو بزنم حالا به جای ALT+(‎ باید چی بزنم

    [پاسخ]

    ali پاسخ در تاريخ مرداد ۶ام, ۱۳۹۰ ۲:۱۱ ق.ظ:

    فدات بشم علی جان، لطف دارین. راستش من از اون توزیع استفاده نکردم، نمی‌دونم. می‌تونین از همین مثال فایل زیرنویس رو بسازین و با کلید‌های مختلف تستش کنین.
    البته به دو نکته دقت کنین: ۱. صفحه کلید حتما در حالت تایپ فارسی باشد. و ۲. فایل به حالت یونیکد ذخیره شده باشد.(البته حالت پیش‌فرض یونیکد است)
    توجه کنین که alt + ]‎ رو باید در ابتدای جمله وارد کنین.

    [پاسخ]

  3. با سلام و تشکر از مطلب خوبتون :

    برای ویندوز من فعلا دو روش رو استفاده میکنم که در آخرین پست وبلاگ در موردش توضیح دادم و مربوط به مواقعی میشه که کاربر امکان نصب کیبورد استاندارد رو به هر دلیلی نداره

    موفق باشید

    [پاسخ]

    ali پاسخ در تاريخ مرداد ۱۴ام, ۱۳۹۰ ۴:۰۰ ب.ظ:

    سلام محمد جان؛
    کامننت خوبی بود. استفاده از notepad ایده‌ی خوبیه. ولی اون یکی روش بازم نیاز به نصب نرم افزار داره.
    من توی همون منوی راست کلیک نوت پد هم گزینه‌ای رو دیدم که این کاراکترها رو باشکلکی نمایش می‌داد. این احتمال گیج شدن کاربر رو کمتر می‌کنه.

    [پاسخ]

  4. جالب بود دستت درد نکنه.
    من خیلی گشتم ولی شورتکات اون رو در ویندوز پیدا نکردم، فکر نمیکنم باشه! شاید تنها راه استفاده از همون right click و insert… در notepad ویندوز۷ باشه. تیک show… هم که زده بشه بهتر دیده میشه. (http://www.microsoft.com/middleeast/msdn/control.aspx) این کارکتر قابل حمله و میشه ازش کپی گرفت و در برنامه های دیگه پست کرد. برای سایر ویندوزها هم شاید بشه از map chars ویندوز کمک گرفت. البته همه اینها برای موقعیه که نخواهید از کیبرد استاندارد در ویندوز استفاده کنید.
    درمورد pidgin که الان من تست کردم، ظاهراً در نسخه های جدید تر، خودش با زدن اولین کارکتر فارسی، اون کارکتر کنترلی رو اضافه میکنه و نوشته ها راست به چپ میشن. اتفاقی که درمورد تکست باکس جستجوی گوگل هم رخ میده.

    [پاسخ]

    ali پاسخ در تاريخ مرداد ۱۶ام, ۱۳۹۰ ۱۰:۳۸ ب.ظ:

    مرسی نبی جان. لینک فوق العاده جالبی بود، فکر نمی‌کردم مایکروسافت به این موضوع پرداخته باشه. احسنت.

    [پاسخ]

  5. آقا بیا اصلا در مورد این کیبورد فارسی یک متن بنویس. مثلا کاربرد “زیرمتن اکیدا راست به چپ” با “زیر متن چپ به راست” چه فرقی می‌کنه؟
    “نشانه‌ی راست به چپ” چیه اصلا؟ فاصله نشکن چیه؟
    ‪http://fa.wikipedia.org/wiki/صفحه‌کلید

    [پاسخ]

    ali پاسخ در تاريخ شهریور ۲۲ام, ۱۳۹۰ ۱۰:۴۲ ب.ظ:

    سعید من اینجا یه چیزی نوشتم قبلا، ببین چطوره:
    http://weblog.aqlinux.ir/?p=111

    [پاسخ]

  6. یه زیرنویس فارسی رو بدون استفاده از alt + ] و alt + [ و با یونیکد arabic windows 1256 در Totem امتحان کردن مشکلی نداشت. ولی باز هم با VLC مشکل داشت، حروف ناشناخته بود.

    [پاسخ]

    ali پاسخ در تاريخ شهریور ۲۳ام, ۱۳۹۰ ۹:۴۲ ب.ظ:

    در بخش تنظیمات مربوط به زیرنویس دقت کنین که انکدینگ unicode انتخاب شده باشه. اگه با این وجود مشکل ادامه داشت، بررسی کنین که کاراکتر انتهای خط توی فایل زیرنویس با پلت فرمی که دارین ازش استفاده می‌کنین همخوانی داشته باشه. در سیستم عامل ویندوز دو کاراکتر new line و carriage return در انتهای هر خط درج می‌شه ولی در لینوکس فقط new line درج می‌شه. وایشگرهای متنی معتبر (مثل gedit در لینوکس) امکان تبدیل فایل‌های متنی به پلتفرم‌های مختلف رو فراهم می‌کنند. اگه با همه این موارد مشکل ادامه داشت، این موضوع رو به عنوان یک باگ گزارش کنین. ممنون.

    [پاسخ]

    بنده خدا پاسخ در تاريخ شهریور ۲۴ام, ۱۳۹۰ ۱۲:۰۷ ق.ظ:

    بذارید ببینیم مشکل این مربع آخر خط چیه بعد مورد بعدی.
    وقتی Alt+] رو اول خط میزنم و متن فارسی رو تایپ میکنم، در VLC یدونه مربع خالی آخر جمله اضافه میشه. در Smplayer و Totem مشکلی ندارم. VLC رو با یونیکد Arabic Windows 1256 و unicode utf8 امتحان کردم که بی نتیجه بود و اون مربع رو داشت.
    نظرتون راجع به این چیه؟ چرا مربع در آخر خط نشون میده؟! به این مورد بر نخوردین؟

    [پاسخ]

    بنده خدا پاسخ در تاريخ شهریور ۲۴ام, ۱۳۹۰ ۱۱:۲۸ ق.ظ:

    البته VLC 1.1.3 که در Debian Squeeze هستش، این مشکل مربع خالی وجود داره. نسخه های بالاتر که من ۱٫۱٫۱۱ رو امتحان کردم، این مشکل رو نداشت.

    [پاسخ]

    ali پاسخ در تاريخ شهریور ۲۴ام, ۱۳۹۰ ۱۱:۳۹ ق.ظ:

    من هم از vlc نسخه ۱.۱.۷ استفاده می‌کنم و به چنین مشکلی برنخوردم. این می‌تونه یه باگ بوده باشه. 🙂

    بنده خدا پاسخ در تاريخ مهر ۴ام, ۱۳۹۰ ۶:۲۶ ب.ظ:

    vlc 1.1.7 رو روی دبیان اسکوییز نصب کردم اما تصویر نداشتم و پاکش کردم. الان همون ۱٫۱٫۳ رو دارم.
    یه سوال بی ربط شاید: رفع این باگ به عهده ی تیم دبیان هستش؟ البته اگه باگ باشه.

    ali پاسخ در تاريخ مهر ۶ام, ۱۳۹۰ ۱۲:۱۹ ق.ظ:

    والله بنده خدا اپن سورس حساب کتابی نداره! ولی من باشم می‌گم دبیان باید روش کار کنه. 🙂

  7. زیرنویس های str رو بعد از تغییرات مثل فارسی کردن، با چه یونیکدی ذخیری کنیم به مشکل بر نمیخوریم. مثلا مطمئن باشیم رو همه سیستم عامل ها پخش میشه.

    [پاسخ]

    ali پاسخ در تاريخ شهریور ۲۴ام, ۱۳۹۰ ۱۱:۴۵ ق.ظ:

    ببینین فایل‌های زیرنویس متن ساده هستن. این بیشتر به اجرا کننده‌ی فایل برمی‌گرده که چطور با اون‌ها تعامل کنه و چطور نمایششون بده. در مورد نحوه‌ی ذخیره کردن هم من تا به حال توی لینوکس با پلیرهای vlc،‏ totem و mplayer با زیرنویس‌های ذخیره شده برای ویندوز مشکلی نداشتم ولی مکینتاش رو نمی‌دونم. پیشنهاد من اینه که فرمت ذخیره سازی رو برای ویندوز انتخاب کنین. در مورد انکدینگ هم طبیعتا مواردی که در این پست (و پست‌های قبلی) مطرح شده باید یونیکد انتخاب بشه.

    [پاسخ]

  8. با کمک RLE و LRE میشه به دنباله‌ای از کارکترها جهتی خاص داد و به اصطلاح جهت‌ها رو nest کرد. البته باید پایان محدوده کارکترها رو با Pop Directional Formatting مشخص کرد. حالا سوال این‌جاست: چجوری این کارکتر PDF رو میشه با کیبورد تایپ کرد؟

    [پاسخ]

    ali پاسخ در تاريخ شهریور ۱۷ام, ۱۳۹۱ ۵:۴۷ ب.ظ:

    از نظر تکنیکی حق با شماست ساسان جان، منتها من بدون درج کاراکتر PDF هم می‌تونم جهت‌ها رو نست کنم.
    مثلا این متن رو در نظر بگیر
    http://pastebin.ubuntu.com/1190873/
    اگه این متن رو با این لینک به کاراکترهای یونیکد تبدیل کنیم می‌بینیم که در ابتدای متن کد ‎%u202B درج شده که همان RLE می‌باشد. همچنین در خط سوم پیش از so%20that کاراکتر ‎%u202A آمده است که کاراکتر LRE می‌باشد.
    خلاصه اینکه بدون نیاز به درج PDF هم می‌توان از این دو کاراکتر بهره جست.
    پانوشت: اگر سناریویی داشته باشید که در آن ملزم به درج PDF باشید خوشحال می‌شوم با آن آشنا شوم. 😉
    موفق باشید

    [پاسخ]

  9. با سلام و خسته نباشید

    هنگام تایپ فارسی و انگلیسی در اکسل ۲۰۱۳ مشکل دارم به این صورت که زمانی که از یک کلمه فارسی تایپ میشود بعد انگلیسی بعد اگر دوباره فارسی شود و کلمه اول بجای حرف فارسی عدد تایپ شود عدد تایپ شده جلوی حرف انگلیسی قرار میگیرد مانند:

    کلید (آن انگلیسی) ۲ پل
    که در اکسل به این صورت نوشته میشود
    کلید ۲ on پل

    ممنون میشم اگر بتونین راهنمایی کنین

    با تشکر

    [پاسخ]

    ali پاسخ در تاريخ دی ۱۸ام, ۱۳۹۳ ۱۱:۴۵ ق.ظ:

    سلام آقا رضا؛
    معذرت از اینکه دیر جواب می‌دم. امیدوارم جواب سوالتون رو تا الان گرفته باشین. ولی اگه همچنان با این قضیه دست و پنجه نرم می‌کنین:
    ۱- نسخه ویندوزی که باهاش مشکل دارین رو ذکر بفرمایید.
    ۲- یک نمونه فایل که این مشکل رو داشته باشه یه جا آپلود کنین لینکش رو بذارین که بشه بهتر مسئله رو درک کرد.
    در هر صورت پیشنهاد من استفاده از صفحه کلیدهای فارسی استاندارد برای ویندوز و استفاده از مقالات موجود در همین وبلاگ هستن.

    [پاسخ]

  10. ووواااااااااقققققققققققققققععععععععععععععاااااااااااااااااااا ممنون صد جا گشتم هیچ جا نبود ولی رفتم توش بعد از خیلی ذفعه درست شده بود
    کارتون از راه دور کار سازبود
    بازم ممنون

    [پاسخ]

    ali پاسخ در تاريخ دی ۱۸ام, ۱۳۹۳ ۱۱:۳۸ ق.ظ:

    خواهش می‌کنم. امیدوارم اشتباهی نشده باشه.

    [پاسخ]

  11. به نظر میرسه درمورد پرانتز رفتار خوبی نشون نمیده.
    مثلاً این:
    (از IDE های لینوکسی)
    به این شکل ظاهر میشه:
    )از IDE های لینوکسی(
    البته در ادیتورها مشکلی نیست ولی توی زیرنویس مشکل ظهور میکنه!

    [پاسخ]

    ali پاسخ در تاريخ خرداد ۱۱ام, ۱۳۹۶ ۱۰:۱۷ ق.ظ:

    نبی جان، کاراکترهای LTRM و RTLM رو امتحان کنین. در این پست توضیح دادم.

    [پاسخ]

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *