From 9a21d046e0daafa7174ebe6037bdb6527d2a4fc9 Mon Sep 17 00:00:00 2001 From: cuu Date: Sun, 20 Feb 2022 02:34:40 -0600 Subject: [PATCH] printing out cjk ok,but not perfect,need more advanced space between here and there --- Code/thermal_printer/devterm_thermal_printer.c | 4 +++- Code/thermal_printer/printer.c | 12 +++++++++--- Code/thermal_printer/printer.h | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Code/thermal_printer/devterm_thermal_printer.c b/Code/thermal_printer/devterm_thermal_printer.c index 6dd064d..9d64682 100644 --- a/Code/thermal_printer/devterm_thermal_printer.c +++ b/Code/thermal_printer/devterm_thermal_printer.c @@ -103,7 +103,7 @@ void init_printer(){ current_font.height = 16; current_font.data= font_ttf_Px437_PS2thin1_8x16; current_font.file = "NotoSansCJK-Regular.ttf"; - current_font.mode = 1; + current_font.mode = FONT_MODE_1; ser_cache.idx=0; ser_cache.utf8idx = 0; @@ -112,6 +112,7 @@ void init_printer(){ g_config.face = face; g_config.ft = ft; }else { + printf("init_ft error %s\n",error); g_config.face = NULL; g_config.ft = NULL; } @@ -664,6 +665,7 @@ void parse_serial_stream(CONFIG*cfg,uint8_t input_ch){ reset_cmd(); break; case ASCII_FF: + print_lines8(cfg); reset_cmd(); break; diff --git a/Code/thermal_printer/printer.c b/Code/thermal_printer/printer.c index e3cfa02..42dde3d 100644 --- a/Code/thermal_printer/printer.c +++ b/Code/thermal_printer/printer.c @@ -448,7 +448,8 @@ uint8_t print_lines_ft(CONFIG*cfg) { uint32_t codename; uint8_t *ch; - + printf("left = %d\n",left); + while( left>0 ) { i = lastidx; while(rowface, codename); FT_Load_Glyph (cfg->face, gi, FT_LOAD_DEFAULT); int bbox_ymax = cfg->face->bbox.yMax / 64; @@ -487,7 +488,7 @@ uint8_t print_lines_ft(CONFIG*cfg) { if(p) { dot_line_data[dot_line_idx ] |= 1<<(7-dot_line_bitsidx); } - + dot_line_bitsidx++; w++; line_bits++; @@ -548,6 +549,10 @@ uint8_t print_lines_ft(CONFIG*cfg) { uint8_t print_lines8(CONFIG*cfg) { + + if(cfg->font->mode == FONT_MODE_1) { + return print_lines_ft(cfg); + } uint8_t i,j,k; int8_t w; uint8_t *data; @@ -563,6 +568,7 @@ uint8_t print_lines8(CONFIG*cfg) { uint8_t lastidx,lastw,lastj; int8_t left; uint8_t rv; + pad = current_font.width %BITS8; diff --git a/Code/thermal_printer/printer.h b/Code/thermal_printer/printer.h index 0c127c2..d8acc4d 100644 --- a/Code/thermal_printer/printer.h +++ b/Code/thermal_printer/printer.h @@ -30,6 +30,7 @@ uint16_t read_adc(char*); uint16_t temperature(); int glob_file(char*); +uint8_t print_lines_ft(CONFIG*); uint8_t print_lines8(CONFIG*); uint8_t invert_bit(uint8_t a);