搜索
 找回密码
 立即注册

简单一步 , 微信登陆

同时使用两套矢量字库的方法

作者:Jack.Lin | 时间:2016-7-18 00:53:50 | 阅读:4398| 只看该作者

适用范围:支持矢量字库的MStar平台
关键字:   矢量字库

说明:
       主要以3391平台的code实例说明:假设UI中同时用到三种大小字体,其中small要用A字库,normal和large要用B字库。
方法是在现有一种矢量字体的基础上增加一种出来(看宏定义ENABLE_TWO_VECTOR_MVF):
#if ENABLE_TWO_VECTOR_MVF
#define BIN_ID_FONT_MSTAR_MVF_ATSC  0x01A2  //~164KB    [url=]//@..\..\..\tv-ap\atsc\ui2\font\MStar_ATSC.mvf[/url]
#define BIN_ID_FONT_MSTAR_MVF_ATSC_NEW   0x01A3 //~100KB    [url=]//@..\..\..\tv-ap\atsc\ui2\font\MStar_ATSC_New.mvf[/url]
#else
.............
.............
#if VECTOR_FONT_ENABLE
    BinItem(BIN_ID_FONT_MSTAR_MVF_ATSC),
    #if ENABLE_TWO_VECTOR_MVF
    BinItem(BIN_ID_FONT_MSTAR_MVF_ATSC_NEW),
    #endif
    #if ENABLE_LANGUAGE_KOREA
    BinItem(BIN_ID_FONT_KOREA_20),
    #endif
#else
..................
.................
#define FONT_MSTAR_UNICODE_MVF      BIN_ID_FONT_MSTAR_MVF_ATSC
#if ENABLE_TWO_VECTOR_MVF
#define FONT_MSTAR_UNICODE_MVF_NEW      BIN_ID_FONT_MSTAR_MVF_ATSC_NEW
#endif
.................
.................
#if VECTOR_FONT_ENABLE
void MApp_LoadFont_SetVecFontInfo(LOADFONT_STRUCT* strfont, U8 u8Begin, U8 u8End)
{
    msAPI_Font_MVF_LoadFont(strfont, u8Begin, u8End);
}
#if ENABLE_TWO_VECTOR_MVF
void MApp_LoadFont_SetVecFontInfo_New(LOADFONT_STRUCT* strfont, U8 u8Begin, U8 u8End)
{
    msAPI_Font_MVF_LoadFont_New(strfont, u8Begin, u8End);
}
#endif
#endif
.......................
......................
#if ENABLE_TWO_VECTOR_MVF //A字库
LOADFONT_STRUCT font_info_new[] =
{
// small
    {
        .FontID = FONT_0,
        .output_bpp = 2,
        .output_size = 22,
        .output_width = 11,
        .output_height = 22,
        .unicode_from = { 0x0020, 0},
        .unicode_to = { 0xFFFF, 0},
    },
};
#endif

LOADFONT_STRUCT font_info[] =//B字库

{
//large
    {
        .FontID = FONT_1,
        .output_bpp = 2,
        .output_size = 30,
        .output_width = 30,
        .output_height = 37,
        .unicode_from = { 0x0020, 0},
        .unicode_to = { 0xFFFF, 0},
    },
//normal
    {
        .FontID = FONT_2,
        .output_bpp = 2,
        .output_size = 24,
        .output_width = 24,
        .output_height = 29,
        .unicode_from = { 0x0020, 0},
        .unicode_to = { 0xFFFF, 00},
    },
};
.............
..............#if VECTOR_FONT_ENABLE
static void MApp_LoadFontInit_VEC(void)
{
    U8 u8num = sizeof(font_info)/sizeof(LOADFONT_STRUCT) - 1;
    MApp_LoadFont_SetVecFontInfo(font_info, 0, u8num);
}
#if ENABLE_TWO_VECTOR_MVF
static void MApp_LoadFontInit_VEC_NEW(void)
{
    U8 u8num = sizeof(font_info_new)/sizeof(LOADFONT_STRUCT) - 1;
    MApp_LoadFont_SetVecFontInfo_New(font_info_new, 0, u8num);
}
#endif
#endif
....................
......................

    #if ENABLE_TWO_VECTOR_MVF
    MApp_LoadFontInit_VEC_NEW();
    #endif
    MApp_LoadFontInit_VEC();
..............
..............
#if ENABLE_TWO_VECTOR_MVF
void msAPI_Font_MVF_LoadFont_New(LOADFONT_STRUCT* font_info, U8 u8Begin, U8 u8End)
{
    U8 i;
    if (msAPI_Font_MVF_LoadFlashFontToSDRAM(FONT_MSTAR_UNICODE_MVF_NEW))
    {
        for(i=u8Begin; i<=u8End; i++)
        {
            msAPI_Font_MVF_AddBitmapSize(
                font_info.FontID, font_info.output_bpp,
                font_info.output_size, font_info.output_width,
                font_info.output_height, font_info.unicode_from,
                font_info.unicode_to);
        }
        msAPI_Font_MVF_StartGenerateBitmaps(); //NOTE: non-blocking function!
    }
    msAPI_Font_MVF_EndGenerateBitmaps();
}
#endif

收藏
收藏0
分享
分享
点赞
点赞1
反对
反对0
该会员没有填写今日想说内容.
回复

使用道具 举报

大神点评1

沙发#
Robby.zou 发表于:2016-7-18 11:28:16
该会员没有填写今日想说内容.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版