2021-04-06 22:35:37 +00:00

129 lines
60 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package fonts ;import (_dc "bytes";_e "encoding/binary";_dg "errors";_d "fmt";_ddd "github.com/unidoc/unipdf/v3/common";_gb "github.com/unidoc/unipdf/v3/core";_b "github.com/unidoc/unipdf/v3/internal/cmap";_dd "github.com/unidoc/unipdf/v3/internal/textencoding";
_gf "golang.org/x/xerrors";_g "io";_ce "os";_a "regexp";_cd "sort";_de "strings";_eb "sync";);type CharMetrics struct{Wx float64 ;Wy float64 ;};var _ecdg *RuneCharSafeMap ;func (_efb *ttfParser )readByte ()(_feb uint8 ){_e .Read (_efb ._ceab ,_e .BigEndian ,&_feb );
return _feb };func (_edbg *ttfParser )ReadULong ()(_bbda uint32 ){_e .Read (_edbg ._ceab ,_e .BigEndian ,&_bbda );return _bbda ;};var _cfb *RuneCharSafeMap ;func _ba (){const _ab =600;_daa =MakeRuneCharSafeMap (len (_ddg ));for _ ,_cee :=range _ddg {_daa .Write (_cee ,CharMetrics {Wx :_ab });
};_ece =_daa .Copy ();_dga =_daa .Copy ();_cfb =_daa .Copy ();};func (_gba StdFont )Encoder ()_dd .TextEncoder {return _gba ._eee };func (_ced *ttfParser )ParseOS2 ()error {if _edga :=_ced .Seek ("\u004f\u0053\u002f\u0032");_edga !=nil {return _edga ;};
_gda :=_ced .ReadUShort ();_ced .Skip (4*2);_ced .Skip (11*2+10+4*4+4);_adf :=_ced .ReadUShort ();_ced ._eab .Bold =(_adf &32)!=0;_ced .Skip (2*2);_ced ._eab .TypoAscender =_ced .ReadShort ();_ced ._eab .TypoDescender =_ced .ReadShort ();if _gda >=2{_ced .Skip (3*2+2*4+2);
_ced ._eab .CapHeight =_ced .ReadShort ();}else {_ced ._eab .CapHeight =0;};return nil ;};func _ae ()StdFont {_bga .Do (_dbb );_dad :=Descriptor {Name :HelveticaBoldName ,Family :string (HelveticaName ),Weight :FontWeightBold ,Flags :0x0020,BBox :[4]float64 {-170,-228,1003,962},ItalicAngle :0,Ascent :718,Descent :-207,CapHeight :718,XHeight :532,StemV :140,StemH :118};
return NewStdFont (_dad ,_gcd );};func (_cdf *ttfParser )ReadStr (length int )(string ,error ){_bge :=make ([]byte ,length );_cfe ,_beca :=_cdf ._ceab .Read (_bge );if _beca !=nil {return "",_beca ;}else if _cfe !=length {return "",_d .Errorf ("\u0075\u006e\u0061bl\u0065\u0020\u0074\u006f\u0020\u0072\u0065\u0061\u0064\u0020\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0073",length );
};return string (_bge ),nil ;};var _daa *RuneCharSafeMap ;func _ada ()StdFont {_fbb .Do (_ba );_fcf :=Descriptor {Name :CourierName ,Family :string (CourierName ),Weight :FontWeightMedium ,Flags :0x0021,BBox :[4]float64 {-23,-250,715,805},ItalicAngle :0,Ascent :629,Descent :-157,CapHeight :562,XHeight :426,StemV :51,StemH :51};
return NewStdFont (_fcf ,_daa );};var _cgb *RuneCharSafeMap ;func _abc ()StdFont {_gbec .Do (_aff );_fd :=Descriptor {Name :TimesRomanName ,Family :_gde ,Weight :FontWeightRoman ,Flags :0x0020,BBox :[4]float64 {-168,-218,1000,898},ItalicAngle :0,Ascent :683,Descent :-217,CapHeight :662,XHeight :450,StemV :84,StemH :28};
return NewStdFont (_fd ,_fdf );};type RuneCharSafeMap struct{_ec map[rune ]CharMetrics ;_fb _eb .RWMutex ;};func _gcg ()StdFont {_gbec .Do (_aff );_ceed :=Descriptor {Name :TimesItalicName ,Family :_gde ,Weight :FontWeightMedium ,Flags :0x0060,BBox :[4]float64 {-169,-217,1010,883},ItalicAngle :-15.5,Ascent :683,Descent :-217,CapHeight :653,XHeight :441,StemV :76,StemH :32};
return NewStdFont (_ceed ,_cgb );};func (_gge *ttfParser )parseCmapFormat12 ()error {_gce :=_gge .ReadULong ();_ddd .Log .Trace ("\u0070\u0061\u0072se\u0043\u006d\u0061\u0070\u0046\u006f\u0072\u006d\u0061t\u00312\u003a \u0025s\u0020\u006e\u0075\u006d\u0047\u0072\u006f\u0075\u0070\u0073\u003d\u0025\u0064",_gge ._eab .String (),_gce );
for _fcce :=uint32 (0);_fcce < _gce ;_fcce ++{_ac :=_gge .ReadULong ();_gbd :=_gge .ReadULong ();_bef :=_gge .ReadULong ();if _ac > 0x0010FFFF||(0xD800<=_ac &&_ac <=0xDFFF){return _dg .New ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0063\u0068\u0061\u0072\u0061c\u0074\u0065\u0072\u0073\u0020\u0063\u006f\u0064\u0065\u0073");
};if _gbd < _ac ||_gbd > 0x0010FFFF||(0xD800<=_gbd &&_gbd <=0xDFFF){return _dg .New ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0063\u0068\u0061\u0072\u0061c\u0074\u0065\u0072\u0073\u0020\u0063\u006f\u0064\u0065\u0073");};for _aeg :=_ac ;_aeg <=_gbd ;
_aeg ++{if _aeg > 0x10FFFF{_ddd .Log .Debug ("\u0046\u006fr\u006d\u0061\u0074\u0020\u0031\u0032\u0020\u0063\u006d\u0061\u0070\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0062\u0065\u0079\u006f\u006e\u0064\u0020\u0055\u0043\u0053\u002d\u0034");
};_gge ._eab .Chars [rune (_aeg )]=GID (_bef );_bef ++;};};return nil ;};var _ Font =StdFont {};func (_ad StdFont )Descriptor ()Descriptor {return _ad ._gffd };const (SymbolName =StdFontName ("\u0053\u0079\u006d\u0062\u006f\u006c");ZapfDingbatsName =StdFontName ("\u005a\u0061\u0070f\u0044\u0069\u006e\u0067\u0062\u0061\u0074\u0073");
);func (_dge *ttfParser )Parse ()(TtfType ,error ){_ede ,_fcbg :=_dge .ReadStr (4);if _fcbg !=nil {return TtfType {},_fcbg ;};if _ede =="\u004f\u0054\u0054\u004f"{return TtfType {},_gf .Errorf ("\u0066\u006f\u006e\u0074s\u0020\u0062\u0061\u0073\u0065\u0064\u0020\u006f\u006e \u0050\u006f\u0073\u0074\u0053\u0063\u0072\u0069\u0070\u0074\u0020\u006f\u0075\u0074\u006c\u0069\u006e\u0065s\u0020\u0061\u0072\u0065\u0020n\u006f\u0074\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0028\u0025\u0077\u0029",_gb .ErrNotSupported );
};if _ede !="\u0000\u0001\u0000\u0000"&&_ede !="\u0074\u0072\u0075\u0065"{_ddd .Log .Debug ("\u0055n\u0072\u0065c\u006f\u0067\u006ei\u007a\u0065\u0064\u0020\u0054\u0072\u0075e\u0054\u0079\u0070\u0065\u0020\u0066i\u006c\u0065\u0020\u0066\u006f\u0072\u006d\u0061\u0074\u002e\u0020v\u0065\u0072\u0073\u0069\u006f\u006e\u003d\u0025\u0071",_ede );
};_bbg :=int (_dge .ReadUShort ());_dge .Skip (3*2);_dge ._aaf =make (map[string ]uint32 );var _adbg string ;for _cbdc :=0;_cbdc < _bbg ;_cbdc ++{_adbg ,_fcbg =_dge .ReadStr (4);if _fcbg !=nil {return TtfType {},_fcbg ;};_dge .Skip (4);_fcag :=_dge .ReadULong ();
_dge .Skip (4);_dge ._aaf [_adbg ]=_fcag ;};_ddd .Log .Trace (_edb (_dge ._aaf ));if _fcbg =_dge .ParseComponents ();_fcbg !=nil {return TtfType {},_fcbg ;};return _dge ._eab ,nil ;};func RegisterStdFont (name StdFontName ,fnc func ()StdFont ,aliases ...StdFontName ){if _ ,_aa :=_cc .read (name );
_aa {panic ("\u0066o\u006e\u0074\u0020\u0061l\u0072\u0065\u0061\u0064\u0079 \u0072e\u0067i\u0073\u0074\u0065\u0072\u0065\u0064\u003a "+string (name ));};_cc .write (name ,fnc );for _ ,_bce :=range aliases {RegisterStdFont (_bce ,fnc );};};func (_f CharMetrics )String ()string {return _d .Sprintf ("<\u0025\u002e\u0031\u0066\u002c\u0025\u002e\u0031\u0066\u003e",_f .Wx ,_f .Wy );
};type Font interface{Encoder ()_dd .TextEncoder ;GetRuneMetrics (_gff rune )(CharMetrics ,bool );};var _fba *RuneCharSafeMap ;type FontWeight int ;var _fdc =[]GlyphName {"\u002en\u006f\u0074\u0064\u0065\u0066","\u002e\u006e\u0075l\u006c","\u006e\u006fn\u006d\u0061\u0072k\u0069\u006e\u0067\u0072\u0065\u0074\u0075\u0072\u006e","\u0073\u0070\u0061c\u0065","\u0065\u0078\u0063\u006c\u0061\u006d","\u0071\u0075\u006f\u0074\u0065\u0064\u0062\u006c","\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u0069\u0067\u006e","\u0064\u006f\u006c\u006c\u0061\u0072","\u0070e\u0072\u0063\u0065\u006e\u0074","\u0061m\u0070\u0065\u0072\u0073\u0061\u006ed","q\u0075\u006f\u0074\u0065\u0073\u0069\u006e\u0067\u006c\u0065","\u0070a\u0072\u0065\u006e\u006c\u0065\u0066t","\u0070\u0061\u0072\u0065\u006e\u0072\u0069\u0067\u0068\u0074","\u0061\u0073\u0074\u0065\u0072\u0069\u0073\u006b","\u0070\u006c\u0075\u0073","\u0063\u006f\u006dm\u0061","\u0068\u0079\u0070\u0068\u0065\u006e","\u0070\u0065\u0072\u0069\u006f\u0064","\u0073\u006c\u0061s\u0068","\u007a\u0065\u0072\u006f","\u006f\u006e\u0065","\u0074\u0077\u006f","\u0074\u0068\u0072e\u0065","\u0066\u006f\u0075\u0072","\u0066\u0069\u0076\u0065","\u0073\u0069\u0078","\u0073\u0065\u0076e\u006e","\u0065\u0069\u0067h\u0074","\u006e\u0069\u006e\u0065","\u0063\u006f\u006co\u006e","\u0073e\u006d\u0069\u0063\u006f\u006c\u006fn","\u006c\u0065\u0073\u0073","\u0065\u0071\u0075a\u006c","\u0067r\u0065\u0061\u0074\u0065\u0072","\u0071\u0075\u0065\u0073\u0074\u0069\u006f\u006e","\u0061\u0074","\u0041","\u0042","\u0043","\u0044","\u0045","\u0046","\u0047","\u0048","\u0049","\u004a","\u004b","\u004c","\u004d","\u004e","\u004f","\u0050","\u0051","\u0052","\u0053","\u0054","\u0055","\u0056","\u0057","\u0058","\u0059","\u005a","b\u0072\u0061\u0063\u006b\u0065\u0074\u006c\u0065\u0066\u0074","\u0062a\u0063\u006b\u0073\u006c\u0061\u0073h","\u0062\u0072\u0061c\u006b\u0065\u0074\u0072\u0069\u0067\u0068\u0074","a\u0073\u0063\u0069\u0069\u0063\u0069\u0072\u0063\u0075\u006d","\u0075\u006e\u0064\u0065\u0072\u0073\u0063\u006f\u0072\u0065","\u0067\u0072\u0061v\u0065","\u0061","\u0062","\u0063","\u0064","\u0065","\u0066","\u0067","\u0068","\u0069","\u006a","\u006b","\u006c","\u006d","\u006e","\u006f","\u0070","\u0071","\u0072","\u0073","\u0074","\u0075","\u0076","\u0077","\u0078","\u0079","\u007a","\u0062r\u0061\u0063\u0065\u006c\u0065\u0066t","\u0062\u0061\u0072","\u0062\u0072\u0061\u0063\u0065\u0072\u0069\u0067\u0068\u0074","\u0061\u0073\u0063\u0069\u0069\u0074\u0069\u006c\u0064\u0065","\u0041d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0041\u0072\u0069n\u0067","\u0043\u0063\u0065\u0064\u0069\u006c\u006c\u0061","\u0045\u0061\u0063\u0075\u0074\u0065","\u004e\u0074\u0069\u006c\u0064\u0065","\u004fd\u0069\u0065\u0072\u0065\u0073\u0069s","\u0055d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0061\u0061\u0063\u0075\u0074\u0065","\u0061\u0067\u0072\u0061\u0076\u0065","a\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0061d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0061\u0074\u0069\u006c\u0064\u0065","\u0061\u0072\u0069n\u0067","\u0063\u0063\u0065\u0064\u0069\u006c\u006c\u0061","\u0065\u0061\u0063\u0075\u0074\u0065","\u0065\u0067\u0072\u0061\u0076\u0065","e\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0065d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0069\u0061\u0063\u0075\u0074\u0065","\u0069\u0067\u0072\u0061\u0076\u0065","i\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0069d\u0069\u0065\u0072\u0065\u0073\u0069s","\u006e\u0074\u0069\u006c\u0064\u0065","\u006f\u0061\u0063\u0075\u0074\u0065","\u006f\u0067\u0072\u0061\u0076\u0065","o\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u006fd\u0069\u0065\u0072\u0065\u0073\u0069s","\u006f\u0074\u0069\u006c\u0064\u0065","\u0075\u0061\u0063\u0075\u0074\u0065","\u0075\u0067\u0072\u0061\u0076\u0065","u\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0075d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0064\u0061\u0067\u0067\u0065\u0072","\u0064\u0065\u0067\u0072\u0065\u0065","\u0063\u0065\u006e\u0074","\u0073\u0074\u0065\u0072\u006c\u0069\u006e\u0067","\u0073e\u0063\u0074\u0069\u006f\u006e","\u0062\u0075\u006c\u006c\u0065\u0074","\u0070a\u0072\u0061\u0067\u0072\u0061\u0070h","\u0067\u0065\u0072\u006d\u0061\u006e\u0064\u0062\u006c\u0073","\u0072\u0065\u0067\u0069\u0073\u0074\u0065\u0072\u0065\u0064","\u0063o\u0070\u0079\u0072\u0069\u0067\u0068t","\u0074r\u0061\u0064\u0065\u006d\u0061\u0072k","\u0061\u0063\u0075t\u0065","\u0064\u0069\u0065\u0072\u0065\u0073\u0069\u0073","\u006e\u006f\u0074\u0065\u0071\u0075\u0061\u006c","\u0041\u0045","\u004f\u0073\u006c\u0061\u0073\u0068","\u0069\u006e\u0066\u0069\u006e\u0069\u0074\u0079","\u0070l\u0075\u0073\u006d\u0069\u006e\u0075s","\u006ce\u0073\u0073\u0065\u0071\u0075\u0061l","\u0067\u0072\u0065a\u0074\u0065\u0072\u0065\u0071\u0075\u0061\u006c","\u0079\u0065\u006e","\u006d\u0075","p\u0061\u0072\u0074\u0069\u0061\u006c\u0064\u0069\u0066\u0066","\u0073u\u006d\u006d\u0061\u0074\u0069\u006fn","\u0070r\u006f\u0064\u0075\u0063\u0074","\u0070\u0069","\u0069\u006e\u0074\u0065\u0067\u0072\u0061\u006c","o\u0072\u0064\u0066\u0065\u006d\u0069\u006e\u0069\u006e\u0065","\u006f\u0072\u0064m\u0061\u0073\u0063\u0075\u006c\u0069\u006e\u0065","\u004f\u006d\u0065g\u0061","\u0061\u0065","\u006f\u0073\u006c\u0061\u0073\u0068","\u0071\u0075\u0065s\u0074\u0069\u006f\u006e\u0064\u006f\u0077\u006e","\u0065\u0078\u0063\u006c\u0061\u006d\u0064\u006f\u0077\u006e","\u006c\u006f\u0067\u0069\u0063\u0061\u006c\u006e\u006f\u0074","\u0072a\u0064\u0069\u0063\u0061\u006c","\u0066\u006c\u006f\u0072\u0069\u006e","a\u0070\u0070\u0072\u006f\u0078\u0065\u0071\u0075\u0061\u006c","\u0044\u0065\u006ct\u0061","\u0067\u0075\u0069\u006c\u006c\u0065\u006d\u006f\u0074\u006c\u0065\u0066\u0074","\u0067\u0075\u0069\u006c\u006c\u0065\u006d\u006f\u0074r\u0069\u0067\u0068\u0074","\u0065\u006c\u006c\u0069\u0070\u0073\u0069\u0073","\u006e\u006fn\u0062\u0072\u0065a\u006b\u0069\u006e\u0067\u0073\u0070\u0061\u0063\u0065","\u0041\u0067\u0072\u0061\u0076\u0065","\u0041\u0074\u0069\u006c\u0064\u0065","\u004f\u0074\u0069\u006c\u0064\u0065","\u004f\u0045","\u006f\u0065","\u0065\u006e\u0064\u0061\u0073\u0068","\u0065\u006d\u0064\u0061\u0073\u0068","\u0071\u0075\u006ft\u0065\u0064\u0062\u006c\u006c\u0065\u0066\u0074","\u0071\u0075\u006f\u0074\u0065\u0064\u0062\u006c\u0072\u0069\u0067\u0068\u0074","\u0071u\u006f\u0074\u0065\u006c\u0065\u0066t","\u0071\u0075\u006f\u0074\u0065\u0072\u0069\u0067\u0068\u0074","\u0064\u0069\u0076\u0069\u0064\u0065","\u006co\u007a\u0065\u006e\u0067\u0065","\u0079d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0059d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0066\u0072\u0061\u0063\u0074\u0069\u006f\u006e","\u0063\u0075\u0072\u0072\u0065\u006e\u0063\u0079","\u0067\u0075\u0069\u006c\u0073\u0069\u006e\u0067\u006c\u006c\u0065\u0066\u0074","\u0067\u0075\u0069\u006c\u0073\u0069\u006e\u0067\u006cr\u0069\u0067\u0068\u0074","\u0066\u0069","\u0066\u006c","\u0064a\u0067\u0067\u0065\u0072\u0064\u0062l","\u0070\u0065\u0072\u0069\u006f\u0064\u0063\u0065\u006et\u0065\u0072\u0065\u0064","\u0071\u0075\u006f\u0074\u0065\u0073\u0069\u006e\u0067l\u0062\u0061\u0073\u0065","\u0071\u0075\u006ft\u0065\u0064\u0062\u006c\u0062\u0061\u0073\u0065","p\u0065\u0072\u0074\u0068\u006f\u0075\u0073\u0061\u006e\u0064","A\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","E\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0041\u0061\u0063\u0075\u0074\u0065","\u0045d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0045\u0067\u0072\u0061\u0076\u0065","\u0049\u0061\u0063\u0075\u0074\u0065","I\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0049d\u0069\u0065\u0072\u0065\u0073\u0069s","\u0049\u0067\u0072\u0061\u0076\u0065","\u004f\u0061\u0063\u0075\u0074\u0065","O\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0061\u0070\u0070l\u0065","\u004f\u0067\u0072\u0061\u0076\u0065","\u0055\u0061\u0063\u0075\u0074\u0065","U\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0055\u0067\u0072\u0061\u0076\u0065","\u0064\u006f\u0074\u006c\u0065\u0073\u0073\u0069","\u0063\u0069\u0072\u0063\u0075\u006d\u0066\u006c\u0065\u0078","\u0074\u0069\u006cd\u0065","\u006d\u0061\u0063\u0072\u006f\u006e","\u0062\u0072\u0065v\u0065","\u0064o\u0074\u0061\u0063\u0063\u0065\u006et","\u0072\u0069\u006e\u0067","\u0063e\u0064\u0069\u006c\u006c\u0061","\u0068\u0075\u006eg\u0061\u0072\u0075\u006d\u006c\u0061\u0075\u0074","\u006f\u0067\u006f\u006e\u0065\u006b","\u0063\u0061\u0072o\u006e","\u004c\u0073\u006c\u0061\u0073\u0068","\u006c\u0073\u006c\u0061\u0073\u0068","\u0053\u0063\u0061\u0072\u006f\u006e","\u0073\u0063\u0061\u0072\u006f\u006e","\u005a\u0063\u0061\u0072\u006f\u006e","\u007a\u0063\u0061\u0072\u006f\u006e","\u0062r\u006f\u006b\u0065\u006e\u0062\u0061r","\u0045\u0074\u0068","\u0065\u0074\u0068","\u0059\u0061\u0063\u0075\u0074\u0065","\u0079\u0061\u0063\u0075\u0074\u0065","\u0054\u0068\u006fr\u006e","\u0074\u0068\u006fr\u006e","\u006d\u0069\u006eu\u0073","\u006d\u0075\u006c\u0074\u0069\u0070\u006c\u0079","o\u006e\u0065\u0073\u0075\u0070\u0065\u0072\u0069\u006f\u0072","t\u0077\u006f\u0073\u0075\u0070\u0065\u0072\u0069\u006f\u0072","\u0074\u0068\u0072\u0065\u0065\u0073\u0075\u0070\u0065\u0072\u0069\u006f\u0072","\u006fn\u0065\u0068\u0061\u006c\u0066","\u006f\u006e\u0065\u0071\u0075\u0061\u0072\u0074\u0065\u0072","\u0074\u0068\u0072\u0065\u0065\u0071\u0075\u0061\u0072\u0074\u0065\u0072\u0073","\u0066\u0072\u0061n\u0063","\u0047\u0062\u0072\u0065\u0076\u0065","\u0067\u0062\u0072\u0065\u0076\u0065","\u0049\u0064\u006f\u0074\u0061\u0063\u0063\u0065\u006e\u0074","\u0053\u0063\u0065\u0064\u0069\u006c\u006c\u0061","\u0073\u0063\u0065\u0064\u0069\u006c\u006c\u0061","\u0043\u0061\u0063\u0075\u0074\u0065","\u0063\u0061\u0063\u0075\u0074\u0065","\u0043\u0063\u0061\u0072\u006f\u006e","\u0063\u0063\u0061\u0072\u006f\u006e","\u0064\u0063\u0072\u006f\u0061\u0074"};
func (_gfc *fontMap )write (_cdc StdFontName ,_cdg func ()StdFont ){_gfc .Lock ();defer _gfc .Unlock ();_gfc ._egf [_cdc ]=_cdg ;};func (_gaea *ttfParser )parseCmapSubtable31 (_gad int64 )error {_gbac :=make ([]rune ,0,8);_fcfd :=make ([]rune ,0,8);_agc :=make ([]int16 ,0,8);
_ceb :=make ([]uint16 ,0,8);_gaea ._eab .Chars =make (map[rune ]GID );_gaea ._ceab .Seek (int64 (_gaea ._aaf ["\u0063\u006d\u0061\u0070"])+_gad ,_g .SeekStart );_edf :=_gaea .ReadUShort ();if _edf !=4{return _gf .Errorf ("u\u006e\u0065\u0078\u0070\u0065\u0063t\u0065\u0064\u0020\u0073\u0075\u0062t\u0061\u0062\u006c\u0065\u0020\u0066\u006fr\u006d\u0061\u0074\u003a\u0020\u0025\u0064\u0020\u0028\u0025w\u0029",_edf ,_gb .ErrNotSupported );
};_gaea .Skip (2*2);_ebcg :=int (_gaea .ReadUShort ()/2);_gaea .Skip (3*2);for _fea :=0;_fea < _ebcg ;_fea ++{_fcfd =append (_fcfd ,rune (_gaea .ReadUShort ()));};_gaea .Skip (2);for _dac :=0;_dac < _ebcg ;_dac ++{_gbac =append (_gbac ,rune (_gaea .ReadUShort ()));
};for _eag :=0;_eag < _ebcg ;_eag ++{_agc =append (_agc ,_gaea .ReadShort ());};_agf ,_ :=_gaea ._ceab .Seek (int64 (0),_g .SeekCurrent );for _ade :=0;_ade < _ebcg ;_ade ++{_ceb =append (_ceb ,_gaea .ReadUShort ());};for _abf :=0;_abf < _ebcg ;_abf ++{_eca :=_gbac [_abf ];
_ffea :=_fcfd [_abf ];_cgge :=_agc [_abf ];_bgg :=_ceb [_abf ];if _bgg > 0{_gaea ._ceab .Seek (_agf +2*int64 (_abf )+int64 (_bgg ),_g .SeekStart );};for _degf :=_eca ;_degf <=_ffea ;_degf ++{if _degf ==0xFFFF{break ;};var _abfe int32 ;if _bgg > 0{_abfe =int32 (_gaea .ReadUShort ());
if _abfe > 0{_abfe +=int32 (_cgge );};}else {_abfe =_degf +int32 (_cgge );};if _abfe >=65536{_abfe -=65536;};if _abfe > 0{_gaea ._eab .Chars [_degf ]=GID (_abfe );};};};return nil ;};func (_fe StdFont )GetRuneMetrics (r rune )(CharMetrics ,bool ){_ege ,_cdb :=_fe ._fbcf .Read (r );
return _ege ,_cdb ;};var _bbd *RuneCharSafeMap ;const (_gde ="\u0054\u0069\u006de\u0073";TimesRomanName =StdFontName ("T\u0069\u006d\u0065\u0073\u002d\u0052\u006f\u006d\u0061\u006e");TimesBoldName =StdFontName ("\u0054\u0069\u006d\u0065\u0073\u002d\u0042\u006f\u006c\u0064");
TimesItalicName =StdFontName ("\u0054\u0069\u006de\u0073\u002d\u0049\u0074\u0061\u006c\u0069\u0063");TimesBoldItalicName =StdFontName ("\u0054\u0069m\u0065\u0073\u002dB\u006f\u006c\u0064\u0049\u0074\u0061\u006c\u0069\u0063"););func init (){RegisterStdFont (CourierName ,_ada ,"\u0043\u006f\u0075\u0072\u0069\u0065\u0072\u0043\u006f\u0075\u0072\u0069e\u0072\u004e\u0065\u0077","\u0043\u006f\u0075\u0072\u0069\u0065\u0072\u004e\u0065\u0077");
RegisterStdFont (CourierBoldName ,_eege ,"\u0043o\u0075r\u0069\u0065\u0072\u004e\u0065\u0077\u002c\u0042\u006f\u006c\u0064");RegisterStdFont (CourierObliqueName ,_adb ,"\u0043\u006f\u0075\u0072\u0069\u0065\u0072\u004e\u0065\u0077\u002c\u0049t\u0061\u006c\u0069\u0063");
RegisterStdFont (CourierBoldObliqueName ,_egc ,"C\u006f\u0075\u0072\u0069er\u004ee\u0077\u002c\u0042\u006f\u006cd\u0049\u0074\u0061\u006c\u0069\u0063");};func (_ga *RuneCharSafeMap )Write (b rune ,r CharMetrics ){_ga ._fb .Lock ();defer _ga ._fb .Unlock ();
_ga ._ec [b ]=r ;};func _dbb (){_deg =MakeRuneCharSafeMap (len (_ddg ));_gcd =MakeRuneCharSafeMap (len (_ddg ));for _fbg ,_aeb :=range _ddg {_deg .Write (_aeb ,CharMetrics {Wx :float64 (_cadf [_fbg ])});_gcd .Write (_aeb ,CharMetrics {Wx :float64 (_bdf [_fbg ])});
};_ecdg =_deg .Copy ();_fba =_gcd .Copy ();};func IsStdFont (name StdFontName )bool {_ ,_ca :=_cc .read (name );return _ca };func (_dgb *ttfParser )ReadSByte ()(_bbb int8 ){_e .Read (_dgb ._ceab ,_e .BigEndian ,&_bbb );return _bbb };func _ed ()StdFont {_bga .Do (_dbb );
_fcb :=Descriptor {Name :HelveticaBoldObliqueName ,Family :string (HelveticaName ),Weight :FontWeightBold ,Flags :0x0060,BBox :[4]float64 {-174,-228,1114,962},ItalicAngle :-12,Ascent :718,Descent :-207,CapHeight :718,XHeight :532,StemV :140,StemH :118};
return NewStdFont (_fcb ,_fba );};func (_dee *RuneCharSafeMap )Read (b rune )(CharMetrics ,bool ){_dee ._fb .RLock ();defer _dee ._fb .RUnlock ();_fa ,_fac :=_dee ._ec [b ];return _fa ,_fac ;};type fontMap struct{_eb .Mutex ;_egf map[StdFontName ]func ()StdFont ;
};func (_ff *TtfType )MakeToUnicode ()*_b .CMap {_ccf :=make (map[_b .CharCode ]rune );if len (_ff .GlyphNames )==0{return _b .NewToUnicodeCMap (_ccf );};for _ddf ,_cab :=range _ff .Chars {_fcaf :=_b .CharCode (_ddf );_fad :=_ff .GlyphNames [_cab ];_bfe ,_dae :=_dd .GlyphToRune (_fad );
if !_dae {_ddd .Log .Debug ("\u004e\u006f \u0072\u0075\u006e\u0065\u002e\u0020\u0063\u006f\u0064\u0065\u003d\u0030\u0078\u0025\u0030\u0034\u0078\u0020\u0067\u006c\u0079\u0070h=\u0025\u0071",_ddf ,_fad );_bfe =_dd .MissingCodeRune ;};_ccf [_fcaf ]=_bfe ;
};return _b .NewToUnicodeCMap (_ccf );};func (_efc *ttfParser )ParsePost ()error {if _ffee :=_efc .Seek ("\u0070\u006f\u0073\u0074");_ffee !=nil {return _ffee ;};_cae :=_efc .Read32Fixed ();_efc ._eab .ItalicAngle =_efc .Read32Fixed ();_efc ._eab .UnderlinePosition =_efc .ReadShort ();
_efc ._eab .UnderlineThickness =_efc .ReadShort ();_efc ._eab .IsFixedPitch =_efc .ReadULong ()!=0;_efc .ReadULong ();_efc .ReadULong ();_efc .ReadULong ();_efc .ReadULong ();_ddd .Log .Trace ("\u0050a\u0072\u0073\u0065\u0050\u006f\u0073\u0074\u003a\u0020\u0066\u006fr\u006d\u0061\u0074\u0054\u0079\u0070\u0065\u003d\u0025\u0066",_cae );
switch _cae {case 1.0:_efc ._eab .GlyphNames =_fdc ;case 2.0:_gdab :=int (_efc .ReadUShort ());_bee :=make ([]int ,_gdab );_efc ._eab .GlyphNames =make ([]GlyphName ,_gdab );_aba :=-1;for _adeb :=0;_adeb < _gdab ;_adeb ++{_ebcb :=int (_efc .ReadUShort ());
_bee [_adeb ]=_ebcb ;if _ebcb <=0x7fff&&_ebcb > _aba {_aba =_ebcb ;};};var _ead []GlyphName ;if _aba >=len (_fdc ){_ead =make ([]GlyphName ,_aba -len (_fdc )+1);for _gdc :=0;_gdc < _aba -len (_fdc )+1;_gdc ++{_caef :=int (_efc .readByte ());_dedg ,_geg :=_efc .ReadStr (_caef );
if _geg !=nil {return _geg ;};_ead [_gdc ]=GlyphName (_dedg );};};for _agb :=0;_agb < _gdab ;_agb ++{_ffbe :=_bee [_agb ];if _ffbe < len (_fdc ){_efc ._eab .GlyphNames [_agb ]=_fdc [_ffbe ];}else if _ffbe >=len (_fdc )&&_ffbe <=32767{_efc ._eab .GlyphNames [_agb ]=_ead [_ffbe -len (_fdc )];
}else {_efc ._eab .GlyphNames [_agb ]="\u002e\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064";};};case 2.5:_agag :=make ([]int ,_efc ._bdb );for _cbdb :=0;_cbdb < len (_agag );_cbdb ++{_daab :=int (_efc .ReadSByte ());_agag [_cbdb ]=_cbdb +1+_daab ;
};_efc ._eab .GlyphNames =make ([]GlyphName ,len (_agag ));for _cefe :=0;_cefe < len (_efc ._eab .GlyphNames );_cefe ++{_egd :=_fdc [_agag [_cefe ]];_efc ._eab .GlyphNames [_cefe ]=_egd ;};case 3.0:_ddd .Log .Debug ("\u004e\u006f\u0020\u0050\u006f\u0073t\u0053\u0063\u0072i\u0070\u0074\u0020n\u0061\u006d\u0065\u0020\u0069\u006e\u0066\u006f\u0072\u006da\u0074\u0069\u006f\u006e\u0020is\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0066\u006f\u0072\u0020\u0074\u0068\u0065\u0020\u0066\u006f\u006e\u0074\u002e");
default:_ddd .Log .Debug ("\u0045\u0052\u0052\u004fR\u003a\u0020\u0055\u006e\u006b\u006e\u006f\u0077\u006e\u0020f\u006fr\u006d\u0061\u0074\u0054\u0079\u0070\u0065=\u0025\u0066",_cae );};return nil ;};func (_bba *TtfType )NewEncoder ()_dd .TextEncoder {return _dd .NewTrueTypeFontEncoder (_bba .Chars )};
func (_da StdFont )GetMetricsTable ()*RuneCharSafeMap {return _da ._fbcf };func init (){RegisterStdFont (HelveticaName ,_gd ,"\u0041\u0072\u0069a\u006c");RegisterStdFont (HelveticaBoldName ,_ae ,"\u0041\u0072\u0069\u0061\u006c\u002c\u0042\u006f\u006c\u0064");
RegisterStdFont (HelveticaObliqueName ,_afb ,"\u0041\u0072\u0069a\u006c\u002c\u0049\u0074\u0061\u006c\u0069\u0063");RegisterStdFont (HelveticaBoldObliqueName ,_ed ,"\u0041\u0072i\u0061\u006c\u002cB\u006f\u006c\u0064\u0049\u0074\u0061\u006c\u0069\u0063");
};func _gdeb ()StdFont {_gbec .Do (_aff );_dff :=Descriptor {Name :TimesBoldItalicName ,Family :_gde ,Weight :FontWeightBold ,Flags :0x0060,BBox :[4]float64 {-200,-218,996,921},ItalicAngle :-15,Ascent :683,Descent :-217,CapHeight :669,XHeight :462,StemV :121,StemH :42};
return NewStdFont (_dff ,_bbd );};type GID =_dd .GID ;func _egc ()StdFont {_fbb .Do (_ba );_db :=Descriptor {Name :CourierBoldObliqueName ,Family :string (CourierName ),Weight :FontWeightBold ,Flags :0x0061,BBox :[4]float64 {-57,-250,869,801},ItalicAngle :-12,Ascent :629,Descent :-157,CapHeight :562,XHeight :439,StemV :106,StemH :84};
return NewStdFont (_db ,_dga );};var _dbc =&RuneCharSafeMap {_ec :map[rune ]CharMetrics {' ':{Wx :278},'→':{Wx :838},'↔':{Wx :1016},'↕':{Wx :458},'①':{Wx :788},'②':{Wx :788},'③':{Wx :788},'④':{Wx :788},'⑤':{Wx :788},'⑥':{Wx :788},'⑦':{Wx :788},'⑧':{Wx :788},'⑨':{Wx :788},'⑩':{Wx :788},'■':{Wx :761},'▲':{Wx :892},'▼':{Wx :892},'◆':{Wx :788},'●':{Wx :791},'◗':{Wx :438},'★':{Wx :816},'☎':{Wx :719},'☛':{Wx :960},'☞':{Wx :939},'♠':{Wx :626},'♣':{Wx :776},'♥':{Wx :694},'♦':{Wx :595},'✁':{Wx :974},'✂':{Wx :961},'✃':{Wx :974},'✄':{Wx :980},'✆':{Wx :789},'✇':{Wx :790},'✈':{Wx :791},'✉':{Wx :690},'✌':{Wx :549},'✍':{Wx :855},'✎':{Wx :911},'✏':{Wx :933},'✐':{Wx :911},'✑':{Wx :945},'✒':{Wx :974},'✓':{Wx :755},'✔':{Wx :846},'✕':{Wx :762},'✖':{Wx :761},'✗':{Wx :571},'✘':{Wx :677},'✙':{Wx :763},'✚':{Wx :760},'✛':{Wx :759},'✜':{Wx :754},'✝':{Wx :494},'✞':{Wx :552},'✟':{Wx :537},'✠':{Wx :577},'✡':{Wx :692},'✢':{Wx :786},'✣':{Wx :788},'✤':{Wx :788},'✥':{Wx :790},'✦':{Wx :793},'✧':{Wx :794},'✩':{Wx :823},'✪':{Wx :789},'✫':{Wx :841},'✬':{Wx :823},'✭':{Wx :833},'✮':{Wx :816},'✯':{Wx :831},'✰':{Wx :923},'✱':{Wx :744},'✲':{Wx :723},'✳':{Wx :749},'✴':{Wx :790},'✵':{Wx :792},'✶':{Wx :695},'✷':{Wx :776},'✸':{Wx :768},'✹':{Wx :792},'✺':{Wx :759},'✻':{Wx :707},'✼':{Wx :708},'✽':{Wx :682},'✾':{Wx :701},'✿':{Wx :826},'❀':{Wx :815},'❁':{Wx :789},'❂':{Wx :789},'❃':{Wx :707},'❄':{Wx :687},'❅':{Wx :696},'❆':{Wx :689},'❇':{Wx :786},'❈':{Wx :787},'❉':{Wx :713},'❊':{Wx :791},'❋':{Wx :785},'❍':{Wx :873},'❏':{Wx :762},'❐':{Wx :762},'❑':{Wx :759},'❒':{Wx :759},'❖':{Wx :784},'❘':{Wx :138},'❙':{Wx :277},'❚':{Wx :415},'❛':{Wx :392},'❜':{Wx :392},'❝':{Wx :668},'❞':{Wx :668},'❡':{Wx :732},'❢':{Wx :544},'❣':{Wx :544},'❤':{Wx :910},'❥':{Wx :667},'❦':{Wx :760},'❧':{Wx :760},'❶':{Wx :788},'❷':{Wx :788},'❸':{Wx :788},'❹':{Wx :788},'❺':{Wx :788},'❻':{Wx :788},'❼':{Wx :788},'❽':{Wx :788},'❾':{Wx :788},'❿':{Wx :788},'➀':{Wx :788},'➁':{Wx :788},'➂':{Wx :788},'➃':{Wx :788},'➄':{Wx :788},'➅':{Wx :788},'➆':{Wx :788},'➇':{Wx :788},'➈':{Wx :788},'➉':{Wx :788},'➊':{Wx :788},'➋':{Wx :788},'➌':{Wx :788},'➍':{Wx :788},'➎':{Wx :788},'➏':{Wx :788},'➐':{Wx :788},'➑':{Wx :788},'➒':{Wx :788},'➓':{Wx :788},'➔':{Wx :894},'➘':{Wx :748},'➙':{Wx :924},'➚':{Wx :748},'➛':{Wx :918},'➜':{Wx :927},'➝':{Wx :928},'➞':{Wx :928},'➟':{Wx :834},'➠':{Wx :873},'➡':{Wx :828},'➢':{Wx :924},'➣':{Wx :924},'➤':{Wx :917},'➥':{Wx :930},'➦':{Wx :931},'➧':{Wx :463},'➨':{Wx :883},'➩':{Wx :836},'➪':{Wx :836},'➫':{Wx :867},'➬':{Wx :867},'➭':{Wx :696},'➮':{Wx :696},'➯':{Wx :874},'➱':{Wx :874},'➲':{Wx :760},'➳':{Wx :946},'➴':{Wx :771},'➵':{Wx :865},'➶':{Wx :771},'➷':{Wx :888},'➸':{Wx :967},'➹':{Wx :888},'➺':{Wx :831},'➻':{Wx :873},'➼':{Wx :927},'➽':{Wx :970},'➾':{Wx :918},'\uf8d7':{Wx :390},'\uf8d8':{Wx :390},'\uf8d9':{Wx :317},'\uf8da':{Wx :317},'\uf8db':{Wx :276},'\uf8dc':{Wx :276},'\uf8dd':{Wx :509},'\uf8de':{Wx :509},'\uf8df':{Wx :410},'\uf8e0':{Wx :410},'\uf8e1':{Wx :234},'\uf8e2':{Wx :234},'\uf8e3':{Wx :334},'\uf8e4':{Wx :334}}};
func (_egg *ttfParser )ParseHead ()error {if _cge :=_egg .Seek ("\u0068\u0065\u0061\u0064");_cge !=nil {return _cge ;};_egg .Skip (3*4);_fcd :=_egg .ReadULong ();if _fcd !=0x5F0F3CF5{_ddd .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0049\u006e\u0063\u006fr\u0072e\u0063\u0074\u0020\u006d\u0061\u0067\u0069\u0063\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u002e\u0020\u0046\u006fn\u0074\u0020\u006d\u0061\u0079\u0020\u006e\u006f\u0074\u0020\u0064\u0069\u0073\u0070\u006c\u0061\u0079\u0020\u0063\u006f\u0072\u0072\u0065\u0063t\u006c\u0079\u002e\u0020\u0025\u0073",_egg );
};_egg .Skip (2);_egg ._eab .UnitsPerEm =_egg .ReadUShort ();_egg .Skip (2*8);_egg ._eab .Xmin =_egg .ReadShort ();_egg ._eab .Ymin =_egg .ReadShort ();_egg ._eab .Xmax =_egg .ReadShort ();_egg ._eab .Ymax =_egg .ReadShort ();return nil ;};func TtfParse (r _g .ReadSeeker )(TtfType ,error ){_gcgb :=&ttfParser {_ceab :r };
return _gcgb .Parse ()};var _ddg =[]rune {'A','Æ','Á','Ă','Â','Ä','À','Ā','Ą','Å','Ã','B','C','Ć','Č','Ç','D','Ď','Đ','∆','E','É','Ě','Ê','Ë','Ė','È','Ē','Ę','Ð','€','F','G','Ğ','Ģ','H','I','Í','Î','Ï','İ','Ì','Ī','Į','J','K','Ķ','L','Ĺ','Ľ','Ļ','Ł','M','N','Ń','Ň','Ņ','Ñ','O','Œ','Ó','Ô','Ö','Ò','Ő','Ō','Ø','Õ','P','Q','R','Ŕ','Ř','Ŗ','S','Ś','Š','Ş','Ș','T','Ť','Ţ','Þ','U','Ú','Û','Ü','Ù','Ű','Ū','Ų','Ů','V','W','X','Y','Ý','Ÿ','Z','Ź','Ž','Ż','a','á','ă','â','´','ä','æ','à','ā','&','ą','å','^','~','*','@','ã','b','\\','|','{','}','[',']','˘','¦','•','c','ć','ˇ','č','ç','¸','¢','ˆ',':',',','\uf6c3','©','¤','d','†','‡','ď','đ','°','¨','÷','$','˙','ı','e','é','ě','ê','ë','ė','è','8','…','ē','—','','ę','=','ð','!','¡','f','fi','5','fl','ƒ','4','','g','ğ','ģ','ß','`','>','≥','«','»','','','h','˝','-','i','í','î','ï','ì','ī','į','j','k','ķ','l','ĺ','ľ','ļ','<','≤','¬','◊','ł','m','¯','','µ','×','n','ń','ň','ņ','9','≠','ñ','#','o','ó','ô','ö','œ','˛','ò','ő','ō','1','½','¼','¹','ª','º','ø','õ','p','¶','(',')','∂','%','.','·','‰','+','±','q','?','¿','"','„','“','”','','','','\'','r','ŕ','√','ř','ŗ','®','˚','s','ś','š','ş','ș','§',';','7','6','/',' ','£','∑','t','ť','ţ','þ','3','¾','³','˜','™','2','²','u','ú','û','ü','ù','ű','ū','_','ų','ů','v','w','x','y','ý','ÿ','¥','z','ź','ž','ż','0'};
var _gcd *RuneCharSafeMap ;func (_cga *ttfParser )ParseMaxp ()error {if _dfa :=_cga .Seek ("\u006d\u0061\u0078\u0070");_dfa !=nil {return _dfa ;};_cga .Skip (4);_cga ._bdb =_cga .ReadUShort ();return nil ;};func NewStdFontWithEncoding (desc Descriptor ,metrics *RuneCharSafeMap ,encoder _dd .TextEncoder )StdFont {var _eeg rune =0xA0;
if _ ,_gc :=metrics .Read (_eeg );!_gc {_af ,_ :=metrics .Read (0x20);metrics .Write (_eeg ,_af );};return StdFont {_gffd :desc ,_fbcf :metrics ,_eee :encoder };};func _aff (){_fdf =MakeRuneCharSafeMap (len (_ddg ));_cbf =MakeRuneCharSafeMap (len (_ddg ));
_bbd =MakeRuneCharSafeMap (len (_ddg ));_cgb =MakeRuneCharSafeMap (len (_ddg ));for _ef ,_bb :=range _ddg {_fdf .Write (_bb ,CharMetrics {Wx :float64 (_dfb [_ef ])});_cbf .Write (_bb ,CharMetrics {Wx :float64 (_ecc [_ef ])});_bbd .Write (_bb ,CharMetrics {Wx :float64 (_ebb [_ef ])});
_cgb .Write (_bb ,CharMetrics {Wx :float64 (_adg [_ef ])});};};type GlyphName =_dd .GlyphName ;func (_edeg *ttfParser )Seek (tag string )error {_efe ,_cgee :=_edeg ._aaf [tag ];if !_cgee {return _d .Errorf ("\u0074\u0061\u0062\u006ce \u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0073",tag );
};_edeg ._ceab .Seek (int64 (_efe ),_g .SeekStart );return nil ;};func init (){RegisterStdFont (SymbolName ,_faa ,"\u0053\u0079\u006d\u0062\u006f\u006c\u002c\u0049\u0074\u0061\u006c\u0069\u0063","S\u0079\u006d\u0062\u006f\u006c\u002c\u0042\u006f\u006c\u0064","\u0053\u0079\u006d\u0062\u006f\u006c\u002c\u0042\u006f\u006c\u0064\u0049t\u0061\u006c\u0069\u0063");
RegisterStdFont (ZapfDingbatsName ,_abd );};var _fdf *RuneCharSafeMap ;func _eege ()StdFont {_fbb .Do (_ba );_bd :=Descriptor {Name :CourierBoldName ,Family :string (CourierName ),Weight :FontWeightBold ,Flags :0x0021,BBox :[4]float64 {-113,-250,749,801},ItalicAngle :0,Ascent :629,Descent :-157,CapHeight :562,XHeight :439,StemV :106,StemH :84};
return NewStdFont (_bd ,_ece );};const (HelveticaName =StdFontName ("\u0048e\u006c\u0076\u0065\u0074\u0069\u0063a");HelveticaBoldName =StdFontName ("\u0048\u0065\u006c\u0076\u0065\u0074\u0069\u0063\u0061-\u0042\u006f\u006c\u0064");HelveticaObliqueName =StdFontName ("\u0048\u0065\u006c\u0076\u0065\u0074\u0069\u0063\u0061\u002d\u004f\u0062l\u0069\u0071\u0075\u0065");
HelveticaBoldObliqueName =StdFontName ("H\u0065\u006c\u0076\u0065ti\u0063a\u002d\u0042\u006f\u006c\u0064O\u0062\u006c\u0069\u0071\u0075\u0065"););func NewStdFontByName (name StdFontName )(StdFont ,bool ){_ded ,_cgf :=_cc .read (name );if !_cgf {return StdFont {},false ;
};return _ded (),true ;};func (_dcgb *ttfParser )ParseCmap ()error {var _cfc int64 ;if _aad :=_dcgb .Seek ("\u0063\u006d\u0061\u0070");_aad !=nil {return _aad ;};_ddd .Log .Trace ("\u0050a\u0072\u0073\u0065\u0043\u006d\u0061p");_dcgb .ReadUShort ();_facd :=int (_dcgb .ReadUShort ());
_bcfa :=int64 (0);_ccd :=int64 (0);_gcdf :=int64 (0);for _aee :=0;_aee < _facd ;_aee ++{_ggc :=_dcgb .ReadUShort ();_cgbc :=_dcgb .ReadUShort ();_cfc =int64 (_dcgb .ReadULong ());if _ggc ==3&&_cgbc ==1{_ccd =_cfc ;}else if _ggc ==3&&_cgbc ==10{_gcdf =_cfc ;
}else if _ggc ==1&&_cgbc ==0{_bcfa =_cfc ;};};if _bcfa !=0{if _cbfe :=_dcgb .parseCmapVersion (_bcfa );_cbfe !=nil {return _cbfe ;};};if _ccd !=0{if _cecd :=_dcgb .parseCmapSubtable31 (_ccd );_cecd !=nil {return _cecd ;};};if _gcdf !=0{if _aag :=_dcgb .parseCmapVersion (_gcdf );
_aag !=nil {return _aag ;};};if _ccd ==0&&_bcfa ==0&&_gcdf ==0{_ddd .Log .Debug ("\u0074\u0074\u0066P\u0061\u0072\u0073\u0065\u0072\u002e\u0050\u0061\u0072\u0073\u0065\u0043\u006d\u0061\u0070\u002e\u0020\u004e\u006f\u0020\u0033\u0031\u002c\u0020\u0031\u0030\u002c\u0020\u00331\u0030\u0020\u0074\u0061\u0062\u006c\u0065\u002e");
};return nil ;};func init (){RegisterStdFont (TimesRomanName ,_abc ,"\u0054\u0069\u006d\u0065\u0073\u004e\u0065\u0077\u0052\u006f\u006d\u0061\u006e","\u0054\u0069\u006de\u0073");RegisterStdFont (TimesBoldName ,_ebc ,"\u0054i\u006de\u0073\u004e\u0065\u0077\u0052o\u006d\u0061n\u002c\u0042\u006f\u006c\u0064","\u0054\u0069\u006d\u0065\u0073\u002c\u0042\u006f\u006c\u0064");
RegisterStdFont (TimesItalicName ,_gcg ,"T\u0069m\u0065\u0073\u004e\u0065\u0077\u0052\u006f\u006da\u006e\u002c\u0049\u0074al\u0069\u0063","\u0054\u0069\u006de\u0073\u002c\u0049\u0074\u0061\u006c\u0069\u0063");RegisterStdFont (TimesBoldItalicName ,_gdeb ,"\u0054i\u006d\u0065\u0073\u004e\u0065\u0077\u0052\u006f\u006d\u0061\u006e,\u0042\u006f\u006c\u0064\u0049\u0074\u0061\u006c\u0069\u0063","\u0054\u0069m\u0065\u0073\u002cB\u006f\u006c\u0064\u0049\u0074\u0061\u006c\u0069\u0063");
};func TtfParseFile (fileStr string )(TtfType ,error ){_cdga ,_cef :=_ce .Open (fileStr );if _cef !=nil {return TtfType {},_cef ;};defer _cdga .Close ();return TtfParse (_cdga );};var _gbec _eb .Once ;var _dfb =[]int16 {722,889,722,722,722,722,722,722,722,722,722,667,667,667,667,667,722,722,722,612,611,611,611,611,611,611,611,611,611,722,500,556,722,722,722,722,333,333,333,333,333,333,333,333,389,722,722,611,611,611,611,611,889,722,722,722,722,722,722,889,722,722,722,722,722,722,722,722,556,722,667,667,667,667,556,556,556,556,556,611,611,611,556,722,722,722,722,722,722,722,722,722,722,944,722,722,722,722,611,611,611,611,444,444,444,444,333,444,667,444,444,778,444,444,469,541,500,921,444,500,278,200,480,480,333,333,333,200,350,444,444,333,444,444,333,500,333,278,250,250,760,500,500,500,500,588,500,400,333,564,500,333,278,444,444,444,444,444,444,444,500,1000,444,1000,500,444,564,500,333,333,333,556,500,556,500,500,167,500,500,500,500,333,564,549,500,500,333,333,500,333,333,278,278,278,278,278,278,278,278,500,500,278,278,344,278,564,549,564,471,278,778,333,564,500,564,500,500,500,500,500,549,500,500,500,500,500,500,722,333,500,500,500,500,750,750,300,276,310,500,500,500,453,333,333,476,833,250,250,1000,564,564,500,444,444,408,444,444,444,333,333,333,180,333,333,453,333,333,760,333,389,389,389,389,389,500,278,500,500,278,250,500,600,278,326,278,500,500,750,300,333,980,500,300,500,500,500,500,500,500,500,500,500,500,500,722,500,500,500,500,500,444,444,444,444,500};
func (_fcc *ttfParser )parseCmapVersion (_cbb int64 )error {_ddd .Log .Trace ("p\u0061\u0072\u0073\u0065\u0043\u006da\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e\u003a \u006f\u0066\u0066s\u0065t\u003d\u0025\u0064",_cbb );if _fcc ._eab .Chars ==nil {_fcc ._eab .Chars =make (map[rune ]GID );
};_fcc ._ceab .Seek (int64 (_fcc ._aaf ["\u0063\u006d\u0061\u0070"])+_cbb ,_g .SeekStart );var _fdg ,_feg uint32 ;_fdfg :=_fcc .ReadUShort ();if _fdfg < 8{_fdg =uint32 (_fcc .ReadUShort ());_feg =uint32 (_fcc .ReadUShort ());}else {_fcc .ReadUShort ();
_fdg =_fcc .ReadULong ();_feg =_fcc .ReadULong ();};_ddd .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u0043m\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0020\u0066\u006f\u0072\u006d\u0061\u0074\u003d\u0025\u0064 \u006c\u0065\u006e\u0067\u0074\u0068\u003d\u0025\u0064\u0020\u006c\u0061\u006e\u0067u\u0061g\u0065\u003d\u0025\u0064",_fdfg ,_fdg ,_feg );
switch _fdfg {case 0:return _fcc .parseCmapFormat0 ();case 6:return _fcc .parseCmapFormat6 ();case 12:return _fcc .parseCmapFormat12 ();default:_ddd .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0063m\u0061\u0070\u0020\u0066\u006f\u0072\u006da\u0074\u003d\u0025\u0064",_fdfg );
return nil ;};};func (_cbg *ttfParser )ParseName ()error {if _ecf :=_cbg .Seek ("\u006e\u0061\u006d\u0065");_ecf !=nil {return _ecf ;};_cca ,_ :=_cbg ._ceab .Seek (0,_g .SeekCurrent );_cbg ._eab .PostScriptName ="";_cbg .Skip (2);_cbbf :=_cbg .ReadUShort ();
_aga :=_cbg .ReadUShort ();for _eed :=uint16 (0);_eed < _cbbf &&_cbg ._eab .PostScriptName =="";_eed ++{_cbg .Skip (3*2);_cefa :=_cbg .ReadUShort ();_cbfea :=_cbg .ReadUShort ();_edef :=_cbg .ReadUShort ();if _cefa ==6{_cbg ._ceab .Seek (_cca +int64 (_aga )+int64 (_edef ),_g .SeekStart );
_gcdfa ,_cff :=_cbg .ReadStr (int (_cbfea ));if _cff !=nil {return _cff ;};_gcdfa =_de .Replace (_gcdfa ,"\u0000","",-1);_ccad ,_cff :=_a .Compile ("\u005b\u0028\u0029\u007b\u007d\u003c\u003e\u0020\u002f%\u005b\u005c\u005d\u005d");if _cff !=nil {return _cff ;
};_cbg ._eab .PostScriptName =_ccad .ReplaceAllString (_gcdfa ,"");};};if _cbg ._eab .PostScriptName ==""{_ddd .Log .Debug ("\u0050a\u0072\u0073e\u004e\u0061\u006de\u003a\u0020\u0054\u0068\u0065\u0020\u006ea\u006d\u0065\u0020\u0050\u006f\u0073t\u0053\u0063\u0072\u0069\u0070\u0074\u0020\u0077\u0061\u0073\u0020n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u002e");
};return nil ;};func (_bc *fontMap )read (_ecb StdFontName )(func ()StdFont ,bool ){_bc .Lock ();defer _bc .Unlock ();_cdd ,_cba :=_bc ._egf [_ecb ];return _cdd ,_cba ;};func (_ebg *ttfParser )Skip (n int ){_ebg ._ceab .Seek (int64 (n ),_g .SeekCurrent )};
func _faa ()StdFont {_ge :=_dd .NewSymbolEncoder ();_gbe :=Descriptor {Name :SymbolName ,Family :string (SymbolName ),Weight :FontWeightMedium ,Flags :0x0004,BBox :[4]float64 {-180,-293,1090,1010},ItalicAngle :0,Ascent :0,Descent :0,CapHeight :0,XHeight :0,StemV :85,StemH :92};
return NewStdFontWithEncoding (_gbe ,_gcbg ,_ge );};func (_ee *RuneCharSafeMap )Copy ()*RuneCharSafeMap {_bg :=MakeRuneCharSafeMap (_ee .Length ());_ee .Range (func (_bgd rune ,_gg CharMetrics )(_cg bool ){_bg ._ec [_bgd ]=_gg ;return false });return _bg ;
};func (_cgbd *ttfParser )ParseComponents ()error {if _bbdd :=_cgbd .ParseHead ();_bbdd !=nil {return _bbdd ;};if _dea :=_cgbd .ParseHhea ();_dea !=nil {return _dea ;};if _bceg :=_cgbd .ParseMaxp ();_bceg !=nil {return _bceg ;};if _ggf :=_cgbd .ParseHmtx ();
_ggf !=nil {return _ggf ;};if _ ,_eegb :=_cgbd ._aaf ["\u006e\u0061\u006d\u0065"];_eegb {if _fcg :=_cgbd .ParseName ();_fcg !=nil {return _fcg ;};};if _ ,_bcf :=_cgbd ._aaf ["\u004f\u0053\u002f\u0032"];_bcf {if _be :=_cgbd .ParseOS2 ();_be !=nil {return _be ;
};};if _ ,_beg :=_cgbd ._aaf ["\u0070\u006f\u0073\u0074"];_beg {if _gdb :=_cgbd .ParsePost ();_gdb !=nil {return _gdb ;};};if _ ,_bdg :=_cgbd ._aaf ["\u0063\u006d\u0061\u0070"];_bdg {if _gef :=_cgbd .ParseCmap ();_gef !=nil {return _gef ;};};return nil ;
};var _adg =[]int16 {611,889,611,611,611,611,611,611,611,611,611,611,667,667,667,667,722,722,722,612,611,611,611,611,611,611,611,611,611,722,500,611,722,722,722,722,333,333,333,333,333,333,333,333,444,667,667,556,556,611,556,556,833,667,667,667,667,667,722,944,722,722,722,722,722,722,722,722,611,722,611,611,611,611,500,500,500,500,500,556,556,556,611,722,722,722,722,722,722,722,722,722,611,833,611,556,556,556,556,556,556,556,500,500,500,500,333,500,667,500,500,778,500,500,422,541,500,920,500,500,278,275,400,400,389,389,333,275,350,444,444,333,444,444,333,500,333,333,250,250,760,500,500,500,500,544,500,400,333,675,500,333,278,444,444,444,444,444,444,444,500,889,444,889,500,444,675,500,333,389,278,500,500,500,500,500,167,500,500,500,500,333,675,549,500,500,333,333,500,333,333,278,278,278,278,278,278,278,278,444,444,278,278,300,278,675,549,675,471,278,722,333,675,500,675,500,500,500,500,500,549,500,500,500,500,500,500,667,333,500,500,500,500,750,750,300,276,310,500,500,500,523,333,333,476,833,250,250,1000,675,675,500,500,500,420,556,556,556,333,333,333,214,389,389,453,389,389,760,333,389,389,389,389,389,500,333,500,500,278,250,500,600,278,300,278,500,500,750,300,333,980,500,300,500,500,500,500,500,500,500,500,500,500,444,667,444,444,444,444,500,389,389,389,389,500};
func (_dbd *ttfParser )ReadUShort ()(_adee uint16 ){_e .Read (_dbd ._ceab ,_e .BigEndian ,&_adee );return _adee ;};var _bga _eb .Once ;type StdFontName string ;type ttfParser struct{_eab TtfType ;_ceab _g .ReadSeeker ;_aaf map[string ]uint32 ;_cfg uint16 ;
_bdb uint16 ;};var _ecc =[]int16 {722,1000,722,722,722,722,722,722,722,722,722,667,722,722,722,722,722,722,722,612,667,667,667,667,667,667,667,667,667,722,500,611,778,778,778,778,389,389,389,389,389,389,389,389,500,778,778,667,667,667,667,667,944,722,722,722,722,722,778,1000,778,778,778,778,778,778,778,778,611,778,722,722,722,722,556,556,556,556,556,667,667,667,611,722,722,722,722,722,722,722,722,722,722,1000,722,722,722,722,667,667,667,667,500,500,500,500,333,500,722,500,500,833,500,500,581,520,500,930,500,556,278,220,394,394,333,333,333,220,350,444,444,333,444,444,333,500,333,333,250,250,747,500,556,500,500,672,556,400,333,570,500,333,278,444,444,444,444,444,444,444,500,1000,444,1000,500,444,570,500,333,333,333,556,500,556,500,500,167,500,500,500,556,333,570,549,500,500,333,333,556,333,333,278,278,278,278,278,278,278,333,556,556,278,278,394,278,570,549,570,494,278,833,333,570,556,570,556,556,556,556,500,549,556,500,500,500,500,500,722,333,500,500,500,500,750,750,300,300,330,500,500,556,540,333,333,494,1000,250,250,1000,570,570,556,500,500,555,500,500,500,333,333,333,278,444,444,549,444,444,747,333,389,389,389,389,389,500,333,500,500,278,250,500,600,333,416,333,556,500,750,300,333,1000,500,300,556,556,556,556,556,556,556,500,556,556,500,722,500,500,500,500,500,444,444,444,444,500};
func (_ffa *ttfParser )ParseHhea ()error {if _cgg :=_ffa .Seek ("\u0068\u0068\u0065\u0061");_cgg !=nil {return _cgg ;};_ffa .Skip (4+15*2);_ffa ._cfg =_ffa .ReadUShort ();return nil ;};func _adb ()StdFont {_fbb .Do (_ba );_afd :=Descriptor {Name :CourierObliqueName ,Family :string (CourierName ),Weight :FontWeightMedium ,Flags :0x0061,BBox :[4]float64 {-27,-250,849,805},ItalicAngle :-12,Ascent :629,Descent :-157,CapHeight :562,XHeight :426,StemV :51,StemH :51};
return NewStdFont (_afd ,_cfb );};func NewStdFont (desc Descriptor ,metrics *RuneCharSafeMap )StdFont {return NewStdFontWithEncoding (desc ,metrics ,_dd .NewStandardEncoder ());};var _ebb =[]int16 {667,944,667,667,667,667,667,667,667,667,667,667,667,667,667,667,722,722,722,612,667,667,667,667,667,667,667,667,667,722,500,667,722,722,722,778,389,389,389,389,389,389,389,389,500,667,667,611,611,611,611,611,889,722,722,722,722,722,722,944,722,722,722,722,722,722,722,722,611,722,667,667,667,667,556,556,556,556,556,611,611,611,611,722,722,722,722,722,722,722,722,722,667,889,667,611,611,611,611,611,611,611,500,500,500,500,333,500,722,500,500,778,500,500,570,570,500,832,500,500,278,220,348,348,333,333,333,220,350,444,444,333,444,444,333,500,333,333,250,250,747,500,500,500,500,608,500,400,333,570,500,333,278,444,444,444,444,444,444,444,500,1000,444,1000,500,444,570,500,389,389,333,556,500,556,500,500,167,500,500,500,500,333,570,549,500,500,333,333,556,333,333,278,278,278,278,278,278,278,278,500,500,278,278,382,278,570,549,606,494,278,778,333,606,576,570,556,556,556,556,500,549,556,500,500,500,500,500,722,333,500,500,500,500,750,750,300,266,300,500,500,500,500,333,333,494,833,250,250,1000,570,570,500,500,500,555,500,500,500,333,333,333,278,389,389,549,389,389,747,333,389,389,389,389,389,500,333,500,500,278,250,500,600,278,366,278,500,500,750,300,333,1000,500,300,556,556,556,556,556,556,556,500,556,556,444,667,500,444,444,444,500,389,389,389,389,500};
func (_beb *ttfParser )Read32Fixed ()float64 {_eede :=float64 (_beb .ReadShort ());_efd :=float64 (_beb .ReadUShort ())/65536.0;return _eede +_efd ;};var _fbb _eb .Once ;var _deg *RuneCharSafeMap ;func (_baf *ttfParser )parseCmapSubtable10 (_eef int64 )error {if _baf ._eab .Chars ==nil {_baf ._eab .Chars =make (map[rune ]GID );
};_baf ._ceab .Seek (int64 (_baf ._aaf ["\u0063\u006d\u0061\u0070"])+_eef ,_g .SeekStart );var _dcg ,_ccc uint32 ;_edg :=_baf .ReadUShort ();if _edg < 8{_dcg =uint32 (_baf .ReadUShort ());_ccc =uint32 (_baf .ReadUShort ());}else {_baf .ReadUShort ();_dcg =_baf .ReadULong ();
_ccc =_baf .ReadULong ();};_ddd .Log .Trace ("\u0070\u0061r\u0073\u0065\u0043\u006d\u0061p\u0053\u0075\u0062\u0074\u0061b\u006c\u0065\u0031\u0030\u003a\u0020\u0066\u006f\u0072\u006d\u0061\u0074\u003d\u0025\u0064\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u003d\u0025\u0064\u0020\u006c\u0061\u006e\u0067\u0075\u0061\u0067\u0065\u003d\u0025\u0064",_edg ,_dcg ,_ccc );
if _edg !=0{return _dg .New ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0063\u006d\u0061p\u0020s\u0075\u0062\u0074\u0061\u0062\u006c\u0065\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};_efa ,_agg :=_baf .ReadStr (256);if _agg !=nil {return _agg ;
};_gca :=[]byte (_efa );for _dcga ,_affe :=range _gca {_baf ._eab .Chars [rune (_dcga )]=GID (_affe );if _affe !=0{_d .Printf ("\u0009\u0030\u0078\u002502\u0078\u0020\u279e\u0020\u0030\u0078\u0025\u0030\u0032\u0078\u003d\u0025\u0063\u000a",_dcga ,_affe ,rune (_affe ));
};};return nil ;};func (_gbb *ttfParser )parseCmapFormat6 ()error {_fgfa :=int (_gbb .ReadUShort ());_cbe :=int (_gbb .ReadUShort ());_ddd .Log .Trace ("p\u0061\u0072\u0073\u0065\u0043\u006d\u0061\u0070\u0046o\u0072\u006d\u0061\u0074\u0036\u003a\u0020%s\u0020\u0066\u0069\u0072s\u0074\u0043\u006f\u0064\u0065\u003d\u0025\u0064\u0020en\u0074\u0072y\u0043\u006f\u0075\u006e\u0074\u003d\u0025\u0064",_gbb ._eab .String (),_fgfa ,_cbe );
for _ffb :=0;_ffb < _cbe ;_ffb ++{_cde :=GID (_gbb .ReadUShort ());_gbb ._eab .Chars [rune (_ffb +_fgfa )]=_cde ;};return nil ;};func _afb ()StdFont {_bga .Do (_dbb );_ag :=Descriptor {Name :HelveticaObliqueName ,Family :string (HelveticaName ),Weight :FontWeightMedium ,Flags :0x0060,BBox :[4]float64 {-170,-225,1116,931},ItalicAngle :-12,Ascent :718,Descent :-207,CapHeight :718,XHeight :523,StemV :88,StemH :76};
return NewStdFont (_ag ,_ecdg );};var _cc =&fontMap {_egf :make (map[StdFontName ]func ()StdFont )};func (_fc *RuneCharSafeMap )Length ()int {_fc ._fb .RLock ();defer _fc ._fb .RUnlock ();return len (_fc ._ec );};func (_gcb StdFont )Name ()string {return string (_gcb ._gffd .Name )};
const (FontWeightMedium FontWeight =iota ;FontWeightBold ;FontWeightRoman ;);func (_cec *TtfType )String ()string {return _d .Sprintf ("\u0046\u004fN\u0054\u005f\u0046\u0049\u004cE\u0032\u007b\u0025\u0023\u0071 \u0055\u006e\u0069\u0074\u0073\u0050\u0065\u0072\u0045\u006d\u003d\u0025\u0064\u0020\u0042\u006f\u006c\u0064\u003d\u0025\u0074\u0020\u0049\u0074\u0061\u006c\u0069\u0063\u0041\u006e\u0067\u006c\u0065\u003d\u0025\u0066\u0020"+"\u0043\u0061pH\u0065\u0069\u0067h\u0074\u003d\u0025\u0064 Ch\u0061rs\u003d\u0025\u0064\u0020\u0047\u006c\u0079ph\u004e\u0061\u006d\u0065\u0073\u003d\u0025d\u007d",_cec .PostScriptName ,_cec .UnitsPerEm ,_cec .Bold ,_cec .ItalicAngle ,_cec .CapHeight ,len (_cec .Chars ),len (_cec .GlyphNames ));
};func (_fg *RuneCharSafeMap )Range (f func (_fbc rune ,_ecd CharMetrics )(_eg bool )){_fg ._fb .RLock ();defer _fg ._fb .RUnlock ();for _cf ,_cb :=range _fg ._ec {if f (_cf ,_cb ){break ;};};};func MakeRuneCharSafeMap (length int )*RuneCharSafeMap {return &RuneCharSafeMap {_ec :make (map[rune ]CharMetrics ,length )};
};func (_gab *ttfParser )ReadShort ()(_cccd int16 ){_e .Read (_gab ._ceab ,_e .BigEndian ,&_cccd );return _cccd ;};func _edb (_ffe map[string ]uint32 )string {var _abdf []string ;for _ecdf :=range _ffe {_abdf =append (_abdf ,_ecdf );};_cd .Slice (_abdf ,func (_dgg ,_fcba int )bool {return _ffe [_abdf [_dgg ]]< _ffe [_abdf [_fcba ]]});
_eec :=[]string {_d .Sprintf ("\u0054\u0072\u0075\u0065Ty\u0070\u0065\u0020\u0074\u0061\u0062\u006c\u0065\u0073\u003a\u0020\u0025\u0064",len (_ffe ))};for _ ,_bdbc :=range _abdf {_eec =append (_eec ,_d .Sprintf ("\u0009%\u0071\u0020\u0025\u0035\u0064",_bdbc ,_ffe [_bdbc ]));
};return _de .Join (_eec ,"\u000a");};type Descriptor struct{Name StdFontName ;Family string ;Weight FontWeight ;Flags uint ;BBox [4]float64 ;ItalicAngle float64 ;Ascent float64 ;Descent float64 ;CapHeight float64 ;XHeight float64 ;StemV float64 ;StemH float64 ;
};type TtfType struct{UnitsPerEm uint16 ;PostScriptName string ;Bold bool ;ItalicAngle float64 ;IsFixedPitch bool ;TypoAscender int16 ;TypoDescender int16 ;UnderlinePosition int16 ;UnderlineThickness int16 ;Xmin ,Ymin ,Xmax ,Ymax int16 ;CapHeight int16 ;
Widths []uint16 ;Chars map[rune ]GID ;GlyphNames []GlyphName ;};func NewFontFile2FromPdfObject (obj _gb .PdfObject )(TtfType ,error ){obj =_gb .TraceToDirectObject (obj );_ddfg ,_ggg :=obj .(*_gb .PdfObjectStream );if !_ggg {_ddd .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0046\u0069\u006c\u0065\u0032\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u0073\u0074\u0072e\u0061\u006d \u0028\u0025\u0054\u0029",obj );
return TtfType {},_gb .ErrTypeError ;};_caa ,_dadg :=_gb .DecodeStream (_ddfg );if _dadg !=nil {return TtfType {},_dadg ;};_facf :=ttfParser {_ceab :_dc .NewReader (_caa )};return _facf .Parse ();};var _ece *RuneCharSafeMap ;const (CourierName =StdFontName ("\u0043o\u0075\u0072\u0069\u0065\u0072");
CourierBoldName =StdFontName ("\u0043\u006f\u0075r\u0069\u0065\u0072\u002d\u0042\u006f\u006c\u0064");CourierObliqueName =StdFontName ("\u0043o\u0075r\u0069\u0065\u0072\u002d\u004f\u0062\u006c\u0069\u0071\u0075\u0065");CourierBoldObliqueName =StdFontName ("\u0043\u006f\u0075\u0072ie\u0072\u002d\u0042\u006f\u006c\u0064\u004f\u0062\u006c\u0069\u0071\u0075\u0065");
);var _cbf *RuneCharSafeMap ;type StdFont struct{_gffd Descriptor ;_fbcf *RuneCharSafeMap ;_eee _dd .TextEncoder ;};func _gd ()StdFont {_bga .Do (_dbb );_dgad :=Descriptor {Name :HelveticaName ,Family :string (HelveticaName ),Weight :FontWeightMedium ,Flags :0x0020,BBox :[4]float64 {-166,-225,1000,931},ItalicAngle :0,Ascent :718,Descent :-207,CapHeight :718,XHeight :523,StemV :88,StemH :76};
return NewStdFont (_dgad ,_deg );};func (_df StdFont )ToPdfObject ()_gb .PdfObject {_bcd :=_gb .MakeDict ();_bcd .Set ("\u0054\u0079\u0070\u0065",_gb .MakeName ("\u0046\u006f\u006e\u0074"));_bcd .Set ("\u0053u\u0062\u0074\u0079\u0070\u0065",_gb .MakeName ("\u0054\u0079\u0070e\u0031"));
_bcd .Set ("\u0042\u0061\u0073\u0065\u0046\u006f\u006e\u0074",_gb .MakeName (_df .Name ()));_bcd .Set ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",_df ._eee .ToPdfObject ());return _gb .MakeIndirectObject (_bcd );};func _ebc ()StdFont {_gbec .Do (_aff );
_gae :=Descriptor {Name :TimesBoldName ,Family :_gde ,Weight :FontWeightBold ,Flags :0x0020,BBox :[4]float64 {-168,-218,1000,935},ItalicAngle :0,Ascent :683,Descent :-217,CapHeight :676,XHeight :461,StemV :139,StemH :44};return NewStdFont (_gae ,_cbf );
};var _bdf =[]int16 {722,1000,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,612,667,667,667,667,667,667,667,667,667,722,556,611,778,778,778,722,278,278,278,278,278,278,278,278,556,722,722,611,611,611,611,611,833,722,722,722,722,722,778,1000,778,778,778,778,778,778,778,778,667,778,722,722,722,722,667,667,667,667,667,611,611,611,667,722,722,722,722,722,722,722,722,722,667,944,667,667,667,667,611,611,611,611,556,556,556,556,333,556,889,556,556,722,556,556,584,584,389,975,556,611,278,280,389,389,333,333,333,280,350,556,556,333,556,556,333,556,333,333,278,250,737,556,611,556,556,743,611,400,333,584,556,333,278,556,556,556,556,556,556,556,556,1000,556,1000,556,556,584,611,333,333,333,611,556,611,556,556,167,611,611,611,611,333,584,549,556,556,333,333,611,333,333,278,278,278,278,278,278,278,278,556,556,278,278,400,278,584,549,584,494,278,889,333,584,611,584,611,611,611,611,556,549,611,556,611,611,611,611,944,333,611,611,611,556,834,834,333,370,365,611,611,611,556,333,333,494,889,278,278,1000,584,584,611,611,611,474,500,500,500,278,278,278,238,389,389,549,389,389,737,333,556,556,556,556,556,556,333,556,556,278,278,556,600,333,389,333,611,556,834,333,333,1000,556,333,611,611,611,611,611,611,611,556,611,611,556,778,556,556,556,556,556,500,500,500,500,556};
func (_aaa *ttfParser )parseCmapFormat0 ()error {_bgc ,_edbf :=_aaa .ReadStr (256);if _edbf !=nil {return _edbf ;};_caba :=[]byte (_bgc );_ddd .Log .Trace ("\u0070a\u0072\u0073e\u0043\u006d\u0061p\u0046\u006f\u0072\u006d\u0061\u0074\u0030:\u0020\u0025\u0073\u000a\u0064\u0061t\u0061\u0053\u0074\u0072\u003d\u0025\u002b\u0071\u000a\u0064\u0061t\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d",_aaa ._eab .String (),_bgc ,_caba );
for _gdd ,_bdd :=range _caba {_aaa ._eab .Chars [rune (_gdd )]=GID (_bdd );};return nil ;};var _gcbg =&RuneCharSafeMap {_ec :map[rune ]CharMetrics {' ':{Wx :250},'!':{Wx :333},'#':{Wx :500},'%':{Wx :833},'&':{Wx :778},'(':{Wx :333},')':{Wx :333},'+':{Wx :549},',':{Wx :250},'.':{Wx :250},'/':{Wx :278},'0':{Wx :500},'1':{Wx :500},'2':{Wx :500},'3':{Wx :500},'4':{Wx :500},'5':{Wx :500},'6':{Wx :500},'7':{Wx :500},'8':{Wx :500},'9':{Wx :500},':':{Wx :278},';':{Wx :278},'<':{Wx :549},'=':{Wx :549},'>':{Wx :549},'?':{Wx :444},'[':{Wx :333},']':{Wx :333},'_':{Wx :500},'{':{Wx :480},'|':{Wx :200},'}':{Wx :480},'¬':{Wx :713},'°':{Wx :400},'±':{Wx :549},'µ':{Wx :576},'×':{Wx :549},'÷':{Wx :549},'ƒ':{Wx :500},'Α':{Wx :722},'Β':{Wx :667},'Γ':{Wx :603},'Ε':{Wx :611},'Ζ':{Wx :611},'Η':{Wx :722},'Θ':{Wx :741},'Ι':{Wx :333},'Κ':{Wx :722},'Λ':{Wx :686},'Μ':{Wx :889},'Ν':{Wx :722},'Ξ':{Wx :645},'Ο':{Wx :722},'Π':{Wx :768},'Ρ':{Wx :556},'Σ':{Wx :592},'Τ':{Wx :611},'Υ':{Wx :690},'Φ':{Wx :763},'Χ':{Wx :722},'Ψ':{Wx :795},'α':{Wx :631},'β':{Wx :549},'γ':{Wx :411},'δ':{Wx :494},'ε':{Wx :439},'ζ':{Wx :494},'η':{Wx :603},'θ':{Wx :521},'ι':{Wx :329},'κ':{Wx :549},'λ':{Wx :549},'ν':{Wx :521},'ξ':{Wx :493},'ο':{Wx :549},'π':{Wx :549},'ρ':{Wx :549},'ς':{Wx :439},'σ':{Wx :603},'τ':{Wx :439},'υ':{Wx :576},'φ':{Wx :521},'χ':{Wx :549},'ψ':{Wx :686},'ω':{Wx :686},'ϑ':{Wx :631},'ϒ':{Wx :620},'ϕ':{Wx :603},'ϖ':{Wx :713},'•':{Wx :460},'…':{Wx :1000},'':{Wx :247},'″':{Wx :411},'':{Wx :167},'€':{Wx :750},'':{Wx :686},'℘':{Wx :987},'':{Wx :795},'Ω':{Wx :768},'ℵ':{Wx :823},'←':{Wx :987},'↑':{Wx :603},'→':{Wx :987},'↓':{Wx :603},'↔':{Wx :1042},'↵':{Wx :658},'⇐':{Wx :987},'⇑':{Wx :603},'⇒':{Wx :987},'⇓':{Wx :603},'⇔':{Wx :1042},'∀':{Wx :713},'∂':{Wx :494},'∃':{Wx :549},'∅':{Wx :823},'∆':{Wx :612},'∇':{Wx :713},'∈':{Wx :713},'∉':{Wx :713},'∋':{Wx :439},'∏':{Wx :823},'∑':{Wx :713},'':{Wx :549},'':{Wx :500},'√':{Wx :549},'∝':{Wx :713},'∞':{Wx :713},'∠':{Wx :768},'∧':{Wx :603},'':{Wx :603},'∩':{Wx :768},'':{Wx :768},'∫':{Wx :274},'∴':{Wx :863},'':{Wx :549},'≅':{Wx :549},'≈':{Wx :549},'≠':{Wx :549},'≡':{Wx :549},'≤':{Wx :549},'≥':{Wx :549},'⊂':{Wx :713},'⊃':{Wx :713},'⊄':{Wx :713},'⊆':{Wx :713},'⊇':{Wx :713},'⊕':{Wx :768},'⊗':{Wx :768},'⊥':{Wx :658},'⋅':{Wx :250},'⌠':{Wx :686},'⌡':{Wx :686},'〈':{Wx :329},'〉':{Wx :329},'◊':{Wx :494},'♠':{Wx :753},'♣':{Wx :753},'♥':{Wx :753},'♦':{Wx :753},'\uf6d9':{Wx :790},'\uf6da':{Wx :790},'\uf6db':{Wx :890},'\uf8e5':{Wx :500},'\uf8e6':{Wx :603},'\uf8e7':{Wx :1000},'\uf8e8':{Wx :790},'\uf8e9':{Wx :790},'\uf8ea':{Wx :786},'\uf8eb':{Wx :384},'\uf8ec':{Wx :384},'\uf8ed':{Wx :384},'\uf8ee':{Wx :384},'\uf8ef':{Wx :384},'\uf8f0':{Wx :384},'\uf8f1':{Wx :494},'\uf8f2':{Wx :494},'\uf8f3':{Wx :494},'\uf8f4':{Wx :494},'\uf8f5':{Wx :686},'\uf8f6':{Wx :384},'\uf8f7':{Wx :384},'\uf8f8':{Wx :384},'\uf8f9':{Wx :384},'\uf8fa':{Wx :384},'\uf8fb':{Wx :384},'\uf8fc':{Wx :494},'\uf8fd':{Wx :494},'\uf8fe':{Wx :494},'\uf8ff':{Wx :790}}};
func (_fgf *ttfParser )ParseHmtx ()error {if _adc :=_fgf .Seek ("\u0068\u006d\u0074\u0078");_adc !=nil {return _adc ;};_fgf ._eab .Widths =make ([]uint16 ,0,8);for _gfcg :=uint16 (0);_gfcg < _fgf ._cfg ;_gfcg ++{_fgf ._eab .Widths =append (_fgf ._eab .Widths ,_fgf .ReadUShort ());
_fgf .Skip (2);};if _fgf ._cfg < _fgf ._bdb &&_fgf ._cfg > 0{_cbdg :=_fgf ._eab .Widths [_fgf ._cfg -1];for _bec :=_fgf ._cfg ;_bec < _fgf ._bdb ;_bec ++{_fgf ._eab .Widths =append (_fgf ._eab .Widths ,_cbdg );};};return nil ;};func (_bab *TtfType )MakeEncoder ()(_dd .SimpleEncoder ,error ){_ccb :=make (map[_dd .CharCode ]GlyphName );
for _eda :=_dd .CharCode (0);_eda <=256;_eda ++{_aea :=rune (_eda );_dgfa ,_cbc :=_bab .Chars [_aea ];if !_cbc {continue ;};var _fbag GlyphName ;if int (_dgfa )>=0&&int (_dgfa )< len (_bab .GlyphNames ){_fbag =_bab .GlyphNames [_dgfa ];}else {_edc :=rune (_dgfa );
if _cda ,_afc :=_dd .RuneToGlyph (_edc );_afc {_fbag =_cda ;};};if _fbag !=""{_ccb [_eda ]=_fbag ;};};if len (_ccb )==0{_ddd .Log .Debug ("WA\u0052\u004eI\u004e\u0047\u003a\u0020\u005a\u0065\u0072\u006f\u0020l\u0065\u006e\u0067\u0074\u0068\u0020\u0054\u0072\u0075\u0065\u0054\u0079\u0070\u0065\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u002e\u0020\u0074\u0074\u0066=\u0025s\u0020\u0043\u0068\u0061\u0072\u0073\u003d\u005b%\u00200\u0032\u0078]",_bab ,_bab .Chars );
};return _dd .NewCustomSimpleTextEncoder (_ccb ,nil );};var _cadf =[]int16 {667,1000,667,667,667,667,667,667,667,667,667,667,722,722,722,722,722,722,722,612,667,667,667,667,667,667,667,667,667,722,556,611,778,778,778,722,278,278,278,278,278,278,278,278,500,667,667,556,556,556,556,556,833,722,722,722,722,722,778,1000,778,778,778,778,778,778,778,778,667,778,722,722,722,722,667,667,667,667,667,611,611,611,667,722,722,722,722,722,722,722,722,722,667,944,667,667,667,667,611,611,611,611,556,556,556,556,333,556,889,556,556,667,556,556,469,584,389,1015,556,556,278,260,334,334,278,278,333,260,350,500,500,333,500,500,333,556,333,278,278,250,737,556,556,556,556,643,556,400,333,584,556,333,278,556,556,556,556,556,556,556,556,1000,556,1000,556,556,584,556,278,333,278,500,556,500,556,556,167,556,556,556,611,333,584,549,556,556,333,333,556,333,333,222,278,278,278,278,278,222,222,500,500,222,222,299,222,584,549,584,471,222,833,333,584,556,584,556,556,556,556,556,549,556,556,556,556,556,556,944,333,556,556,556,556,834,834,333,370,365,611,556,556,537,333,333,476,889,278,278,1000,584,584,556,556,611,355,333,333,333,222,222,222,191,333,333,453,333,333,737,333,500,500,500,500,500,556,278,556,556,278,278,556,600,278,317,278,556,556,834,333,333,1000,556,333,556,556,556,556,556,556,556,556,556,556,500,722,500,500,500,500,556,500,500,500,500,556};
func _abd ()StdFont {_cade :=_dd .NewZapfDingbatsEncoder ();_ea :=Descriptor {Name :ZapfDingbatsName ,Family :string (ZapfDingbatsName ),Weight :FontWeightMedium ,Flags :0x0004,BBox :[4]float64 {-1,-143,981,820},ItalicAngle :0,Ascent :0,Descent :0,CapHeight :0,XHeight :0,StemV :90,StemH :28};
return NewStdFontWithEncoding (_ea ,_dbc ,_cade );};var _dga *RuneCharSafeMap ;