چجوری فارسی و انگلیسی قاطی تایپ کنیم که به هم نریزه؟

وقتی توی یک سایت، پیام‌رسان یا اپلیکیشن متنی فارسی و انگلیسی را با هم می‌نویسیم، ممکن است جای کلمات، پرانتزها، عددها یا علائم نگارشی به هم بریزد:

قبل از اضافه کردن RTL Embedding قبل از مشخص‌کردن جهت متن

دلیلش این است که سیستم باید با «الگوریتم دوجهتهٔ یونیکد» یا Unicode Bidirectional Algorithm تشخیص بدهد هر بخش از متن در چه جهتی نمایش داده شود. ویرایشگرهای کامل معمولاً دکمهٔ راست‌به‌چپ دارند، اما در فیلدهای سادهٔ متنی یا بعضی شبکه‌های اجتماعی چنین گزینه‌ای در دسترس نیست.

راه‌حل سریع برای یک خط فارسی

در بیشتر موارد کافی است کاراکتر نامرئی Right-to-Left Mark با کد U+200F را ابتدای خط بگذارید. این کاراکتر به برنامه می‌گوید جهت پایهٔ خط راست‌به‌چپ است، بدون این‌که ترتیب واقعی حروف را تغییر بدهد.

برای واردکردن RLM باید کد 200F را با روش مناسب سیستم‌عامل‌تان تایپ کنید؛ روش‌ها در ادامه آمده‌اند.

بعد از اضافه کردن RTL Embedding بعد از اضافه‌کردن RLE؛ راه‌حل نسخهٔ اولیهٔ این نوشته

وقتی یک بخش از متن جهت متفاوتی دارد

اگر فقط بخشی از یک متن باید مستقل و راست‌به‌چپ باشد، روش مدرن یونیکد استفاده از این دو کاراکتر است:

  • RLI با کد U+2067 در ابتدای بخش راست‌به‌چپ
  • PDI با کد U+2069 در انتهای آن بخش

یعنی متن به شکل RLI + متن فارسی + PDI ذخیره می‌شود. برای یک بخش انگلیسی داخل محیطی چپ‌به‌راست هم می‌توان از LRI با کد U+2066 و سپس PDI استفاده کرد.

راه‌حل قدیمی‌تر: RLE

راه‌حل نسخهٔ اولیهٔ این نوشته این بود که ابتدای هر خط یک Right-to-Left Embedding یا RLE با کد U+202B بگذاریم. این روش هنوز معتبر است و به‌خصوص برای نرم‌افزارهای قدیمی‌ای که isolateهای جدید را پشتیبانی نمی‌کنند می‌تواند مفید باشد.

برای واردکردن RLE باید کد 202B را با روش مناسب سیستم‌عامل‌تان تایپ کنید؛ روش‌ها کمی پایین‌تر آمده‌اند.

اگر RLE را برای بخشی از یک خط استفاده می‌کنید، محدودهٔ آن را با Pop Directional Formatting یا PDF با کد U+202C ببندید:

RLE + متن فارسی + PDF

برای واردکردن PDF هم به همین روش از کد 202C استفاده کنید.

گذاشتن RLE در ابتدای یک خط و نبستن آن معمولاً تا پایان همان پاراگراف جواب می‌دهد؛ همان روشی که در نسخهٔ قدیمی پیشنهاد شده بود. بااین‌حال، اگر متن بعداً کپی، ترکیب یا داخل متن دیگری قرار داده شود ممکن است جهت بخش‌های بعدی را هم عوض کند. به همین دلیل بهتر است آن را با PDF ببندید.

پس انتخاب‌ها به‌ترتیب این‌ها هستند:

  1. برای تعیین جهت پایهٔ یک خط، RLM معمولاً ساده‌ترین گزینه است.
  2. برای محصورکردن یک بخش در نرم‌افزارهای امروزی، RLI/LRI … PDI پیشنهاد می‌شود.
  3. برای سازگاری با نرم‌افزارهای قدیمی، RLE/LRE … PDF همچنان قابل استفاده است.

استاندارد یونیکد RLE و LRE را حذف نکرده است؛ فقط برای متن‌های جدید isolateها را ترجیح می‌دهد، چون اثرشان به بیرون از محدوده نشت نمی‌کند.

چجوری کاراکتر یونیکد را تایپ کنیم؟

سیستم‌های لینوکسی

در بیشتر برنامه‌های GTK مثل Firefox و ویرایشگرهای GNOME:

  1. Ctrl+Shift+U را بزنید.
  2. کلیدها را رها کنید و کد را بدون U+ تایپ کنید؛ مثلاً 200F برای RLM یا 202B برای RLE.
  3. Enter یا Space را بزنید.

این میانبر در همهٔ برنامه‌های لینوکس، به‌خصوص بعضی برنامه‌های Qt، لزوماً کار نمی‌کند.

مک

ابتدا از تنظیمات Keyboard، ورودی Unicode Hex Input را اضافه و انتخاب کنید. بعد کلید ⌥ Option را نگه دارید، کد چهاررقمی مثل 200F یا 202B را تایپ کنید و کلید را رها کنید.

ویندوز

ویندوز میانبر عمومی و فعالی برای واردکردن کد هگز یونیکد در همهٔ برنامه‌ها ندارد. در Word و بعضی برنامه‌هایی که از Rich Edit پشتیبانی می‌کنند، کد موردنظر مثل 200F یا 202B را تایپ و سپس Alt+X را بزنید. برای برنامه‌های دیگر، کپی‌کردن کاراکتر یا ساختن یک Text Replacement معمولاً ساده‌تر است.

موبایل

اندروید و iOS هم روش یکسان و عمومی برای تایپ این کدها ندارند. اگر زیاد به آن نیاز دارید، کاراکتر را کپی کنید و برایش یک میانبر در تنظیمات جایگزینی متن بسازید.

اگر خودتان سایت یا اپلیکیشن می‌سازید

بهتر است از کاراکترهای نامرئی به‌عنوان راه‌حل اصلی رابط کاربری استفاده نکنید. در HTML جهت را با ویژگی‌های معنایی مشخص کنید:

1
2
3
<p dir="rtl">متن فارسی همراه با English text</p>
<p dir="auto">متنی که جهتش از روی محتوا تشخیص داده می‌شود</p>
<bdi dir="auto">نام کاربر یا محتوای ناشناخته</bdi>

dir="auto" برای محتوای تولیدشده توسط کاربر مفید است و <bdi> اجازه نمی‌دهد جهت یک مقدار ناشناخته روی متن اطرافش اثر بگذارد.

یک نکتهٔ مهم دربارهٔ کاراکترهای نامرئی

این کاراکترها هنگام جست‌وجو، کپی‌کردن، مقایسهٔ متن یا بررسی کد ممکن است دردسرساز شوند. از RLO و LRO برای برعکس‌کردن اجباری ترتیب کاراکترها استفاده نکنید؛ این کنترل‌ها می‌توانند ظاهر متن و کد را گمراه‌کننده کنند. تا جای ممکن از تنظیم جهت در خود ویرایشگر یا از dir در HTML استفاده کنید.

برای جزئیات بیشتر می‌توانید استاندارد Unicode Bidirectional Algorithm و راهنمای W3C دربارهٔ کنترل جهت متن را ببینید.