تالار گفتگوی پارسیلاتک
لاتک LATEX => قلمها و حروف => نويسنده: سروش در اوت 10, 2010, 12:07:35 am
-
سلام.
این اولین پست منه. ببخشید اگه بیربطه ... جای دیگهای پیدا نکردم مطرح کنم. ???
من الان دارم روی پروژهی IAFD کار میکنم. هدف این پروژه ایجاد همافزایی بین متدهای پردازش تصویر و تکنولوژی OpenType هست. برای این کار من فونت XB Niloofar رو برای آزمایش انتخاب کردم. خروجیهایی که از اسکریپتها میگیریم، فعلاً محدود به otf ,aat , ttf هست. ولی میخوام سازگاری کامل با سیستمهای مبتنی بر تک رو هم اضافه کنم.
چند وقت پیش متوجه شدم نسخههای قدیمی FarsiTeX و خود XePersian از تکنولوژی OpenType به طور کامل پشتیبانی نمیکنن. مثلاً من خودم وقتی با kashida کامپایل میکنم فونتهای سری X به هم میخورن.
سؤال من اینه که:
۱- LaTeX دقیقاً از کدوم قسمتهای OpenType پشتیبانی میکنه و از کدوم قسمتها پشتیبانی نمیکنه؟ این پشتیبانی به چه شکلی انجام میشه و چه خصوصیاتی داره؟
۲- برای ایجاد سازگاری کامل با LaTeX یک طراح باید چه امکاناتی رو از فونتش حذف یا اضافه بکنه؟
۳- برای اعمال تغییرات پروتکل یونیکد در لاتک باید چیکار کرد؟ مثلاً تو نسخهی 5.2 دبیرهی اوستایی اضافه شده و من میخوام ازش استفاده کنم. بین فایلهای لاتک usp10.dll رو پیدا نکردم. پس از کجا الگوریتمها و دیتابیسها رو میشناسه؟ مثلاً برای Bi-directionality یا Pre-render چیکار میکنه؟
۴- فونتهای تقریباً پیچیدهای رو دیدم که با لاتک سازگارن مثل شهرزاد و لطیف. اما IAFD جدولهای بیشتری رو اضافه میکنه. آیا همهی این امکانات پشتیبانی میشه؟ برای پشتیبانی چیکار میشه کرد؟
فایلهای پیوست مربوط به خروجی نهایی ازC Niloofar در Word هستن. اگه ممکنه اونا رو ببینین و بگین که چطور تو XePersian تستشون کنم؟
-
سلام.
این اولین پست منه. ببخشید اگه بیربطه ... جای دیگهای پیدا نکردم مطرح کنم. ???
من الان دارم روی پروژهی IAFD کار میکنم. هدف این پروژه ایجاد همافزایی بین متدهای پردازش تصویر و تکنولوژی OpenType هست. برای این کار من فونت XB Niloofar رو برای آزمایش انتخاب کردم. خروجیهایی که از اسکریپتها میگیریم، فعلاً محدود به otf ,aat , ttf هست. ولی میخوام سازگاری کامل با سیستمهای مبتنی بر تک رو هم اضافه کنم.
چند وقت پیش متوجه شدم نسخههای قدیمی FarsiTeX و خود XePersian از تکنولوژی OpenType به طور کامل پشتیبانی نمیکنن. مثلاً من خودم وقتی با kashida کامپایل میکنم فونتهای سری X به هم میخورن.
سؤال من اینه که:
۱- LaTeX دقیقاً از کدوم قسمتهای OpenType پشتیبانی میکنه و از کدوم قسمتها پشتیبانی نمیکنه؟ این پشتیبانی به چه شکلی انجام میشه و چه خصوصیاتی داره؟
۲- برای ایجاد سازگاری کامل با LaTeX یک طراح باید چه امکاناتی رو از فونتش حذف یا اضافه بکنه؟
۳- برای اعمال تغییرات پروتکل یونیکد در لاتک باید چیکار کرد؟ مثلاً تو نسخهی 5.2 دبیرهی اوستایی اضافه شده و من میخوام ازش استفاده کنم. بین فایلهای لاتک usp10.dll رو پیدا نکردم. پس از کجا الگوریتمها و دیتابیسها رو میشناسه؟ مثلاً برای Bi-directionality یا Pre-render چیکار میکنه؟
۴- فونتهای تقریباً پیچیدهای رو دیدم که با لاتک سازگارن مثل شهرزاد و لطیف. اما IAFD جدولهای بیشتری رو اضافه میکنه. آیا همهی این امکانات پشتیبانی میشه؟ برای پشتیبانی چیکار میشه کرد؟
فایلهای پیوست مربوط به خروجی نهایی ازC Niloofar در Word هستن. اگه ممکنه اونا رو ببینین و بگین که چطور تو XePersian تستشون کنم؟
فارسیتک اصلاً از opentype پشتیبانی نمیکنه و شما حتماً باید قلمهای opentype خودتون رو به فرمت قلمهای باستانی تک در بیاورید تا قابل استفاده بشه. زیپرشین کاملاً از opentype پشتیبانی میکنه (این اطلاعات ناقص رو خودتون پیدا کردید یا کسی بهتون داده). علت اینکه هنوز کشیده در زیپرشین کامل نیست، به علت نبودن یک الگوریتم خوب برای قانونگذاری کشیده است و این موضوع اصلاً ربطی به پشتیبانی opentype نداره. در واقع کشیدگی در فارسیتک به همین بدی کشیدگی در زیپرشین است. اما با داشتن قلمهایی که کاراکتر کشیدگی را در baseline بصورت صحیح قرار میدهند، کشیدگی در زیپرشین بصورت کامل کار خواهد کرد.
۱- لاتک اصلاً کارهای نیست، این کار در موتور تک انجام میگیرد و در حال حاضر دو موتور تک، زیتک و لواتک هستند که امکانات opentype را فراهم میکند. زیتک به وسیله تعدادی کتابخانه که از icu قرض گرفته این کار را میکند و لواتک هم روش خودش را دارد که من زیاد در جریانش نیستم.
۲- اگر منظورتون قلم opentype است، هیچ حذف یا اضافهکردنی لازم نیست، هر قلم opentypeی که دارید به شرطی که کامل و بدون نقص باشد، داری تمام ویژگیهای opentype مثل language و kerning و غیره و غیره باشد به زیبایی میتوانید از آن در زیپرشین استفاده کنید.
۳- برای تغییر ینیکد دوجهته مثلاً در زیتک شما باید کتابخانههای icu را در خود زیتک تغییر بدهید. اما اگر منظورتان الگوی دوجهته نوشتاری است، این کار در بسته bidi انجام میؤود که یک سری ماکرو است.
۴- بله همهٔ اون امکانات پشتیبانی میشن و این میتونه جواب سؤال ۲ شما هم باشه که یک قلم opentype برای زیپرشین باید تمام این اطلاعات رو داشته باشه و در اضافه قلم صفر اون هم تو خالی باشه. اطلاعات موجود در قلم توسط کنابخانه ICU استفاده میشود.
۵- یک مثال ساده زیپرشین درست کنید و در دستور \settextfont، قلم C Nillofar را قرار دهید.
-
ممنون از پاسختون.
تا جایی که متوجه شدم پشتیبانی از OpenType کامله ولی الگوریتمهای یونیکد و دیتابیس ویژگیهای گلیفها وجود نداره. مثل همین bidi که اشاره کردید به صورت بستههای جداگانه عرضه شده. manualهای bidi رو پیدا کردم و با کمال تعجب متوجه شدم در محیط راست به چپ حروف لاتین هم راست به چپ نوشته شدن! برداشت من اینه که این موتورهایی که میگین هیچ اطلاعاتی از ویژگیهای گلیفها ندارن. در غیر این صورت نیازی به بستهی bidi نبود. حالا وقتی توی فونت تعریف میشه که فلان نویسه توی mkmk تراز بشه، موتور لاتک(؟) باید بفهمه که اون نویسه از نوع مارک هست. و توی یونیکد به صورت NoneSpacing تعریف شده. نمیدونم این ویژگیها رو از کجا پیدا میکنه، ولی حدس میزنم از یه پلاتفرم مشترک مثل usp10.dll استفاده نمیکنه. بنابراین پشتیبانی از OpenType امکان نخواهد داشت. من کاملاً سردرگم شدم....
اگر OpenType هست ؛ Unicode هم باید به طور کامل باشه... ولی شما میگید هیچ مشکلی پیش نمیاد. (لاتک ندارم و زیاد هم بلد نیستم و الا خودم امتحان میکردم.)
شما گفتید که برای ایجاد Bi-Directionality باید کتابخانههای ICU رو تغییر داد؛ سؤال آخر من اینه که توی این کتابخانهها امکانش هست تمام الگوریتمهای یونیکد رو پیادهسازی کرد؟ شروع به یادگیری برنامهنویسی تک برای من کمی ترسناکه. فکر میکنم اگه امکان داشت تا الان انجامش داده بودین. دو نقطه دال.
-
لاتک ندارم و زیاد هم بلد نیستم و الا خودم امتحان میکردم.
شما می تونید میک تک پرتابل را از صفحه اول سایت دانلود کنی و اون مجموعه نیاز به نصب و تنظیم نداره و استفاده ازش راحت هست
یک فایل مثال هم همراهش هست که به صورت خودکار باز میشه
سطر ۶ فایل مثال باز شده هم میتونید فونت را عوض کنید
موفق باشید
-
ممنون از پاسختون.
تا جایی که متوجه شدم پشتیبانی از OpenType کامله ولی الگوریتمهای یونیکد و دیتابیس ویژگیهای گلیفها وجود نداره. مثل همین bidi که اشاره کردید به صورت بستههای جداگانه عرضه شده. manualهای bidi رو پیدا کردم و با کمال تعجب متوجه شدم در محیط راست به چپ حروف لاتین هم راست به چپ نوشته شدن! برداشت من اینه که این موتورهایی که میگین هیچ اطلاعاتی از ویژگیهای گلیفها ندارن. در غیر این صورت نیازی به بستهی bidi نبود. حالا وقتی توی فونت تعریف میشه که فلان نویسه توی mkmk تراز بشه، موتور لاتک(؟) باید بفهمه که اون نویسه از نوع مارک هست. و توی یونیکد به صورت NoneSpacing تعریف شده. نمیدونم این ویژگیها رو از کجا پیدا میکنه، ولی حدس میزنم از یه پلاتفرم مشترک مثل usp10.dll استفاده نمیکنه. بنابراین پشتیبانی از OpenType امکان نخواهد داشت. من کاملاً سردرگم شدم....
اگر OpenType هست ؛ Unicode هم باید به طور کامل باشه... ولی شما میگید هیچ مشکلی پیش نمیاد. (لاتک ندارم و زیاد هم بلد نیستم و الا خودم امتحان میکردم.)
شما گفتید که برای ایجاد Bi-Directionality باید کتابخانههای ICU رو تغییر داد؛ سؤال آخر من اینه که توی این کتابخانهها امکانش هست تمام الگوریتمهای یونیکد رو پیادهسازی کرد؟ شروع به یادگیری برنامهنویسی تک برای من کمی ترسناکه. فکر میکنم اگه امکان داشت تا الان انجامش داده بودین. دو نقطه دال.
خوب شما نه لاتک دارید و نه از لاتک دانشی دارید و خوب در موردش هم رساله علمی صادر میکنید.
در bidi شما اگر از قلمهای باستانی تک استفاده کنید، چون ICU دخالتی در این کار ندارد unicode bidi وجود ندارد اما در صورتی که از قلم opentype استفاده کنید چون ICU دخالت دارد، در واقع unicode bidi خواهید داشت. در فایل راهنمای bidi هم ما فقط از قلمهای باستانی تک استفاده کردهایم زیرا هدف چیز دیگری بوده است. میشه شما به من بگید بسته bidi چه ربطی به اطلاعات موجود در glyphها داره؟ این یک حرف بیمعنیه. شما حتی نمیدونید که کار bidi چیه. چرا نیازی به بسته bidi نبود؟ یعنی اگر شما مثلاً glyphهاتون بلد باشند بدونند unicode bidi چیه، اونموقع خودکار میاند براتون جدول راست به چپ حروفچینی میکنند یا میان محیطهای چند ستونه را از راست به چپ حرفچینی میکنند؟ حرفهای شما خیلی خندهداره و دقیقاً نشون میده که نه تنها از موضوع اطلاع ندارید بلکه کاملاً نادرست در موردش هم دارید نظریه میدهید. شما سردرگرم شدید چون خودتون نه میفهمید چی میخواهید، نه میفهمید داری چی میگی و نه میفهمید که چیزی که دارید از آن صحبت میکنید چه کار میکند و چه ویژگیهایی دارد.
من به شما اول پیشنهاد میکنم فرق بین تک و لاتک را یاد بگیرید بقیش پیشکش!
-
وای چه قدر عصبانی شدید!
منظور من دیتابیس گلیفها بود. یعنی اگر اون سیستمی که وقتی اسمشو اشتباه مینویسم اینقدر عصبانی میشید، میتونست بهش دسترسی پیدا کنه، اونوقت دیگه نیازی نبود که بهش بگیم کدوم نویسه رو راست به چپ تراز کنه و کدومو چپ به راست.
ویژگیهای گلیفها توی دیتابیس Uniscribe ذخیره میشن اما من نتونستم این فایل رو بین فایلهای MikteX پیدا کنم. و فکر کردم که الگوریتمهای یونیکد پشتیبانی نمیشن. مثلاً برنامه نمیتونه بفهمه که u+0628 فاصلهگیر هست ولی u+06DE از نوع Enclosing Mark هست. برنامههایی که من میشناسم و از OpenType استفاده میکنن از این اطلاعات برای Shaping استفاده میکنن.
نگاه کنید: http://decodeunicode.org/en/u+06de/properties (http://decodeunicode.org/en/u+06de/properties)
فکر میکردم با این اوضاع اگر جدولهای ltra و rtla اضافه بشن مشکل پیش میاد. و همینطور هم شد. اعداد بین نوشتهها به هم ریختن.
من فقط میخواستم بدونم یک سیستم مبتنی بر LaTeX (با هر چیز دیگهای که سر در نمیارم) چه طور این کار رو انجام میده. و اگر هم ناسازگاریای هست، چون متنبازه، آیا میشه بهش اضافه کرد یا نه.
درسته. من از لاتک چیز زیادی نمیدونم و فقط چند بار باهاش نوشتم اونم همش انگلیسی بود. معتقدید به خاطر حل کار کوچیکی که برام پیش اومده باید اول کل سیستمها و مفاهیم LaTeX رو یاد بگیرم؟ این یه کم سخت و وقتگیره.
(شما همهی تازهکارا رو اینجوری با دمپایی کتک میزنید؟)
-
وای چه قدر عصبانی شدید!
منظور من دیتابیس گلیفها بود. یعنی اگر اون سیستمی که وقتی اسمشو اشتباه مینویسم اینقدر عصبانی میشید، میتونست بهش دسترسی پیدا کنه، اونوقت دیگه نیازی نبود که بهش بگیم کدوم نویسه رو راست به چپ تراز کنه و کدومو چپ به راست.
ویژگیهای گلیفها توی دیتابیس Uniscribe ذخیره میشن اما من نتونستم این فایل رو بین فایلهای MikteX پیدا کنم. و فکر کردم که الگوریتمهای یونیکد پشتیبانی نمیشن. مثلاً برنامه نمیتونه بفهمه که u+0628 فاصلهگیر هست ولی u+06DE از نوع Enclosing Mark هست. برنامههایی که من میشناسم و از OpenType استفاده میکنن از این اطلاعات برای Shaping استفاده میکنن.
نگاه کنید: http://decodeunicode.org/en/u+06de/properties (http://decodeunicode.org/en/u+06de/properties)
فکر میکردم با این اوضاع اگر جدولهای ltra و rtla اضافه بشن مشکل پیش میاد. و همینطور هم شد. اعداد بین نوشتهها به
همهٔ اینها توسط موتور xetex انجام میشود. اگر علاقهمند بودید میتوانید به سورس آن نگاه کنید
http://scripts.sil.org/svn-public/xetex/TRUNK
-
یافـــتــم!
اینجا (http://www.typotheque.com/fonts/opentype_feature_support/) ذکر شده که زیتک نسخۀ 0.999 از ccmp ، rlig و jalt پشتیبانی نمیکنه.
برای همین هم اگر دو تا از این جدولها همزمان استفاده بشه، قلمها ناقص رندر میشدن...
بنابراین با اعمال یک سری تغییرات جزئی در اسکریپت generator میشه IAFD رو طوری تنظیم کرد که قلمهایی با پشتیبانی XeTeX تولید کنه. فعلاً با همون C Niloofar امتحانش میکنم تا ببینم چی میشه.