diff options
author | Keith Packard <keithp@keithp.com> | 2004-10-04 08:30:35 +0000 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2004-10-04 08:30:35 +0000 |
commit | 3c0c7451e419104918657d05ee9ba86c36315cd7 (patch) | |
tree | 9727f4b2cf9d1a8c7a0b0b3ab0067b95f1a5ff1e | |
parent | e27025eda79dbf6428c20d2d0dd635ddffaa3fba (diff) | |
download | libtwin-3c0c7451e419104918657d05ee9ba86c36315cd7.tar.gz |
Delete old glyph representation support code.
Oops -- overflow not handled correctly in distance functions.
Replace new glyphs with versions using splines.
Whack around the default presentation a bit more
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | twin_font.c | 320 | ||||
-rw-r--r-- | twin_geom.c | 4 | ||||
-rw-r--r-- | twin_glyphs.c | 1592 | ||||
-rw-r--r-- | xtwin.c | 13 |
5 files changed, 341 insertions, 1602 deletions
@@ -1,5 +1,19 @@ 2004-10-04 Keith Packard <keithp@keithp.com> + * twin_font.c: (twin_has_ucs4), (twin_path_ucs4): + Delete old glyph representation support code. + + * twin_geom.c: (_twin_distance_to_line_squared): + Oops -- overflow not handled correctly in distance functions. + + * twin_glyphs.c: + Replace new glyphs with versions using splines. + + * xtwin.c: (main): + Whack around the default presentation a bit more + +2004-10-04 Keith Packard <keithp@keithp.com> + * twin.h: * twin_draw.c: (twin_composite): Fix a clipping bug diff --git a/twin_font.c b/twin_font.c index ba052b3..c23c291 100644 --- a/twin_font.c +++ b/twin_font.c @@ -41,7 +41,7 @@ twin_bool_t twin_has_ucs4 (twin_ucs4_t ucs4) { - return ucs4 <= TWIN_FONT_MAX && _twin_glyph_offsets[ucs4] != 0; + return ucs4 <= TWIN_FONT_MAX && _twin_g_offsets[ucs4] != 0; } #define SNAPI(p) (((p) + 0x7fff) & ~0xffff) @@ -87,14 +87,6 @@ _snap (twin_path_t *path, twin_gfixed_t g, twin_gfixed_t *snap, int nsnap) #define SNAPX(p) _snap (path, p, snap_x, nsnap_x) #define SNAPY(p) _snap (path, p, snap_y, nsnap_y) -static const twin_gpoint_t * -_twin_ucs4_base(twin_ucs4_t ucs4) -{ - if (ucs4 > TWIN_FONT_MAX) ucs4 = 0; - - return _twin_glyphs + _twin_glyph_offsets[ucs4]; -} - static const signed char * _twin_g_base (twin_ucs4_t ucs4) { @@ -167,310 +159,6 @@ twin_text_metrics_ucs4 (twin_path_t *path, m->font_descent = font_ascent + Margin(pen_size); } -#include <stdio.h> - -#define TWIN_MAX_POINTS 50 -#define TWIN_MAX_STROKE 50 - -typedef enum { twin_gmove, twin_gline, twin_gcurve } twin_gcmd_t; - -typedef struct _twin_gop { - twin_gcmd_t cmd; - twin_gpoint_t p[3]; -} twin_gop_t; - -typedef struct _twin_stroke { - int n; - twin_gpoint_t p[TWIN_MAX_STROKE]; -} twin_stroke_t; - -typedef struct _twin_snap { - int n; - twin_gfixed_t s[TWIN_MAX_POINTS]; -} twin_snap_t; - -typedef struct _twin_glyph { - twin_ucs4_t ucs4; - int offset; - twin_bool_t exists; - twin_gfixed_t left, right, top, bottom; - int n; - twin_stroke_t s[TWIN_MAX_STROKE]; - int nop; - twin_gop_t op[TWIN_MAX_STROKE]; - twin_snap_t snap_x; - twin_snap_t snap_y; -} twin_glyph_t; - -static twin_glyph_t glyphs[0x80]; - -static void -twin_add_snap (twin_snap_t *snap, twin_gfixed_t v) -{ - int n; - - for (n = 0; n < snap->n; n++) - { - if (snap->s[n] == v) - return; - if (snap->s[n] > v) - break; - } - memmove (&snap->s[n+1], &snap->s[n], snap->n - n); - snap->s[n] = v; - snap->n++; -} - -static int -twin_n_in_spline (twin_gpoint_t *p, int n) -{ - return 0; -} - -static void -twin_spline_fit (twin_gpoint_t *p, int n, twin_gpoint_t *c1, twin_gpoint_t *c2) -{ -} - -static char * -_ucs4_string (twin_ucs4_t ucs4) -{ - static char buf[10]; - if (ucs4 < ' ' || ucs4 > '~') - { - if (!ucs4) - return "\\0"; - sprintf (buf, "\\0%o", ucs4); - return buf; - } - sprintf (buf, "%c", ucs4); - return buf; -} - -static twin_gfixed_t -px (const twin_gpoint_t *p, int i) -{ - return p[i].x << 1; -} - -static twin_gfixed_t -py (const twin_gpoint_t *p, int i) -{ - return p[i].y << 1; -} - -static void -twin_dump_glyphs (void) -{ - twin_ucs4_t ucs4; - int offset = 0; - int i, j; - twin_gop_t *gop; - - for (ucs4 = 0; ucs4 < 0x80; ucs4++) - { - const twin_gpoint_t *p = _twin_ucs4_base (ucs4); - twin_glyph_t *g = &glyphs[ucs4]; - twin_stroke_t *s; - twin_gfixed_t origin; - twin_gfixed_t left, right, top, bottom; - twin_gfixed_t baseline; - twin_gfixed_t x, y; - twin_bool_t move; - - g->ucs4 = ucs4; - g->n = 0; - - if (ucs4 && p == _twin_glyphs) continue; - - if (p[1].y == -64) - { - origin = 0; - left = 0; - right = 4; - top = 18; - bottom = 18; - baseline = 18; - } - else - { - origin = 64; - left = 64; - right = -64; - top = 64; - bottom = -64; - baseline = 18; - for (i = 1, move = TWIN_TRUE; p[i].y != -64; i++) - { - if (p[i].x == -64) { move = TWIN_TRUE; continue; } - if (py(p,i) <= baseline && px(p,i) < origin) origin = px(p,i); - if (px(p,i) < left) left = px(p,i); - if (px(p,i) > right) right = px(p,i); - if (py(p,i) < top) top = py(p,i); - if (py(p,i) > bottom) bottom = py(p,i); - move = TWIN_FALSE; - } - } - left -= origin; - right -= origin;; - bottom -= baseline; - top -= baseline; - - /* - * Convert from hershey format to internal format - */ - for (i = 1, move = TWIN_TRUE; p[i].y != -64; i++) - { - if (p[i].x == -64) { move = TWIN_TRUE; continue; } - - x = px(p,i) - origin; - y = py(p,i) - baseline; - if (move) - if (g->s[g->n].n) - ++g->n; - s = &g->s[g->n]; - s->p[s->n].x = x; - s->p[s->n].y = y; - s->n++; - - move = TWIN_FALSE; - } - if (g->s[g->n].n) - ++g->n; - - g->left = left; - g->right = right; - g->top = top; - g->bottom = bottom; - - /* - * Find snap points - */ - twin_add_snap (&g->snap_x, 0); /* origin */ - twin_add_snap (&g->snap_x, right); /* right */ - - twin_add_snap (&g->snap_y, 0); /* baseline */ - twin_add_snap (&g->snap_y, -15); /* x height */ - twin_add_snap (&g->snap_y, -21); /* cap height */ - - for (i = 0; i < g->n; i++) - { - s = &g->s[i]; - for (j = 0; j < s->n - 1; j++) - { - if (s->p[j].x == s->p[j+1].x) - twin_add_snap (&g->snap_x, s->p[j].x); - if (s->p[j].y == s->p[j+1].y) - twin_add_snap (&g->snap_y, s->p[j].y); - } - } - - /* - * Now convert to gops and try to locate splines - */ - - gop = &g->op[0]; - for (i = 0; i < g->n; i++) - { - s = &g->s[i]; - gop->cmd = twin_gmove; - gop->p[0] = s->p[0]; - gop++; - for (j = 0; j < s->n - 1;) - { - int ns = twin_n_in_spline (s->p + j, s->n - j); - - if (ns) - { - twin_spline_fit (s->p + j, ns, - &gop->p[0], &gop->p[1]); - gop->cmd = twin_gcurve; - gop->p[2] = s->p[j + ns - 1]; - gop++; - j += ns; - } - else - { - gop->cmd = twin_gline; - gop->p[0] = s->p[j+1]; - gop++; - j++; - } - } - } - g->nop = gop - &g->op[0]; - g->exists = TWIN_TRUE; - } - - printf ("const signed char _twin_gtable[] = {\n"); - for (ucs4 = 0; ucs4 < 0x80; ucs4++) - { - twin_glyph_t *g = &glyphs[ucs4]; - - if (!g->exists) continue; - - g->offset = offset; - - printf ("/* 0x%x '%s' */\n", g->ucs4, _ucs4_string (g->ucs4)); - printf (" %d, %d, %d, %d, %d, %d,\n", - g->left, g->right, -g->top, g->bottom, g->snap_x.n, g->snap_y.n); - - offset += 6; - - printf (" "); - for (i = 0; i < g->snap_x.n; i++) - printf (" %d,", g->snap_x.s[i]); - printf (" /* snap_x */\n"); - - offset += g->snap_x.n; - - printf (" "); - for (i = 0; i < g->snap_y.n; i++) - printf (" %d,", g->snap_y.s[i]); - printf (" /* snap_y */\n"); - - offset += g->snap_y.n; - -#define CO(n) gop->p[n].x, gop->p[n].y - for (i = 0; i < g->nop; i++) - { - gop = &g->op[i]; - switch (gop->cmd) { - case twin_gmove: - printf (" 'm', %d, %d,\n", CO(0)); - offset += 3; - break; - case twin_gline: - printf (" 'l', %d, %d,\n", CO(0)); - offset += 3; - break; - case twin_gcurve: - printf (" 'c', %d, %d, %d, %d, %d, %d,\n", - CO(0), CO(1), CO(2)); - offset += 7; - break; - } - } - printf (" 'e',\n"); - offset++; - } - printf ("};\n\n"); - printf ("const uint16_t _twin_g_offsets[] = {"); - for (ucs4 = 0; ucs4 < 0x80; ucs4++) - { - twin_glyph_t *g = &glyphs[ucs4]; - - if ((ucs4 & 7) == 0) - printf ("\n "); - else - printf (" "); - printf ("%4d,", g->offset); - } - printf ("\n};\n"); - fflush (stdout); - exit (0); -} - void twin_path_ucs4 (twin_path_t *path, twin_ucs4_t ucs4) { @@ -485,12 +173,6 @@ twin_path_ucs4 (twin_path_t *path, twin_ucs4_t ucs4) twin_matrix_t pen_matrix; twin_text_metrics_t metrics; - if (0) - { - static int been_here = 0; - if (!been_here) { been_here = 1; twin_dump_glyphs (); } - } - twin_text_metrics_ucs4 (path, ucs4, &metrics); origin = _twin_path_current_spoint (path); diff --git a/twin_geom.c b/twin_geom.c index 82dcee9..e682d7a 100644 --- a/twin_geom.c +++ b/twin_geom.c @@ -56,8 +56,10 @@ _twin_distance_to_line_squared (twin_spoint_t *p, twin_spoint_t *p1, twin_spoint twin_dfixed_t den, num; num = A * p->x + B * p->y + C; + if (num < 0) + num = -num; den = A * A + B * B; - if (den == 0 || num >= 0x10000) + if (den == 0 || num >= 0x8000) return _twin_distance_to_point_squared (p, p1); else return (num * num) / den; diff --git a/twin_glyphs.c b/twin_glyphs.c index 1dfe1ab..fbb53c8 100644 --- a/twin_glyphs.c +++ b/twin_glyphs.c @@ -24,458 +24,36 @@ #include "twinint.h" -const twin_gpoint_t _twin_glyphs[] = { -/* box for missing chars */ - { -9, 9 }, { -6, 8 }, { -6, -12 }, { 6, -12 }, { 6, 9 }, { -6, 9 }, - { -64, -64 }, -/* space */ - { -4, 4 }, { -64, -64 }, -/* ! */ - { -5, 5 }, { 0, -12 }, { 0, 2 }, { -64, 0 }, - { 0, 7 }, { -1, 8 }, { 0, 9 }, { 1, 8 }, { 0, 7 }, { -64, -64 }, -/* " */ - { -8, 8 }, { -4, -12 }, { -4, -5 }, { -64, 0 }, - { 4, -12 }, { 4, -5 }, { -64, -64 }, -/* # */ - { -10, 11 }, { 1, -16 }, { -6, 16 }, { -64, 0 }, - { 7, -16 }, { 0, 16 }, { -64, 0 }, - { -6, -3 }, { 8, -3 }, { -64, 0 }, - { -7, 3 }, { 7, 3 }, { -64, -64 }, -/* $ */ - { -10, 10 }, { -2, -16 }, { -2, 13 }, { -64, 0 }, - { 2, -16 }, { 2, 13 }, { -64, 0 }, - { 7, -9 }, { 5, -11 }, { 2, -12 }, { -2, -12 }, { -5, -11 }, { -7, -9 }, - { -7, -7 }, { -6, -5 }, { -5, -4 }, { -3, -3 }, { 3, -1 }, { 5, 0 }, - { 6, 1 }, { 7, 3 }, { 7, 6 }, { 5, 8 }, { 2, 9 }, { -2, 9 }, { -5, 8 }, - { -7, 6 }, { -64, -64 }, -/* % */ - { -12, 12 }, { 9, -12 }, { -9, 9 }, { -64, 0 }, - { -4, -12 }, { -2, -10 }, { -2, -8 }, { -3, -6 }, { -5, -5 }, { -7, -5 }, - { -9, -7 }, { -9, -9 }, { -8, -11 }, { -6, -12 }, { -4, -12 }, { -2, -11 }, - { 1, -10 }, { 4, -10 }, { 7, -11 }, { 9, -12 }, { -64, 0 }, - { 5, 2 }, { 3, 3 }, { 2, 5 }, { 2, 7 }, { 4, 9 }, { 6, 9 }, - { 8, 8 }, { 9, 6 }, { 9, 4 }, { 7, 2 }, { 5, 2 }, { -64, -64 }, -/* & */ - { -13, 13 }, { 10, -3 }, { 10, -4 }, { 9, -5 }, { 8, -5 }, { 7, -4 }, - { 6, -2 }, { 4, 3 }, { 2, 6 }, { 0, 8 }, { -2, 9 }, { -6, 9 }, { -8, 8 }, - { -9, 7 }, { -10, 5 }, { -10, 3 }, { -9, 1 }, { -8, 0 }, { -1, -4 }, - { 0, -5 }, { 1, -7 }, { 1, -9 }, { 0, -11 }, { -2, -12 }, { -4, -11 }, - { -5, -9 }, { -5, -7 }, { -4, -4 }, { -2, -1 }, { 3, 6 }, { 5, 8 }, - { 7, 9 }, { 9, 9 }, { 10, 8 }, { 10, 7 }, { -64, -64 }, -/* ' */ - { -5, 5 }, { 0, -10 }, { -1, -11 }, { 0, -12 }, { 1, -11 }, { 1, -9 }, - { 0, -7 }, { -1, -6 }, { -64, -64 }, -/* ( */ - { -7, 7 }, { 4, -16 }, { 2, -14 }, { 0, -11 }, { -2, -7 }, { -3, -2 }, - { -3, 2 }, { -2, 7 }, { 0, 11 }, { 2, 14 }, { 4, 16 }, { -64, -64 }, -/* ) */ - { -7, 7 }, { -4, -16 }, { -2, -14 }, { 0, -11 }, { 2, -7 }, { 3, -2 }, - { 3, 2 }, { 2, 7 }, { 0, 11 }, { -2, 14 }, { -4, 16 }, { -64, -64 }, -/* * */ - { -8, 8 }, { 0, -6 }, { 0, 6 }, { -64, 0 }, - { -5, -3 }, { 5, 3 }, { -64, 0 }, - { 5, -3 }, { -5, 3 }, { -64, -64 }, -/* + */ - { -13, 13 }, { 0, -9 }, { 0, 9 }, { -64, 0 }, - { -9, 0 }, { 9, 0 }, { -64, -64 }, -/* , */ - { -5, 5 }, { 1, 8 }, { 0, 9 }, { -1, 8 }, { 0, 7 }, { 1, 8 }, - { 1, 10 }, { 0, 12 }, { -1, 13 }, { -64, -64 }, -/* - */ - { -13, 13 }, { -9, 0 }, { 9, 0 }, { -64, -64 }, -/* . */ - { -5, 5 }, { 0, 7 }, { -1, 8 }, { 0, 9 }, { 1, 8 }, { 0, 7 }, { -64, -64 }, -/* / */ - { -11, 11 }, { 9, -16 }, { -9, 16 }, { -64, -64 }, -/* 0 */ - { -10, 10 }, { -1, -12 }, { -4, -11 }, { -6, -8 }, { -7, -3 }, { -7, 0 }, - { -6, 5 }, { -4, 8 }, { -1, 9 }, { 1, 9 }, { 4, 8 }, { 6, 5 }, { 7, 0 }, - { 7, -3 }, { 6, -8 }, { 4, -11 }, { 1, -12 }, { -1, -12 }, { -64, -64 }, -/* 1 */ - { -10, 10 }, { -4, -8 }, { -2, -9 }, { 1, -12 }, { 1, 9 }, { -64, -64 }, -/* 2 */ - { -10, 10 }, { -6, -7 }, { -6, -8 }, { -5, -10 }, { -4, -11 }, { -2, -12 }, - { 2, -12 }, { 4, -11 }, { 5, -10 }, { 6, -8 }, { 6, -6 }, { 5, -4 }, - { 3, -1 }, { -7, 9 }, { 7, 9 }, { -64, -64 }, -/* 3 */ - { -10, 10 }, { -5, -12 }, { 6, -12 }, { 0, -4 }, { 3, -4 }, { 5, -3 }, - { 6, -2 }, { 7, 1 }, { 7, 3 }, { 6, 6 }, { 4, 8 }, { 1, 9 }, { -2, 9 }, - { -5, 8 }, { -6, 7 }, { -7, 5 }, { -64, -64 }, -/* 4 */ - { -10, 10 }, { 3, -12 }, { -7, 2 }, { 8, 2 }, { -64, 0 }, - { 3, -12 }, { 3, 9 }, { -64, -64 }, -/* 5 */ - { -10, 10 }, { 5, -12 }, { -5, -12 }, { -6, -3 }, { -5, -4 }, { -2, -5 }, - { 1, -5 }, { 4, -4 }, { 6, -2 }, { 7, 1 }, { 7, 3 }, { 6, 6 }, { 4, 8 }, - { 1, 9 }, { -2, 9 }, { -5, 8 }, { -6, 7 }, { -7, 5 }, { -64, -64 }, -/* 6 */ - { -10, 10 }, { 6, -9 }, { 5, -11 }, { 2, -12 }, { 0, -12 }, { -3, -11 }, - { -5, -8 }, { -6, -3 }, { -6, 2 }, { -5, 6 }, { -3, 8 }, { 0, 9 }, - { 1, 9 }, { 4, 8 }, { 6, 6 }, { 7, 3 }, { 7, 2 }, { 6, -1 }, - { 4, -3 }, { 1, -4 }, { 0, -4 }, { -3, -3 }, { -5, -1 }, { -6, 2 }, - { -64, -64 }, -/* 7 */ - { -10, 10 }, { 7, -12 }, { -3, 9 }, { -64, 0 }, - { -7, -12 }, { 7, -12 }, { -64, -64 }, -/* 8 */ - { -10, 10 }, { -2, -12 }, { -5, -11 }, { -6, -9 }, { -6, -7 }, { -5, -5 }, - { -3, -4 }, { 1, -3 }, { 4, -2 }, { 6, 0 }, { 7, 2 }, { 7, 5 }, - { 6, 7 }, { 5, 8 }, { 2, 9 }, { -2, 9 }, { -5, 8 }, { -6, 7 }, - { -7, 5 }, { -7, 2 }, { -6, 0 }, { -4, -2 }, { -1, -3 }, { 3, -4 }, - { 5, -5 }, { 6, -7 }, { 6, -9 }, { 5, -11 }, { 2, -12 }, { -2, -12 }, - { -64, -64 }, -/* 9 */ - { -10, 10 }, { 6, -5 }, { 5, -2 }, { 3, 0 }, { 0, 1 }, { -1, 1 }, - { -4, 0 }, { -6, -2 }, { -7, -5 }, { -7, -6 }, { -6, -9 }, { -4, -11 }, - { -1, -12 }, { 0, -12 }, { 3, -11 }, { 5, -9 }, { 6, -5 }, { 6, 0 }, - { 5, 5 }, { 3, 8 }, { 0, 9 }, { -2, 9 }, { -5, 8 }, { -6, 6 }, { -64, -64 }, -/* : */ - { -5, 5 }, { 0, -5 }, { -1, -4 }, { 0, -3 }, { 1, -4 }, { 0, -5 }, - { -64, 0 }, - { 0, 7 }, { -1, 8 }, { 0, 9 }, { 1, 8 }, { 0, 7 }, { -64, -64 }, -/* ; */ - { -5, 5 }, { 0, -5 }, { -1, -4 }, { 0, -3 }, { 1, -4 }, { 0, -5 }, - { -64, 0 }, - { 1, 8 }, { 0, 9 }, { -1, 8 }, { 0, 7 }, { 1, 8 }, { 1, 10 }, - { 0, 12 }, { -1, 13 }, { -64, -64 }, -/* < */ - { -12, 12 }, { 8, -9 }, { -8, 0 }, { 8, 9 }, { -64, -64 }, -/* = */ - { -13, 13 }, { -9, -3 }, { 9, -3 }, { -64, 0 }, - { -9, 3 }, { 9, 3 }, { -64, -64 }, -/* > */ - { -12, 12 }, { -8, -9 }, { 8, 0 }, { -8, 9 }, { -64, -64 }, -/* ? */ - { -9, 9 }, { -6, -7 }, { -6, -8 }, { -5, -10 }, { -4, -11 }, { -2, -12 }, - { 2, -12 }, { 4, -11 }, { 5, -10 }, { 6, -8 }, { 6, -6 }, { 5, -4 }, - { 4, -3 }, { 0, -1 }, { 0, 2 }, { -64, 0 }, - { 0, 7 }, { -1, 8 }, { 0, 9 }, { 1, 8 }, { 0, 7 }, { -64, -64 }, -/* @ */ - { -13, 14 }, { 5, -4 }, { 4, -6 }, { 2, -7 }, { -1, -7 }, { -3, -6 }, - { -4, -5 }, { -5, -2 }, { -5, 1 }, { -4, 3 }, { -2, 4 }, { 1, 4 }, - { 3, 3 }, { 4, 1 }, { -64, 0 }, { -1, -7 }, { -3, -5 }, { -4, -2 }, - { -4, 1 }, { -3, 3 }, { -2, 4 }, { -64, 0 }, { 5, -7 }, { 4, 1 }, - { 4, 3 }, { 6, 4 }, { 8, 4 }, { 10, 2 }, { 11, -1 }, { 11, -3 }, - { 10, -6 }, { 9, -8 }, { 7, -10 }, { 5, -11 }, { 2, -12 }, { -1, -12 }, - { -4, -11 }, { -6, -10 }, { -8, -8 }, { -9, -6 }, { -10, -3 }, { -10, 0 }, - { -9, 3 }, { -8, 5 }, { -6, 7 }, { -4, 8 }, { -1, 9 }, { 2, 9 }, - { 5, 8 }, { 7, 7 }, { 8, 6 }, { -64, 0 }, { 6, -7 }, { 5, 1 }, - { 5, 3 }, { 6, 4 }, { -64, -64 }, -/* A */ - { -9, 9 }, { 0, -12 }, { -8, 9 }, { -64, 0 }, - { 0, -12 }, { 8, 9 }, { -64, 0 }, - { -5, 2 }, { 5, 2 }, { -64, -64 }, -/* B */ - { -11, 10 }, { -7, -12 }, { -7, 9 }, { -64, 0 }, - { -7, -12 }, { 2, -12 }, { 5, -11 }, { 6, -10 }, { 7, -8 }, { 7, -6 }, - { 6, -4 }, { 5, -3 }, { 2, -2 }, { -64, 0 }, - { -7, -2 }, { 2, -2 }, { 5, -1 }, { 6, 0 }, { 7, 2 }, { 7, 5 }, - { 6, 7 }, { 5, 8 }, { 2, 9 }, { -7, 9 }, { -64, -64 }, -/* C */ - { -10, 11 }, { 8, -7 }, { 7, -9 }, { 5, -11 }, { 3, -12 }, { -1, -12 }, - { -3, -11 }, { -5, -9 }, { -6, -7 }, { -7, -4 }, { -7, 1 }, { -6, 4 }, - { -5, 6 }, { -3, 8 }, { -1, 9 }, { 3, 9 }, { 5, 8 }, { 7, 6 }, - { 8, 4 }, { -64, -64 }, -/* D */ - { -11, 10 }, { -7, -12 }, { -7, 9 }, { -64, 0 }, - { -7, -12 }, { 0, -12 }, { 3, -11 }, { 5, -9 }, { 6, -7 }, { 7, -4 }, - { 7, 1 }, { 6, 4 }, { 5, 6 }, { 3, 8 }, { 0, 9 }, { -7, 9 }, - { -64, -64 }, -/* E */ - { -10, 9 }, { -6, -12 }, { -6, 9 }, { -64, 0 }, - { -6, -12 }, { 7, -12 }, { -64, 0 }, - { -6, -2 }, { 2, -2 }, { -64, 0 }, - { -6, 9 }, { 7, 9 }, { -64, -64 }, -/* F */ - { -10, 8 }, { -6, -12 }, { -6, 9 }, { -64, 0 }, - { -6, -12 }, { 7, -12 }, { -64, 0 }, - { -6, -2 }, { 2, -2 }, { -64, -64 }, -/* G */ - { -10, 11 }, { 8, -7 }, { 7, -9 }, { 5, -11 }, { 3, -12 }, { -1, -12 }, - { -3, -11 }, { -5, -9 }, { -6, -7 }, { -7, -4 }, { -7, 1 }, { -6, 4 }, - { -5, 6 }, { -3, 8 }, { -1, 9 }, { 3, 9 }, { 5, 8 }, { 7, 6 }, - { 8, 4 }, { 8, 1 }, { -64, 0 }, - { 3, 1 }, { 8, 1 }, { -64, -64 }, -/* H */ - { -11, 11 }, { -7, -12 }, { -7, 9 }, { -64, 0 }, - { 7, -12 }, { 7, 9 }, { -64, 0 }, - { -7, -2 }, { 7, -2 }, { -64, -64 }, -/* I */ - { -4, 4 }, { 0, -12 }, { 0, 9 }, { -64, -64 }, -/* J */ - { -8, 8 }, { 4, -12 }, { 4, 4 }, { 3, 7 }, { 2, 8 }, { 0, 9 }, - { -2, 9 }, { -4, 8 }, { -5, 7 }, { -6, 4 }, { -6, 2 }, { -64, -64 }, -/* K */ - { -11, 10 }, { -7, -12 }, { -7, 9 }, { -64, 0 }, - { 7, -12 }, { -7, 2 }, { -64, 0 }, - { -2, -3 }, { 7, 9 }, { -64, -64 }, -/* L */ - { -10, 7 }, { -6, -12 }, { -6, 9 }, { -64, 0 }, - { -6, 9 }, { 6, 9 }, { -64, -64 }, -/* M */ - { -12, 12 }, { -8, -12 }, { -8, 9 }, { -64, 0 }, - { -8, -12 }, { 0, 9 }, { -64, 0 }, - { 8, -12 }, { 0, 9 }, { -64, 0 }, - { 8, -12 }, { 8, 9 }, { -64, -64 }, -/* N */ - { -11, 11 }, { -7, -12 }, { -7, 9 }, { -64, 0 }, - { -7, -12 }, { 7, 9 }, { -64, 0 }, - { 7, -12 }, { 7, 9 }, { -64, -64 }, -/* O */ - { -11, 11 }, { -2, -12 }, { -4, -11 }, { -6, -9 }, { -7, -7 }, { -8, -4 }, - { -8, 1 }, { -7, 4 }, { -6, 6 }, { -4, 8 }, { -2, 9 }, { 2, 9 }, - { 4, 8 }, { 6, 6 }, { 7, 4 }, { 8, 1 }, { 8, -4 }, { 7, -7 }, - { 6, -9 }, { 4, -11 }, { 2, -12 }, { -2, -12 }, { -64, -64 }, -/* P */ - { -11, 10 }, { -7, -12 }, { -7, 9 }, { -64, 0 }, - { -7, -12 }, { 2, -12 }, { 5, -11 }, { 6, -10 }, { 7, -8 }, { 7, -5 }, - { 6, -3 }, { 5, -2 }, { 2, -1 }, { -7, -1 }, { -64, -64 }, -/* Q */ - { -11, 11 }, { -2, -12 }, { -4, -11 }, { -6, -9 }, { -7, -7 }, { -8, -4 }, - { -8, 1 }, { -7, 4 }, { -6, 6 }, { -4, 8 }, { -2, 9 }, { 2, 9 }, - { 4, 8 }, { 6, 6 }, { 7, 4 }, { 8, 1 }, { 8, -4 }, { 7, -7 }, - { 6, -9 }, { 4, -11 }, { 2, -12 }, { -2, -12 }, { -64, 0 }, - { 1, 5 }, { 7, 11 }, { -64, -64 }, -/* R */ - { -11, 10 }, { -7, -12 }, { -7, 9 }, { -64, 0 }, - { -7, -12 }, { 2, -12 }, { 5, -11 }, { 6, -10 }, { 7, -8 }, { 7, -6 }, - { 6, -4 }, { 5, -3 }, { 2, -2 }, { -7, -2 }, { -64, 0 }, - { 0, -2 }, { 7, 9 }, { -64, -64 }, -/* S */ - { -10, 10 }, { 7, -9 }, { 5, -11 }, { 2, -12 }, { -2, -12 }, { -5, -11 }, - { -7, -9 }, { -7, -7 }, { -6, -5 }, { -5, -4 }, { -3, -3 }, { 3, -1 }, - { 5, 0 }, { 6, 1 }, { 7, 3 }, { 7, 6 }, { 5, 8 }, { 2, 9 }, - { -2, 9 }, { -5, 8 }, { -7, 6 }, { -64, -64 }, -/* T */ - { -8, 8 }, { 0, -12 }, { 0, 9 }, { -64, 0 }, - { -7, -12 }, { 7, -12 }, { -64, -64 }, -/* U */ - { -11, 11 }, { -7, -12 }, { -7, 3 }, { -6, 6 }, { -4, 8 }, { -1, 9 }, - { 1, 9 }, { 4, 8 }, { 6, 6 }, { 7, 3 }, { 7, -12 }, { -64, -64 }, -/* V */ - { -9, 9 }, { -8, -12 }, { 0, 9 }, { -64, 0 }, - { 8, -12 }, { 0, 9 }, { -64, -64 }, -/* W */ - { -12, 12 }, { -10, -12 }, { -5, 9 }, { -64, 0 }, - { 0, -12 }, { -5, 9 }, { -64, 0 }, - { 0, -12 }, { 5, 9 }, { -64, 0 }, - { 10, -12 }, { 5, 9 }, { -64, -64 }, -/* X */ - { -10, 10 }, { -7, -12 }, { 7, 9 }, { -64, 0 }, - { 7, -12 }, { -7, 9 }, { -64, -64 }, -/* Y */ - { -9, 9 }, { -8, -12 }, { 0, -2 }, { 0, 9 }, { -64, 0 }, - { 8, -12 }, { 0, -2 }, { -64, -64 }, -/* Z */ - { -10, 10 }, { 7, -12 }, { -7, 9 }, { -64, 0 }, - { -7, -12 }, { 7, -12 }, { -64, 0 }, - { -7, 9 }, { 7, 9 }, { -64, -64 }, -/* [ */ - { -7, 7 }, { 4, -13 }, { -3, -13 }, { -3, 9 }, { 4, 9 }, { -64, -64 }, -/* \ */ - { -11, 11 }, { -9, -16 }, { 9, 16 }, { -64, -64 }, -/* ] */ - { -7, 7 }, { -4, -13 }, { 3, -13 }, { 3, 9 }, { -4, 9 }, { -64, -64 }, -/* ^ */ - { -8, 8 }, { 0, -14 }, { -8, 0 }, { -64, 0 }, - { 0, -14 }, { 8, 0 }, { -64, -64 }, -/* _ */ - { -13, 13 }, { -9, 9 }, { 9, 9 }, { -64, -64 }, -/* ` */ - { -5, 5 }, { 1, -12 }, { 0, -11 }, { -1, -9 }, { -1, -7 }, { 0, -6 }, - { 1, -7 }, { 0, -8 }, { -64, -64 }, -/* a */ - { -9, 10 }, { 6, -5 }, { 6, 9 }, { -64, 0 }, - { 6, -2 }, { 4, -4 }, { 2, -5 }, { -1, -5 }, { -3, -4 }, { -5, -2 }, - { -6, 1 }, { -6, 3 }, { -5, 6 }, { -3, 8 }, { -1, 9 }, { 2, 9 }, - { 4, 8 }, { 6, 6 }, { -64, -64 }, -/* b */ - { -10, 9 }, { -6, -12 }, { -6, 9 }, { -64, 0 }, - { -6, -2 }, { -4, -4 }, { -2, -5 }, { 1, -5 }, { 3, -4 }, { 5, -2 }, - { 6, 1 }, { 6, 3 }, { 5, 6 }, { 3, 8 }, { 1, 9 }, { -2, 9 }, - { -4, 8 }, { -6, 6 }, { -64, -64 }, -/* c */ - { -9, 9 }, { 6, -2 }, { 4, -4 }, { 2, -5 }, { -1, -5 }, { -3, -4 }, - { -5, -2 }, { -6, 1 }, { -6, 3 }, { -5, 6 }, { -3, 8 }, { -1, 9 }, - { 2, 9 }, { 4, 8 }, { 6, 6 }, { -64, -64 }, -/* d */ - { -9, 10 }, { 6, -12 }, { 6, 9 }, { -64, 0 }, - { 6, -2 }, { 4, -4 }, { 2, -5 }, { -1, -5 }, { -3, -4 }, { -5, -2 }, - { -6, 1 }, { -6, 3 }, { -5, 6 }, { -3, 8 }, { -1, 9 }, { 2, 9 }, - { 4, 8 }, { 6, 6 }, { -64, -64 }, -/* e */ - { -9, 9 }, { -6, 1 }, { 6, 1 }, { 6, -1 }, { 5, -3 }, { 4, -4 }, - { 2, -5 }, { -1, -5 }, { -3, -4 }, { -5, -2 }, { -6, 1 }, { -6, 3 }, - { -5, 6 }, { -3, 8 }, { -1, 9 }, { 2, 9 }, { 4, 8 }, { 6, 6 }, - { -64, -64 }, -/* f */ - { -5, 7 }, { 5, -12 }, { 3, -12 }, { 1, -11 }, { 0, -8 }, { 0, 9 }, - { -64, 0 }, - { -3, -5 }, { 4, -5 }, { -64, -64 }, -/* g */ - { -9, 10 }, { 6, -5 }, { 6, 11 }, { 5, 14 }, { 4, 15 }, { 2, 16 }, - { -1, 16 }, { -3, 15 }, { -64, 0 }, - { 6, -2 }, { 4, -4 }, { 2, -5 }, { -1, -5 }, { -3, -4 }, { -5, -2 }, - { -6, 1 }, { -6, 3 }, { -5, 6 }, { -3, 8 }, { -1, 9 }, { 2, 9 }, - { 4, 8 }, { 6, 6 }, { -64, -64 }, -/* h */ - { -9, 10 }, { -5, -12 }, { -5, 9 }, { -64, 0 }, - { -5, -1 }, { -2, -4 }, { 0, -5 }, { 3, -5 }, { 5, -4 }, { 6, -1 }, - { 6, 9 }, { -64, -64 }, -/* i */ - { -4, 4 }, { -1, -12 }, { 0, -11 }, { 1, -12 }, { 0, -13 }, { -1, -12 }, - { -64, 0 }, - { 0, -5 }, { 0, 9 }, { -64, -64 }, -/* j */ - { -5, 5 }, { 0, -12 }, { 1, -11 }, { 2, -12 }, { 1, -13 }, { 0, -12 }, - { -64, 0 }, - { 1, -5 }, { 1, 12 }, { 0, 15 }, { -2, 16 }, { -4, 16 }, { -64, -64 }, -/* k */ - { -9, 8 }, { -5, -12 }, { -5, 9 }, { -64, 0 }, - { 5, -5 }, { -5, 5 }, { -64, 0 }, - { -1, 1 }, { 6, 9 }, { -64, -64 }, -/* l */ - { -4, 4 }, { 0, -12 }, { 0, 9 }, { -64, -64 }, -/* m */ - { -15, 15 }, { -11, -5 }, { -11, 9 }, { -64, 0 }, - { -11, -1 }, { -8, -4 }, { -6, -5 }, { -3, -5 }, { -1, -4 }, { 0, -1 }, - { 0, 9 }, { -64, 0 }, - { 0, -1 }, { 3, -4 }, { 5, -5 }, { 8, -5 }, { 10, -4 }, { 11, -1 }, - { 11, 9 }, { -64, -64 }, -/* n */ - { -9, 10 }, { -5, -5 }, { -5, 9 }, { -64, 0 }, - { -5, -1 }, { -2, -4 }, { 0, -5 }, { 3, -5 }, { 5, -4 }, { 6, -1 }, - { 6, 9 }, { -64, -64 }, -/* o */ - { -9, 10 }, { -1, -5 }, { -3, -4 }, { -5, -2 }, { -6, 1 }, { -6, 3 }, - { -5, 6 }, { -3, 8 }, { -1, 9 }, { 2, 9 }, { 4, 8 }, { 6, 6 }, - { 7, 3 }, { 7, 1 }, { 6, -2 }, { 4, -4 }, { 2, -5 }, { -1, -5 }, - { -64, -64 }, -/* p */ - { -10, 9 }, { -6, -5 }, { -6, 16 }, { -64, 0 }, - { -6, -2 }, { -4, -4 }, { -2, -5 }, { 1, -5 }, { 3, -4 }, { 5, -2 }, - { 6, 1 }, { 6, 3 }, { 5, 6 }, { 3, 8 }, { 1, 9 }, { -2, 9 }, - { -4, 8 }, { -6, 6 }, { -64, -64 }, -/* q */ - { -9, 10 }, { 6, -5 }, { 6, 16 }, { -64, 0 }, - { 6, -2 }, { 4, -4 }, { 2, -5 }, { -1, -5 }, { -3, -4 }, { -5, -2 }, - { -6, 1 }, { -6, 3 }, { -5, 6 }, { -3, 8 }, { -1, 9 }, { 2, 9 }, - { 4, 8 }, { 6, 6 }, { -64, -64 }, -/* r */ - { -7, 6 }, { -3, -5 }, { -3, 9 }, { -64, 0 }, - { -3, 1 }, { -2, -2 }, { 0, -4 }, { 2, -5 }, { 5, -5 }, { -64, -64 }, -/* s */ - { -8, 9 }, { 6, -2 }, { 5, -4 }, { 2, -5 }, { -1, -5 }, { -4, -4 }, - { -5, -2 }, { -4, 0 }, { -2, 1 }, { 3, 2 }, { 5, 3 }, { 6, 5 }, - { 6, 6 }, { 5, 8 }, { 2, 9 }, { -1, 9 }, { -4, 8 }, { -5, 6 }, - { -64, -64 }, -/* t */ - { -5, 7 }, { 0, -12 }, { 0, 5 }, { 1, 8 }, { 3, 9 }, { 5, 9 }, - { -64, 0 }, - { -3, -5 }, { 4, -5 }, { -64, -64 }, -/* u */ - { -9, 10 }, { -5, -5 }, { -5, 5 }, { -4, 8 }, { -2, 9 }, { 1, 9 }, - { 3, 8 }, { 6, 5 }, { -64, 0 }, - { 6, -5 }, { 6, 9 }, { -64, -64 }, -/* v */ - { -8, 8 }, { -6, -5 }, { 0, 9 }, { -64, 0 }, - { 6, -5 }, { 0, 9 }, { -64, -64 }, -/* w */ - { -11, 11 }, { -8, -5 }, { -4, 9 }, { -64, 0 }, - { 0, -5 }, { -4, 9 }, { -64, 0 }, - { 0, -5 }, { 4, 9 }, { -64, 0 }, - { 8, -5 }, { 4, 9 }, { -64, -64 }, -/* x */ - { -8, 9 }, { -5, -5 }, { 6, 9 }, { -64, 0 }, - { 6, -5 }, { -5, 9 }, { -64, -64 }, -/* y */ - { -8, 8 }, { -6, -5 }, { 0, 9 }, { -64, 0 }, - { 6, -5 }, { 0, 9 }, { -2, 13 }, { -4, 15 }, { -6, 16 }, { -7, 16 }, - { -64, -64 }, -/* z */ - { -8, 9 }, { 6, -5 }, { -5, 9 }, { -64, 0 }, - { -5, -5 }, { 6, -5 }, { -64, 0 }, - { -5, 9 }, { 6, 9 }, { -64, -64 }, -/* { */ - { -5, 7 }, { 5, -13 }, { 3, -13 }, { 1, -12 }, { 0, -9 }, { 0, -3 }, - { -3, -3 }, { 0, -3 }, { 0, 5 }, { 1, 8 }, { 3, 9 }, { 5, 9 }, - { -64, -64 }, -/* | */ - { -4, 4 }, { 0, -16 }, { 0, 16 }, { -64, -64 }, -/* } */ - { -7, 5 }, { -5, -13 }, { -3, -13 }, { -1, -12 }, { 0, -9 }, { 0, -3 }, - { 3, -3 }, { 0, -3 }, { 0, 5 }, { -1, 8 }, { -3, 9 }, { -5, 9 }, - { -64, -64 }, -/* ~ */ - { -12, 12 }, { -9, 2 }, { -9, 1 }, { -8, -2 }, { -6, -3 }, { -4, -3 }, - { -2, -2 }, { 2, 2 }, { 4, 3 }, { 6, 3 }, { 8, 2 }, { 9, -1 }, - { 9, -2 }, { -64, -64 }, -}; - -const uint16_t _twin_glyph_offsets[] = { -/* 0x00 */ - 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x08 */ - 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x10 */ - 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x18 */ - 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x20 */ - 7, 9, 19, 26, 39, 67, 100, 136, -/* 0x28 */ - 145, 157, 169, 179, 186, 196, 200, 207, -/* 0x30 */ - 211, 230, 236, 252, 269, 277, 296, 321, -/* 0x38 */ - 328, 359, 384, 397, 413, 418, 425, 430, -/* 0x40 */ - 452, 509, 519, 544, 564, 581, 594, 604, -/* 0x48 */ - 628, 638, 642, 654, 664, 671, 684, 694, -/* 0x50 */ - 717, 732, 758, 776, 798, 805, 817, 824, -/* 0x58 */ - 837, 844, 852, 862, 868, 872, 878, 885, -/* 0x60 */ - 889, 898, 917, 936, 952, 971, 990, 1000, -/* 0x68 */ - 1024, 1036, 1046, 1059, 1069, 1073, 1093, 1105, -/* 0x70 */ - 1124, 1143, 1162, 1172, 1191, 1201, 1213, 1220, -/* 0x78 */ - 1233, 1240, 1251, 1261, 1274, 1278, 1291, 0, -}; const signed char _twin_gtable[] = { -/* 0x0 '\0' */ +/* 0x0 '\0' offset 0 */ 0, 24, 42, 0, 2, 4, 0, 24, /* snap_x */ -42, -21, -15, 0, /* snap_y */ - 'm', 0, -2, + 'm', 0, 0, 'l', 0, -42, 'l', 24, -42, 'l', 24, 0, 'l', 0, 0, 'e', -/* 0x20 ' ' */ +/* 0x20 ' ' offset 28 */ 0, 4, 0, 0, 2, 3, -128, 0, /* snap_x */ -21, -15, 0, /* snap_y */ 'e', -/* 0x21 '!' */ +/* 0x21 '!' offset 40 */ 0, 4, 42, 0, 3, 3, 0, 2, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 2, -42, 'l', 2, -14, 'm', 2, -4, - 'l', 0, -2, - 'l', 2, 0, - 'l', 4, -2, - 'l', 2, -4, + 'c', 1, -4, 0, -3, 0, -2, + 'c', 0, -1, 1, 0, 2, 0, + 'c', 3, 0, 4, -1, 4, -2, + 'c', 4, -3, 3, -4, 2, -4, 'e', -/* 0x22 '"' */ +/* 0x22 '"' offset 90 */ 0, 16, 42, -28, 2, 3, 0, 16, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -484,7 +62,7 @@ const signed char _twin_gtable[] = { 'm', 16, -42, 'l', 16, -28, 'e', -/* 0x23 '#' */ +/* 0x23 '#' offset 114 */ 0, 30, 50, 14, 2, 5, 0, 30, /* snap_x */ -24, -21, -15, -12, 0, /* snap_y */ @@ -497,7 +75,7 @@ const signed char _twin_gtable[] = { 'm', 0, -12, 'l', 28, -12, 'e', -/* 0x24 '$' */ +/* 0x24 '$' offset 152 */ 0, 28, 50, 8, 4, 4, 0, 10, 18, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ @@ -506,142 +84,69 @@ const signed char _twin_gtable[] = { 'm', 18, -50, 'l', 18, 8, 'm', 28, -36, - 'l', 24, -40, - 'l', 18, -42, - 'l', 10, -42, - 'l', 4, -40, - 'l', 0, -36, - 'l', 0, -32, - 'l', 2, -28, - 'l', 4, -26, - 'l', 8, -24, - 'l', 20, -20, - 'l', 24, -18, - 'l', 26, -16, - 'l', 28, -12, - 'l', 28, -6, - 'l', 24, -2, - 'l', 18, 0, - 'l', 10, 0, - 'l', 4, -2, - 'l', 0, -6, - 'e', -/* 0x25 '%' */ + 'c', 24, -42, 18, -42, 14, -42, + 'c', 10, -42, 0, -42, 0, -34, + 'c', 0, -25, 8, -24, 14, -22, + 'c', 20, -20, 28, -19, 28, -9, + 'c', 28, 0, 18, 0, 14, 0, + 'c', 10, 0, 4, 0, 0, -6, + 'e', +/* 0x25 '%' offset 224 */ 0, 36, 42, 0, 4, 7, 0, 14, 22, 36, /* snap_x */ -42, -38, -28, -21, -15, -14, 0, /* snap_y */ 'm', 36, -42, 'l', 0, 0, 'm', 10, -42, - 'l', 14, -38, - 'l', 14, -34, - 'l', 12, -30, - 'l', 8, -28, - 'l', 4, -28, - 'l', 0, -32, - 'l', 0, -36, - 'l', 2, -40, - 'l', 6, -42, + 'c', 12, -41, 14, -40, 14, -36, + 'c', 14, -30, 11, -28, 6, -28, + 'c', 2, -28, 0, -30, 0, -34, + 'c', 0, -39, 3, -42, 8, -42, 'l', 10, -42, - 'l', 14, -40, - 'l', 20, -38, - 'l', 26, -38, - 'l', 32, -40, - 'l', 36, -42, + 'c', 18, -37, 28, -37, 36, -42, 'm', 28, -14, - 'l', 24, -12, - 'l', 22, -8, - 'l', 22, -4, - 'l', 26, 0, - 'l', 30, 0, - 'l', 34, -2, - 'l', 36, -6, - 'l', 36, -10, - 'l', 32, -14, + 'c', 24, -14, 22, -11, 22, -6, + 'c', 22, -2, 24, 0, 28, 0, + 'c', 33, 0, 36, -2, 36, -8, + 'c', 36, -12, 34, -14, 30, -14, 'l', 28, -14, 'e', -/* 0x26 '&' */ +/* 0x26 '&' offset 323 */ 0, 40, 42, 0, 4, 4, 0, 10, 22, 40, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 40, -24, - 'l', 40, -26, - 'l', 38, -28, - 'l', 36, -28, - 'l', 34, -26, - 'l', 32, -22, - 'l', 28, -12, - 'l', 24, -6, - 'l', 20, -2, - 'l', 16, 0, - 'l', 8, 0, - 'l', 4, -2, - 'l', 2, -4, - 'l', 0, -8, - 'l', 0, -12, - 'l', 2, -16, - 'l', 4, -18, - 'l', 18, -26, - 'l', 20, -28, - 'l', 22, -32, - 'l', 22, -36, - 'l', 20, -40, - 'l', 16, -42, - 'l', 12, -40, - 'l', 10, -36, - 'l', 10, -32, - 'l', 12, -26, - 'l', 16, -20, - 'l', 26, -6, - 'l', 30, -2, - 'l', 34, 0, - 'l', 38, 0, - 'l', 40, -2, - 'l', 40, -4, - 'e', -/* 0x27 ''' */ + 'c', 40, -27, 39, -28, 37, -28, + 'c', 29, -28, 32, 0, 12, 0, + 'c', 0, 0, 0, -8, 0, -10, + 'c', 0, -24, 22, -20, 22, -34, + 'c', 22, -45, 10, -45, 10, -34, + 'c', 10, -27, 25, 0, 36, 0, + 'c', 39, 0, 40, -1, 40, -4, + 'e', +/* 0x27 ''' offset 390 */ 0, 4, 42, -30, 2, 3, 0, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 2, -38, - 'l', 0, -40, - 'l', 2, -42, - 'l', 4, -40, - 'l', 4, -36, - 'l', 2, -32, - 'l', 0, -30, - 'e', -/* 0x28 '(' */ + 'c', -1, -38, -1, -42, 2, -42, + 'c', 6, -42, 5, -33, 0, -30, + 'e', +/* 0x28 '(' offset 419 */ 0, 14, 50, 14, 2, 3, 0, 14, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 14, -50, - 'l', 10, -46, - 'l', 6, -40, - 'l', 2, -32, - 'l', 0, -22, - 'l', 0, -14, - 'l', 2, -4, - 'l', 6, 4, - 'l', 10, 10, - 'l', 14, 14, + 'c', -5, -32, -5, -5, 14, 14, 'e', -/* 0x29 ')' */ +/* 0x29 ')' offset 441 */ 0, 14, 50, 14, 2, 3, 0, 14, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -50, - 'l', 4, -46, - 'l', 8, -40, - 'l', 12, -32, - 'l', 14, -22, - 'l', 14, -14, - 'l', 12, -4, - 'l', 8, 4, - 'l', 4, 10, - 'l', 0, 14, + 'c', 19, -34, 19, -2, 0, 14, 'e', -/* 0x2a '*' */ +/* 0x2a '*' offset 463 */ 0, 20, 30, -6, 3, 3, 0, 10, 20, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -652,7 +157,7 @@ const signed char _twin_gtable[] = { 'm', 20, -24, 'l', 0, -12, 'e', -/* 0x2b '+' */ +/* 0x2b '+' offset 494 */ 0, 36, 36, 0, 3, 4, 0, 18, 36, /* snap_x */ -21, -18, -15, 0, /* snap_y */ @@ -661,114 +166,78 @@ const signed char _twin_gtable[] = { 'm', 0, -18, 'l', 36, -18, 'e', -/* 0x2c ',' */ +/* 0x2c ',' offset 520 */ 0, 4, 4, 8, 2, 3, 0, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 4, -2, - 'l', 2, 0, - 'l', 0, -2, - 'l', 2, -4, - 'l', 4, -2, - 'l', 4, 2, - 'l', 2, 6, - 'l', 0, 8, + 'c', 4, 1, 0, 1, 0, -2, + 'c', 0, -5, 4, -5, 4, -2, + 'c', 4, 4, 2, 6, 0, 8, 'e', -/* 0x2d '-' */ +/* 0x2d '-' offset 556 */ 0, 36, 18, -18, 2, 4, 0, 36, /* snap_x */ -21, -18, -15, 0, /* snap_y */ 'm', 0, -18, 'l', 36, -18, 'e', -/* 0x2e '.' */ +/* 0x2e '.' offset 575 */ 0, 4, 4, 0, 2, 3, 0, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 2, -4, - 'l', 0, -2, - 'l', 2, 0, - 'l', 4, -2, - 'l', 2, -4, + 'c', -1, -4, -1, 0, 2, 0, + 'c', 5, 0, 5, -4, 2, -4, 'e', -/* 0x2f '/' */ - -36, 0, 50, 14, 1, 3, - 0, /* snap_x */ +/* 0x2f '/' offset 604 */ + 0, 36, 50, 14, 2, 3, + 0, 36, /* snap_x */ -21, -15, 0, /* snap_y */ - 'm', 0, -50, - 'l', -36, 14, + 'm', 36, -50, + 'l', 0, 14, 'e', -/* 0x30 '0' */ +/* 0x30 '0' offset 622 */ 0, 28, 42, 0, 2, 4, 0, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ - 'm', 12, -42, - 'l', 6, -40, - 'l', 2, -34, - 'l', 0, -24, - 'l', 0, -18, - 'l', 2, -8, - 'l', 6, -2, - 'l', 12, 0, - 'l', 16, 0, - 'l', 22, -2, - 'l', 26, -8, - 'l', 28, -18, - 'l', 28, -24, - 'l', 26, -34, - 'l', 22, -40, - 'l', 16, -42, - 'l', 12, -42, - 'e', -/* 0x31 '1' */ + 'm', 14, -42, + 'c', 9, -42, 0, -42, 0, -21, + 'c', 0, 0, 9, 0, 14, 0, + 'c', 19, 0, 28, 0, 28, -21, + 'c', 28, -42, 19, -42, 14, -42, + 'e', +/* 0x31 '1' offset 666 */ 0, 10, 42, 0, 2, 3, 0, 10, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -34, - 'l', 4, -36, - 'l', 10, -42, + 'c', 4, -35, 8, -38, 10, -42, 'l', 10, 0, 'e', -/* 0x32 '2' */ +/* 0x32 '2' offset 691 */ 0, 28, 42, 0, 4, 4, 0, 2, 26, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ 'm', 2, -32, - 'l', 2, -34, - 'l', 4, -38, - 'l', 6, -40, - 'l', 10, -42, - 'l', 18, -42, - 'l', 22, -40, - 'l', 24, -38, - 'l', 26, -34, - 'l', 26, -30, - 'l', 24, -26, - 'l', 20, -20, + 'c', 2, -34, 2, -42, 14, -42, + 'c', 26, -42, 26, -34, 26, -32, + 'c', 26, -30, 25, -25, 10, -10, 'l', 0, 0, 'l', 28, 0, 'e', -/* 0x33 '3' */ +/* 0x33 '3' offset 736 */ 0, 28, 42, 0, 2, 5, 0, 28, /* snap_x */ -42, -26, -21, -15, 0, /* snap_y */ 'm', 4, -42, 'l', 26, -42, 'l', 14, -26, - 'l', 20, -26, - 'l', 24, -24, - 'l', 26, -22, - 'l', 28, -16, - 'l', 28, -12, - 'l', 26, -6, - 'l', 22, -2, - 'l', 16, 0, - 'l', 10, 0, - 'l', 4, -2, - 'l', 2, -4, - 'l', 0, -8, + 'c', 21, -26, 28, -26, 28, -14, + 'c', 28, 0, 17, 0, 13, 0, + 'c', 8, 0, 3, -1, 0, -8, 'e', -/* 0x34 '4' */ +/* 0x34 '4' offset 780 */ 0, 30, 42, 0, 3, 4, 0, 20, 30, /* snap_x */ -21, -15, -14, 0, /* snap_y */ @@ -778,57 +247,31 @@ const signed char _twin_gtable[] = { 'm', 20, -42, 'l', 20, 0, 'e', -/* 0x35 '5' */ +/* 0x35 '5' offset 809 */ 0, 28, 42, 0, 2, 5, 0, 28, /* snap_x */ -42, -28, -21, -15, 0, /* snap_y */ 'm', 24, -42, 'l', 4, -42, 'l', 2, -24, - 'l', 4, -26, - 'l', 10, -28, - 'l', 16, -28, - 'l', 22, -26, - 'l', 26, -22, - 'l', 28, -16, - 'l', 28, -12, - 'l', 26, -6, - 'l', 22, -2, - 'l', 16, 0, - 'l', 10, 0, - 'l', 4, -2, - 'l', 2, -4, - 'l', 0, -8, + 'c', 5, -27, 10, -28, 13, -28, + 'c', 16, -28, 28, -28, 28, -14, + 'c', 28, 0, 16, 0, 13, 0, + 'c', 10, 0, 3, 0, 0, -8, 'e', -/* 0x36 '6' */ +/* 0x36 '6' offset 860 */ 0, 26, 42, 0, 2, 5, 0, 26, /* snap_x */ -42, -26, -21, -15, 0, /* snap_y */ 'm', 24, -36, - 'l', 22, -40, - 'l', 16, -42, - 'l', 12, -42, - 'l', 6, -40, - 'l', 2, -34, - 'l', 0, -24, - 'l', 0, -14, - 'l', 2, -6, - 'l', 6, -2, - 'l', 12, 0, - 'l', 14, 0, - 'l', 20, -2, - 'l', 24, -6, - 'l', 26, -12, - 'l', 26, -14, - 'l', 24, -20, - 'l', 20, -24, - 'l', 14, -26, - 'l', 12, -26, - 'l', 6, -24, - 'l', 2, -20, - 'l', 0, -14, - 'e', -/* 0x37 '7' */ + 'c', 22, -41, 19, -42, 14, -42, + 'c', 9, -42, 0, -41, 0, -19, + 'c', 0, -1, 9, 0, 13, 0, + 'c', 18, 0, 26, -3, 26, -13, + 'c', 26, -18, 23, -26, 13, -26, + 'c', 10, -26, 1, -24, 0, -14, + 'e', +/* 0x37 '7' offset 919 */ 0, 28, 42, 0, 2, 4, 0, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ @@ -837,102 +280,54 @@ const signed char _twin_gtable[] = { 'm', 0, -42, 'l', 28, -42, 'e', -/* 0x38 '8' */ +/* 0x38 '8' offset 944 */ 0, 28, 42, 0, 4, 4, 0, 2, 26, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ - 'm', 10, -42, - 'l', 4, -40, - 'l', 2, -36, - 'l', 2, -32, - 'l', 4, -28, - 'l', 8, -26, - 'l', 16, -24, - 'l', 22, -22, - 'l', 26, -18, - 'l', 28, -14, - 'l', 28, -8, - 'l', 26, -4, - 'l', 24, -2, - 'l', 18, 0, - 'l', 10, 0, - 'l', 4, -2, - 'l', 2, -4, - 'l', 0, -8, - 'l', 0, -14, - 'l', 2, -18, - 'l', 6, -22, - 'l', 12, -24, - 'l', 20, -26, - 'l', 24, -28, - 'l', 26, -32, - 'l', 26, -36, - 'l', 24, -40, - 'l', 18, -42, - 'l', 10, -42, - 'e', -/* 0x39 '9' */ + 'm', 14, -42, + 'c', 5, -42, 2, -40, 2, -34, + 'c', 2, -18, 28, -32, 28, -11, + 'c', 28, 0, 18, 0, 14, 0, + 'c', 10, 0, 0, 0, 0, -11, + 'c', 0, -32, 26, -18, 26, -34, + 'c', 26, -40, 23, -42, 14, -42, + 'e', +/* 0x39 '9' offset 1004 */ 0, 26, 42, 0, 2, 5, 0, 26, /* snap_x */ -42, -21, -16, -15, 0, /* snap_y */ 'm', 26, -28, - 'l', 24, -22, - 'l', 20, -18, - 'l', 14, -16, - 'l', 12, -16, - 'l', 6, -18, - 'l', 2, -22, - 'l', 0, -28, - 'l', 0, -30, - 'l', 2, -36, - 'l', 6, -40, - 'l', 12, -42, - 'l', 14, -42, - 'l', 20, -40, - 'l', 24, -36, - 'l', 26, -28, - 'l', 26, -18, - 'l', 24, -8, - 'l', 20, -2, - 'l', 14, 0, - 'l', 10, 0, - 'l', 4, -2, - 'l', 2, -6, - 'e', -/* 0x3a ':' */ + 'c', 25, -16, 13, -16, 13, -16, + 'c', 8, -16, 0, -19, 0, -29, + 'c', 0, -34, 3, -42, 13, -42, + 'c', 24, -42, 26, -32, 26, -23, + 'c', 26, -14, 24, 0, 12, 0, + 'c', 7, 0, 4, -2, 2, -6, + 'e', +/* 0x3a ':' offset 1063 */ 0, 4, 28, 0, 2, 3, 0, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 2, -28, - 'l', 0, -26, - 'l', 2, -24, - 'l', 4, -26, - 'l', 2, -28, + 'c', -1, -28, -1, -24, 2, -24, + 'c', 5, -24, 5, -28, 2, -28, 'm', 2, -4, - 'l', 0, -2, - 'l', 2, 0, - 'l', 4, -2, - 'l', 2, -4, + 'c', -1, -4, -1, 0, 2, 0, + 'c', 5, 0, 5, -4, 2, -4, 'e', -/* 0x3b ';' */ +/* 0x3b ';' offset 1109 */ 0, 4, 28, 8, 2, 3, 0, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 2, -28, - 'l', 0, -26, - 'l', 2, -24, - 'l', 4, -26, - 'l', 2, -28, + 'c', -1, -28, -1, -24, 2, -24, + 'c', 5, -24, 5, -28, 2, -28, 'm', 4, -2, - 'l', 2, 0, - 'l', 0, -2, - 'l', 2, -4, - 'l', 4, -2, - 'l', 4, 2, - 'l', 2, 6, - 'l', 0, 8, + 'c', 4, 1, 0, 1, 0, -2, + 'c', 0, -5, 4, -5, 4, -2, + 'c', 4, 3, 2, 6, 0, 8, 'e', -/* 0x3c '<' */ +/* 0x3c '<' offset 1162 */ 0, 32, 36, 0, 2, 3, 0, 32, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -940,7 +335,7 @@ const signed char _twin_gtable[] = { 'l', 0, -18, 'l', 32, 0, 'e', -/* 0x3d '=' */ +/* 0x3d '=' offset 1183 */ 0, 36, 24, -12, 2, 5, 0, 36, /* snap_x */ -24, -21, -15, -12, 0, /* snap_y */ @@ -949,7 +344,7 @@ const signed char _twin_gtable[] = { 'm', 0, -12, 'l', 36, -12, 'e', -/* 0x3e '>' */ +/* 0x3e '>' offset 1209 */ 0, 32, 36, 0, 2, 3, 0, 32, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -957,88 +352,36 @@ const signed char _twin_gtable[] = { 'l', 32, -18, 'l', 0, 0, 'e', -/* 0x3f '?' */ +/* 0x3f '?' offset 1230 */ 0, 24, 42, 0, 3, 4, 0, 12, 24, /* snap_x */ -42, -21, -15, 0, /* snap_y */ 'm', 0, -32, - 'l', 0, -34, - 'l', 2, -38, - 'l', 4, -40, - 'l', 8, -42, - 'l', 16, -42, - 'l', 20, -40, - 'l', 22, -38, - 'l', 24, -34, - 'l', 24, -30, - 'l', 22, -26, - 'l', 20, -24, - 'l', 12, -20, + 'c', 0, -34, 0, -42, 12, -42, + 'c', 24, -42, 24, -34, 24, -32, + 'c', 24, -29, 24, -24, 12, -20, 'l', 12, -14, 'm', 12, -4, - 'l', 10, -2, - 'l', 12, 0, - 'l', 14, -2, - 'l', 12, -4, + 'c', 9, -4, 9, 0, 12, 0, + 'c', 15, 0, 15, -4, 12, -4, 'e', -/* 0x40 '@' */ +/* 0x40 '@' offset 1288 */ 0, 42, 42, 0, 1, 6, 30, /* snap_x */ -42, -32, -21, -15, -10, 0, /* snap_y */ 'm', 30, -26, - 'l', 28, -30, - 'l', 24, -32, - 'l', 18, -32, - 'l', 14, -30, - 'l', 12, -28, - 'l', 10, -22, - 'l', 10, -16, - 'l', 12, -12, - 'l', 16, -10, - 'l', 22, -10, - 'l', 26, -12, - 'l', 28, -16, - 'm', 18, -32, - 'l', 14, -28, - 'l', 12, -22, - 'l', 12, -16, - 'l', 14, -12, - 'l', 16, -10, - 'm', 30, -32, - 'l', 28, -16, - 'l', 28, -12, - 'l', 32, -10, - 'l', 36, -10, - 'l', 40, -14, - 'l', 42, -20, - 'l', 42, -24, - 'l', 40, -30, - 'l', 38, -34, - 'l', 34, -38, - 'l', 30, -40, - 'l', 24, -42, - 'l', 18, -42, - 'l', 12, -40, - 'l', 8, -38, - 'l', 4, -34, - 'l', 2, -30, - 'l', 0, -24, - 'l', 0, -18, - 'l', 2, -12, - 'l', 4, -8, - 'l', 8, -4, - 'l', 12, -2, - 'l', 18, 0, - 'l', 24, 0, - 'l', 30, -2, - 'l', 34, -4, - 'l', 36, -6, - 'm', 32, -32, - 'l', 30, -16, - 'l', 30, -12, - 'l', 32, -10, - 'e', -/* 0x41 'A' */ + 'c', 28, -31, 24, -32, 21, -32, + 'c', 10, -32, 10, -23, 10, -19, + 'c', 10, -13, 11, -10, 19, -10, + 'c', 30, -10, 28, -21, 30, -32, + 'c', 27, -10, 30, -10, 34, -10, + 'c', 41, -10, 42, -19, 42, -22, + 'c', 42, -34, 34, -42, 21, -42, + 'c', 9, -42, 0, -34, 0, -21, + 'c', 0, -9, 8, 0, 21, 0, + 'c', 30, 0, 34, -3, 36, -6, + 'e', +/* 0x41 'A' offset 1375 */ 0, 32, 42, 0, 2, 4, 0, 32, /* snap_x */ -21, -15, -14, 0, /* snap_y */ @@ -1049,7 +392,7 @@ const signed char _twin_gtable[] = { 'm', 6, -14, 'l', 26, -14, 'e', -/* 0x42 'B' */ +/* 0x42 'B' offset 1406 */ 0, 28, 42, 0, 2, 5, 0, 28, /* snap_x */ -42, -22, -21, -15, 0, /* snap_y */ @@ -1057,48 +400,23 @@ const signed char _twin_gtable[] = { 'l', 0, 0, 'm', 0, -42, 'l', 18, -42, - 'l', 24, -40, - 'l', 26, -38, - 'l', 28, -34, - 'l', 28, -30, - 'l', 26, -26, - 'l', 24, -24, - 'l', 18, -22, + 'c', 32, -42, 32, -22, 18, -22, 'm', 0, -22, 'l', 18, -22, - 'l', 24, -20, - 'l', 26, -18, - 'l', 28, -14, - 'l', 28, -8, - 'l', 26, -4, - 'l', 24, -2, - 'l', 18, 0, + 'c', 32, -22, 32, 0, 18, 0, 'l', 0, 0, 'e', -/* 0x43 'C' */ +/* 0x43 'C' offset 1455 */ 0, 30, 42, 0, 2, 4, 0, 30, /* snap_x */ -42, -21, -15, 0, /* snap_y */ 'm', 30, -32, - 'l', 28, -36, - 'l', 24, -40, - 'l', 20, -42, - 'l', 12, -42, - 'l', 8, -40, - 'l', 4, -36, - 'l', 2, -32, - 'l', 0, -26, - 'l', 0, -16, - 'l', 2, -10, - 'l', 4, -6, - 'l', 8, -2, - 'l', 12, 0, - 'l', 20, 0, - 'l', 24, -2, - 'l', 28, -6, - 'l', 30, -10, + 'c', 26, -42, 21, -42, 16, -42, + 'c', 2, -42, 0, -29, 0, -21, + 'c', 0, -13, 2, 0, 16, 0, + 'c', 21, 0, 26, 0, 30, -10, 'e', -/* 0x44 'D' */ +/* 0x44 'D' offset 1499 */ 0, 28, 42, 0, 2, 4, 0, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ @@ -1106,18 +424,10 @@ const signed char _twin_gtable[] = { 'l', 0, 0, 'm', 0, -42, 'l', 14, -42, - 'l', 20, -40, - 'l', 24, -36, - 'l', 26, -32, - 'l', 28, -26, - 'l', 28, -16, - 'l', 26, -10, - 'l', 24, -6, - 'l', 20, -2, - 'l', 14, 0, + 'c', 33, -42, 33, 0, 14, 0, 'l', 0, 0, 'e', -/* 0x45 'E' */ +/* 0x45 'E' offset 1534 */ 0, 26, 42, 0, 2, 5, 0, 26, /* snap_x */ -42, -22, -21, -15, 0, /* snap_y */ @@ -1130,7 +440,7 @@ const signed char _twin_gtable[] = { 'm', 0, 0, 'l', 26, 0, 'e', -/* 0x46 'F' */ +/* 0x46 'F' offset 1572 */ 0, 26, 42, 0, 2, 5, 0, 26, /* snap_x */ -42, -22, -21, -15, 0, /* snap_y */ @@ -1141,33 +451,19 @@ const signed char _twin_gtable[] = { 'm', 0, -22, 'l', 16, -22, 'e', -/* 0x47 'G' */ +/* 0x47 'G' offset 1604 */ 0, 30, 42, 0, 2, 5, 0, 30, /* snap_x */ -42, -21, -16, -15, 0, /* snap_y */ 'm', 30, -32, - 'l', 28, -36, - 'l', 24, -40, - 'l', 20, -42, - 'l', 12, -42, - 'l', 8, -40, - 'l', 4, -36, - 'l', 2, -32, - 'l', 0, -26, - 'l', 0, -16, - 'l', 2, -10, - 'l', 4, -6, - 'l', 8, -2, - 'l', 12, 0, - 'l', 20, 0, - 'l', 24, -2, - 'l', 28, -6, - 'l', 30, -10, - 'l', 30, -16, + 'c', 26, -42, 21, -42, 16, -42, + 'c', 2, -42, 0, -29, 0, -21, + 'c', 0, -13, 2, 0, 16, 0, + 'c', 28, 0, 30, -7, 30, -16, 'm', 20, -16, 'l', 30, -16, 'e', -/* 0x48 'H' */ +/* 0x48 'H' offset 1655 */ 0, 28, 42, 0, 2, 4, 0, 28, /* snap_x */ -22, -21, -15, 0, /* snap_y */ @@ -1178,29 +474,23 @@ const signed char _twin_gtable[] = { 'm', 0, -22, 'l', 28, -22, 'e', -/* 0x49 'I' */ +/* 0x49 'I' offset 1686 */ 0, 0, 42, 0, 1, 3, 0, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -42, 'l', 0, 0, 'e', -/* 0x4a 'J' */ +/* 0x4a 'J' offset 1703 */ 0, 20, 42, 0, 2, 3, 0, 20, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 20, -42, 'l', 20, -10, - 'l', 18, -4, - 'l', 16, -2, - 'l', 12, 0, - 'l', 8, 0, - 'l', 4, -2, - 'l', 2, -4, - 'l', 0, -10, + 'c', 20, 3, 0, 3, 0, -10, 'l', 0, -14, 'e', -/* 0x4b 'K' */ +/* 0x4b 'K' offset 1731 */ 0, 28, 42, 0, 2, 3, 0, 28, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1211,7 +501,7 @@ const signed char _twin_gtable[] = { 'm', 10, -24, 'l', 28, 0, 'e', -/* 0x4c 'L' */ +/* 0x4c 'L' offset 1761 */ 0, 24, 42, 0, 2, 3, 0, 24, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1220,7 +510,7 @@ const signed char _twin_gtable[] = { 'm', 0, 0, 'l', 24, 0, 'e', -/* 0x4d 'M' */ +/* 0x4d 'M' offset 1785 */ 0, 32, 42, 0, 2, 3, 0, 32, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1233,7 +523,7 @@ const signed char _twin_gtable[] = { 'm', 32, -42, 'l', 32, 0, 'e', -/* 0x4e 'N' */ +/* 0x4e 'N' offset 1821 */ 0, 28, 42, 0, 2, 3, 0, 28, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1244,33 +534,17 @@ const signed char _twin_gtable[] = { 'm', 28, -42, 'l', 28, 0, 'e', -/* 0x4f 'O' */ +/* 0x4f 'O' offset 1851 */ 0, 32, 42, 0, 2, 4, 0, 32, /* snap_x */ -42, -21, -15, 0, /* snap_y */ - 'm', 12, -42, - 'l', 8, -40, - 'l', 4, -36, - 'l', 2, -32, - 'l', 0, -26, - 'l', 0, -16, - 'l', 2, -10, - 'l', 4, -6, - 'l', 8, -2, - 'l', 12, 0, - 'l', 20, 0, - 'l', 24, -2, - 'l', 28, -6, - 'l', 30, -10, - 'l', 32, -16, - 'l', 32, -26, - 'l', 30, -32, - 'l', 28, -36, - 'l', 24, -40, - 'l', 20, -42, - 'l', 12, -42, - 'e', -/* 0x50 'P' */ + 'm', 16, -42, + 'c', 2, -42, 0, -29, 0, -21, + 'c', 0, -13, 2, 0, 16, 0, + 'c', 30, 0, 32, -13, 32, -21, + 'c', 32, -29, 30, -42, 16, -42, + 'e', +/* 0x50 'P' offset 1895 */ 0, 28, 42, 0, 2, 5, 0, 28, /* snap_x */ -42, -21, -20, -15, 0, /* snap_y */ @@ -1278,44 +552,22 @@ const signed char _twin_gtable[] = { 'l', 0, 0, 'm', 0, -42, 'l', 18, -42, - 'l', 24, -40, - 'l', 26, -38, - 'l', 28, -34, - 'l', 28, -28, - 'l', 26, -24, - 'l', 24, -22, - 'l', 18, -20, + 'c', 32, -42, 32, -20, 18, -20, 'l', 0, -20, 'e', -/* 0x51 'Q' */ +/* 0x51 'Q' offset 1931 */ 0, 32, 42, 4, 2, 4, 0, 32, /* snap_x */ -42, -21, -15, 0, /* snap_y */ - 'm', 12, -42, - 'l', 8, -40, - 'l', 4, -36, - 'l', 2, -32, - 'l', 0, -26, - 'l', 0, -16, - 'l', 2, -10, - 'l', 4, -6, - 'l', 8, -2, - 'l', 12, 0, - 'l', 20, 0, - 'l', 24, -2, - 'l', 28, -6, - 'l', 30, -10, - 'l', 32, -16, - 'l', 32, -26, - 'l', 30, -32, - 'l', 28, -36, - 'l', 24, -40, - 'l', 20, -42, - 'l', 12, -42, + 'm', 16, -42, + 'c', 2, -42, 0, -29, 0, -21, + 'c', 0, -13, 2, 0, 16, 0, + 'c', 30, 0, 32, -13, 32, -21, + 'c', 32, -29, 30, -42, 16, -42, 'm', 18, -8, 'l', 30, 4, 'e', -/* 0x52 'R' */ +/* 0x52 'R' offset 1981 */ 0, 28, 42, 0, 2, 5, 0, 28, /* snap_x */ -42, -22, -21, -15, 0, /* snap_y */ @@ -1323,43 +575,23 @@ const signed char _twin_gtable[] = { 'l', 0, 0, 'm', 0, -42, 'l', 18, -42, - 'l', 24, -40, - 'l', 26, -38, - 'l', 28, -34, - 'l', 28, -30, - 'l', 26, -26, - 'l', 24, -24, - 'l', 18, -22, + 'c', 32, -42, 31, -22, 18, -22, 'l', 0, -22, 'm', 14, -22, 'l', 28, 0, 'e', -/* 0x53 'S' */ +/* 0x53 'S' offset 2023 */ 0, 28, 42, 0, 2, 4, 0, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ 'm', 28, -36, - 'l', 24, -40, - 'l', 18, -42, - 'l', 10, -42, - 'l', 4, -40, - 'l', 0, -36, - 'l', 0, -32, - 'l', 2, -28, - 'l', 4, -26, - 'l', 8, -24, - 'l', 20, -20, - 'l', 24, -18, - 'l', 26, -16, - 'l', 28, -12, - 'l', 28, -6, - 'l', 24, -2, - 'l', 18, 0, - 'l', 10, 0, - 'l', 4, -2, - 'l', 0, -6, + 'c', 25, -41, 21, -42, 14, -42, + 'c', 10, -42, 0, -42, 0, -34, + 'c', 0, -17, 28, -28, 28, -9, + 'c', 28, 0, 19, 0, 14, 0, + 'c', 7, 0, 3, -1, 0, -6, 'e', -/* 0x54 'T' */ +/* 0x54 'T' offset 2074 */ 0, 28, 42, 0, 3, 4, 0, 14, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ @@ -1368,22 +600,16 @@ const signed char _twin_gtable[] = { 'm', 0, -42, 'l', 28, -42, 'e', -/* 0x55 'U' */ +/* 0x55 'U' offset 2100 */ 0, 28, 42, 0, 2, 3, 0, 28, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -42, 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 12, 0, - 'l', 16, 0, - 'l', 22, -2, - 'l', 26, -6, - 'l', 28, -12, + 'c', 0, 4, 28, 4, 28, -12, 'l', 28, -42, 'e', -/* 0x56 'V' */ +/* 0x56 'V' offset 2128 */ 0, 32, 42, 0, 2, 3, 0, 32, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1392,7 +618,7 @@ const signed char _twin_gtable[] = { 'm', 32, -42, 'l', 16, 0, 'e', -/* 0x57 'W' */ +/* 0x57 'W' offset 2152 */ 0, 40, 42, 0, 2, 3, 0, 40, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1405,7 +631,7 @@ const signed char _twin_gtable[] = { 'm', 40, -42, 'l', 30, 0, 'e', -/* 0x58 'X' */ +/* 0x58 'X' offset 2188 */ 0, 28, 42, 0, 2, 3, 0, 28, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1414,7 +640,7 @@ const signed char _twin_gtable[] = { 'm', 28, -42, 'l', 0, 0, 'e', -/* 0x59 'Y' */ +/* 0x59 'Y' offset 2212 */ 0, 32, 42, 0, 3, 3, 0, 16, 32, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1424,7 +650,7 @@ const signed char _twin_gtable[] = { 'm', 32, -42, 'l', 16, -22, 'e', -/* 0x5a 'Z' */ +/* 0x5a 'Z' offset 2240 */ 0, 28, 42, 0, 2, 4, 0, 28, /* snap_x */ -42, -21, -15, 0, /* snap_y */ @@ -1435,7 +661,7 @@ const signed char _twin_gtable[] = { 'm', 0, 0, 'l', 28, 0, 'e', -/* 0x5b '[' */ +/* 0x5b '[' offset 2271 */ 0, 14, 44, 0, 2, 4, 0, 14, /* snap_x */ -44, -21, -15, 0, /* snap_y */ @@ -1444,14 +670,14 @@ const signed char _twin_gtable[] = { 'l', 0, 0, 'l', 14, 0, 'e', -/* 0x5c '\' */ +/* 0x5c '\' offset 2296 */ 0, 36, 50, 14, 2, 3, 0, 36, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -50, 'l', 36, 14, 'e', -/* 0x5d ']' */ +/* 0x5d ']' offset 2314 */ 0, 14, 44, 0, 2, 4, 0, 14, /* snap_x */ -44, -21, -15, 0, /* snap_y */ @@ -1460,7 +686,7 @@ const signed char _twin_gtable[] = { 'l', 14, 0, 'l', 0, 0, 'e', -/* 0x5e '^' */ +/* 0x5e '^' offset 2339 */ 0, 32, 46, -18, 2, 3, 0, 32, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1469,209 +695,135 @@ const signed char _twin_gtable[] = { 'm', 16, -46, 'l', 32, -18, 'e', -/* 0x5f '_' */ +/* 0x5f '_' offset 2363 */ 0, 36, 0, 0, 2, 3, 0, 36, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, 0, 'l', 36, 0, 'e', -/* 0x60 '`' */ +/* 0x60 '`' offset 2381 */ 0, 4, 42, -30, 2, 3, 0, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 4, -42, - 'l', 2, -40, - 'l', 0, -36, - 'l', 0, -32, - 'l', 2, -30, - 'l', 4, -32, - 'l', 2, -34, - 'e', -/* 0x61 'a' */ + 'c', 2, -40, 0, -39, 0, -32, + 'c', 0, -31, 1, -30, 2, -30, + 'c', 5, -30, 5, -34, 2, -34, + 'e', +/* 0x61 'a' offset 2417 */ 0, 24, 28, 0, 2, 4, 0, 24, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 24, -28, 'l', 24, 0, 'm', 24, -22, - 'l', 20, -26, - 'l', 16, -28, - 'l', 10, -28, - 'l', 6, -26, - 'l', 2, -22, - 'l', 0, -16, - 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 10, 0, - 'l', 16, 0, - 'l', 20, -2, - 'l', 24, -6, + 'c', 21, -27, 18, -28, 13, -28, + 'c', 2, -28, 0, -19, 0, -14, + 'c', 0, -9, 2, 0, 13, 0, + 'c', 18, 0, 21, -1, 24, -6, 'e', -/* 0x62 'b' */ +/* 0x62 'b' offset 2467 */ 0, 24, 42, 0, 2, 4, 0, 24, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 0, -42, 'l', 0, 0, 'm', 0, -22, - 'l', 4, -26, - 'l', 8, -28, - 'l', 14, -28, - 'l', 18, -26, - 'l', 22, -22, - 'l', 24, -16, - 'l', 24, -12, - 'l', 22, -6, - 'l', 18, -2, - 'l', 14, 0, - 'l', 8, 0, - 'l', 4, -2, - 'l', 0, -6, + 'c', 3, -26, 6, -28, 11, -28, + 'c', 22, -28, 24, -19, 24, -14, + 'c', 24, -9, 22, 0, 11, 0, + 'c', 6, 0, 3, -2, 0, -6, 'e', -/* 0x63 'c' */ +/* 0x63 'c' offset 2517 */ 0, 24, 28, 0, 2, 4, 0, 24, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 24, -22, - 'l', 20, -26, - 'l', 16, -28, - 'l', 10, -28, - 'l', 6, -26, - 'l', 2, -22, - 'l', 0, -16, - 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 10, 0, - 'l', 16, 0, - 'l', 20, -2, - 'l', 24, -6, + 'c', 21, -26, 18, -28, 13, -28, + 'c', 2, -28, 0, -19, 0, -14, + 'c', 0, -9, 2, 0, 13, 0, + 'c', 18, 0, 21, -2, 24, -6, 'e', -/* 0x64 'd' */ +/* 0x64 'd' offset 2561 */ 0, 24, 42, 0, 2, 4, 0, 24, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 24, -42, 'l', 24, 0, 'm', 24, -22, - 'l', 20, -26, - 'l', 16, -28, - 'l', 10, -28, - 'l', 6, -26, - 'l', 2, -22, - 'l', 0, -16, - 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 10, 0, - 'l', 16, 0, - 'l', 20, -2, - 'l', 24, -6, + 'c', 21, -26, 18, -28, 13, -28, + 'c', 2, -28, 0, -19, 0, -14, + 'c', 0, -9, 2, 0, 13, 0, + 'c', 18, 0, 21, -2, 24, -6, 'e', -/* 0x65 'e' */ +/* 0x65 'e' offset 2611 */ 0, 24, 28, 0, 2, 5, 0, 24, /* snap_x */ -28, -21, -16, -15, 0, /* snap_y */ 'm', 0, -16, 'l', 24, -16, - 'l', 24, -20, - 'l', 22, -24, - 'l', 20, -26, - 'l', 16, -28, - 'l', 10, -28, - 'l', 6, -26, - 'l', 2, -22, - 'l', 0, -16, - 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 10, 0, - 'l', 16, 0, - 'l', 20, -2, - 'l', 24, -6, + 'c', 24, -20, 24, -28, 13, -28, + 'c', 2, -28, 0, -19, 0, -14, + 'c', 0, -9, 2, 0, 13, 0, + 'c', 18, 0, 21, -2, 24, -6, 'e', -/* 0x66 'f' */ +/* 0x66 'f' offset 2659 */ 0, 16, 42, 0, 3, 5, 0, 6, 16, /* snap_x */ -42, -28, -21, -15, 0, /* snap_y */ 'm', 16, -42, - 'l', 12, -42, - 'l', 8, -40, - 'l', 6, -34, + 'c', 8, -42, 6, -40, 6, -34, 'l', 6, 0, 'm', 0, -28, 'l', 14, -28, 'e', -/* 0x67 'g' */ +/* 0x67 'g' offset 2693 */ 0, 24, 28, 14, 2, 5, 0, 24, /* snap_x */ -28, -21, -15, 0, 14, /* snap_y */ 'm', 24, -28, 'l', 24, 4, - 'l', 22, 10, - 'l', 20, 12, - 'l', 16, 14, - 'l', 10, 14, - 'l', 6, 12, + 'c', 23, 14, 16, 14, 13, 14, + 'c', 10, 14, 8, 14, 6, 12, 'm', 24, -22, - 'l', 20, -26, - 'l', 16, -28, - 'l', 10, -28, - 'l', 6, -26, - 'l', 2, -22, - 'l', 0, -16, - 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 10, 0, - 'l', 16, 0, - 'l', 20, -2, - 'l', 24, -6, + 'c', 21, -26, 18, -28, 13, -28, + 'c', 2, -28, 0, -19, 0, -14, + 'c', 0, -9, 2, 0, 13, 0, + 'c', 18, 0, 21, -2, 24, -6, 'e', -/* 0x68 'h' */ +/* 0x68 'h' offset 2758 */ 0, 22, 42, 0, 2, 4, 0, 22, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 0, -42, 'l', 0, 0, 'm', 0, -20, - 'l', 6, -26, - 'l', 10, -28, - 'l', 16, -28, - 'l', 20, -26, - 'l', 22, -20, + 'c', 8, -32, 22, -31, 22, -20, 'l', 22, 0, 'e', -/* 0x69 'i' */ +/* 0x69 'i' offset 2790 */ 0, 4, 44, 0, 3, 3, 0, 2, 4, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -42, - 'l', 2, -40, - 'l', 4, -42, - 'l', 2, -44, - 'l', 0, -42, + 'c', 0, -39, 4, -39, 4, -42, + 'c', 4, -45, 0, -45, 0, -42, 'm', 2, -28, 'l', 2, 0, 'e', -/* 0x6a 'j' */ +/* 0x6a 'j' offset 2826 */ -8, 4, 44, 14, 3, 4, 0, 2, 4, /* snap_x */ -21, -15, 0, 14, /* snap_y */ 'm', 0, -42, - 'l', 2, -40, - 'l', 4, -42, - 'l', 2, -44, - 'l', 0, -42, + 'c', 0, -39, 4, -39, 4, -42, + 'c', 4, -45, 0, -45, 0, -42, 'm', 2, -28, 'l', 2, 6, - 'l', 0, 12, - 'l', -4, 14, - 'l', -8, 14, + 'c', 2, 13, -1, 14, -8, 14, 'e', -/* 0x6b 'k' */ +/* 0x6b 'k' offset 2870 */ 0, 22, 42, 0, 2, 3, 0, 22, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1682,204 +834,111 @@ const signed char _twin_gtable[] = { 'm', 8, -16, 'l', 22, 0, 'e', -/* 0x6c 'l' */ +/* 0x6c 'l' offset 2900 */ 0, 0, 42, 0, 1, 3, 0, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -42, 'l', 0, 0, 'e', -/* 0x6d 'm' */ +/* 0x6d 'm' offset 2917 */ 0, 44, 28, 0, 3, 4, 0, 22, 44, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 0, -28, 'l', 0, 0, 'm', 0, -20, - 'l', 6, -26, - 'l', 10, -28, - 'l', 16, -28, - 'l', 20, -26, - 'l', 22, -20, + 'c', 5, -29, 22, -33, 22, -20, 'l', 22, 0, 'm', 22, -20, - 'l', 28, -26, - 'l', 32, -28, - 'l', 38, -28, - 'l', 42, -26, - 'l', 44, -20, + 'c', 27, -29, 44, -33, 44, -20, 'l', 44, 0, 'e', -/* 0x6e 'n' */ +/* 0x6e 'n' offset 2963 */ 0, 22, 28, 0, 2, 4, 0, 22, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 0, -28, 'l', 0, 0, 'm', 0, -20, - 'l', 6, -26, - 'l', 10, -28, - 'l', 16, -28, - 'l', 20, -26, - 'l', 22, -20, + 'c', 4, -28, 22, -34, 22, -20, 'l', 22, 0, 'e', -/* 0x6f 'o' */ +/* 0x6f 'o' offset 2995 */ 0, 26, 28, 0, 2, 4, 0, 26, /* snap_x */ -28, -21, -15, 0, /* snap_y */ -#define DX (6) -#define DY (9) -#if 1 - 'm', 13, -28, - 'c', 13-DX, -28, - 0, -14-DY, - 0, -14, -#else - 'm', 10, -28, - 'l', 6, -26, - 'l', 2, -22, - 'l', 0, -16, -#endif -#if 1 - 'c', 0, -14+DY, - 13-DX, 0, - 13, 0, -#else - 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 10, 0, -#endif -#if 1 - 'c', 13+DX, 0, - 26, -14+DY, - 26, -14, -#else - 'l', 16, 0, - 'l', 20, -2, - 'l', 24, -6, - 'l', 26, -12, -#endif -#if 1 - 'c', 26, -14-DY, - 13+DX, -28, - 13, -28, -#else - 'l', 26, -16, - 'l', 24, -22, - 'l', 20, -26, - 'l', 16, -28, - 'l', 10, -28, -#endif - 'e', -#if 1 - 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', - 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', -#endif -/* 0x70 'p' */ + 'm', 13, -28, + 'c', 2, -28, 0, -19, 0, -14, + 'c', 0, -9, 2, 0, 13, 0, + 'c', 24, 0, 26, -9, 26, -14, + 'c', 26, -19, 24, -28, 13, -28, + 'e', +/* 0x70 'p' offset 3039 */ 0, 24, 28, 14, 2, 4, 0, 24, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 0, -28, 'l', 0, 14, 'm', 0, -22, - 'l', 4, -26, - 'l', 8, -28, - 'l', 14, -28, - 'l', 18, -26, - 'l', 22, -22, - 'l', 24, -16, - 'l', 24, -12, - 'l', 22, -6, - 'l', 18, -2, - 'l', 14, 0, - 'l', 8, 0, - 'l', 4, -2, - 'l', 0, -6, + 'c', 3, -26, 6, -28, 11, -28, + 'c', 22, -28, 24, -19, 24, -14, + 'c', 24, -9, 22, 0, 11, 0, + 'c', 6, 0, 3, -2, 0, -6, 'e', -/* 0x71 'q' */ +/* 0x71 'q' offset 3089 */ 0, 24, 28, 14, 2, 4, 0, 24, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 24, -28, 'l', 24, 14, 'm', 24, -22, - 'l', 20, -26, - 'l', 16, -28, - 'l', 10, -28, - 'l', 6, -26, - 'l', 2, -22, - 'l', 0, -16, - 'l', 0, -12, - 'l', 2, -6, - 'l', 6, -2, - 'l', 10, 0, - 'l', 16, 0, - 'l', 20, -2, - 'l', 24, -6, + 'c', 21, -26, 18, -28, 13, -28, + 'c', 2, -28, 0, -19, 0, -14, + 'c', 0, -9, 2, 0, 13, 0, + 'c', 18, 0, 21, -2, 24, -6, 'e', -/* 0x72 'r' */ +/* 0x72 'r' offset 3139 */ 0, 16, 28, 0, 2, 4, 0, 16, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 0, -28, 'l', 0, 0, 'm', 0, -16, - 'l', 2, -22, - 'l', 6, -26, - 'l', 10, -28, - 'l', 16, -28, + 'c', 2, -27, 7, -28, 16, -28, 'e', -/* 0x73 's' */ +/* 0x73 's' offset 3168 */ 0, 22, 28, 0, 2, 4, 0, 22, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 22, -22, - 'l', 20, -26, - 'l', 14, -28, - 'l', 8, -28, - 'l', 2, -26, - 'l', 0, -22, - 'l', 2, -18, - 'l', 6, -16, - 'l', 16, -14, - 'l', 20, -12, - 'l', 22, -8, - 'l', 22, -6, - 'l', 20, -2, - 'l', 14, 0, - 'l', 8, 0, - 'l', 2, -2, - 'l', 0, -6, + 'c', 22, -27, 16, -28, 11, -28, + 'c', 4, -28, 0, -26, 0, -22, + 'c', 0, -11, 22, -20, 22, -7, + 'c', 22, 0, 17, 0, 11, 0, + 'c', 6, 0, 0, -1, 0, -6, 'e', -/* 0x74 't' */ +/* 0x74 't' offset 3219 */ 0, 16, 42, 0, 3, 4, 0, 6, 16, /* snap_x */ -28, -21, -15, 0, /* snap_y */ 'm', 6, -42, 'l', 6, -8, - 'l', 8, -2, - 'l', 12, 0, - 'l', 16, 0, + 'c', 6, -2, 8, 0, 16, 0, 'm', 0, -28, 'l', 14, -28, 'e', -/* 0x75 'u' */ +/* 0x75 'u' offset 3252 */ 0, 22, 28, 0, 2, 3, 0, 22, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -28, 'l', 0, -8, - 'l', 2, -2, - 'l', 6, 0, - 'l', 12, 0, - 'l', 16, -2, - 'l', 22, -8, + 'c', 0, 6, 18, 0, 22, -8, 'm', 22, -28, 'l', 22, 0, 'e', -/* 0x76 'v' */ +/* 0x76 'v' offset 3283 */ 0, 24, 28, 0, 2, 3, 0, 24, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1888,7 +947,7 @@ const signed char _twin_gtable[] = { 'm', 24, -28, 'l', 12, 0, 'e', -/* 0x77 'w' */ +/* 0x77 'w' offset 3307 */ 0, 32, 28, 0, 2, 3, 0, 32, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1901,7 +960,7 @@ const signed char _twin_gtable[] = { 'm', 32, -28, 'l', 24, 0, 'e', -/* 0x78 'x' */ +/* 0x78 'x' offset 3343 */ 0, 22, 28, 0, 2, 3, 0, 22, /* snap_x */ -21, -15, 0, /* snap_y */ @@ -1910,7 +969,7 @@ const signed char _twin_gtable[] = { 'm', 22, -28, 'l', 0, 0, 'e', -/* 0x79 'y' */ +/* 0x79 'y' offset 3367 */ -2, 24, 28, 14, 2, 4, 0, 24, /* snap_x */ -21, -15, 0, 14, /* snap_y */ @@ -1918,12 +977,9 @@ const signed char _twin_gtable[] = { 'l', 12, 0, 'm', 24, -28, 'l', 12, 0, - 'l', 8, 8, - 'l', 4, 12, - 'l', 0, 14, - 'l', -2, 14, + 'c', 6, 13, 0, 14, -2, 14, 'e', -/* 0x7a 'z' */ +/* 0x7a 'z' offset 3399 */ 0, 22, 28, 0, 2, 4, 0, 22, /* snap_x */ -28, -21, -15, 0, /* snap_y */ @@ -1934,61 +990,45 @@ const signed char _twin_gtable[] = { 'm', 0, 0, 'l', 22, 0, 'e', -/* 0x7b '{' */ +/* 0x7b '{' offset 3430 */ 0, 16, 44, 0, 3, 5, 0, 6, 16, /* snap_x */ -44, -24, -21, -15, 0, /* snap_y */ 'm', 16, -44, - 'l', 12, -44, - 'l', 8, -42, - 'l', 6, -36, + 'c', 10, -44, 6, -42, 6, -36, 'l', 6, -24, 'l', 0, -24, 'l', 6, -24, 'l', 6, -8, - 'l', 8, -2, - 'l', 12, 0, - 'l', 16, 0, + 'c', 6, -2, 10, 0, 16, 0, 'e', -/* 0x7c '|' */ +/* 0x7c '|' offset 3474 */ 0, 0, 50, 14, 1, 3, 0, /* snap_x */ -21, -15, 0, /* snap_y */ 'm', 0, -50, 'l', 0, 14, 'e', -/* 0x7d '}' */ +/* 0x7d '}' offset 3491 */ 0, 16, 44, 0, 3, 5, 0, 10, 16, /* snap_x */ -44, -24, -21, -15, 0, /* snap_y */ 'm', 0, -44, - 'l', 4, -44, - 'l', 8, -42, - 'l', 10, -36, + 'c', 6, -44, 10, -42, 10, -36, 'l', 10, -24, 'l', 16, -24, 'l', 10, -24, 'l', 10, -8, - 'l', 8, -2, - 'l', 4, 0, - 'l', 0, 0, + 'c', 10, -2, 6, 0, 0, 0, 'e', -/* 0x7e '~' */ +/* 0x7e '~' offset 3535 */ 0, 36, 24, -12, 2, 5, 0, 36, /* snap_x */ -24, -21, -15, -12, 0, /* snap_y */ 'm', 0, -14, - 'l', 0, -16, - 'l', 2, -22, - 'l', 6, -24, - 'l', 10, -24, - 'l', 14, -22, - 'l', 22, -14, - 'l', 26, -12, - 'l', 30, -12, - 'l', 34, -14, - 'l', 36, -20, - 'l', 36, -22, + 'c', 1, -21, 4, -24, 8, -24, + 'c', 18, -24, 18, -12, 28, -12, + 'c', 32, -12, 35, -15, 36, -22, 'e', }; @@ -1997,16 +1037,16 @@ const uint16_t _twin_g_offsets[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 40, 74, 98, 136, 223, 328, 445, - 478, 520, 562, 593, 619, 655, 674, 701, - 718, 782, 806, 863, 922, 951, 1016, 1099, - 1124, 1226, 1309, 1351, 1402, 1423, 1449, 1470, - 1541, 1711, 1742, 1819, 1886, 1941, 1979, 2011, - 2088, 2119, 2136, 2178, 2208, 2232, 2268, 2298, - 2374, 2424, 2506, 2562, 2635, 2661, 2703, 2727, - 2763, 2787, 2815, 2846, 2871, 2889, 2914, 2938, - 2956, 2989, 3050, 3111, 3166, 3227, 3292, 3328, - 3405, 3445, 3479, 3523, 3553, 3570, 3632, 3672, - 3736, 3797, 3858, 3892, 3956, 3991, 4030, 4054, - 4090, 4114, 4151, 4182, 4230, 4247, 4295, 0, + 28, 40, 90, 114, 152, 224, 323, 390, + 419, 441, 463, 494, 520, 556, 575, 604, + 622, 666, 691, 736, 780, 809, 860, 919, + 944, 1004, 1063, 1109, 1162, 1183, 1209, 1230, + 1288, 1375, 1406, 1455, 1499, 1534, 1572, 1604, + 1655, 1686, 1703, 1731, 1761, 1785, 1821, 1851, + 1895, 1931, 1981, 2023, 2074, 2100, 2128, 2152, + 2188, 2212, 2240, 2271, 2296, 2314, 2339, 2363, + 2381, 2417, 2467, 2517, 2561, 2611, 2659, 2693, + 2758, 2790, 2826, 2870, 2900, 2917, 2963, 2995, + 3039, 3089, 3139, 3168, 3219, 3252, 3283, 3307, + 3343, 3367, 3399, 3430, 3474, 3491, 3535, 0, }; @@ -277,8 +277,8 @@ int styles[] = { TWIN_TEXT_BOLD|TWIN_TEXT_OBLIQUE }; -#define WIDTH 512 -#define HEIGHT 512 +#define WIDTH 256 +#define HEIGHT 256 int main (int argc, char **argv) @@ -347,7 +347,8 @@ main (int argc, char **argv) #if 0 stroke = twin_path_create (); twin_path_move (stroke, D(30), D(400)); - twin_path_string (stroke, D(200), D(200), TWIN_TEXT_ROMAN, "jelly world."); + twin_path_set_font_size (stroke, D(100)); + twin_path_utf8 (stroke, "jelly world."); twin_path_convolve (path, stroke, pen); /* twin_path_append (path, stroke); */ twin_path_destroy (stroke); @@ -397,10 +398,10 @@ main (int argc, char **argv) #if 1 fx = D(10); fy = 0; - for (g = 90; g < 91; g += 4) + for (g = 10; g <= 38; g += 4) { twin_path_set_font_size (path, D(g)); -#if 0 +#if 1 fy += D(g+2); twin_path_move (path, fx, fy); twin_path_utf8 (path, @@ -623,7 +624,7 @@ main (int argc, char **argv) #endif #if 1 - twin_start_clock (x11->screen, 0, 0, 256, 256); + twin_start_clock (x11->screen, 0, 0, WIDTH, HEIGHT); #endif #if 0 twin_start_clock (x11->screen, 0, 0, 256, 256); |