Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

‏استفاده از Stylistic sets برای نمایش اعداد فارسی #198

Closed
EhsanCh opened this issue May 9, 2021 · 22 comments

Comments

@EhsanCh
Copy link

EhsanCh commented May 9, 2021

‏مجموعه‌های استایلیستیک قابلیتی هستند که استفاده از نویسه‌های جایگزین قلم را آسان‌تر می‌کند. به جای این که آن را به کاربر واگذار کنید تا به طور دستی یک کاراکتر را با یک شکل جایگزین را جایگزین کند.
طراحان فونت می‌توانند یک مجموعه Stylistic را به یک فونت اضافه کنند که به کاربران اجازه می‌دهد تا یک محدوده کامل از متن را انتخاب کنند و این نوع جایگزینی را اعمال کنند.
‏با داشتن مجموعه های استایلیستیک در وب به راحتی میتوان با ویژگی font-feature-settings در css اعداد را فارسی کرد بدون این که مشکلات سئو یا جاوااسکریپ یا لود کردن فونت اضافه را داشته باشیم و میتوانیم هم زمان هم اعداد فارسی و هم انگلیسی را داشته باشیم
پیشنهاد میکنم برای اعداد فارسی از این ویژگی استفاده کنید که ویژگی بسیار خوب و لازمی است.
به طور خلاصه با این ویژگی میتوان در صفحات وب با کلاس نمونه زیر به راحتی اعداد را فارسی کرد:

.ss02 {
    -moz-font-feature-settings: "ss02";
    -webkit-font-feature-settings: "ss02";
    font-feature-settings: "ss02";
}

منابع برای اطلاعات بیشتر:
https://www.typography.com/faq/157
https://webplatform.github.io/docs/css/properties/font-feature-settings/
https://typedrawers.com/discussion/3648/fontforge-how-do-i-create-stylistic-set

@EhsanCh EhsanCh changed the title استفاده از Stylistic sets برای نمایش اعداد فارسی ‏استفاده از Stylistic sets برای نمایش اعداد فارسی May 9, 2021
@EhsanCh
Copy link
Author

EhsanCh commented May 9, 2021

امکان دیگری که میتوان با این ویژگی افزود، داشتن نسخه مونواسپیس از اعداد علاوه بر نسخه ی فارسی و انگلیسی همه در یک فونت است که بسیار پرکاربرد است.

@rastikerdar
Copy link
Owner

ممنونم برای توضیحات خوبتون. فونت عربی/فارسی از جمله فونت‌های گوگل که دارای این ویژگی‌ها باشه رو می‌شناسید؟

@EhsanCh
Copy link
Author

EhsanCh commented May 10, 2021

نسخه جدید ایران سنس این قابلیت را داره

@EhsanCh
Copy link
Author

EhsanCh commented May 11, 2021

فونت امیری هم از این قابلیت برای موارد مختلف استفاده میکنه
https://github.com/alif-type/amiri

@EhsanCh
Copy link
Author

EhsanCh commented Jul 4, 2021

@rastikerdar سلام مجدد. برنامه ای برای افزودن این قابلیت دارید؟

@rastikerdar
Copy link
Owner

در نسخه ۳۰ به این صورت اضافه که برای ارقام فارسی:

.farsi_digits {
    font-feature-settings: "ss01";
}

برای ارقام هم‌عرض:

.tabular_numeric {
    font-feature-settings: "tnum";
}

و هردو:

.compound {
    font-feature-settings: "ss01", "tnum";
}

ممنونم برای این ایشو و پیگیریتون. اگر ایرادی دیدین لطفا اطلاع بدین

@hamidpeywasti
Copy link
Contributor

hamidpeywasti commented Aug 4, 2021

در این ویژگی برای تبدیل اعداد انگلیسی به فارسی، آیا علامت ممیز اعشاری نیز مدنظر قرار خواهد گرفت. مثلا اگر اگر کاراکترهای عددی به فارسی تبدیل شوند عدد اعشاری 3.14 به صورت ۳.۱۴ نمایش داده خواهد شد که درست نیست ولی اگر ممیز هم تغییر کند ۳٫۱۴ می‌شود. همین طور می‌توان در مورد کاراکترهای دیگر که برای اعداد استفاده می‌شود همین ویژگی را در نظر گرفت.

@rastikerdar
Copy link
Owner

مشکل اینجاست که ممیز در لاتین همان نقطه است. و خب نقطه در فارسی هم کاربرد داره و اگه تبدیل بشه کل متن فارسی خراب میشه. تشخیصش وسط عدد هم سخته چون ممکنه منظور ممیز نباشه و همان نقطه باشه. خلاصه فکر نکنم به راحتی بشه.

@hamidpeywasti
Copy link
Contributor

از نظر فنی مشکل نقطه لاتین هست. ولی شخصا از این ویژگی در وب‌سایتی استفاده کنم که دارای اعداد اعشاری بود، نتیجه مطلوب نبود. در نتیجه این ویژگی فقط جاهایی که نیازی به اعداد اعشاری نباشد قابل استفاده است.

@rastikerdar
Copy link
Owner

درست می‌فرمایید. اما این ویژگی برای ما ایرانی ها مثلا در وبسایت‌های فروشگاهی و امثالهم خیلی مفیده چون ما اعشار توی قیمت‌هامون نداریم. از طرفی با این ویژگی می‌تونیم تعیین کنیم کجای صفحه اعدادش تغییر کنه یا نکنه و دیگه نیازی به فونت جداگانه نداریم.

@SepehrSepahi
Copy link

ضمن تشکر فراوان،

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

در‌حال‌حاضر که این‌چنین نیست.

(.در صورت صلاحدید برای این مشکل یک ایشو جدید باز کنم)

@rastikerdar
Copy link
Owner

درست می‌فرمایید چون هنوز به نسخه متغیر گلیف‌های لاتین اضافه نشده. البته نسخه متغیر هنوز کامل نشده و به صورت غیر رسمی وجود داره و حتی معرفی هم نشده.
ممنون میشم ایشوی جدید باشه. در باز کردن ایشوی جدید حاجت هیچ استخاره نیست چون مواردی که ذیل ایشوهای دیگر یا بسته مطرح میشه معمولا فراموش میشه.

@EhsanCh
Copy link
Author

EhsanCh commented Aug 6, 2021

از اونجایی که مشکل ممیز و نقطه ساختاری هست و ربطی به فونت ندارد و پیشنهاد استاندارد های جدید هم در لاتین برای ممیز استفاده از کاما است، پیشنهاد من تبدیل کاما به‌ ممیز فارسی است
https://en.m.wikipedia.org/wiki/Decimal_separator
22,635 => ۲۲٫۶۳۵
همچنین میتوان در یک مجموعه جدید مثل "اس اس "02 نقطه را هم به ممیز فارسی تبدیل کرد. و در متون وب در صورت نیاز به جای افزودن کلاس به کل متن، آن کلاس را فقط به اعداد اضافه کرد و برای اپلیکیشن هایی که نیاز داردند مفید و قابل استفاده خواهد بود.

@hamidpeywasti
Copy link
Contributor

افزودن کلاس جدید هم ایده‌ی خوبی است چون می‌توان با یک کد جاواسکریپت کلاس موردنظر را در متن فقط به اعداد اعمال کرد.

$('p').html(function(i, v){ return v.replace(/^-?\d+\.?\d*$/, '<span class="tnum">$1</span>'); });

@EhsanCh
Copy link
Author

EhsanCh commented Aug 6, 2021

لطفا در نسخه های بدون لاتین هم استال ست ها را اضافه کنید
همچنین در نسخه های بدون لاتین ، در هر صورت اعداد را به صورت لاتین اضافه کنید چون اعداد مجزا از زبان است و معمولا متون دارای اعداد هستند ولی ممکن است دارای نویسه های لاتین نباشند.

@rastikerdar
Copy link
Owner

اگرچه کاما هم چند تا کاربرد داره ولی خب میشه چند تا استایل ست داشت که هر جا کاربر خواست خودش ست کنه.
اما در مورد نسخه‌های بدون لاتین متاسفانه من راهی نمی‌شناسم چون هر فونتی مسئول جدول خودش هست و وقتی اون کدپوینتی که ما تایپ می‌کنیم در فونت مورد نظر ما نباشه دیگه اون فونت اصلا پردازش نمیشه. حتی موقع خروجی گرفتن از فونت، داده‌هایی که مربوط به گلیف‌های ناموجود باشه حذف میشه مثل همین استایل‌ست.

@EhsanCh
Copy link
Author

EhsanCh commented Aug 6, 2021

اگر اعداد را (به همان صورت لاتین) در فونتهای بدون لاتین هم وارد کنید به نظر این مسئله حل میشه

@rastikerdar
Copy link
Owner

اون دیگر اسمش بدون لاتین نیست و یک نسخه جدید باید براش ساخته بشه که خب راستش نمیشه و عملا منتفیه.

@EhsanCh
Copy link
Author

EhsanCh commented Aug 7, 2021

اون دیگر اسمش بدون لاتین نیست و یک نسخه جدید باید براش ساخته بشه که خب راستش نمیشه و عملا منتفیه.

نه کاراکترهای لاتین رو نزارید داخلش. ولی اعداد رو بذارید. اعداد جزو کاراکترهای پایه است و باید باشه در همه نسخه ها. فقط نسخه با اعداد فارسی همون اعداد هم فارسی میشه اما در نسخه های بدون لاتین هم اعداد باید باشه. هزینه ی خاصی هم نداره ده تا گلیف اضافه.
در واقع فونت بدون لاتین باید بتونه بدون استفاده از هیچ فونت دیگری متون فارسی را نشون بده. اما الان فونت بدون لاتین متون فارسی که شامل عدد هستند رو، اعداشو نشون نمیده و این به خودی خود یک نقض هست.

@hamidpeywasti
Copy link
Contributor

کاش فونت‌های فارسی (نه تنها وزیر) یک تعریف استاندارد داشتند که نیازی به تولید انواع نسخه‌های با لاتین، بدون لاتین، با اعداد فارسی، بدون اعداد فارسی و ....
آیا چنین نسخه‌های برای فونت‌های عربی هم استفاده می‌شود؟
در واقع استفاده از Stylistic Sets راهی برای حذف نسخه‌های فرعی می‌باشد.

@amirjj
Copy link

amirjj commented Mar 2, 2023

برای تبدیل اعداد انگلیسی به فارسی در فونت vazirmatn از css زیر استفاده کردم و مشکل را حل کرد

body {
font-family: Vazirmatn;
font-feature-settings: "ss01";
}

@mahdipro2022
Copy link

mahdipro2022 commented Aug 2, 2024

برای تبدیل اعداد انگلیسی به فارسی در فونت vazirmatn از css زیر استفاده کردم و مشکل را حل کرد

body { font-family: Vazirmatn; font-feature-settings: "ss01"; }

بسیار عالی من برای برنامه نویسی سایت از فونت متغیر وزیر استفاده کرده بودم و واقعا این مورد که اعداد فارسی نمی شد آزار دهنده بود و مشکل حل شد ممنون از شما

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants