summaryrefslogtreecommitdiff
path: root/src/cairo-font-face-twin-data.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2008-12-25 02:44:19 -0500
committerBehdad Esfahbod <behdad@behdad.org>2008-12-25 02:46:27 -0500
commit0c7eaf6e0a2c2f0db634f8120fcbc03f7e8fd751 (patch)
tree7c8934e80fba878eab08dc92d3a50b3f145e6d1f /src/cairo-font-face-twin-data.c
parente6205ea5a38c9de4c08b313a1beb70d4a38b0676 (diff)
[twin] Improve glyph hints
Diffstat (limited to 'src/cairo-font-face-twin-data.c')
-rw-r--r--src/cairo-font-face-twin-data.c202
1 files changed, 116 insertions, 86 deletions
diff --git a/src/cairo-font-face-twin-data.c b/src/cairo-font-face-twin-data.c
index 16d1e2c31..ff09cb2be 100644
--- a/src/cairo-font-face-twin-data.c
+++ b/src/cairo-font-face-twin-data.c
@@ -4,28 +4,31 @@
const int8_t _cairo_twin_outlines[] = {
/* 0x0 '\0' offset 0 */
- 0, 24, 42, 0, 2, 4,
+ 0, 24, 42, 0, 2, 2,
0, 24, /* snap_x */
- -42, -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, 0,
'l', 0, -42,
'l', 24, -42,
'l', 24, 0,
'l', 0, 0,
'e',
+ 'X', 'X',
/* 0x20 ' ' offset 28 */
- 0, 4, 0, 0, 2, 3,
- -128, 0, /* snap_x */
- -21, -15, 0, /* snap_y */
+ 0, 4, 0, 0, 0, 0,
+ /* snap_x */
+ /* snap_y */
'e',
+ 'X', 'X', 'X',
+ 'X', 'X',
/* 0x21 '!' offset 40 */
0, 0, 42, 0, 1, 3,
0, /* snap_x */
- -21, -15, -4, /* snap_y */
+ -42, -14, 0, /* snap_y */
'm', 0, -42,
'l', 0, -14,
- 'm', 0, -4,
- 'l', 0, -4,
+ 'm', 0, 0,
+ 'l', 0, 0,
'e',
'X', 'X', 'X', 'X', 'X', 'X',
'X', 'X', 'X', 'X', 'X', 'X',
@@ -33,14 +36,15 @@ const int8_t _cairo_twin_outlines[] = {
'X', 'X', 'X', 'X', 'X', 'X',
'X', 'X', 'X',
/* 0x22 '"' offset 90 */
- 0, 16, 42, -28, 2, 3,
+ 0, 16, 42, -28, 2, 2,
0, 16, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, -28, /* snap_y */
'm', 0, -42,
'l', 0, -28,
'm', 16, -42,
'l', 16, -28,
'e',
+ 'X',
/* 0x23 '#' offset 114 */
0, 30, 50, 14, 2, 5,
0, 30, /* snap_x */
@@ -104,27 +108,30 @@ const int8_t _cairo_twin_outlines[] = {
'c', 39, 0, 40, -1, 40, -4,
'e',
/* 0x27 ''' offset 390 */
- 0, 4, 42, -30, 2, 3,
+ 0, 4, 42, -30, 2, 2,
0, 4, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, -28, /* snap_y */
'm', 2, -38,
'c', -1, -38, -1, -42, 2, -42,
'c', 6, -42, 5, -33, 0, -30,
'e',
+ 'X',
/* 0x28 '(' offset 419 */
- 0, 14, 50, 14, 2, 3,
+ 0, 14, 50, 14, 2, 2,
0, 14, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -50, 14, /* snap_y */
'm', 14, -50,
'c', -5, -32, -5, -5, 14, 14,
'e',
+ 'X',
/* 0x29 ')' offset 441 */
- 0, 14, 50, 14, 2, 3,
+ 0, 14, 50, 14, 2, 2,
0, 14, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -15, 14, /* snap_y */
'm', 0, -50,
'c', 19, -34, 19, -2, 0, 14,
'e',
+ 'X',
/* 0x2a '*' offset 463 */
0, 20, 30, -6, 3, 3,
0, 10, 20, /* snap_x */
@@ -189,7 +196,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x31 '1' offset 666 */
0, 28, 42, 0, 2, 3,
0, 17, 28 /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, -34, 0, /* snap_y */
'm', 7, -34,
'c', 11, -35, 15, -38, 17, -42,
'l', 17, 0,
@@ -217,15 +224,16 @@ const int8_t _cairo_twin_outlines[] = {
'c', 8, 0, 3, -1, 0, -8,
'e',
/* 0x34 '4' offset 780 */
- 0, 28, 42, 0, 3, 4,
+ 0, 28, 42, 0, 3, 3,
0, 20, 30, /* snap_x */
- -21, -15, -14, 0, /* snap_y */
+ -42, -14, 0, /* snap_y */
'm', 20, 0,
'l', 20, -42,
'l', 0, -14,
'l', 30, -14,
'e',
'X', 'X', 'X',
+ 'X',
/* 0x35 '5' offset 809 */
0, 28, 42, 0, 2, 5,
0, 28, /* snap_x */
@@ -309,24 +317,25 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x3c '<' offset 1162 */
0, 32, 36, 0, 2, 3,
0, 32, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -36, -18, 0, /* snap_y */
'm', 32, -36,
'l', 0, -18,
'l', 32, 0,
'e',
/* 0x3d '=' offset 1183 */
- 0, 36, 24, -12, 2, 5,
+ 0, 36, 24, -12, 2, 2,
0, 36, /* snap_x */
- -24, -21, -15, -12, 0, /* snap_y */
+ -24, -15, /* snap_y */
'm', 0, -24,
'l', 36, -24,
'm', 0, -12,
'l', 36, -12,
'e',
+ 'X', 'X', 'X',
/* 0x3e '>' offset 1209 */
0, 32, 36, 0, 2, 3,
0, 32, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -36, -18, 0, /* snap_y */
'm', 0, -36,
'l', 32, -18,
'l', 0, 0,
@@ -334,14 +343,14 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x3f '?' offset 1230 */
0, 24, 42, 0, 3, 4,
0, 12, 24, /* snap_x */
- -42, -21, -15, -4, /* snap_y */
+ -42, -21, -15, 0, /* snap_y */
'm', 0, -32,
'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', 12, -4,
+ 'm', 12, 0,
+ 'l', 12, 0,
'e',
'X', 'X', 'X',
'X', 'X', 'X',
@@ -364,9 +373,9 @@ const int8_t _cairo_twin_outlines[] = {
'c', 30, 0, 34, -3, 36, -6,
'e',
/* 0x41 'A' offset 1375 */
- 0, 32, 42, 0, 2, 4,
+ 0, 32, 42, 0, 2, 3,
0, 32, /* snap_x */
- -21, -15, -14, 0, /* snap_y */
+ -42, -14, 0, /* snap_y */
'm', 0, 0,
'l', 16, -42,
'l', 32, 0,
@@ -374,10 +383,11 @@ const int8_t _cairo_twin_outlines[] = {
'l', 26, -14,
'e',
'X', 'X', 'X',
+ 'X',
/* 0x42 'B' offset 1406 */
- 0, 28, 42, 0, 2, 5,
+ 0, 28, 42, 0, 2, 3,
0, 28, /* snap_x */
- -42, -22, -21, -15, 0, /* snap_y */
+ -42, -22, 0, /* snap_y */
'm', 0, 0,
'l', 0, -42,
'l', 18, -42,
@@ -388,6 +398,7 @@ const int8_t _cairo_twin_outlines[] = {
'E',
'X', 'X', 'X',
'X', 'X', 'X',
+ 'X', 'X',
/* 0x43 'C' offset 1455 */
0, 30, 42, 0, 2, 4,
0, 30, /* snap_x */
@@ -399,9 +410,9 @@ const int8_t _cairo_twin_outlines[] = {
'c', 21, 0, 26, 0, 30, -10,
'e',
/* 0x44 'D' offset 1499 */
- 0, 28, 42, 0, 2, 4,
+ 0, 28, 42, 0, 2, 2,
0, 28, /* snap_x */
- -42, -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, 0,
'l', 0, -42,
'l', 14, -42,
@@ -409,10 +420,11 @@ const int8_t _cairo_twin_outlines[] = {
'E',
'X', 'X', 'X',
'X', 'X', 'X',
+ 'X', 'X',
/* 0x45 'E' offset 1534 */
- 0, 26, 42, 0, 2, 5,
+ 0, 26, 42, 0, 2, 3,
0, 26, /* snap_x */
- -42, -22, -21, -15, 0, /* snap_y */
+ -42, -22, 0, /* snap_y */
'm', 26, -42,
'l', 0, -42,
'l', 0, 0,
@@ -422,10 +434,11 @@ const int8_t _cairo_twin_outlines[] = {
'e',
'X', 'X', 'X',
'X', 'X', 'X',
+ 'X', 'X',
/* 0x46 'F' offset 1572 */
- 0, 26, 42, 0, 2, 5,
+ 0, 26, 42, 0, 2, 3,
0, 26, /* snap_x */
- -42, -22, -21, -15, 0, /* snap_y */
+ -42, -22, 0, /* snap_y */
'm', 0, 0,
'l', 0, -42,
'l', 26, -42,
@@ -433,6 +446,7 @@ const int8_t _cairo_twin_outlines[] = {
'l', 16, -22,
'e',
'X', 'X', 'X',
+ 'X', 'X',
/* 0x47 'G' offset 1604 */
0, 30, 42, 0, 2, 5,
0, 30, /* snap_x */
@@ -446,9 +460,9 @@ const int8_t _cairo_twin_outlines[] = {
'e',
'X', 'X', 'X',
/* 0x48 'H' offset 1655 */
- 0, 28, 42, 0, 2, 4,
+ 0, 28, 42, 0, 2, 3,
0, 28, /* snap_x */
- -22, -21, -15, 0, /* snap_y */
+ -42, -22, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'm', 28, -42,
@@ -456,17 +470,19 @@ const int8_t _cairo_twin_outlines[] = {
'm', 0, -22,
'l', 28, -22,
'e',
+ 'X',
/* 0x49 'I' offset 1686 */
- 0, 0, 42, 0, 1, 3,
+ 0, 0, 42, 0, 1, 2,
0, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'e',
+ 'X',
/* 0x4a 'J' offset 1703 */
0, 20, 42, 0, 2, 3,
0, 20, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, -15, 0, /* snap_y */
'm', 20, -42,
'l', 20, -10,
'c', 20, 3, 0, 3, 0, -10,
@@ -475,7 +491,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x4b 'K' offset 1731 */
0, 28, 42, 0, 2, 3,
0, 28, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, -15, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'm', 28, -42,
@@ -484,18 +500,19 @@ const int8_t _cairo_twin_outlines[] = {
'l', 28, 0,
'e',
/* 0x4c 'L' offset 1761 */
- 0, 24, 42, 0, 2, 3,
+ 0, 24, 42, 0, 2, 2,
0, 24, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'l', 24, 0,
'e',
'X', 'X', 'X',
+ 'X',
/* 0x4d 'M' offset 1785 */
- 0, 32, 42, 0, 2, 3,
+ 0, 32, 42, 0, 2, 2,
0, 32, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, 0,
'l', 0, -42,
'l', 16, 0,
@@ -505,10 +522,11 @@ const int8_t _cairo_twin_outlines[] = {
'X', 'X', 'X',
'X', 'X', 'X',
'X', 'X', 'X',
+ 'X',
/* 0x4e 'N' offset 1821 */
- 0, 28, 42, 0, 2, 3,
+ 0, 28, 42, 0, 2, 2,
0, 28, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, 0,
'l', 0, -42,
'l', 28, 0,
@@ -516,6 +534,7 @@ const int8_t _cairo_twin_outlines[] = {
'e',
'X', 'X', 'X',
'X', 'X', 'X',
+ 'X',
/* 0x4f 'O' offset 1851 */
0, 32, 42, 0, 2, 4,
0, 32, /* snap_x */
@@ -583,27 +602,29 @@ const int8_t _cairo_twin_outlines[] = {
'l', 28, -42,
'e',
/* 0x55 'U' offset 2100 */
- 0, 28, 42, 0, 2, 3,
+ 0, 28, 42, 0, 2, 2,
0, 28, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, -42,
'l', 0, -12,
'c', 0, 4, 28, 4, 28, -12,
'l', 28, -42,
'e',
+ 'X',
/* 0x56 'V' offset 2128 */
- 0, 32, 42, 0, 2, 3,
+ 0, 32, 42, 0, 2, 2,
0, 32, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, -42,
'l', 16, 0,
'l', 32, -42,
'e',
'X', 'X', 'X',
+ 'X',
/* 0x57 'W' offset 2152 */
- 0, 40, 42, 0, 2, 3,
+ 0, 40, 42, 0, 2, 2,
0, 40, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, -42,
'l', 10, 0,
'l', 20, -42,
@@ -613,19 +634,21 @@ const int8_t _cairo_twin_outlines[] = {
'X', 'X', 'X',
'X', 'X', 'X',
'X', 'X', 'X',
+ 'X',
/* 0x58 'X' offset 2188 */
- 0, 28, 42, 0, 2, 3,
+ 0, 28, 42, 0, 2, 2,
0, 28, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, -42,
'l', 28, 0,
'm', 28, -42,
'l', 0, 0,
'e',
+ 'X',
/* 0x59 'Y' offset 2212 */
0, 32, 42, 0, 3, 3,
0, 16, 32, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, -21, 0, /* snap_y */
'm', 0, -42,
'l', 16, -22,
'l', 16, 0,
@@ -678,21 +701,23 @@ const int8_t _cairo_twin_outlines[] = {
'e',
'X', 'X', 'X',
/* 0x5f '_' offset 2363 */
- 0, 36, 0, 0, 2, 3,
+ 0, 36, 0, 0, 2, 1,
0, 36, /* snap_x */
- -21, -15, 0, /* snap_y */
+ 0, /* snap_y */
'm', 0, 0,
'l', 36, 0,
'e',
+ 'X', 'X',
/* 0x60 '`' offset 2381 */
- 0, 4, 42, -30, 2, 3,
+ 0, 4, 42, -30, 2, 2,
0, 4, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 4, -42,
'c', 2, -40, 0, -39, 0, -32,
'c', 0, -31, 1, -30, 2, -30,
'c', 5, -30, 5, -34, 2, -34,
'e',
+ 'X',
/* 0x61 'a' offset 2417 */
0, 24, 28, 0, 2, 4,
0, 24, /* snap_x */
@@ -708,7 +733,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x62 'b' offset 2467 */
0, 24, 42, 0, 2, 4,
0, 24, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -42, -28, -15, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'm', 0, -22,
@@ -730,7 +755,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x64 'd' offset 2561 */
0, 24, 42, 0, 2, 4,
0, 24, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -42, -28, -15, 0, /* snap_y */
'm', 24, -42,
'l', 24, 0,
'm', 24, -22,
@@ -777,7 +802,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x68 'h' offset 2758 */
0, 22, 42, 0, 2, 4,
0, 22, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -42, -28, -15, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'm', 0, -20,
@@ -785,9 +810,9 @@ const int8_t _cairo_twin_outlines[] = {
'l', 22, 0,
'e',
/* 0x69 'i' offset 2790 */
- 0, 0, 44, 0, 1, 4,
+ 0, 0, 44, 0, 1, 3,
0, /* snap_x */
- -42, -21, -15, 0, /* snap_y */
+ -42, -28, 0, /* snap_y */
'm', 0, -42,
'l', 0, -42,
'm', 0, -28,
@@ -797,10 +822,10 @@ const int8_t _cairo_twin_outlines[] = {
'X', 'X', 'X',
'X', 'X', 'X',
'X', 'X',
- 'X',
+ 'X', 'X',
/* 0x6a 'j' offset 2826 */
-8, 4, 44, 14, 3, 5,
- 0, 2, 4, /* snap_x */
+ -8, 2, 4, /* snap_x */
-42, -21, -15, 0, 14, /* snap_y */
'm', 2, -42,
'l', 2, -42,
@@ -815,7 +840,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x6b 'k' offset 2870 */
0, 22, 42, 0, 2, 3,
0, 22, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, -28, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'm', 20, -28,
@@ -824,16 +849,17 @@ const int8_t _cairo_twin_outlines[] = {
'l', 22, 0,
'e',
/* 0x6c 'l' offset 2900 */
- 0, 0, 42, 0, 1, 3,
+ 0, 0, 42, 0, 1, 2,
0, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -42, 0, /* snap_y */
'm', 0, -42,
'l', 0, 0,
'e',
+ 'X',
/* 0x6d 'm' offset 2917 */
- 0, 44, 28, 0, 3, 4,
+ 0, 44, 28, 0, 3, 3,
0, 22, 44, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -28, -21, 0, /* snap_y */
'm', 0, -28,
'l', 0, 0,
'm', 0, -20,
@@ -843,16 +869,18 @@ const int8_t _cairo_twin_outlines[] = {
'c', 27, -29, 44, -33, 44, -20,
'l', 44, 0,
'e',
+ 'X',
/* 0x6e 'n' offset 2963 */
- 0, 22, 28, 0, 2, 4,
+ 0, 22, 28, 0, 2, 3,
0, 22, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -28, -21, 0, /* snap_y */
'm', 0, -28,
'l', 0, 0,
'm', 0, -20,
'c', 4, -28, 22, -34, 22, -20,
'l', 22, 0,
'e',
+ 'X',
/* 0x6f 'o' offset 2995 */
0, 26, 28, 0, 2, 4,
0, 26, /* snap_x */
@@ -866,7 +894,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x70 'p' offset 3039 */
0, 24, 28, 14, 2, 4,
0, 24, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -28, -21, 0, 14, /* snap_y */
'm', 0, -28,
'l', 0, 14,
'm', 0, -22,
@@ -878,7 +906,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x71 'q' offset 3089 */
0, 24, 28, 14, 2, 4,
0, 24, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -28, -21, 0, 14, /* snap_y */
'm', 24, -28,
'l', 24, 14,
'm', 24, -22,
@@ -910,7 +938,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x74 't' offset 3219 */
0, 16, 42, 0, 3, 4,
0, 6, 16, /* snap_x */
- -28, -21, -15, 0, /* snap_y */
+ -42, -28, -21, 0, /* snap_y */
'm', 6, -42,
'l', 6, -8,
'c', 6, -2, 8, 0, 16, 0,
@@ -920,7 +948,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x75 'u' offset 3252 */
0, 22, 28, 0, 2, 3,
0, 22, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -28, -15, 0, /* snap_y */
'm', 0, -28,
'l', 0, -8,
'c', 0, 6, 18, 0, 22, -8,
@@ -930,7 +958,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x76 'v' offset 3283 */
0, 24, 28, 0, 2, 3,
0, 24, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -28, -15, 0, /* snap_y */
'm', 0, -28,
'l', 12, 0,
'l', 24, -28,
@@ -939,7 +967,7 @@ const int8_t _cairo_twin_outlines[] = {
/* 0x77 'w' offset 3307 */
0, 32, 28, 0, 2, 3,
0, 32, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -28, -15, 0, /* snap_y */
'm', 0, -28,
'l', 8, 0,
'l', 16, -28,
@@ -950,18 +978,19 @@ const int8_t _cairo_twin_outlines[] = {
'X', 'X', 'X',
'X', 'X', 'X',
/* 0x78 'x' offset 3343 */
- 0, 22, 28, 0, 2, 3,
+ 0, 22, 28, 0, 2, 2,
0, 22, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -28, 0, /* snap_y */
'm', 0, -28,
'l', 22, 0,
'm', 22, -28,
'l', 0, 0,
'e',
+ 'X',
/* 0x79 'y' offset 3367 */
-2, 24, 28, 14, 2, 4,
0, 24, /* snap_x */
- -21, -15, 0, 14, /* snap_y */
+ -28, -15, 0, 14, /* snap_y */
'm', 0, -28,
'l', 12, 0,
'm', 24, -28,
@@ -992,12 +1021,13 @@ const int8_t _cairo_twin_outlines[] = {
'c', 6, -2, 10, 0, 16, 0,
'e',
/* 0x7c '|' offset 3474 */
- 0, 0, 50, 14, 1, 3,
+ 0, 0, 50, 14, 1, 2,
0, /* snap_x */
- -21, -15, 0, /* snap_y */
+ -50, 14, /* snap_y */
'm', 0, -50,
'l', 0, 14,
'e',
+ 'X',
/* 0x7d '}' offset 3491 */
0, 16, 44, 0, 3, 5,
0, 10, 16, /* snap_x */