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

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

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

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

+2 رای
2,118 بازدید

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

سوال شده خرداد 28, 1395 توسط سحر توکلی (17 امتیاز)

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

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

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

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! 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 را از کجا می تونم دانلود و در تک لایو نصب کنم.
من هم مثل آقا سید جواد برای این کدهایی که آقا وفا نوشته اند به ایشون دست مریزاد میگم و براشون آروزی موفقیت می کنم.
یک سوال: چه کتابها و منابعی را باید مطالعه کنیم تا بتونیم همچین کدهایی بنویسیم؟
ممنون
دوست عزیز لطفا یک بار قوانین سایت رو بخونید.
۱- لطف کنید برای مشکلتان یک سوال جدید طرح کنید. الان این متن شما به عنوان یک جواب برای چرایی مشکل گزینهٔ هست؟
۲- لطف کنید مثال کمینه و فایل log رو پیوست بفرمایید. دیگران هم باید بتونن مثال شما رو اجرا کنند و ببینند آیا به همین مشکل شما بر میخورند یا نه
۳- لطفا در هر پست تنها یک سوال بفرستید.
خیلی ممنون که جواب دادین.
ببخشین. قوانین و راهنما را خونده بودم اما نه اونقدر دقیق که باید.
مشکلم هم حل شد. یک فاصلهٔ اضافی در اسم فونت بود که در کپی و چسب اضافه شده بود. نمی دونم مشکل از من بوده
یا از سایت پارسی لاتک.
بازهم ممنون و ببخشین
0 رای

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

پاسخ داده شده دی 13, 1396 توسط وفا (24,432 امتیاز)
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

پاسخ داده شده دی 14, 1396 توسط وفا (24,432 امتیاز)
...