unipdf/internal/cmap/cmap.go
2022-02-05 21:34:53 +00:00

139 lines
41 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 (_ca "bufio";_ad "bytes";_e "encoding/hex";_aa "errors";_a "fmt";_fd "github.com/unidoc/unipdf/v3/common";_eg "github.com/unidoc/unipdf/v3/core";_fb "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_ce "io";_g "sort";_cd "strconv";
_d "strings";_f "unicode/utf16";);type cmapOperand struct{Operand string ;};type CharCode uint32 ;type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )Bytes ()[]byte {_fd .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 ._ea )> 0{return cmap ._ea ;};cmap ._ea =[]byte (_d .Join ([]string {_eef ,cmap .toBfData (),_cbbc },"\u000a"));return cmap ._ea ;};type charRange struct{_de CharCode ;_ee CharCode ;};func (_gbf *cMapParser )parseName ()(cmapName ,error ){_feb :="";
_ebfe :=false ;for {_afeg ,_eff :=_gbf ._eeea .Peek (1);if _eff ==_ce .EOF {break ;};if _eff !=nil {return cmapName {_feb },_eff ;};if !_ebfe {if _afeg [0]=='/'{_ebfe =true ;_gbf ._eeea .ReadByte ();}else {_fd .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",_afeg ,_afeg );
return cmapName {_feb },_a .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_afeg [0]);};}else {if _eg .IsWhiteSpace (_afeg [0]){break ;}else if (_afeg [0]=='/')||(_afeg [0]=='[')||(_afeg [0]=='(')||(_afeg [0]==']')||(_afeg [0]=='<')||(_afeg [0]=='>'){break ;
}else if _afeg [0]=='#'{_cfad ,_bfgc :=_gbf ._eeea .Peek (3);if _bfgc !=nil {return cmapName {_feb },_bfgc ;};_gbf ._eeea .Discard (3);_cca ,_bfgc :=_e .DecodeString (string (_cfad [1:3]));if _bfgc !=nil {return cmapName {_feb },_bfgc ;};_feb +=string (_cca );
}else {_cdg ,_ :=_gbf ._eeea .ReadByte ();_feb +=string (_cdg );};};};return cmapName {_feb },nil ;};type cMapParser struct{_eeea *_ca .Reader };func NewCIDSystemInfo (obj _eg .PdfObject )(_cfg CIDSystemInfo ,_b error ){_ff ,_gc :=_eg .GetDict (obj );if !_gc {return CIDSystemInfo {},_eg .ErrTypeError ;
};_egc ,_gc :=_eg .GetStringVal (_ff .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_gc {return CIDSystemInfo {},_eg .ErrTypeError ;};_fa ,_gc :=_eg .GetStringVal (_ff .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_gc {return CIDSystemInfo {},_eg .ErrTypeError ;
};_gf ,_gc :=_eg .GetIntVal (_ff .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_gc {return CIDSystemInfo {},_eg .ErrTypeError ;};return CIDSystemInfo {Registry :_egc ,Ordering :_fa ,Supplement :_gf },nil ;};type cmapObject interface{};
func (_gb *CIDSystemInfo )String ()string {return _a .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_gb .Registry ,_gb .Ordering ,_gb .Supplement );};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_aaa ,_dgc :=cmap .BytesToCharcodes (data );
if !_dgc {_fd .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;};_bf :=make ([]string ,len (_aaa ));var _ebf []CharCode ;for _fgf ,_eeg :=range _aaa {_cgc ,_gafd :=cmap ._add [_eeg ];if !_gafd {_ebf =append (_ebf ,_eeg );_cgc =MissingCodeString ;};_bf [_fgf ]=_cgc ;};_bd :=_d .Join (_bf ,"");if len (_ebf )> 0{_fd .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 ),_aaa ,len (_ebf ),_ebf ,_bd ,cmap );
};return _bd ,len (_ebf );};type cmapHexString struct{_dbgd int ;_bccd []byte ;};func _dace (_faef ,_cda int )int {if _faef < _cda {return _faef ;};return _cda ;};func (cmap *CMap )Stream ()(*_eg .PdfObjectStream ,error ){if cmap ._eae !=nil {return cmap ._eae ,nil ;
};_gfccc ,_bgb :=_eg .MakeStream (cmap .Bytes (),_eg .NewFlateEncoder ());if _bgb !=nil {return nil ,_bgb ;};cmap ._eae =_gfccc ;return cmap ._eae ,nil ;};func (cmap *CMap )inCodespace (_fae CharCode ,_bc int )bool {for _ ,_cebd :=range cmap ._dee {if _cebd .Low <=_fae &&_fae <=_cebd .High &&_bc ==_cebd .NumBytes {return true ;
};};return false ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._be };func (cmap *CMap )computeInverseMappings (){for _cgf ,_edc :=range cmap ._ffc {if _gda ,_gg :=cmap ._deef [_edc ];!_gg ||(_gg &&_gda > _cgf ){cmap ._deef [_edc ]=_cgf ;
};};for _ge ,_gdd :=range cmap ._add {if _eaa ,_ecg :=cmap ._cag [_gdd ];!_ecg ||(_ecg &&_eaa > _ge ){cmap ._cag [_gdd ]=_ge ;};};_g .Slice (cmap ._dee ,func (_ggd ,_dcg int )bool {return cmap ._dee [_ggd ].Low < cmap ._dee [_dcg ].Low });};type CIDSystemInfo struct{Registry string ;
Ordering string ;Supplement int ;};func (cmap *CMap )parseWMode ()error {var _bbg int ;_aag :=false ;for _eca :=0;_eca < 3&&!_aag ;_eca ++{_bbe ,_ab :=cmap .parseObject ();if _ab !=nil {return _ab ;};switch _ddg :=_bbe .(type ){case cmapOperand :switch _ddg .Operand {case "\u0064\u0065\u0066":_aag =true ;
default:_fd .Log .Error ("\u0070\u0061\u0072\u0073\u0065\u0057\u004d\u006f\u0064\u0065:\u0020\u0073\u0074\u0061\u0074\u0065\u0020e\u0072\u0072\u006f\u0072\u002e\u0020\u006f\u003d\u0025\u0023\u0076",_bbe );return ErrBadCMap ;};case cmapInt :_bbg =int (_ddg ._dfdc );
};};cmap ._fg =integer {_agbc :true ,_dbfd :_bbg };return nil ;};func (cmap *CMap )parseBfchar ()error {for {_geb ,_fef :=cmap .parseObject ();if _fef !=nil {if _fef ==_ce .EOF {break ;};return _fef ;};var _bec CharCode ;switch _gdb :=_geb .(type ){case cmapOperand :if _gdb .Operand ==_dfae {return nil ;
};return _aa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_bec =_ecab (_gdb );default:return _aa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};_geb ,_fef =cmap .parseObject ();if _fef !=nil {if _fef ==_ce .EOF {break ;};return _fef ;};var _ddb []rune ;switch _feeg :=_geb .(type ){case cmapOperand :if _feeg .Operand ==_dfae {return nil ;};_fd .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",_feeg );
return ErrBadCMap ;case cmapHexString :_ddb =_cbe (_feeg );case cmapName :_fd .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",_feeg );_ddb =[]rune {MissingCodeRune };
default:_fd .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",_geb );return ErrBadCMap ;};cmap ._add [_bec ]=string (_ddb );};return nil ;};func _dfa (_cbb string )rune {_gae :=[]rune (_cbb );
return _gae [len (_gae )-1]};func (_ggda *cMapParser )parseObject ()(cmapObject ,error ){_ggda .skipSpaces ();for {_bfd ,_agac :=_ggda ._eeea .Peek (2);if _agac !=nil {return nil ,_agac ;};if _bfd [0]=='%'{_ggda .parseComment ();_ggda .skipSpaces ();continue ;
}else if _bfd [0]=='/'{_cfd ,_ffa :=_ggda .parseName ();return _cfd ,_ffa ;}else if _bfd [0]=='('{_ddc ,_ffb :=_ggda .parseString ();return _ddc ,_ffb ;}else if _bfd [0]=='['{_cac ,_bad :=_ggda .parseArray ();return _cac ,_bad ;}else if (_bfd [0]=='<')&&(_bfd [1]=='<'){_eceb ,_edca :=_ggda .parseDict ();
return _eceb ,_edca ;}else if _bfd [0]=='<'{_dbae ,_afeb :=_ggda .parseHexString ();return _dbae ,_afeb ;}else if _eg .IsDecimalDigit (_bfd [0])||(_bfd [0]=='-'&&_eg .IsDecimalDigit (_bfd [1])){_bcd ,_baa :=_ggda .parseNumber ();if _baa !=nil {return nil ,_baa ;
};return _bcd ,nil ;}else {_acd ,_fbd :=_ggda .parseOperand ();if _fbd !=nil {return nil ,_fbd ;};return _acd ,nil ;};};};type cmapInt struct{_dfdc int64 };func (cmap *CMap )parseCIDRange ()error {for {_cea ,_cdbd :=cmap .parseObject ();if _cdbd !=nil {if _cdbd ==_ce .EOF {break ;
};return _cdbd ;};_gbd ,_fecd :=_cea .(cmapHexString );if !_fecd {if _ggg ,_cff :=_cea .(cmapOperand );_cff {if _ggg .Operand ==_efcd {return nil ;};return _aa .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");
};};_gdce :=_ecab (_gbd );_cea ,_cdbd =cmap .parseObject ();if _cdbd !=nil {if _cdbd ==_ce .EOF {break ;};return _cdbd ;};_daga ,_fecd :=_cea .(cmapHexString );if !_fecd {return _aa .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 (_gbd ._bccd )!=len (_daga ._bccd ){return _aa .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");};_acg :=_ecab (_daga );
if _gdce > _acg {_fd .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",_gdce ,_acg );
return ErrBadCMap ;};_cea ,_cdbd =cmap .parseObject ();if _cdbd !=nil {if _cdbd ==_ce .EOF {break ;};return _cdbd ;};_cbdf ,_fecd :=_cea .(cmapInt );if !_fecd {return _aa .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 _cbdf ._dfdc < 0{return _aa .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_ddaa :=_cbdf ._dfdc ;for _dfc :=_gdce ;_dfc <=_acg ;_dfc ++{cmap ._ffc [_dfc ]=CharCode (_ddaa );
_ddaa ++;};_fd .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",_gdce ,_acg ,_cbdf ._dfdc );};return nil ;};func _ecab (_dcfb cmapHexString )CharCode {_gfd :=CharCode (0);
for _ ,_bdg :=range _dcfb ._bccd {_gfd <<=8;_gfd |=CharCode (_bdg );};return _gfd ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_fd .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 :=_bb (isSimple );cmap .cMapParser =_fccg (data );_ege :=cmap .parse ();if _ege !=nil {return nil ,_ege ;};if len (cmap ._dee )==0{if cmap ._eb !=""{return cmap ,nil ;};_fd .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 ;};func _cbe (_bdf cmapHexString )[]rune {if len (_bdf ._bccd )==1{return []rune {rune (_bdf ._bccd [0])};};_bfge :=_bdf ._bccd ;if len (_bfge )%2!=0{_bfge =append (_bfge ,0);_fd .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",_bdf ,_bfge );
};_caea :=len (_bfge )>>1;_ddf :=make ([]uint16 ,_caea );for _aca :=0;_aca < _caea ;_aca ++{_ddf [_aca ]=uint16 (_bfge [_aca <<1])<<8+uint16 (_bfge [_aca <<1+1]);};_ecef :=_f .Decode (_ddf );return _ecef ;};func (cmap *CMap )NBits ()int {return cmap ._ec };
func (_bcb *cMapParser )skipSpaces ()(int ,error ){_gef :=0;for {_gfg ,_abg :=_bcb ._eeea .Peek (1);if _abg !=nil {return 0,_abg ;};if _eg .IsWhiteSpace (_gfg [0]){_bcb ._eeea .ReadByte ();_gef ++;}else {break ;};};return _gef ,nil ;};const (_ccb ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";
_bae ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_eed ="\u0065n\u0064\u0063\u006d\u0061\u0070";_eadg ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_cbbb ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_ebe ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_dfae ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_cggf ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_decc ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_dad ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_efcd ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bgcb ="\u0075s\u0065\u0063\u006d\u0061\u0070";_afff ="\u0057\u004d\u006fd\u0065";_gcc ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_ebfg ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_cbc ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )Name ()string {return cmap ._gd };type fbRange struct{_ag CharCode ;_dd CharCode ;_egb string ;};type integer struct{_agbc bool ;
_dbfd int ;};func (cmap *CMap )String ()string {_dab :=cmap ._be ;_dag :=[]string {_a .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._ec ),_a .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ga )};if cmap ._ddd !=""{_dag =append (_dag ,_a .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._ddd ));
};if cmap ._eb !=""{_dag =append (_dag ,_a .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._eb ));};_dag =append (_dag ,_a .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_dab .String ()));
if len (cmap ._dee )> 0{_dag =append (_dag ,_a .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._dee )));};if len (cmap ._add )> 0{_dag =append (_dag ,_a .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._add )));
};return _a .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._gd ,_d .Join (_dag ,"\u0020"));};func (_afc *cMapParser )parseComment ()(string ,error ){var _eacd _ad .Buffer ;_ ,_ggca :=_afc .skipSpaces ();if _ggca !=nil {return _eacd .String (),_ggca ;
};_agb :=true ;for {_bcbg ,_aaf :=_afc ._eeea .Peek (1);if _aaf !=nil {_fd .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_aaf );return _eacd .String (),_aaf ;};if _agb &&_bcbg [0]!='%'{return _eacd .String (),ErrBadCMapComment ;
};_agb =false ;if (_bcbg [0]!='\r')&&(_bcbg [0]!='\n'){_bgbe ,_ :=_afc ._eeea .ReadByte ();_eacd .WriteByte (_bgbe );}else {break ;};};return _eacd .String (),nil ;};func (_aaga *cMapParser )parseNumber ()(cmapObject ,error ){_bfbg ,_fbdg :=_eg .ParseNumber (_aaga ._eeea );
if _fbdg !=nil {return nil ,_fbdg ;};switch _cfb :=_bfbg .(type ){case *_eg .PdfObjectFloat :return cmapFloat {float64 (*_cfb )},nil ;case *_eg .PdfObjectInteger :return cmapInt {int64 (*_cfb )},nil ;};return nil ,_a .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_bfbg );
};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _ceb []CharCode ;if cmap ._ec ==8{for _ ,_cdb :=range data {_ceb =append (_ceb ,CharCode (_cdb ));};return _ceb ,true ;};for _cfc :=0;_cfc < len (data );{_gaa ,_ac ,_fc :=cmap .matchCode (data [_cfc :]);
if !_fc {_fd .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",_cfc ,data ,string (data ));
return _ceb ,false ;};_ceb =append (_ceb ,_gaa );_cfc +=_ac ;};return _ceb ,true ;};func (_ecac *cMapParser )parseOperand ()(cmapOperand ,error ){_ecc :=cmapOperand {};_cabc :=_ad .Buffer {};for {_bgbf ,_aed :=_ecac ._eeea .Peek (1);if _aed !=nil {if _aed ==_ce .EOF {break ;
};return _ecc ,_aed ;};if _eg .IsDelimiter (_bgbf [0]){break ;};if _eg .IsWhiteSpace (_bgbf [0]){break ;};_ecec ,_ :=_ecac ._eeea .ReadByte ();_cabc .WriteByte (_ecec );};if _cabc .Len ()==0{return _ecc ,_a .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_ecc .Operand =_cabc .String ();return _ecc ,nil ;};func (cmap *CMap )parseVersion ()error {_dba :="";_gec :=false ;for _dcb :=0;_dcb < 3&&!_gec ;_dcb ++{_ede ,_cbda :=cmap .parseObject ();if _cbda !=nil {return _cbda ;};switch _fac :=_ede .(type ){case cmapOperand :switch _fac .Operand {case "\u0064\u0065\u0066":_gec =true ;
default:_fd .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",_ede );
return ErrBadCMap ;};case cmapInt :_dba =_a .Sprintf ("\u0025\u0064",_fac ._dfdc );case cmapFloat :_dba =_a .Sprintf ("\u0025\u0066",_fac ._eeed );case cmapString :_dba =_fac .String ;default:_fd .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",_ede );
};};cmap ._ddd =_dba ;return nil ;};type cmapArray struct{Array []cmapObject ;};func (_aafd *cMapParser )parseArray ()(cmapArray ,error ){_dbg :=cmapArray {};_dbg .Array =[]cmapObject {};_aafd ._eeea .ReadByte ();for {_aafd .skipSpaces ();_gbab ,_gdg :=_aafd ._eeea .Peek (1);
if _gdg !=nil {return _dbg ,_gdg ;};if _gbab [0]==']'{_aafd ._eeea .ReadByte ();break ;};_abc ,_gdg :=_aafd .parseObject ();if _gdg !=nil {return _dbg ,_gdg ;};_dbg .Array =append (_dbg .Array ,_abc );};return _dbg ,nil ;};func _cgfc (_bdac cmapHexString )rune {_bfgg :=_cbe (_bdac );
if _dbgc :=len (_bfgg );_dbgc ==0{_fd .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",_bdac );
return MissingCodeRune ;};if len (_bfgg )> 1{_fd .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",_bdac ,_bfgg );
};return _bfgg [0];};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_dg :=_aab (name );if _dg !=nil {return nil ,_dg ;};if cmap ._eb ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_ebb ,_dg :=_aab (cmap ._eb );if _dg !=nil {return nil ,_dg ;
};for _agg ,_fag :=range _ebb ._ffc {if _ ,_cab :=cmap ._ffc [_agg ];!_cab {cmap ._ffc [_agg ]=_fag ;};};cmap ._dee =append (cmap ._dee ,_ebb ._dee ...);cmap .computeInverseMappings ();return cmap ,nil ;};const (_cf =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune );
);type cmapName struct{Name string ;};func (_adcd *cMapParser )parseDict ()(cmapDict ,error ){_fd .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_age :=_afee ();_dcf ,_ :=_adcd ._eeea .ReadByte ();
if _dcf !='<'{return _age ,ErrBadCMapDict ;};_dcf ,_ =_adcd ._eeea .ReadByte ();if _dcf !='<'{return _age ,ErrBadCMapDict ;};for {_adcd .skipSpaces ();_eeeg ,_bbd :=_adcd ._eeea .Peek (2);if _bbd !=nil {return _age ,_bbd ;};if (_eeeg [0]=='>')&&(_eeeg [1]=='>'){_adcd ._eeea .ReadByte ();
_adcd ._eeea .ReadByte ();break ;};_faeb ,_bbd :=_adcd .parseName ();_fd .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_faeb .Name );if _bbd !=nil {_fd .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",_bbd );
return _age ,_bbd ;};_adcd .skipSpaces ();_deba ,_bbd :=_adcd .parseObject ();if _bbd !=nil {return _age ,_bbd ;};_age .Dict [_faeb .Name ]=_deba ;_adcd .skipSpaces ();_eeeg ,_bbd =_adcd ._eeea .Peek (3);if _bbd !=nil {return _age ,_bbd ;};if string (_eeeg )=="\u0064\u0065\u0066"{_adcd ._eeea .Discard (3);
};};return _age ,nil ;};func (cmap *CMap )parseBfrange ()error {for {var _fbf CharCode ;_bgf ,_eba :=cmap .parseObject ();if _eba !=nil {if _eba ==_ce .EOF {break ;};return _eba ;};switch _caa :=_bgf .(type ){case cmapOperand :if _caa .Operand ==_decc {return nil ;
};return _aa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_fbf =_ecab (_caa );default:return _aa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};var _egcb CharCode ;_bgf ,_eba =cmap .parseObject ();if _eba !=nil {if _eba ==_ce .EOF {break ;};return _eba ;};switch _ggdc :=_bgf .(type ){case cmapOperand :_fd .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\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 :_egcb =_ecab (_ggdc );default:_fd .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bgf );return ErrBadCMap ;};_bgf ,_eba =cmap .parseObject ();
if _eba !=nil {if _eba ==_ce .EOF {break ;};return _eba ;};switch _gafg :=_bgf .(type ){case cmapArray :if len (_gafg .Array )!=int (_egcb -_fbf )+1{_fd .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 _fdb :=_fbf ;_fdb <=_egcb ;_fdb ++{_aff :=_gafg .Array [_fdb -_fbf ];_gggf ,_bbf :=_aff .(cmapHexString );if !_bbf {return _aa .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_dbff :=_cbe (_gggf );cmap ._add [_fdb ]=string (_dbff );};case cmapHexString :_gce :=_cbe (_gafg );_efc :=len (_gce );for _ced :=_fbf ;_ced <=_egcb ;_ced ++{cmap ._add [_ced ]=string (_gce );if _efc > 0{_gce [_efc -1]++;}else {_fd .Log .Debug ("\u004e\u006f\u0020c\u006d\u0061\u0070\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0066\u006f\u0072\u0020\u0025\u0023\u0076",_ced );
};};default:_fd .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bgf );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._add )==0{return "";
};_dbf :=make ([]CharCode ,0,len (cmap ._add ));for _cdf :=range cmap ._add {_dbf =append (_dbf ,_cdf );};_g .Slice (_dbf ,func (_fed ,_cfa int )bool {return _dbf [_fed ]< _dbf [_cfa ]});var _bac []charRange ;_bag :=charRange {_dbf [0],_dbf [0]};_bab :=cmap ._add [_dbf [0]];
for _ ,_cebe :=range _dbf [1:]{_cb :=cmap ._add [_cebe ];if _cebe ==_bag ._ee +1&&_dfa (_cb )==_dfa (_bab )+1{_bag ._ee =_cebe ;}else {_bac =append (_bac ,_bag );_bag ._de ,_bag ._ee =_cebe ,_cebe ;};_bab =_cb ;};_bac =append (_bac ,_bag );var _gad []CharCode ;
var _cbd []fbRange ;for _ ,_gcbc :=range _bac {if _gcbc ._de ==_gcbc ._ee {_gad =append (_gad ,_gcbc ._de );}else {_cbd =append (_cbd ,fbRange {_ag :_gcbc ._de ,_dd :_gcbc ._ee ,_egb :cmap ._add [_gcbc ._de ]});};};_fd .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 (_bac ),len (_gad ),len (_cbd ));
var _acb []string ;if len (_gad )> 0{_gdae :=(len (_gad )+_dddg -1)/_dddg ;for _gab :=0;_gab < _gdae ;_gab ++{_dca :=_dace (len (_gad )-_gab *_dddg ,_dddg );_acb =append (_acb ,_a .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_dca ));
for _gdag :=0;_gdag < _dca ;_gdag ++{_adc :=_gad [_gab *_dddg +_gdag ];_eec :=cmap ._add [_adc ];_acb =append (_acb ,_a .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_adc ,_bcc (_eec )));};_acb =append (_acb ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
};};if len (_cbd )> 0{_fea :=(len (_cbd )+_dddg -1)/_dddg ;for _dfd :=0;_dfd < _fea ;_dfd ++{_gdf :=_dace (len (_cbd )-_dfd *_dddg ,_dddg );_acb =append (_acb ,_a .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_gdf ));
for _eab :=0;_eab < _gdf ;_eab ++{_afb :=_cbd [_dfd *_dddg +_eab ];_acb =append (_acb ,_a .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_afb ._ag ,_afb ._dd ,_bcc (_afb ._egb )));};_acb =append (_acb ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
};};return _d .Join (_acb ,"\u000a");};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _bee ,_da :=cmap ._add [code ];_da {return _bee ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_ba ,_ece :=cmap ._ffc [code ];
return _ba ,_ece ;};func IsPredefinedCMap (name string )bool {return _fb .AssetExists (name )};func _afee ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (cmap *CMap )matchCode (_bfb []byte )(_deee CharCode ,_deb int ,_ged bool ){for _gedg :=0;
_gedg < _cf ;_gedg ++{if _gedg < len (_bfb ){_deee =_deee <<8|CharCode (_bfb [_gedg ]);_deb ++;};_ged =cmap .inCodespace (_deee ,_gedg +1);if _ged {return _deee ,_deb ,true ;};};_fd .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",_bfb ,string (_bfb ),cmap );
return 0,0,false ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func _bb (_fe bool )*CMap {_gfc :=16;if _fe {_gfc =8;};return &CMap {_ec :_gfc ,_ffc :make (map[CharCode ]CharCode ),_deef :make (map[CharCode ]CharCode ),_add :make (map[CharCode ]string ),_cag :make (map[string ]CharCode )};
};func _fccg (_bfc []byte )*cMapParser {_edee :=cMapParser {};_faf :=_ad .NewBuffer (_bfc );_edee ._eeea =_ca .NewReader (_faf );return &_edee ;};func (cmap *CMap )parseType ()error {_fage :=0;_eced :=false ;for _ggc :=0;_ggc < 3&&!_eced ;_ggc ++{_ade ,_gddc :=cmap .parseObject ();
if _gddc !=nil {return _gddc ;};switch _dggd :=_ade .(type ){case cmapOperand :switch _dggd .Operand {case "\u0064\u0065\u0066":_eced =true ;default:_fd .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",_ade );
return ErrBadCMap ;};case cmapInt :_fage =int (_dggd ._dfdc );};};cmap ._ga =_fage ;return nil ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._fg ._dbfd ,cmap ._fg ._agbc };func _bcc (_fec string )string {_fca :=[]rune (_fec );_edba :=make ([]string ,len (_fca ));
for _cbbg ,_dfad :=range _fca {_edba [_cbbg ]=_a .Sprintf ("\u0025\u0030\u0034\u0078",_dfad );};return _a .Sprintf ("\u003c\u0025\u0073\u003e",_d .Join (_edba ,""));};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_afe ,_bg :=cmap ._cag [s ];
return _afe ,_bg };func (cmap *CMap )parseSystemInfo ()error {_feag :=false ;_bed :=false ;_bca :="";_bga :=false ;_gca :=CIDSystemInfo {};for _ggb :=0;_ggb < 50&&!_bga ;_ggb ++{_gddcd ,_gba :=cmap .parseObject ();if _gba !=nil {return _gba ;};switch _dcag :=_gddcd .(type ){case cmapDict :_bgc :=_dcag .Dict ;
_gfeg ,_bcf :=_bgc ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_bcf {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ae ,_bcf :=_gfeg .(cmapString );
if !_bcf {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gca .Registry =_ae .String ;_gfeg ,_bcf =_bgc ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];
if !_bcf {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ae ,_bcf =_gfeg .(cmapString );if !_bcf {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_gca .Ordering =_ae .String ;_fee ,_bcf :=_bgc ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_bcf {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_cdc ,_bcf :=_fee .(cmapInt );if !_bcf {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gca .Supplement =int (_cdc ._dfdc );
_bga =true ;case cmapOperand :switch _dcag .Operand {case "\u0062\u0065\u0067i\u006e":_feag =true ;case "\u0065\u006e\u0064":_bga =true ;case "\u0064\u0065\u0066":_bed =false ;};case cmapName :if _feag {_bca =_dcag .Name ;_bed =true ;};case cmapString :if _bed {switch _bca {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_gca .Registry =_dcag .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_gca .Ordering =_dcag .String ;};};case cmapInt :if _bed {switch _bca {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_gca .Supplement =int (_dcag ._dfdc );};};};};if !_bga {_fd .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 ._be =_gca ;return nil ;};func _aab (_gcb string )(*CMap ,error ){_deg ,_gcg :=_fb .Asset (_gcb );if _gcg !=nil {return nil ,_gcg ;};return LoadCmapFromDataCID (_deg );};func (cmap *CMap )parseName ()error {_egg :="";_fdg :=false ;
for _degf :=0;_degf < 20&&!_fdg ;_degf ++{_faee ,_afg :=cmap .parseObject ();if _afg !=nil {return _afg ;};switch _bgd :=_faee .(type ){case cmapOperand :switch _bgd .Operand {case "\u0064\u0065\u0066":_fdg =true ;default:_fd .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",_faee ,_egg );
if _egg !=""{_egg =_a .Sprintf ("\u0025\u0073\u0020%\u0073",_egg ,_bgd .Operand );};_fd .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",_egg );
};case cmapName :_egg =_bgd .Name ;};};if !_fdg {_fd .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._gd =_egg ;return nil ;};func (cmap *CMap )parseCodespaceRange ()error {for {_dec ,_bbeb :=cmap .parseObject ();
if _bbeb !=nil {if _bbeb ==_ce .EOF {break ;};return _bbeb ;};_eda ,_gcgf :=_dec .(cmapHexString );if !_gcgf {if _cgg ,_dac :=_dec .(cmapOperand );_dac {if _cgg .Operand ==_cbbb {return nil ;};return _aa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
};};_dec ,_bbeb =cmap .parseObject ();if _bbeb !=nil {if _bbeb ==_ce .EOF {break ;};return _bbeb ;};_dde ,_gcgf :=_dec .(cmapHexString );if !_gcgf {return _aa .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_eda ._bccd )!=len (_dde ._bccd ){return _aa .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");
};_ceg :=_ecab (_eda );_fgc :=_ecab (_dde );if _fgc < _ceg {_fd .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",_ceg ,_fgc );
return ErrBadCMap ;};_cdfd :=_dde ._dbgd ;_ebbb :=Codespace {NumBytes :_cdfd ,Low :_ceg ,High :_fgc };cmap ._dee =append (cmap ._dee ,_ebbb );_fd .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",_ceg ,_fgc );
};if len (cmap ._dee )==0{_fd .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 )parse ()error {var _gbg cmapObject ;
for {_beb ,_cbg :=cmap .parseObject ();if _cbg !=nil {if _cbg ==_ce .EOF {break ;};_fd .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_cbg );return _cbg ;};
switch _gdagf :=_beb .(type ){case cmapOperand :_dbc :=_gdagf ;switch _dbc .Operand {case _eadg :_bfg :=cmap .parseCodespaceRange ();if _bfg !=nil {return _bfg ;};case _dad :_ead :=cmap .parseCIDRange ();if _ead !=nil {return _ead ;};case _ebe :_dda :=cmap .parseBfchar ();
if _dda !=nil {return _dda ;};case _cggf :_eade :=cmap .parseBfrange ();if _eade !=nil {return _eade ;};case _bgcb :if _gbg ==nil {_fd .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 ;};_gfeb ,_bdc :=_gbg .(cmapName );if !_bdc {_fd .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",_gbg );
return ErrBadCMap ;};cmap ._eb =_gfeb .Name ;case _ccb :_aac :=cmap .parseSystemInfo ();if _aac !=nil {return _aac ;};};case cmapName :_egf :=_gdagf ;switch _egf .Name {case _ccb :_gadg :=cmap .parseSystemInfo ();if _gadg !=nil {return _gadg ;};case _gcc :_gfcb :=cmap .parseName ();
if _gfcb !=nil {return _gfcb ;};case _ebfg :_aga :=cmap .parseType ();if _aga !=nil {return _aga ;};case _cbc :_aace :=cmap .parseVersion ();if _aace !=nil {return _aace ;};case _afff :if _cbg =cmap .parseWMode ();_cbg !=nil {return _cbg ;};};};_gbg =_beb ;
};return nil ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_ed :=make (map[CharCode ]string ,len (codeToRune ));for _cg ,_eac :=range codeToRune {_ed [_cg ]=string (_eac );};cmap :=&CMap {_gd :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ga :2,_ec :16,_be :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_dee :[]Codespace {{Low :0,High :0xffff}},_add :_ed ,_cag :make (map[string ]CharCode ,len (codeToRune )),_ffc :make (map[CharCode ]CharCode ,len (codeToRune )),_deef :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )Type ()int {return cmap ._ga };type cmapDict struct{Dict map[string ]cmapObject ;};type cmapFloat struct{_eeed float64 };func (_egcg *cMapParser )parseString ()(cmapString ,error ){_egcg ._eeea .ReadByte ();
_bcg :=_ad .Buffer {};_bgdg :=1;for {_dadd ,_adcc :=_egcg ._eeea .Peek (1);if _adcc !=nil {return cmapString {_bcg .String ()},_adcc ;};if _dadd [0]=='\\'{_egcg ._eeea .ReadByte ();_ddde ,_eegb :=_egcg ._eeea .ReadByte ();if _eegb !=nil {return cmapString {_bcg .String ()},_eegb ;
};if _eg .IsOctalDigit (_ddde ){_bdcb ,_cae :=_egcg ._eeea .Peek (2);if _cae !=nil {return cmapString {_bcg .String ()},_cae ;};var _acc []byte ;_acc =append (_acc ,_ddde );for _ ,_gebc :=range _bdcb {if _eg .IsOctalDigit (_gebc ){_acc =append (_acc ,_gebc );
}else {break ;};};_egcg ._eeea .Discard (len (_acc )-1);_fd .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_acc );_bda ,_cae :=_cd .ParseUint (string (_acc ),8,32);if _cae !=nil {return cmapString {_bcg .String ()},_cae ;
};_bcg .WriteByte (byte (_bda ));continue ;};switch _ddde {case 'n':_bcg .WriteByte ('\n');case 'r':_bcg .WriteByte ('\r');case 't':_bcg .WriteByte ('\t');case 'b':_bcg .WriteByte ('\b');case 'f':_bcg .WriteByte ('\f');case '(':_bcg .WriteByte ('(');case ')':_bcg .WriteByte (')');
case '\\':_bcg .WriteByte ('\\');};continue ;}else if _dadd [0]=='('{_bgdg ++;}else if _dadd [0]==')'{_bgdg --;if _bgdg ==0{_egcg ._eeea .ReadByte ();break ;};};_bagc ,_ :=_egcg ._eeea .ReadByte ();_bcg .WriteByte (_bagc );};return cmapString {_bcg .String ()},nil ;
};type cmapString struct{String string ;};func (_ded *cMapParser )parseHexString ()(cmapHexString ,error ){_ded ._eeea .ReadByte ();_abe :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_daf :=_ad .Buffer {};for {_ded .skipSpaces ();_aef ,_fafe :=_ded ._eeea .Peek (1);if _fafe !=nil {return cmapHexString {},_fafe ;};if _aef [0]=='>'{_ded ._eeea .ReadByte ();break ;};_caf ,_ :=_ded ._eeea .ReadByte ();if _ad .IndexByte (_abe ,_caf )>=0{_daf .WriteByte (_caf );
};};if _daf .Len ()%2==1{_fd .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",_daf .String ());_daf .WriteByte ('0');};_bcbc :=_daf .Len ()/2;
_gdfa ,_ :=_e .DecodeString (_daf .String ());return cmapHexString {_dbgd :_bcbc ,_bccd :_gdfa },nil ;};const (_dddg =100;_eef ="\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";
_cbbc ="\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";
);type CMap struct{*cMapParser ;_gd string ;_ec int ;_ga int ;_ddd string ;_eb string ;_be CIDSystemInfo ;_dee []Codespace ;_ffc map[CharCode ]CharCode ;_deef map[CharCode ]CharCode ;_add map[CharCode ]string ;_cag map[string ]CharCode ;_ea []byte ;_eae *_eg .PdfObjectStream ;
_fg integer ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_fab ,_faa :=cmap ._deef [cid ];return _fab ,_faa ;};var (ErrBadCMap =_aa .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_aa .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 =_aa .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););