require "custom.cfg.pl";
$map{cmr10} = {
"Main-Regular" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
0x10 => 0x131, 0x11 => 0x237, 0x12 => 0x2CB, 0x13 => 0x2CA, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => [0xB0,-125,0], 0x17 => 0x02DA, 0x18 => 0xB8,
[0x21,0x2F] => 0x21, 0x22 => 0x201D, 0x27 => 0x2019, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, [0x3F,0x40] => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, 0x5C => 0x201C, [0x5D,0x5E] => 0x5D, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x60 => 0x2018, [0x61,0x7A] => 0x61, [0x7B,0x7C] => 0x2013, 0x7B => [0x5F,0,-310], 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, 0x19 => 0xDF, 0x1A => 0xE6, 0x1B => 0x153, 0x1C => 0xF8, 0x1D => 0xC6, 0x1E => 0x152, 0x1F => 0xD8, ],
};
$map{cmmi10} = {
"Math-Italic" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
[0xB,0xE] => 0x3B1, 0xF => 0x3F5, [0x10,0x18] => 0x3B6, [0x19,0x1A] => 0x3C0, [0x1B,0x1D] => 0x3C3, 0x1E => 0x3D5, [0x1F,0x21] => 0x3C7, 0x22 => 0x3B5, 0x23 => 0x3D1, 0x24 => 0x3D6, 0x25 => 0x3F1, 0x26 => 0x3C2, 0x27 => 0x3C6,
[0x41,0x5A] => 0x41, [0x61,0x7A] => 0x61, [0x30,0x39] => 0x30,
0x6F => 0x3BF, 0x7B => 0xE131, 0x7C => 0xE237, ],
"Main-Regular" => [
0x28 => 0x21BC, 0x29 => 0x21BD, 0x2A => 0x21C0, 0x2B => 0x21C1,
0x2E => 0x25B9, 0x2F => 0x25C3,
0x3A => 0x2E, 0x3B => 0x2C, 0x3C => 0x3C, 0x3D => 0x2215, 0x3E => 0x3E, 0x3F => 0x22C6, 0x40 => 0x2202,
[0x5B,0x5D] => 0x266D, 0x5E => 0x2323, 0x5F => 0x2322, 0x60 => 0x2113,
0x7D => 0x2118, 0x7E => [0x20D7,-653,0], ],
};
$map{cmsy10} = {
"Main-Regular" => [
[0,1] => 0x2212, 1 => 0x22C5, 2 => 0xD7, 3 => 0x2217, 4 => 0xF7, 5 => 0x22C4, 6 => 0xB1, 7 => 0x2213, [8,0xC] => 0x2295, 0xD => 0x25EF, [0xE,0xF] => 0x2218,
0x10 => 0x224D, 0x11 => 0x2261, [0x12,0x13] => 0x2286, [0x14,0x15] => 0x2264, [0x16,0x17] => 0x2AAF, 0x18 => 0x223C, 0x19 => 0x2248, [0x1A,0x1B] => 0x2282, [0x1C,0x1D] => 0x226A, [0x1E,0x1F] => 0x227A,
0x20 => 0x2190, 0x21 => 0x2192, 0x22 => 0x2191, 0x23 => 0x2193, 0x24 => 0x2194, 0x25 => 0x2197, 0x26 => 0x2198, 0x27 => 0x2243,
0x28 => 0x21D0, 0x29 => 0x21D2, 0x2A => 0x21D1, 0x2B => 0x21D3, 0x2C => 0x21D4, 0x2D => 0x2196, 0x2E => 0x2199, 0x2F => 0x221D,
0x30 => 0x2032, 0x31 => 0x221E, 0x32 => 0x2208, 0x33 => 0x220B, 0x34 => 0x25B3, 0x35 => 0x25BD, 0x36 => 0xE020,
0x38 => 0x2200, 0x39 => 0x2203, 0x3A => 0xAC, 0x3B => 0x2205, 0x3C => 0x211C, 0x3D => 0x2111, 0x3E => 0x22A4, 0x3F => 0x22A5,
0x40 => 0x2135,
0x5B => 0x222A, 0x5C => 0x2229, 0x5D => 0x228E, [0x5E,0x5F] => 0x2227,
[0x60,0x61] => 0x22A2, [0x62,0x63] => 0x230A, [0x64,0x65] => 0x2308, 0x66 => 0x7B, 0x67 => 0x7D, [0x68,0x69] => 0x27E8, 0x6A => 0x7C, 0x6A => 0x2223, 0x6B => 0x2225, 0x6C => 0x2195, 0x6D => 0x21D5, 0x6E => 0x5C, 0x6E => 0x2216, 0x6F => 0x2240,
0x70 => [0x221A,0,760], 0x71 => 0x2A3F, 0x72 => 0x2207, 0x73 => 0x222B, 0x74 => 0x2294, 0x75 => 0x2293, [0x76,0x77] => 0x2291, 0x78 => 0xA7, [0x79,0x7A] => 0x2020, 0x7B => 0xB6, 0x7C => 0x2663, 0x7D => 0x2662, 0x7E => 0x2661, 0x7F => 0x2660, ],
"Caligraphic" => [
[0x41,0x5A] => 0x41, ],
};
$map{cmex10} = {
"Size1" => [
0 => [0x28,0,810], 1 => [0x29,0,810], 2 => [0x5B,0,810], 3 => [0x5D,0,810], 4 => [0x230A,0,810], 5 => [0x230B,0,810], 6 => [0x2308,0,810], 7 => [0x2309,0,810], 8 => [0x7B,0,810], 9 => [0x7D,0,810], 0xA => [0x27E8,0,810], 0xB => [0x27E9,0,810], 0xC => [0x2223,0,606], 0xD => [0x2225,0,606], 0xE => [0x2F,0,810], 0xF => [0x5C,0,810],
0x46 => [0x2A06,0,750], 0x48 => [0x222E,0,805], 0x4A => [0x2A00,0,750], 0x4C => [0x2A01,0,750], 0x4E => [0x2A02,0,750],
0x50 => [0x2211,0,750], 0x51 => [0x220F,0,750], 0x52 => [0x222B,0,805], 0x53 => [0x22C3,0,750], 0x54 => [0x22C2,0,750], 0x55 => [0x2A04,0,750], 0x56 => [0x22C0,0,750], 0x57 => [0x22C1,0,750],
0x60 => [0x2210,0,750], 0x62 => 0x2C6, 0x62 => [0x302,-556,0], 0x65 => 0x2DC, 0x65 => [0x303,-556,0],
0x70 => [0x221A,0,810], 0x3F => [0x23D0,0,601], 0x77 => [0x2016,0,601], 0x78 => [0x2191,0,600], 0x79 => [0x2193,0,600], 0x7E => [0x21D1,0,600], 0x7F => [0x21D3,0,600], ],
"Size2" => [
0x10 => [0x28,0,1110], 0x11 => [0x29,0,1110], 0x2E => [0x2F,0,1110], 0x2F => [0x5C,0,1110], 0x44 => [0x27E8,0,1110], 0x45 => [0x27E9,0,1110],
0x47 => [0x2A06,0,950], 0x49 => [0x222E,0,1360], 0x4B => [0x2A00,0,950], 0x4D => [0x2A01,0,950], 0x4F => [0x2A02,0,950],
0x58 => [0x2211,0,950], 0x59 => [0x220F,0,950], 0x5A => [0x222B,0,1360], 0x5B => [0x22C3,0,950], 0x5C => [0x22C2,0,950], 0x5D => [0x2A04,0,950], 0x5E => [0x22C0,0,950], 0x5F => [0x22C1,0,950], 0x61 => [0x2210,0,950],
0x63 => 0x2C6, 0x63 => [0x302,-1000,0], 0x66 => 0x2DC, 0x66 => [0x303,-1000,0],
0x68 => [0x5B,0,1110], 0x69 => [0x5D,0,1110], 0x6A => [0x230A,0,1110], 0x6B => [0x230B,0,1110], 0x6C => [0x2308,0,1110], 0x6D => [0x2309,0,1110], 0x6E => [0x7B,0,1110], 0x6F => [0x7D,0,1110], 0x71 => [0x221A,0,1110], ],
"Size3" => [
0x12 => [0x28,0,1410], 0x13 => [0x29,0,1410], 0x14 => [0x5B,0,1410], 0x15 => [0x5D,0,1410], 0x16 => [0x230A,0,1410], 0x17 => [0x230B,0,1410], 0x18 => [0x2308,0,1410], 0x19 => [0x2309,0,1410], 0x1A => [0x7B,0,1410], 0x1B => [0x7D,0,1410], 0x1C => [0x27E8,0,1410], 0x1D => [0x27E9,0,1410], 0x1E => [0x2F,0,1410], 0x1F => [0x5C,0,1410], 0x64 => 0x2C6, 0x64 => [0x302,-1444,0], 0x67 => 0x2DC, 0x67 => [0x303,-1444,0], 0x72 => [0x221A,0,1410], ],
"Size4" => [
0x20 => [0x28,0,1710], 0x21 => [0x29,0,1710], 0x22 => [0x5B,0,1710], 0x23 => [0x5D,0,1710], 0x24 => [0x230A,0,1710], 0x25 => [0x230B,0,1710], 0x26 => [0x2308,0,1710], 0x27 => [0x2309,0,1710], 0x28 => [0x7B,0,1710], 0x29 => [0x7D,0,1710], 0x2A => [0x27E8,0,1710], 0x2B => [0x27E9,0,1710], 0x2C => [0x2F,0,1710], 0x2D => [0x5C,0,1710], 0x73 => [0x221A,0,1710],
0x30 => [0x239B,0,1115], 0x31 => [0x239E,0,1115], 0x32 => [0x23A1,0,1115], 0x33 => [0x23A4,0,1115], 0x34 => [0x23A3,0,1115], 0x35 => [0x23A6,0,1115], 0x36 => [0x23A2,0,601], 0x37 => [0x23A5,0,601], 0x38 => [0x23A7,0,900], 0x39 => [0x23AB,0,900], 0x3A => 0x23A9, 0x3B => 0x23AD, 0x3C => [0x23A8,0,1150], 0x3D => [0x23AC,0,1150], 0x3E => [0x23AA,0,300],
0x40 => [0x239D,0,1115], 0x41 => [0x23A0,0,1115], 0x42 => [0x239C,0,600], 0x43 => [0x239F,0,600],
0x74 => [0x23B7,0,915], 0x75 => [0xE000,0,605], 0x76 => [0xE001,0,565], [0x7A,0x7D] => 0xE150, ],
"Main-Regular" => [
0x38 => [0x23B0,0,900], 0x39 => [0x23B1,0,900], 0x3A => 0x23A9, 0x3B => 0x23AD, ],
};
$map{cmti10} = {
"Main-Italic" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
0x10 => 0x131, 0x11 => 0x237, 0x12 => 0x2CB, 0x13 => 0x2CA, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => [0xB0,-160,0], 0x17 => 0x02DA, 0x18 => 0xB8,
[0x21,0x23] => 0x21, 0x22 => 0x201D, [0x25,0x2F] => 0x25, 0x27 => 0x2019, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, [0x3F,0x40] => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, 0x5C => 0x201C, [0x5D,0x5E] => 0x5D, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x60 => 0x2018, [0x61,0x7A] => 0x61, [0x7B,0x7C] => 0x2013, 0x7B => [0x5F,0,-310], 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, 0x19 => 0xDF, 0x1A => 0xE6, 0x1B => 0x153, 0x1C => 0xF8, 0x1D => 0xC6, 0x1E => 0x152, 0x1F => 0xD8, ],
"Main-Regular" => [
0x24 => 0xA3, ],
};
$map{cmbx10} = {
"Main-Bold" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
0x10 => 0x131, 0x11 => 0x237, 0x12 => 0x2CB, 0x13 => 0x2CA, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => [0xB0,-147,0], 0x17 => 0x02DA, 0x18 => 0xB8,
[0x21,0x2F] => 0x21, 0x22 => 0x201D, 0x27 => 0x2019, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, [0x3F,0x40] => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, 0x5C => 0x201C, [0x5D,0x5E] => 0x5D, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x60 => 0x2018, [0x61,0x7A] => 0x61, [0x7B,0x7C] => 0x2013, 0x7B => [0x5F,0,-310], 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, 0x19 => 0xDF, 0x1A => 0xE6, 0x1B => 0x153, 0x1C => 0xF8, 0x1D => 0xC6, 0x1E => 0x152, 0x1F => 0xD8, ],
};
$map{cmbxti10} = {
"Main-BoldItalic" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
0x10 => 0x131, 0x11 => 0x237, 0x12 => 0x2CB, 0x13 => 0x2CA, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => [0xB0,-160,0], 0x17 => 0x02DA, 0x18 => 0xB8,
[0x21,0x23] => 0x21, 0x22 => 0x201D, [0x25,0x2F] => 0x25, 0x27 => 0x2019, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, [0x3F,0x40] => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, 0x5C => 0x201C, [0x5D,0x5E] => 0x5D, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x60 => 0x2018, [0x61,0x7A] => 0x61, [0x7B,0x7C] => 0x2013, 0x7B => [0x5F,0,-310], 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, 0x19 => 0xDF, 0x1A => 0xE6, 0x1B => 0x153, 0x1C => 0xF8, 0x1D => 0xC6, 0x1E => 0x152, 0x1F => 0xD8, ],
"Main-Bold" => [
0x24 => 0xA3, ],
};
$map{cmmib10} = {
"Math-BoldItalic" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
[0xB,0xE] => 0x3B1, 0xF => 0x3F5, [0x10,0x18] => 0x3B6, [0x19,0x1A] => 0x3C0, [0x1B,0x1D] => 0x3C3, 0x1E => 0x3D5, [0x1F,0x21] => 0x3C7, 0x22 => 0x3B5, 0x23 => 0x3D1, 0x24 => 0x3D6, 0x25 => 0x3F1, 0x26 => 0x3C2, 0x27 => 0x3C6,
[0x30,0x39] => 0x30, [0x41,0x5A] => 0x41, [0x61,0x7A] => 0x61,
0x6F => 0x3BF, 0x7B => 0xE131, 0x7C => 0xE237, ],
"Main-Bold" => [
0x28 => 0x21BC, 0x29 => 0x21BD, 0x2A => 0x21C0, 0x2B => 0x21C1,
0x2E => 0x25B9, 0x2F => 0x25C3,
0x3A => 0x2E, 0x3B => 0x2C, 0x3C => 0x3C, 0x3D => 0x2215, 0x3E => 0x3E, 0x3F => 0x22C6, 0x40 => 0x2202,
[0x5B,0x5D] => 0x266D, 0x5E => 0x2323, 0x5F => 0x2322, 0x60 => 0x2113, 0x68 => 0x210F,
0x7D => 0x2118, 0x7E => [0x20D7,-729,0], ],
};
$map{cmbsy10} = {
"Main-Bold" => [
[0,1] => 0x2212, 1 => 0x22C5, 2 => 0xD7, 3 => 0x2217, 4 => 0xF7, 5 => 0x22C4, 6 => 0xB1, 7 => 0x2213, [8,0xC] => 0x2295, 0xD => 0x25EF, [0xE,0xF] => 0x2218,
0x10 => 0x224D, 0x11 => 0x2261, [0x12,0x13] => 0x2286, [0x14,0x15] => 0x2264, [0x16,0x17] => 0x2AAF, 0x18 => 0x223C, 0x19 => 0x2248, [0x1A,0x1B] => 0x2282, [0x1C,0x1D] => 0x226A, [0x1E,0x1F] => 0x227A,
0x20 => 0x2190, 0x21 => 0x2192, 0x22 => 0x2191, 0x23 => 0x2193, 0x24 => 0x2194, 0x25 => 0x2197, 0x26 => 0x2198, 0x27 => 0x2243,
0x28 => 0x21D0, 0x29 => 0x21D2, 0x2A => 0x21D1, 0x2B => 0x21D3, 0x2C => 0x21D4, 0x2D => 0x2196, 0x2E => 0x2199, 0x2F => 0x221D,
0x30 => 0x2032, 0x31 => 0x221E, 0x32 => 0x2208, 0x33 => 0x220B, 0x34 => 0x25B3, 0x35 => 0x25BD, 0x36 => 0xE020,
0x38 => 0x2200, 0x39 => 0x2203, 0x3A => 0xAC, 0x3B => 0x2205, 0x3C => 0x211C, 0x3D => 0x2111, 0x3E => 0x22A4, 0x3F => 0x22A5,
0x40 => 0x2135,
0x5B => 0x222A, 0x5C => 0x2229, 0x5D => 0x228E, [0x5E,0x5F] => 0x2227,
[0x60,0x61] => 0x22A2, [0x62,0x63] => 0x230A, [0x64,0x65] => 0x2308, 0x66 => 0x7B, 0x67 => 0x7D, [0x68,0x69] => 0x27E8, 0x6A => 0x7C, 0x6A => 0x2223, 0x6B => 0x2225, 0x6C => 0x2195, 0x6D => 0x21D5, 0x6E => 0x5C, 0x6E => 0x2216, 0x6F => 0x2240,
0x70 => [0x221A,0,760], 0x71 => 0x2A3F, 0x72 => 0x2207, 0x73 => 0x222B, 0x74 => 0x2294, 0x75 => 0x2293, [0x76,0x77] => 0x2291,
[0x79,0x7A] => 0x2020,
0x7C => 0x2663, 0x7D => 0x2662, 0x7E => 0x2661, 0x7F => 0x2660, ],
"Caligraphic-Bold" => [
[0x41,0x5A] => 0x41, ],
};
$map{msam10} = {
"Main-Regular" => [
0x5C => 0x2220, ],
"Main-Bold" => [
0x5C => 0x2220, ],
"AMS" => [
0x00 => 0x22A1, 0x01 => 0x229E, 0x02 => 0x22A0, 0x03 => 0x25A1, 0x04 => 0x25A0, 0x05 => 0x22C5, 0x06 => 0x25CA, 0x07 => 0x29EB, 0x08 => 0x21BB, 0x09 => 0x21BA, 0x0A => 0x21CC, 0x0B => 0x21CB, 0x0C => 0x229F, 0x0D => 0x22A9, 0x0E => 0x22AA, 0x0F => 0x22A8, 0x10 => 0x21A0, 0x11 => 0x219E, 0x12 => 0x21C7, 0x13 => 0x21C9, 0x14 => 0x21C8, 0x15 => 0x21CA, 0x16 => 0x21BE, 0x17 => 0x21C2, 0x18 => 0x21BF, 0x19 => 0x21C3, 0x1A => 0x21A3, 0x1B => 0x21A2, 0x1C => 0x21C6, 0x1D => 0x21C4, 0x1E => 0x21B0, 0x1F => 0x21B1, 0x20 => 0x21DD, 0x21 => 0x21AD, 0x22 => 0x21AB, 0x23 => 0x21AC, 0x24 => 0x2257, 0x25 => 0x227F, 0x26 => 0x2273, 0x27 => 0x2A86, 0x28 => 0x22B8, 0x29 => 0x2234, 0x2A => 0x2235, 0x2B => 0x2251, 0x2C => 0x225C, 0x2D => 0x227E, 0x2E => 0x2272, 0x2F => 0x2A85, 0x30 => 0x2A95, 0x31 => 0x2A96, 0x32 => 0x22DE, 0x33 => 0x22DF, 0x34 => 0x227C, 0x35 => 0x2266, 0x36 => 0x2A7D, 0x37 => 0x2276, 0x38 => 0x2035, 0x39 => 0x2212, 0x3A => 0x2253, 0x3B => 0x2252, 0x3C => 0x227D, 0x3D => 0x2267, 0x3E => 0x2A7E, 0x3F => 0x2277, 0x40 => 0x228F, 0x41 => 0x2290, 0x42 => 0x22B3, 0x43 => 0x22B2, 0x44 => 0x22B5, 0x45 => 0x22B4, 0x46 => 0x2605, 0x47 => 0x226C, 0x48 => 0x25BC, 0x49 => 0x25B6, 0x4A => 0x25C0, 0x4B => 0x2192, 0x4C => 0x2190, 0x4D => 0x25B3, 0x4E => 0x25B2, 0x4F => 0x25BD, 0x50 => 0x2256, 0x51 => 0x22DA, 0x52 => 0x22DB, 0x53 => 0x2A8B, 0x54 => 0x2A8C, 0x55 => 0x00A5, 0x56 => 0x21DB, 0x57 => 0x21DA, 0x58 => 0x2713, 0x59 => 0x22BB, 0x5A => 0x22BC, 0x5B => 0x2A5E, 0x5C => 0x2220, 0x5D => 0x2221, 0x5E => 0x2222, 0x5F => 0x221D, 0x60 => 0x2323, 0x61 => 0x2322, 0x62 => 0x22D0, 0x63 => 0x22D1, 0x64 => 0x22D3, 0x65 => 0x22D2, 0x66 => 0x22CF, 0x67 => 0x22CE, 0x68 => 0x22CB, 0x69 => 0x22CC, 0x6A => 0x2AC5, 0x6B => 0x2AC6, 0x6C => 0x224F, 0x6D => 0x224E, 0x6E => 0x22D8, 0x6F => 0x22D9, 0x70 => 0x250C, 0x71 => 0x2510, 0x72 => 0x00AE, 0x73 => 0x24C8, 0x74 => 0x22D4, 0x75 => 0x2214, 0x76 => 0x223D, 0x77 => 0x22CD, 0x78 => 0x2514, 0x79 => 0x2518, 0x7A => 0x2720, 0x7B => 0x2201, 0x7C => 0x22BA, 0x7D => 0x229A, 0x7E => 0x229B, 0x7F => 0x229D, ],
};
$map{msbm10} = {
"Size4" => [
0x5B => 0x2C6, 0x5B => [0x302,-1889,0], 0x5D => 0x2DC, 0x5D => [0x303,-1889,0], ],
"Main-Regular" => [
0x7E => 0x210F, ],
"Main-Italic" => [
0x7D => 0x210F, ],
"AMS" => [
0x00 => 0xE00C, 0x01 => 0xE00D, 0x02 => 0x2270, 0x03 => 0x2271, 0x04 => 0x226E, 0x05 => 0x226F, 0x06 => 0x2280, 0x07 => 0x2281, 0x08 => 0x2268, 0x09 => 0x2269, 0x0A => 0xE010, 0x0B => 0xE00F, 0x0C => 0x2A87, 0x0D => 0x2A88, 0x0E => 0x22E0, 0x0F => 0x22E1, 0x10 => 0x22E8, 0x11 => 0x22E9, 0x12 => 0x22E6, 0x13 => 0x22E7, 0x14 => 0xE011, 0x15 => 0xE00E, 0x16 => 0x2AB5, 0x17 => 0x2AB6, 0x18 => 0x2AB9, 0x19 => 0x2ABA, 0x1A => 0x2A89, 0x1B => 0x2A8A, 0x1C => 0x2241, 0x1D => 0x2246, 0x1E => 0x2571, 0x1F => 0x2572, 0x20 => 0xE01A, 0x21 => 0xE01B, 0x22 => 0xE016, 0x23 => 0xE018, 0x24 => 0x2ACB, 0x25 => 0x2ACC, 0x26 => 0xE017, 0x27 => 0xE019, 0x28 => 0x228A, 0x29 => 0x228B, 0x2A => 0x2288, 0x2B => 0x2289, 0x2C => 0x2226, 0x2D => 0x2224, 0x2E => 0xE006, 0x2F => 0xE007, 0x30 => 0x22AC, 0x31 => 0x22AE, 0x32 => 0x22AD, 0x33 => 0x22AF, 0x34 => 0x22ED, 0x35 => 0x22EC, 0x36 => 0x22EA, 0x37 => 0x22EB, 0x38 => 0x219A, 0x39 => 0x219B, 0x3A => 0x21CD, 0x3B => 0x21CF, 0x3C => 0x21CE, 0x3D => 0x21AE, 0x3E => 0x22C7, 0x3F => 0x2205, 0x40 => 0x2204,
[0x41,0x5A] => 0x41, 0x5C => 0x2C6, 0x5C => [0x302,-2333,0], 0x5E => 0x2DC, 0x5E => [0x303,-2333,0],
0x60 => 0x2132, 0x61 => 0x2141, 0x66 => 0x2127, 0x67 => 0x00F0, 0x68 => 0x2242, 0x69 => 0x2136, 0x6A => 0x2137, 0x6B => 0x2138, 0x6C => 0x22D6, 0x6D => 0x22D7, 0x6E => 0x22C9, 0x6F => 0x22CA, 0x70 => 0x2223, 0x71 => 0x2225, 0x72 => 0x2216, 0x73 => 0x223C, 0x74 => 0x2248, 0x75 => 0x224A, 0x76 => 0x2AB8, 0x77 => 0x2AB7, 0x78 => 0x21B6, 0x79 => 0x21B7, 0x7A => 0x03DD, 0x7B => 0x03F0, 0x7A => 0xE008, 0x7B => 0xE009, 0x7C => 0x006B, 0x7D => 0x210F, 0x7E => 0x0127, 0x7F => 0x220D, ],
};
$map{cmss10} = {
"SansSerif-Regular" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
0x10 => 0x131, 0x11 => 0x237, 0x12 => 0x2CB, 0x13 => 0x2CA, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => [0xB0,-142,0], 0x17 => 0x02DA, 0x18 => 0xB8,
[0x21,0x2F] => 0x21, 0x22 => 0x201D, 0x27 => 0x2019, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, [0x3F,0x40] => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, 0x5C => 0x201C, [0x5D,0x5E] => 0x5D, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x60 => 0x2018, [0x61,0x7A] => 0x61, [0x7B,0x7C] => 0x2013, 0x7B => [0x5F,0,-350], 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, ],
};
$map{cmssi10} = {
"SansSerif-Italic" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
0x10 => 0x131, 0x11 => 0x237, 0x12 => 0x2CB, 0x13 => 0x2CA, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => [0xB0,-113,0], 0x17 => 0x02DA, 0x18 => 0xB8,
[0x21,0x2F] => 0x21, 0x22 => 0x201D, 0x27 => 0x2019, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, [0x3F,0x40] => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, 0x5C => 0x201C, [0x5D,0x5E] => 0x5D, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x60 => 0x2018, [0x61,0x7A] => 0x61, [0x7B,0x7C] => 0x2013, 0x7B => [0x5F,0,-350], 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, ],
};
$map{cmssbx10} = {
"SansSerif-Bold" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8,
0x10 => 0x131, 0x11 => 0x237, 0x13 => 0xB4, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => [0xB0,-58,0], 0x17 => 0x02DA, 0x18 => 0xB8,
[0x21,0x2F] => 0x21, 0x22 => 0x201D, 0x27 => 0x2019, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, [0x3F,0x40] => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, 0x5C => 0x201C, [0x5D,0x5E] => 0x5D, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x60 => 0x2018, [0x61,0x7A] => 0x61, [0x7B,0x7C] => 0x2013, 0x7B => [0x5F,0,-350], 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, ],
};
$map{eufm10} = {
"Fraktur-Regular" => [
[0,7] => 0xE300, 0x12 => 0x2018, 0x13 => 0x2019, 0x21 => 0x21, [0x26,0x2F] => 0x26, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, 0x3F => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, [0x5D,0x5E] => 0x5D, [0x61,0x7A] => 0x61, 0x7D => 0x22, ],
};
$map{eufb10} = {
"Fraktur-Bold" => [
[1,5] => 0xE301, [8,9] => 0xE308, 0x12 => 0x2018, 0x13 => 0x2019, 0x21 => 0x21, [0x26,0x2F] => 0x26, [0x30,0x39] => 0x30, [0x3A,0x3B] => 0x3A, 0x3D => 0x3D, 0x3F => 0x3F, [0x41,0x5A] => 0x41, 0x5B => 0x5B, [0x5D,0x5E] => 0x5D, [0x61,0x7A] => 0x61, 0x7D => 0x22, ],
};
$map{rsfs10} = {
"Script-Regular" => [
[0x41,0x5A] => 0x41, ]
};
$map{cmtt10} = {
"Typewriter" => [
[0,1] => 0x393, 2 => 0x398, 3 => 0x39B, 4 => 0x39E, 5 => 0x3A0, 6 => 0x3A3, [7,8] => 0x3A5, [9,0xA] => 0x3A8, 0xD => 0x2032,
0x10 => 0x131, 0x11 => 0x237, 0x12 => 0x2CB, 0x13 => 0x2CA, 0x14 => 0x2C7, 0x15 => 0x2D8, 0x16 => 0x2C9, 0x17 => 0xB0, 0x17 => 0x02DA, 0x18 => 0xB8, 0x20 => 0x2423,
[0x21,0x7F] => 0x21,
0x60 => 0x2018, 0x27 => 0x2019, 0x5E => 0x2C6, 0x5F => 0x2D9, 0x7D => 0x2DD, 0x7E => [0x7E,0,-350], 0x7E => 0x2DC, 0x7F => 0xA8, ]
};
$extra{'Main-Regular'} = {
cdots => [
'Select(0u22C5)','Copy()',
'Select(0u22EF)','Paste()',
'PasteWithOffset(447,0)',
'PasteWithOffset(894,0)',
'SetRBearing(894,1)',
],
ldots => [
'Select(0u2E)','Copy()',
'Select(0u2026)','Paste()',
'PasteWithOffset(447,0)',
'PasteWithOffset(894,0)',
'SetRBearing(894,1)',
],
vdots => [
'Select(0u2E)','Copy()',
'Select(0u22EE)','Clear()',
'PasteWithOffset(0,-30)',
'PasteWithOffset(0,380)',
'PasteWithOffset(0,780)',
'SetRBearing(-722,1)',
],
ddots => [
'Select(0u2E)','Copy()',
'Select(0u22F1)','Clear()',
'PasteWithOffset(55,700)',
'PasteWithOffset(502,400)',
'PasteWithOffset(949,100)',
'SetRBearing(282,1)',
],
spaceEn => [
'Select(0u2002)',
'SetRBearing(500)',
],
spaceEm => [
'Select(0u2003)',
'SetRBearing(999)',
],
space3 => [
'Select(0u2004)',
'SetRBearing(333)',
],
space4 => [
'Select(0u2005)',
'SetRBearing(250)',
],
space6 => [
'Select(0u2006)',
'SetRBearing(167)',
],
thinspace => [
'Select(0u2009)',
'SetRBearing(167)',
],
hairspace => [
'Select(0u200A)',
'SetRBearing(83)',
],
cong => [
'Select(0u223C)','Copy()',
'Select(0u2245)','Clear()',
'PasteWithOffset(0,222)',
'Select(0u3D)','Copy()',
'Select(0u2245)',
'PasteWithOffset(0,-111)',
'SetWidth(778)',
],
bowtie => [
'Select(0u25B9)','Copy()',
'Select(0u22C8)','Paste()',
'Select(0u25C3)','Copy()',
'Select(0u22C8)',
'PasteWithOffset(400,0)',
'SetRBearing(400,1)',
'RemoveOverlap()',
],
models => [
'Select(0u2223)','Copy()',
'Select(0u22A8)','Paste()',
'Select(0u3D)','Copy()',
'Select(0u22A8)',
'PasteWithOffset(89,0)',
'SetRBearing(589,1)',
'RemoveOverlap()',
],
doteq => [
'Select(0u3D)','Copy()',
'Select(0u2250)','Paste()',
'Select(0u2E)','Copy()',
'Select(0u2250)',
'PasteWithOffset(251,550)',
],
not => [
'Select(0uE020)',
'SetRBearing(778,1)',
],
longleftarrow => [
'Select(0u2190)','Copy()',
'Select(0u27F5)','Paste()',
'Select(0u2212)','Copy()',
'Select(0u27F5)',
'PasteWithOffset(831,0)',
'SetRBearing(609,1)',
'RemoveOverlap()','Simplify()',
],
Longleftarrow => [
'Select(0u21D0)','Copy()',
'Select(0u27F8)','Paste()',
'Select(0u3D)','Copy()',
'Select(0u27F8)',
'PasteWithOffset(831,0)',
'SetRBearing(609,1)',
'RemoveOverlap()','Simplify()',
],
longrightarrow => [
'Select(0u2212)','Copy()',
'Select(0u27F6)','Paste()',
'Select(0u2192)','Copy()',
'Select(0u27F6)',
'PasteWithOffset(609,0)',
'SetRBearing(860,1)',
'RemoveOverlap()','Simplify()',
],
Longrightarrow => [
'Select(0u3D)','Copy()',
'Select(0u27F9)','Paste()',
'Select(0u21D2)','Copy()',
'Select(0u27F9)',
'PasteWithOffset(638,0)',
'SetRBearing(860,1)',
'RemoveOverlap()','Simplify()',
],
leftrightarrow => [
'Select(0u2190)','Copy()',
'Select(0u27F7)','Paste()',
'Select(0u2192)','Copy()',
'Select(0u27F7)',
'PasteWithOffset(859,0)',
'SetRBearing(859,1)',
'RemoveOverlap()','Simplify()',
],
Leftrightarrow => [
'Select(0u21D0)','Copy()',
'Select(0u27FA)','Paste()',
'Select(0u21D2)','Copy()',
'Select(0u27FA)',
'PasteWithOffset(858,0)',
'SetRBearing(858,1)',
'RemoveOverlap()','Simplify()',
],
mapsto => [
'Select(0u2192)','Copy()',
'Select(0u21A6)','Paste()',
'Generate("otf/KaTeX_Main-Regular.otf")',
'Open("pfa/cmsy10.pfa")',
'Select(0x37)','Copy()',
'Open("otf/KaTeX_Main-Regular.otf")',
'Select(0u21A6)',
'PasteWithOffset(0,0)',
'RemoveOverlap()','Simplify()',
],
xlongmapsto => [
'Select(0u27F6)','Copy()',
'Select(0u27FC)','Paste()',
'Generate("otf/KaTeX_Main-Regular.otf")',
'Open("pfa/cmsy10.pfa")',
'Select(0x37)','Copy()',
'Open("otf/KaTeX_Main-Regular.otf")',
'Select(0u27FC)',
'PasteWithOffset(0,0)',
'RemoveOverlap()','Simplify()',
],
hookleftarrow => [
'Select(0u2190)','Copy()',
'Select(0u21A9)','Paste()',
'Generate("otf/KaTeX_Main-Regular.otf")',
'Open("pfa/cmmi10.pfa")',
'Select(0x2D)','Copy()',
'Open("otf/KaTeX_Main-Regular.otf")',
'Select(0u21A9)',
'PasteWithOffset(848,0)',
'SetRBearing(126,1)',
'RemoveOverlap()','Simplify()',
],
hookrightarrow => [
'Generate("otf/KaTeX_Main-Regular.otf")',
'Open("pfa/cmmi10.pfa")',
'Select(0x2C)','Copy()',
'Open("otf/KaTeX_Main-Regular.otf")',
'Select(0u21AA)','Paste()',
'Select(0u2192)','Copy()',
'Select(0u21AA)',
'PasteWithOffset(126,0)',
'SetRBearing(848,1)',
'RemoveOverlap()','Simplify()',
],
rightleftharpoons => [
'Select(0u21BD)','Copy()',
'Select(0u21CC)','Paste()',
'Select(0u21C0)','Copy()',
'Select(0u21CC)',
'PasteWithOffset(0,160)',
'RemoveOverlap()','Simplify()',
],
lgroup => [
'Select(0u23B0)','Copy()',
'Select(0u27EE)','Paste()',
'Select(0u23A9)','Copy()',
'Select(0u27EE)',
'PasteWithOffset(0,0)',
'Scale(55,0,0)','RoundToInt()','Move(-38,250)',
'RemoveOverlap()','Simplify()',
'SetRBearing(-38,1)',
],
rgroup => [
'Select(0u23B1)','Copy()',
'Select(0u27EF)','Paste()',
'Select(0u23AD)','Copy()',
'Select(0u27EF)',
'PasteWithOffset(1,0)',
'Scale(55,0,0)','RoundToInt()','Move(-38,250)',
'RemoveOverlap()','Simplify()',
'SetRBearing(-38,1)',
],
lmoustache => [
'Select(0u23AD)','Copy()',
'Select(0u23B0)',
'PasteWithOffset(0,0)',
'Scale(55,0,0)','RoundToInt()','Move(-38,250)',
'RemoveOverlap()','Simplify()',
'SetRBearing(-38,1)',
],
rmoustache => [
'Select(0u23A9)','Copy()',
'Select(0u23B1)',
'PasteWithOffset(0,0)',
'Scale(55,0,0)','RoundToInt()','Move(-38,250)',
'RemoveOverlap()','Simplify()',
'SetRBearing(-38,1)',
],
diacriticals => [
'Select(0uB0)', 'SetRBearing(-125,1)', 'Select(0u20D7)','SetRBearing(153,1)', ],
};
$extra{'Main-Bold'} = {
cdots => [
'Select(0u22C5)','Copy()',
'Select(0u22EF)','Paste()',
'PasteWithOffset(488,0)',
'PasteWithOffset(976,0)',
'SetRBearing(976,1)',
],
ldots => [
'Select(0u2E)','Copy()',
'Select(0u2026)','Paste()',
'PasteWithOffset(488,0)',
'PasteWithOffset(976,0)',
'SetRBearing(976,1)',
],
vdots => [
'Select(0u2E)','Copy()',
'Select(0u22EE)','Clear()',
'PasteWithOffset(0,-30)',
'PasteWithOffset(0,380)',
'PasteWithOffset(0,780)',
'SetRBearing(-681,1)',
],
ddots => [
'Select(0u2E)','Copy()',
'Select(0u22F1)','Clear()',
'PasteWithOffset(55,700)',
'PasteWithOffset(502,400)',
'PasteWithOffset(949,100)',
'SetRBearing(323,1)',
],
spaceEn => [
'Select(0u2002)',
'SetRBearing(500)',
],
spaceEm => [
'Select(0u2003)',
'SetRBearing(999)',
],
space3 => [
'Select(0u2004)',
'SetRBearing(333)',
],
space4 => [
'Select(0u2005)',
'SetRBearing(250)',
],
space6 => [
'Select(0u2006)',
'SetRBearing(167)',
],
thinspace => [
'Select(0u2009)',
'SetRBearing(167)',
],
hairspace => [
'Select(0u200A)',
'SetRBearing(83)',
],
cong => [
'Select(0u223C)','Copy()',
'Select(0u2245)','Clear()',
'PasteWithOffset(0,247)',
'Select(0u3D)','Copy()',
'Select(0u2245)',
'PasteWithOffset(0,-136)',
'SetWidth(894)',
],
bowtie => [
'Select(0u25B9)','Copy()',
'Select(0u22C8)','Paste()',
'Select(0u25C3)','Copy()',
'Select(0u22C8)',
'PasteWithOffset(425,0)',
'SetRBearing(425,1)',
'RemoveOverlap()',
],
models => [
'Select(0u2223)','Copy()',
'Select(0u22A8)','Paste()',
'Select(0u3D)','Copy()',
'Select(0u22A8)',
'PasteWithOffset(89,0)',
'SetRBearing(655,1)',
'RemoveOverlap()',
],
doteq => [
'Select(0u3D)','Copy()',
'Select(0u2250)','Paste()',
'Select(0u2E)','Copy()',
'Select(0u2250)',
'PasteWithOffset(288,550)',
],
not => [
'Select(0uE020)',
'SetRBearing(894,1)',
],
longleftarrow => [
'Select(0u2190)','Copy()',
'Select(0u27F5)','Paste()',
'Select(0u2212)','Copy()',
'Select(0u27F5)',
'PasteWithOffset(944,0)',
'SetRBearing(655,1)',
'RemoveOverlap()','Simplify()',
],
Longleftarrow => [
'Select(0u21D0)','Copy()',
'Select(0u27F8)','Paste()',
'Select(0u3D)','Copy()',
'Select(0u27F8)',
'PasteWithOffset(975,0)',
'SetRBearing(718,1)',
'RemoveOverlap()','Simplify()',
],
longrightarrow => [
'Select(0u2212)','Copy()',
'Select(0u27F6)','Paste()',
'Select(0u2192)','Copy()',
'Select(0u27F6)',
'PasteWithOffset(688,0)',
'SetRBearing(939,1)',
'RemoveOverlap()','Simplify()',
],
Longrightarrow => [
'Select(0u3D)','Copy()',
'Select(0u27F9)','Paste()',
'Select(0u21D2)','Copy()',
'Select(0u27F9)',
'PasteWithOffset(720,0)',
'SetRBearing(976,1)',
'RemoveOverlap()','Simplify()',
],
leftrightarrow => [
'Select(0u2190)','Copy()',
'Select(0u27F7)','Paste()',
'Select(0u2192)','Copy()',
'Select(0u27F7)',
'PasteWithOffset(976,0)',
'SetRBearing(976,1)',
'RemoveOverlap()','Simplify()',
],
Leftrightarrow => [
'Select(0u21D0)','Copy()',
'Select(0u27FA)','Paste()',
'Select(0u21D2)','Copy()',
'Select(0u27FA)',
'PasteWithOffset(976,0)',
'SetRBearing(976,1)',
'RemoveOverlap()','Simplify()',
],
mapsto => [
'Select(0u2192)','Copy()',
'Select(0u21A6)','Paste()',
'Generate("otf/KaTeX_Main-Bold.otf")',
'Open("pfa/cmbsy10.pfa")',
'Select(0x37)','Copy()',
'Open("otf/KaTeX_Main-Bold.otf")',
'Select(0u21A6)',
'PasteWithOffset(0,0)',
'RemoveOverlap()','Simplify()',
],
xlongmapsto => [
'Select(0u27F6)','Copy()',
'Select(0u27FC)','Paste()',
'Generate("otf/KaTeX_Main-Bold.otf")',
'Open("pfa/cmbsy10.pfa")',
'Select(0x37)','Copy()',
'Open("otf/KaTeX_Main-Bold.otf")',
'Select(0u27FC)',
'PasteWithOffset(0,0)',
'RemoveOverlap()','Simplify()',
],
hookleftarrow => [
'Select(0u2190)','Copy()',
'Select(0u21A9)','Paste()',
'Generate("otf/KaTeX_Main-Bold.otf")',
'Open("pfa/cmmib10.pfa")',
'Select(0x2D)','Copy()',
'Open("otf/KaTeX_Main-Bold.otf")',
'Select(0u21A9)',
'PasteWithOffset(965,0)',
'SetRBearing(132,1)',
'RemoveOverlap()','Simplify()',
],
hookrightarrow => [
'Generate("otf/KaTeX_Main-Bold.otf")',
'Open("pfa/cmmib10.pfa")',
'Select(0x2C)','Copy()',
'Open("otf/KaTeX_Main-Bold.otf")',
'Select(0u21AA)','Paste()',
'Select(0u2192)','Copy()',
'Select(0u21AA)',
'PasteWithOffset(132,0)',
'SetRBearing(963,1)',
'RemoveOverlap()','Simplify()',
],
rightleftharpoons => [
'Select(0u21BD)','Copy()',
'Select(0u21CC)','Paste()',
'Select(0u21C0)','Copy()',
'Select(0u21CC)',
'PasteWithOffset(0,200)',
'RemoveOverlap()','Simplify()',
],
hbar => [
'Select(0u2C9)','Copy()',
'Select(0u210F)','PasteWithOffset(0,0)',
'RemoveOverlap()','Simplify()',
],
angle => [
'Select(0u2220)','Copy()',
'PasteWithOffset(0,10)',
'PasteWithOffset(0,20)',
'RemoveOverlap()','Simplify()',
'PasteWithOffset(10,0)',
'RemoveOverlap()','Simplify()',
],
diacriticals => [
'Select(0uB0)', 'SetRBearing(-147,1)', 'Select(0u20D7)','SetRBearing(154,1)', ],
};
$extra{'Main-Italic'} = {
diacriticals => [
'Select(0uB0)', 'SetRBearing(-160,1)', ],
};
$extra{'Size1'} = {
iint => [
'Select(0u222B)', 'Copy()',
'Select(0u222C)', 'Paste()',
'PasteWithOffset(347,0)',
'SetRBearing(347,1)',
],
iiint => [
'Select(0u222B)', 'Copy()',
'Select(0u222D)', 'Paste()',
'PasteWithOffset(347,0)',
'PasteWithOffset(694,0)',
'SetRBearing(694,1)',
],
};
$extra{'Size2'} = {
iint => [
'Select(0u222B)', 'Copy()',
'Select(0u222C)', 'Paste()',
'PasteWithOffset(528,0)',
'SetRBearing(528,1)',
],
iiint => [
'Select(0u222B)', 'Copy()',
'Select(0u222D)', 'Paste()',
'PasteWithOffset(528,0)',
'PasteWithOffset(1036,0)',
'SetRBearing(1036,1)',
],
};
$extra{'Size4'} = {
braceext => [
'Open("lib/Extra.otf")',
'Select(0u5F)','Copy()',
'Open("otf/KaTeX_Size4-Regular.otf")',
'Select(0uE154)','Paste()',
],
};
$extra{"AMS"} = {
dashleftarrow => [
'Select(0u2190)', 'Copy()',
'Select(0u21E0)', 'Paste()',
'Select(0u2212)','Copy()',
'Select(0u21E0)',
'PasteWithOffset(417,0)',
'PasteWithOffset(834,0)',
'SetRBearing(834,1)',
],
dashrightarrow => [
'Select(0u2212)', 'Copy()',
'Select(0u21E2)', 'Paste()',
'PasteWithOffset(417,0)',
'Select(0u2192)','Copy()',
'Select(0u21E2)','PasteWithOffset(834,0)',
'SetRBearing(834,1)',
],
};
$extra{'Typewriter'} = {
space => [
'Select(0u20)','Clear()',
'SetRBearing(525)',
],
spaceNB => [
'Select(0uA0)','Clear()',
'SetRBearing(525)',
],
};
$extra{"SansSerif-Regular"} = {
diacriticals => [
'Select(0uB0)', 'SetRBearing(-142,1)', ],
};
$extra{"SansSerif-Italic"} = {
diacriticals => [
'Select(0uB0)', 'SetRBearing(-113,1)', ],
};
$extra{"SansSerif-Bold"} = {
diacriticals => [
'Select(0uB0)', 'SetRBearing(-58,1)', ],
};
foreach $cmfont (sort (keys %map)) {
print "Reading $cmfont...\n";
foreach $mjfont (keys %{$map{$cmfont}}) {
$fontname = "KaTeX_$mjfont";
$style = $fontname; $style =~ s/.*?(-|$)//; $style = "Regular" unless $style;
$normal = "Normal"; $normal = "Bold" if style =~ m/Bold/;
$family = $fontname; $family =~ s/-.*//;
$fontname = "$family-$style";
$STYLE = $style; $STYLE = "Bold Italic" if $STYLE eq "BoldItalic";
$otf = "otf/$fontname.otf";
unless (defined($script{$mjfont})) {
open(SPACE,"lib/Space.ttx"); $lines = join("",<SPACE>); close(SPACE);
$lines =~ s/\*NAME\*/$family/g; $lines =~ s/\*WEIGHT\*/$style/g;
$lines =~ s/\*WEIGHT_S\*/$STYLE/g; $lines =~ s/\*NORMAL\*/$normal/g;
if ($style eq "Regular") {$lines =~ s/\* WEIGHT\*//g} else {$lines =~ s/\* WEIGHT\*/ $STYLE/g}
open(SPACE,">Space.ttx"); print SPACE $lines; close(SPACE);
`$TTX -f Space.ttx; mv Space.otf '$otf'`; unlink("Space.ttx");
$script{$mjfont} = [
'Open("'.$otf.'")',
'SetPanose([0,0,'.($style eq 'Bold' ? '8' : '0').',0,0,0,0,0,0,0])',
'SetOS2Value("Weight",'.($style =~ m/Bold/ ? 700 : 400).')',
'SetGasp(8,2,16,1,65535,3)',
'Reencode("unicode")',
'Generate("'.$otf.'")',
];
}
$script = $script{$mjfont};
@remap = @{$map{$cmfont}{$mjfont}};
while (defined($item = shift(@remap))) {
$remap = shift(@remap);
if ($cmfont =~ /^eu/) {
push(@$script,'Open("pfa/'.$cmfont.'.pfb")');
} else {
push(@$script,'Open("pfa/'.$cmfont.'.pfa")');
}
if (ref($item) eq "ARRAY") {
push(@$script,'Select('.sprintf("%d,%d",@$item).')');
} else {
push(@$script,'Select('.$item.')');
}
push(@$script,"Copy()",'Open("'.$otf.'")');
if (ref($item) eq "ARRAY") {
push(@$script,
'Select('.sprintf("0u%04x,0u%04x",$remap,$remap+($item->[1]-$item->[0])).')',
'Paste()',
);
} elsif (ref($remap) eq "ARRAY") {
push(@$script,
'Select('.sprintf("0u%04x",$remap->[0]).')',
'Paste()',
'Move('.$remap->[1].','.$remap->[2].')',
);
} else {
push(@$script,'Select('.sprintf("0u%04x",$remap).')','Paste()');
}
push(@$script,'Generate("'.$otf.'")');
}
}
}
print "\n";
foreach $font (keys %extra) {
foreach $char (sort(keys %{$extra{$font}})) {
push(@{$script{$font}},join(";\n",@{$extra{$font}{$char}}),"");
}
}
push(@{$script{'Main-Regular'}},
'Select(0u23A9)',
'Clear()',
'Select(0u23AD)',
'Clear()',
);
foreach $font (sort keys %script) {
$family = $font; $family .= "-Regular" unless $family =~ m/-/;
print "KaTeX_$font\n";
open(SCRIPT,">","ff/KaTeX_$family.ff");
print SCRIPT join(";\n",@{$script{$font}},"",
'SelectAll()','RoundToInt()',
'Simplify()','AddExtrema()','Simplify()',
'ClearHints()','AutoHint()','RoundToInt()',
'Generate("otf/KaTeX_'.$family.'.otf")',
'SelectAll()','AutoInstr()',
'Generate("ttf/KaTeX_'.$family.'.ttf")'),"\n";
close(SCRIPT);
}
1;