/** \file * \brief Vector Text * * See Copyright Notice in cd.h */ #include #include #include #include #include "cd.h" #include "wd.h" #include "cd_private.h" #define MULTILINE_MAXLEN 10240 typedef struct cdOperation { char operation; signed char x, y; } cdOperation; typedef struct cdCaracter { int right, center, operations; cdOperation *op; } cdCaracter; struct _cdVectorFont { char name[256]; /* font name */ char file_name[10240]; /* font file name */ cdCaracter *chars; /* array of characters */ int top, /* from baseline to top */ cap, /* from baseline to cap (top of chars) */ half, /* half between top and bottom UNUSED */ bottom; /* from baseline to bottom (negative) */ double point_size_x, point_size_y; /* internal char size proportional to "top" */ double current_cos, current_sin; /* text direction */ int space, line_space; /* space between chars and vf_lines */ /* general transformation matrix */ int text_transf; double text_matrix[6]; cdCanvas* canvas; }; static unsigned char vf_ansi2ascii[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, /* 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, */ 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197, 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 155, 156, 157, 158, 159, /* 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, */ 225, 237, 243, 250, 241, 209, 170, 176, 191, 169, 166, 189, 188, 173, 174, 175, 167, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 172, 171, 190, 168, /* 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, */ 192, 193, 194, 195, 142, 143, 146, 128, 200, 144, 202, 203, 204, 205, 206, 207, 208, 165, 210, 211, 212, 213, 153, 215, 216, 217, 218, 219, 154, 221, 222, 223, /* 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, */ 133, 160, 131, 227, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139, 240, 164, 149, 162, 147, 245, 148, 247, 248, 151, 163, 150, 129, 253, 254, 152 }; /******************************************************/ /* descricao do fonte default */ /******************************************************/ static int vf_default_top = 28; static int vf_default_cap = 28; static int vf_default_half = 14; static int vf_default_bottom = -7; static cdOperation vf_default_char_33[] = { {'m', 1, 21}, {'l', 1, 7}, {'m', 1, 2}, {'l', 0, 1}, {'l', 1, 0}, {'l', 2, 1}, {'l', 1, 2}, }; static cdOperation vf_default_char_34[] = { {'m', 1, 21}, {'l', 0, 20}, {'l', 0, 14}, {'m', 1, 20}, {'l', 0, 14}, {'m', 1, 21}, {'l', 2, 20}, {'l', 0, 14}, {'m', 10, 21}, {'l', 9, 20}, {'l', 9, 14}, {'m', 10, 20}, {'l', 9, 14}, {'m', 10, 21}, {'l', 11, 20}, {'l', 9, 14}, }; static cdOperation vf_default_char_35[] = { {'m', 8, 21}, {'l', 1, -7}, {'m', 14, 21}, {'l', 7, -7}, {'m', 1, 10}, {'l', 15, 10}, {'m', 0, 4}, {'l', 14, 4}, }; static cdOperation vf_default_char_36[] = { {'m', 5, 25}, {'l', 5, -4}, {'m', 9, 25}, {'l', 9, -4}, {'m', 13, 18}, {'l', 12, 17}, {'l', 13, 16}, {'l', 14, 17}, {'l', 14, 18}, {'l', 12, 20}, {'l', 9, 21}, {'l', 5, 21}, {'l', 2, 20}, {'l', 0, 18}, {'l', 0, 16}, {'l', 1, 14}, {'l', 2, 13}, {'l', 4, 12}, {'l', 10, 10}, {'l', 12, 9}, {'l', 14, 7}, {'m', 0, 16}, {'l', 2, 14}, {'l', 4, 13}, {'l', 10, 11}, {'l', 12, 10}, {'l', 13, 9}, {'l', 14, 7}, {'l', 14, 3}, {'l', 12, 1}, {'l', 9, 0}, {'l', 5, 0}, {'l', 2, 1}, {'l', 0, 3}, {'l', 0, 4}, {'l', 1, 5}, {'l', 2, 4}, {'l', 1, 3}, }; static cdOperation vf_default_char_37[] = { {'m', 18, 21}, {'l', 0, 0}, {'m', 5, 21}, {'l', 7, 19}, {'l', 7, 17}, {'l', 6, 15}, {'l', 4, 14}, {'l', 2, 14}, {'l', 0, 16}, {'l', 0, 18}, {'l', 1, 20}, {'l', 3, 21}, {'l', 5, 21}, {'l', 7, 20}, {'l', 10, 19}, {'l', 13, 19}, {'l', 16, 20}, {'l', 18, 21}, {'m', 14, 7}, {'l', 12, 6}, {'l', 11, 4}, {'l', 11, 2}, {'l', 13, 0}, {'l', 15, 0}, {'l', 17, 1}, {'l', 18, 3}, {'l', 18, 5}, {'l', 16, 7}, {'l', 14, 7}, }; static cdOperation vf_default_char_38[] = { {'m', 18, 13}, {'l', 17, 12}, {'l', 18, 11}, {'l', 19, 12}, {'l', 19, 13}, {'l', 18, 14}, {'l', 17, 14}, {'l', 16, 13}, {'l', 15, 11}, {'l', 13, 6}, {'l', 11, 3}, {'l', 9, 1}, {'l', 7, 0}, {'l', 4, 0}, {'l', 1, 1}, {'l', 0, 3}, {'l', 0, 6}, {'l', 1, 8}, {'l', 7, 12}, {'l', 9, 14}, {'l', 10, 16}, {'l', 10, 18}, {'l', 9, 20}, {'l', 7, 21}, {'l', 5, 20}, {'l', 4, 18}, {'l', 4, 16}, {'l', 5, 13}, {'l', 7, 10}, {'l', 12, 3}, {'l', 14, 1}, {'l', 17, 0}, {'l', 18, 0}, {'l', 19, 1}, {'l', 19, 2}, {'m', 4, 0}, {'l', 2, 1}, {'l', 1, 3}, {'l', 1, 6}, {'l', 2, 8}, {'l', 4, 10}, {'m', 4, 16}, {'l', 5, 14}, {'l', 13, 3}, {'l', 15, 1}, {'l', 17, 0}, }; static cdOperation vf_default_char_39[] = { {'m', 1, 19}, {'l', 0, 20}, {'l', 1, 21}, {'l', 2, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 15}, }; static cdOperation vf_default_char_40[] = { {'m', 7, 25}, {'l', 5, 23}, {'l', 3, 20}, {'l', 1, 16}, {'l', 0, 11}, {'l', 0, 7}, {'l', 1, 2}, {'l', 3, -2}, {'l', 5, -5}, {'l', 7, -7}, {'m', 5, 23}, {'l', 3, 19}, {'l', 2, 16}, {'l', 1, 11}, {'l', 1, 7}, {'l', 2, 2}, {'l', 3, -1}, {'l', 5, -5}, }; static cdOperation vf_default_char_41[] = { {'m', 0, 25}, {'l', 2, 23}, {'l', 4, 20}, {'l', 6, 16}, {'l', 7, 11}, {'l', 7, 7}, {'l', 6, 2}, {'l', 4, -2}, {'l', 2, -5}, {'l', 0, -7}, {'m', 2, 23}, {'l', 4, 19}, {'l', 5, 16}, {'l', 6, 11}, {'l', 6, 7}, {'l', 5, 2}, {'l', 4, -1}, {'l', 2, -5}, }; static cdOperation vf_default_char_42[] = { {'m', 5, 21}, {'l', 5, 9}, {'m', 0, 18}, {'l', 10, 12}, {'m', 10, 18}, {'l', 0, 12}, }; static cdOperation vf_default_char_43[] = { {'m', 9, 18}, {'l', 9, 0}, {'m', 0, 9}, {'l', 18, 9}, }; static cdOperation vf_default_char_44[] = { {'m', 2, 1}, {'l', 1, 0}, {'l', 0, 1}, {'l', 1, 2}, {'l', 2, 1}, {'l', 2, -1}, {'l', 1, -3}, {'l', 0, -4}, }; static cdOperation vf_default_char_45[] = { {'m', 0, 9}, {'l', 18, 9}, }; static cdOperation vf_default_char_46[] = { {'m', 1, 2}, {'l', 0, 1}, {'l', 1, 0}, {'l', 2, 1}, {'l', 1, 2}, }; static cdOperation vf_default_char_47[] = { {'m', 0, -3}, {'l', 14, 21}, }; static cdOperation vf_default_char_48[] = { {'m', 6, 21}, {'l', 3, 20}, {'l', 1, 17}, {'l', 0, 12}, {'l', 0, 9}, {'l', 1, 4}, {'l', 3, 1}, {'l', 6, 0}, {'l', 8, 0}, {'l', 11, 1}, {'l', 13, 4}, {'l', 14, 9}, {'l', 14, 12}, {'l', 13, 17}, {'l', 11, 20}, {'l', 8, 21}, {'l', 6, 21}, }; static cdOperation vf_default_char_49[] = { {'m', 0, 17}, {'l', 2, 18}, {'l', 5, 21}, {'l', 5, 0}, }; static cdOperation vf_default_char_50[] = { {'m', 1, 16}, {'l', 1, 17}, {'l', 2, 19}, {'l', 3, 20}, {'l', 5, 21}, {'l', 9, 21}, {'l', 11, 20}, {'l', 12, 19}, {'l', 13, 17}, {'l', 13, 15}, {'l', 12, 13}, {'l', 10, 10}, {'l', 0, 0}, {'l', 14, 0}, }; static cdOperation vf_default_char_51[] = { {'m', 2, 21}, {'l', 13, 21}, {'l', 7, 13}, {'l', 10, 13}, {'l', 12, 12}, {'l', 13, 11}, {'l', 14, 8}, {'l', 14, 6}, {'l', 13, 3}, {'l', 11, 1}, {'l', 8, 0}, {'l', 5, 0}, {'l', 2, 1}, {'l', 1, 2}, {'l', 0, 4}, }; static cdOperation vf_default_char_52[] = { {'m', 10, 21}, {'l', 0, 7}, {'l', 15, 7}, {'m', 10, 21}, {'l', 10, 0}, }; static cdOperation vf_default_char_53[] = { {'m', 12, 21}, {'l', 2, 21}, {'l', 1, 12}, {'l', 2, 13}, {'l', 5, 14}, {'l', 8, 14}, {'l', 11, 13}, {'l', 13, 11}, {'l', 14, 8}, {'l', 14, 6}, {'l', 13, 3}, {'l', 11, 1}, {'l', 8, 0}, {'l', 5, 0}, {'l', 2, 1}, {'l', 1, 2}, {'l', 0, 4}, }; static cdOperation vf_default_char_54[] = { {'m', 12, 18}, {'l', 11, 20}, {'l', 8, 21}, {'l', 6, 21}, {'l', 3, 20}, {'l', 1, 17}, {'l', 0, 12}, {'l', 0, 7}, {'l', 1, 3}, {'l', 3, 1}, {'l', 6, 0}, {'l', 7, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 7}, {'l', 12, 10}, {'l', 10, 12}, {'l', 7, 13}, {'l', 6, 13}, {'l', 3, 12}, {'l', 1, 10}, {'l', 0, 7}, }; static cdOperation vf_default_char_55[] = { {'m', 14, 21}, {'l', 4, 0}, {'m', 0, 21}, {'l', 14, 21}, }; static cdOperation vf_default_char_56[] = { {'m', 5, 21}, {'l', 2, 20}, {'l', 1, 18}, {'l', 1, 16}, {'l', 2, 14}, {'l', 4, 13}, {'l', 8, 12}, {'l', 11, 11}, {'l', 13, 9}, {'l', 14, 7}, {'l', 14, 4}, {'l', 13, 2}, {'l', 12, 1}, {'l', 9, 0}, {'l', 5, 0}, {'l', 2, 1}, {'l', 1, 2}, {'l', 0, 4}, {'l', 0, 7}, {'l', 1, 9}, {'l', 3, 11}, {'l', 6, 12}, {'l', 10, 13}, {'l', 12, 14}, {'l', 13, 16}, {'l', 13, 18}, {'l', 12, 20}, {'l', 9, 21}, {'l', 5, 21}, }; static cdOperation vf_default_char_57[] = { {'m', 13, 14}, {'l', 12, 11}, {'l', 10, 9}, {'l', 7, 8}, {'l', 6, 8}, {'l', 3, 9}, {'l', 1, 11}, {'l', 0, 14}, {'l', 0, 15}, {'l', 1, 18}, {'l', 3, 20}, {'l', 6, 21}, {'l', 7, 21}, {'l', 10, 20}, {'l', 12, 18}, {'l', 13, 14}, {'l', 13, 9}, {'l', 12, 4}, {'l', 10, 1}, {'l', 7, 0}, {'l', 5, 0}, {'l', 2, 1}, {'l', 1, 3}, }; static cdOperation vf_default_char_58[] = { {'m', 1, 14}, {'l', 0, 13}, {'l', 1, 12}, {'l', 2, 13}, {'l', 1, 14}, {'m', 1, 2}, {'l', 0, 1}, {'l', 1, 0}, {'l', 2, 1}, {'l', 1, 2}, }; static cdOperation vf_default_char_59[] = { {'m', 1, 14}, {'l', 0, 13}, {'l', 1, 12}, {'l', 2, 13}, {'l', 1, 14}, {'m', 2, 1}, {'l', 1, 0}, {'l', 0, 1}, {'l', 1, 2}, {'l', 2, 1}, {'l', 2, -1}, {'l', 1, -3}, {'l', 0, -4}, }; static cdOperation vf_default_char_60[] = { {'m', 16, 18}, {'l', 0, 9}, {'l', 16, 0}, }; static cdOperation vf_default_char_61[] = { {'m', 0, 12}, {'l', 18, 12}, {'m', 0, 6}, {'l', 18, 6}, }; static cdOperation vf_default_char_62[] = { {'m', 0, 18}, {'l', 16, 9}, {'l', 0, 0}, }; static cdOperation vf_default_char_63[] = { {'m', 0, 16}, {'l', 0, 17}, {'l', 1, 19}, {'l', 2, 20}, {'l', 4, 21}, {'l', 8, 21}, {'l', 10, 20}, {'l', 11, 19}, {'l', 12, 17}, {'l', 12, 15}, {'l', 11, 13}, {'l', 10, 12}, {'l', 6, 10}, {'l', 6, 7}, {'m', 6, 2}, {'l', 5, 1}, {'l', 6, 0}, {'l', 7, 1}, {'l', 6, 2}, }; static cdOperation vf_default_char_64[] = { {'m', 15, 13}, {'l', 14, 15}, {'l', 12, 16}, {'l', 9, 16}, {'l', 7, 15}, {'l', 6, 14}, {'l', 5, 11}, {'l', 5, 8}, {'l', 6, 6}, {'l', 8, 5}, {'l', 11, 5}, {'l', 13, 6}, {'l', 14, 8}, {'m', 9, 16}, {'l', 7, 14}, {'l', 6, 11}, {'l', 6, 8}, {'l', 7, 6}, {'l', 8, 5}, {'m', 15, 16}, {'l', 14, 8}, {'l', 14, 6}, {'l', 16, 5}, {'l', 18, 5}, {'l', 20, 7}, {'l', 21, 10}, {'l', 21, 12}, {'l', 20, 15}, {'l', 19, 17}, {'l', 17, 19}, {'l', 15, 20}, {'l', 12, 21}, {'l', 9, 21}, {'l', 6, 20}, {'l', 4, 19}, {'l', 2, 17}, {'l', 1, 15}, {'l', 0, 12}, {'l', 0, 9}, {'l', 1, 6}, {'l', 2, 4}, {'l', 4, 2}, {'l', 6, 1}, {'l', 9, 0}, {'l', 12, 0}, {'l', 15, 1}, {'l', 17, 2}, {'l', 18, 3}, {'m', 16, 16}, {'l', 15, 8}, {'l', 15, 6}, {'l', 16, 5}, }; static cdOperation vf_default_char_65[] = { {'m', 16, 0}, {'l', 8, 21}, {'l', 0, 0}, {'m', 3, 7}, {'l', 13, 7}, }; static cdOperation vf_default_char_66[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 21}, {'l', 9, 21}, {'l', 12, 20}, {'l', 13, 19}, {'l', 14, 17}, {'l', 14, 15}, {'l', 13, 13}, {'l', 12, 12}, {'l', 9, 11}, {'m', 0, 11}, {'l', 9, 11}, {'l', 12, 10}, {'l', 13, 9}, {'l', 14, 7}, {'l', 14, 4}, {'l', 13, 2}, {'l', 12, 1}, {'l', 9, 0}, {'l', 0, 0}, }; static cdOperation vf_default_char_67[] = { {'m', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, }; static cdOperation vf_default_char_68[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 21}, {'l', 7, 21}, {'l', 10, 20}, {'l', 12, 18}, {'l', 13, 16}, {'l', 14, 13}, {'l', 14, 8}, {'l', 13, 5}, {'l', 12, 3}, {'l', 10, 1}, {'l', 7, 0}, {'l', 0, 0}, }; static cdOperation vf_default_char_69[] = { {'m', 13, 21}, {'l', 0, 21}, {'l', 0, 0}, {'l', 13, 0}, {'m', 0, 11}, {'l', 8, 11}, }; static cdOperation vf_default_char_70[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 21}, {'l', 13, 21}, {'m', 0, 11}, {'l', 8, 11}, }; static cdOperation vf_default_char_71[] = { {'m', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 15, 8}, {'m', 10, 8}, {'l', 15, 8}, }; static cdOperation vf_default_char_72[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 14, 21}, {'l', 14, 0}, {'m', 0, 11}, {'l', 14, 11}, }; static cdOperation vf_default_char_73[] = { {'m', 0, 21}, {'l', 0, 0}, }; static cdOperation vf_default_char_74[] = { {'m', 10, 21}, {'l', 10, 5}, {'l', 9, 2}, {'l', 8, 1}, {'l', 6, 0}, {'l', 4, 0}, {'l', 2, 1}, {'l', 1, 2}, {'l', 0, 5}, {'l', 0, 7}, }; static cdOperation vf_default_char_75[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 14, 21}, {'l', 0, 7}, {'m', 5, 12}, {'l', 14, 0}, }; static cdOperation vf_default_char_76[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 0}, {'l', 12, 0}, }; static cdOperation vf_default_char_77[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 21}, {'l', 8, 0}, {'m', 16, 21}, {'l', 8, 0}, {'m', 16, 21}, {'l', 16, 0}, }; static cdOperation vf_default_char_78[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 21}, {'l', 14, 0}, {'m', 14, 21}, {'l', 14, 0}, }; static cdOperation vf_default_char_79[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, }; static cdOperation vf_default_char_80[] = { {'m', 0, 10}, {'l', 9, 10}, {'l', 12, 11}, {'l', 13, 12}, {'l', 14, 14}, {'l', 14, 17}, {'l', 13, 19}, {'l', 12, 20}, {'l', 9, 21}, {'l', 0, 21}, {'l', 0, 0}, }; static cdOperation vf_default_char_81[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 9, 4}, {'l', 15, -2}, }; static cdOperation vf_default_char_82[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 21}, {'l', 9, 21}, {'l', 12, 20}, {'l', 13, 19}, {'l', 14, 17}, {'l', 14, 15}, {'l', 13, 13}, {'l', 12, 12}, {'l', 9, 11}, {'l', 0, 11}, {'m', 7, 11}, {'l', 14, 0}, }; static cdOperation vf_default_char_83[] = { {'m', 14, 18}, {'l', 12, 20}, {'l', 9, 21}, {'l', 5, 21}, {'l', 2, 20}, {'l', 0, 18}, {'l', 0, 16}, {'l', 1, 14}, {'l', 2, 13}, {'l', 4, 12}, {'l', 10, 10}, {'l', 12, 9}, {'l', 13, 8}, {'l', 14, 6}, {'l', 14, 3}, {'l', 12, 1}, {'l', 9, 0}, {'l', 5, 0}, {'l', 2, 1}, {'l', 0, 3}, }; static cdOperation vf_default_char_84[] = { {'m', 7, 21}, {'l', 7, 0}, {'m', 0, 21}, {'l', 14, 21}, }; static cdOperation vf_default_char_85[] = { {'m', 0, 21}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 6, 0}, {'l', 8, 0}, {'l', 11, 1}, {'l', 13, 3}, {'l', 14, 6}, {'l', 14, 21}, }; static cdOperation vf_default_char_86[] = { {'m', 0, 21}, {'l', 8, 0}, {'m', 16, 21}, {'l', 8, 0}, }; static cdOperation vf_default_char_87[] = { {'m', 0, 21}, {'l', 5, 0}, {'m', 10, 21}, {'l', 5, 0}, {'m', 10, 21}, {'l', 15, 0}, {'m', 20, 21}, {'l', 15, 0}, }; static cdOperation vf_default_char_88[] = { {'m', 0, 21}, {'l', 14, 0}, {'m', 14, 21}, {'l', 0, 0}, }; static cdOperation vf_default_char_89[] = { {'m', 0, 21}, {'l', 8, 11}, {'l', 8, 0}, {'m', 16, 21}, {'l', 8, 11}, }; static cdOperation vf_default_char_90[] = { {'m', 14, 21}, {'l', 0, 0}, {'m', 0, 21}, {'l', 14, 21}, {'m', 0, 0}, {'l', 14, 0}, }; static cdOperation vf_default_char_91[] = { {'m', 0, 19}, {'l', 0, -1}, {'m', 1, 19}, {'l', 1, -1}, {'m', 0, 19}, {'l', 5, 19}, {'m', 0, -1}, {'l', 5, -1}, }; static cdOperation vf_default_char_92[] = { {'m', 0, 21}, {'l', 14, -3}, }; static cdOperation vf_default_char_93[] = { {'m', 4, 19}, {'l', 4, -1}, {'m', 5, 19}, {'l', 5, -1}, {'m', 0, 19}, {'l', 5, 19}, {'m', 0, -1}, {'l', 5, -1}, }; static cdOperation vf_default_char_94[] = { {'m', 8, 18}, {'l', 3, 14}, {'l', 8, 19}, {'l', 13, 14}, {'l', 8, 18}, {'l', 8, 18}, }; static cdOperation vf_default_char_95[] = { {'m', 0, -7}, {'l', 16, -7}, }; static cdOperation vf_default_char_96[] = { {'m', 2, 21}, {'l', 1, 20}, {'l', 0, 18}, {'l', 0, 16}, {'l', 1, 15}, {'l', 2, 16}, {'l', 1, 17}, }; static cdOperation vf_default_char_97[] = { {'m', 12, 14}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, }; static cdOperation vf_default_char_98[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 11}, {'l', 2, 13}, {'l', 4, 14}, {'l', 7, 14}, {'l', 9, 13}, {'l', 11, 11}, {'l', 12, 8}, {'l', 12, 6}, {'l', 11, 3}, {'l', 9, 1}, {'l', 7, 0}, {'l', 4, 0}, {'l', 2, 1}, {'l', 0, 3}, }; static cdOperation vf_default_char_99[] = { {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, }; static cdOperation vf_default_char_100[] = { {'m', 12, 21}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, }; static cdOperation vf_default_char_101[] = { {'m', 0, 8}, {'l', 12, 8}, {'l', 12, 10}, {'l', 11, 12}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, }; static cdOperation vf_default_char_102[] = { {'m', 8, 21}, {'l', 6, 21}, {'l', 4, 20}, {'l', 3, 17}, {'l', 3, 0}, {'m', 0, 14}, {'l', 7, 14}, }; static cdOperation vf_default_char_103[] = { {'m', 12, 14}, {'l', 12, -2}, {'l', 11, -5}, {'l', 10, -6}, {'l', 8, -7}, {'l', 5, -7}, {'l', 3, -6}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, }; static cdOperation vf_default_char_104[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 0, 10}, {'l', 3, 13}, {'l', 5, 14}, {'l', 8, 14}, {'l', 10, 13}, {'l', 11, 10}, {'l', 11, 0}, }; static cdOperation vf_default_char_105[] = { {'m', 2, 21}, {'l', 3, 20}, {'l', 4, 21}, {'l', 3, 22}, {'l', 2, 21}, {'m', 3, 14}, {'l', 3, 0}, }; static cdOperation vf_default_char_106[] = { {'m', 4, 21}, {'l', 5, 20}, {'l', 6, 21}, {'l', 5, 22}, {'l', 4, 21}, {'m', 5, 14}, {'l', 5, -3}, {'l', 4, -6}, {'l', 2, -7}, {'l', 0, -7}, }; static cdOperation vf_default_char_107[] = { {'m', 0, 21}, {'l', 0, 0}, {'m', 10, 14}, {'l', 0, 4}, {'m', 4, 8}, {'l', 11, 0}, }; static cdOperation vf_default_char_108[] = { {'m', 0, 21}, {'l', 0, 0}, }; static cdOperation vf_default_char_109[] = { {'m', 0, 14}, {'l', 0, 0}, {'m', 0, 10}, {'l', 3, 13}, {'l', 5, 14}, {'l', 8, 14}, {'l', 10, 13}, {'l', 11, 10}, {'l', 11, 0}, {'m', 11, 10}, {'l', 14, 13}, {'l', 16, 14}, {'l', 19, 14}, {'l', 21, 13}, {'l', 22, 10}, {'l', 22, 0}, }; static cdOperation vf_default_char_110[] = { {'m', 0, 14}, {'l', 0, 0}, {'m', 0, 10}, {'l', 3, 13}, {'l', 5, 14}, {'l', 8, 14}, {'l', 10, 13}, {'l', 11, 10}, {'l', 11, 0}, }; static cdOperation vf_default_char_111[] = { {'m', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 8}, {'l', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, }; static cdOperation vf_default_char_112[] = { {'m', 0, 14}, {'l', 0, -7}, {'m', 0, 11}, {'l', 2, 13}, {'l', 4, 14}, {'l', 7, 14}, {'l', 9, 13}, {'l', 11, 11}, {'l', 12, 8}, {'l', 12, 6}, {'l', 11, 3}, {'l', 9, 1}, {'l', 7, 0}, {'l', 4, 0}, {'l', 2, 1}, {'l', 0, 3}, }; static cdOperation vf_default_char_113[] = { {'m', 12, 14}, {'l', 12, -7}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, }; static cdOperation vf_default_char_114[] = { {'m', 0, 14}, {'l', 0, 0}, {'m', 0, 8}, {'l', 1, 11}, {'l', 3, 13}, {'l', 5, 14}, {'l', 8, 14}, }; static cdOperation vf_default_char_115[] = { {'m', 11, 11}, {'l', 10, 13}, {'l', 7, 14}, {'l', 4, 14}, {'l', 1, 13}, {'l', 0, 11}, {'l', 1, 9}, {'l', 3, 8}, {'l', 8, 7}, {'l', 10, 6}, {'l', 11, 4}, {'l', 11, 3}, {'l', 10, 1}, {'l', 7, 0}, {'l', 4, 0}, {'l', 1, 1}, {'l', 0, 3}, }; static cdOperation vf_default_char_116[] = { {'m', 3, 21}, {'l', 3, 4}, {'l', 4, 1}, {'l', 6, 0}, {'l', 8, 0}, {'m', 0, 14}, {'l', 7, 14}, }; static cdOperation vf_default_char_117[] = { {'m', 0, 14}, {'l', 0, 4}, {'l', 1, 1}, {'l', 3, 0}, {'l', 6, 0}, {'l', 8, 1}, {'l', 11, 4}, {'m', 11, 14}, {'l', 11, 0}, }; static cdOperation vf_default_char_118[] = { {'m', 0, 14}, {'l', 6, 0}, {'m', 12, 14}, {'l', 6, 0}, }; static cdOperation vf_default_char_119[] = { {'m', 0, 14}, {'l', 4, 0}, {'m', 8, 14}, {'l', 4, 0}, {'m', 8, 14}, {'l', 12, 0}, {'m', 16, 14}, {'l', 12, 0}, }; static cdOperation vf_default_char_120[] = { {'m', 0, 14}, {'l', 11, 0}, {'m', 11, 14}, {'l', 0, 0}, }; static cdOperation vf_default_char_121[] = { {'m', 1, 14}, {'l', 7, 0}, {'m', 13, 14}, {'l', 7, 0}, {'l', 5, -4}, {'l', 3, -6}, {'l', 1, -7}, {'l', 0, -7}, }; static cdOperation vf_default_char_122[] = { {'m', 11, 14}, {'l', 0, 0}, {'m', 0, 14}, {'l', 11, 14}, {'m', 0, 0}, {'l', 11, 0}, }; static cdOperation vf_default_char_123[] = { {'m', 5, 25}, {'l', 3, 24}, {'l', 2, 23}, {'l', 1, 21}, {'l', 1, 19}, {'l', 2, 17}, {'l', 3, 16}, {'l', 4, 14}, {'l', 4, 12}, {'l', 2, 10}, {'m', 3, 24}, {'l', 2, 22}, {'l', 2, 20}, {'l', 3, 18}, {'l', 4, 17}, {'l', 5, 15}, {'l', 5, 13}, {'l', 4, 11}, {'l', 0, 9}, {'l', 4, 7}, {'l', 5, 5}, {'l', 5, 3}, {'l', 4, 1}, {'l', 3, 0}, {'l', 2, -2}, {'l', 2, -4}, {'l', 3, -6}, {'m', 2, 8}, {'l', 4, 6}, {'l', 4, 4}, {'l', 3, 2}, {'l', 2, 1}, {'l', 1, -1}, {'l', 1, -3}, {'l', 2, -5}, {'l', 3, -6}, {'l', 5, -7}, }; static cdOperation vf_default_char_124[] = { {'m', 0, 21}, {'l', 0, 0}, }; static cdOperation vf_default_char_125[] = { {'m', 0, 25}, {'l', 2, 24}, {'l', 3, 23}, {'l', 4, 21}, {'l', 4, 19}, {'l', 3, 17}, {'l', 2, 16}, {'l', 1, 14}, {'l', 1, 12}, {'l', 3, 10}, {'m', 2, 24}, {'l', 3, 22}, {'l', 3, 20}, {'l', 2, 18}, {'l', 1, 17}, {'l', 0, 15}, {'l', 0, 13}, {'l', 1, 11}, {'l', 5, 9}, {'l', 1, 7}, {'l', 0, 5}, {'l', 0, 3}, {'l', 1, 1}, {'l', 2, 0}, {'l', 3, -2}, {'l', 3, -4}, {'l', 2, -6}, {'m', 3, 8}, {'l', 1, 6}, {'l', 1, 4}, {'l', 2, 2}, {'l', 3, 1}, {'l', 4, -1}, {'l', 4, -3}, {'l', 3, -5}, {'l', 2, -6}, {'l', 0, -7}, }; static cdOperation vf_default_char_126[] = { {'m', 0, 16}, {'l', 5, 19}, {'l', 9, 16}, {'l', 13, 18}, }; static cdOperation vf_default_char_127[] = { {'m', 0, 7}, {'l', 0, 0}, {'l', 12, 0}, {'l', 12, 7}, {'l', 6, 16}, {'l', 0, 7}, {'m', 6, 6}, {'l', 6, 6}, }; static cdOperation vf_default_char_128[] = { {'m', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'m', 8, 0}, {'l', 8, -1}, {'l', 7, -1}, {'l', 7, 0}, {'m', 3, -4}, {'l', 3, -6}, {'l', 4, -7}, {'l', 10, -7}, {'l', 12, -5}, {'l', 12, -4}, {'l', 10, -2}, {'l', 8, -1}, }; static cdOperation vf_default_char_129[] = { {'m', 0, 14}, {'l', 0, 4}, {'l', 1, 1}, {'l', 3, 0}, {'l', 6, 0}, {'l', 8, 1}, {'l', 11, 4}, {'m', 11, 14}, {'l', 11, 0}, {'m', 2, 19}, {'l', 1, 18}, {'l', 2, 17}, {'l', 3, 18}, {'l', 2, 19}, {'m', 10, 19}, {'l', 9, 18}, {'l', 10, 17}, {'l', 11, 18}, {'l', 10, 19}, }; static cdOperation vf_default_char_130[] = { {'m', 0, 8}, {'l', 12, 8}, {'l', 12, 10}, {'l', 11, 12}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 10, 22}, {'l', 5, 17}, }; static cdOperation vf_default_char_131[] = { {'m', 13, 14}, {'l', 13, 0}, {'m', 13, 11}, {'l', 11, 13}, {'l', 9, 14}, {'l', 6, 14}, {'l', 4, 13}, {'l', 2, 11}, {'l', 1, 8}, {'l', 1, 6}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 9, 0}, {'l', 11, 1}, {'l', 13, 3}, {'m', 3, 16}, {'l', 8, 21}, {'l', 13, 16}, }; static cdOperation vf_default_char_132[] = { {'m', 12, 14}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 2, 19}, {'l', 1, 18}, {'l', 2, 17}, {'l', 3, 18}, {'l', 2, 19}, {'m', 10, 19}, {'l', 9, 18}, {'l', 10, 17}, {'l', 11, 18}, {'l', 10, 19}, }; static cdOperation vf_default_char_133[] = { {'m', 12, 14}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 3, 22}, {'l', 8, 17}, }; static cdOperation vf_default_char_134[] = { {'m', 12, 14}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 5, 19}, {'l', 4, 18}, {'l', 5, 17}, {'l', 7, 17}, {'l', 8, 18}, {'l', 7, 19}, {'l', 5, 19}, }; static cdOperation vf_default_char_135[] = { {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 6, 0}, {'l', 6, -1}, {'l', 9, -2}, {'l', 10, -5}, {'l', 8, -7}, {'l', 4, -7}, {'l', 3, -5}, }; static cdOperation vf_default_char_136[] = { {'m', 2, 8}, {'l', 14, 8}, {'l', 14, 10}, {'l', 13, 12}, {'l', 12, 13}, {'l', 10, 14}, {'l', 7, 14}, {'l', 5, 13}, {'l', 3, 11}, {'l', 2, 8}, {'l', 2, 6}, {'l', 3, 3}, {'l', 5, 1}, {'l', 7, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'m', 4, 16}, {'l', 9, 21}, {'l', 14, 16}, }; static cdOperation vf_default_char_137[] = { {'m', 0, 8}, {'l', 12, 8}, {'l', 12, 10}, {'l', 11, 12}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 3, 19}, {'l', 2, 18}, {'l', 3, 17}, {'l', 4, 18}, {'l', 3, 19}, {'m', 11, 19}, {'l', 10, 18}, {'l', 11, 17}, {'l', 12, 18}, {'l', 11, 19}, }; static cdOperation vf_default_char_138[] = { {'m', 0, 8}, {'l', 12, 8}, {'l', 12, 10}, {'l', 11, 12}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 2, 22}, {'l', 7, 17}, }; static cdOperation vf_default_char_139[] = { {'m', 5, 14}, {'l', 5, 0}, {'m', 1, 19}, {'l', 0, 18}, {'l', 1, 17}, {'l', 2, 18}, {'l', 1, 19}, {'m', 9, 19}, {'l', 8, 18}, {'l', 9, 17}, {'l', 10, 18}, {'l', 9, 19}, }; static cdOperation vf_default_char_140[] = { {'m', 8, 14}, {'l', 8, 0}, {'m', 3, 16}, {'l', 8, 21}, {'l', 13, 16}, }; static cdOperation vf_default_char_141[] = { {'m', 5, 14}, {'l', 5, 0}, {'m', 0, 22}, {'l', 5, 17}, }; static cdOperation vf_default_char_142[] = { {'m', 16, 0}, {'l', 8, 21}, {'l', 0, 0}, {'m', 3, 7}, {'l', 13, 7}, {'m', 4, 26}, {'l', 3, 25}, {'l', 4, 24}, {'l', 5, 25}, {'l', 4, 26}, {'m', 12, 26}, {'l', 11, 25}, {'l', 12, 24}, {'l', 13, 25}, {'l', 12, 26}, }; static cdOperation vf_default_char_143[] = { {'m', 16, 0}, {'l', 8, 21}, {'l', 0, 0}, {'m', 3, 7}, {'l', 13, 7}, {'m', 7, 26}, {'l', 6, 25}, {'l', 7, 24}, {'l', 9, 24}, {'l', 10, 25}, {'l', 9, 26}, {'l', 7, 26}, }; static cdOperation vf_default_char_144[] = { {'m', 13, 21}, {'l', 0, 21}, {'l', 0, 0}, {'l', 13, 0}, {'m', 0, 11}, {'l', 8, 11}, {'m', 10, 28}, {'l', 5, 23}, }; static cdOperation vf_default_char_145[] = { {'m', 12, 14}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 17, 14}, {'l', 20, 14}, {'l', 22, 13}, {'l', 23, 12}, {'l', 24, 10}, {'l', 24, 8}, {'l', 12, 8}, {'l', 13, 11}, {'l', 15, 13}, {'l', 17, 14}, {'m', 12, 6}, {'l', 13, 3}, {'l', 15, 1}, {'l', 17, 0}, {'l', 20, 0}, {'l', 22, 1}, {'l', 24, 3}, }; static cdOperation vf_default_char_146[] = { {'m', 23, 21}, {'l', 8, 21}, {'l', 0, 0}, {'m', 10, 21}, {'l', 10, 0}, {'l', 23, 0}, {'m', 10, 11}, {'l', 18, 11}, {'m', 3, 7}, {'l', 10, 7}, }; static cdOperation vf_default_char_147[] = { {'m', 6, 14}, {'l', 4, 13}, {'l', 2, 11}, {'l', 1, 8}, {'l', 1, 6}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 9, 0}, {'l', 11, 1}, {'l', 13, 3}, {'l', 14, 6}, {'l', 14, 8}, {'l', 13, 11}, {'l', 11, 13}, {'l', 9, 14}, {'l', 6, 14}, {'m', 3, 16}, {'l', 8, 21}, {'l', 13, 16}, }; static cdOperation vf_default_char_148[] = { {'m', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 8}, {'l', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'m', 3, 19}, {'l', 2, 18}, {'l', 3, 17}, {'l', 4, 18}, {'l', 3, 19}, {'m', 11, 19}, {'l', 10, 18}, {'l', 11, 17}, {'l', 12, 18}, {'l', 11, 19}, }; static cdOperation vf_default_char_149[] = { {'m', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 8}, {'l', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'m', 2, 22}, {'l', 7, 17}, }; static cdOperation vf_default_char_150[] = { {'m', 2, 14}, {'l', 2, 4}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 13, 4}, {'m', 13, 14}, {'l', 13, 0}, {'m', 3, 17}, {'l', 8, 22}, {'l', 13, 17}, }; static cdOperation vf_default_char_151[] = { {'m', 0, 14}, {'l', 0, 4}, {'l', 1, 1}, {'l', 3, 0}, {'l', 6, 0}, {'l', 8, 1}, {'l', 11, 4}, {'m', 11, 14}, {'l', 11, 0}, {'m', 1, 22}, {'l', 6, 17}, }; static cdOperation vf_default_char_152[] = { {'m', 1, 14}, {'l', 7, 0}, {'l', 5, -4}, {'l', 3, -6}, {'l', 1, -7}, {'l', 0, -7}, {'m', 13, 14}, {'l', 7, 0}, {'m', 3, 19}, {'l', 2, 18}, {'l', 3, 17}, {'l', 4, 18}, {'l', 3, 19}, {'m', 11, 19}, {'l', 10, 18}, {'l', 11, 17}, {'l', 12, 18}, {'l', 11, 19}, }; static cdOperation vf_default_char_153[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 4, 26}, {'l', 3, 25}, {'l', 4, 24}, {'l', 5, 25}, {'l', 4, 26}, {'m', 12, 26}, {'l', 11, 25}, {'l', 12, 24}, {'l', 13, 25}, {'l', 12, 26}, }; static cdOperation vf_default_char_154[] = { {'m', 0, 21}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 6, 0}, {'l', 8, 0}, {'l', 11, 1}, {'l', 13, 3}, {'l', 14, 6}, {'l', 14, 21}, {'m', 3, 26}, {'l', 2, 25}, {'l', 3, 24}, {'l', 4, 25}, {'l', 3, 26}, {'m', 11, 26}, {'l', 10, 25}, {'l', 11, 24}, {'l', 12, 25}, {'l', 11, 26}, }; static cdOperation vf_default_char_155[] = { {'m', 12, 15}, {'l', 10, 17}, {'l', 8, 18}, {'l', 5, 18}, {'l', 3, 17}, {'l', 1, 15}, {'l', 0, 12}, {'l', 0, 10}, {'l', 1, 7}, {'l', 3, 5}, {'l', 5, 4}, {'l', 8, 4}, {'l', 10, 5}, {'l', 12, 7}, {'m', 6, 0}, {'l', 6, 22}, }; static cdOperation vf_default_char_156[] = { {'m', 13, 20}, {'l', 10, 21}, {'l', 8, 21}, {'l', 5, 20}, {'l', 4, 19}, {'l', 3, 16}, {'l', 3, 0}, {'l', 12, 0}, {'l', 15, 1}, {'l', 15, 2}, {'m', 0, 12}, {'l', 7, 12}, }; static cdOperation vf_default_char_157[] = { {'m', 0, 21}, {'l', 8, 11}, {'l', 8, 0}, {'m', 16, 21}, {'l', 8, 11}, {'m', 4, 11}, {'l', 13, 11}, {'m', 4, 8}, {'l', 13, 8}, }; static cdOperation vf_default_char_158[] = { {'m', 0, 10}, {'l', 9, 10}, {'l', 12, 11}, {'l', 13, 12}, {'l', 14, 14}, {'l', 14, 17}, {'l', 13, 19}, {'l', 12, 20}, {'l', 9, 21}, {'l', 0, 21}, {'l', 0, 0}, {'m', 12, 8}, {'l', 18, 8}, {'m', 15, 12}, {'l', 15, 2}, {'l', 16, 0}, {'l', 18, 0}, {'l', 19, 1}, }; static cdOperation vf_default_char_159[] = { {'m', 0, 21}, {'l', 8, 11}, {'l', 8, 0}, {'m', 16, 21}, {'l', 8, 11}, {'m', 4, 25}, {'l', 3, 24}, {'l', 4, 23}, {'l', 5, 24}, {'l', 4, 25}, {'m', 12, 25}, {'l', 11, 24}, {'l', 12, 23}, {'l', 13, 24}, {'l', 12, 25}, }; static cdOperation vf_default_char_160[] = { {'m', 12, 14}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 10, 22}, {'l', 5, 17}, }; static cdOperation vf_default_char_161[] = { {'m', 3, 14}, {'l', 3, 0}, {'m', 7, 22}, {'l', 2, 17}, }; static cdOperation vf_default_char_162[] = { {'m', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 8}, {'l', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'m', 11, 22}, {'l', 6, 17}, }; static cdOperation vf_default_char_163[] = { {'m', 0, 14}, {'l', 0, 4}, {'l', 1, 1}, {'l', 3, 0}, {'l', 6, 0}, {'l', 8, 1}, {'l', 11, 4}, {'m', 11, 14}, {'l', 11, 0}, {'m', 9, 22}, {'l', 4, 17}, }; static cdOperation vf_default_char_164[] = { {'m', 0, 14}, {'l', 0, 0}, {'m', 0, 10}, {'l', 3, 13}, {'l', 5, 14}, {'l', 8, 14}, {'l', 10, 13}, {'l', 11, 10}, {'l', 11, 0}, {'m', 0, 17}, {'l', 5, 20}, {'l', 9, 17}, {'l', 13, 19}, }; static cdOperation vf_default_char_165[] = { {'m', 14, 21}, {'l', 14, 0}, {'l', 0, 21}, {'l', 0, 0}, {'m', 0, 24}, {'l', 5, 27}, {'l', 9, 24}, {'l', 13, 26}, }; static cdOperation vf_default_char_166[] = { {'m', 12, 21}, {'l', 12, 7}, {'m', 12, 18}, {'l', 10, 20}, {'l', 8, 21}, {'l', 5, 21}, {'l', 3, 20}, {'l', 1, 18}, {'l', 0, 15}, {'l', 0, 13}, {'l', 1, 10}, {'l', 3, 8}, {'l', 5, 7}, {'l', 8, 7}, {'l', 10, 8}, {'l', 12, 10}, {'m', 0, 0}, {'l', 12, 0}, }; static cdOperation vf_default_char_167[] = { {'m', 0, 15}, {'l', 1, 12}, {'l', 3, 10}, {'l', 5, 9}, {'l', 8, 9}, {'l', 10, 10}, {'l', 12, 12}, {'l', 13, 15}, {'l', 12, 18}, {'l', 10, 20}, {'l', 8, 21}, {'l', 5, 21}, {'l', 3, 20}, {'l', 1, 18}, {'l', 0, 15}, {'m', 0, 0}, {'l', 13, 0}, }; static cdOperation vf_default_char_168[] = { {'m', 12, 5}, {'l', 12, 4}, {'l', 11, 2}, {'l', 10, 1}, {'l', 8, 0}, {'l', 4, 0}, {'l', 2, 1}, {'l', 1, 2}, {'l', 0, 4}, {'l', 0, 6}, {'l', 1, 8}, {'l', 2, 9}, {'l', 6, 11}, {'l', 6, 14}, {'m', 6, 19}, {'l', 7, 20}, {'l', 6, 21}, {'l', 5, 20}, {'l', 6, 19}, }; static cdOperation vf_default_char_169[] = { {'m', 0, 0}, {'l', 0, 8}, {'l', 12, 8}, {'l', 12, 5}, {'l', 3, 5}, {'l', 3, 0}, {'l', 0, 0}, }; static cdOperation vf_default_char_170[] = { {'m', 12, 0}, {'l', 12, 8}, {'l', 0, 8}, {'l', 0, 5}, {'l', 9, 5}, {'l', 9, 0}, {'l', 12, 0}, }; static cdOperation vf_default_char_171[] = { {'m', 0, 18}, {'l', 3, 21}, {'l', 4, 21}, {'l', 4, 12}, {'m', 9, 6}, {'l', 9, 7}, {'l', 11, 9}, {'l', 15, 9}, {'l', 16, 7}, {'l', 16, 5}, {'l', 15, 4}, {'l', 9, 0}, {'l', 16, 0}, {'m', 15, 21}, {'l', 1, 0}, }; static cdOperation vf_default_char_172[] = { {'m', 0, 18}, {'l', 3, 21}, {'l', 4, 21}, {'l', 4, 12}, {'m', 15, 21}, {'l', 1, 0}, {'m', 15, 3}, {'l', 7, 3}, {'l', 13, 9}, {'l', 13, 0}, }; static cdOperation vf_default_char_173[] = { {'m', 1, 0}, {'l', 1, 14}, {'m', 1, 19}, {'l', 0, 20}, {'l', 1, 21}, {'l', 2, 20}, {'l', 1, 19}, }; static cdOperation vf_default_char_174[] = { {'m', 7, 17}, {'l', 0, 11}, {'l', 7, 5}, {'m', 15, 17}, {'l', 8, 11}, {'l', 15, 5}, }; static cdOperation vf_default_char_175[] = { {'m', 8, 17}, {'l', 15, 11}, {'l', 8, 5}, {'m', 0, 17}, {'l', 7, 11}, {'l', 0, 5}, }; static cdOperation vf_default_char_176[] = { {'m', 4, 21}, {'l', 6, 21}, {'l', 6, 19}, {'l', 4, 19}, {'l', 4, 21}, {'m', 5, 21}, {'l', 5, 19}, {'m', 4, 15}, {'l', 6, 15}, {'l', 6, 13}, {'l', 4, 13}, {'l', 4, 15}, {'m', 5, 15}, {'l', 5, 13}, {'m', 4, 9}, {'l', 6, 9}, {'l', 6, 7}, {'l', 4, 7}, {'l', 4, 9}, {'m', 5, 9}, {'l', 5, 7}, {'m', 4, 3}, {'l', 6, 3}, {'l', 6, 1}, {'l', 4, 1}, {'l', 4, 3}, {'m', 5, 3}, {'l', 5, 1}, {'m', 0, 18}, {'l', 2, 18}, {'l', 2, 16}, {'l', 0, 16}, {'l', 0, 18}, {'m', 1, 18}, {'l', 1, 16}, {'m', 0, 12}, {'l', 2, 12}, {'l', 2, 10}, {'l', 0, 10}, {'l', 0, 12}, {'m', 1, 12}, {'l', 1, 10}, {'m', 0, 6}, {'l', 2, 6}, {'l', 2, 4}, {'l', 0, 4}, {'l', 0, 6}, {'m', 1, 6}, {'l', 1, 4}, {'m', 0, 0}, {'l', 2, 0}, {'l', 2, -2}, {'l', 0, -2}, {'l', 0, 0}, {'m', 1, 0}, {'l', 1, -2}, {'m', 8, 18}, {'l', 10, 18}, {'l', 10, 16}, {'l', 8, 16}, {'l', 8, 18}, {'m', 9, 18}, {'l', 9, 16}, {'m', 8, 12}, {'l', 10, 12}, {'l', 10, 10}, {'l', 8, 10}, {'l', 8, 12}, {'m', 9, 12}, {'l', 9, 10}, {'m', 8, 6}, {'l', 10, 6}, {'l', 10, 4}, {'l', 8, 4}, {'l', 8, 6}, {'m', 9, 6}, {'l', 9, 4}, {'m', 8, 0}, {'l', 10, 0}, {'l', 10, -2}, {'l', 8, -2}, {'l', 8, 0}, {'m', 9, 0}, {'l', 9, -2}, {'m', 12, 21}, {'l', 14, 21}, {'l', 14, 19}, {'l', 12, 19}, {'l', 12, 21}, {'m', 13, 21}, {'l', 13, 19}, {'m', 12, 15}, {'l', 14, 15}, {'l', 14, 13}, {'l', 12, 13}, {'l', 12, 15}, {'m', 13, 15}, {'l', 13, 13}, {'m', 12, 9}, {'l', 14, 9}, {'l', 14, 7}, {'l', 12, 7}, {'l', 12, 9}, {'m', 13, 9}, {'l', 13, 7}, {'m', 12, 3}, {'l', 14, 3}, {'l', 14, 1}, {'l', 12, 1}, {'l', 12, 3}, {'m', 13, 3}, {'l', 13, 1}, {'m', 3, -3}, {'l', 3, -5}, {'l', 5, -5}, {'l', 5, -3}, {'l', 3, -3}, {'m', 4, -3}, {'l', 4, -5}, {'m', 12, -3}, {'l', 12, -5}, {'l', 14, -5}, {'l', 14, -3}, {'l', 12, -3}, {'m', 13, -3}, {'l', 13, -5}, }; static cdOperation vf_default_char_177[] = { {'m', 0, 18}, {'l', 2, 18}, {'l', 2, 16}, {'l', 0, 16}, {'l', 0, 18}, {'m', 1, 18}, {'l', 1, 16}, {'m', 0, 12}, {'l', 2, 12}, {'l', 2, 10}, {'l', 0, 10}, {'l', 0, 12}, {'m', 1, 12}, {'l', 1, 10}, {'m', 0, 6}, {'l', 2, 6}, {'l', 2, 4}, {'l', 0, 4}, {'l', 0, 6}, {'m', 1, 6}, {'l', 1, 4}, {'m', 0, 0}, {'l', 2, 0}, {'l', 2, -2}, {'l', 0, -2}, {'l', 0, 0}, {'m', 1, 0}, {'l', 1, -2}, {'m', 2, 21}, {'l', 4, 21}, {'l', 4, 19}, {'l', 2, 19}, {'l', 2, 21}, {'m', 3, 21}, {'l', 3, 19}, {'m', 2, 15}, {'l', 4, 15}, {'l', 4, 13}, {'l', 2, 13}, {'l', 2, 15}, {'m', 3, 15}, {'l', 3, 13}, {'m', 2, 9}, {'l', 4, 9}, {'l', 4, 7}, {'l', 2, 7}, {'l', 2, 9}, {'m', 3, 9}, {'l', 3, 7}, {'m', 2, 3}, {'l', 4, 3}, {'l', 4, 1}, {'l', 2, 1}, {'l', 2, 3}, {'m', 3, 3}, {'l', 3, 1}, {'m', 4, 18}, {'l', 6, 18}, {'l', 6, 16}, {'l', 4, 16}, {'l', 4, 18}, {'m', 5, 18}, {'l', 5, 16}, {'m', 4, 12}, {'l', 6, 12}, {'l', 6, 10}, {'l', 4, 10}, {'l', 4, 12}, {'m', 5, 12}, {'l', 5, 10}, {'m', 4, 6}, {'l', 6, 6}, {'l', 6, 4}, {'l', 4, 4}, {'l', 4, 6}, {'m', 5, 6}, {'l', 5, 4}, {'m', 4, 0}, {'l', 6, 0}, {'l', 6, -2}, {'l', 4, -2}, {'l', 4, 0}, {'m', 5, 0}, {'l', 5, -2}, {'m', 6, 21}, {'l', 8, 21}, {'l', 8, 19}, {'l', 6, 19}, {'l', 6, 21}, {'m', 7, 21}, {'l', 7, 19}, {'m', 6, 15}, {'l', 8, 15}, {'l', 8, 13}, {'l', 6, 13}, {'l', 6, 15}, {'m', 7, 15}, {'l', 7, 13}, {'m', 6, 9}, {'l', 8, 9}, {'l', 8, 7}, {'l', 6, 7}, {'l', 6, 9}, {'m', 7, 9}, {'l', 7, 7}, {'m', 6, 3}, {'l', 8, 3}, {'l', 8, 1}, {'l', 6, 1}, {'l', 6, 3}, {'m', 7, 3}, {'l', 7, 1}, {'m', 8, 18}, {'l', 10, 18}, {'l', 10, 16}, {'l', 8, 16}, {'l', 8, 18}, {'m', 9, 18}, {'l', 9, 16}, {'m', 8, 12}, {'l', 10, 12}, {'l', 10, 10}, {'l', 8, 10}, {'l', 8, 12}, {'m', 9, 12}, {'l', 9, 10}, {'m', 8, 6}, {'l', 10, 6}, {'l', 10, 4}, {'l', 8, 4}, {'l', 8, 6}, {'m', 9, 6}, {'l', 9, 4}, {'m', 8, 0}, {'l', 10, 0}, {'l', 10, -2}, {'l', 8, -2}, {'l', 8, 0}, {'m', 9, 0}, {'l', 9, -2}, {'m', 10, 21}, {'l', 12, 21}, {'l', 12, 19}, {'l', 10, 19}, {'l', 10, 21}, {'m', 11, 21}, {'l', 11, 19}, {'m', 10, 15}, {'l', 12, 15}, {'l', 12, 13}, {'l', 10, 13}, {'l', 10, 15}, {'m', 11, 15}, {'l', 11, 13}, {'m', 10, 9}, {'l', 12, 9}, {'l', 12, 7}, {'l', 10, 7}, {'l', 10, 9}, {'m', 11, 9}, {'l', 11, 7}, {'m', 10, 3}, {'l', 12, 3}, {'l', 12, 1}, {'l', 10, 1}, {'l', 10, 3}, {'m', 11, 3}, {'l', 11, 1}, {'m', 12, 18}, {'l', 14, 18}, {'l', 14, 16}, {'l', 12, 16}, {'l', 12, 18}, {'m', 13, 18}, {'l', 13, 16}, {'m', 12, 12}, {'l', 14, 12}, {'l', 14, 10}, {'l', 12, 10}, {'l', 12, 12}, {'m', 13, 12}, {'l', 13, 10}, {'m', 12, 6}, {'l', 14, 6}, {'l', 14, 4}, {'l', 12, 4}, {'l', 12, 6}, {'m', 13, 6}, {'l', 13, 4}, {'m', 12, 0}, {'l', 14, 0}, {'l', 14, -2}, {'l', 12, -2}, {'l', 12, 0}, {'m', 13, 0}, {'l', 13, -2}, {'m', 14, 21}, {'l', 16, 21}, {'l', 16, 19}, {'l', 14, 19}, {'l', 14, 21}, {'m', 15, 21}, {'l', 15, 19}, {'m', 14, 15}, {'l', 16, 15}, {'l', 16, 13}, {'l', 14, 13}, {'l', 14, 15}, {'m', 15, 15}, {'l', 15, 13}, {'m', 14, 9}, {'l', 16, 9}, {'l', 16, 7}, {'l', 14, 7}, {'l', 14, 9}, {'m', 15, 9}, {'l', 15, 7}, {'m', 14, 3}, {'l', 16, 3}, {'l', 16, 1}, {'l', 14, 1}, {'l', 14, 3}, {'m', 15, 3}, {'l', 15, 1}, {'m', 2, -3}, {'l', 2, -5}, {'l', 4, -5}, {'l', 4, -3}, {'l', 2, -3}, {'m', 3, -3}, {'l', 3, -5}, {'m', 6, -3}, {'l', 6, -5}, {'l', 8, -5}, {'l', 8, -3}, {'l', 6, -3}, {'m', 7, -3}, {'l', 7, -5}, {'m', 10, -3}, {'l', 10, -5}, {'l', 12, -5}, {'l', 12, -3}, {'l', 10, -3}, {'m', 11, -3}, {'l', 11, -5}, {'m', 14, -3}, {'l', 14, -5}, {'l', 16, -5}, {'l', 16, -3}, {'l', 14, -3}, {'m', 15, -3}, {'l', 15, -5}, }; static cdOperation vf_default_char_178[] = { {'m', 0, 21}, {'l', 2, 21}, {'l', 2, 19}, {'l', 0, 19}, {'l', 0, 21}, {'m', 1, 21}, {'l', 1, 19}, {'m', 2, 21}, {'l', 4, 21}, {'l', 4, 19}, {'l', 2, 19}, {'l', 2, 21}, {'m', 3, 21}, {'l', 3, 19}, {'m', 10, 21}, {'l', 12, 21}, {'l', 12, 19}, {'l', 10, 19}, {'l', 10, 21}, {'m', 11, 21}, {'l', 11, 19}, {'m', 12, 21}, {'l', 14, 21}, {'l', 14, 19}, {'l', 12, 19}, {'l', 12, 21}, {'m', 13, 21}, {'l', 13, 19}, {'m', 20, 21}, {'l', 22, 21}, {'l', 22, 19}, {'l', 20, 19}, {'l', 20, 21}, {'m', 21, 21}, {'l', 21, 19}, {'m', 22, 21}, {'l', 24, 21}, {'l', 24, 19}, {'l', 22, 19}, {'l', 22, 21}, {'m', 23, 21}, {'l', 23, 19}, {'m', 4, 17}, {'l', 6, 17}, {'l', 6, 15}, {'l', 4, 15}, {'l', 4, 17}, {'m', 5, 17}, {'l', 5, 15}, {'m', 6, 17}, {'l', 8, 17}, {'l', 8, 15}, {'l', 6, 15}, {'l', 6, 17}, {'m', 7, 17}, {'l', 7, 15}, {'m', 8, 17}, {'l', 10, 17}, {'l', 10, 15}, {'l', 8, 15}, {'l', 8, 17}, {'m', 9, 17}, {'l', 9, 15}, {'m', 0, 13}, {'l', 2, 13}, {'l', 2, 11}, {'l', 0, 11}, {'l', 0, 13}, {'m', 1, 13}, {'l', 1, 11}, {'m', 2, 13}, {'l', 4, 13}, {'l', 4, 11}, {'l', 2, 11}, {'l', 2, 13}, {'m', 3, 13}, {'l', 3, 11}, {'m', 10, 13}, {'l', 12, 13}, {'l', 12, 11}, {'l', 10, 11}, {'l', 10, 13}, {'m', 11, 13}, {'l', 11, 11}, {'m', 12, 13}, {'l', 14, 13}, {'l', 14, 11}, {'l', 12, 11}, {'l', 12, 13}, {'m', 13, 13}, {'l', 13, 11}, {'m', 20, 13}, {'l', 22, 13}, {'l', 22, 11}, {'l', 20, 11}, {'l', 20, 13}, {'m', 21, 13}, {'l', 21, 11}, {'m', 22, 13}, {'l', 24, 13}, {'l', 24, 11}, {'l', 22, 11}, {'l', 22, 13}, {'m', 23, 13}, {'l', 23, 11}, {'m', 14, 9}, {'l', 16, 9}, {'l', 16, 7}, {'l', 14, 7}, {'l', 14, 9}, {'m', 15, 9}, {'l', 15, 7}, {'m', 16, 9}, {'l', 18, 9}, {'l', 18, 7}, {'l', 16, 7}, {'l', 16, 9}, {'m', 17, 9}, {'l', 17, 7}, {'m', 18, 9}, {'l', 20, 9}, {'l', 20, 7}, {'l', 18, 7}, {'l', 18, 9}, {'m', 19, 9}, {'l', 19, 7}, {'m', 0, 5}, {'l', 2, 5}, {'l', 2, 3}, {'l', 0, 3}, {'l', 0, 5}, {'m', 1, 5}, {'l', 1, 3}, {'m', 2, 5}, {'l', 4, 5}, {'l', 4, 3}, {'l', 2, 3}, {'l', 2, 5}, {'m', 3, 5}, {'l', 3, 3}, {'m', 10, 5}, {'l', 12, 5}, {'l', 12, 3}, {'l', 10, 3}, {'l', 10, 5}, {'m', 11, 5}, {'l', 11, 3}, {'m', 12, 5}, {'l', 14, 5}, {'l', 14, 3}, {'l', 12, 3}, {'l', 12, 5}, {'m', 13, 5}, {'l', 13, 3}, {'m', 20, 5}, {'l', 22, 5}, {'l', 22, 3}, {'l', 20, 3}, {'l', 20, 5}, {'m', 21, 5}, {'l', 21, 3}, {'m', 22, 5}, {'l', 24, 5}, {'l', 24, 3}, {'l', 22, 3}, {'l', 22, 5}, {'m', 23, 5}, {'l', 23, 3}, {'m', 4, 1}, {'l', 10, 1}, {'l', 10, -1}, {'l', 4, -1}, {'l', 4, 1}, {'m', 5, 1}, {'l', 5, -1}, {'m', 7, 1}, {'l', 7, -1}, {'m', 9, 1}, {'l', 9, -1}, {'m', 0, -3}, {'l', 2, -3}, {'l', 2, -5}, {'l', 0, -5}, {'l', 0, -3}, {'m', 1, -3}, {'l', 1, -5}, {'m', 2, -3}, {'l', 4, -3}, {'l', 4, -5}, {'l', 2, -5}, {'l', 2, -3}, {'m', 3, -3}, {'l', 3, -5}, {'m', 10, -3}, {'l', 14, -3}, {'l', 14, -5}, {'l', 10, -5}, {'l', 10, -3}, {'m', 11, -3}, {'l', 11, -5}, {'m', 13, -3}, {'l', 13, -5}, {'m', 20, -3}, {'l', 24, -3}, {'l', 24, -5}, {'l', 20, -5}, {'l', 20, -3}, {'m', 21, -3}, {'l', 21, -5}, {'m', 23, -3}, {'l', 23, -5}, {'m', 8, 1}, {'l', 8, -1}, {'m', 6, 1}, {'l', 6, -1}, {'m', 12, -3}, {'l', 12, -5}, {'m', 22, -3}, {'l', 22, -5}, {'m', 18, 17}, {'l', 20, 17}, {'l', 20, 15}, {'l', 18, 15}, {'l', 18, 17}, {'m', 19, 17}, {'l', 19, 15}, {'m', 20, 17}, {'l', 22, 17}, {'l', 22, 15}, {'l', 20, 15}, {'l', 20, 17}, {'m', 21, 17}, {'l', 21, 15}, {'m', 22, 17}, {'l', 24, 17}, {'l', 24, 15}, {'l', 22, 15}, {'l', 22, 17}, {'m', 23, 17}, {'l', 23, 15}, {'m', 0, 9}, {'l', 2, 9}, {'l', 2, 7}, {'l', 0, 7}, {'l', 0, 9}, {'m', 1, 9}, {'l', 1, 7}, {'m', 2, 9}, {'l', 4, 9}, {'l', 4, 7}, {'l', 2, 7}, {'l', 2, 9}, {'m', 3, 9}, {'l', 3, 7}, {'m', 4, 9}, {'l', 6, 9}, {'l', 6, 7}, {'l', 4, 7}, {'l', 4, 9}, {'m', 5, 9}, {'l', 5, 7}, {'m', 18, 1}, {'l', 24, 1}, {'l', 24, -1}, {'l', 18, -1}, {'l', 18, 1}, {'m', 19, 1}, {'l', 19, -1}, {'m', 21, 1}, {'l', 21, -1}, {'m', 23, 1}, {'l', 23, -1}, {'m', 20, 1}, {'l', 20, -1}, {'m', 22, 1}, {'l', 22, -1}, }; static cdOperation vf_default_char_179[] = { {'m', 0, 21}, {'l', 0, -7}, }; static cdOperation vf_default_char_180[] = { {'m', 8, 21}, {'l', 8, -7}, {'m', 0, 5}, {'l', 8, 5}, }; static cdOperation vf_default_char_181[] = { {'m', 8, -7}, {'l', 8, 21}, {'m', 0, 9}, {'l', 8, 9}, {'m', 0, 5}, {'l', 8, 5}, }; static cdOperation vf_default_char_182[] = { {'m', 8, 21}, {'l', 8, -7}, {'m', 0, 5}, {'l', 8, 5}, {'m', 16, 21}, {'l', 16, -7}, }; static cdOperation vf_default_char_183[] = { {'m', 0, 5}, {'l', 16, 5}, {'l', 16, -7}, {'m', 8, 5}, {'l', 8, -7}, }; static cdOperation vf_default_char_184[] = { {'m', 0, 9}, {'l', 8, 9}, {'l', 8, -7}, {'m', 0, 5}, {'l', 8, 5}, }; static cdOperation vf_default_char_185[] = { {'m', 0, 5}, {'l', 8, 5}, {'l', 8, -7}, {'m', 16, 21}, {'l', 16, -7}, {'m', 0, 9}, {'l', 8, 9}, {'l', 8, 21}, {'m', 0, 1}, {'l', 0, 1}, }; static cdOperation vf_default_char_186[] = { {'m', 8, 21}, {'l', 8, -7}, {'m', 16, 21}, {'l', 16, -7}, }; static cdOperation vf_default_char_187[] = { {'m', 0, 9}, {'l', 16, 9}, {'l', 16, -7}, {'m', 0, 5}, {'l', 8, 5}, {'l', 8, -7}, }; static cdOperation vf_default_char_188[] = { {'m', 0, 5}, {'l', 16, 5}, {'l', 16, 21}, {'m', 0, 9}, {'l', 8, 9}, {'l', 8, 21}, }; static cdOperation vf_default_char_189[] = { {'m', 0, 9}, {'l', 16, 9}, {'l', 16, 21}, {'m', 8, 9}, {'l', 8, 21}, }; static cdOperation vf_default_char_190[] = { {'m', 0, 5}, {'l', 8, 5}, {'l', 8, 21}, {'m', 0, 9}, {'l', 8, 9}, }; static cdOperation vf_default_char_191[] = { {'m', 0, 5}, {'l', 8, 5}, {'l', 8, -7}, }; static cdOperation vf_default_char_192[] = { {'m', 16, 0}, {'l', 8, 21}, {'l', 0, 0}, {'m', 3, 7}, {'l', 13, 7}, {'m', 4, 28}, {'l', 9, 23}, }; static cdOperation vf_default_char_193[] = { {'m', 16, 0}, {'l', 8, 21}, {'l', 0, 0}, {'m', 3, 7}, {'l', 13, 7}, {'m', 10, 28}, {'l', 5, 23}, }; static cdOperation vf_default_char_194[] = { {'m', 16, 0}, {'l', 8, 21}, {'l', 0, 0}, {'m', 3, 7}, {'l', 13, 7}, {'m', 3, 23}, {'l', 8, 28}, {'l', 13, 23}, }; static cdOperation vf_default_char_195[] = { {'m', 16, 0}, {'l', 8, 21}, {'l', 0, 0}, {'m', 3, 7}, {'l', 13, 7}, {'m', 2, 24}, {'l', 7, 27}, {'l', 11, 24}, {'l', 15, 26}, }; static cdOperation vf_default_char_196[] = { {'m', 0, 5}, {'l', 16, 5}, }; static cdOperation vf_default_char_197[] = { {'m', 8, 21}, {'l', 8, -7}, {'m', 0, 5}, {'l', 16, 5}, }; static cdOperation vf_default_char_198[] = { {'m', 0, -7}, {'l', 0, 21}, {'m', 8, 9}, {'l', 0, 9}, {'m', 8, 5}, {'l', 0, 5}, }; static cdOperation vf_default_char_199[] = { {'m', 8, 21}, {'l', 8, -7}, {'m', 16, 5}, {'l', 8, 5}, {'m', 0, 21}, {'l', 0, -7}, }; static cdOperation vf_default_char_200[] = { {'m', 13, 21}, {'l', 0, 21}, {'l', 0, 0}, {'l', 13, 0}, {'m', 0, 11}, {'l', 8, 11}, {'m', 4, 28}, {'l', 9, 23}, }; static cdOperation vf_default_char_201[] = { {'m', 16, 9}, {'l', 0, 9}, {'l', 0, -7}, {'m', 16, 5}, {'l', 8, 5}, {'l', 8, -7}, }; static cdOperation vf_default_char_202[] = { {'m', 13, 21}, {'l', 0, 21}, {'l', 0, 0}, {'l', 13, 0}, {'m', 0, 11}, {'l', 8, 11}, {'m', 2, 24}, {'l', 7, 29}, {'l', 12, 24}, {'l', 7, 29}, {'l', 2, 24}, }; static cdOperation vf_default_char_203[] = { {'m', 13, 21}, {'l', 0, 21}, {'l', 0, 0}, {'l', 13, 0}, {'m', 0, 11}, {'l', 8, 11}, {'m', 4, 26}, {'l', 3, 25}, {'l', 4, 24}, {'l', 5, 25}, {'l', 4, 26}, {'m', 12, 26}, {'l', 11, 25}, {'l', 12, 24}, {'l', 13, 25}, {'l', 12, 26}, }; static cdOperation vf_default_char_204[] = { {'m', 5, 21}, {'l', 5, 0}, {'m', 0, 28}, {'l', 5, 23}, }; static cdOperation vf_default_char_205[] = { {'m', 5, 21}, {'l', 5, 0}, {'m', 10, 28}, {'l', 5, 23}, }; static cdOperation vf_default_char_206[] = { {'m', 6, 21}, {'l', 6, 0}, {'m', 2, 26}, {'l', 7, 31}, {'l', 12, 26}, }; static cdOperation vf_default_char_207[] = { {'m', 8, 21}, {'l', 8, 0}, {'m', 4, 26}, {'l', 3, 25}, {'l', 4, 24}, {'l', 5, 25}, {'l', 4, 26}, {'m', 12, 26}, {'l', 11, 25}, {'l', 12, 24}, {'l', 13, 25}, {'l', 12, 26}, }; static cdOperation vf_default_char_208[] = { {'m', 6, 21}, {'l', 6, 0}, {'m', 6, 21}, {'l', 13, 21}, {'l', 16, 20}, {'l', 18, 18}, {'l', 19, 16}, {'l', 20, 13}, {'l', 20, 8}, {'l', 19, 5}, {'l', 18, 3}, {'l', 16, 1}, {'l', 13, 0}, {'l', 6, 0}, {'m', 0, 10}, {'l', 12, 10}, }; static cdOperation vf_default_char_209[] = { {'m', 0, 5}, {'l', 8, 5}, {'l', 8, -7}, {'m', 16, 5}, {'l', 8, 5}, {'m', 0, 9}, {'l', 16, 9}, }; static cdOperation vf_default_char_210[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 4, 28}, {'l', 9, 23}, }; static cdOperation vf_default_char_211[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 10, 28}, {'l', 5, 23}, }; static cdOperation vf_default_char_212[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 3, 23}, {'l', 8, 28}, {'l', 13, 23}, }; static cdOperation vf_default_char_213[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 2, 24}, {'l', 7, 27}, {'l', 11, 24}, {'l', 15, 26}, }; static cdOperation vf_default_char_214[] = { {'m', 16, 5}, {'l', 0, 5}, {'l', 0, -7}, {'m', 8, 5}, {'l', 8, -7}, }; static cdOperation vf_default_char_215[] = { {'m', 0, 0}, {'l', 14, 14}, {'m', 0, 13}, {'l', 14, -1}, }; static cdOperation vf_default_char_216[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 1, -3}, {'l', 2, -1}, {'l', 16, 23}, }; static cdOperation vf_default_char_217[] = { {'m', 0, 21}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 6, 0}, {'l', 8, 0}, {'l', 11, 1}, {'l', 13, 3}, {'l', 14, 6}, {'l', 14, 21}, {'m', 4, 28}, {'l', 9, 23}, }; static cdOperation vf_default_char_218[] = { {'m', 0, 21}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 6, 0}, {'l', 8, 0}, {'l', 11, 1}, {'l', 13, 3}, {'l', 14, 6}, {'l', 14, 21}, {'m', 10, 28}, {'l', 5, 23}, }; static cdOperation vf_default_char_219[] = { {'m', 0, 21}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 6, 0}, {'l', 8, 0}, {'l', 11, 1}, {'l', 13, 3}, {'l', 14, 6}, {'l', 14, 21}, {'m', 2, 24}, {'l', 7, 29}, {'l', 12, 24}, {'l', 7, 29}, {'l', 2, 24}, }; static cdOperation vf_default_char_220[] = { {'m', 16, 0}, {'l', 0, 0}, {'l', 0, 11}, {'l', 16, 11}, {'l', 16, 0}, {'l', 15, 0}, {'l', 15, 11}, {'m', 1, 11}, {'l', 1, 0}, {'m', 2, 11}, {'l', 2, 0}, {'m', 3, 11}, {'l', 3, 0}, {'m', 4, 11}, {'l', 4, 0}, {'m', 5, 11}, {'l', 5, 0}, {'m', 6, 11}, {'l', 6, 0}, {'m', 7, 11}, {'l', 7, 0}, {'m', 8, 11}, {'l', 8, 0}, {'m', 9, 11}, {'l', 9, 0}, {'m', 10, 11}, {'l', 10, 0}, {'m', 11, 11}, {'l', 11, 0}, {'m', 12, 11}, {'l', 12, 0}, {'m', 13, 11}, {'l', 13, 0}, {'m', 14, 11}, {'l', 14, 0}, }; static cdOperation vf_default_char_221[] = { {'m', 0, 21}, {'l', 8, 11}, {'l', 8, 0}, {'m', 16, 21}, {'l', 8, 11}, {'m', 10, 28}, {'l', 5, 23}, }; static cdOperation vf_default_char_222[] = { {'m', 9, 0}, {'l', 9, 21}, {'m', 10, 21}, {'l', 10, 0}, {'m', 11, 21}, {'l', 11, 0}, {'m', 12, 21}, {'l', 12, 0}, {'m', 13, 21}, {'l', 13, 0}, {'m', 14, 21}, {'l', 14, 0}, {'m', 15, 21}, {'l', 15, 0}, {'m', 16, 21}, {'l', 16, 0}, {'m', 17, 21}, {'l', 17, 0}, }; static cdOperation vf_default_char_223[] = { {'m', 0, 1}, {'l', 10, 1}, {'l', 13, 3}, {'l', 13, 7}, {'l', 9, 9}, {'l', 13, 11}, {'l', 13, 14}, {'l', 10, 16}, {'l', 3, 16}, {'l', 0, 14}, {'l', 0, -3}, {'m', 9, 9}, {'l', 0, 9}, }; static cdOperation vf_default_char_224[] = { {'m', 18, 0}, {'l', 12, 9}, {'l', 10, 11}, {'l', 8, 12}, {'l', 5, 12}, {'l', 3, 11}, {'l', 1, 9}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 18, 12}, }; static cdOperation vf_default_char_225[] = { {'m', 0, 1}, {'l', 10, 1}, {'l', 13, 3}, {'l', 13, 7}, {'l', 9, 9}, {'l', 13, 11}, {'l', 13, 14}, {'l', 10, 16}, {'l', 3, 16}, {'l', 0, 14}, {'l', 0, -3}, {'m', 9, 9}, {'l', 0, 9}, }; static cdOperation vf_default_char_226[] = { {'m', 0, 0}, {'l', 0, 14}, {'l', 9, 14}, {'l', 9, 11}, }; static cdOperation vf_default_char_227[] = { {'m', 12, 14}, {'l', 12, 0}, {'m', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'m', 0, 17}, {'l', 5, 20}, {'l', 9, 17}, {'l', 13, 19}, }; static cdOperation vf_default_char_228[] = { {'m', 13, 2}, {'l', 13, 0}, {'l', 0, 0}, {'l', 8, 11}, {'l', 0, 21}, {'l', 13, 21}, {'l', 13, 19}, }; static cdOperation vf_default_char_229[] = { {'m', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 12, 9}, {'l', 10, 11}, {'l', 8, 12}, {'l', 5, 12}, {'l', 3, 11}, {'l', 1, 9}, {'l', 0, 6}, {'m', 5, 12}, {'l', 9, 14}, {'l', 20, 14}, }; static cdOperation vf_default_char_230[] = { {'m', 2, 14}, {'l', 2, 4}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 13, 4}, {'m', 13, 14}, {'l', 13, 0}, {'m', 3, 1}, {'l', 3, -3}, {'l', 0, -6}, }; static cdOperation vf_default_char_231[] = { {'m', 0, 9}, {'l', 0, 11}, {'l', 1, 13}, {'l', 3, 14}, {'l', 6, 14}, {'l', 8, 12}, {'l', 8, -2}, {'m', 8, 9}, {'l', 11, 11}, {'l', 14, 14}, }; static cdOperation vf_default_char_232[] = { {'m', 0, 9}, {'l', 1, 6}, {'l', 3, 4}, {'l', 5, 3}, {'l', 8, 3}, {'l', 10, 4}, {'l', 12, 6}, {'l', 13, 9}, {'l', 12, 12}, {'l', 10, 14}, {'l', 8, 15}, {'l', 5, 15}, {'l', 3, 14}, {'l', 1, 12}, {'l', 0, 9}, {'m', 6, 21}, {'l', 6, 15}, {'m', 7, 21}, {'l', 7, 15}, {'m', 0, 21}, {'l', 13, 21}, {'m', 6, -3}, {'l', 6, 3}, {'m', 7, -3}, {'l', 7, 3}, {'m', 0, -3}, {'l', 13, -3}, }; static cdOperation vf_default_char_233[] = { {'m', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 8}, {'l', 1, 5}, {'l', 2, 3}, {'l', 4, 1}, {'l', 6, 0}, {'l', 10, 0}, {'l', 12, 1}, {'l', 14, 3}, {'l', 15, 5}, {'l', 16, 8}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'m', 0, 10}, {'l', 16, 10}, }; static cdOperation vf_default_char_234[] = { {'m', 16, 0}, {'l', 11, 0}, {'l', 11, 6}, {'l', 14, 7}, {'l', 16, 9}, {'l', 16, 13}, {'l', 15, 16}, {'l', 14, 18}, {'l', 12, 20}, {'l', 10, 21}, {'l', 6, 21}, {'l', 4, 20}, {'l', 2, 18}, {'l', 1, 16}, {'l', 0, 13}, {'l', 0, 9}, {'l', 2, 7}, {'l', 5, 6}, {'l', 5, 0}, {'l', 0, 0}, }; static cdOperation vf_default_char_235[] = { {'m', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 12, 9}, {'l', 10, 11}, {'l', 8, 12}, {'l', 5, 12}, {'l', 3, 11}, {'l', 1, 9}, {'l', 0, 6}, {'m', 10, 11}, {'l', 0, 21}, {'l', 13, 21}, {'l', 13, 18}, }; static cdOperation vf_default_char_236[] = { {'m', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 12, 9}, {'l', 10, 11}, {'l', 8, 12}, {'l', 5, 12}, {'l', 3, 11}, {'l', 1, 9}, {'l', 0, 6}, {'m', 12, 6}, {'l', 13, 3}, {'l', 15, 1}, {'l', 17, 0}, {'l', 20, 0}, {'l', 22, 1}, {'l', 24, 3}, {'l', 25, 6}, {'l', 24, 9}, {'l', 22, 11}, {'l', 20, 12}, {'l', 17, 12}, {'l', 15, 11}, {'l', 13, 9}, {'l', 12, 6}, }; static cdOperation vf_default_char_237[] = { {'m', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 8}, {'l', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'m', 0, -3}, {'l', 13, 17}, }; static cdOperation vf_default_char_238[] = { {'m', 13, 21}, {'l', 3, 21}, {'l', 0, 19}, {'l', 0, 11}, {'l', 8, 11}, {'m', 0, 11}, {'l', 0, 2}, {'l', 3, 0}, {'l', 13, 0}, }; static cdOperation vf_default_char_239[] = { {'m', 0, 0}, {'l', 0, 15}, {'l', 1, 18}, {'l', 3, 20}, {'l', 6, 21}, {'l', 8, 21}, {'l', 11, 20}, {'l', 13, 18}, {'l', 14, 15}, {'l', 14, 0}, }; static cdOperation vf_default_char_240[] = { {'m', 0, 9}, {'l', 18, 9}, {'m', 0, 5}, {'l', 18, 5}, {'m', 0, 13}, {'l', 18, 13}, }; static cdOperation vf_default_char_241[] = { {'m', 0, 0}, {'l', 18, 0}, {'m', 9, 21}, {'l', 9, 3}, {'m', 0, 12}, {'l', 18, 12}, }; static cdOperation vf_default_char_242[] = { {'m', 0, 0}, {'l', 18, 0}, {'m', 0, 21}, {'l', 18, 12}, {'l', 0, 3}, }; static cdOperation vf_default_char_243[] = { {'m', 18, 0}, {'l', 0, 0}, {'m', 18, 21}, {'l', 0, 12}, {'l', 18, 3}, }; static cdOperation vf_default_char_244[] = { {'m', 10, 20}, {'l', 7, 21}, {'l', 5, 21}, {'l', 2, 20}, {'l', 1, 19}, {'l', 0, 16}, {'l', 0, -7}, }; static cdOperation vf_default_char_245[] = { {'m', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 8}, {'l', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'m', 0, 17}, {'l', 5, 20}, {'l', 9, 17}, {'l', 13, 19}, }; static cdOperation vf_default_char_246[] = { {'m', 9, 20}, {'l', 8, 19}, {'l', 9, 18}, {'l', 10, 19}, {'l', 9, 20}, {'m', 9, 3}, {'l', 8, 2}, {'l', 9, 1}, {'l', 10, 2}, {'l', 9, 3}, {'m', 0, 10}, {'l', 18, 10}, }; static cdOperation vf_default_char_247[] = { {'m', 9, 20}, {'l', 8, 19}, {'l', 9, 18}, {'l', 10, 19}, {'l', 9, 20}, {'m', 9, 3}, {'l', 8, 2}, {'l', 9, 1}, {'l', 10, 2}, {'l', 9, 3}, {'m', 0, 10}, {'l', 18, 10}, }; static cdOperation vf_default_char_248[] = { {'m', 5, 14}, {'l', 3, 13}, {'l', 1, 11}, {'l', 0, 8}, {'l', 0, 6}, {'l', 1, 3}, {'l', 3, 1}, {'l', 5, 0}, {'l', 8, 0}, {'l', 10, 1}, {'l', 12, 3}, {'l', 13, 6}, {'l', 13, 8}, {'l', 12, 11}, {'l', 10, 13}, {'l', 8, 14}, {'l', 5, 14}, {'m', 0, -3}, {'l', 13, 17}, }; static cdOperation vf_default_char_249[] = { {'m', 0, 4}, {'l', 3, 4}, {'l', 3, 0}, {'l', 0, 0}, {'l', 0, 4}, {'m', 1, 4}, {'l', 1, 0}, {'m', 2, 4}, {'l', 2, 0}, }; static cdOperation vf_default_char_250[] = { {'m', 0, 2}, {'l', 3, 2}, {'l', 3, 0}, {'l', 0, 0}, {'l', 0, 2}, {'l', 3, 1}, {'m', 1, 2}, {'l', 1, 0}, {'m', 2, 2}, {'l', 2, 0}, }; static cdOperation vf_default_char_251[] = { {'m', 16, 18}, {'l', 16, 21}, {'l', 8, 21}, {'l', 8, 0}, {'l', 0, 10}, }; static cdOperation vf_default_char_252[] = { {'m', 0, 21}, {'l', 0, 10}, {'m', 0, 17}, {'l', 3, 20}, {'l', 5, 21}, {'l', 8, 21}, {'l', 10, 20}, {'l', 11, 17}, {'l', 11, 10}, }; static cdOperation vf_default_char_253[] = { {'m', 1, 14}, {'l', 7, 0}, {'m', 13, 14}, {'l', 7, 0}, {'l', 5, -4}, {'l', 3, -6}, {'l', 1, -7}, {'l', 0, -7}, {'m', 10, 22}, {'l', 5, 17}, }; static cdOperation vf_default_char_254[] = { {'m', 0, 0}, {'l', 0, 11}, {'l', 8, 11}, {'l', 8, 0}, {'l', 0, 0}, {'m', 1, 11}, {'l', 1, 0}, {'m', 2, 11}, {'l', 2, 0}, {'m', 3, 11}, {'l', 3, 0}, {'m', 4, 11}, {'l', 4, 0}, {'m', 5, 11}, {'l', 5, 0}, {'m', 6, 11}, {'l', 6, 0}, {'m', 7, 11}, {'l', 7, 0}, }; static cdCaracter vf_default_chars[256] = { { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, {12, 6, 0, 0}, {6, 3, 7, vf_default_char_33}, {14, 7, 16, vf_default_char_34}, {18, 9, 8, vf_default_char_35}, {17, 8, 38, vf_default_char_36}, {21, 10, 29, vf_default_char_37}, {22, 11, 46, vf_default_char_38}, {6, 3, 7, vf_default_char_39}, {10, 5, 18, vf_default_char_40}, {11, 5, 18, vf_default_char_41}, {13, 6, 6, vf_default_char_42}, {22, 11, 4, vf_default_char_43}, {6, 3, 8, vf_default_char_44}, {22, 11, 2, vf_default_char_45}, {6, 3, 5, vf_default_char_46}, {14, 7, 2, vf_default_char_47}, {17, 8, 17, vf_default_char_48}, {14, 7, 4, vf_default_char_49}, {17, 8, 14, vf_default_char_50}, {17, 8, 15, vf_default_char_51}, {17, 8, 5, vf_default_char_52}, {17, 8, 17, vf_default_char_53}, {16, 8, 23, vf_default_char_54}, {17, 8, 4, vf_default_char_55}, {17, 8, 29, vf_default_char_56}, {17, 8, 23, vf_default_char_57}, {6, 3, 10, vf_default_char_58}, {6, 3, 13, vf_default_char_59}, {20, 10, 3, vf_default_char_60}, {22, 11, 4, vf_default_char_61}, {20, 10, 3, vf_default_char_62}, {15, 7, 19, vf_default_char_63}, {24, 12, 52, vf_default_char_64}, {19, 9, 5, vf_default_char_65}, {17, 8, 21, vf_default_char_66}, {19, 9, 18, vf_default_char_67}, {17, 8, 14, vf_default_char_68}, {15, 7, 6, vf_default_char_69}, {14, 7, 6, vf_default_char_70}, {18, 9, 21, vf_default_char_71}, {18, 9, 6, vf_default_char_72}, {4, 2, 2, vf_default_char_73}, {14, 7, 10, vf_default_char_74}, {17, 8, 6, vf_default_char_75}, {13, 6, 4, vf_default_char_76}, {20, 10, 8, vf_default_char_77}, {18, 9, 6, vf_default_char_78}, {19, 9, 21, vf_default_char_79}, {17, 8, 11, vf_default_char_80}, {19, 9, 23, vf_default_char_81}, {17, 8, 14, vf_default_char_82}, {17, 8, 20, vf_default_char_83}, {15, 7, 4, vf_default_char_84}, {18, 9, 10, vf_default_char_85}, {17, 8, 4, vf_default_char_86}, {22, 11, 8, vf_default_char_87}, {17, 8, 4, vf_default_char_88}, {17, 8, 5, vf_default_char_89}, {17, 8, 6, vf_default_char_90}, {7, 3, 8, vf_default_char_91}, {14, 7, 2, vf_default_char_92}, {8, 4, 8, vf_default_char_93}, {19, 9, 6, vf_default_char_94}, {17, 8, 2, vf_default_char_95}, {6, 3, 7, vf_default_char_96}, {16, 8, 16, vf_default_char_97}, {15, 7, 16, vf_default_char_98}, {15, 7, 14, vf_default_char_99}, {16, 8, 16, vf_default_char_100}, {15, 7, 17, vf_default_char_101}, {10, 5, 7, vf_default_char_102}, {16, 8, 21, vf_default_char_103}, {15, 7, 9, vf_default_char_104}, {7, 3, 7, vf_default_char_105}, {9, 4, 10, vf_default_char_106}, {13, 6, 6, vf_default_char_107}, {4, 2, 2, vf_default_char_108}, {26, 13, 16, vf_default_char_109}, {15, 7, 9, vf_default_char_110}, {16, 8, 17, vf_default_char_111}, {15, 7, 16, vf_default_char_112}, {16, 8, 16, vf_default_char_113}, {9, 4, 7, vf_default_char_114}, {14, 7, 17, vf_default_char_115}, {10, 5, 7, vf_default_char_116}, {15, 7, 9, vf_default_char_117}, {14, 7, 4, vf_default_char_118}, {19, 9, 8, vf_default_char_119}, {14, 7, 4, vf_default_char_120}, {15, 7, 8, vf_default_char_121}, {14, 7, 6, vf_default_char_122}, {10, 5, 37, vf_default_char_123}, {4, 2, 2, vf_default_char_124}, {9, 4, 37, vf_default_char_125}, {14, 7, 4, vf_default_char_126}, {16, 8, 8, vf_default_char_127}, {18, 9, 30, vf_default_char_128}, {15, 7, 19, vf_default_char_129}, {15, 7, 19, vf_default_char_130}, {18, 9, 19, vf_default_char_131}, {16, 8, 26, vf_default_char_132}, {16, 8, 18, vf_default_char_133}, {16, 8, 23, vf_default_char_134}, {15, 7, 21, vf_default_char_135}, {18, 9, 20, vf_default_char_136}, {15, 7, 27, vf_default_char_137}, {15, 7, 19, vf_default_char_138}, {12, 6, 12, vf_default_char_139}, {16, 8, 5, vf_default_char_140}, {7, 3, 4, vf_default_char_141}, {17, 8, 15, vf_default_char_142}, {17, 8, 12, vf_default_char_143}, {15, 7, 8, vf_default_char_144}, {28, 14, 33, vf_default_char_145}, {26, 13, 10, vf_default_char_146}, {16, 8, 20, vf_default_char_147}, {16, 8, 27, vf_default_char_148}, {16, 8, 19, vf_default_char_149}, {17, 8, 12, vf_default_char_150}, {15, 7, 11, vf_default_char_151}, {15, 7, 18, vf_default_char_152}, {19, 9, 31, vf_default_char_153}, {18, 9, 20, vf_default_char_154}, {15, 7, 16, vf_default_char_155}, {21, 10, 12, vf_default_char_156}, {17, 8, 9, vf_default_char_157}, {21, 10, 18, vf_default_char_158}, {17, 8, 15, vf_default_char_159}, {16, 8, 18, vf_default_char_160}, {7, 3, 4, vf_default_char_161}, {16, 8, 19, vf_default_char_162}, {15, 7, 11, vf_default_char_163}, {17, 8, 13, vf_default_char_164}, {18, 9, 8, vf_default_char_165}, {16, 8, 18, vf_default_char_166}, {16, 8, 17, vf_default_char_167}, {15, 7, 19, vf_default_char_168}, {16, 8, 7, vf_default_char_169}, {16, 8, 7, vf_default_char_170}, {19, 9, 15, vf_default_char_171}, {19, 9, 10, vf_default_char_172}, {6, 3, 7, vf_default_char_173}, {19, 9, 6, vf_default_char_174}, {19, 9, 6, vf_default_char_175}, {14, 7, 126, vf_default_char_176}, {16, 8, 252, vf_default_char_177}, {24, 12, 276, vf_default_char_178}, {5, 2, 2, vf_default_char_179}, {13, 6, 4, vf_default_char_180}, {13, 6, 6, vf_default_char_181}, {21, 10, 6, vf_default_char_182}, {21, 10, 5, vf_default_char_183}, {13, 6, 5, vf_default_char_184}, {21, 10, 10, vf_default_char_185}, {20, 10, 4, vf_default_char_186}, {21, 10, 6, vf_default_char_187}, {21, 10, 6, vf_default_char_188}, {21, 10, 5, vf_default_char_189}, {13, 6, 5, vf_default_char_190}, {0, 0, 3, vf_default_char_191}, {19, 9, 7, vf_default_char_192}, {19, 9, 7, vf_default_char_193}, {19, 9, 8, vf_default_char_194}, {19, 9, 9, vf_default_char_195}, {16, 8, 2, vf_default_char_196}, {16, 8, 4, vf_default_char_197}, {8, 4, 6, vf_default_char_198}, {16, 8, 6, vf_default_char_199}, {15, 7, 8, vf_default_char_200}, {16, 8, 6, vf_default_char_201}, {15, 7, 11, vf_default_char_202}, {15, 7, 16, vf_default_char_203}, {9, 2, 4, vf_default_char_204}, {9, 2, 4, vf_default_char_205}, {12, 2, 5, vf_default_char_206}, {12, 2, 12, vf_default_char_207}, {23, 8, 16, vf_default_char_208}, {16, 8, 7, vf_default_char_209}, {19, 9, 23, vf_default_char_210}, {19, 9, 23, vf_default_char_211}, {19, 9, 24, vf_default_char_212}, {19, 9, 25, vf_default_char_213}, {16, 8, 5, vf_default_char_214}, {18, 11, 4, vf_default_char_215}, {19, 9, 24, vf_default_char_216}, {18, 9, 12, vf_default_char_217}, {18, 9, 12, vf_default_char_218}, {18, 9, 15, vf_default_char_219}, {16, 8, 35, vf_default_char_220}, {17, 8, 7, vf_default_char_221}, {17, 8, 18, vf_default_char_222}, {18, 9, 13, vf_default_char_223}, {22, 11, 15, vf_default_char_224}, {18, 9, 13, vf_default_char_225}, {14, 7, 4, vf_default_char_226}, {16, 8, 20, vf_default_char_227}, {18, 9, 7, vf_default_char_228}, {24, 12, 18, vf_default_char_229}, {18, 9, 12, vf_default_char_230}, {18, 9, 10, vf_default_char_231}, {18, 9, 27, vf_default_char_232}, {21, 10, 23, vf_default_char_233}, {21, 10, 20, vf_default_char_234}, {18, 9, 19, vf_default_char_235}, {29, 14, 30, vf_default_char_236}, {16, 8, 19, vf_default_char_237}, {17, 8, 9, vf_default_char_238}, {19, 9, 10, vf_default_char_239}, {23, 11, 6, vf_default_char_240}, {23, 11, 6, vf_default_char_241}, {23, 11, 5, vf_default_char_242}, {24, 12, 5, vf_default_char_243}, {13, 6, 7, vf_default_char_244}, {16, 8, 21, vf_default_char_245}, {23, 11, 12, vf_default_char_246}, {23, 11, 12, vf_default_char_247}, {16, 8, 19, vf_default_char_248}, {7, 3, 9, vf_default_char_249}, {7, 3, 10, vf_default_char_250}, {18, 9, 5, vf_default_char_251}, {15, 7, 9, vf_default_char_252}, {15, 7, 10, vf_default_char_253}, {13, 6, 19, vf_default_char_254}, { 0, 0, 0, 0} }; /******************************************************/ /* inicializacao & controle */ /******************************************************/ static void vf_releasefontchars(cdVectorFont *vector_font) { int c; for (c=0; c<256; c++) { if (vector_font->chars[c].op) free(vector_font->chars[c].op); } free(vector_font->chars); } static void vf_setdefaultfont(cdVectorFont *vector_font) { if (vector_font->chars && vector_font->chars != vf_default_chars) vf_releasefontchars(vector_font); strcpy(vector_font->name, "Simplex II"); vector_font->file_name[0] = 0; vector_font->chars = vf_default_chars; vector_font->top = vf_default_top; vector_font->cap = vf_default_cap; vector_font->half = vf_default_half; vector_font->bottom = vf_default_bottom; vector_font->point_size_x = 1.0; vector_font->point_size_y = 1.0; vector_font->current_cos = 1.0; vector_font->current_sin = 0.0; vector_font->space = 1; vector_font->line_space = 1; } static int vf_readfontfile(FILE *file, cdVectorFont *vector_font) { int c, right, center, operations; if (vector_font->chars && vector_font->chars != vf_default_chars) vf_releasefontchars(vector_font); vector_font->chars = (cdCaracter *)calloc(256, sizeof(cdCaracter)); if (!vector_font->chars) return 0; if (fscanf(file,"%d%d%d%d",&vector_font->top,&vector_font->cap,&vector_font->half,&vector_font->bottom) != 4) { if (fscanf(file, "%[^\n]", vector_font->name) != 1) return 0; if (fscanf(file,"%d%d%d%d",&vector_font->top,&vector_font->cap,&vector_font->half,&vector_font->bottom)!=4) return 0; } else sprintf(vector_font->name, "Unknown"); while (fscanf(file, "%d%d%d%d", &c, &right, ¢er, &operations) == 4) { vector_font->chars[c].right = right; vector_font->chars[c].center = center; vector_font->chars[c].operations = operations; if (operations) { int i; vector_font->chars[c].op = (cdOperation *)calloc(operations, sizeof(cdOperation)); if (!vector_font->chars[c].op) return 0; for (i=0; ichars[c].op[i].operation = operation; vector_font->chars[c].op[i].x = (signed char)x; vector_font->chars[c].op[i].y = (signed char)y; } } } return 1; } static int vf_readfontstring(const char* file, cdVectorFont *vector_font) { int c, right, center, operations; if (vector_font->chars && vector_font->chars != vf_default_chars) vf_releasefontchars(vector_font); vector_font->chars = (cdCaracter *)calloc(256, sizeof(cdCaracter)); if (!vector_font->chars) return 0; /* try to read without a name */ if (sscanf(file,"%d%d%d%d",&vector_font->top,&vector_font->cap,&vector_font->half,&vector_font->bottom) != 4) { if (sscanf(file, "%[^\n]", vector_font->name) != 1) return 0; file = strstr(file, "\n")+1; /* goto next line */ if (file == (void*)1) return 0; if (sscanf(file,"%d%d%d%d",&vector_font->top,&vector_font->cap,&vector_font->half,&vector_font->bottom)!=4) return 0; file = strstr(file, "\n"); /* goto next line */ if (file == (void*)1) return 0; } else { file = strstr(file, "\n")+1; /* goto next line */ sprintf(vector_font->name, "Unknown"); } /* skip 2 blank vf_lines */ file = strstr(file, "\n")+1; /* goto next line */ file = strstr(file, "\n")+1; /* goto next line */ /* for each font character */ while (sscanf(file, "%d%d%d%d", &c, &right, ¢er, &operations) == 4) { file = strstr(file, "\n")+1; /* goto next line */ if (file == (void*)1) return 0; vector_font->chars[c].right = right; vector_font->chars[c].center = center; vector_font->chars[c].operations = operations; if (operations) { int i; vector_font->chars[c].op = (cdOperation *)calloc(operations, sizeof(cdOperation)); if (!vector_font->chars[c].op) return 0; for (i=0; ichars[c].op[i].operation = operation; vector_font->chars[c].op[i].x = (signed char)x; vector_font->chars[c].op[i].y = (signed char)y; } } /* skip 1 blank line */ file = strstr(file, "\n")+1; /* goto next line */ if (file == (void*)1) return 1; } return 1; } static int vf_primlen(cdVectorFont *vector_font, const char* s) { int len = 0; while (*s) len += vector_font->chars[(unsigned char)(*(s++))].right + vector_font->space; return len; } static void vf_move_dir(cdVectorFont *vector_font, int *px, int *py, double dx, double dy) { *px += cdRound(vector_font->current_cos*dx - vector_font->current_sin*dy); *py += cdRound(vector_font->current_sin*dx + vector_font->current_cos*dy); } static void vf_wmove_dir(cdVectorFont *vector_font, double *px, double *py, double dx, double dy) { *px += vector_font->current_cos*dx - vector_font->current_sin*dy; *py += vector_font->current_sin*dx + vector_font->current_cos*dy; } static void vf_writechar(cdVectorFont *vector_font, char c, int *px, int *py) { unsigned char ac = vf_ansi2ascii[(unsigned char)c]; cdOperation *current = vector_font->chars[ac].op; int m, op = vector_font->chars[ac].operations; for(m = 0; m < op; m++) { int ponto_x = *px; int ponto_y = *py; if (current->operation == 'm') { if (m) cdCanvasEnd(vector_font->canvas); cdCanvasBegin(vector_font->canvas, CD_OPEN_LINES); } vf_move_dir(vector_font, &ponto_x, &ponto_y, current->x*vector_font->point_size_x, current->y*vector_font->point_size_y); if (vector_font->text_transf) { double aux = ponto_x*vector_font->text_matrix[3] + ponto_y*vector_font->text_matrix[4] + vector_font->text_matrix[5]; ponto_y = cdRound(ponto_x*vector_font->text_matrix[0] + ponto_y*vector_font->text_matrix[1] + vector_font->text_matrix[2]); ponto_x = _cdRound(aux); } cdCanvasVertex(vector_font->canvas, ponto_x, ponto_y); current++; } if (m) cdCanvasEnd(vector_font->canvas); } static void vf_wwritechar(cdVectorFont *vector_font, char c, double *px, double *py) { unsigned char ac = vf_ansi2ascii[(unsigned char)c]; cdOperation *current = vector_font->chars[ac].op; int m, op = vector_font->chars[ac].operations; for(m = 0; m < op; m++) { double ponto_x = *px; double ponto_y = *py; if (current->operation == 'm') { if (m) cdCanvasEnd(vector_font->canvas); cdCanvasBegin(vector_font->canvas, CD_OPEN_LINES); } vf_wmove_dir(vector_font, &ponto_x, &ponto_y, current->x*vector_font->point_size_x, current->y*vector_font->point_size_y); if (vector_font->text_transf) { double aux = ponto_x*vector_font->text_matrix[3] + ponto_y*vector_font->text_matrix[4] + vector_font->text_matrix[5]; ponto_y = ponto_x*vector_font->text_matrix[0] + ponto_y*vector_font->text_matrix[1] + vector_font->text_matrix[2]; ponto_x = aux; } wdCanvasVertex(vector_font->canvas, ponto_x, ponto_y); current++; } if (m) cdCanvasEnd(vector_font->canvas); } static int vf_lines(char * s) { int n = 1; while (*s != 0) { if (*s == '\n') { n++; *s = 0; } s++; } return n; } static void vf_basic_write(cdVectorFont *vector_font, const char* s, int px, int py) { while (*s) { vf_writechar(vector_font, *s, &px, &py); vf_move_dir(vector_font, &px, &py, (vector_font->chars[(unsigned char)*s].right + vector_font->space)*vector_font->point_size_x, 0); s++; } } static void vf_wbasic_write(cdVectorFont *vector_font, const char* s, double px, double py) { while (*s) { vf_wwritechar(vector_font, *s, &px, &py); vf_wmove_dir(vector_font, &px, &py, (vector_font->chars[(unsigned char)*s].right + vector_font->space)*vector_font->point_size_x, 0); s++; } } static void vf_calc_pos(cdVectorFont *vector_font, int *px, int *py, int prim_len) { int align = cdCanvasTextAlignment(vector_font->canvas, CD_QUERY); if (align == CD_NORTH || align == CD_NORTH_EAST || align == CD_NORTH_WEST) { vf_move_dir(vector_font, px, py, 0, -vector_font->top*vector_font->point_size_y); } else if (align == CD_SOUTH || align == CD_SOUTH_EAST || align == CD_SOUTH_WEST) { vf_move_dir(vector_font, px, py, 0, -vector_font->bottom*vector_font->point_size_y); /* bottom is < 0 */ } else if (align == CD_BASE_CENTER || align == CD_BASE_LEFT || align == CD_BASE_RIGHT) { /* py = py; */ } else /* center em y */ vf_move_dir(vector_font, px, py, 0, -(double)(vector_font->cap+vector_font->bottom)/2*vector_font->point_size_y); if (align == CD_EAST || align == CD_NORTH_EAST || align == CD_SOUTH_EAST || align == CD_BASE_RIGHT) { vf_move_dir(vector_font, px, py, -prim_len*vector_font->point_size_x, 0); } else if (align == CD_WEST || align == CD_NORTH_WEST || align == CD_SOUTH_WEST || align == CD_BASE_LEFT) { ; /* px = px; */ } else /* center em x */ vf_move_dir(vector_font, px, py, -(prim_len*vector_font->point_size_x)/2, 0); } static void vf_wcalc_pos(cdVectorFont *vector_font, double *px, double *py, int prim_len) { int align = cdCanvasTextAlignment(vector_font->canvas, CD_QUERY); if (align == CD_NORTH || align == CD_NORTH_EAST || align == CD_NORTH_WEST) { vf_wmove_dir(vector_font, px, py, 0, -vector_font->top*vector_font->point_size_y); } else if (align == CD_SOUTH || align == CD_SOUTH_EAST || align == CD_SOUTH_WEST) { vf_wmove_dir(vector_font, px, py, 0, -vector_font->bottom*vector_font->point_size_y); /* bottom is < 0 */ } else if (align == CD_BASE_CENTER || align == CD_BASE_LEFT || align == CD_BASE_RIGHT) { /* py = py; */ } else /* center em y */ vf_wmove_dir(vector_font, px, py, 0, -(double)(vector_font->cap+vector_font->bottom)/2*vector_font->point_size_y); if (align == CD_EAST || align == CD_NORTH_EAST || align == CD_SOUTH_EAST || align == CD_BASE_RIGHT) { vf_wmove_dir(vector_font, px, py, -prim_len*vector_font->point_size_x, 0); } else if (align == CD_WEST || align == CD_NORTH_WEST || align == CD_SOUTH_WEST || align == CD_BASE_LEFT) { ; /* px = px; */ } else /* center em x */ vf_wmove_dir(vector_font, px, py, -(prim_len*vector_font->point_size_x)/2, 0); } static void vf_calc_point(cdVectorFont *vector_font, int startx, int starty, int *px, int *py, int dx, int dy) { *px = startx; *py = starty; vf_move_dir(vector_font, px, py, dx, dy); if (vector_font->text_transf) { double aux = *px * vector_font->text_matrix[3] + *py * vector_font->text_matrix[4] + vector_font->text_matrix[5]; *py = cdRound(*px * vector_font->text_matrix[0] + *py * vector_font->text_matrix[1] + vector_font->text_matrix[2]); *px = _cdRound(aux); } } static void vf_wcalc_point(cdVectorFont *vector_font, double startx, double starty, double *px, double *py, double dx, double dy) { *px = startx; *py = starty; vf_wmove_dir(vector_font, px, py, dx, dy); if (vector_font->text_transf) { double aux = *px * vector_font->text_matrix[3] + *py * vector_font->text_matrix[4] + vector_font->text_matrix[5]; *py = *px * vector_font->text_matrix[0] + *py * vector_font->text_matrix[1] + vector_font->text_matrix[2]; *px = aux; } } static char *cd_getCDDIR(void) { static char *env = NULL; if (env) return env; env = getenv("CDDIR"); if (!env) env = "."; return env; } /******************************************************/ /* vector text */ /******************************************************/ cdVectorFont* cdCreateVectorFont(cdCanvas* canvas) { cdVectorFont* vector_font = calloc(1, sizeof(cdVectorFont)); vector_font->canvas = canvas; vf_setdefaultfont(vector_font); return vector_font; } void cdKillVectorFont(cdVectorFont* vector_font) { if (vector_font->chars && vector_font->chars != vf_default_chars) vf_releasefontchars(vector_font); /* not the default font */ free(vector_font); } void cdCanvasVectorTextDirection(cdCanvas* canvas, int x1, int y1, int x2, int y2) { int dx=x2-x1; int dy=y2-y1; double len = sqrt(dx*dx +dy*dy); cdVectorFont* vector_font = canvas->vector_font; vector_font->current_sin = dy/len; vector_font->current_cos = dx/len; } int cdCanvasVectorCharSize(cdCanvas* canvas, int size) { cdVectorFont* vector_font = canvas->vector_font; int old_size = cdRound(vector_font->point_size_y*vector_font->top); if (size == CD_QUERY) return old_size; vector_font->point_size_y = size/(double)vector_font->top; vector_font->point_size_x = size/(double)vector_font->top; return old_size; } double* cdCanvasVectorTextTransform(cdCanvas* canvas, const double* matrix) { cdVectorFont* vector_font = canvas->vector_font; int i; static double old_matrix[6]; if (vector_font->text_transf) { for (i=0; i<6; i++) old_matrix[i] = vector_font->text_matrix[i]; } else { old_matrix[0] = 1; old_matrix[1] = 0; old_matrix[2] = 0; old_matrix[3] = 0; old_matrix[4] = 1; old_matrix[5] = 0; } if (matrix) { for (i=0; i<6; i++) vector_font->text_matrix[i] = matrix[i]; vector_font->text_transf = 1; } else vector_font->text_transf = 0; return old_matrix; } void cdCanvasGetVectorTextSize(cdCanvas* canvas, const char *s, int *px, int *py) { cdVectorFont* vector_font = canvas->vector_font; if (px) *px = cdRound(vf_primlen(vector_font, s)*vector_font->point_size_x); if (py) *py = cdRound(vector_font->top*vector_font->point_size_y); } void cdCanvasGetVectorTextBounds(cdCanvas* canvas, const char *s, int px, int py, int *rect) { cdVectorFont* vector_font = canvas->vector_font; int prim_len = vf_primlen(vector_font, s); int sx = cdRound(prim_len*vector_font->point_size_x); int sy = cdRound(vector_font->top*vector_font->point_size_y); vf_calc_pos(vector_font, &px, &py, prim_len); vf_move_dir(vector_font, &px, &py, 0, vector_font->bottom*vector_font->point_size_y); vf_calc_point(vector_font, px, py, &rect[0], &rect[1], 0, 0); vf_calc_point(vector_font, px, py, &rect[2], &rect[3], sx, 0); vf_calc_point(vector_font, px, py, &rect[4], &rect[5], sx, sy); vf_calc_point(vector_font, px, py, &rect[6], &rect[7], 0, sy); } void cdCanvasVectorTextSize(cdCanvas* canvas, int size_x, int size_y, const char* s) { cdVectorFont* vector_font = canvas->vector_font; vector_font->point_size_x = size_x/(double)vf_primlen(vector_font, s); vector_font->point_size_y = size_y/(double)vector_font->top; } void cdCanvasVectorText(cdCanvas* canvas, int px, int py, const char* s) { cdVectorFont* vector_font = canvas->vector_font; int prim_len = vf_primlen(vector_font, s); vf_calc_pos(vector_font, &px, &py, prim_len); vf_basic_write(vector_font, s, px, py); } void cdCanvasMultiLineVectorText(cdCanvas* canvas, int px, int py, const char* s) { cdVectorFont* vector_font = canvas->vector_font; double line_height = (vector_font->top - vector_font->bottom + vector_font->line_space) * vector_font->point_size_y; char buff[MULTILINE_MAXLEN]; char *str = buff; int n; int align = cdCanvasTextAlignment(vector_font->canvas, CD_QUERY); /* procura o alinhamento do CD */ if (strlen(s) >= MULTILINE_MAXLEN) return; strcpy(str, s); n = vf_lines(str); if (align == CD_NORTH || align == CD_NORTH_EAST || align == CD_NORTH_WEST) { ; /* Already at position */ } else if (align == CD_SOUTH || align == CD_SOUTH_EAST || align == CD_SOUTH_WEST) { vf_move_dir(vector_font, &px, &py, 0, (n-1)*line_height); } else vf_move_dir(vector_font, &px, &py, 0, ((double)(n-1)/2)*line_height); while (n--) { cdCanvasVectorText(canvas, px, py, str); str += strlen(str)+1; vf_move_dir(vector_font, &px, &py, 0, -line_height); } } char *cdCanvasVectorFont(cdCanvas* canvas, const char *file) { cdVectorFont* vector_font = canvas->vector_font; if (!file) { vf_setdefaultfont(vector_font); vector_font->file_name[0] = 0; } else { FILE *font = NULL; int read_ok; /* se arquivo foi o mesmo que o arq. corrente, entao retorna */ if (strcmp (file, vector_font->file_name) == 0) return vector_font->name; /* abre arq. no dir. corrente */ font = fopen(file, "r"); /* se nao conseguiu, abre arq. no dir. do cd, */ if (!font && (strlen(file) < 10240 - strlen(cd_getCDDIR()))) { char filename[10240]; sprintf(filename, "%s/%s", cd_getCDDIR(), file); font = fopen(filename, "r"); } if (font) read_ok = vf_readfontfile(font, vector_font); else read_ok = vf_readfontstring(file, vector_font); if (!read_ok) { if (font) fclose(font); vf_setdefaultfont(vector_font); vector_font->file_name[0] = 0; return NULL; } /* guarda nome do arquivo que esta' carregado */ if (font) { strcpy(vector_font->file_name, file); fclose(font); } else strcpy(vector_font->file_name, vector_font->name); } return vector_font->name; } /******************************************************/ /* vector text em WC */ /******************************************************/ void wdCanvasVectorTextDirection(cdCanvas* canvas, double x1, double y1, double x2, double y2) { cdVectorFont* vector_font = canvas->vector_font; double dx=x2-x1; double dy=y2-y1; double len = sqrt(dx*dx +dy*dy); vector_font->current_sin = dy/len; vector_font->current_cos = dx/len; } double wdCanvasVectorCharSize(cdCanvas* canvas, double size) { cdVectorFont* vector_font = canvas->vector_font; double old_size = vector_font->point_size_y*vector_font->top; if (size == CD_QUERY) return old_size; vector_font->point_size_y = size/(double)vector_font->top; vector_font->point_size_x = size/(double)vector_font->top; return old_size; } void wdCanvasVectorTextSize(cdCanvas* canvas, double size_x, double size_y, const char* s) { cdVectorFont* vector_font = canvas->vector_font; vector_font->point_size_x = size_x/(double)vf_primlen(vector_font, s); vector_font->point_size_y = size_y/(double)vector_font->top; } void wdCanvasGetVectorTextSize(cdCanvas* canvas, const char *s, double *px, double *py) { cdVectorFont* vector_font = canvas->vector_font; if (px) *px = vf_primlen(vector_font, s)*vector_font->point_size_x; if (py) *py = vector_font->top*vector_font->point_size_y; } void wdCanvasGetVectorTextBounds(cdCanvas* canvas, const char *s, double px, double py, double *rect) { cdVectorFont* vector_font = canvas->vector_font; int prim_len = vf_primlen(vector_font, s); double sx = prim_len*vector_font->point_size_x; double sy = vector_font->top*vector_font->point_size_y; vf_wcalc_pos(vector_font, &px, &py, prim_len); vf_wmove_dir(vector_font, &px, &py, 0, vector_font->bottom*vector_font->point_size_y); vf_wcalc_point(vector_font, px, py, &rect[0], &rect[1], 0, 0); vf_wcalc_point(vector_font, px, py, &rect[2], &rect[3], sx, 0); vf_wcalc_point(vector_font, px, py, &rect[4], &rect[5], sx, sy); vf_wcalc_point(vector_font, px, py, &rect[6], &rect[7], 0, sy); } void wdCanvasVectorText(cdCanvas* canvas, double px, double py, const char* s) { cdVectorFont* vector_font = canvas->vector_font; int prim_len = vf_primlen(vector_font, s); vf_wcalc_pos(vector_font, &px, &py, prim_len); vf_wbasic_write(vector_font, s, px, py); } void wdCanvasMultiLineVectorText(cdCanvas* canvas, double px, double py, const char* s) { cdVectorFont* vector_font = canvas->vector_font; double line_height = (vector_font->top - vector_font->bottom + vector_font->line_space)*vector_font->point_size_y; char buff[MULTILINE_MAXLEN]; char *str = buff; int n; int align = cdCanvasTextAlignment(vector_font->canvas, CD_QUERY); /* procura o alinhamento do CD */ if (strlen(s) >= MULTILINE_MAXLEN) return; strcpy(str, s); n = vf_lines(str); if (align == CD_NORTH || align == CD_NORTH_EAST || align == CD_NORTH_WEST) ; /* Already at position */ else if (align == CD_SOUTH || align == CD_SOUTH_EAST || align == CD_SOUTH_WEST) vf_wmove_dir(vector_font, &px, &py, 0, (n-1)*line_height); else vf_wmove_dir(vector_font, &px, &py, 0, ((double)(n-1)/2)*line_height); while (n--) { wdCanvasVectorText(canvas, px, py, str); str += strlen(str)+1; vf_wmove_dir(vector_font, &px, &py, 0, -line_height); } }