AnalogTerm2: Fix font loading bug erroneously going through mapping
authorMatthew Mondor <mmondor@pulsar-zone.net>
Wed, 26 Apr 2023 05:30:24 +0000 (05:30 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Wed, 26 Apr 2023 05:30:24 +0000 (05:30 +0000)
mmsoftware/analogterm2/src/draw.c
mmsoftware/analogterm2/src/font.c
mmsoftware/analogterm2/src/font.h

index 134469e..c09b8f3 100644 (file)
@@ -388,7 +388,7 @@ draw_lines(state_t *st, screen_t *sc, int low, int high)
 
                        row_modes[col] = m;
                        row_glyphs[col] = font_glyph(st, c,
-                           (m & TMODE_GFX) != 0);
+                           (m & TMODE_GFX) != 0, false);
 
                        /* XOR text cursor handling */
                        if (st->cursor_disabled_ticks == 0 &&
index 224bf21..a4dc40c 100644 (file)
@@ -410,13 +410,16 @@ font_reset(state_t *state)
  * uint8_t *[FONT_WIDTH], uint8_t *, ...
  */
 void *
-font_glyph(state_t *state, uint32_t c, bool decgfx)
+font_glyph(state_t *state, uint32_t c, bool decgfx, bool raw)
 {
        /* Default to unknown glyph */
        uint8_t (*glyph)[FONT_WIDTH] = state->font_unknown->glyphs[0];
        font_t *font;
        ftable_t *table;
 
+       if (raw)
+               goto raw;
+
        /*
         * Map unsupported glyphs to supported ones where relevant.
         * XXX May need a more generic mapping table eventually.
@@ -530,6 +533,8 @@ font_glyph(state_t *state, uint32_t c, bool decgfx)
        else if (cfg_uppercaseview && c > 96 && c < 123)
                c -= 32;
 
+raw:
+
        /* Glyph order character tables */
        for (table = state->ftable; table != NULL; table = table->next) {
                /* Check for possible empty user table */
@@ -565,7 +570,7 @@ font_edit(state_t *state, uint32_t c, int l, int v)
        int i;
 
        /* Can never be NULL but can be "unknown" */
-       if ((gl = font_glyph(state, c, false)) ==
+       if ((gl = font_glyph(state, c, false, true)) ==
            state->font_unknown->glyphs[0]) {
                /*
                 * Unknown, create new user glyph.
index 0bd3eb8..3a9e6ca 100644 (file)
@@ -61,7 +61,7 @@ struct ftable_s {
 void   font_init(state_t *, screen_t *);
 void   font_cleanup(state_t *);
 void   font_reset(state_t *);
-void   *font_glyph(state_t *, uint32_t, bool);
+void   *font_glyph(state_t *, uint32_t, bool, bool);
 void   font_edit(state_t *, uint32_t, int, int);