Microwindows 0.90開發GUI的中文字型問題?

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

Microwindows 0.90開發GUI的中文字型問題?

文章aken206 » 週二 5月 27, 2008 5:24 pm

大家好
小弟目前是用Microwindows 0.90開發GUI
未來要移植到ARM上面
本來使用Microwindows的Freetype 1
但是裡面的中文字型為點陣,而且大小只有12pt , 16pt
所以我改用Freetype 2
可以支援TTF字型

問題來了
我使用iconv將BIG5轉成Unicode
但是GdText出來都是亂碼?
最後由 aken206 於 週五 7月 04, 2008 8:47 am 編輯,總共編輯了 1 次。
aken206
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週二 5月 27, 2008 5:19 pm

文章THQ » 週四 7月 03, 2008 4:32 pm

我有個問題,我把freeype2 porting上板子,我只需要英文和數字就好了,
但要改變字的大小,但就是不行,不知是什麼原因
貼出部份的source code
font = GrCreateFont("/tmp/arial.ttf", 24, NULL);
GrSetGCFont(gc, font);
GrSetFontSize(font,24);
gprintf("9999999");


static void gprintf(char s[])
{
static char lasttext[128];

GrSetGCForeground(gc,BLACK);
GrFillRect(wid1, gc, 0, 0, 1024,768);
GrSetGCForeground(gc,WHITE);
GrSetGCBackground(gc,BLACK);
if (!s)
s = lasttext;
GrText(wid1, gc, 1024/2, 768/2, s, strlen(s),0);
if (s != lasttext)
strcpy(lasttext, s);
}
Linux才是最強的!!
THQ
活潑的高中生
活潑的高中生
 
文章: 492
註冊時間: 週二 1月 04, 2005 9:11 pm

文章aken206 » 週五 7月 04, 2008 8:47 am

THQ 寫:我有個問題,我把freeype2 porting上板子,我只需要英文和數字就好了,
但要改變字的大小,但就是不行,不知是什麼原因
貼出部份的source code
font = GrCreateFont("/tmp/arial.ttf", 24, NULL);
GrSetGCFont(gc, font);
GrSetFontSize(font,24);
gprintf("9999999");


static void gprintf(char s[])
{
static char lasttext[128];

GrSetGCForeground(gc,BLACK);
GrFillRect(wid1, gc, 0, 0, 1024,768);
GrSetGCForeground(gc,WHITE);
GrSetGCBackground(gc,BLACK);
if (!s)
s = lasttext;
GrText(wid1, gc, 1024/2, 768/2, s, strlen(s),0);
if (s != lasttext)
strcpy(lasttext, s);
}

在我的機器上是可以的
你要不要檢查你的freetype2有無移植成功

另外我的中文字型可以porting上去了
iconv的問題
aken206
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週二 5月 27, 2008 5:19 pm

文章xuepinge » 週五 7月 18, 2008 4:41 pm

aken206,您好!
我这几天也在学习microwindows,用freetype2显示中文一直有问题!
请解释一下nano-x + freetype2显示中文怎么操作。
以下是我的例子(无法运行)
fontid = GrCreateFont(names["times.ttf", 0, NULL);
GrSetFontSize(fontid, 16);
//GrSetFontRotation(fontid, 330); /* 33 degrees */
GrSetFontAttr(fontid, GR_TFKERNING | GR_TFANTIALIAS, 0);
GrSetGCFont(gc, fontid);

..............

char *p = "Microwindows,欢迎使用中英文点阵字体";

char text[100];
char textlen = -1;

iconv_t cd;

cd = iconv_open("utf-8", "gb2312");
if (cd == 0)
printf("iconv_open failed\n");
else {
memset(text, 0 , 100);
if (iconv(cd, p, strlen(p), text, &textlen) == -1) {
printf("\niconv process failed\n");
}
printf("\niconv out %s:%d\n", text, textlen);
iconv_close(cd);
}

GrText(window, gc, x, y,
text, textlen, GR_TFASCII);
GrFlush();
GrDestroyFont(fontid);
xuepinge
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週五 7月 18, 2008 4:31 pm

文章xuepinge » 週五 8月 08, 2008 2:17 pm

原来Freetype要用的是UCS-2的编码格式!!!!
xuepinge
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週五 7月 18, 2008 4:31 pm


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客