متن دوسویه

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

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

بسیاری از برنامه‌های رایانه‌ای نمی‌توانند متن دوسویه را به درستی نمایش دهند. برای نمونه، نام سارا در عبری (שרה) از راست به چپ به صورت شین (ש) رِش (ר) هه (ה) هجی می‌شود اما برخی مرورگرهای وب ممکن است این متن عبری را برعکس نمایش دهند.

پشتیبانی یونیکد 
پشتیبانی از متن دوسویه به توانایی یک برنامهٔ رایانه‌ای در نمایش درست متن دوسویه گفته می‌شود.

رایانه‌های نخستین تنها برای پشتیبانی از یک نوع خط طراحی شده بودند که معمولاً چپ‌به‌راست و تنها بر مبنای الفبای لاتین بود. افزودن کدبندی‌های نویسهٔ تازه، موجب شد برخی از خط‌های چپ‌به‌راست دیگر نیز پشتیبانی شوند، اما از نوشتارهای راست‌به‌چپ مانند فارسی یا عبری به این سادگی پشتیبانی نمی‌شد و ترکیب اینگونه نوشتارها عملی نبود. نوشتارهای راست‌به‌چپ نخستین بار در کدبندی‌هایی مانند ایزو/آی‌ئی‌سی ۸۸۵۹-۶ و ایزو/آی‌ئی‌سی ۸۸۵۹-۸ معرفی شدند که حروف را معمولاً به همان ترتیب خواندن و نوشتن ذخیره می‌کردند.

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

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

برای نمونه، برای نمایش صحیح  در کنار یک نمانامِ انگلیسی (چپ‌به‌راست) در یک متن عربی (راست‌به‌چپ)، اگر از پس نماد نشان تجاری یک نویسهٔ چپ‌به‌راست نیامده‌باشد، یک نشانهٔ LRM را پس از نماد می‌گذارند. اگر LRM افزوده نشود، نویسهٔ ضعیف  در همسایگی یک نویسهٔ قوی چب‌به‌راست و یک نویسهٔ قوی راست‌به‌چپ جای خواهد گرفت؛ از آنجایی که در یک متن چپ‌به‌راست هستیم، این نویسه هم راست‌به‌چپ تصور می‌شود و به صورت نادرستی نمایش می‌یابد.

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

بوستروفیدن، هیروگلیف مصری و حروف چینی از این گونه‌اند.

نگارخانه

جستارهای وابسته 
 جهانی‌سازی و بومی‌سازی
 سامانه نوشتاری (بخش جهت)

منابع 
 

کدبندی نویسه
الگوریتم‌های یونی‌کد
بین‌المللی‌سازی و محلی‌سازی