SDL TTF在某些字体上没有显示省略号

时间:2012-11-12 23:23:28

标签: fonts sdl sdl-ttf

在某些字体上,我无法让SDL_TTF渲染一些字形(例如...),即使我知道它们存在(如果我使用相同的字体,比如gedit,它工作正常)。

Makefile:

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;
}

1 个答案:

答案 0 :(得分:2)

此字体没有

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

水平省略号有U + 2026码,超过0x00FF(255)。

您可能在gedit中看到,因为在某些操作系统和软件中,如果找不到某个字符 字体,它被替换为更相似的字体,安装在 操作系统,然后显示。