1/* 2 * Copyright (c) 2014 Kurt Jung (Gmail: kurt.w.jung) 3 * 4 * Permission to use, copy, modify, and distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17package gofpdf 18 19// Embedded standard fonts 20 21import ( 22 "strings" 23) 24 25var embeddedFontList = map[string]string{ 26 "courierBI": `{"Tp":"Core","Name":"Courier-BoldOblique","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, 27 "courierB": `{"Tp":"Core","Name":"Courier-Bold","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, 28 "courierI": `{"Tp":"Core","Name":"Courier-Oblique","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, 29 "courier": `{"Tp":"Core","Name":"Courier","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, 30 "helveticaBI": `{"Tp":"Core","Name":"Helvetica-BoldOblique","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,350,556,350,278,556,500,1000,556,556,333,1000,667,333,1000,350,611,350,350,278,278,500,500,350,556,1000,333,1000,556,333,944,350,500,667,278,333,556,556,556,556,280,556,333,737,370,556,584,333,737,333,400,584,333,333,333,611,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,584,611,611,611,611,611,556,611,556]}`, 31 "helveticaB": `{"Tp":"Core","Name":"Helvetica-Bold","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,350,556,350,278,556,500,1000,556,556,333,1000,667,333,1000,350,611,350,350,278,278,500,500,350,556,1000,333,1000,556,333,944,350,500,667,278,333,556,556,556,556,280,556,333,737,370,556,584,333,737,333,400,584,333,333,333,611,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,584,611,611,611,611,611,556,611,556]}`, 32 "helveticaI": `{"Tp":"Core","Name":"Helvetica-Oblique","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,350,556,350,222,556,333,1000,556,556,333,1000,667,333,1000,350,611,350,350,222,222,333,333,350,556,1000,333,1000,500,333,944,350,500,667,278,333,556,556,556,556,260,556,333,737,370,556,584,333,737,333,400,584,333,333,333,556,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,584,611,556,556,556,556,500,556,500]}`, 33 "helvetica": `{"Tp":"Core","Name":"Helvetica","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,350,556,350,222,556,333,1000,556,556,333,1000,667,333,1000,350,611,350,350,222,222,333,333,350,556,1000,333,1000,500,333,944,350,500,667,278,333,556,556,556,556,260,556,333,737,370,556,584,333,737,333,400,584,333,333,333,556,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,584,611,556,556,556,556,500,556,500]}`, 34 "timesBI": `{"Tp":"Core","Name":"Times-BoldItalic","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,389,555,500,500,833,778,278,333,333,500,570,250,333,250,278,500,500,500,500,500,500,500,500,500,500,333,333,570,570,570,500,832,667,667,667,722,667,667,722,778,389,500,667,611,889,722,722,611,722,667,556,611,722,667,889,667,611,611,333,278,333,570,500,333,500,500,444,500,444,333,500,556,278,278,500,278,778,556,500,500,500,389,389,278,556,444,667,500,444,389,348,220,348,570,350,500,350,333,500,500,1000,500,500,333,1000,556,333,944,350,611,350,350,333,333,500,500,350,500,1000,333,1000,389,333,722,350,389,611,250,389,500,500,500,500,220,500,333,747,266,500,606,333,747,333,400,570,300,300,333,576,500,250,333,300,300,500,750,750,750,500,667,667,667,667,667,667,944,667,667,667,667,667,389,389,389,389,722,722,722,722,722,722,722,570,722,722,722,722,722,611,611,500,500,500,500,500,500,500,722,444,444,444,444,444,278,278,278,278,500,556,500,500,500,500,500,570,500,556,556,556,556,444,500,444]}`, 35 "timesB": `{"Tp":"Core","Name":"Times-Bold","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,333,555,500,500,1000,833,278,333,333,500,570,250,333,250,278,500,500,500,500,500,500,500,500,500,500,333,333,570,570,570,500,930,722,667,722,722,667,611,778,778,389,500,778,667,944,722,778,611,778,722,556,667,722,722,1000,722,722,667,333,278,333,581,500,333,500,556,444,556,444,333,500,556,278,333,556,278,833,556,500,556,556,444,389,333,556,500,722,500,500,444,394,220,394,520,350,500,350,333,500,500,1000,500,500,333,1000,556,333,1000,350,667,350,350,333,333,500,500,350,500,1000,333,1000,389,333,722,350,444,722,250,333,500,500,500,500,220,500,333,747,300,500,570,333,747,333,400,570,300,300,333,556,540,250,333,300,330,500,750,750,750,500,722,722,722,722,722,722,1000,722,667,667,667,667,389,389,389,389,722,722,778,778,778,778,778,570,778,722,722,722,722,722,611,556,500,500,500,500,500,500,722,444,444,444,444,444,278,278,278,278,500,556,500,500,500,500,500,570,500,556,556,556,556,500,556,500]}`, 36 "timesI": `{"Tp":"Core","Name":"Times-Italic","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,333,420,500,500,833,778,214,333,333,500,675,250,333,250,278,500,500,500,500,500,500,500,500,500,500,333,333,675,675,675,500,920,611,611,667,722,611,611,722,722,333,444,667,556,833,667,722,611,722,611,500,556,722,611,833,611,556,556,389,278,389,422,500,333,500,500,444,500,444,278,500,500,278,278,444,278,722,500,500,500,500,389,389,278,500,444,667,444,444,389,400,275,400,541,350,500,350,333,500,556,889,500,500,333,1000,500,333,944,350,556,350,350,333,333,556,556,350,500,889,333,980,389,333,667,350,389,556,250,389,500,500,500,500,275,500,333,760,276,500,675,333,760,333,400,675,300,300,333,500,523,250,333,300,310,500,750,750,750,500,611,611,611,611,611,611,889,667,611,611,611,611,333,333,333,333,722,667,722,722,722,722,722,675,722,722,722,722,722,556,611,500,500,500,500,500,500,500,667,444,444,444,444,444,278,278,278,278,500,500,500,500,500,500,500,675,500,500,500,500,500,444,500,444]}`, 37 "times": `{"Tp":"Core","Name":"Times-Roman","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,333,408,500,500,833,778,180,333,333,500,564,250,333,250,278,500,500,500,500,500,500,500,500,500,500,278,278,564,564,564,444,921,722,667,667,722,611,556,722,722,333,389,722,611,889,722,722,556,722,667,556,611,722,722,944,722,722,611,333,278,333,469,500,333,444,500,444,500,444,333,500,500,278,278,500,278,778,500,500,500,500,333,389,278,500,500,722,500,500,444,480,200,480,541,350,500,350,333,500,444,1000,500,500,333,1000,556,333,889,350,611,350,350,333,333,444,444,350,500,1000,333,980,389,333,722,350,444,722,250,333,500,500,500,500,200,500,333,760,276,500,564,333,760,333,400,564,300,300,333,500,453,250,333,300,310,500,750,750,750,444,722,722,722,722,722,722,889,667,611,611,611,611,333,333,333,333,722,722,722,722,722,722,722,564,722,722,722,722,722,722,556,500,444,444,444,444,444,444,667,444,444,444,444,444,278,278,278,278,500,500,500,500,500,500,500,564,500,500,500,500,500,500,500,500]}`, 38 "zapfdingbats": `{"Tp":"Core","Name":"ZapfDingbats","Up":-100,"Ut":50,"Cw":[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,278,974,961,974,980,719,789,790,791,690,960,939,549,855,911,933,911,945,974,755,846,762,761,571,677,763,760,759,754,494,552,537,577,692,786,788,788,790,793,794,816,823,789,841,823,833,816,831,923,744,723,749,790,792,695,776,768,792,759,707,708,682,701,826,815,789,789,707,687,696,689,786,787,713,791,785,791,873,761,762,762,759,759,892,892,788,784,438,138,277,415,392,392,668,668,0,390,390,317,317,276,276,509,509,410,410,234,234,334,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,732,544,544,910,667,760,760,776,595,694,626,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,894,838,1016,458,748,924,748,918,927,928,928,834,873,828,924,924,917,930,931,463,883,836,836,867,867,696,696,874,0,874,760,946,771,865,771,888,967,888,831,873,927,970,918,0]}`, 39} 40 41func (f *Fpdf) coreFontReader(familyStr, styleStr string) (r *strings.Reader) { 42 key := familyStr + styleStr 43 str, ok := embeddedFontList[key] 44 if ok { 45 r = strings.NewReader(str) 46 } else { 47 f.SetErrorf("could not locate \"%s\" among embedded core font definition files", key) 48 } 49 return 50} 51 52var embeddedMapList = map[string]string{ 53 "cp1250": ` 54!00 U+0000 .notdef 55!01 U+0001 .notdef 56!02 U+0002 .notdef 57!03 U+0003 .notdef 58!04 U+0004 .notdef 59!05 U+0005 .notdef 60!06 U+0006 .notdef 61!07 U+0007 .notdef 62!08 U+0008 .notdef 63!09 U+0009 .notdef 64!0A U+000A .notdef 65!0B U+000B .notdef 66!0C U+000C .notdef 67!0D U+000D .notdef 68!0E U+000E .notdef 69!0F U+000F .notdef 70!10 U+0010 .notdef 71!11 U+0011 .notdef 72!12 U+0012 .notdef 73!13 U+0013 .notdef 74!14 U+0014 .notdef 75!15 U+0015 .notdef 76!16 U+0016 .notdef 77!17 U+0017 .notdef 78!18 U+0018 .notdef 79!19 U+0019 .notdef 80!1A U+001A .notdef 81!1B U+001B .notdef 82!1C U+001C .notdef 83!1D U+001D .notdef 84!1E U+001E .notdef 85!1F U+001F .notdef 86!20 U+0020 space 87!21 U+0021 exclam 88!22 U+0022 quotedbl 89!23 U+0023 numbersign 90!24 U+0024 dollar 91!25 U+0025 percent 92!26 U+0026 ampersand 93!27 U+0027 quotesingle 94!28 U+0028 parenleft 95!29 U+0029 parenright 96!2A U+002A asterisk 97!2B U+002B plus 98!2C U+002C comma 99!2D U+002D hyphen 100!2E U+002E period 101!2F U+002F slash 102!30 U+0030 zero 103!31 U+0031 one 104!32 U+0032 two 105!33 U+0033 three 106!34 U+0034 four 107!35 U+0035 five 108!36 U+0036 six 109!37 U+0037 seven 110!38 U+0038 eight 111!39 U+0039 nine 112!3A U+003A colon 113!3B U+003B semicolon 114!3C U+003C less 115!3D U+003D equal 116!3E U+003E greater 117!3F U+003F question 118!40 U+0040 at 119!41 U+0041 A 120!42 U+0042 B 121!43 U+0043 C 122!44 U+0044 D 123!45 U+0045 E 124!46 U+0046 F 125!47 U+0047 G 126!48 U+0048 H 127!49 U+0049 I 128!4A U+004A J 129!4B U+004B K 130!4C U+004C L 131!4D U+004D M 132!4E U+004E N 133!4F U+004F O 134!50 U+0050 P 135!51 U+0051 Q 136!52 U+0052 R 137!53 U+0053 S 138!54 U+0054 T 139!55 U+0055 U 140!56 U+0056 V 141!57 U+0057 W 142!58 U+0058 X 143!59 U+0059 Y 144!5A U+005A Z 145!5B U+005B bracketleft 146!5C U+005C backslash 147!5D U+005D bracketright 148!5E U+005E asciicircum 149!5F U+005F underscore 150!60 U+0060 grave 151!61 U+0061 a 152!62 U+0062 b 153!63 U+0063 c 154!64 U+0064 d 155!65 U+0065 e 156!66 U+0066 f 157!67 U+0067 g 158!68 U+0068 h 159!69 U+0069 i 160!6A U+006A j 161!6B U+006B k 162!6C U+006C l 163!6D U+006D m 164!6E U+006E n 165!6F U+006F o 166!70 U+0070 p 167!71 U+0071 q 168!72 U+0072 r 169!73 U+0073 s 170!74 U+0074 t 171!75 U+0075 u 172!76 U+0076 v 173!77 U+0077 w 174!78 U+0078 x 175!79 U+0079 y 176!7A U+007A z 177!7B U+007B braceleft 178!7C U+007C bar 179!7D U+007D braceright 180!7E U+007E asciitilde 181!7F U+007F .notdef 182!80 U+20AC Euro 183!82 U+201A quotesinglbase 184!84 U+201E quotedblbase 185!85 U+2026 ellipsis 186!86 U+2020 dagger 187!87 U+2021 daggerdbl 188!89 U+2030 perthousand 189!8A U+0160 Scaron 190!8B U+2039 guilsinglleft 191!8C U+015A Sacute 192!8D U+0164 Tcaron 193!8E U+017D Zcaron 194!8F U+0179 Zacute 195!91 U+2018 quoteleft 196!92 U+2019 quoteright 197!93 U+201C quotedblleft 198!94 U+201D quotedblright 199!95 U+2022 bullet 200!96 U+2013 endash 201!97 U+2014 emdash 202!99 U+2122 trademark 203!9A U+0161 scaron 204!9B U+203A guilsinglright 205!9C U+015B sacute 206!9D U+0165 tcaron 207!9E U+017E zcaron 208!9F U+017A zacute 209!A0 U+00A0 space 210!A1 U+02C7 caron 211!A2 U+02D8 breve 212!A3 U+0141 Lslash 213!A4 U+00A4 currency 214!A5 U+0104 Aogonek 215!A6 U+00A6 brokenbar 216!A7 U+00A7 section 217!A8 U+00A8 dieresis 218!A9 U+00A9 copyright 219!AA U+015E Scedilla 220!AB U+00AB guillemotleft 221!AC U+00AC logicalnot 222!AD U+00AD hyphen 223!AE U+00AE registered 224!AF U+017B Zdotaccent 225!B0 U+00B0 degree 226!B1 U+00B1 plusminus 227!B2 U+02DB ogonek 228!B3 U+0142 lslash 229!B4 U+00B4 acute 230!B5 U+00B5 mu 231!B6 U+00B6 paragraph 232!B7 U+00B7 periodcentered 233!B8 U+00B8 cedilla 234!B9 U+0105 aogonek 235!BA U+015F scedilla 236!BB U+00BB guillemotright 237!BC U+013D Lcaron 238!BD U+02DD hungarumlaut 239!BE U+013E lcaron 240!BF U+017C zdotaccent 241!C0 U+0154 Racute 242!C1 U+00C1 Aacute 243!C2 U+00C2 Acircumflex 244!C3 U+0102 Abreve 245!C4 U+00C4 Adieresis 246!C5 U+0139 Lacute 247!C6 U+0106 Cacute 248!C7 U+00C7 Ccedilla 249!C8 U+010C Ccaron 250!C9 U+00C9 Eacute 251!CA U+0118 Eogonek 252!CB U+00CB Edieresis 253!CC U+011A Ecaron 254!CD U+00CD Iacute 255!CE U+00CE Icircumflex 256!CF U+010E Dcaron 257!D0 U+0110 Dcroat 258!D1 U+0143 Nacute 259!D2 U+0147 Ncaron 260!D3 U+00D3 Oacute 261!D4 U+00D4 Ocircumflex 262!D5 U+0150 Ohungarumlaut 263!D6 U+00D6 Odieresis 264!D7 U+00D7 multiply 265!D8 U+0158 Rcaron 266!D9 U+016E Uring 267!DA U+00DA Uacute 268!DB U+0170 Uhungarumlaut 269!DC U+00DC Udieresis 270!DD U+00DD Yacute 271!DE U+0162 Tcommaaccent 272!DF U+00DF germandbls 273!E0 U+0155 racute 274!E1 U+00E1 aacute 275!E2 U+00E2 acircumflex 276!E3 U+0103 abreve 277!E4 U+00E4 adieresis 278!E5 U+013A lacute 279!E6 U+0107 cacute 280!E7 U+00E7 ccedilla 281!E8 U+010D ccaron 282!E9 U+00E9 eacute 283!EA U+0119 eogonek 284!EB U+00EB edieresis 285!EC U+011B ecaron 286!ED U+00ED iacute 287!EE U+00EE icircumflex 288!EF U+010F dcaron 289!F0 U+0111 dcroat 290!F1 U+0144 nacute 291!F2 U+0148 ncaron 292!F3 U+00F3 oacute 293!F4 U+00F4 ocircumflex 294!F5 U+0151 ohungarumlaut 295!F6 U+00F6 odieresis 296!F7 U+00F7 divide 297!F8 U+0159 rcaron 298!F9 U+016F uring 299!FA U+00FA uacute 300!FB U+0171 uhungarumlaut 301!FC U+00FC udieresis 302!FD U+00FD yacute 303!FE U+0163 tcommaaccent 304!FF U+02D9 dotaccent 305 `, 306 "cp1252": ` 307!00 U+0000 .notdef 308!01 U+0001 .notdef 309!02 U+0002 .notdef 310!03 U+0003 .notdef 311!04 U+0004 .notdef 312!05 U+0005 .notdef 313!06 U+0006 .notdef 314!07 U+0007 .notdef 315!08 U+0008 .notdef 316!09 U+0009 .notdef 317!0A U+000A .notdef 318!0B U+000B .notdef 319!0C U+000C .notdef 320!0D U+000D .notdef 321!0E U+000E .notdef 322!0F U+000F .notdef 323!10 U+0010 .notdef 324!11 U+0011 .notdef 325!12 U+0012 .notdef 326!13 U+0013 .notdef 327!14 U+0014 .notdef 328!15 U+0015 .notdef 329!16 U+0016 .notdef 330!17 U+0017 .notdef 331!18 U+0018 .notdef 332!19 U+0019 .notdef 333!1A U+001A .notdef 334!1B U+001B .notdef 335!1C U+001C .notdef 336!1D U+001D .notdef 337!1E U+001E .notdef 338!1F U+001F .notdef 339!20 U+0020 space 340!21 U+0021 exclam 341!22 U+0022 quotedbl 342!23 U+0023 numbersign 343!24 U+0024 dollar 344!25 U+0025 percent 345!26 U+0026 ampersand 346!27 U+0027 quotesingle 347!28 U+0028 parenleft 348!29 U+0029 parenright 349!2A U+002A asterisk 350!2B U+002B plus 351!2C U+002C comma 352!2D U+002D hyphen 353!2E U+002E period 354!2F U+002F slash 355!30 U+0030 zero 356!31 U+0031 one 357!32 U+0032 two 358!33 U+0033 three 359!34 U+0034 four 360!35 U+0035 five 361!36 U+0036 six 362!37 U+0037 seven 363!38 U+0038 eight 364!39 U+0039 nine 365!3A U+003A colon 366!3B U+003B semicolon 367!3C U+003C less 368!3D U+003D equal 369!3E U+003E greater 370!3F U+003F question 371!40 U+0040 at 372!41 U+0041 A 373!42 U+0042 B 374!43 U+0043 C 375!44 U+0044 D 376!45 U+0045 E 377!46 U+0046 F 378!47 U+0047 G 379!48 U+0048 H 380!49 U+0049 I 381!4A U+004A J 382!4B U+004B K 383!4C U+004C L 384!4D U+004D M 385!4E U+004E N 386!4F U+004F O 387!50 U+0050 P 388!51 U+0051 Q 389!52 U+0052 R 390!53 U+0053 S 391!54 U+0054 T 392!55 U+0055 U 393!56 U+0056 V 394!57 U+0057 W 395!58 U+0058 X 396!59 U+0059 Y 397!5A U+005A Z 398!5B U+005B bracketleft 399!5C U+005C backslash 400!5D U+005D bracketright 401!5E U+005E asciicircum 402!5F U+005F underscore 403!60 U+0060 grave 404!61 U+0061 a 405!62 U+0062 b 406!63 U+0063 c 407!64 U+0064 d 408!65 U+0065 e 409!66 U+0066 f 410!67 U+0067 g 411!68 U+0068 h 412!69 U+0069 i 413!6A U+006A j 414!6B U+006B k 415!6C U+006C l 416!6D U+006D m 417!6E U+006E n 418!6F U+006F o 419!70 U+0070 p 420!71 U+0071 q 421!72 U+0072 r 422!73 U+0073 s 423!74 U+0074 t 424!75 U+0075 u 425!76 U+0076 v 426!77 U+0077 w 427!78 U+0078 x 428!79 U+0079 y 429!7A U+007A z 430!7B U+007B braceleft 431!7C U+007C bar 432!7D U+007D braceright 433!7E U+007E asciitilde 434!7F U+007F .notdef 435!80 U+20AC Euro 436!82 U+201A quotesinglbase 437!83 U+0192 florin 438!84 U+201E quotedblbase 439!85 U+2026 ellipsis 440!86 U+2020 dagger 441!87 U+2021 daggerdbl 442!88 U+02C6 circumflex 443!89 U+2030 perthousand 444!8A U+0160 Scaron 445!8B U+2039 guilsinglleft 446!8C U+0152 OE 447!8E U+017D Zcaron 448!91 U+2018 quoteleft 449!92 U+2019 quoteright 450!93 U+201C quotedblleft 451!94 U+201D quotedblright 452!95 U+2022 bullet 453!96 U+2013 endash 454!97 U+2014 emdash 455!98 U+02DC tilde 456!99 U+2122 trademark 457!9A U+0161 scaron 458!9B U+203A guilsinglright 459!9C U+0153 oe 460!9E U+017E zcaron 461!9F U+0178 Ydieresis 462!A0 U+00A0 space 463!A1 U+00A1 exclamdown 464!A2 U+00A2 cent 465!A3 U+00A3 sterling 466!A4 U+00A4 currency 467!A5 U+00A5 yen 468!A6 U+00A6 brokenbar 469!A7 U+00A7 section 470!A8 U+00A8 dieresis 471!A9 U+00A9 copyright 472!AA U+00AA ordfeminine 473!AB U+00AB guillemotleft 474!AC U+00AC logicalnot 475!AD U+00AD hyphen 476!AE U+00AE registered 477!AF U+00AF macron 478!B0 U+00B0 degree 479!B1 U+00B1 plusminus 480!B2 U+00B2 twosuperior 481!B3 U+00B3 threesuperior 482!B4 U+00B4 acute 483!B5 U+00B5 mu 484!B6 U+00B6 paragraph 485!B7 U+00B7 periodcentered 486!B8 U+00B8 cedilla 487!B9 U+00B9 onesuperior 488!BA U+00BA ordmasculine 489!BB U+00BB guillemotright 490!BC U+00BC onequarter 491!BD U+00BD onehalf 492!BE U+00BE threequarters 493!BF U+00BF questiondown 494!C0 U+00C0 Agrave 495!C1 U+00C1 Aacute 496!C2 U+00C2 Acircumflex 497!C3 U+00C3 Atilde 498!C4 U+00C4 Adieresis 499!C5 U+00C5 Aring 500!C6 U+00C6 AE 501!C7 U+00C7 Ccedilla 502!C8 U+00C8 Egrave 503!C9 U+00C9 Eacute 504!CA U+00CA Ecircumflex 505!CB U+00CB Edieresis 506!CC U+00CC Igrave 507!CD U+00CD Iacute 508!CE U+00CE Icircumflex 509!CF U+00CF Idieresis 510!D0 U+00D0 Eth 511!D1 U+00D1 Ntilde 512!D2 U+00D2 Ograve 513!D3 U+00D3 Oacute 514!D4 U+00D4 Ocircumflex 515!D5 U+00D5 Otilde 516!D6 U+00D6 Odieresis 517!D7 U+00D7 multiply 518!D8 U+00D8 Oslash 519!D9 U+00D9 Ugrave 520!DA U+00DA Uacute 521!DB U+00DB Ucircumflex 522!DC U+00DC Udieresis 523!DD U+00DD Yacute 524!DE U+00DE Thorn 525!DF U+00DF germandbls 526!E0 U+00E0 agrave 527!E1 U+00E1 aacute 528!E2 U+00E2 acircumflex 529!E3 U+00E3 atilde 530!E4 U+00E4 adieresis 531!E5 U+00E5 aring 532!E6 U+00E6 ae 533!E7 U+00E7 ccedilla 534!E8 U+00E8 egrave 535!E9 U+00E9 eacute 536!EA U+00EA ecircumflex 537!EB U+00EB edieresis 538!EC U+00EC igrave 539!ED U+00ED iacute 540!EE U+00EE icircumflex 541!EF U+00EF idieresis 542!F0 U+00F0 eth 543!F1 U+00F1 ntilde 544!F2 U+00F2 ograve 545!F3 U+00F3 oacute 546!F4 U+00F4 ocircumflex 547!F5 U+00F5 otilde 548!F6 U+00F6 odieresis 549!F7 U+00F7 divide 550!F8 U+00F8 oslash 551!F9 U+00F9 ugrave 552!FA U+00FA uacute 553!FB U+00FB ucircumflex 554!FC U+00FC udieresis 555!FD U+00FD yacute 556!FE U+00FE thorn 557!FF U+00FF ydieresis 558 `, 559} 560