متن دوسویه

از ویکی فارسی اوبونتو
(تغییرمسیر از BiDi)
پرش به: ناوبری، جستجو

متن دوسویه (به انگلیسی: Bidirectional text) به متنی گفته می‌شود که شامل هر دو جهت نگارش باشد، یعنی هم راست‌به‌چپ باشد و هم چپ‌به‌راست. چنین متنی معمولاً دارای گونه‌های مختلف الفبا است.

پشتیبانی از اسکریپت دو جهته، توانایی یک سیستم کامپیوتری برای نمایش صحیح متن دوسویه است. این اصطلاح اغلب به BiDi یا bidi کوتاه می‌شود.

استاندارد یونیکد به طور کامل از متن دوسویه پشتیبانی می‌کند. برای این کار استاندارد کدگذاری یونیکد، تمام نویسه‌ها را به چهار گونه تقسیم می‌کند: «قوی»، «ضعیف»، «خنثی»، «صریح، واضح»


یادداشت: بیشتر این صفحه ترجمه‌ای از صفحهٔ Bidirectional_text است.


نویسه‌های قوی (Strong)

نویسه‌های قوی آن‌هایی هستند که جهت مشخصی دارند. نمونه‌هایی از این نوع نویسه‌ها شامل حروف الفبا، نویسه‌های هجا، ایده نگاری‌های هان، ارقام غیر اروپایی یا غیر عربی و علائم نگارشی مخصوص آن اسکریپت است.

نویسه‌های ضعیف (Weak)

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

اعداد

Unless a directional override is present numbers are always encoded (and entered) big-endian, and the numerals rendered LTR. The weak directionality only applies to the placement of the number in its entirety.

نویسه‌های خنثی (Neutral)

نویسه‌های خنثی آن‌هایی هستند که بدون متن‌نوشته جهت مشخصی ندارند. مثال‌ها شامل جداکننده‌های بند(paragraph)، جهش‌ها(tabs) و اکثر نویسه‌های فضای‌سفید(whitespace) دیگر است. نمادهای نقطه‌گذاری که در بسیاری از اسکریپت‌ها مشترک هستند، مانند کولون، کاما، نقطه تمام و فاصلهٔ نشکن نیز در این دسته قرار می‌گیرند.

قالب‌بندی صریح (Explicit formatting)

نویسه‌های قالب‌بندی صریح، که به آن‌ها "نویسه‌های قالب‌بندی جهت‌دار" نیز گفته می‌شود، دنباله‌های ویژهٔ یونیکد هستند که رفتار جهت پیش‌گزیدهٔ الگوریتم را تغییر می‌دهند. این نویسه‌ها به «علامت»، «جاسازی»، «جداسازی» و «باطل کردن، پایمال کردن» تقسیم می‌شوند. تأثیرات آنها تا زمان وقوع جداکنندهٔ بند(paragraph separator) یا یک نویسهٔ «پاپ(pop)» ادامه می‌یابد.

علامت‌ها (Marks)

اگر یک نویسهٔ «ضعیف» توسط یک نویسهٔ «ضعیف» دیگر دنبال شود، الگوریتم به اوّلین نویسهٔ «قوی» همسایه نگاه می‌کند. گاهی اوقات این منجر به خطاهای نمایش ناخواسته می شود. این خطاها با نویسه‌های «شبه قوی(pseudo-strong)» تصحیح یا جلوگیری می‌شوند. به چنین نویسه‌های کنترل یونیکد «علامت» گفته می‌شود. علامت (U+200E علامت چپ‌به‌راست (LRM) یا U+200F علامت راست‌به‌چپ (RLM)) باید در مکانی قرار داده شود تا یک شخصیت ضعیف محصور جهت نوشتن را به ارث ببرد.

جاسازی‌ها (Embeddings)

نویسه‌های قالب‌بندی جهت «جاسازی» که نویسه‌های «زیرمتن» نیز خوانده می‌شوند، نشان می‌دهد که یک قطعه از متن باید به عنوان جهت متمایز تلقی شود. متن در میان نویسه‌های قالب‌بندی جاسازی، مستقل از متن اطراف نیست. همچنین، نویسه‌های درون قالب جاسازی‌شده می‌توانند بر ترتیب نویسه‌های خارج تأثیر بگذارند. یونیکد 6.3 تشخیص داد که جاسازی جهت معمولاً تأثیر بسیار زیادی بر محیط اطراف خود دارد و بنابراین استفاده از آنها بی دلیل دشوار است.

نویسه‌های قالب‌بندی جهت «جاسازی» روش قدیمی یونیکد برای قالب‌بندی صریح هستند و از یونیکد 6.3 به نفع «جداسازی» کنار کشیدند.

جداسازی‌ها (Isolates)

نویسه‌های قالب‌بندی جهت «جداسازی» که نویسه‌های «ایزوله» نیز خوانده می‌شوند، نشان می‌دهند که یک قطعه از متن باید به صورت جهت‌دار از محیط اطراف خود جدا باشد. از یونیکد 6.3، این‌ها نویسه‌های قالب‌بندی هستند که در اسناد جدید تشویق می‌شوند - البته هنگامی که بن‌سازه‌های هدف از آنها پشتیبانی کنند. این نویسه‌های قالب‌بندی پس از آشکار شدن اینکه نویسه‌های جاسازی جهت‌دار معمولاً تأثیر بیش از حد زیادی بر محیط اطراف خود دارند و بنابراین استفاده از آنها بی دلیل دشوار است، معرفی شدند. بر خلاف نویسه‌های قالب‌بندی جهت‌دار «جاسازی»، نویسه‌های «جداسازی» هیچ تأثیری بر ترتیب‌بندی متن خارج از محدوده خود ندارند. جداسازی‌ها می‌توانند تو در تو باشند و ممکن است در «جاسازی(Embedding)» و «پایمال(Override)» قرار گیرند.

پایمال کردن (Overrides)

نویسه‌های قالب‌بندی جهت‌دار «پایمال» که «باطل» یا «نادیده گرفتن» نیز خوانده می‌شوند، برای باطل کردن جهت پیش‌گزیدهٔ نویسه‌های درون خود و بازنویسی آن استفاده می‌شود. این گونه قالب‌بندی فقط برای موارد خاصی استفاده می‌شود. (به عنوان مثال مجبور کردن نوشتن متنی از مخلوط انگلیسی، ارقام و حروف عبری از راست به چپ) توصیه می‌شود تا جایی که ممکن است از آن‌ها اجتناب شود. به همانطور که در موارد دیگر قالب‌بندی‌های جهت‌دار صادق است، «پایمال» را نیز می‌توان در داخل یکدیگر و در «جاسازی» و «جداسازی» قرار داد.

پاپ‌ها (Pops)

نویسه‌های قالب‌بندی جهت‌دار «پاپ» دامنهٔ جدیدترین «جاسازی، زیرمتن»، «پایمال» یا «جداسازی» را خاتمه می‌دهند.

ران‌ها (Runs)

در الگوریتم، هر دنباله‌ای از نویسه‌های قوی متصل به هم «ران» نامیده می‌شود. یک نویسهٔ «ضعیف» که بین دو نویسهٔ «قوی» با جهت یکسان قرار دارد، جهت گیری آن‌ها را به ارث می‌برد. یک نویسهٔ «ضعیف» که بین دو نویسهٔ «قوی» با جهت نوشتن متفاوت قرار دارد، جهت نوشتن زمینهٔ اصلی را به ارث می‌برد (در یک سند چپ‌به‌راست ، جهت چپ‌به‌راست، و در یک سند راست‌به‌چپ، جهت راست‌به‌چپ می‌شود).

نوشتن نویسه‌های کنترل جهت در صفحه‌کلید فارسی

اکثر نویسه‌های کنترل جهت برای متن‌های دوسویه به صورت پیش‌گزیده در صفحه‌کلید فارسی استاندارد وجود دارند، و می‌توان با استفاده از دگرساز راست آن‌ها را وارد کرد.

البته نویسه‌های ایزوله به صورت پیش‌گزیده در صفحه‌کلید فارسی وجود ندارند، اما می‌توان با استفاده از کلیدهای ترکیبی Ctrl + Shift + U در زبان اینگیلیسی و وارد کردن معادل یونیکد آنها، این نویسه‌ها را وارد کرد. کافیست پس از فشردن کلید‌های ترکیبی Ctrl + Shift + U در زبان اینگیلیسی، معادل یونیکد نویسه را وارد و کلید Enter(ورود) یا Space(فاصله) را فشار دهید.

حالت با دگرساز راست
نام توضیحات نویسه کلید
LRM علامت چپ‌به‌راست (U+200E)

Alt+(

RLM علامت راست‌به‌چپ (U+200F)

Alt+)

LRE زیرمتن چپ‌به‌راست (U+202A)

Alt+{

RLE زیرمتن راست‌به‌چپ (U+202B)

Alt+}

PDF پایان قالب‌بندی (U+202C)

Alt+P

LRO اکیداً چپ‌به‌راست (U+202D)

Alt+O

RLO اکیداً راست‌به‌چپ (U+202E)

Alt+I

LRI ایزوله چپ‌به‌راست (U+2066)

Ctrl+Shift+U 2066

RLI ایزوله راست‌به‌چپ (U+2067)

Ctrl+Shift+U 2067

FSI ایزوله اولین نویسهٔ قوی (U+2068)

Ctrl+Shift+U 2068

PDI پایان ایزوله (U+2069)

Ctrl+Shift+U 2069

جدول نویسه‌های دوسویهٔ ممکن

گونه توضیحات قدرت جهت‌گیری نویسه‌های کنترل دوجهته دامنهٔ عمومی
L جهت چپ به راست قوی چپ‌به‌راست U+200E LEFT-TO-RIGHT MARK (LRM)
R جهت راست به چپ قوی راست‌به‌چپ U+200F RIGHT-TO-LEFT MARK (RLM)
AL حروف عربی قوی راست‌به‌چپ U+061C ARABIC LETTER MARK (ALM)
EN اعداد اروپایی ضعیف
ES جداکننده‌های اروپایی ضعیف
ET پایان‌دهندهٔ اعداد اروپایی ضعیف
AN اعداد عربی ضعیف
CS جداکنندهٔ اعداد معمولی ضعیف
NSM علامت بدون فضا ضعیف
BN مرز خنثی ضعیف
B جداکنندهٔ بند خنثی
S جداکنندهٔ بخش خنثی
WS فضای سفید خنثی
ON دیگر نویسه‌های خنثی خنثی
LRE جاسازی یا زیرمتن چپ به راست صریح چپ‌به‌راست U+202A LEFT-TO-RIGHT EMBEDDING (LRE) فقط نویسهٔ LRE
LRO باطل کردن یا اکیداً چپ به راست صریح چپ‌به‌راست U+202D LEFT-TO-RIGHT OVERRIDE (LRO) فقط نویسهٔ LRO
RLE جاسازی یا زیرمتن راست به چپ صریح راست‌به‌چپ U+202B RIGHT-TO-LEFT EMBEDDING (RLE) فقط نویسهٔ RLE
RLO باطل کردن یا اکیداً راست به چپ صریح راست‌به‌چپ U+202E RIGHT-TO-LEFT OVERRIDE (RLO) فقط نویسهٔ RLO
PDF پایان قالب جهت‌گیری(هم زیرمتن هم اکیداً) صریح U+202C POP DIRECTIONAL FORMATTING (PDF) فقط نویسهٔ PDF
LRI جداساز چپ به راست صریح چپ‌به‌راست U+2066 LEFT-TO-RIGHT ISOLATE (LRI) فقط نویسهٔ LRI
RLI جداساز راست به چپ صریح راست‌به‌چپ U+2067 RIGHT-TO-LEFT ISOLATE (RLI) فقط نویسهٔ RLI
FSI جداساز اوّلین نویسهٔ قوی صریح U+2068 FIRST STRONG ISOLATE (FSI) فقط نویسهٔ FSI
PDI پایان جداسازی صریح U+2069 POP DIRECTIONAL ISOLATE (PDI) فقط نویسهٔ PDI