اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
+2 رای
3.0k بازدید

چرا تعدادی از فونت‌ها برای کشیده مناسب نیستند؟ چه ویژگی این فونت‌ها دارند که فونت‌های دیگر ندارند؟ میشه بدون تغییر فونت از کشیده استفاده کرد؟

3 پاسخ

+3 رای
 
بهترین پاسخ

اگر به کد موجود در فایل kashida-xepersian.def نگاه کنید، کاری که انجام می‌شود این است که برای کشیدگی تعداد خطی (\hrule) با استفاده از دستور \leaders وارد می‌شود تا فضای موجود را پر کند. ارتفاع و عمق این خط‌ها برابر با عمق و ارتفاع کاراکتر U+0640 (یا همان کاراکتر کشیده است) بنابراین بین حروف پارسی، خود کاراکتر کشیده وارد نمی‌شود بلکه \hrule‍ای با ارتفاع و عمق کاراکتر کشیده وارد می‌شود. برای اینکه حروف چسبان خاصتیت چسبان بودن خود را ار دست ندهند بین این حروف (قبل از وارد کردن \hrule) کاراکتر U+200D یا zero-width joiner قرار گرفته می‌شود.

برای اینکه ببینید چه قلمی مناسب است و چه قلمی مناسب نیست (بدون استفاده از گزینه کشیده)، می‌توانید با قلم موجود نحوه خروجی کد زیر را ببینید:

ه\char"200D\char"0640

مشکل روش حاضر کشیده این است که حروف باید در انتهای خود صاف باشند. آیا این بهترین روش موجود است؟ خیر اما متأسفانه تنها راه‌حل است. برای اینکه بتوان راه‌حل بهتری پیاده‌سازی کرد، باید الگوریتم شکستن پاراگراف را تغییر داد که متأسفانه در زی‌تک امکان آن وجود ندارد.

راه‌حل دیگر آن است که به جای قرار دادن خط، کاراکتر کشیده را به اندازه فضای موجود sclae کرد اما متأسفانه این روش با قلم‌هایی که به حالت cursive هستند مشکل خواهد داشت. برای دیدن این موضوع کد نمونه زیر و خروجی آن را ببینید:

\documentclass{article}
\usepackage{graphicx}
\usepackage{trimclip}
\usepackage{xepersian}
\settextfont[ExternalLocation,Scale=3]{amiri-regular}



\newcommand*{\Kashida}[4]{%
  \leavevmode
  #1\char"200D %
  \llap{\clipbox{-1ex 0pt {\width} 0pt}{#2}}%
  \resizebox{#3}{\height}{\clipbox{0pt}{#2}}%
  \rlap{\clipbox{{\width} 0pt -1ex 0pt}{#2}}%
  \char"200D #4%
}

\begin{document}
مــــــــــــــــــــــن

\medskip
\Kashida{م}{ـ}{100pt}{ن}

\Kashida{م}{ـ}{200pt}{ن}

\end{document}

راه‌حل دیگر آن است که به اندازه فضای موجود، کاراکتر کشیده را وارد کرد و اگر فضای اضافه دیگری وجود داشت، کاراکتر کشیده را به اندازه این فضا scale کرد:

\documentclass{article}
\usepackage{graphicx}
\usepackage{trimclip}
\usepackage{xepersian}
\settextfont[ExternalLocation,Scale=3]{amiri-regular}


\makeatletter
\newcommand*{\Kashida}[4]{%
  \leavevmode
  #1\char"200D %
  \ifdim#3>\z@ % 0pt
    \begingroup
      \def\glyphline{#2}%
      \settowidth{\dimen@}{\glyphline}%
      \let\next@glyphline\glyphline
      \@whiledim#3>\dimen@\do{%
        \let\glyphline\next@glyphline
        \expandafter
        \def\expandafter\next@glyphline\expandafter{\glyphline#2}%
        \settowidth{\dimen@}{\next@glyphline}%
      }%
      \llap{\clipbox{-1ex 0pt {\width} 0pt}{\glyphline}}%
      \resizebox{#3}{\height}{\clipbox{0pt}{\glyphline}}%
      \rlap{\clipbox{{\width} 0pt -1ex 0pt}{\glyphline}}%
    \endgroup
  \fi
  \char"200D #4%
}
\makeatother

\begin{document}

مــــــــــــــــــــــن

\Kashida{م}{ـ}{50pt}{ن}

\Kashida{م}{ـ}{100pt}{ن}

\Kashida{م}{ـ}{150pt}{ن}

\Kashida{م}{ـ}{200pt}{ن}

\end{document}

این روش از روش قبلی و روش موجود در زی‌پرشین بهتر است اما همان مشکل روش پیش‌فرض زی‌پرشین را خواهد داشت یعنی هر قلمی که با

ه\char"200D\char"0640

اینجا هم مشکل خواهد داشت.

در آخر برای اینکه ببینید چرا این مشکل، مشکل قلم است و نه کد، کافی است خروجی کد زیر را ببینید:

\documentclass{article}
\usepackage{xepersian}
\settextfont[Scale=30]{XB Yas}
\begin{document}
ه%
\char"200D
\char"0640
\char"200D
م
\end{document}

enter image description here

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

ممنون از شما. مولف قلم‌های hm در سایتشون ادعا کرده بودند که مشکل از کد شماست و قلمهاشون مشکلی ندارند. با پاسخ شما ادعای نادرست ایشان رو شد.
توسط (17 امتیاز)
دوست عزیز، از شخصی که با دروغ، تزویر و حلیه‌‌‌های کثیف روز خود را شب می‌کند، چه انتظاری دارید؟ من در جریان ادعای ایشون نبودم ولی اگر هم بودم برایم فرقی نمی‌کرد چون مثل ایشون بی‌کار نیستم.
توسط (25.0k امتیاز)
چه ربطی داشت؟
توسط (25.0k امتیاز)
وفاجان ایدهٔ بسیار جالبی بکار برده‌اید. :دی
توسط (4.4k امتیاز)
سلام
من این کدهایی را که آقا وفا نوشته اند کپی و چسبانده ام اما خطای فونت می گیرم

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
!
! The font "amiri -regular" cannot be found.
!
! See the fontspec documentation for further information.
!
! For immediate help type H <return>.
!...............................................  
                                                  
l.3 ...ExternalLocation,Scale=3]{amiri -regular}

 
این فونت های amiri -regular را از کجا می تونم دانلود و در تک لایو نصب کنم.
من هم مثل آقا سید جواد برای این کدهایی که آقا وفا نوشته اند به ایشون دست مریزاد میگم و براشون آروزی موفقیت می کنم.
یک سوال: چه کتابها و منابعی را باید مطالعه کنیم تا بتونیم همچین کدهایی بنویسیم؟
ممنون
ویرایش شده توسط
توسط (5 امتیاز)
دوست عزیز لطفا یک بار قوانین سایت رو بخونید.
۱- لطف کنید برای مشکلتان یک سوال جدید طرح کنید. الان این متن شما به عنوان یک جواب برای چرایی مشکل گزینهٔ هست؟
۲- لطف کنید مثال کمینه و فایل log رو پیوست بفرمایید. دیگران هم باید بتونن مثال شما رو اجرا کنند و ببینند آیا به همین مشکل شما بر میخورند یا نه
۳- لطفا در هر پست تنها یک سوال بفرستید.
توسط (424 امتیاز)
خیلی ممنون که جواب دادین.
ببخشین. قوانین و راهنما را خونده بودم اما نه اونقدر دقیق که باید.
مشکلم هم حل شد. یک فاصلهٔ اضافی در اسم فونت بود که در کپی و چسب اضافه شده بود. نمی دونم مشکل از من بوده
یا از سایت پارسی لاتک.
بازهم ممنون و ببخشین
توسط (5 امتیاز)
0 رای

این مشکل در نسخه 20.3 بسته xepersian حل شده است. برای اطلاعات بیشتر این پرسش و پاسخ را ببینید.

0 رای

نحوه حل مشکل در نسخه 20.5 بسته xepersian نسبت به چگونگی حل مشکل در نسخه 20.3 بسته xepersian تفاوت کرده است. برای حل مشکل، اگر حداقل از نسخه 20.5 بسته xepersian استفاده می‌کنید، می‌توانید گزینه KashidaXBFix را به کار ببرید.

\documentclass{article}
\usepackage[Kashida=on,KashidaXBFix=on]{xepersian}
\settextfont[Scale=6]{XB Niloofar}
\begin{document}
من با شما سخن‌ها دارم.
\end{document}

enter image description here

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

7.1k پرسش

6.6k پاسخ

23.5k نظر

7.1k کاربر

محبوب‌ترین برچسب‌ها

رفع خطا جدول xepersian مراجع ریاضی‌نویسی شکل bidi فونت فهرست مطالب شماره‌گذاری منابع پانویس بیب‌تک tikz parsilatex تک‌لایو بیمر اسلاید زی‌پرشین پاورقی bibtex سربرگ نماد رسم شکل فرمول‌نویسی ارجاع‌دهی biditexmaker هدر ویرایشگر قالب beamer واژه‌نامه اندازه فونت texstudio عنوان فصل ماتریس اعمال نشدن تغییرات در پی‌دی‌اف رسم جدول شماره صفحه bidipresentation حاشیه رنگ عنوان شکل اسلاید فارسی محیط قضیه گراف مکان شکل tikzpicture enumerate حروف‌چینی کد شماره فصل tabriz_thesis نمایه align زیرنویس شکل کادر itemize فهرست اشکال الگوریتم عدم اجرا listings نیم‌فاصله متن لاتین و فارسی بسته فاصله بین خطوط قالب پایان‌نامه فرمول نصب تک‌لایو فارسی‌تک hyperref شماره فرمول glossaries کپشن نمودار خروجی لاتک حروف‌چینی چندستونی فونت فارسی و انگلیسی ماکرونویسی biditools شماره پاورقی پیوست‌ سوال امتحانی فاصله‌گذاری فرمول چندضابطه‌ای extrafootnotefeatures subfigure biditufte-book header texmaker pdf خطا tex longtable تصویر شمارنده زیرنویس texlive2015 دیاگرام رسم نمودار شماره‌گذاری صفحات پایان نامه فهرست جداول میک‌تک texlive2016 تنظیم جدول آکولاد شعر kashida بولد تورفتگی texworks caption اندیس اعداد فارسی lollipop iust-thesis multicol فصل‌نویسی سوال چهارگزینه‌ای فاصله عمودی pgfplots xindy چپ‌چینی اوبونتو میکروسافت ورد قاب geometry xelatex texlive fancyhdr وسط‌چینی تک لایو 2015 tcolorbox عنوان بخش شماره گذاری به‌روزرسانی بسته aimc46 صفر توخالی فرمول طولانی بیرون‌زدگی کاما پوستر فاصله سطرها نوشتافت شکست خط tex-programming فونت اعداد قرآن tabriz-thesis
...