FontMasterFontType 字體類型設(shè)置
項(xiàng)目介紹
1、字體設(shè)置 FontType 字體類型設(shè)置,可以選擇系統(tǒng)字體或者其他字體,在選擇系統(tǒng)字體的時候,可以通過Font屬性選擇字體名稱,在選擇其他字體的時候,可以通過Font屬性選擇ttf字庫文件的路徑。 Font 字體名稱或者字體路徑設(shè)置。 Size 字體大小設(shè)置,一般情況下,字體大小和字體高度是相同的。 Blod 字體粗體選擇。 Italic 字體斜體選擇。 CharCode 字符編碼選擇,影響字符集的大小,也影響生成字庫的編碼順序。可以選擇MBCS多字節(jié)編碼方式,此方式一般為計(jì)算機(jī)本地化后的內(nèi)碼,或者選擇Unicode編碼方式,此方式編碼的區(qū)間更大,可以兼容更多的字符集。
2、取模設(shè)置 Rotate 取模順時針旋轉(zhuǎn)角度,可以選擇0,90,180,270度。注意這個設(shè)置不影響生成字庫的字模寬度!生成字庫的字模寬度始終為未旋轉(zhuǎn)之前的寬度。 FlipX 取模X方向鏡像。 FlipY 取模Y方向鏡像。 Padding 分別設(shè)置在取模上下左右額外擴(kuò)充的空白數(shù)。
3、編碼設(shè)置 SourceType 選擇編碼的設(shè)置方式,可以選擇分段編碼或者索引表的方式。通過Source設(shè)置具體的分段或者索引表 Source 打開編碼內(nèi)容設(shè)置對話框,設(shè)置編碼內(nèi)容。在分段編碼時,設(shè)置分段編碼的范圍,以“,”分隔,如 “0x0020-0x007F,0xB0:A1-0xF7:FE”。在索引表方式時,直接輸入需要編碼的字符串即可,如“測試編碼”。在輸入完成后,可以使用排序查重對輸入內(nèi)容進(jìn)行檢查。 BitsFirst 設(shè)置字節(jié)內(nèi)編碼順序是MSBFirst或者LSBFist。 BitsPolariry 設(shè)置字節(jié)內(nèi)編碼的位極性,可以為高有效或低有效 Round 設(shè)置編碼的回轉(zhuǎn)方式,可以設(shè)置為在一行編碼完成后回轉(zhuǎn)到下一行編碼或者在編碼完成一個字節(jié)后,就回轉(zhuǎn)到下一行編碼,最后一行編碼完成后,再次回到第一行編碼,如此往復(fù)。 ScanX 水平掃描方式,可以選擇“從左到右”或者“從右到左”。 ScanY 垂直掃描方式,可以選擇“從上到下”或者從下到上”。 ScanXY 設(shè)置掃描先后順序,可以選擇“先水平后垂直”或者“先垂直后水平”。
4、數(shù)據(jù)結(jié)構(gòu) typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t;
#define FONT_STYLE_BLOD 0x0001 /* bit0 1~Blod */
#define FONT_STYLE_ITALIC 0x0002 /* bit1 1~Italic */
#define FONT_STYLE_ROTATE 0x0030 /* bit5~4 Rotate 0~0,1~90... */
#define FONT_STYLE_FLIPX 0x0040 /* bit6 1~FlipX */
#define FONT_STYLE_FLIPY 0x0080 /* bit7 1~FlipY */
#define FONT_STYLE_MSB_FIRST 0x0100 /* bit8 0~LSBFirst,1~MSBFirst */
#define FONT_STYLE_HIGH_POLARITY 0x0200 /* bit9 0~LowPolarity,1~HighPolarity */
#define FONT_STYLE_LINE_ROUND 0x0400 /* bit10 0~ByteRound,1~LineRound */
#define FONT_STYLE_SCANX 0x1000 /* bit12 0~Left to Right,1~Right to Left */
#define FONT_STYLE_SCANY 0x2000 /* bit 13 0~Top to Bottom,1~Bottom to Top */
#define FONT_STYLE_SCANXY 0x4000 /* bit14 0~Horizontal then Vertical,1~Vertical then Horizontal */
#define FONT_ROTATE_0 0x0000 /* bit5~4 Rotate 0~0,1~90... */
#define FONT_ROTATE_90 0x0010
#define FONT_ROTATE_180 0x0020
#define FONT_ROTATE_270 0x0030
typedef struct _font_header
{
uint8_t magic[4]; /* "FNT" + X */
uint16_t style; /* the font style */
uint16_t height; /* the font height */
uint16_t codepage; /* 936 GB2312, 1200 Unicode */
uint8_t padding[4]; /* left, top, right, bottom padding */
uint16_t total_sections; /* total sections */
uint16_t total_chars; /* total characters */
uint32_t total_size; /* file total size or data total size */
} font_header_t;
typedef struct _font_section
{
uint16_t first; /* first character */
uint16_t last; /* last character */
uint32_t offset; /* the first font_index offset */
} font_section_t;
typedef struct _font_index
{
uint16_t width; /* the width of the character */
uint32_t offset; /* the font bitmap data offset */
} font_index_t;