متن فارسی ممکن است در ویرایشگر درست دیده شود اما در پلیر، سهنقطه و علامت تعجب جابهجا شوند. علت، تفاوت ترتیب منطقی متن با ترتیب نمایش الگوریتم دوجهته یونیکد است.
نشانه RTL چه کاری انجام میدهد؟
کاراکترهای جهتدهی مثل RLE یا RLM به renderer میگویند متن اصلی راستبهچپ است. اضافهکردن کورکورانه چند mark میتواند نتیجه را بدتر کند؛ ابتدا markهای قدیمی باید یکدست و سپس فقط mark لازم اضافه شود.
تگهای ASS مانند {\i1} یا {\pos} باید پیش از متن باقی بمانند. نشانه جهت نباید داخل override block قرار بگیرد یا drawingهای برداری را بهعنوان فارسی پردازش کند.
سهنقطه و علائم انتهایی
در فایل خام، جای علامت باید بر اساس ترتیب منطقی جمله تنظیم شود. برای نمونه وقتی سهنقطه از نظر بصری ابتدای جمله فارسی است، ذخیره درست آن با چیزی که در یک ویرایشگر چپبهراست دیده میشود متفاوت است.
normalizer باید نقطه معمولی، ellipsis واقعی، سؤال فارسی و انگلیسی و ترکیب آنها با علامت تعجب را جداگانه تشخیص دهد تا جمله ساده بدون دلیل معکوس نشود.
ترکیب فارسی و انگلیسی
نام لاتین، عدد، URL و تگ karaoke یک run چپبهراست داخل جمله فارسی میسازند. تست خروجی باید هم در Aegisub و هم در renderer مبتنی بر libass انجام شود، چون نمایش مرورگر الزاماً با پلیر یکسان نیست.
مراحل انجام کار
- 1
فایل فارسی را بارگذاری کنید
SRT یا ASS را با encoding صحیح وارد ابزار RTL Fix کنید.
- 2
ساختار ASS را محافظت کنید
استایل، drawing و override tagها باید خارج از normalization متن بمانند.
- 3
علائم را یکدست کنید
markهای قدیمی پاک و علائم سهنقطه، سؤال و تعجب در ترتیب منطقی درست قرار میگیرند.
- 4
در پلیر تست کنید
چند خط دارای عدد، انگلیسی و punctuation را در پلیر نهایی بررسی کنید.
پرسشهای متداول
چرا سهنقطه به انتهای اشتباه میرود؟
چون ترتیب ذخیره کاراکترها با ترتیب بصری متن دوجهته یکسان نیست و باید قبل از افزودن RTL mark نرمال شود.
آیا RTL Fix زمانبندی را تغییر میدهد؟
خیر؛ این مرحله فقط متن و نشانههای جهت را اصلاح میکند و نباید زمانها یا alignment را تغییر دهد.
آیا ASS و SRT هر دو پشتیبانی میشوند؟
بله، ولی در ASS تگها، drawingها و فیلدهای رویداد باید جدا از متن پردازش شوند.
