github.com/phpdave11/gofpdf@v1.4.2/embedded.go (about)

     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  
    17  package gofpdf
    18  
    19  // Embedded standard fonts
    20  
    21  import (
    22  	"strings"
    23  )
    24  
    25  var 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  
    41  func (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  
    52  var 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  }