ورود

View Full Version : سوال: در مورد FTGL



amin1softco
جمعه 20 فروردین 1389, 21:38 عصر
دوستان من یک مشکل بزرگ با این کتابخونه که مربوط به نمایش فونت هست دارم و اون اینه که اگه مستقیم یک رشته فارسی رو بهش بدیم نمی تونه در ست رندر کنه:

http://barnamenevis.org/forum/attachment.php?attachmentid=46801&stc=1&d=1270834612


اما اگه با فارسی نویس بهش یک رشته رو بدیم درست کار می کنه:


http://barnamenevis.org/forum/attachment.php?attachmentid=46800&stc=1&d=1270834390


سوال من اینه که بهترین روش استفاده از این کتابخونه چیه؟؟؟؟!!؟ آیا روش دیگه ایی وجود داره:متفکر: یا باید حتما قبلش رشته تبدیل بشه؟
اگه باید تبدیل بشه یک کتابخونه ساده وجود نداره که بشه ازش استفاده کرد؟

pswin.pooya
جمعه 20 فروردین 1389, 23:46 عصر
سلام

باید تبدیل بشه. میتونی برنامه تبدیل رو خودت بنویسی. FTGL بهترین کابخونه ای هستش که تا حالا من دیدم. البته اگر میخوای فقط فارسی بنویسی و چیز دیگه ای برات اهمیت نداره (مثل سیستم عامل و ...) میتونی از یه مقاله که داخل persian-designers.com هستش استفاده کنی:

http://www.persian-designers.com/index.php?ind=downloads&op=entry_view&iden=204

اما فعلا بهترین گزینه FTGL هستش.

البته در مورد تمام این کتابخونه ها یه موردی که وجود داره اینه که مطمئن نیستم اونها با OpenGL 3.x+ بتونن کار کن. از ویرایش OpenGL 3.0 به بعد یه تحول داخل OpenGL به وجود اومدش که برخی از موردهایی که باعث شدن خیلی از کتابخونه ها از کار بی افتن موارد زیر هستن:



دیگه glBegin کار نمی کنه
حتما برای رندر شیدر لازمه
خیلی از متغییرهای توکار GLSL حذف شدن (مثل gl_Vertex و gl_ModelViewProjectionMatrix)
خیلی از client-stateها بی استفاده شدن مثل :


glEnableClientState(GL_VERTEX_ARRAY);

این دلایل برای از کار افتادن خیلی از کتابخونه ها آماده کافی هستن.

به جای کتابخونه های قدیمی (بهتر بگیم که از قدیم وجود دارن) مثل CEGUI و FTGL که خودشون هم کار رندر رو انجام میدادن. کتابخونه هایی به وجود اومده (میان) که داده ها رو به کاربر بدن و کاربر کار رسم رو انجام بده.

بهترین گزینه برای حرفه ای کار کردن استفاده از کتابخونه FreeType2 هستش. که کار باهاش واقعا سخته. البته گزینه های دیگه ای هم مثل استفاده از bitmap font ها هستن که قابلیت انعطاف زیادی رو برای کار کردن فراهم نمی کنن.

amin1softco
شنبه 21 فروردین 1389, 00:09 صبح
من می خوام بوسیله خود FTGL برنامه خودم رو بنویسم وگرنه این آموزش ها رو در سایت نهه دیدیه بودم کسی کتابخونه فارسی ساز برای سی سراغ نداره فکرکنم باید کارکتر ها رو با 66310 جمع کنیم تا درست بشه؟؟!؟!؟

kochol
شنبه 21 فروردین 1389, 14:01 عصر
من کدشو قبلا زدم


for (int i = 0; i < tLen; i++)
{
bp = bn = true;
if (i - 1 >= 0)
pch = wtch[i - 1];
else
pch = 32;
if (i + 1 < tLen)
nch = wtch[i + 1];
else
nch = 32;

if (pch == 32 || pch == 1575 || pch == 1608 || pch == 1688)
bp = false;
else if (pch > 1582 && pch < 1587)
bp = false;
if (nch == 32)
bn = false;

// start farsi script
switch (m_pText[i])
{
// Hamze
case 1574:
m_pText[i] = CalcChar(65164, bp, bn);
break;

// Alef
case 1575:
if (bp)
m_pText[i] = 65166;
else
m_pText[i] = 65165;
break;

// Be
case 1576:
m_pText[i] = CalcChar(65170, bp, bn);
break;

// Te
case 1578:
m_pText[i] = CalcChar(65176, bp, bn);
break;

// Se
case 1579:
m_pText[i] = CalcChar(65180, bp, bn);
break;

// Jim
case 1580:
m_pText[i] = CalcChar(65184, bp, bn);
break;

// He jimi
case 1581:
m_pText[i] = CalcChar(65188, bp, bn);
break;

// Khe
case 1582:
m_pText[i] = CalcChar(65192, bp, bn);
break;

// Dal
case 1583:
if (bp)
m_pText[i] = 65194;
else
m_pText[i] = 65193;
break;

// Zal
case 1584:
if (bp)
m_pText[i] = 65196;
else
m_pText[i] = 65195;
break;

// Re
case 1585:
if (bp)
m_pText[i] = 65198;
else
m_pText[i] = 65197;
break;

// Ze
case 1586:
if (bp)
m_pText[i] = 65200;
else
m_pText[i] = 65199;
break;

// Sin
case 1587:
m_pText[i] = CalcChar(65204, bp, bn);
break;

// Shin
case 1588:
m_pText[i] = CalcChar(65208, bp, bn);
break;

// Sad
case 1589:
m_pText[i] = CalcChar(65212, bp, bn);
break;

// Zad
case 1590:
m_pText[i] = CalcChar(65216, bp, bn);
break;

// Ta daste dar
case 1591:
if (bp)
m_pText[i] = 65220;
else
m_pText[i] = 65219;
break;

// Za daste dar
case 1592:
if (bp)
m_pText[i] = 65224;
else
m_pText[i] = 65223;
break;

// Eyn
case 1593:
m_pText[i] = CalcChar(65228, bp, bn);
break;

// Gheyn
case 1594:
m_pText[i] = CalcChar(65232, bp, bn);
break;

// Fe
case 1601:
m_pText[i] = CalcChar(65236, bp, bn);
break;

// Ghaf
case 1602:
m_pText[i] = CalcChar(65240, bp, bn);
break;

// Lam
case 1604:
m_pText[i] = CalcChar(65248, bp, bn);
break;

// Mim
case 1605:
m_pText[i] = CalcChar(65252, bp, bn);
break;

// Noon
case 1606:
m_pText[i] = CalcChar(65256, bp, bn);
break;

// He
case 1607:
m_pText[i] = CalcChar(65260, bp, bn);
break;

// Vav
case 1608:
if (bp)
m_pText[i] = 65262;
else
m_pText[i] = 65261;
break;

// Pe
case 1662:
m_pText[i] = CalcChar(64345, bp, bn);
break;

// Che
case 1670:
m_pText[i] = CalcChar(64381, bp, bn);
break;

// Zhe
case 1688:
if (bp)
m_pText[i] = 64395;
else
m_pText[i] = 64394;
break;

// Ke
case 1705:
m_pText[i] = CalcChar(64401, bp, bn);
break;

// Gaf
case 1711:
m_pText[i] = CalcChar(64405, bp, bn);
break;

// Ye
case 1740:
case 1610:
if (bp && bn)
m_pText[i] = 65268;
else if (bp)
m_pText[i] = 65264;
else if (bn)
m_pText[i] = 65267;
else
m_pText[i] = 65263;
break;

}
}

for (int i = 0; i < tLen; i++)
wtch[i] = m_pText[tLen - i - 1];
for (int i = 0; i < tLen; i++)
m_pText[i] = wtch[i];
delete[] wtch;
}




wchar_t Text::CalcChar(int id, bool prev, bool next)
{
if (prev && next)
return id;
else if (next)
return id - 1;
else if (prev)
return id - 2;
else
return id - 3;

} // CalcChar

amin1softco
شنبه 21 فروردین 1389, 14:11 عصر
اول از کوچول خیلی ممنونم در ضمن من با یک کتابخونه به نام iconv.h برای اینکار مواجه شدم که مثل اینکه بدی نیست اما هر کاری کردم نتونستم از حالت arabic اون استفاده کنم کسی می دونه چطور با اون می شه کار کرد کتابخانه رو ضمیمه کردم

turn-off
یک شنبه 14 اردیبهشت 1393, 15:31 عصر
سلام
لطفا یه نفر به من جواب بده
خیلی فوریه
من openglcontrol رو توی برنامه اضافه کردم (visual C++‎(
حالا میخوام داخلش فارسی بنویسم یا اصلا یه متن
میشه یک نفر کمکم کنه؟

amin1softco
سه شنبه 30 اردیبهشت 1393, 17:20 عصر
من دوباره با ویژوال 2013 و وندوز 8.1 تست زدم الان عزیزم اول باید همون فایلی که در آموزش openGL ضمیمه (http://پbarnamenevis.org/attachment.php?attachmentid=46083&d=1269685103) کردم را بگیری و پوشه include , lib را در ویزوال خودتون کپی کنید سپس freetype (http://ftp.jaist.ac.jp/pub/sourceforge/f/fr/freetype/freetype2/2.5.1/ft251.zip)را بگیرید و دوباره lib, include را در پوشه ویژوال خودتون کپی کنید بعد از همه این کارا به یکسری فایل .dll نیاز داره که من اینجا ضمیمه می کنم که باید در پوشه دیباگ یا ریلیز یا پوشه سیستم ویندوز منتقل بشه نتیجه هم اینی می شه که ضمیمه است119266

ضمیمه نشد این لینکش (http://s1.picofile.com/file/8123869142/ftgl2013.rar.html)