حروف فارسی یا عربی در PDF جدا از هم یا برعکس درمیآیند
پاسخ کوتاه
حروف فارسی بسته به حرف کناری شکلشان عوض میشود و متن از راست به چپ نوشته میشود. اگر ابزار ساخت PDF متن را چپبهراست بچیند یا حروف را تکتک بکشد، حروف جدا و با ترتیب برعکس میبینید. در Pandoc گزینههای -V dir=rtl -V lang=fa را همراه یک فونت دارای حروف فارسی اضافه کنید؛ در ابزارهای مبتنی بر HTML مقدار dir="rtl" را بگذارید و هرگز letter-spacing را روی متن فارسی اعمال نکنید.
مشکل، بازتولیدشده

-V mainfont="Segoe UI": کلمهها برعکس درمیآیند و سطر فارسی بههمریخته است.
علت
- جهت متن (bidi): بدون تنظیم راستبهچپ، سطر از چپ به راست چیده میشود و کلمهها و حروف برعکس دیده میشوند.
- شکلدهی حروف: هر حرف فارسی شکل جدا، آغازی، میانی و پایانی دارد. رندرکنندهای که متن را شکلدهی نکند (یا حروف را تکتک بکشد) فقط شکل جدای حروف را نشان میدهد.
- letter-spacing همراه html2canvas: Chrome حتی با letter-spacing حروف را به هم میچسباند، اما html2canvas (که بسیاری از دکمههای «HTML به PDF» از آن استفاده میکنند) در این حالت حروف را تکتک میکشد و از هم جدا میشوند (پایین را ببینید).

letter-spacing: 0.05em در Chrome اتصالها را نگه میدارد، اما در html2canvas 1.4.1 آنها را میشکند.یک سند نمونه راستبهچپ را باز کنید
باز کردن نمونهراهحل در Pandoc (آزموده)
pandoc input.md -o output.pdf \
--pdf-engine=xelatex \
-V mainfont="Segoe UI" \
-V dir=rtl -V lang=fa
-V dir=rtl: حروف چسبیده و راستبهچپ.برای فارسی lang=fa و برای اردو lang=ur بگذارید. هر فونتی که حروف عربینویس دارد کار میکند؛ در لینوکس Noto Sans Arabic یا Vazirmatn.
راهحل در ابزارهای HTML و Chromium

- جهت را تعیین کنید: پاراگرافهای راستبهچپ را در
<div dir="rtl">…</div>بگذارید، یا از<p dir="auto">استفاده کنید تا هر پاراگراف جهت خودش را بگیرد. letter-spacingرا از CSS متن اصلی حذف کنید.- روی سرورها و ایمیجهای Docker فونت فارسی نصب کنید (مثلاً
fonts-noto-coreدر Debian/Ubuntu).
<div dir="rtl">
سلام دنیا. این یک متن فارسی است.
</div>در MarkPDF
فارسی، عربی و اردو خودکار تشخیص داده میشوند: فونت Noto مناسب بارگذاری میشود و هر پاراگراف، فهرست، نقلقول و جدول جهت خود را از متن خودش میگیرد. سندهای ترکیبی فارسی و انگلیسی بدون هیچ نشانهگذاری اضافه درست کار میکنند.
پرسشهای متداول
چرا متن در ویرایشگر درست است اما در PDF نه؟
ویرایشگرها و مرورگرها شکلدهی و جهت فارسی را خودکار انجام میدهند؛ بسیاری از ابزارهای ساخت PDF نیاز دارند جهت و زبان صریحاً تنظیم شود.
آیا فونت خاصی لازم است؟
هر فونتی که حروف عربینویس و جدولهای شکلدهی OpenType داشته باشد: Noto Sans Arabic، Vazirmatn، Segoe UI و Tahoma همه اینها را دارند.
عددها و کلمههای انگلیسی داخل متن فارسی چه میشوند؟
وقتی جهت راستبهچپ تنظیم شده باشد، الگوریتم دوجهتی عددها و کلمههای لاتین را با ترتیب چپبهراست خودشان در سطر نگه میدارد.