SDL应用之三种字库

这篇博客介绍了在SDL中使用SFont、TrueType和点阵字库进行文本显示的方法。SFont库适用于大小写英文字母和符号,资源为字体图片;TrueType库支持UTF8和Unicode编码,字体美观但文件较大;点阵字库文件小,处理速度快,但大字号有锯齿。文章还提到了在Ubuntu下处理中文字符编码的问题,以及使用GBK编码解决终端显示异常的情况。
摘要由CSDN通过智能技术生成

SFont 库

sfont用大小写英文字母和符号进行内容显示,资源即是字体图片。
sfont下载:http://www.linux-games.com/sfont
我下载SFont 2.03后,解压并make,产生了许多的文件,其中包括三个SFont的测试文件,下面是SFontTest3的效果:
这里写图片描述
自己来写一个试试,将.h文件,.c文件,要使用的图片文件(我就直接使用24P_Copperplate_Blue.png了)复制到代码文件目录。官网上有更多的字体 http://www.linux-games.com/sfont-fonts/

#include <SDL.h>
#include <SDL_image.h>
#include "SFont.h"

int main(){
    SDL_Surface *screen, *font;
    SFont_Font* myFont;
    if(SDL_Init(SDL_INIT_VIDEO) < 0){
        fprintf(stderr,"SDL init error: %s\n",SDL_GetError());
        exit(1);
    }   
    screen = SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
    if(screen == NULL){
        fprintf(stderr,"Error: %s\n",SDL_GetError());
        exit(1);
    }
    atexit(SDL_Quit);

    font  = IMG_Load("24P_Copperplate_Blue.png");
    if(font == NULL){
        fprintf(stderr,"IMG_Load Error: %s\n",SDL_GetError());
        exit(1);
    }
    myFont = SFont_InitFont(font);
    /* void SFont_Write(SDL_Surface *Surface, const SFont_Font *Font, int x, int y, const char *text); */
    SFont_Write(screen,myFont,100,220,"SFont works, hello world");
    SDL_UpdateRect(screen,0,0,0,0);
    SDL_Delay(5000);
    SFont_FreeFont(myFont);
    //SDL_FreeSurface(font);  /* SDL_FreeFont(myFont) has free font before.*/
    //SDL_FreeSurface(screen);  /* SDL_quit has handled it.*/
    return 0;
}
edemon@ubuntu1:~/workspace$ gcc SFontTest.c SFont.c -o exe -lSDL -lSDL_image
edemon@ubuntu1:~/workspace$ ./exe

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值