PDF میں اردو یا عربی حروف الگ الگ یا الٹے آتے ہیں

مختصر جواب

اردو کے حروف ساتھ والے حرف کے مطابق اپنی شکل بدلتے ہیں اور تحریر دائیں سے بائیں چلتی ہے۔ اگر PDF ٹول تحریر کو بائیں سے دائیں ترتیب دے یا حروف ایک ایک کر کے بنائے تو حروف الگ اور الٹی ترتیب میں آتے ہیں۔ Pandoc میں اردو فونٹ کے ساتھ -V dir=rtl -V lang=ur شامل کریں؛ HTML پر مبنی ٹولز میں dir="rtl" لگائیں اور اردو تحریر پر کبھی letter-spacing نہ لگائیں۔

مسئلہ، دہرایا گیا

Pandoc xelatex کا نتیجہ جس میں عربی حروف الٹے ہیں
Pandoc 3.5 اور xelatex، صرف -V mainfont="Segoe UI" کے ساتھ: الفاظ الٹی ترتیب میں آتے ہیں اور فارسی سطر بکھر جاتی ہے۔
Pandoc lualatex کا نتیجہ جس میں حروف غلط ترتیب میں ہیں
Pandoc 3.5 اور lualatex (ڈیفالٹ رینڈرر): وہی دستاویز، پھر بھی بائیں سے دائیں۔

وجہ

  • سمت (bidi): دائیں سے بائیں کی سیٹنگ کے بغیر سطر بائیں سے دائیں ترتیب پاتی ہے، اس لیے الفاظ اور حروف الٹے نظر آتے ہیں۔
  • حروف کی شکل (shaping): ہر اردو حرف کی الگ، ابتدائی، درمیانی اور آخری شکل ہوتی ہے۔ جو رینڈرر تحریر کو shape نہ کرے (یا حرف ایک ایک کر کے بنائے) وہ صرف الگ شکلیں دکھاتا ہے۔
  • letter-spacing اور html2canvas: Chrome letter-spacing کے ساتھ بھی حروف جوڑے رکھتا ہے، مگر html2canvas (جسے بہت سے «HTML سے PDF» بٹن استعمال کرتے ہیں) پھر حرف حرف بناتا ہے اور حروف بکھر جاتے ہیں (نیچے دیکھیں)۔
Chrome اور html2canvas میں letter-spacing کے ساتھ اور بغیر عربی تحریر
آزمایا گیا: 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=ur
Pandoc xelatex کا درست نتیجہ
وہی دستاویز -V dir=rtl کے ساتھ: حروف جڑے ہوئے، دائیں سے بائیں۔

اردو کے لیے lang=ur اور فارسی کے لیے lang=fa لگائیں۔ نستعلیق کے لیے Noto Nastaliq Urdu یا Jameel Noori Nastaleeq، اور نسخ کے لیے Noto Naskh Arabic استعمال کریں۔

HTML اور Chromium ٹولز میں حل

md-to-pdf کا نتیجہ جس میں عربی پیراگراف بائیں طرف ہے
md-to-pdf 5.2.5: حروف جڑتے ہیں مگر پیراگراف بائیں سے دائیں ترتیب پاتا ہے، اس لیے آخری نقطہ اور انگریزی الفاظ غلط جگہ آتے ہیں۔
  • سمت طے کریں: دائیں سے بائیں پیراگراف کو <div dir="rtl">…</div> میں رکھیں، یا <p dir="auto"> استعمال کریں تاکہ ہر پیراگراف اپنی سمت خود لے۔
  • اپنی CSS میں اصل تحریر سے letter-spacing ہٹا دیں۔
  • سرورز اور Docker امیجز میں اردو فونٹ انسٹال کریں (مثلاً Debian/Ubuntu پر fonts-noto-core اور fonts-noto-extra)۔
<div dir="rtl">

سلام دنیا۔ یہ اردو کی ایک تحریر ہے۔

</div>

MarkPDF میں

اردو، عربی اور فارسی خود بخود پہچانی جاتی ہیں: اردو کے لیے Noto Nastaliq Urdu لوڈ ہوتا ہے، اور ہر پیراگراف، فہرست، اقتباس اور ٹیبل اپنی سمت اپنی تحریر سے لیتا ہے۔ اردو اور انگریزی ملی جلی دستاویزات بغیر کسی اضافی نشان کے کام کرتی ہیں۔

عام سوالات

ایڈیٹر میں تحریر درست کیوں دکھتی ہے مگر PDF میں نہیں؟

ایڈیٹر اور براؤزر اردو کی shaping اور سمت خود سنبھال لیتے ہیں؛ بہت سے PDF ٹولز میں سمت اور زبان الگ سے بتانی پڑتی ہے۔

کیا کوئی خاص فونٹ چاہیے؟

کوئی بھی فونٹ جس میں اردو حروف اور OpenType shaping ٹیبل ہوں: Noto Nastaliq Urdu، Noto Naskh Arabic، Segoe UI اور Tahoma سب میں یہ موجود ہیں۔

اردو تحریر کے اندر نمبر اور انگریزی الفاظ کا کیا ہوتا ہے؟

جب سمت دائیں سے بائیں ہو تو bidi الگورتھم نمبروں اور لاطینی الفاظ کو سطر کے اندر ان کی اپنی بائیں سے دائیں ترتیب میں رکھتا ہے۔