همانطور که میدانیم مقدار پیشفرض \baselineskip
در لاتک (که برای متون لاتین طراحی شده است) مناسب متون پارسی (به خاطر شکل حروف نیست) و معمولاً ما مقدار \baselineskip
را دستی تغییر میدهیم. بنابراین وجود یک الگوریتم مناسب که بتوان مقدار \baselineskip
مناسب را برای متون پارسی، محاسبه کرد ضروری است.
ایدهای که به ذهن من میآید این است که ابتدا از قلم لاتین استفاده کنیم، تمام حروف لاتین را داخل یک کادر قرار دهیم و عمق و ارتفاغ کادر را حساب کنیم. سپس مقدار عمق کادر و ارتفاع کادر را جمع کنیم و آن را از مقدار \baselineskip
کم کنیم و حاصل را x
بنامیم.
سپس همین کار را با یک قلم پارسی و با حروف پارسی (و اعراب) انجام دهیم و حاصل را y
بنامیم.
بصورت حتم هیچگاه x<y
نخواهد بود. پس دو حالت باقی میماند:
- اگر
x=y
بود، هیچ کاری انجام نده.
- اگر
x>y
بود، مقدار جدید \baselineskip
را به \baselineskip (previous)+(x-y)
تغییر بده.
آیا الگوریتم بهتری وجود دارد؟
بروزرسانی: برای اینکه سوالات احتمالی دیگران رو پاسخ بدهم و همچنین خروجی الگوریتم بالا رو ببینید، الگوریتم بالا رو پیاده کردم:
\documentclass[a4paper,12pt]{article}
\usepackage{ptext}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
\newdimen\origbaselineskip
\setlength{\origbaselineskip}{\baselineskip}
\newsavebox\baselineskipboxi
\setbox\baselineskipboxi\hbox{%
Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
q w e r t y u i o p a s d f g h j k l z x c v b n m
}
\newdimen\latinwhitespace
\setlength{\latinwhitespace}{\dimexpr\origbaselineskip-\dp\baselineskipboxi-\ht\baselineskipboxi\relax}
\newsavebox\baselineskipboxii
\setbox\baselineskipboxii\hbox{%
چ ج ح خ ه ع غ ف ق ث ص ض ش س ی ب ل ا ت ن م ک گ و پ د ذ ر ز ط ظ ژ ّ َ ِ ُ ً ً ً ٍ ٌ ْ
}
\newdimen\persianwhitespace
\setlength{\persianwhitespace}{\dimexpr\origbaselineskip-\dp\baselineskipboxii-\ht\baselineskipboxii\relax}
\newcommand*{\AutoPersianBaseLineSkip}{%
\ifdim\latinwhitespace>\persianwhitespace
\setlength{\baselineskip}{\dimexpr\origbaselineskip+\latinwhitespace-\persianwhitespace\relax}
\fi}
\newcommand*{\DefaultLatinBaseLineSkip}{\setlength{\baselineskip}{\origbaselineskip}}
\AutoPersianBaseLineSkip
\ptext[1]
\end{document}
میتونید از هر قلمی که دوست داشتید استفاده کنید، اما از قلمهای متفاوت استفاده کنید مثلاً قلمهای Arial یا Times New Roman و .. رو هم امتحان کنید. در هر صورت میبینید که فاصله خط کرسی، فاصله مناسبی است.