Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /* See cairo-font-face-twin.c for copyright info */
  2.  
  3. #include "cairoint.h"
  4.  
  5. const int8_t _cairo_twin_outlines[] = {
  6. /* 0x0 '\0'  offset 0 */
  7.     0, 24, 42, 0, 2, 2,
  8.     0, 24, /* snap_x */
  9.     -42, 0, /* snap_y */
  10.     'm', 0, 0,
  11.     'l', 0, -42,
  12.     'l', 24, -42,
  13.     'l', 24, 0,
  14.     'l', 0, 0,
  15.     'e',
  16.     'X', 'X',
  17. /* 0x20 ' '  offset 28 */
  18.     0, 4, 0, 0, 0, 0,
  19.     /* snap_x */
  20.     /* snap_y */
  21.     'e',
  22.     'X', 'X', 'X',
  23.     'X', 'X',
  24. /* 0x21 '!'  offset 40 */
  25.     0, 0, 42, 0, 1, 3,
  26.     0, /* snap_x */
  27.     -42, -14, 0, /* snap_y */
  28.     'm', 0, -42,
  29.     'l', 0, -14,
  30.     'm', 0, 0,
  31.     'l', 0, 0,
  32.     'e',
  33.     'X', 'X', 'X', 'X', 'X', 'X',
  34.     'X', 'X', 'X', 'X', 'X', 'X',
  35.     'X', 'X', 'X', 'X', 'X', 'X',
  36.     'X', 'X', 'X', 'X', 'X', 'X',
  37.     'X', 'X', 'X',
  38. /* 0x22 '"'  offset 90 */
  39.     0, 16, 42, -28, 2, 2,
  40.     0, 16, /* snap_x */
  41.     -42, -28, /* snap_y */
  42.     'm', 0, -42,
  43.     'l', 0, -28,
  44.     'm', 16, -42,
  45.     'l', 16, -28,
  46.     'e',
  47.     'X',
  48. /* 0x23 '#'  offset 114 */
  49.     0, 30, 50, 14, 2, 5,
  50.     0, 30, /* snap_x */
  51.     -24, -21, -15, -12, 0, /* snap_y */
  52.     'm', 16, -50,
  53.     'l', 2, 14,
  54.     'm', 28, -50,
  55.     'l', 14, 14,
  56.     'm', 2, -24,
  57.     'l', 30, -24,
  58.     'm', 0, -12,
  59.     'l', 28, -12,
  60.     'e',
  61. /* 0x24 '$'  offset 152 */
  62.     0, 28, 50, 8, 4, 4,
  63.     0, 10, 18, 28, /* snap_x */
  64.     -42, -21, -15, 0, /* snap_y */
  65.     'm', 10, -50,
  66.     'l', 10, 8,
  67.     'm', 18, -50,
  68.     'l', 18, 8,
  69.     'm', 28, -36,
  70.     'c', 24, -42, 18, -42, 14, -42,
  71.     'c', 10, -42, 0, -42, 0, -34,
  72.     'c', 0, -25, 8, -24, 14, -22,
  73.     'c', 20, -20, 28, -19, 28, -9,
  74.     'c', 28, 0, 18, 0, 14, 0,
  75.     'c', 10, 0, 4, 0, 0, -6,
  76.     'e',
  77. /* 0x25 '%'  offset 224 */
  78.     0, 36, 42, 0, 4, 7,
  79.     0, 14, 22, 36, /* snap_x */
  80.     -42, -38, -28, -21, -15, -14, 0, /* snap_y */
  81.     'm', 10, -42,
  82.     'c', 12, -41, 14, -40, 14, -36,
  83.     'c', 14, -30, 11, -28, 6, -28,
  84.     'c', 2, -28, 0, -30, 0, -34,
  85.     'c', 0, -39, 3, -42, 8, -42,
  86.     'l', 10, -42,
  87.     'c', 18, -37, 28, -37, 36, -42,
  88.     'l', 0, 0,
  89.     'm', 28, -14,
  90.     'c', 24, -14, 22, -11, 22, -6,
  91.     'c', 22, -2, 24, 0, 28, 0,
  92.     'c', 33, 0, 36, -2, 36, -8,
  93.     'c', 36, -12, 34, -14, 30, -14,
  94.     'l', 28, -14,
  95.     'e',
  96.     'X', 'X', 'X',
  97. /* 0x26 '&'  offset 323 */
  98.     0, 40, 42, 0, 4, 4,
  99.     0, 10, 22, 40, /* snap_x */
  100.     -28, -21, -15, 0, /* snap_y */
  101.     'm', 40, -24,
  102.     'c', 40, -27, 39, -28, 37, -28,
  103.     'c', 29, -28, 32, 0, 12, 0,
  104.     'c', 0, 0, 0, -8, 0, -10,
  105.     'c', 0, -24, 22, -20, 22, -34,
  106.     'c', 22, -45, 10, -45, 10, -34,
  107.     'c', 10, -27, 25, 0, 36, 0,
  108.     'c', 39, 0, 40, -1, 40, -4,
  109.     'e',
  110. /* 0x27 '''  offset 390 */
  111.     0, 4, 42, -30, 2, 2,
  112.     0, 4, /* snap_x */
  113.     -42, -28, /* snap_y */
  114.     'm', 2, -38,
  115.     'c', -1, -38, -1, -42, 2, -42,
  116.     'c', 6, -42, 5, -33, 0, -30,
  117.     'e',
  118.     'X',
  119. /* 0x28 '('  offset 419 */
  120.     0, 14, 50, 14, 2, 2,
  121.     0, 14, /* snap_x */
  122.     -50, 14, /* snap_y */
  123.     'm', 14, -50,
  124.     'c', -5, -32, -5, -5, 14, 14,
  125.     'e',
  126.     'X',
  127. /* 0x29 ')'  offset 441 */
  128.     0, 14, 50, 14, 2, 2,
  129.     0, 14, /* snap_x */
  130.     -15, 14, /* snap_y */
  131.     'm', 0, -50,
  132.     'c', 19, -34, 19, -2, 0, 14,
  133.     'e',
  134.     'X',
  135. /* 0x2a '*'  offset 463 */
  136.     0, 20, 30, -6, 3, 3,
  137.     0, 10, 20, /* snap_x */
  138.     -21, -15, 0, /* snap_y */
  139.     'm', 10, -30,
  140.     'l', 10, -6,
  141.     'm', 0, -24,
  142.     'l', 20, -12,
  143.     'm', 20, -24,
  144.     'l', 0, -12,
  145.     'e',
  146. /* 0x2b '+'  offset 494 */
  147.     0, 36, 36, 0, 3, 4,
  148.     0, 18, 36, /* snap_x */
  149.     -21, -18, -15, 0, /* snap_y */
  150.     'm', 18, -36,
  151.     'l', 18, 0,
  152.     'm', 0, -18,
  153.     'l', 36, -18,
  154.     'e',
  155. /* 0x2c ','  offset 520 */
  156.     0, 4, 4, 8, 2, 3,
  157.     0, 4, /* snap_x */
  158.     -21, -15, 0, /* snap_y */
  159.     'm', 4, -2,
  160.     'c', 4, 1, 0, 1, 0, -2,
  161.     'c', 0, -5, 4, -5, 4, -2,
  162.     'c', 4, 4, 2, 6, 0, 8,
  163.     'e',
  164. /* 0x2d '-'  offset 556 */
  165.     0, 36, 18, -18, 2, 4,
  166.     0, 36, /* snap_x */
  167.     -21, -18, -15, 0, /* snap_y */
  168.     'm', 0, -18,
  169.     'l', 36, -18,
  170.     'e',
  171. /* 0x2e '.'  offset 575 */
  172.     0, 4, 4, 0, 2, 3,
  173.     0, 4, /* snap_x */
  174.     -21, -15, 0, /* snap_y */
  175.     'm', 2, -4,
  176.     'c', -1, -4, -1, 0, 2, 0,
  177.     'c', 5, 0, 5, -4, 2, -4,
  178.     'e',
  179. /* 0x2f '/'  offset 604 */
  180.     0, 36, 50, 14, 2, 3,
  181.     0, 36, /* snap_x */
  182.     -21, -15, 0, /* snap_y */
  183.     'm', 36, -50,
  184.     'l', 0, 14,
  185.     'e',
  186. /* 0x30 '0'  offset 622 */
  187.     0, 28, 42, 0, 2, 4,
  188.     0, 28, /* snap_x */
  189.     -42, -21, -15, 0, /* snap_y */
  190.     'm', 14, -42,
  191.     'c', 9, -42, 0, -42, 0, -21,
  192.     'c', 0, 0, 9, 0, 14, 0,
  193.     'c', 19, 0, 28, 0, 28, -21,
  194.     'c', 28, -42, 19, -42, 14, -42,
  195.     'E',
  196. /* 0x31 '1'  offset 666 */
  197.     0, 28, 42, 0, 2, 3,
  198.     0, 17, 28 /* snap_x */
  199.     -42, -34, 0, /* snap_y */
  200.     'm', 7, -34,
  201.     'c', 11, -35, 15, -38, 17, -42,
  202.     'l', 17, 0,
  203.     'e',
  204. /* 0x32 '2'  offset 691 */
  205.     0, 28, 42, 0, 4, 4,
  206.     0, 2, 26, 28, /* snap_x */
  207.     -42, -21, -15, 0, /* snap_y */
  208.     'm', 2, -32,
  209.     'c', 2, -34, 2, -42, 14, -42,
  210.     'c', 26, -42, 26, -34, 26, -32,
  211.     'c', 26, -30, 25, -25, 10, -10,
  212.     'l', 0, 0,
  213.     'l', 28, 0,
  214.     'e',
  215. /* 0x33 '3'  offset 736 */
  216.     0, 28, 42, 0, 2, 5,
  217.     0, 28, /* snap_x */
  218.     -42, -26, -21, -15, 0, /* snap_y */
  219.     'm', 4, -42,
  220.     'l', 26, -42,
  221.     'l', 14, -26,
  222.     'c', 21, -26, 28, -26, 28, -14,
  223.     'c', 28, 0, 17, 0, 13, 0,
  224.     'c', 8, 0, 3, -1, 0, -8,
  225.     'e',
  226. /* 0x34 '4'  offset 780 */
  227.     0, 28, 42, 0, 3, 3,
  228.     0, 20, 30, /* snap_x */
  229.     -42, -14, 0, /* snap_y */
  230.     'm', 20, 0,
  231.     'l', 20, -42,
  232.     'l', 0, -14,
  233.     'l', 30, -14,
  234.     'e',
  235.     'X', 'X', 'X',
  236.     'X',
  237. /* 0x35 '5'  offset 809 */
  238.     0, 28, 42, 0, 2, 5,
  239.     0, 28, /* snap_x */
  240.     -42, -28, -21, -15, 0, /* snap_y */
  241.     'm', 24, -42,
  242.     'l', 4, -42,
  243.     'l', 2, -24,
  244.     'c', 5, -27, 10, -28, 13, -28,
  245.     'c', 16, -28, 28, -28, 28, -14,
  246.     'c', 28, 0, 16, 0, 13, 0,
  247.     'c', 10, 0, 3, 0, 0, -8,
  248.     'e',
  249. /* 0x36 '6'  offset 860 */
  250.     0, 28, 42, 0, 2, 5,
  251.     0, 26, /* snap_x */
  252.     -42, -26, -21, -15, 0, /* snap_y */
  253.     'm', 24, -36,
  254.     'c', 22, -41, 19, -42, 14, -42,
  255.     'c', 9, -42, 0, -41, 0, -19,
  256.     'c', 0, -1, 9, 0, 13, 0,
  257.     'c', 18, 0, 26, -3, 26, -13,
  258.     'c', 26, -18, 23, -26, 13, -26,
  259.     'c', 10, -26, 1, -24, 0, -14,
  260.     'e',
  261. /* 0x37 '7'  offset 919 */
  262.     0, 28, 42, 0, 2, 4,
  263.     0, 28, /* snap_x */
  264.     -42, -21, -15, 0, /* snap_y */
  265.     'm', 0, -42,
  266.     'l', 28, -42,
  267.     'l', 8, 0,
  268.     'e',
  269.     'X', 'X', 'X',
  270. /* 0x38 '8'  offset 944 */
  271.     0, 28, 42, 0, 4, 4,
  272.     0, 2, 26, 28, /* snap_x */
  273.     -42, -21, -15, 0, /* snap_y */
  274.     'm', 14, -42,
  275.     'c', 5, -42, 2, -40, 2, -34,
  276.     'c', 2, -18, 28, -32, 28, -11,
  277.     'c', 28, 0, 18, 0, 14, 0,
  278.     'c', 10, 0, 0, 0, 0, -11,
  279.     'c', 0, -32, 26, -18, 26, -34,
  280.     'c', 26, -40, 23, -42, 14, -42,
  281.     'E',
  282. /* 0x39 '9'  offset 1004 */
  283.     0, 28, 42, 0, 2, 5,
  284.     0, 26, /* snap_x */
  285.     -42, -21, -16, -15, 0, /* snap_y */
  286.     'm', 26, -28,
  287.     'c', 25, -16, 13, -16, 13, -16,
  288.     'c', 8, -16, 0, -19, 0, -29,
  289.     'c', 0, -34, 3, -42, 13, -42,
  290.     'c', 24, -42, 26, -32, 26, -23,
  291.     'c', 26, -14, 24, 0, 12, 0,
  292.     'c', 7, 0, 4, -2, 2, -6,
  293.     'e',
  294. /* 0x3a ':'  offset 1063 */
  295.     0, 4, 28, 0, 2, 3,
  296.     0, 4, /* snap_x */
  297.     -21, -15, 0, /* snap_y */
  298.     'm', 2, -28,
  299.     'c', -1, -28, -1, -24, 2, -24,
  300.     'c', 5, -24, 5, -28, 2, -28,
  301.     'm', 2, -4,
  302.     'c', -1, -4, -1, 0, 2, 0,
  303.     'c', 5, 0, 5, -4, 2, -4,
  304.     'e',
  305. /* 0x3b ';'  offset 1109 */
  306.     0, 4, 28, 8, 2, 3,
  307.     0, 4, /* snap_x */
  308.     -21, -15, 0, /* snap_y */
  309.     'm', 2, -28,
  310.     'c', -1, -28, -1, -24, 2, -24,
  311.     'c', 5, -24, 5, -28, 2, -28,
  312.     'm', 4, -2,
  313.     'c', 4, 1, 0, 1, 0, -2,
  314.     'c', 0, -5, 4, -5, 4, -2,
  315.     'c', 4, 3, 2, 6, 0, 8,
  316.     'e',
  317. /* 0x3c '<'  offset 1162 */
  318.     0, 32, 36, 0, 2, 3,
  319.     0, 32, /* snap_x */
  320.     -36, -18, 0, /* snap_y */
  321.     'm', 32, -36,
  322.     'l', 0, -18,
  323.     'l', 32, 0,
  324.     'e',
  325. /* 0x3d '='  offset 1183 */
  326.     0, 36, 24, -12, 2, 2,
  327.     0, 36, /* snap_x */
  328.     -24, -15, /* snap_y */
  329.     'm', 0, -24,
  330.     'l', 36, -24,
  331.     'm', 0, -12,
  332.     'l', 36, -12,
  333.     'e',
  334.     'X', 'X', 'X',
  335. /* 0x3e '>'  offset 1209 */
  336.     0, 32, 36, 0, 2, 3,
  337.     0, 32, /* snap_x */
  338.     -36, -18, 0, /* snap_y */
  339.     'm', 0, -36,
  340.     'l', 32, -18,
  341.     'l', 0, 0,
  342.     'e',
  343. /* 0x3f '?'  offset 1230 */
  344.     0, 24, 42, 0, 3, 4,
  345.     0, 12, 24, /* snap_x */
  346.     -42, -21, -15, 0, /* snap_y */
  347.     'm', 0, -32,
  348.     'c', 0, -34, 0, -42, 12, -42,
  349.     'c', 24, -42, 24, -34, 24, -32,
  350.     'c', 24, -29, 24, -24, 12, -20,
  351.     'l', 12, -14,
  352.     'm', 12, 0,
  353.     'l', 12, 0,
  354.     'e',
  355.     'X', 'X', 'X',
  356.     'X', 'X', 'X',
  357.     'X', 'X', 'X',
  358.     'X', 'X',
  359. /* 0x40 '@'  offset 1288 */
  360.     0, 42, 42, 0, 1, 6,
  361.     30, /* snap_x */
  362.     -42, -32, -21, -15, -10, 0, /* snap_y */
  363.     'm', 30, -26,
  364.     'c', 28, -31, 24, -32, 21, -32,
  365.     'c', 10, -32, 10, -23, 10, -19,
  366.     'c', 10, -13, 11, -10, 19, -10,
  367.     'c', 30, -10, 28, -21, 30, -32,
  368.     'c', 27, -10, 30, -10, 34, -10,
  369.     'c', 41, -10, 42, -19, 42, -22,
  370.     'c', 42, -34, 34, -42, 21, -42,
  371.     'c', 9, -42, 0, -34, 0, -21,
  372.     'c', 0, -9, 8, 0, 21, 0,
  373.     'c', 30, 0, 34, -3, 36, -6,
  374.     'e',
  375. /* 0x41 'A'  offset 1375 */
  376.     0, 32, 42, 0, 2, 3,
  377.     0, 32, /* snap_x */
  378.     -42, -14, 0, /* snap_y */
  379.     'm', 0, 0,
  380.     'l', 16, -42,
  381.     'l', 32, 0,
  382.     'm', 6, -14,
  383.     'l', 26, -14,
  384.     'e',
  385.     'X', 'X', 'X',
  386.     'X',
  387. /* 0x42 'B'  offset 1406 */
  388.     0, 28, 42, 0, 2, 3,
  389.     0, 28, /* snap_x */
  390.     -42, -22, 0, /* snap_y */
  391.     'm', 0, 0,
  392.     'l', 0, -42,
  393.     'l', 18, -42,
  394.     'c', 32, -42, 32, -22, 18, -22,
  395.     'l', 0, -22,
  396.     'l', 18, -22,
  397.     'c', 32, -22, 32, 0, 18, 0,
  398.     'E',
  399.     'X', 'X', 'X',
  400.     'X', 'X', 'X',
  401.     'X', 'X',
  402. /* 0x43 'C'  offset 1455 */
  403.     0, 30, 42, 0, 2, 4,
  404.     0, 30, /* snap_x */
  405.     -42, -21, -15, 0, /* snap_y */
  406.     'm', 30, -32,
  407.     'c', 26, -42, 21, -42, 16, -42,
  408.     'c', 2, -42, 0, -29, 0, -21,
  409.     'c', 0, -13, 2, 0, 16, 0,
  410.     'c', 21, 0, 26, 0, 30, -10,
  411.     'e',
  412. /* 0x44 'D'  offset 1499 */
  413.     0, 28, 42, 0, 2, 2,
  414.     0, 28, /* snap_x */
  415.     -42, 0, /* snap_y */
  416.     'm', 0, 0,
  417.     'l', 0, -42,
  418.     'l', 14, -42,
  419.     'c', 33, -42, 33, 0, 14, 0,
  420.     'E',
  421.     'X', 'X', 'X',
  422.     'X', 'X', 'X',
  423.     'X', 'X',
  424. /* 0x45 'E'  offset 1534 */
  425.     0, 26, 42, 0, 2, 3,
  426.     0, 26, /* snap_x */
  427.     -42, -22, 0, /* snap_y */
  428.     'm', 26, -42,
  429.     'l', 0, -42,
  430.     'l', 0, 0,
  431.     'l', 26, 0,
  432.     'm', 0, -22,
  433.     'l', 16, -22,
  434.     'e',
  435.     'X', 'X', 'X',
  436.     'X', 'X', 'X',
  437.     'X', 'X',
  438. /* 0x46 'F'  offset 1572 */
  439.     0, 26, 42, 0, 2, 3,
  440.     0, 26, /* snap_x */
  441.     -42, -22, 0, /* snap_y */
  442.     'm', 0, 0,
  443.     'l', 0, -42,
  444.     'l', 26, -42,
  445.     'm', 0, -22,
  446.     'l', 16, -22,
  447.     'e',
  448.     'X', 'X', 'X',
  449.     'X', 'X',
  450. /* 0x47 'G'  offset 1604 */
  451.     0, 30, 42, 0, 2, 5,
  452.     0, 30, /* snap_x */
  453.     -42, -21, -16, -15, 0, /* snap_y */
  454.     'm', 30, -32,
  455.     'c', 26, -42, 21, -42, 16, -42,
  456.     'c', 2, -42, 0, -29, 0, -21,
  457.     'c', 0, -13, 2, 0, 16, 0,
  458.     'c', 28, 0, 30, -7, 30, -16,
  459.     'l', 20, -16,
  460.     'e',
  461.     'X', 'X', 'X',
  462. /* 0x48 'H'  offset 1655 */
  463.     0, 28, 42, 0, 2, 3,
  464.     0, 28, /* snap_x */
  465.     -42, -22, 0, /* snap_y */
  466.     'm', 0, -42,
  467.     'l', 0, 0,
  468.     'm', 28, -42,
  469.     'l', 28, 0,
  470.     'm', 0, -22,
  471.     'l', 28, -22,
  472.     'e',
  473.     'X',
  474. /* 0x49 'I'  offset 1686 */
  475.     0, 0, 42, 0, 1, 2,
  476.     0, /* snap_x */
  477.     -42, 0, /* snap_y */
  478.     'm', 0, -42,
  479.     'l', 0, 0,
  480.     'e',
  481.     'X',
  482. /* 0x4a 'J'  offset 1703 */
  483.     0, 20, 42, 0, 2, 3,
  484.     0, 20, /* snap_x */
  485.     -42, -15, 0, /* snap_y */
  486.     'm', 20, -42,
  487.     'l', 20, -10,
  488.     'c', 20, 3, 0, 3, 0, -10,
  489.     'l', 0, -14,
  490.     'e',
  491. /* 0x4b 'K'  offset 1731 */
  492.     0, 28, 42, 0, 2, 3,
  493.     0, 28, /* snap_x */
  494.     -42, -15, 0, /* snap_y */
  495.     'm', 0, -42,
  496.     'l', 0, 0,
  497.     'm', 28, -42,
  498.     'l', 0, -14,
  499.     'm', 10, -24,
  500.     'l', 28, 0,
  501.     'e',
  502. /* 0x4c 'L'  offset 1761 */
  503.     0, 24, 42, 0, 2, 2,
  504.     0, 24, /* snap_x */
  505.     -42, 0, /* snap_y */
  506.     'm', 0, -42,
  507.     'l', 0, 0,
  508.     'l', 24, 0,
  509.     'e',
  510.     'X', 'X', 'X',
  511.     'X',
  512. /* 0x4d 'M'  offset 1785 */
  513.     0, 32, 42, 0, 2, 2,
  514.     0, 32, /* snap_x */
  515.     -42, 0, /* snap_y */
  516.     'm', 0, 0,
  517.     'l', 0, -42,
  518.     'l', 16, 0,
  519.     'l', 32, -42,
  520.     'l', 32, 0,
  521.     'e',
  522.     'X', 'X', 'X',
  523.     'X', 'X', 'X',
  524.     'X', 'X', 'X',
  525.     'X',
  526. /* 0x4e 'N'  offset 1821 */
  527.     0, 28, 42, 0, 2, 2,
  528.     0, 28, /* snap_x */
  529.     -42, 0, /* snap_y */
  530.     'm', 0, 0,
  531.     'l', 0, -42,
  532.     'l', 28, 0,
  533.     'l', 28, -42,
  534.     'e',
  535.     'X', 'X', 'X',
  536.     'X', 'X', 'X',
  537.     'X',
  538. /* 0x4f 'O'  offset 1851 */
  539.     0, 32, 42, 0, 2, 4,
  540.     0, 32, /* snap_x */
  541.     -42, -21, -15, 0, /* snap_y */
  542.     'm', 16, -42,
  543.     'c', 2, -42, 0, -29, 0, -21,
  544.     'c', 0, -13, 2, 0, 16, 0,
  545.     'c', 30, 0, 32, -13, 32, -21,
  546.     'c', 32, -29, 30, -42, 16, -42,
  547.     'E',
  548. /* 0x50 'P'  offset 1895 */
  549.     0, 28, 42, 0, 2, 5,
  550.     0, 28, /* snap_x */
  551.     -42, -21, -20, -15, 0, /* snap_y */
  552.     'm', 0, 0,
  553.     'l', 0, -42,
  554.     'l', 18, -42,
  555.     'c', 32, -42, 32, -20, 18, -20,
  556.     'l', 0, -20,
  557.     'e',
  558.     'X', 'X', 'X',
  559. /* 0x51 'Q'  offset 1931 */
  560.     0, 32, 42, 4, 2, 4,
  561.     0, 32, /* snap_x */
  562.     -42, -21, -15, 0, /* snap_y */
  563.     'm', 16, -42,
  564.     'c', 2, -42, 0, -29, 0, -21,
  565.     'c', 0, -13, 2, 0, 16, 0,
  566.     'c', 30, 0, 32, -13, 32, -21,
  567.     'c', 32, -29, 30, -42, 16, -42,
  568.     'M', 18, -8,
  569.     'l', 30, 4,
  570.     'e',
  571. /* 0x52 'R'  offset 1981 */
  572.     0, 28, 42, 0, 2, 5,
  573.     0, 28, /* snap_x */
  574.     -42, -22, -21, -15, 0, /* snap_y */
  575.     'm', 0, 0,
  576.     'l', 0, -42,
  577.     'l', 18, -42,
  578.     'c', 32, -42, 31, -22, 18, -22,
  579.     'l', 0, -22,
  580.     'm', 14, -22,
  581.     'l', 28, 0,
  582.     'e',
  583.     'X', 'X', 'X',
  584. /* 0x53 'S'  offset 2023 */
  585.     0, 28, 42, 0, 2, 4,
  586.     0, 28, /* snap_x */
  587.     -42, -21, -15, 0, /* snap_y */
  588.     'm', 28, -36,
  589.     'c', 25, -41, 21, -42, 14, -42,
  590.     'c', 10, -42, 0, -42, 0, -34,
  591.     'c', 0, -17, 28, -28, 28, -9,
  592.     'c', 28, 0, 19, 0, 14, 0,
  593.     'c', 7, 0, 3, -1, 0, -6,
  594.     'e',
  595. /* 0x54 'T'  offset 2074 */
  596.     0, 28, 42, 0, 3, 4,
  597.     0, 14, 28, /* snap_x */
  598.     -42, -21, -15, 0, /* snap_y */
  599.     'm', 14, -42,
  600.     'l', 14, 0,
  601.     'm', 0, -42,
  602.     'l', 28, -42,
  603.     'e',
  604. /* 0x55 'U'  offset 2100 */
  605.     0, 28, 42, 0, 2, 2,
  606.     0, 28, /* snap_x */
  607.     -42, 0, /* snap_y */
  608.     'm', 0, -42,
  609.     'l', 0, -12,
  610.     'c', 0, 4, 28, 4, 28, -12,
  611.     'l', 28, -42,
  612.     'e',
  613.     'X',
  614. /* 0x56 'V'  offset 2128 */
  615.     0, 32, 42, 0, 2, 2,
  616.     0, 32, /* snap_x */
  617.     -42, 0, /* snap_y */
  618.     'm', 0, -42,
  619.     'l', 16, 0,
  620.     'l', 32, -42,
  621.     'e',
  622.     'X', 'X', 'X',
  623.     'X',
  624. /* 0x57 'W'  offset 2152 */
  625.     0, 40, 42, 0, 2, 2,
  626.     0, 40, /* snap_x */
  627.     -42, 0, /* snap_y */
  628.     'm', 0, -42,
  629.     'l', 10, 0,
  630.     'l', 20, -42,
  631.     'l', 30, 0,
  632.     'l', 40, -42,
  633.     'e',
  634.     'X', 'X', 'X',
  635.     'X', 'X', 'X',
  636.     'X', 'X', 'X',
  637.     'X',
  638. /* 0x58 'X'  offset 2188 */
  639.     0, 28, 42, 0, 2, 2,
  640.     0, 28, /* snap_x */
  641.     -42, 0, /* snap_y */
  642.     'm', 0, -42,
  643.     'l', 28, 0,
  644.     'm', 28, -42,
  645.     'l', 0, 0,
  646.     'e',
  647.     'X',
  648. /* 0x59 'Y'  offset 2212 */
  649.     0, 32, 42, 0, 3, 3,
  650.     0, 16, 32, /* snap_x */
  651.     -42, -21, 0, /* snap_y */
  652.     'm', 0, -42,
  653.     'l', 16, -22,
  654.     'l', 16, 0,
  655.     'm', 32, -42,
  656.     'l', 16, -22,
  657.     'e',
  658. /* 0x5a 'Z'  offset 2240 */
  659.     0, 28, 42, 0, 2, 4,
  660.     0, 28, /* snap_x */
  661.     -42, -21, -15, 0, /* snap_y */
  662.     'm', 28, 0,
  663.     'l', 0, 0,
  664.     'l', 28, -42,
  665.     'l', 0, -42,
  666.     'e',
  667.     'X', 'X', 'X',
  668.     'X', 'X', 'X',
  669. /* 0x5b '['  offset 2271 */
  670.     0, 14, 44, 0, 2, 4,
  671.     0, 14, /* snap_x */
  672.     -44, -21, -15, 0, /* snap_y */
  673.     'm', 14, -44,
  674.     'l', 0, -44,
  675.     'l', 0, 0,
  676.     'l', 14, 0,
  677.     'e',
  678. /* 0x5c '\'  offset 2296 */
  679.     0, 36, 50, 14, 2, 3,
  680.     0, 36, /* snap_x */
  681.     -21, -15, 0, /* snap_y */
  682.     'm', 0, -50,
  683.     'l', 36, 14,
  684.     'e',
  685. /* 0x5d ']'  offset 2314 */
  686.     0, 14, 44, 0, 2, 4,
  687.     0, 14, /* snap_x */
  688.     -44, -21, -15, 0, /* snap_y */
  689.     'm', 0, -44,
  690.     'l', 14, -44,
  691.     'l', 14, 0,
  692.     'l', 0, 0,
  693.     'e',
  694. /* 0x5e '^'  offset 2339 */
  695.     0, 32, 46, -18, 2, 3,
  696.     0, 32, /* snap_x */
  697.     -21, -15, 0, /* snap_y */
  698.     'm', 0, -18,
  699.     'l', 16, -46,
  700.     'l', 32, -18,
  701.     'e',
  702.     'X', 'X', 'X',
  703. /* 0x5f '_'  offset 2363 */
  704.     0, 36, 0, 0, 2, 1,
  705.     0, 36, /* snap_x */
  706.     0, /* snap_y */
  707.     'm', 0, 0,
  708.     'l', 36, 0,
  709.     'e',
  710.     'X', 'X',
  711. /* 0x60 '`'  offset 2381 */
  712.     0, 4, 42, -30, 2, 2,
  713.     0, 4, /* snap_x */
  714.     -42, 0, /* snap_y */
  715.     'm', 4, -42,
  716.     'c', 2, -40, 0, -39, 0, -32,
  717.     'c', 0, -31, 1, -30, 2, -30,
  718.     'c', 5, -30, 5, -34, 2, -34,
  719.     'e',
  720.     'X',
  721. /* 0x61 'a'  offset 2417 */
  722.     0, 24, 28, 0, 2, 4,
  723.     0, 24, /* snap_x */
  724.     -28, -21, -15, 0, /* snap_y */
  725.     'm', 24, -28,
  726.     'l', 24, 0,
  727.     'm', 24, -22,
  728.     'c', 21, -27, 18, -28, 13, -28,
  729.     'c', 2, -28, 0, -19, 0, -14,
  730.     'c', 0, -9, 2, 0, 13, 0,
  731.     'c', 18, 0, 21, -1, 24, -6,
  732.     'e',
  733. /* 0x62 'b'  offset 2467 */
  734.     0, 24, 42, 0, 2, 4,
  735.     0, 24, /* snap_x */
  736.     -42, -28, -15, 0, /* snap_y */
  737.     'm', 0, -42,
  738.     'l', 0, 0,
  739.     'm', 0, -22,
  740.     'c', 3, -26, 6, -28, 11, -28,
  741.     'c', 22, -28, 24, -19, 24, -14,
  742.     'c', 24, -9, 22, 0, 11, 0,
  743.     'c', 6, 0, 3, -2, 0, -6,
  744.     'e',
  745. /* 0x63 'c'  offset 2517 */
  746.     0, 24, 28, 0, 2, 4,
  747.     0, 24, /* snap_x */
  748.     -28, -21, -15, 0, /* snap_y */
  749.     'm', 24, -22,
  750.     'c', 21, -26, 18, -28, 13, -28,
  751.     'c', 2, -28, 0, -19, 0, -14,
  752.     'c', 0, -9, 2, 0, 13, 0,
  753.     'c', 18, 0, 21, -2, 24, -6,
  754.     'e',
  755. /* 0x64 'd'  offset 2561 */
  756.     0, 24, 42, 0, 2, 4,
  757.     0, 24, /* snap_x */
  758.     -42, -28, -15, 0, /* snap_y */
  759.     'm', 24, -42,
  760.     'l', 24, 0,
  761.     'm', 24, -22,
  762.     'c', 21, -26, 18, -28, 13, -28,
  763.     'c', 2, -28, 0, -19, 0, -14,
  764.     'c', 0, -9, 2, 0, 13, 0,
  765.     'c', 18, 0, 21, -2, 24, -6,
  766.     'e',
  767. /* 0x65 'e'  offset 2611 */
  768.     0, 24, 28, 0, 2, 5,
  769.     0, 24, /* snap_x */
  770.     -28, -21, -16, -15, 0, /* snap_y */
  771.     'm', 0, -16,
  772.     'l', 24, -16,
  773.     'c', 24, -20, 24, -28, 13, -28,
  774.     'c', 2, -28, 0, -19, 0, -14,
  775.     'c', 0, -9, 2, 0, 13, 0,
  776.     'c', 18, 0, 21, -2, 24, -6,
  777.     'e',
  778. /* 0x66 'f'  offset 2659 */
  779.     0, 16, 42, 0, 3, 5,
  780.     0, 6, 16, /* snap_x */
  781.     -42, -28, -21, -15, 0, /* snap_y */
  782.     'm', 16, -42,
  783.     'c', 8, -42, 6, -40, 6, -34,
  784.     'l', 6, 0,
  785.     'm', 0, -28,
  786.     'l', 14, -28,
  787.     'e',
  788. /* 0x67 'g'  offset 2693 */
  789.     0, 24, 28, 14, 2, 5,
  790.     0, 24, /* snap_x */
  791.     -28, -21, -15, 0, 14, /* snap_y */
  792.     'm', 24, -28,
  793.     'l', 24, 4,
  794.     'c', 23, 14, 16, 14, 13, 14,
  795.     'c', 10, 14, 8, 14, 6, 12,
  796.     'm', 24, -22,
  797.     'c', 21, -26, 18, -28, 13, -28,
  798.     'c', 2, -28, 0, -19, 0, -14,
  799.     'c', 0, -9, 2, 0, 13, 0,
  800.     'c', 18, 0, 21, -2, 24, -6,
  801.     'e',
  802. /* 0x68 'h'  offset 2758 */
  803.     0, 22, 42, 0, 2, 4,
  804.     0, 22, /* snap_x */
  805.     -42, -28, -15, 0, /* snap_y */
  806.     'm', 0, -42,
  807.     'l', 0, 0,
  808.     'm', 0, -20,
  809.     'c', 8, -32, 22, -31, 22, -20,
  810.     'l', 22, 0,
  811.     'e',
  812. /* 0x69 'i'  offset 2790 */
  813.     0, 0, 44, 0, 1, 3,
  814.     0, /* snap_x */
  815.     -42, -28, 0, /* snap_y */
  816.     'm', 0, -42,
  817.     'l', 0, -42,
  818.     'm', 0, -28,
  819.     'l', 0, 0,
  820.     'e',
  821.     'X', 'X', 'X',
  822.     'X', 'X', 'X',
  823.     'X', 'X', 'X',
  824.     'X', 'X',
  825.     'X', 'X',
  826. /* 0x6a 'j'  offset 2826 */
  827.     -8, 4, 44, 14, 3, 5,
  828.     -8, 2, 4, /* snap_x */
  829.     -42, -21, -15, 0, 14, /* snap_y */
  830.     'm', 2, -42,
  831.     'l', 2, -42,
  832.     'm', 2, -28,
  833.     'l', 2, 6,
  834.     'c', 2, 13, -1, 14, -8, 14,
  835.     'e',
  836.     'X', 'X', 'X',
  837.     'X', 'X', 'X',
  838.     'X', 'X', 'X',
  839.     'X',
  840. /* 0x6b 'k'  offset 2870 */
  841.     0, 22, 42, 0, 2, 3,
  842.     0, 22, /* snap_x */
  843.     -42, -28, 0, /* snap_y */
  844.     'm', 0, -42,
  845.     'l', 0, 0,
  846.     'm', 20, -28,
  847.     'l', 0, -8,
  848.     'm', 8, -16,
  849.     'l', 22, 0,
  850.     'e',
  851. /* 0x6c 'l'  offset 2900 */
  852.     0, 0, 42, 0, 1, 2,
  853.     0, /* snap_x */
  854.     -42, 0, /* snap_y */
  855.     'm', 0, -42,
  856.     'l', 0, 0,
  857.     'e',
  858.     'X',
  859. /* 0x6d 'm'  offset 2917 */
  860.     0, 44, 28, 0, 3, 3,
  861.     0, 22, 44, /* snap_x */
  862.     -28, -21, 0, /* snap_y */
  863.     'm', 0, -28,
  864.     'l', 0, 0,
  865.     'm', 0, -20,
  866.     'c', 5, -29, 22, -33, 22, -20,
  867.     'l', 22, 0,
  868.     'm', 22, -20,
  869.     'c', 27, -29, 44, -33, 44, -20,
  870.     'l', 44, 0,
  871.     'e',
  872.     'X',
  873. /* 0x6e 'n'  offset 2963 */
  874.     0, 22, 28, 0, 2, 3,
  875.     0, 22, /* snap_x */
  876.     -28, -21, 0, /* snap_y */
  877.     'm', 0, -28,
  878.     'l', 0, 0,
  879.     'm', 0, -20,
  880.     'c', 4, -28, 22, -34, 22, -20,
  881.     'l', 22, 0,
  882.     'e',
  883.     'X',
  884. /* 0x6f 'o'  offset 2995 */
  885.     0, 26, 28, 0, 2, 4,
  886.     0, 26, /* snap_x */
  887.     -28, -21, -15, 0, /* snap_y */
  888.     'm', 13, -28,
  889.     'c', 2, -28, 0, -19, 0, -14,
  890.     'c', 0, -9, 2, 0, 13, 0,
  891.     'c', 24, 0, 26, -9, 26, -14,
  892.     'c', 26, -19, 24, -28, 13, -28,
  893.     'E',
  894. /* 0x70 'p'  offset 3039 */
  895.     0, 24, 28, 14, 2, 4,
  896.     0, 24, /* snap_x */
  897.     -28, -21, 0, 14, /* snap_y */
  898.     'm', 0, -28,
  899.     'l', 0, 14,
  900.     'm', 0, -22,
  901.     'c', 3, -26, 6, -28, 11, -28,
  902.     'c', 22, -28, 24, -19, 24, -14,
  903.     'c', 24, -9, 22, 0, 11, 0,
  904.     'c', 6, 0, 3, -2, 0, -6,
  905.     'e',
  906. /* 0x71 'q'  offset 3089 */
  907.     0, 24, 28, 14, 2, 4,
  908.     0, 24, /* snap_x */
  909.     -28, -21, 0, 14, /* snap_y */
  910.     'm', 24, -28,
  911.     'l', 24, 14,
  912.     'm', 24, -22,
  913.     'c', 21, -26, 18, -28, 13, -28,
  914.     'c', 2, -28, 0, -19, 0, -14,
  915.     'c', 0, -9, 2, 0, 13, 0,
  916.     'c', 18, 0, 21, -2, 24, -6,
  917.     'e',
  918. /* 0x72 'r'  offset 3139 */
  919.     0, 16, 28, 0, 2, 4,
  920.     0, 16, /* snap_x */
  921.     -28, -21, -15, 0, /* snap_y */
  922.     'm', 0, -28,
  923.     'l', 0, 0,
  924.     'm', 0, -16,
  925.     'c', 2, -27, 7, -28, 16, -28,
  926.     'e',
  927. /* 0x73 's'  offset 3168 */
  928.     0, 22, 28, 0, 2, 4,
  929.     0, 22, /* snap_x */
  930.     -28, -21, -15, 0, /* snap_y */
  931.     'm', 22, -22,
  932.     'c', 22, -27, 16, -28, 11, -28,
  933.     'c', 4, -28, 0, -26, 0, -22,
  934.     'c', 0, -11, 22, -20, 22, -7,
  935.     'c', 22, 0, 17, 0, 11, 0,
  936.     'c', 6, 0, 0, -1, 0, -6,
  937.     'e',
  938. /* 0x74 't'  offset 3219 */
  939.     0, 16, 42, 0, 3, 4,
  940.     0, 6, 16, /* snap_x */
  941.     -42, -28, -21, 0, /* snap_y */
  942.     'm', 6, -42,
  943.     'l', 6, -8,
  944.     'c', 6, -2, 8, 0, 16, 0,
  945.     'm', 0, -28,
  946.     'l', 14, -28,
  947.     'e',
  948. /* 0x75 'u'  offset 3252 */
  949.     0, 22, 28, 0, 2, 3,
  950.     0, 22, /* snap_x */
  951.     -28, -15, 0, /* snap_y */
  952.     'm', 0, -28,
  953.     'l', 0, -8,
  954.     'c', 0, 6, 18, 0, 22, -8,
  955.     'm', 22, -28,
  956.     'l', 22, 0,
  957.     'e',
  958. /* 0x76 'v'  offset 3283 */
  959.     0, 24, 28, 0, 2, 3,
  960.     0, 24, /* snap_x */
  961.     -28, -15, 0, /* snap_y */
  962.     'm', 0, -28,
  963.     'l', 12, 0,
  964.     'l', 24, -28,
  965.     'e',
  966.     'X', 'X', 'X',
  967. /* 0x77 'w'  offset 3307 */
  968.     0, 32, 28, 0, 2, 3,
  969.     0, 32, /* snap_x */
  970.     -28, -15, 0, /* snap_y */
  971.     'm', 0, -28,
  972.     'l', 8, 0,
  973.     'l', 16, -28,
  974.     'l', 24, 0,
  975.     'l', 32, -28,
  976.     'e',
  977.     'X', 'X', 'X',
  978.     'X', 'X', 'X',
  979.     'X', 'X', 'X',
  980. /* 0x78 'x'  offset 3343 */
  981.     0, 22, 28, 0, 2, 2,
  982.     0, 22, /* snap_x */
  983.     -28, 0, /* snap_y */
  984.     'm', 0, -28,
  985.     'l', 22, 0,
  986.     'm', 22, -28,
  987.     'l', 0, 0,
  988.     'e',
  989.     'X',
  990. /* 0x79 'y'  offset 3367 */
  991.     -2, 24, 28, 14, 2, 4,
  992.     0, 24, /* snap_x */
  993.     -28, -15, 0, 14, /* snap_y */
  994.     'm', 0, -28,
  995.     'l', 12, 0,
  996.     'm', 24, -28,
  997.     'l', 12, 0,
  998.     'c', 6, 13, 0, 14, -2, 14,
  999.     'e',
  1000. /* 0x7a 'z'  offset 3399 */
  1001.     0, 22, 28, 0, 2, 4,
  1002.     0, 22, /* snap_x */
  1003.     -28, -21, -15, 0, /* snap_y */
  1004.     'm', 22, 0,
  1005.     'l', 0, 0,
  1006.     'l', 22, -28,
  1007.     'l', 0, -28,
  1008.     'e',
  1009.     'X', 'X', 'X',
  1010.     'X', 'X', 'X',
  1011. /* 0x7b '{'  offset 3430 */
  1012.     0, 16, 44, 0, 3, 5,
  1013.     0, 6, 16, /* snap_x */
  1014.     -44, -24, -21, -15, 0, /* snap_y */
  1015.     'm', 16, -44,
  1016.     'c', 10, -44, 6, -42, 6, -36,
  1017.     'l', 6, -24,
  1018.     'l', 0, -24,
  1019.     'l', 6, -24,
  1020.     'l', 6, -8,
  1021.     'c', 6, -2, 10, 0, 16, 0,
  1022.     'e',
  1023. /* 0x7c '|'  offset 3474 */
  1024.     0, 0, 50, 14, 1, 2,
  1025.     0, /* snap_x */
  1026.     -50, 14, /* snap_y */
  1027.     'm', 0, -50,
  1028.     'l', 0, 14,
  1029.     'e',
  1030.     'X',
  1031. /* 0x7d '}'  offset 3491 */
  1032.     0, 16, 44, 0, 3, 5,
  1033.     0, 10, 16, /* snap_x */
  1034.     -44, -24, -21, -15, 0, /* snap_y */
  1035.     'm', 0, -44,
  1036.     'c', 6, -44, 10, -42, 10, -36,
  1037.     'l', 10, -24,
  1038.     'l', 16, -24,
  1039.     'l', 10, -24,
  1040.     'l', 10, -8,
  1041.     'c', 10, -2, 6, 0, 0, 0,
  1042.     'e',
  1043. /* 0x7e '~'  offset 3535 */
  1044.     0, 36, 24, -12, 2, 5,
  1045.     0, 36, /* snap_x */
  1046.     -24, -21, -15, -12, 0, /* snap_y */
  1047.     'm', 0, -14,
  1048.     'c', 1, -21, 4, -24, 8, -24,
  1049.     'c', 18, -24, 18, -12, 28, -12,
  1050.     'c', 32, -12, 35, -15, 36, -22,
  1051.     'e',
  1052. };
  1053.  
  1054. const uint16_t _cairo_twin_charmap[128] = {
  1055.     0,    0,    0,    0,    0,    0,    0,    0,
  1056.     0,    0,    0,    0,    0,    0,    0,    0,
  1057.     0,    0,    0,    0,    0,    0,    0,    0,
  1058.     0,    0,    0,    0,    0,    0,    0,    0,
  1059.     28,   40,   90,  114,  152,  224,  323,  390,
  1060.     419,  441,  463,  494,  520,  556,  575,  604,
  1061.     622,  666,  691,  736,  780,  809,  860,  919,
  1062.     944, 1004, 1063, 1109, 1162, 1183, 1209, 1230,
  1063.     1288, 1375, 1406, 1455, 1499, 1534, 1572, 1604,
  1064.     1655, 1686, 1703, 1731, 1761, 1785, 1821, 1851,
  1065.     1895, 1931, 1981, 2023, 2074, 2100, 2128, 2152,
  1066.     2188, 2212, 2240, 2271, 2296, 2314, 2339, 2363,
  1067.     2381, 2417, 2467, 2517, 2561, 2611, 2659, 2693,
  1068.     2758, 2790, 2826, 2870, 2900, 2917, 2963, 2995,
  1069.     3039, 3089, 3139, 3168, 3219, 3252, 3283, 3307,
  1070.     3343, 3367, 3399, 3430, 3474, 3491, 3535,    0,
  1071. };
  1072.  
  1073.