نمایش نتایج 1 تا 7 از 7

نام تاپیک: در مورد FTGL

  1. #1
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    در مورد FTGL

    دوستان من یک مشکل بزرگ با این کتابخونه که مربوط به نمایش فونت هست دارم و اون اینه که اگه مستقیم یک رشته فارسی رو بهش بدیم نمی تونه در ست رندر کنه:


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



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

  2. #2

    نقل قول: در مورد FTGL

    سلام

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

    http://www.persian-designers.com/ind..._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 ها هستن که قابلیت انعطاف زیادی رو برای کار کردن فراهم نمی کنن.

  3. #3
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: در مورد FTGL

    من می خوام بوسیله خود FTGL برنامه خودم رو بنویسم وگرنه این آموزش ها رو در سایت نهه دیدیه بودم کسی کتابخونه فارسی ساز برای سی سراغ نداره فکرکنم باید کارکتر ها رو با 66310 جمع کنیم تا درست بشه؟؟!؟!؟

  4. #4

    نقل قول: در مورد FTGL

    من کدشو قبلا زدم

    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

    Kochol Game Engine
    http://www.kge3d.org



  5. #5
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: در مورد FTGL

    اول از کوچول خیلی ممنونم در ضمن من با یک کتابخونه به نام iconv.h برای اینکار مواجه شدم که مثل اینکه بدی نیست اما هر کاری کردم نتونستم از حالت arabic اون استفاده کنم کسی می دونه چطور با اون می شه کار کرد کتابخانه رو ضمیمه کردم
    فایل های ضمیمه فایل های ضمیمه

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    پست
    41

    نقل قول: در مورد FTGL

    سلام
    لطفا یه نفر به من جواب بده
    خیلی فوریه
    من openglcontrol رو توی برنامه اضافه کردم (visual C++‎‎(
    حالا میخوام داخلش فارسی بنویسم یا اصلا یه متن
    میشه یک نفر کمکم کنه؟

  7. #7
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: در مورد FTGL

    من دوباره با ویژوال 2013 و وندوز 8.1 تست زدم الان عزیزم اول باید همون فایلی که در آموزش openGL ضمیمه کردم را بگیری و پوشه include , lib را در ویزوال خودتون کپی کنید سپس freetype را بگیرید و دوباره lib, include را در پوشه ویژوال خودتون کپی کنید بعد از همه این کارا به یکسری فایل .dll نیاز داره که من اینجا ضمیمه می کنم که باید در پوشه دیباگ یا ریلیز یا پوشه سیستم ویندوز منتقل بشه نتیجه هم اینی می شه که ضمیمه استFTGL.png

    ضمیمه نشد این لینکش
    آخرین ویرایش به وسیله amin1softco : سه شنبه 30 اردیبهشت 1393 در 17:45 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •