بهجای فونتاسِت SDF از پیش پختهشده، خودِ فایل .ttf یا .otf رو به TextMeshPro میده. گلیفها همون لحظهای که قراره کشیده بشن از فایل ساخته میشن، پس فارسی، عربی، ژاپنی، چینی و کرهای بدون هیچ تنظیمی رندر میشن.
یه فونت پیدا میکنی، میندازیش توی یونیتی، یه ساعت توی Font Asset Creator رِنج کاراکترها رو انتخاب میکنی — و همین که یه بازیکن اسم خودش رو فارسی تایپ میکنه، این رو میبینی:
فایل فونت از قبل دقیقاً میدونه چه گلیفهایی داره. DirectTMP فقط دست از این برداشته که وانمود کنه نمیدونه.
یه GameObject رو «敵スポーナー» اسم بذار یا یه پوشه رو «فونتها» — یونیتی درست ذخیرهش میکنه و بعد تا ابد بهت مربع خالی نشون میده. اسست سالمه؛ رابط خودِ یونیتی با فونت خودِ یونیتی کشیده میشه و هیچ پکیج TextMeshPro ای تا حالا بهش دست نزده بود.
از مسیر Unity DirectTMP ▸ Editor Font میتونی نوار منو، Hierarchy، Inspector، پنجرهی Project و Console رو با فونتی که خودت انتخاب میکنی بکشی.
هیچچیزی روی نصب یونیتی نوشته نمیشه. تغییر فقط توی حافظهی همون سشن زندگی میکنه، پس بستن یونیتی همیشه همهچیز رو برمیگردونه — و فونتی که نتونه حروف لاتین و عدد رو بکشه اصلاً اعمال نمیشه، چون اونوقت خودِ گزینهی «برگردون» هم مربع خالی میشد.
همهی فونتهای پروژه و همهی فونتهای نصبشده روی سیستم توی یه لیست، و هر فایل مستقیم خونده میشه تا حقیقتش رو بگه: اسم خانوادهای که سازندهی فونت نوشته، تعداد واقعی گلیفها، و اینکه دقیقاً چه خطهایی رو میتونه بنویسه.
سبز یعنی پوشش کامل، کهربایی یعنی ناقص. همون کهربایی نکتهی اصلیه: فونتی که عربی داره ولی پ گ چ ژ نداره نمیتونه فارسی بنویسه، و یه فلگ سادهی «از عربی پشتیبانی میکند» با خیال راحت بهت میگه میتونه.
یه .ttf یا .otf رو بکش روی کامپوننت، تموم. کارهای SDF بیسروصدا پشت صحنه انجام میشه.
فونتی که ۲۰٬۰۰۰ کانجی داره، واقعاً ۲۰٬۰۰۰ کانجی داره. دیگه هیچوقت لازم نیست لیست کاراکترها رو دستی بنویسی.
یه فونت لاتین، یه CJK و یه فونت نماد رو پشت سر هم بچین؛ برای هر کاراکتر اولین فونتی که اون رو داره انتخاب میشه.
از StreamingAssets، از persistentDataPath، از یه byte[] دانلودشده، یا از فونتهای نصبشدهی خود کاربر.
یه صفحه با ۲۰۰ لیبل که همه یه فونت دارن، فقط و فقط یه اطلس میسازه.
میگه چی کار میکنه، چی کار نمیکنه و چرا؛ هرچی رو بشه با یه کلیک درست میکنه و کل گزارش رو برای ثبت باگ کپی میکنه.
https://github.com/AmirCollider/UnityDirectTMP.git
گیری نداره. لایسنس MIT، کل سورس روی گیتهاب، بدون تلهی نسخهی پولی و بدون تلمتری. اگه به کارت اومد، یه ستاره روی ریپازیتوری تنها هزینهشه.
برای همینه که فونتی که نتونه رابط خود ادیتور رو بکشه اصلاً اعمال نمیشه، نه اینکه فقط هشدار بگیره. تغییر هم فقط توی حافظهی همون سشنه: چیزی روی نصب یونیتی نوشته نمیشه و بستن برنامه همیشه همهچیز رو برمیگردونه.
هر گلیف فقط یه بار ساخته میشه و بعدش کَش میمونه؛ هزینهش بار اوله، نه هر فریم. فونتها هم بر اساس (فایل + سایز + حالت رندر) کش میشن، پس صفحهای با ۲۰۰ لیبل که همه یه فونت دارن فقط یه اطلس میسازه. برای متنهای سنگین CJK هم Preload هست.
گلیفها رندر میشن، ولی شکلدهی و اتصال حروف (Shaping) هنوز توی نقشهی راهه. فعلاً برای متنهای آمادهی از قبل شکلدادهشده یا همراه یه کتابخونهی RTL کار میکنه.
اگه فونت همراه بازی ارسال میشه، بله — و بررسی لایسنس فونت با خودته، چون قرار دادن یه .ttf داخل بیلد یعنی بازنشر. ویژگی فونتِ ادیتور اما چیزی رو بازنشر نمیکنه؛ فقط ادیتور رو به فونتی که از قبل روی سیستمته وصل میکنه.