练习c语言怎么修改字体为宋体,u8g2如何显示中文?如何显示楷体,宋体?

/*                                 设     置     时     间      温     湿     度     上      下     阀      返      回      |   */

const uint16 ChineseUnicode[] = {0x8BBE,0x7F6E,0x65F6,0x95F4,0x6E29,0x6E7F,0x5EA6,0x4E0A,0x4E0B,0x9600,0x8FD4,0x56DE,0x007C};

const uint16 ChineseGBK[] =     {0xC9E8,0xD6C3,0xCAB1,0xBCE4,0xCEC2,0xCAAA,0xB6C8,0xC9CF,0xCFC2,0xB7A7,0xB7B5,0xBBD8,0x007C};

uint8 u8Find_GBK_Index(uint8 const *zh_cn)

{

#ifdef LANGUAGE_CHINESE

//printf("zh_cn %x %x\n", zh_cn[0], zh_cn[1]);

for( uint8 i = 0; i < sizeof(ChineseGBK)/ sizeof(ChineseGBK[0]); i++ )

{

if(((uint16)((zh_cn[0] << 8) | zh_cn[1])) == ChineseGBK[i])

{

//printf("Index %d\n", i);

return i;

}

if((uint16)(zh_cn[0]) == ChineseGBK[i] &&  zh_cn[1] == 0)

{

//printf("Index %d\n", i);

return i;

}

}

return 0xFF;

#else

(void)zh_cn;

return 0xFF;

#endif

}

uint16 u16FindUnicode(uint8 const *zh_cn)

{

#ifdef LANGUAGE_CHINESE

uint8 Index = u8Find_GBK_Index(zh_cn);

//printf("Index %d\n", Index);

if(Index < sizeof(ChineseUnicode)/ sizeof(ChineseUnicode[0]))

return ChineseUnicode[Index];

else

return 0;

#else

return 0xFFFF;

#endif

}

void vDrawGBK(uint8 x, uint8 y, const uint8 *Chinese)

{

#ifdef LANGUAGE_CHINESE

uint8 len = 0;

uint8 Index = 0;

len = strlen((char *)Chinese) / 2;

//printf("len %d\n", len);

for( uint8 i = 0; i < len; i++ )

{

Index = u8Find_GBK_Index(&Chinese[i*2]);

U8G2_DrawGlyph(x, y, ChineseUnicode[Index]);

x += U8G2_GetGlyphWidth(ChineseUnicode[Index]);

//printf("xw %d\n", x);

}

#else

(void)x;

(void)y;

(void)Chinese;

#endif

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值