ESC/P2 Printer: Use the Courier font when Roman is set in non-proportional mode.

This commit is contained in:
OBattler
2025-08-28 18:30:01 +02:00
parent 1d878bbb25
commit 16d818ee1b

View File

@@ -520,7 +520,7 @@ update_font(escp_t *dev)
} else } else
switch (dev->lq_typeface) { switch (dev->lq_typeface) {
case TYPEFACE_ROMAN: case TYPEFACE_ROMAN:
fn = FONT_FILE_ROMAN; fn = (dev->font_style & STYLE_PROP) ? FONT_FILE_ROMAN : FONT_FILE_COURIER;
break; break;
case TYPEFACE_SANSSERIF: case TYPEFACE_SANSSERIF:
fn = FONT_FILE_SANSSERIF; fn = FONT_FILE_SANSSERIF;
@@ -890,7 +890,7 @@ process_char(escp_t *dev, uint8_t ch)
break; break;
case 0x21: /* master select (ESC !) */ case 0x21: /* master select (ESC !) */
dev->cpi = dev->esc_parms[0] & 0x01 ? 12.0 : 10.0; dev->cpi = (dev->esc_parms[0]) & 0x01 ? 12.0 : 10.0;
/* Reset first seven bits. */ /* Reset first seven bits. */
dev->font_style &= 0xFF80; dev->font_style &= 0xFF80;
@@ -1045,7 +1045,7 @@ process_char(escp_t *dev, uint8_t ch)
update_font(dev); update_font(dev);
break; break;
case 0x47: /* select dobule-strike printing (ESC G) */ case 0x47: /* select double-strike printing (ESC G) */
dev->font_style |= STYLE_DOUBLESTRIKE; dev->font_style |= STYLE_DOUBLESTRIKE;
break; break;
@@ -1098,7 +1098,7 @@ process_char(escp_t *dev, uint8_t ch)
break; break;
case 0x52: /* select an intl character set (ESC R) */ case 0x52: /* select an intl character set (ESC R) */
if (dev->esc_parms[0] <= 13 || dev->esc_parms[0] == 64) { if ((dev->esc_parms[0] <= 13) || (dev->esc_parms[0] == 64)) {
if (dev->esc_parms[0] == 64) if (dev->esc_parms[0] == 64)
dev->esc_parms[0] = 14; dev->esc_parms[0] = 14;
@@ -1118,9 +1118,9 @@ process_char(escp_t *dev, uint8_t ch)
break; break;
case 0x53: /* select superscript/subscript printing (ESC S) */ case 0x53: /* select superscript/subscript printing (ESC S) */
if (dev->esc_parms[0] == 0 || dev->esc_parms[0] == '0') if ((dev->esc_parms[0] == 0) || (dev->esc_parms[0] == '0'))
dev->font_style |= STYLE_SUBSCRIPT; dev->font_style |= STYLE_SUBSCRIPT;
if (dev->esc_parms[0] == 1 || dev->esc_parms[1] == '1') if ((dev->esc_parms[0] == 1) || (dev->esc_parms[1] == '1'))
dev->font_style |= STYLE_SUPERSCRIPT; dev->font_style |= STYLE_SUPERSCRIPT;
update_font(dev); update_font(dev);
break; break;
@@ -1137,9 +1137,9 @@ process_char(escp_t *dev, uint8_t ch)
case 0x57: /* turn double-width printing on/off (ESC W) */ case 0x57: /* turn double-width printing on/off (ESC W) */
if (!dev->multipoint_mode) { if (!dev->multipoint_mode) {
dev->hmi = -1; dev->hmi = -1;
if (dev->esc_parms[0] == 0 || dev->esc_parms[0] == '0') if ((dev->esc_parms[0] == 0) || (dev->esc_parms[0] == '0'))
dev->font_style &= ~STYLE_DOUBLEWIDTH; dev->font_style &= ~STYLE_DOUBLEWIDTH;
if (dev->esc_parms[0] == 1 || dev->esc_parms[0] == '1') if ((dev->esc_parms[0] == 1) || (dev->esc_parms[0] == '1'))
dev->font_style |= STYLE_DOUBLEWIDTH; dev->font_style |= STYLE_DOUBLEWIDTH;
update_font(dev); update_font(dev);
} }
@@ -1216,9 +1216,9 @@ process_char(escp_t *dev, uint8_t ch)
break; break;
case 0x6b: /* select typeface (ESC k) */ case 0x6b: /* select typeface (ESC k) */
if (dev->esc_parms[0] <= 11 || dev->esc_parms[0] == 30 || dev->esc_parms[0] == 31) { if ((dev->esc_parms[0] <= 11) || (dev->esc_parms[0] == 30) ||
(dev->esc_parms[0] == 31))
dev->lq_typeface = dev->esc_parms[0]; dev->lq_typeface = dev->esc_parms[0];
}
update_font(dev); update_font(dev);
break; break;
@@ -1229,9 +1229,9 @@ process_char(escp_t *dev, uint8_t ch)
break; break;
case 0x70: /* Turn proportional mode on/off (ESC p) */ case 0x70: /* Turn proportional mode on/off (ESC p) */
if (dev->esc_parms[0] == 0 || dev->esc_parms[0] == '0') if ((dev->esc_parms[0] == 0) || (dev->esc_parms[0] == '0'))
dev->font_style &= ~STYLE_PROP; dev->font_style &= ~STYLE_PROP;
if (dev->esc_parms[0] == 1 || dev->esc_parms[0] == '1') { if ((dev->esc_parms[0] == 1) || (dev->esc_parms[0] == '1')) {
dev->font_style |= STYLE_PROP; dev->font_style |= STYLE_PROP;
dev->print_quality = QUALITY_LQ; dev->print_quality = QUALITY_LQ;
} }
@@ -1264,20 +1264,20 @@ process_char(escp_t *dev, uint8_t ch)
case 0x77: /* turn double-height printing on/off (ESC w) */ case 0x77: /* turn double-height printing on/off (ESC w) */
if (!dev->multipoint_mode) { if (!dev->multipoint_mode) {
if (dev->esc_parms[0] == 0 || dev->esc_parms[0] == '0') if ((dev->esc_parms[0] == 0) || (dev->esc_parms[0] == '0'))
dev->font_style &= ~STYLE_DOUBLEHEIGHT; dev->font_style &= ~STYLE_DOUBLEHEIGHT;
if (dev->esc_parms[0] == 1 || dev->esc_parms[0] == '1') if ((dev->esc_parms[0] == 1) || (dev->esc_parms[0] == '1'))
dev->font_style |= STYLE_DOUBLEHEIGHT; dev->font_style |= STYLE_DOUBLEHEIGHT;
update_font(dev); update_font(dev);
} }
break; break;
case 0x78: /* select LQ or draft (ESC x) */ case 0x78: /* select LQ or draft (ESC x) */
if (dev->esc_parms[0] == 0 || dev->esc_parms[0] == '0') { if ((dev->esc_parms[0] == 0) || (dev->esc_parms[0] == '0')) {
dev->print_quality = QUALITY_DRAFT; dev->print_quality = QUALITY_DRAFT;
dev->font_style |= STYLE_CONDENSED; dev->font_style |= STYLE_CONDENSED;
} }
if (dev->esc_parms[0] == 1 || dev->esc_parms[0] == '1') { if ((dev->esc_parms[0] == 1) || (dev->esc_parms[0] == '1')) {
dev->print_quality = QUALITY_LQ; dev->print_quality = QUALITY_LQ;
dev->font_style &= ~STYLE_CONDENSED; dev->font_style &= ~STYLE_CONDENSED;
} }