حل مشکل داینامیک تکست ها در ادوبی فلش
نمی دونم تا حالا به این مشکل برخورد کردید یا نه ولی علاوه بر باگ های فراوانی که همه ی فلش کارها در ادوبی فلش پیدا می کنن, flash کارهای ایرانی دردسر استفاده از فونت فارسی توی فلش رو هم دارن! این مشکل خصوصا در dynamic text هایی که با فونت embed سر و کار دارن بروز می کنه. حروف فارسی شکسته می شه و خطوط به هم می ریزن!
مشکل از این جا ناشی می شه که توی سیستم های عامل یا هر محیط دیگه ای, پیشفرض استفاده از یونیکد رعایت می شه. یعنی تکست باکس هایی که مثلا توی محیط ویندوز کار می کنن, همه Unicode با فرمت decimal یا ده دهی رو پشتیبانی می کنن. پس وقتی من توی یک text box در یک اپلیکیشن تحت ویندوز می نویسم, اگه از تکست باکس استاندارد استفاده کرده باشم, همه ی یونیکد های دسیمال من به کدهای اصلی یونیکد یعنی هگزادسیمال ترجمه می شه. همه ی این کارها در بک گراند ماجرا در جریانه و من هیچی ازش نمی فهمم!
یعنی مثلا وقتی توی یک text box می نویسم: “سلام”, خود محیط میاد و حروف “س, ل, ا و م” رو به hex Unicode ترجمه می کنه. در این صورت می فهمه که وقتی “س” اول کلمه اومده و بعدش “ل” اومده, یعنی باید سین اول چسبان بنویسه. پس می شه: سل و الی آخر.
حالا adobe flash توی تکست باکس های داینامیک از این ترجمه پشتیبانی نمی کنه (برای حروف embed) و برای حروف اختصاصی فارسی از قبیل “گ”, “چ”, “پ”, “ژ”, “ی”. برای همین یک کلاس نوشتم که به راحتی می تونه متنی رو که بهش داده می شه به فارسی با یونیکد هگزادسیمال تبدیل کنه تا فلش اون رو دست نمایش بده.
این class, قابلیت مرتب کردن خطوط و alignment و ترکیب علایم و حروف انگلیسی با فارسی رو هم داره.
می تونید این کلاس رو به همراه راهنمایی ها و مثالی که داخلش هست از این جا دانلود کنید.
زبانش اکشن اسکریپت 2 هست (action script 2.0) و به راحتی می شه به زبان های دیگه هم ترجمه اش کرد.