2012-11-12 60 views
2

在某些字體上,我無法讓SDL_TTF渲染一些字形(例如...),即使當我知道它們存在時(如果我在gedit中使用相同的字體,它工作正常)。SDL TTF在某些字體上沒有顯示省略號

生成文件:

test: test.c 
    gcc -o test -ansi -pedantic -Wall test.c `sdl-config --cflags --libs` -lSDL_ttf 

實施例(test.c的):

#include <SDL/SDL.h> 
#include <SDL/SDL_ttf.h> 

int main(int argc, char *argv[]) { 
    SDL_Init(SDL_INIT_EVERYTHING); 
    TTF_Init(); 

    { 
     SDL_Event ev; 
     SDL_Color color = {255,255,255}; 
     SDL_Surface *win = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF); 
     TTF_Font *drawfont = TTF_OpenFont("./ProggySquareSZ.ttf", 22); 
     SDL_Surface *text_surface = TTF_RenderUTF8_Solid(drawfont,"…",color); 
     SDL_Rect r = {10, 10, 0, 0}; 
     SDL_BlitSurface(text_surface,NULL,win,&r); 

     SDL_Flip(win); 
     while(SDL_WaitEvent(&ev)) { 
      if(ev.type == SDL_QUIT) break; 
     } 
    } 

    return 0; 
} 

回答

2

這種字體沒有

Name: ProggySquareTTSZ 
Supported Unicode Blocks 
    0x0000 - 0x00FF ANSI 

水平省略號具有U + 2026代碼,它大於0x00FF(255)。

也許你因爲在一些操作系統和軟件看到在gedit中,如果某個文字不 找到字體,它被替換爲更相似的字體相同,安裝在 OS,然後顯示出來。

+0

聽起來可能。你從哪裏得到你包含的信息?我希望能夠分析其他字體,看看是否需要包含字形。 – singpolyma

+0

我使用名爲wlxFont的舊版Total Commander插件。你可以在這裏找到http://users.telenet.be/liontech/Downloads.htm。我認爲還有其他的顯示字體信息的程序,只是谷歌它。 – tehten

+0

在sdl_ttf中有一個[TTF_GlyphIsProvided](http://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf.html#SEC37)函數,您可以通過它查看字體中是否有字符。 – tehten

相關問題