متأسفانه نه تنها پاسخ کاربر A-Mahdavi گمراهکننده است بلکه کاملاً اشتباه است.
این یک مشکل بسیار قدیمی در زیپرشین است و به فونت هم مربوط نمیشود.
مشکلی وجود ندارد که بخواهد بسیار قدیمی باشد مگر آنکه شما قصد و نیت خراب کردن اعتبار زیپرشین را داشته باشید.. این مشکل ربطی به زیپرشین ندارد و در واقع اصلاً مشکلی وجود ندارد. آنچه که هست یک رفتار ناخواسته اما منطقی است که در پائین توضیح داده خواهد شد. به قلم مربوط نمیشود اما به خاصیت الفبای زبان پارسی ارتباط پیدا میکند. توحیحات بیشتر در پائیین.
و با کد زیر در کانتکست ... دارای خروجی زیر است که در آن فاصله بین خطوط موزون میباشد
مقایسه کانتکست و زیپرشین بیمعنی است زیرا که نخستین از موتور زیتک استفاده میکند و . دومی از موتور لواتک. گذشته از این لواتک دیگر تک شمرده نمیشود زیرا که دارای مشکلات بسیاری است که دیگر منطبق با تک نیست و رفتاری که از تک انتظار میرود را نمیتوان از لواتک انتظار داشت.
گذشته از این خروجی کانتکست دقیقاً دارای همین مشکل است. پیشنهاد میکنم دوباره به خروجی کانتکست خود نگاه کنید و اگر واقعاً نمیتوانید فاصله غیر موزون و درهم سطرها را ببینید، به یک چشمپزشک مراجعه کنید!
جدای همه اینها پاسخ شما بیهوده است زیرا که نه پرسش را پاسخ میدهد و نه کمکی میکند. پرسش این است:
چرا این اتفاق میافتد؟ آیا فونتها مشکل دارند؟
اثبات ادعای دروغین کاربر A-Mahdavi
کاربر A-Mahdavi ادعا میکند که کانتکست (توسط dabeer) فاصله خط کرسی را بصورت خودکار انتخاب میکند. اما این یک دروغ بیش نیست. این کار بصورت کاملاً دستی انجام میشود. برای دیدن آن کافی است سطرهای ۵۶ و ۵۷ را در فایل p-dabeer.mkiv
نگاه کنید. محتوای دو سطر ذکر شده این است:
%D Persian fonts usually have incorrect heights. We fix this issue here.
\setupinterlinespace[line=3.2ex] % default is 2.8ex
که به وضوح نشان میدهد که فاصله حط کرسی بصورت کاملاً دستی انتخاب میشود.
قبل از پرسش به دو پاسخ، نظر زیر از کاربر وحید دامنافشان:
این موضوع رو مدتها پیش منم کشف کردم
چیزی وجود نداشته که کشف شود. متأسفانه شما که ادعای نوشتن چندین کلاس هم دارید حتی یک بار زحمت خواندن کتاب تک را به خود ندادهاید. ای کاش به خاطر کشف کردن وقت خود را صرف کمی مطالعه میکردید!
متأسفانه اکثر کاربران موجود نه دانشی از تک دارند و پاسخهای اشتباه و گمراهکننده میدهند حال آنکه خود حتی نمیدانند در مورد چه چیزی صحبت میکنند!
پاسخ پرسش دوم سادهتر است.
آیا فونتها مشکل دارند؟
تصور نمیکنم مشکل از قلم باشد. بله مشکل از خاصیت الفبای پارسی است. بگذاریددر متن نمونه شما چند مورد را نگاه کنیم:
- در سطر دوم «ر» وجود دارد که عمق منفی دارد و در سطر سوم درست در پائین «ر» حرف «گ» وجود دارد که ارتفاع مثبت زیادی دارد.
- سطر پنجم «ی» که عمق منفی دارد و درست در زیر آن در سطر ششم حرف «ا» که ارتفاع مثبتی دارد.
چرا این اتفاق میافتد؟
در تک سه پارامتر \baselineskip
، \lineskiplimit
و \lineskip
برای تنظیم فاصله بین سطرها وجود دارد. تک بصورت عمومی ازپارامتر \baselineskip
برای اینکه فاصله یکسانی بین سطرها وجود داشته باشد استفاده میکند. اما زمانی که نویسههایی وجود دارند که عمق و ارتفاعی دارند که ممکن است باعث شوند دو سطر بالایی و پائینی با هم تداخل داشته باشند (مانند دو نمونه ذکر شده در بالا) پارامتر \lineskiplimit
تعیین میکند که این سطرها چقدر میتوانند به هم نزدیک شوند. اگر این حالت پیش بیاد (زمانی که نویسههایی وجود دارند که عمق و ارتفاعی دارند که ممکن است باعث شوند دو سطر بالایی و پائینی با هم تداخل داشته باشند) تک دیگر از پارامتر \baselineskip
استفاده نمیکنه و به جای اون از پارامتر \lineskip
برای تعیین فاصله بین دو سطر مربوط استفاده میکند.
راهحل این است که مقدار پارامتر \baselineskip
(در لاتک میتوان آن را با استفاده از دستور \baselinestretch
و یا \linespread
تغییر داد) را به اندازهای بزرگ تعیین کرد تا احتمال تداخل سطرهای مربوط پیش نیاید.
برای اطلاعات بیشتر کتاب تک نوشته Knuth را بخوانید.