mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-27 13:48:51 +08:00
12 lines
40 KiB
Go
12 lines
40 KiB
Go
//
|
|
// 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 cmap ;import (_fd "bufio";_e "bytes";_fb "encoding/hex";_ee "errors";_d "fmt";_ae "github.com/unidoc/unipdf/v3/common";_acc "github.com/unidoc/unipdf/v3/core";_dd "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_ce "io";_ac "sort";_b "strconv";_a "strings";_c "unicode/utf16";);func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_egga ,_fae :=cmap ._cec [code ];return _egga ,_fae ;};type fbRange struct{_ddg CharCode ;_de CharCode ;_fc string ;};func (_agdg *cMapParser )parseComment ()(string ,error ){var _ffb _e .Buffer ;_ ,_efeg :=_agdg .skipSpaces ();if _efeg !=nil {return _ffb .String (),_efeg ;};_dec :=true ;for {_bdbgd ,_aeae :=_agdg ._gcbb .Peek (1);if _aeae !=nil {_ae .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_aeae );return _ffb .String (),_aeae ;};if _dec &&_bdbgd [0]!='%'{return _ffb .String (),ErrBadCMapComment ;};_dec =false ;if (_bdbgd [0]!='\r')&&(_bdbgd [0]!='\n'){_ebb ,_ :=_agdg ._gcbb .ReadByte ();_ffb .WriteByte (_ebb );}else {break ;};};return _ffb .String (),nil ;};func (cmap *CMap )parseCIDRange ()error {for {_gddc ,_cbac :=cmap .parseObject ();if _cbac !=nil {if _cbac ==_ce .EOF {break ;};return _cbac ;};_dceg ,_afc :=_gddc .(cmapHexString );if !_afc {if _efc ,_cbd :=_gddc .(cmapOperand );_cbd {if _efc .Operand ==_ebda {return nil ;};return _ee .New ("\u0063\u0069\u0064\u0020\u0069\u006e\u0074\u0065\u0072\u0076\u0061\u006c\u0020s\u0074\u0061\u0072\u0074\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");};};_fceg :=_bedba (_dceg );_gddc ,_cbac =cmap .parseObject ();if _cbac !=nil {if _cbac ==_ce .EOF {break ;};return _cbac ;};_dcc ,_afc :=_gddc .(cmapHexString );if !_afc {return _ee .New ("\u0063\u0069d\u0020\u0069\u006e\u0074e\u0072\u0076a\u006c\u0020\u0065\u006e\u0064\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");};if len (_dceg ._eef )!=len (_dcc ._eef ){return _ee .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};_gdbf :=_bedba (_dcc );if _fceg > _gdbf {_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0049\u0044\u0020\u0072\u0061\u006e\u0067\u0065\u002e\u0020\u0073t\u0061\u0072\u0074\u003d\u0030\u0078\u0025\u0030\u0032\u0078\u0020\u0065\u006e\u0064=\u0030x\u0025\u0030\u0032\u0078",_fceg ,_gdbf );return ErrBadCMap ;};_gddc ,_cbac =cmap .parseObject ();if _cbac !=nil {if _cbac ==_ce .EOF {break ;};return _cbac ;};_defg ,_afc :=_gddc .(cmapInt );if !_afc {return _ee .New ("\u0063\u0069\u0064\u0020\u0073t\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0064\u0065\u0063\u0069\u006d\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _defg ._aacc < 0{return _ee .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_adg :=_defg ._aacc ;for _fbgb :=_fceg ;_fbgb <=_gdbf ;_fbgb ++{cmap ._cec [_fbgb ]=CharCode (_adg );_adg ++;};_ae .Log .Trace ("C\u0049\u0044\u0020\u0072\u0061\u006eg\u0065\u003a\u0020\u003c\u0030\u0078\u0025\u0058\u003e \u003c\u0030\u0078%\u0058>\u0020\u0025\u0064",_fceg ,_gdbf ,_defg ._aacc );};return nil ;};func (cmap *CMap )String ()string {_dfd :=cmap ._aed ;_edc :=[]string {_d .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._acb ),_d .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._aff )};if cmap ._g !=""{_edc =append (_edc ,_d .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._g ));};if cmap ._cc !=""{_edc =append (_edc ,_d .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._cc ));};_edc =append (_edc ,_d .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_dfd .String ()));if len (cmap ._ec )> 0{_edc =append (_edc ,_d .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._ec )));};if len (cmap ._cb )> 0{_edc =append (_edc ,_d .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._cb )));};return _d .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._dde ,_a .Join (_edc ,"\u0020"));};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_ge ,_dcd :=cmap ._ga [s ];return _ge ,_dcd };type CMap struct{*cMapParser ;_dde string ;_acb int ;_aff int ;_g string ;_cc string ;_aed CIDSystemInfo ;_ec []Codespace ;_cec map[CharCode ]CharCode ;_eag map[CharCode ]CharCode ;_cb map[CharCode ]string ;_ga map[string ]CharCode ;_bf []byte ;_bd *_acc .PdfObjectStream ;};type cmapName struct{Name string ;};func _aacb (_bcbc string )string {_bea :=[]rune (_bcbc );_dfa :=make ([]string ,len (_bea ));for _gee ,_abg :=range _bea {_dfa [_gee ]=_d .Sprintf ("\u0025\u0030\u0034\u0078",_abg );};return _d .Sprintf ("\u003c\u0025\u0073\u003e",_a .Join (_dfa ,""));};func (_dccc *cMapParser )parseDict ()(cmapDict ,error ){_ae .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_dece :=_bbdd ();_agdc ,_ :=_dccc ._gcbb .ReadByte ();if _agdc !='<'{return _dece ,ErrBadCMapDict ;};_agdc ,_ =_dccc ._gcbb .ReadByte ();if _agdc !='<'{return _dece ,ErrBadCMapDict ;};for {_dccc .skipSpaces ();_eaff ,_egcd :=_dccc ._gcbb .Peek (2);if _egcd !=nil {return _dece ,_egcd ;};if (_eaff [0]=='>')&&(_eaff [1]=='>'){_dccc ._gcbb .ReadByte ();_dccc ._gcbb .ReadByte ();break ;};_fbbg ,_egcd :=_dccc .parseName ();_ae .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_fbbg .Name );if _egcd !=nil {_ae .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006e\u0061\u006d\u0065\u002e\u0020\u0065\u0072r=\u0025\u0076",_egcd );return _dece ,_egcd ;};_dccc .skipSpaces ();_gbbe ,_egcd :=_dccc .parseObject ();if _egcd !=nil {return _dece ,_egcd ;};_dece .Dict [_fbbg .Name ]=_gbbe ;_dccc .skipSpaces ();_eaff ,_egcd =_dccc ._gcbb .Peek (3);if _egcd !=nil {return _dece ,_egcd ;};if string (_eaff )=="\u0064\u0065\u0066"{_dccc ._gcbb .Discard (3);};};return _dece ,nil ;};func (_aba *cMapParser )parseObject ()(cmapObject ,error ){_aba .skipSpaces ();for {_bccc ,_ded :=_aba ._gcbb .Peek (2);if _ded !=nil {return nil ,_ded ;};if _bccc [0]=='%'{_aba .parseComment ();_aba .skipSpaces ();continue ;}else if _bccc [0]=='/'{_debg ,_fdbe :=_aba .parseName ();return _debg ,_fdbe ;}else if _bccc [0]=='('{_egca ,_fcfc :=_aba .parseString ();return _egca ,_fcfc ;}else if _bccc [0]=='['{_ecbg ,_gbf :=_aba .parseArray ();return _ecbg ,_gbf ;}else if (_bccc [0]=='<')&&(_bccc [1]=='<'){_fbc ,_dbb :=_aba .parseDict ();return _fbc ,_dbb ;}else if _bccc [0]=='<'{_gbba ,_aeg :=_aba .parseHexString ();return _gbba ,_aeg ;}else if _acc .IsDecimalDigit (_bccc [0])||(_bccc [0]=='-'&&_acc .IsDecimalDigit (_bccc [1])){_bgdd ,_dgge :=_aba .parseNumber ();if _dgge !=nil {return nil ,_dgge ;};return _bgdd ,nil ;}else {_bdf ,_caga :=_aba .parseOperand ();if _caga !=nil {return nil ,_caga ;};return _bdf ,nil ;};};};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_ae .Log .Trace ("\u004c\u006fa\u0064\u0043\u006d\u0061\u0070\u0046\u0072\u006f\u006d\u0044\u0061\u0074\u0061\u003a\u0020\u0069\u0073\u0053\u0069\u006d\u0070\u006ce=\u0025\u0074",isSimple );cmap :=_db (isSimple );cmap .cMapParser =_agff (data );_gf :=cmap .parse ();if _gf !=nil {return nil ,_gf ;};if len (cmap ._ec )==0{if cmap ._cc !=""{return cmap ,nil ;};_ae .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};const (_ddga =100;_cbf ="\u000a\u002f\u0043\u0049\u0044\u0049\u006e\u0069\u0074\u0020\u002f\u0050\u0072\u006fc\u0053\u0065\u0074\u0020\u0066\u0069\u006e\u0064\u0072es\u006fu\u0072c\u0065 \u0062\u0065\u0067\u0069\u006e\u000a\u0031\u0032\u0020\u0064\u0069\u0063\u0074\u0020\u0062\u0065\u0067\u0069n\u000a\u0062\u0065\u0067\u0069\u006e\u0063\u006d\u0061\u0070\n\u002f\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065m\u0049\u006e\u0066\u006f\u0020\u003c\u003c\u0020\u002f\u0052\u0065\u0067\u0069\u0073t\u0072\u0079\u0020\u0028\u0041\u0064\u006f\u0062\u0065\u0029\u0020\u002f\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0028\u0055\u0043\u0053)\u0020\u002f\u0053\u0075\u0070p\u006c\u0065\u006d\u0065\u006et\u0020\u0030\u0020\u003e\u003e\u0020\u0064\u0065\u0066\u000a\u002f\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u002f\u0041\u0064\u006f\u0062\u0065-\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0055\u0043\u0053\u0020\u0064\u0065\u0066\u000a\u002fC\u004d\u0061\u0070\u0054\u0079\u0070\u0065\u0020\u0032\u0020\u0064\u0065\u0066\u000a\u0031\u0020\u0062\u0065\u0067\u0069\u006e\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063e\u0072\u0061n\u0067\u0065\n\u003c\u0030\u0030\u0030\u0030\u003e\u0020<\u0046\u0046\u0046\u0046\u003e\u000a\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065\u000a";_bbd ="\u0065\u006e\u0064\u0063\u006d\u0061\u0070\u000a\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u0063ur\u0072e\u006e\u0074\u0064\u0069\u0063\u0074\u0020\u002f\u0043\u004d\u0061\u0070 \u0064\u0065\u0066\u0069\u006e\u0065\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0070\u006fp\u000a\u0065\u006e\u0064\u000a\u0065\u006e\u0064\u000a";);func (cmap *CMap )Name ()string {return cmap ._dde };func (_bag *cMapParser )parseOperand ()(cmapOperand ,error ){_fadc :=cmapOperand {};_eedb :=_e .Buffer {};for {_cfg ,_bcd :=_bag ._gcbb .Peek (1);if _bcd !=nil {if _bcd ==_ce .EOF {break ;};return _fadc ,_bcd ;};if _acc .IsDelimiter (_cfg [0]){break ;};if _acc .IsWhiteSpace (_cfg [0]){break ;};_ead ,_ :=_bag ._gcbb .ReadByte ();_eedb .WriteByte (_ead );};if _eedb .Len ()==0{return _fadc ,_d .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_fadc .Operand =_eedb .String ();return _fadc ,nil ;};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )computeInverseMappings (){for _ece ,_fdb :=range cmap ._cec {if _egd ,_gg :=cmap ._eag [_fdb ];!_gg ||(_gg &&_egd > _ece ){cmap ._eag [_fdb ]=_ece ;};};for _fdbc ,_eea :=range cmap ._cb {if _egg ,_cfe :=cmap ._ga [_eea ];!_cfe ||(_cfe &&_egg > _fdbc ){cmap ._ga [_eea ]=_fdbc ;};};_ac .Slice (cmap ._ec ,func (_gfe ,_fa int )bool {return cmap ._ec [_gfe ].Low < cmap ._ec [_fa ].Low });};func _bg (_aa string )(*CMap ,error ){_cea ,_caf :=_dd .Asset (_aa );if _caf !=nil {return nil ,_caf ;};return LoadCmapFromDataCID (_cea );};func _agdcf (_cdfa ,_gefc int )int {if _cdfa < _gefc {return _cdfa ;};return _gefc ;};func (cmap *CMap )parseVersion ()error {_fef :="";_fga :=false ;for _dac :=0;_dac < 3&&!_fga ;_dac ++{_aaa ,_gfcd :=cmap .parseObject ();if _gfcd !=nil {return _gfcd ;};switch _acf :=_aaa .(type ){case cmapOperand :switch _acf .Operand {case "\u0064\u0065\u0066":_fga =true ;default:_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0070\u0061\u0072\u0073\u0065\u0056e\u0072\u0073\u0069\u006f\u006e\u003a \u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076",_aaa );return ErrBadCMap ;};case cmapInt :_fef =_d .Sprintf ("\u0025\u0064",_acf ._aacc );case cmapFloat :_fef =_d .Sprintf ("\u0025\u0066",_acf ._dgfa );case cmapString :_fef =_acf .String ;default:_ae .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020p\u0061\u0072\u0073\u0065Ver\u0073io\u006e\u003a\u0020\u0042\u0061\u0064\u0020ty\u0070\u0065\u002e\u0020\u006f\u003d\u0025#\u0076",_aaa );};};cmap ._g =_fef ;return nil ;};func (_bc *CIDSystemInfo )String ()string {return _d .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_bc .Registry ,_bc .Ordering ,_bc .Supplement );};type CharCode uint32 ;type cmapInt struct{_aacc int64 };func (cmap *CMap )parseSystemInfo ()error {_bfd :=false ;_adf :=false ;_bge :="";_gbce :=false ;_dbc :=CIDSystemInfo {};for _agf :=0;_agf < 50&&!_gbce ;_agf ++{_becd ,_fgg :=cmap .parseObject ();if _fgg !=nil {return _fgg ;};switch _cfeb :=_becd .(type ){case cmapDict :_cg :=_cfeb .Dict ;_cag ,_dcdf :=_cg ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_dcdf {_ae .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_daf ,_dcdf :=_cag .(cmapString );if !_dcdf {_ae .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dbc .Registry =_daf .String ;_cag ,_dcdf =_cg ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_dcdf {_ae .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_daf ,_dcdf =_cag .(cmapString );if !_dcdf {_ae .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dbc .Ordering =_daf .String ;_edf ,_dcdf :=_cg ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_dcdf {_ae .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_eggf ,_dcdf :=_edf .(cmapInt );if !_dcdf {_ae .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dbc .Supplement =int (_eggf ._aacc );_gbce =true ;case cmapOperand :switch _cfeb .Operand {case "\u0062\u0065\u0067i\u006e":_bfd =true ;case "\u0065\u006e\u0064":_gbce =true ;case "\u0064\u0065\u0066":_adf =false ;};case cmapName :if _bfd {_bge =_cfeb .Name ;_adf =true ;};case cmapString :if _adf {switch _bge {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_dbc .Registry =_cfeb .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_dbc .Ordering =_cfeb .String ;};};case cmapInt :if _adf {switch _bge {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_dbc .Supplement =int (_cfeb ._aacc );};};};};if !_gbce {_ae .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006e\u0066\u006f\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u006c\u0079");return ErrBadCMap ;};cmap ._aed =_dbc ;return nil ;};var (ErrBadCMap =_ee .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_ee .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");ErrBadCMapDict =_ee .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););type cmapOperand struct{Operand string ;};func (cmap *CMap )NBits ()int {return cmap ._acb };func (cmap *CMap )matchCode (_gga []byte )(_bce CharCode ,_bfe int ,_cd bool ){for _feg :=0;_feg < _bb ;_feg ++{if _feg < len (_gga ){_bce =_bce <<8|CharCode (_gga [_feg ]);_bfe ++;};_cd =cmap .inCodespace (_bce ,_feg +1);if _cd {return _bce ,_bfe ,true ;};};_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063o\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0020m\u0061t\u0063\u0068\u0065\u0073\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d=\u0025\u0023\u0071\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",_gga ,string (_gga ),cmap );return 0,0,false ;};func (_bcbe *cMapParser )parseNumber ()(cmapObject ,error ){_bgf ,_fcda :=_acc .ParseNumber (_bcbe ._gcbb );if _fcda !=nil {return nil ,_fcda ;};switch _caaf :=_bgf .(type ){case *_acc .PdfObjectFloat :return cmapFloat {float64 (*_caaf )},nil ;case *_acc .PdfObjectInteger :return cmapInt {int64 (*_caaf )},nil ;};return nil ,_d .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_bgf );};func _bedba (_cgg cmapHexString )CharCode {_fcab :=CharCode (0);for _ ,_eggc :=range _cgg ._eef {_fcab <<=8;_fcab |=CharCode (_eggc );};return _fcab ;};func (cmap *CMap )parse ()error {var _ged cmapObject ;for {_ggac ,_eeab :=cmap .parseObject ();if _eeab !=nil {if _eeab ==_ce .EOF {break ;};_ae .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_eeab );return _eeab ;};switch _agg :=_ggac .(type ){case cmapOperand :_gc :=_agg ;switch _gc .Operand {case _gbge :_daa :=cmap .parseCodespaceRange ();if _daa !=nil {return _daa ;};case _bgg :_egc :=cmap .parseCIDRange ();if _egc !=nil {return _egc ;};case _edga :_afd :=cmap .parseBfchar ();if _afd !=nil {return _afd ;};case _geg :_gcg :=cmap .parseBfrange ();if _gcg !=nil {return _gcg ;};case _gbcd :if _ged ==nil {_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u0073\u0065\u0063m\u0061\u0070\u0020\u0077\u0069\u0074\u0068\u0020\u006e\u006f \u0061\u0072\u0067");return ErrBadCMap ;};_dcb ,_aebg :=_ged .(cmapName );if !_aebg {_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0075\u0073\u0065\u0063\u006d\u0061\u0070\u0020\u0061\u0072\u0067\u0020\u006eo\u0074\u0020\u0061\u0020\u006e\u0061\u006de\u0020\u0025\u0023\u0076",_ged );return ErrBadCMap ;};cmap ._cc =_dcb .Name ;case _gbbb :_fcg :=cmap .parseSystemInfo ();if _fcg !=nil {return _fcg ;};};case cmapName :_fgcag :=_agg ;switch _fgcag .Name {case _gbbb :_gdd :=cmap .parseSystemInfo ();if _gdd !=nil {return _gdd ;};case _fad :_fdf :=cmap .parseName ();if _fdf !=nil {return _fdf ;};case _dgf :_cad :=cmap .parseType ();if _cad !=nil {return _cad ;};case _bgac :_cbfg :=cmap .parseVersion ();if _cbfg !=nil {return _cbfg ;};};};_ged =_ggac ;};return nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _gab ,_fcf :=cmap ._cb [code ];_fcf {return _gab ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )inCodespace (_ddf CharCode ,_aeb int )bool {for _ ,_fdbca :=range cmap ._ec {if _fdbca .Low <=_ddf &&_ddf <=_fdbca .High &&_aeb ==_fdbca .NumBytes {return true ;};};return false ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_bda :=make (map[CharCode ]string ,len (codeToRune ));for _bbb ,_beg :=range codeToRune {_bda [_bbb ]=string (_beg );};cmap :=&CMap {_dde :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_aff :2,_acb :16,_aed :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_ec :[]Codespace {{Low :0,High :0xffff}},_cb :_bda ,_ga :make (map[string ]CharCode ,len (codeToRune )),_cec :make (map[CharCode ]CharCode ,len (codeToRune )),_eag :make (map[CharCode ]CharCode ,len (codeToRune ))};cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )parseBfrange ()error {for {var _ceaa CharCode ;_aaaf ,_ede :=cmap .parseObject ();if _ede !=nil {if _ede ==_ce .EOF {break ;};return _ede ;};switch _egge :=_aaaf .(type ){case cmapOperand :if _egge .Operand ==_dgg {return nil ;};return _ee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_ceaa =_bedba (_egge );default:return _ee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _eeb CharCode ;_aaaf ,_ede =cmap .parseObject ();if _ede !=nil {if _ede ==_ce .EOF {break ;};return _ede ;};switch _fbga :=_aaaf .(type ){case cmapOperand :_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006d\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065\u0020\u0062\u0066r\u0061\u006e\u0067\u0065\u0020\u0074\u0072i\u0070\u006c\u0065\u0074");return ErrBadCMap ;case cmapHexString :_eeb =_bedba (_fbga );default:_ae .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_aaaf );return ErrBadCMap ;};_aaaf ,_ede =cmap .parseObject ();if _ede !=nil {if _ede ==_ce .EOF {break ;};return _ede ;};switch _beb :=_aaaf .(type ){case cmapArray :if len (_beb .Array )!=int (_eeb -_ceaa )+1{_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u006f\u0066\u0020\u0069\u0074\u0065\u006d\u0073\u0020\u0069\u006e\u0020a\u0072\u0072\u0061\u0079");return ErrBadCMap ;};for _ecf :=_ceaa ;_ecf <=_eeb ;_ecf ++{_ebf :=_beb .Array [_ecf -_ceaa ];_aab ,_ccb :=_ebf .(cmapHexString );if !_ccb {return _ee .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");};_ceba :=_dad (_aab );cmap ._cb [_ecf ]=string (_ceba );};case cmapHexString :_gfg :=_dad (_beb );_bedb :=len (_gfg );for _bedd :=_ceaa ;_bedd <=_eeb ;_bedd ++{cmap ._cb [_bedd ]=string (_gfg );_gfg [_bedb -1]++;};default:_ae .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_aaaf );return ErrBadCMap ;};};return nil ;};func _fbf (_acfg cmapHexString )rune {_beba :=_dad (_acfg );if _aaf :=len (_beba );_aaf ==0{_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054o\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065c\u0074\u0065\u0064\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0072u\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023\u0076",_acfg );return MissingCodeRune ;};if len (_beba )> 1{_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0065\u0078\u0061\u0063\u0074\u006c\u0079\u0020\u006f\u006e\u0065\u0020\u0072\u0075\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023v\u0020\u002d\u003e\u0020\u0025#\u0076",_acfg ,_beba );};return _beba [0];};func (_bdg *cMapParser )parseName ()(cmapName ,error ){_dcbg :="";_gdee :=false ;for {_caa ,_geb :=_bdg ._gcbb .Peek (1);if _geb ==_ce .EOF {break ;};if _geb !=nil {return cmapName {_dcbg },_geb ;};if !_gdee {if _caa [0]=='/'{_gdee =true ;_bdg ._gcbb .ReadByte ();}else {_ae .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u004e\u0061\u006d\u0065\u0020\u0073\u0074a\u0072t\u0069n\u0067 \u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0028\u0025\u0020\u0078\u0029",_caa ,_caa );return cmapName {_dcbg },_d .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_caa [0]);};}else {if _acc .IsWhiteSpace (_caa [0]){break ;}else if (_caa [0]=='/')||(_caa [0]=='[')||(_caa [0]=='(')||(_caa [0]==']')||(_caa [0]=='<')||(_caa [0]=='>'){break ;}else if _caa [0]=='#'{_aedf ,_fgd :=_bdg ._gcbb .Peek (3);if _fgd !=nil {return cmapName {_dcbg },_fgd ;};_bdg ._gcbb .Discard (3);_bceg ,_fgd :=_fb .DecodeString (string (_aedf [1:3]));if _fgd !=nil {return cmapName {_dcbg },_fgd ;};_dcbg +=string (_bceg );}else {_dgc ,_ :=_bdg ._gcbb .ReadByte ();_dcbg +=string (_dgc );};};};return cmapName {_dcbg },nil ;};func (cmap *CMap )Stream ()(*_acc .PdfObjectStream ,error ){if cmap ._bd !=nil {return cmap ._bd ,nil ;};_ddea ,_ag :=_acc .MakeStream (cmap .Bytes (),_acc .NewFlateEncoder ());if _ag !=nil {return nil ,_ag ;};cmap ._bd =_ddea ;return cmap ._bd ,nil ;};type cmapDict struct{Dict map[string ]cmapObject ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_fgc ,_eeaf :=cmap .BytesToCharcodes (data );if !_eeaf {_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0042\u0079\u0074\u0065s\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069n\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0064\u0061\u0074\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078]\u0020\u0063\u006d\u0061\u0070=\u0025\u0073",data ,cmap );return "",0;};_dce :=make ([]string ,len (_fgc ));var _bga []CharCode ;for _aag ,_eaf :=range _fgc {_fcd ,_fgcb :=cmap ._cb [_eaf ];if !_fgcb {_bga =append (_bga ,_eaf );_fcd =MissingCodeString ;};_dce [_aag ]=_fcd ;};_ecb :=_a .Join (_dce ,"");if len (_bga )> 0{_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020C\u0068\u0061\u0072c\u006f\u0064\u0065\u0042y\u0074\u0065\u0073\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069\u006e\u0020\u006d\u0061\u0070\u002e\u000a"+"\u0009d\u0061t\u0061\u003d\u005b\u0025\u00200\u0032\u0078]\u003d\u0025\u0023\u0071\u000a"+"\u0009\u0063h\u0061\u0072\u0063o\u0064\u0065\u0073\u003d\u0025\u0030\u0032\u0078\u000a"+"\u0009\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u003d\u0025\u0064\u0020%\u0030\u0032\u0078\u000a"+"\u0009\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u003d`\u0025\u0073\u0060\u000a"+"\u0009\u0063\u006d\u0061\u0070\u003d\u0025\u0073",data ,string (data ),_fgc ,len (_bga ),_bga ,_ecb ,cmap );};return _ecb ,len (_bga );};type charRange struct{_df CharCode ;_ab CharCode ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _cba []CharCode ;if cmap ._acb ==8{for _ ,_fbb :=range data {_cba =append (_cba ,CharCode (_fbb ));};return _cba ,true ;};for _fgca :=0;_fgca < len (data );{_ba ,_fgb ,_bdb :=cmap .matchCode (data [_fgca :]);if !_bdb {_ae .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0074\u0020\u0069\u003d\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d\u003d\u0025\u0023\u0071",_fgca ,data ,string (data ));return _cba ,false ;};_cba =append (_cba ,_ba );_fgca +=_fgb ;};return _cba ,true ;};func (cmap *CMap )parseBfchar ()error {for {_bbba ,_affg :=cmap .parseObject ();if _affg !=nil {if _affg ==_ce .EOF {break ;};return _affg ;};var _cfa CharCode ;switch _cef :=_bbba .(type ){case cmapOperand :if _cef .Operand ==_ccc {return nil ;};return _ee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_cfa =_bedba (_cef );default:return _ee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_bbba ,_affg =cmap .parseObject ();if _affg !=nil {if _affg ==_ce .EOF {break ;};return _affg ;};var _cda []rune ;switch _ffa :=_bbba .(type ){case cmapOperand :if _ffa .Operand ==_ccc {return nil ;};_ae .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020o\u0070\u0065\u0072\u0061\u006e\u0064\u002e\u0020\u0025\u0023\u0076",_ffa );return ErrBadCMap ;case cmapHexString :_cda =_dad (_ffa );case cmapName :_ae .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0061\u006de\u002e \u0025\u0023\u0076",_ffa );_cda =[]rune {MissingCodeRune };default:_ae .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u0074\u0079\u0070e\u002e \u0025\u0023\u0076",_bbba );return ErrBadCMap ;};cmap ._cb [_cfa ]=string (_cda );};return nil ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_ffc :=_bg (name );if _ffc !=nil {return nil ,_ffc ;};if cmap ._cc ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_ca ,_ffc :=_bg (cmap ._cc );if _ffc !=nil {return nil ,_ffc ;};for _fdg ,_bdd :=range _ca ._cec {if _ ,_fge :=cmap ._cec [_fdg ];!_fge {cmap ._cec [_fdg ]=_bdd ;};};for _ ,_ef :=range _ca ._ec {cmap ._ec =append (cmap ._ec ,_ef );};cmap .computeInverseMappings ();return cmap ,nil ;};func NewCIDSystemInfo (obj _acc .PdfObject )(_eg CIDSystemInfo ,_af error ){_ea ,_cf :=_acc .GetDict (obj );if !_cf {return CIDSystemInfo {},_acc .ErrTypeError ;};_be ,_cf :=_acc .GetStringVal (_ea .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_cf {return CIDSystemInfo {},_acc .ErrTypeError ;};_aea ,_cf :=_acc .GetStringVal (_ea .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_cf {return CIDSystemInfo {},_acc .ErrTypeError ;};_eec ,_cf :=_acc .GetIntVal (_ea .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_cf {return CIDSystemInfo {},_acc .ErrTypeError ;};return CIDSystemInfo {Registry :_be ,Ordering :_aea ,Supplement :_eec },nil ;};type cmapObject interface{};func _db (_gb bool )*CMap {_ff :=16;if _gb {_ff =8;};return &CMap {_acb :_ff ,_cec :make (map[CharCode ]CharCode ),_eag :make (map[CharCode ]CharCode ),_cb :make (map[CharCode ]string ),_ga :make (map[string ]CharCode )};};func (_egce *cMapParser )parseHexString ()(cmapHexString ,error ){_egce ._gcbb .ReadByte ();_caaa :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_gaec :=_e .Buffer {};for {_egce .skipSpaces ();_aeag ,_afa :=_egce ._gcbb .Peek (1);if _afa !=nil {return cmapHexString {},_afa ;};if _aeag [0]=='>'{_egce ._gcbb .ReadByte ();break ;};_cde ,_ :=_egce ._gcbb .ReadByte ();if _e .IndexByte (_caaa ,_cde )>=0{_gaec .WriteByte (_cde );};};if _gaec .Len ()%2==1{_ae .Log .Debug ("\u0070\u0061rs\u0065\u0048\u0065x\u0053\u0074\u0072\u0069ng:\u0020ap\u0070\u0065\u006e\u0064\u0069\u006e\u0067 '\u0030\u0027\u0020\u0074\u006f\u0020\u0025#\u0071",_gaec .String ());_gaec .WriteByte ('0');};_eeba :=_gaec .Len ()/2;_ccca ,_ :=_fb .DecodeString (_gaec .String ());return cmapHexString {_bgc :_eeba ,_eef :_ccca },nil ;};type cmapString struct{String string ;};func (_cac *cMapParser )skipSpaces ()(int ,error ){_bdafa :=0;for {_agc ,_deff :=_cac ._gcbb .Peek (1);if _deff !=nil {return 0,_deff ;};if _acc .IsWhiteSpace (_agc [0]){_cac ._gcbb .ReadByte ();_bdafa ++;}else {break ;};};return _bdafa ,nil ;};func _dad (_bcf cmapHexString )[]rune {if len (_bcf ._eef )==1{return []rune {rune (_bcf ._eef [0])};};_bde :=_bcf ._eef ;if len (_bde )%2!=0{_bde =append (_bde ,0);_ae .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u0073\u002e\u0020\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0020\u0073\u0068\u0065\u0078\u003d\u0025#\u0076\u0020\u0074\u006f\u0020\u0025\u002b\u0076",_bcf ,_bde );};_baa :=len (_bde )>>1;_gabb :=make ([]uint16 ,_baa );for _cgd :=0;_cgd < _baa ;_cgd ++{_gabb [_cgd ]=uint16 (_bde [_cgd <<1])<<8+uint16 (_bde [_cgd <<1+1]);};_gbbee :=_c .Decode (_gabb );return _gbbee ;};func _agff (_bfa []byte )*cMapParser {_gfef :=cMapParser {};_dggc :=_e .NewBuffer (_bfa );_gfef ._gcbb =_fd .NewReader (_dggc );return &_gfef ;};type cMapParser struct{_gcbb *_fd .Reader };const (_gbbb ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_ebd ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_bgd ="\u0065n\u0064\u0063\u006d\u0061\u0070";_gbge ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_eaad ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_edga ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_ccc ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_geg ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_dgg ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_bgg ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_ebda ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_gbcd ="\u0075s\u0065\u0063\u006d\u0061\u0070";_fad ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_dgf ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_bgac ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);type cmapFloat struct{_dgfa float64 };func (cmap *CMap )parseName ()error {_gea :="";_aeac :=false ;for _edcg :=0;_edcg < 20&&!_aeac ;_edcg ++{_dfe ,_ccfd :=cmap .parseObject ();if _ccfd !=nil {return _ccfd ;};switch _gfc :=_dfe .(type ){case cmapOperand :switch _gfc .Operand {case "\u0064\u0065\u0066":_aeac =true ;default:_ae .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a\u0020\u0053\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076\u0020n\u0061\u006de\u003d\u0025\u0023\u0071",_dfe ,_gea );if _gea !=""{_gea =_d .Sprintf ("\u0025\u0073\u0020%\u0073",_gea ,_gfc .Operand );};_ae .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a \u0052\u0065\u0063\u006f\u0076\u0065\u0072e\u0064\u002e\u0020\u006e\u0061\u006d\u0065\u003d\u0025\u0023\u0071",_gea );};case cmapName :_gea =_gfc .Name ;};};if !_aeac {_ae .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._dde =_gea ;return nil ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (cmap *CMap )parseType ()error {_gec :=0;_dg :=false ;for _aef :=0;_aef < 3&&!_dg ;_aef ++{_fdba ,_cfec :=cmap .parseObject ();if _cfec !=nil {return _cfec ;};switch _fged :=_fdba .(type ){case cmapOperand :switch _fged .Operand {case "\u0064\u0065\u0066":_dg =true ;default:_ae .Log .Error ("\u0070\u0061r\u0073\u0065\u0054\u0079\u0070\u0065\u003a\u0020\u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020\u006f=%\u0023\u0076",_fdba );return ErrBadCMap ;};case cmapInt :_gec =int (_fged ._aacc );};};cmap ._aff =_gec ;return nil ;};func (_daaa *cMapParser )parseArray ()(cmapArray ,error ){_fbce :=cmapArray {};_fbce .Array =[]cmapObject {};_daaa ._gcbb .ReadByte ();for {_daaa .skipSpaces ();_ggg ,_cgc :=_daaa ._gcbb .Peek (1);if _cgc !=nil {return _fbce ,_cgc ;};if _ggg [0]==']'{_daaa ._gcbb .ReadByte ();break ;};_abcb ,_cgc :=_daaa .parseObject ();if _cgc !=nil {return _fbce ,_cgc ;};_fbce .Array =append (_fbce .Array ,_abcb );};return _fbce ,nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_eae ,_eaa :=cmap ._eag [cid ];return _eae ,_eaa ;};func (cmap *CMap )Type ()int {return cmap ._aff };func IsPredefinedCMap (name string )bool {return _dd .AssetExists (name )};const (_bb =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (_gaa *cMapParser )parseString ()(cmapString ,error ){_gaa ._gcbb .ReadByte ();_bgeg :=_e .Buffer {};_aega :=1;for {_dbf ,_cdg :=_gaa ._gcbb .Peek (1);if _cdg !=nil {return cmapString {_bgeg .String ()},_cdg ;};if _dbf [0]=='\\'{_gaa ._gcbb .ReadByte ();_eba ,_afbb :=_gaa ._gcbb .ReadByte ();if _afbb !=nil {return cmapString {_bgeg .String ()},_afbb ;};if _acc .IsOctalDigit (_eba ){_gaef ,_ggc :=_gaa ._gcbb .Peek (2);if _ggc !=nil {return cmapString {_bgeg .String ()},_ggc ;};var _fgag []byte ;_fgag =append (_fgag ,_eba );for _ ,_bgddf :=range _gaef {if _acc .IsOctalDigit (_bgddf ){_fgag =append (_fgag ,_bgddf );}else {break ;};};_gaa ._gcbb .Discard (len (_fgag )-1);_ae .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_fgag );_ffce ,_ggc :=_b .ParseUint (string (_fgag ),8,32);if _ggc !=nil {return cmapString {_bgeg .String ()},_ggc ;};_bgeg .WriteByte (byte (_ffce ));continue ;};switch _eba {case 'n':_bgeg .WriteByte ('\n');case 'r':_bgeg .WriteByte ('\r');case 't':_bgeg .WriteByte ('\t');case 'b':_bgeg .WriteByte ('\b');case 'f':_bgeg .WriteByte ('\f');case '(':_bgeg .WriteByte ('(');case ')':_bgeg .WriteByte (')');case '\\':_bgeg .WriteByte ('\\');};continue ;}else if _dbf [0]=='('{_aega ++;}else if _dbf [0]==')'{_aega --;if _aega ==0{_gaa ._gcbb .ReadByte ();break ;};};_gbd ,_ :=_gaa ._gcbb .ReadByte ();_bgeg .WriteByte (_gbd );};return cmapString {_bgeg .String ()},nil ;};func _bbdd ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};type cmapHexString struct{_bgc int ;_eef []byte ;};func (cmap *CMap )toBfData ()string {if len (cmap ._cb )==0{return "";};_eeca :=make ([]CharCode ,0,len (cmap ._cb ));for _bcb :=range cmap ._cb {_eeca =append (_eeca ,_bcb );};_ac .Slice (_eeca ,func (_def ,_ccf int )bool {return _eeca [_def ]< _eeca [_ccf ]});var _edg []charRange ;_efe :=charRange {_eeca [0],_eeca [0]};_dfg :=cmap ._cb [_eeca [0]];for _ ,_ddd :=range _eeca [1:]{_gbg :=cmap ._cb [_ddd ];if _ddd ==_efe ._ab +1&&_dfc (_gbg )==_dfc (_dfg )+1{_efe ._ab =_ddd ;}else {_edg =append (_edg ,_efe );_efe ._df ,_efe ._ab =_ddd ,_ddd ;};_dfg =_gbg ;};_edg =append (_edg ,_efe );var _efa []CharCode ;var _bcc []fbRange ;for _ ,_efac :=range _edg {if _efac ._df ==_efac ._ab {_efa =append (_efa ,_efac ._df );}else {_bcc =append (_bcc ,fbRange {_ddg :_efac ._df ,_de :_efac ._ab ,_fc :cmap ._cb [_efac ._df ]});};};_ae .Log .Trace ("\u0063\u0068ar\u0052\u0061\u006eg\u0065\u0073\u003d\u0025d f\u0062Ch\u0061\u0072\u0073\u003d\u0025\u0064\u0020fb\u0052\u0061\u006e\u0067\u0065\u0073\u003d%\u0064",len (_edg ),len (_efa ),len (_bcc ));var _ecc []string ;if len (_efa )> 0{_gae :=(len (_efa )+_ddga -1)/_ddga ;for _gag :=0;_gag < _gae ;_gag ++{_gfa :=_agdcf (len (_efa )-_gag *_ddga ,_ddga );_ecc =append (_ecc ,_d .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_gfa ));for _afb :=0;_afb < _gfa ;_afb ++{_gef :=_efa [_gag *_ddga +_afb ];_ccff :=cmap ._cb [_gef ];_ecc =append (_ecc ,_d .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_gef ,_aacb (_ccff )));};_ecc =append (_ecc ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_bcc )> 0{_dfda :=(len (_bcc )+_ddga -1)/_ddga ;for _gbb :=0;_gbb < _dfda ;_gbb ++{_deb :=_agdcf (len (_bcc )-_gbb *_ddga ,_ddga );_ecc =append (_ecc ,_d .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_deb ));for _fgce :=0;_fgce < _deb ;_fgce ++{_cdf :=_bcc [_gbb *_ddga +_fgce ];_ecc =append (_ecc ,_d .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_cdf ._ddg ,_cdf ._de ,_aacb (_cdf ._fc )));};_ecc =append (_ecc ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _a .Join (_ecc ,"\u000a");};type cmapArray struct{Array []cmapObject ;};func _dfc (_fbg string )rune {_da :=[]rune (_fbg );return _da [len (_da )-1]};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (cmap *CMap )parseCodespaceRange ()error {for {_gbcf ,_gdea :=cmap .parseObject ();if _gdea !=nil {if _gdea ==_ce .EOF {break ;};return _gdea ;};_adfa ,_agd :=_gbcf .(cmapHexString );if !_agd {if _ade ,_cade :=_gbcf .(cmapOperand );_cade {if _ade .Operand ==_eaad {return nil ;};return _ee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_gbcf ,_gdea =cmap .parseObject ();if _gdea !=nil {if _gdea ==_ce .EOF {break ;};return _gdea ;};_bdbg ,_agd :=_gbcf .(cmapHexString );if !_agd {return _ee .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_adfa ._eef )!=len (_bdbg ._eef ){return _ee .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};_bdbc :=_bedba (_adfa );_beag :=_bedba (_bdbg );if _beag < _bdbc {_ae .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0042\u0061d\u0020\u0063\u006fd\u0065\u0073\u0070\u0061\u0063\u0065\u002e\u0020\u006cow\u003d\u0030\u0078%\u0030\u0032x\u0020\u0068\u0069\u0067\u0068\u003d0\u0078\u00250\u0032\u0078",_bdbc ,_beag );return ErrBadCMap ;};_cdd :=_bdbg ._bgc ;_aaae :=Codespace {NumBytes :_cdd ,Low :_bdbc ,High :_beag };cmap ._ec =append (cmap ._ec ,_aaae );_ae .Log .Trace ("\u0043\u006f\u0064e\u0073\u0070\u0061\u0063e\u0020\u006c\u006f\u0077\u003a\u0020\u0030x\u0025\u0058\u002c\u0020\u0068\u0069\u0067\u0068\u003a\u0020\u0030\u0078\u0025\u0058",_bdbc ,_beag );};if len (cmap ._ec )==0{_ae .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u0020\u0069\u006e\u0020\u0063ma\u0070\u002e");return ErrBadCMap ;};return nil ;};func (cmap *CMap )Bytes ()[]byte {_ae .Log .Trace ("\u0063\u006d\u0061\u0070.B\u0079\u0074\u0065\u0073\u003a\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",cmap .String ());if len (cmap ._bf )> 0{return cmap ._bf ;};cmap ._bf =[]byte (_a .Join ([]string {_cbf ,cmap .toBfData (),_bbd },"\u000a"));return cmap ._bf ;}; |