嵌入式SOC之通用图像处理之OSD文字信息叠加的相关实践记录

news2024/11/24 10:30:36

机缘巧合

机缘巧合下,
在爱芯元智的xx开发板下进行sdk的开发.由于开发板目前我拿到是当前最新的一版(估计是样品),暂不公开开发板具体型号信息.以下简称`板子` .

很多优秀的芯片厂商,都会提供与开发板配套的完善的软件以及完善的技术支持(FAE),突然觉得爱芯的技术支持就不错.

认识

几乎涉及到图形处理的soc都会内置一些图形处理的api,我们常见的图形处理工具有开源第三方库opencv,但opencv交叉编译麻烦,移植在嵌入式平台上吃资源较多,所以,一般是选择使用它们内置的一些api去实现图像处理的操作.比如常见的图形处理操作有: 旋转,裁剪,马赛克填充,画框,osd叠图 等等.
本次主要是实现文字信息叠加.
在爱芯平台上画框有例子提供了从vin->ivps->joint->venc->rtsp 也就是从获取图形输入 - > 图像处理 -> 传入模型 -> 编码 -> 网络推流. 爱芯的git仓库中有很多例子是结合用opencv来画框和叠加字符串的.当然这些通常对格式有要求,比如长度和宽度需要指定xxx进行对齐.

比如 ax pipeline

实践记录

说明

起初是想用提供的Free type库在程序运行中去加载字库文件,然后把字符串信息转换成bitmap(每一个字符对应一个bitmap 位图),然后转换成具体的格式比如ARGB1555,然后叠加上去.后面发现叠上去的图像不对.
最后依靠我牛逼的同事给我上了一课,使用点阵字库生成工具 ,以下简称为工具 .去把需要用到的字符的具体的bitmap 导出来,然后转换成具体的格式.本次实践为通过工具 把文字信息转换为bitmap再转换为ARGB1555格式然后放在app里直接使用.后面得知,这是一种以空间换时间的方式,也是目前主流的方式.

工具下载:
fontmark下载链接

工具图:
在这里插入图片描述

功能
  • 可以选择字体,字号.如图.
  • 用户定义可以使用自己需要的中文字符.这意味着可以定制自己需要的中文字符.
  • 如果叠加的信息不需要英文,那么用ascill 就完全足够了.
工作流

以下实践就以我截图所见的配置选项 进行.

  1. 保存字库后生成.cpp文件,实际我只关心数组.灰度等级为1位则非黑即白.
    001

目前fontmarkv1.4.0这个版本生成的ascil码只有96位,而不是128位,去掉了一些字符,不过,数字,字母大小写,标点符号都保留.之前老的版本是支持的.
在这里插入图片描述

2.保存字库出来的cpp文件是一个二维数组,每一行48的字节,总共96行.每一行代表一个字符, 对应配置和上面1号一样.
3. 把字体为:微软雅黑,字号:24 16x24,灰度级别为1进行转换: bitmap->ARGB1555
4. ARGB1555的格式意味每个像素占用2个字节, 15……0共16位,最高位也就是第15位为A,表示透明度(1表示不透明,0表示透明),R,G,B各自占用5位. 所以红色为0b1111110000000000

在这里更好的表示方式是使用结构体的位域 这一数据类型.

typedef struct m_ARGB1555
{
	u16 B : 5;
	u16 G : 5;
	u16 R : 5;
	u16 A : 1;

}ARGB1555;

这里这么写的场景: 先说明位域字段在内存中的位置是按照从低位向高位的顺序放置的. 所以在小端存储字节序(低位字节在低地址处) 结构体位域从上到下是BGRA.如果是大端存储则直接就是ARGB的顺序.
设置颜色:
红色

ARGB15555 temp ;
temp.A = 1;
temp.B = 0;
temp.R = 0x1f;
temp.G = 0;

bitmap的灰度等级为1位,则表示每一个像素用一位表示,同理灰度等级为8位,则表示每一个像素用8位表示(这样颜色选择的范围会变宽 )
5. 把二维数组中的每一个字节(8位)转换成ARGB的格式.



// MSB  Horizontal scanning


#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include "test.h"

typedef unsigned short u16;
typedef struct m_ARGB1555
{
    u16 B : 5;
    u16 G : 5;
    u16 R : 5;
    u16 A : 1;
} ARGB1555;

static ARGB1555 argb1555_blue = {0x1f, 0, 0, 1};
static ARGB1555 argb1555_green = {0, 0x1f, 0, 1};
static ARGB1555 argb1555_red = {0, 0, 0x1f, 1};

int main(void)
{
    ARGB1555 *temp = &argb1555_red;

    u16 *red = (u16 *)temp;
    printf("//red : 0x%02x \r\n", *red);
    unsigned char colourH = *red & 0x00ff;
    unsigned char colourL = (*red >> 8) & 0x00ff;
    int i, j, k;
    printf("const unsigned char assic_argb_16_24_BLUE[]={\r\n");
    for (i = 0; i < FONT_CHAR_COUNT; i++)
    {
        unsigned char *p = data[i];
        for (j = 0; j < 24; j++) //这里的24是根据48/2得来的,每个字符占了48个字节,每次循环处理2个字节
        {

            unsigned char first_byte = p[j * 2];
            unsigned char second_byte = p[j * 2 + 1];
            for (k = 0; k < 8; k++)
            {

                if (first_byte & 0x80)
                {

                    printf("0x%02x,0x%02x,", colourH, colourL);
                }
                else
                {
                    printf("0x00,0x00,");
                }
                first_byte = first_byte << 1;
            }
            for (k = 0; k < 8; k++)
            {

                if (second_byte & 0x80)
                {

                    printf("0x%02x,0x%02x,", colourH, colourL);
                }
                else
                {
                    printf("0x00,0x00,");
                }
                second_byte = second_byte << 1;
            }
            printf("\n");
        }
        printf("\r\n");
    }

    printf("};\r\n");
}

此处的data就是保存的cpp文件的数组:


/*******************************************************************************
* This file is generated by the Bitmap FontMaker.
* refer: https://gitee.com/kerndev/FontMaker
*******************************************************************************/
#define FONT_MONOSPACE  1
#define FONT_WIDTH      16
#define FONT_HEIGHT     24
#define FONT_BPP        1
#define FONT_PITCH      2
#define FONT_CHAR_COUNT 96   



static   unsigned char  data[][48]=
{
//U+0020( )
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0021(!)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,
0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,
0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0022(")
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x24,0x00,0x24,0x00,
0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0023(#)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x04,0x80,0x09,0x00,
0x09,0x00,0x7F,0xE0,0x09,0x00,0x09,0x00,0x12,0x00,0xFF,0xC0,0x12,0x00,0x12,0x00,
0x24,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0024($)
0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x16,0x80,0x36,0x00,
0x36,0x00,0x36,0x00,0x3E,0x00,0x1E,0x00,0x07,0x80,0x07,0x80,0x06,0xC0,0x06,0xC0,
0x06,0xC0,0x26,0x80,0x1F,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0025(%)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x08,0x66,0x10,0x42,0x20,
0x42,0x20,0x42,0x40,0x66,0x80,0x3C,0x80,0x01,0x3C,0x01,0x66,0x02,0x42,0x04,0x42,
0x04,0x42,0x08,0x66,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0026(&)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x18,0xC0,0x18,0xC0,
0x18,0xCC,0x1D,0xCC,0x0F,0x8C,0x1F,0x8C,0x31,0xC8,0x60,0xC8,0x60,0x78,0x60,0x30,
0x60,0x30,0x30,0xD8,0x1F,0x8F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0027(')
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,
0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0028(()
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,
0x60,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,

//U+0029())
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x60,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,
0x18,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,

//U+002A(*)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x6B,0x00,
0x1C,0x00,0x14,0x00,0x14,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+002B(+)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x3F,0xE0,0x02,0x00,0x02,0x00,
0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+002C(,)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x40,0x00,0xC0,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,0x00,0x00,

//U+002D(-)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+002E(.)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+002F(/)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x06,0x00,
0x06,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0030(0)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x31,0x80,0x31,0x80,
0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,
0x31,0x80,0x31,0x80,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0031(1)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0E,0x00,0x36,0x00,
0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,
0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0032(2)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x21,0x80,0x00,0xC0,
0x00,0xC0,0x00,0xC0,0x00,0xC0,0x01,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x30,0x00,
0x60,0x00,0x60,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0033(3)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x23,0x80,0x01,0x80,
0x01,0x80,0x01,0x80,0x03,0x00,0x3C,0x00,0x03,0x80,0x00,0xC0,0x00,0xC0,0x00,0xC0,
0x00,0xC0,0x41,0x80,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0034(4)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x07,0x80,
0x05,0x80,0x0D,0x80,0x19,0x80,0x31,0x80,0x61,0x80,0x41,0x80,0xFF,0xE0,0x01,0x80,
0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0035(5)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0x00,0x01,0x80,0x00,0xC0,0x00,0xC0,0x00,0xC0,
0x00,0xC0,0x21,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0036(6)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0x00,
0x20,0x00,0x60,0x00,0x6F,0x00,0x71,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,
0x30,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0037(7)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x80,0x01,0x80,
0x01,0x00,0x03,0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,
0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0038(8)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,
0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,
0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0039(9)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x31,0x80,0x61,0x80,
0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0xC0,0x1E,0xC0,0x00,0xC0,0x00,0x80,
0x01,0x80,0x23,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+003A(:)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+003B(;)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x40,0x00,0xC0,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,0x00,0x00,

//U+003C(<)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x00,0xE0,0x03,0x80,0x0E,0x00,0x18,0x00,0x0E,0x00,0x03,0x80,
0x00,0xE0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+003D(=)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+003E(>)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x00,0x1C,0x00,0x07,0x00,0x01,0xC0,0x00,0x60,0x01,0xC0,0x07,0x00,
0x1C,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+003F(?)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x47,0x00,0x03,0x00,
0x03,0x00,0x07,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,
0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0040(@)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF8,0x06,0x04,0x08,0x03,
0x18,0x01,0x10,0xF0,0x21,0x10,0x22,0x10,0x22,0x10,0x22,0x10,0x22,0x11,0x23,0x31,
0x11,0xCE,0x10,0x00,0x08,0x00,0x06,0x04,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0041(A)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x07,0x80,0x07,0x80,
0x0F,0x80,0x0C,0xC0,0x0C,0xC0,0x1C,0xC0,0x18,0x60,0x38,0x60,0x3F,0xE0,0x60,0x30,
0x60,0x30,0x60,0x30,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0042(B)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x31,0xC0,0x30,0xC0,
0x30,0xC0,0x30,0xC0,0x31,0x80,0x3F,0x00,0x30,0xC0,0x30,0x60,0x30,0x60,0x30,0x60,
0x30,0x60,0x30,0xC0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0043(C)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x1C,0x20,0x38,0x00,
0x30,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x30,0x00,
0x30,0x00,0x1C,0x20,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0044(D)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x30,0xE0,0x30,0x30,
0x30,0x30,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x30,
0x30,0x20,0x30,0xC0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0045(E)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0046(F)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0x80,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0047(G)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x0C,0x10,0x18,0x00,
0x30,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x61,0xF0,0x60,0x30,0x60,0x30,0x30,0x30,
0x30,0x30,0x18,0x30,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0048(H)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x30,0x18,0x30,0x18,
0x30,0x18,0x30,0x18,0x30,0x18,0x3F,0xF8,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,
0x30,0x18,0x30,0x18,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0049(I)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+004A(J)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,
0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,
0x0C,0x00,0x18,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+004B(K)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x60,0x30,0xC0,0x31,0x80,
0x33,0x00,0x36,0x00,0x3C,0x00,0x38,0x00,0x3C,0x00,0x34,0x00,0x36,0x00,0x33,0x00,
0x31,0x80,0x30,0xC0,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+004C(L)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+004D(M)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x07,0x3C,0x07,0x3C,0x0F,
0x34,0x0B,0x36,0x0B,0x32,0x1B,0x33,0x13,0x33,0x13,0x31,0xB3,0x31,0xA3,0x30,0xA3,
0x30,0xE3,0x30,0xC3,0x30,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+004E(N)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x18,0x3C,0x18,0x3C,0x18,
0x36,0x18,0x36,0x18,0x33,0x18,0x33,0x18,0x31,0x98,0x30,0x98,0x30,0xD8,0x30,0x58,
0x30,0x78,0x30,0x38,0x30,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+004F(O)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x1C,0x30,0x30,0x18,
0x30,0x18,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x30,0x18,
0x30,0x18,0x18,0x30,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0050(P)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x31,0x80,0x30,0xC0,
0x30,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x3F,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0051(Q)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x1C,0x30,0x30,0x18,
0x30,0x18,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x30,0x18,
0x30,0x18,0x18,0x30,0x07,0xF0,0x00,0x18,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0052(R)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x30,0xC0,0x30,0x60,
0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xC0,0x3F,0x80,0x31,0x80,0x30,0xC0,0x30,0x60,
0x30,0x60,0x30,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0053(S)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x31,0x00,0x60,0x00,
0x60,0x00,0x60,0x00,0x70,0x00,0x3C,0x00,0x0F,0x00,0x07,0x00,0x01,0x80,0x01,0x80,
0x01,0x80,0x43,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0054(T)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x0C,0x00,0x0C,0x00,
0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,
0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0055(U)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x18,0x20,0x18,0x60,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0056(V)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x60,0x60,0x60,0x60,
0x60,0x60,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x19,0x80,0x19,0x80,0x0F,0x00,
0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0057(W)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0x61,0xE1,
0x61,0xE1,0x61,0x61,0x21,0x21,0x33,0x33,0x33,0x33,0x32,0x13,0x1A,0x12,0x1E,0x1E,
0x1E,0x1E,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0058(X)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x60,0x60,0x30,0xC0,
0x11,0x80,0x19,0x80,0x0F,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x19,0x80,0x38,0x80,
0x30,0xC0,0x60,0x60,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0059(Y)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x60,0x60,0xC0,0x60,0xC0,
0x30,0x80,0x39,0x80,0x19,0x80,0x1F,0x00,0x0F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,
0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+005A(Z)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x00,0xC0,0x01,0x80,
0x03,0x80,0x03,0x00,0x07,0x00,0x06,0x00,0x0C,0x00,0x1C,0x00,0x18,0x00,0x38,0x00,
0x30,0x00,0x60,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+005B([)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,

//U+005C(\)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0x60,0x00,
0x60,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x18,0x00,
0x0C,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+005D(])
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x18,0x00,0x18,0x00,
0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,
0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x78,0x00,0x00,0x00,0x00,0x00,

//U+005E(^)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,0x00,0x05,0x00,
0x0D,0x80,0x08,0x80,0x18,0xC0,0x18,0xC0,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+005F(_)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,

//U+0060(`)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x30,0x00,0x10,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0061(a)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0x00,0x23,0x80,0x01,0x80,0x03,0x80,0x3F,0x80,0x79,0x80,0x61,0x80,
0x61,0x80,0x63,0x80,0x3D,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0062(b)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x37,0x80,0x38,0xC0,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,
0x30,0xC0,0x38,0xC0,0x37,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0063(c)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0E,0x00,0x31,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,
0x60,0x00,0x31,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0064(d)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,
0x00,0x60,0x0F,0x60,0x30,0xE0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x70,0x60,0x30,0xE0,0x1F,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0065(e)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x00,0x31,0x80,0x20,0xC0,0x60,0xC0,0x7F,0xC0,0x60,0x00,0x60,0x00,
0x70,0x00,0x30,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0066(f)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0xFE,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0067(g)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x60,0x30,0xE0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x70,0x60,0x30,0xE0,0x1F,0x60,0x00,0x60,0x00,0x40,0x20,0xC0,0x1F,0x00,0x00,0x00,

//U+0068(h)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x37,0x80,0x39,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,
0x30,0xC0,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0069(i)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,
0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+006A(j)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,
0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,

//U+006B(k)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0xC0,0x31,0x80,0x33,0x00,0x36,0x00,0x3C,0x00,0x3C,0x00,0x36,0x00,
0x33,0x00,0x31,0x80,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+006C(l)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+006D(m)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x37,0x9E,0x39,0xE7,0x30,0xC3,0x30,0xC3,0x30,0xC3,0x30,0xC3,0x30,0xC3,
0x30,0xC3,0x30,0xC3,0x30,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+006E(n)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x37,0x80,0x39,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,
0x30,0xC0,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+006F(o)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x80,0x30,0xC0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x30,0x40,0x30,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0070(p)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x37,0x80,0x38,0xC0,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,
0x30,0xC0,0x38,0xC0,0x37,0x80,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,

//U+0071(q)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x60,0x30,0xE0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x60,0x60,0x30,0xE0,0x1F,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,

//U+0072(r)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0073(s)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1E,0x00,0x31,0x00,0x60,0x00,0x60,0x00,0x78,0x00,0x3E,0x00,0x0F,0x00,
0x03,0x00,0x43,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0074(t)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0xFC,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0075(u)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,
0x60,0xC0,0x31,0xC0,0x1E,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0076(v)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xC1,0x80,0xC3,0x00,0x63,0x00,0x63,0x00,0x66,0x00,0x26,0x00,0x34,0x00,
0x3C,0x00,0x1C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0077(w)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xC3,0x0C,0xC3,0x0C,0x67,0x98,0x67,0x98,0x64,0x98,0x24,0x90,0x3C,0xF0,
0x3C,0xF0,0x18,0x60,0x18,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0078(x)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xC1,0x80,0x63,0x00,0x26,0x00,0x36,0x00,0x1C,0x00,0x1C,0x00,0x34,0x00,
0x36,0x00,0x63,0x00,0xC1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+0079(y)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xC0,0xC0,0x61,0x80,0x61,0x80,0x61,0x00,0x33,0x00,0x33,0x00,0x12,0x00,
0x1E,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x18,0x00,0x10,0x00,0xE0,0x00,0x00,0x00,

//U+007A(z)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0x80,0x03,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,
0x30,0x00,0x60,0x00,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+007B({)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x38,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,

//U+007C(|)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,

//U+007D(})
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x70,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x30,0x00,0x30,0x00,
0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,

//U+007E(~)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x20,0x27,0x20,0x21,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//U+007F()
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

 

};

  1. 使用cmake 构建,make编译后.调用 ./xxxx.exe > argb1555_24_16x24_red.h中.从而得到ARGB1555的格式.

  2. 如何验证转换出来的格式是能用的?
    在这里插入图片描述
    在vscode 的右侧可以清晰的看到字符的轮廓.

  3. 生成的argb1555的格式如何在soc中使用?

  1. 包含转换后的头文件,也就是argb1555_24_16x24_red.h ,设置宽度和高度,16x24,接受使用soc内置的api,比如在爱芯平台中用的是ivps中的filter ,记得偏移 转换后的每个字符所占字节的偏移量.比如保存的cpp文件中,data二维数组每个字符占48个字节(bitmap),转换成argb1555后,每个字符占48*8*2=bitmap中字符所占字节*bitmap中每个字节所占像素*argb中每个像素所占字节).
  1. 渲染完后能正常显示字符串,也就是需要的文字信息.
  2. 如何自定义的去显示中文字符?
    在这里插入图片描述
    把需要的汉字保存后转换后重复上面的操作就行.
效果

二维码是通过soc的内置api画框所得.
在这里插入图片描述
中文信息
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1343545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++转WebAssembly及微信小程序调用

上一篇文章讲了C/C如何转WebAssembly&#xff0c;并测试了在Web端调用。本篇内容和上篇一样&#xff0c;介绍C/C包转的.wasm包如何在小程序中调用。 说明 本篇是在上一篇步骤1-4的基础上&#xff0c;再做修改&#xff0c;供微信小程序端调用的方法和步骤。 本篇操作手册可以…

burpsuite模块介绍之repeater

导语 repeater是一个用于手动操作和发送个别HTTP请求的简单工具&#xff0c;它可以帮助您分析应用程序的响应。您可以使用repeater从Burp Suite的任何位置发送内部请求&#xff0c;然后修改请求并发送。通过这种方式&#xff0c;您可以测试和调试应用程序&#xff0c;并对请求…

思福迪运维安全管理系统 任意文件读取漏洞

产品简介 思福迪运维安全管理系统是思福迪开发的一款运维安全管理堡垒机 漏洞概述 由于思福迪运维安全管理系统 GetCaCert路由存在任意文件读取漏洞&#xff0c;攻击者可通过该漏洞在服务器端读取任意文件敏感内容&#xff0c;可能导致攻击者后续获取到相关的服务器权限 资…

nginx设置跨域访问

目录 一&#xff1a;前端请求 二&#xff1a;后端设置 网站架构前端使用jquery请求&#xff0c;后端使用nginxphp-fpm 一&#xff1a;前端请求 <script> $.getJSON(http://nngzh.youjoy.com/cc.php, { openid: sd, }, function(res) { alert(res); if(res.code 0) …

提升Windows系统安全性的一些有效的策略

假设一个杀猪的机器人感染了病毒&#xff0c;把人识别成了猪&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c; 1&#xff1a;我偶然发现的&#xff1a;把所有向外的UDP都禁止&#xff0c;但是要开放53号端口&#xff0c;因为这是DNS通讯端口&#xff0c;没有这个…

关于log4j的那些坑

背景&#xff1a;工程中同时存在log4j.xml&log4j2.xml maven依赖如下&#xff1a; 此时工程实际使用的日志文件为log4j.xml 1、当同时设置log4j和log4j2的桥接依赖时 maven依赖如下&#xff1a; 此时启动会有警告日志&#xff1a; 点击告警日志链接&#xff1a;https://…

LTPI协议的理解——2、LTPI实现的底层架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——2、LTPI实现的底层架构 前言一、体系结构三、实现细节四、物理接口信号传输方法总结 前言 前面讲了LTPI的定义和大概结构&#xff0c;接下来继续理解LTPI…

rancher 手册

官方 https://www.rancher.com/https://github.com/rancher/rancherhttps://docs.rke2.io/ rancher kubernetesl yaml deploy rancher serverHelm Deploy Online Rancher DemoHelm & Kubernetes Offline Deploy Rancher v2.7.5 Demohelm upgrade rancher server from v2…

Visual Studio 配置DLL

我们在用Visual Studio进行开发时&#xff0c;如果没有正确配置DLL&#xff0c;就会出现类似“丢失***.dll”的错误。DLL配置有哪些方法&#xff1f; 1、手动复制 将dll文件拷贝到生成的.exe所在的文件夹里 2、配置环境 在右键属性->配置属性->调试->环境&#xf…

防弹防线:彻底击败Redis缓存穿透问题【redis问题 一】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 防弹防线&#xff1a;彻底击败Redis缓存穿透问题 前言1. 缓存穿透定义和成因定义&#xff1a;缓存穿透的隐秘入侵成因分析&#xff1a;揭秘缓存穿透的幕后黑手故事描述 2. 缓存穿透的影响对数据库的影…

昇腾910平台安装驱动、固件、CANN toolkit、pytorch

本文使用的昇腾910平台操作系统是openEuler&#xff0c;之前没了解过&#xff0c;不过暂时感觉用起来和centOS差不多。系统架构是ARM&#xff0c;安装包基本都是带aarch64字样&#xff0c;注意和x86_64区别开&#xff0c;别下错了。 安装依赖 cmake 通过yum安装的cmake版本较…

Vscode新手安装与使用

安装与版本选择 VS Code 有两个不同的发布渠道&#xff1a;一个是我们经常使用的稳定版&#xff08;Stable&#xff09;&#xff0c;每个月发布一个主版本&#xff1b;另外一个发布渠道叫做 Insiders&#xff0c;每周一到周五 UTC 时间早上6点从最新的代码发布一个版本&#x…

Docker部署系列之Docker Compose安装Redis三主三从集群

总结/朱季谦 在日常开发或者编程当中&#xff0c;经常需要用到redis集群&#xff0c;若是按照传统的方式&#xff0c;一个机器一个机器搭建&#xff0c;难免过于繁琐&#xff0c;故而可以通过dock er-compose编排方式&#xff0c;快速搭建。我在搭建过程当中&#xff0c;将操作…

前后端分离nodejs+vue医院预约挂号系统6nrhh

医院预约挂号系统主要有管理员、用户和医生三个功能模块。以下将对这三个功能的作用进行详细的剖析。 运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架&#xff1a;Express/koa 前端:Vue.js 数据库&#xff1a;mysql 开发软件&#xff1a;VScode/webstorm/hbuiderx均…

LTPI协议的理解——4、LTPI链路初始化以及运行

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——4、LTPI链路初始化以及运行 前言状态图Link TrainingLink DetectLink SpeedLink Training Example Link ConfigurationAdvertiseConfigure & AcceptLi…

[Angular] 笔记 18:Angular Router

Angular Router 视频 chatgpt&#xff1a; Angular 具有内置的大量工具、功能和库&#xff0c;功能强大且经过良好设计&#xff0c;如组件化架构、依赖注入、模块化系统、路由和HTTP客户端等。这些功能可以直接用于项目中&#xff0c;无需额外的设置或第三方库。这简化了开发流…

nginx源码分析-3

这一章内容讲述nginx中的事件是如何一步步添加到epoll实例中的。 在初始化http连接的函数ngx_http_init_connection中&#xff0c;nginx为http连接初始化了处理请求的回调函数&#xff0c;之后调用ngx_handle_read_event函数对可读数据进行处理。这里只为连接设置read而没有设…

如何编写一个javaAgent jar工具包超详细教程

介绍 Java Agent技术 Java Agent技术是JDK提供的用来编写Java工具的技术&#xff0c;使用这种技术生成一种特殊的jar包&#xff0c;这种jar包可以让Java程序 运行其中的代码。 Java Agent技术的两种模式 Java Agent技术实现了让Java程序执行独立的Java Agent程序中的代码…

C语言编写Windows程序:组合启用/禁用Telnet客户端,并Telnet指定ip和端口

本文程序是将启用/禁用Telnet客户端的命令进行组合&#xff0c;单个命令的解析可参考文章&#xff1a; 启用/禁用Windows功能中的Telnet客户端的命令_()命令将阻止使用telnintel-CSDN博客 源代码如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include…

在 Golang 应用程序中管理多个数据库

掌握在 Golang 项目中处理多个数据库的艺术 在当前软件开发领域中&#xff0c;处理单个应用程序内的多个数据库的需求越来越普遍。具有强大功能的 Golang 是处理此类任务的绝佳解决方案&#xff0c;无论您是与多个数据源合作还是仅为增强组织和可扩展性而分隔数据。在本文中&a…