unipdf/internal/cmap/cmap.go
2021-05-31 17:17:31 +00:00

138 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";_f "bytes";_cb "encoding/hex";_g "errors";_a "fmt";_fe "github.com/unidoc/unipdf/v3/common";_cbb "github.com/unidoc/unipdf/v3/core";_bf "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_fdf "io";_b "sort";_c "strconv";
_ac "strings";_e "unicode/utf16";);func (cmap *CMap )Type ()int {return cmap ._ag };func (_eeg *CIDSystemInfo )String ()string {return _a .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_eeg .Registry ,_eeg .Ordering ,_eeg .Supplement );
};type cmapOperand struct{Operand string ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};const (_dfad ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_gegd ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
_ebd ="\u0065n\u0064\u0063\u006d\u0061\u0070";_aba ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_aad ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_edd ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_bga ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_ced ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_bdb ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_bge ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_defa ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_ccac ="\u0075s\u0065\u0063\u006d\u0061\u0070";_cag ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_bggb ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_gegg ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_ga ,_fg :=cmap .BytesToCharcodes (data );if !_fg {_fe .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;};_aec :=make ([]string ,len (_ga ));var _cfc []CharCode ;for _fac ,_egg :=range _ga {_bea ,_ge :=cmap ._gfe [_egg ];if !_ge {_cfc =append (_cfc ,_egg );_bea =MissingCodeString ;};_aec [_fac ]=_bea ;};_fge :=_ac .Join (_aec ,"");if len (_cfc )> 0{_fe .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 ),_ga ,len (_cfc ),_cfc ,_fge ,cmap );
};return _fge ,len (_cfc );};func (cmap *CMap )inCodespace (_dcd CharCode ,_faa int )bool {for _ ,_dga :=range cmap ._fc {if _dga .Low <=_dcd &&_dcd <=_dga .High &&_faa ==_dga .NumBytes {return true ;};};return false ;};func (_cgc *cMapParser )parseName ()(cmapName ,error ){_bbf :="";
_eae :=false ;for {_gadd ,_cee :=_cgc ._cfgd .Peek (1);if _cee ==_fdf .EOF {break ;};if _cee !=nil {return cmapName {_bbf },_cee ;};if !_eae {if _gadd [0]=='/'{_eae =true ;_cgc ._cfgd .ReadByte ();}else {_fe .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",_gadd ,_gadd );
return cmapName {_bbf },_a .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_gadd [0]);};}else {if _cbb .IsWhiteSpace (_gadd [0]){break ;}else if (_gadd [0]=='/')||(_gadd [0]=='[')||(_gadd [0]=='(')||(_gadd [0]==']')||(_gadd [0]=='<')||(_gadd [0]=='>'){break ;
}else if _gadd [0]=='#'{_bccb ,_fgbf :=_cgc ._cfgd .Peek (3);if _fgbf !=nil {return cmapName {_bbf },_fgbf ;};_cgc ._cfgd .Discard (3);_dbgb ,_fgbf :=_cb .DecodeString (string (_bccb [1:3]));if _fgbf !=nil {return cmapName {_bbf },_fgbf ;};_bbf +=string (_dbgb );
}else {_dcdg ,_ :=_cgc ._cfgd .ReadByte ();_bbf +=string (_dcdg );};};};return cmapName {_bbf },nil ;};func (_cbee *cMapParser )parseDict ()(cmapDict ,error ){_fe .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_egge :=_ecb ();_cdad ,_ :=_cbee ._cfgd .ReadByte ();if _cdad !='<'{return _egge ,ErrBadCMapDict ;};_cdad ,_ =_cbee ._cfgd .ReadByte ();if _cdad !='<'{return _egge ,ErrBadCMapDict ;};for {_cbee .skipSpaces ();_dcdf ,_efg :=_cbee ._cfgd .Peek (2);if _efg !=nil {return _egge ,_efg ;
};if (_dcdf [0]=='>')&&(_dcdf [1]=='>'){_cbee ._cfgd .ReadByte ();_cbee ._cfgd .ReadByte ();break ;};_gdc ,_efg :=_cbee .parseName ();_fe .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_gdc .Name );if _efg !=nil {_fe .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",_efg );
return _egge ,_efg ;};_cbee .skipSpaces ();_bcga ,_efg :=_cbee .parseObject ();if _efg !=nil {return _egge ,_efg ;};_egge .Dict [_gdc .Name ]=_bcga ;_cbee .skipSpaces ();_dcdf ,_efg =_cbee ._cfgd .Peek (3);if _efg !=nil {return _egge ,_efg ;};if string (_dcdf )=="\u0064\u0065\u0066"{_cbee ._cfgd .Discard (3);
};};return _egge ,nil ;};func (_accc *cMapParser )parseObject ()(cmapObject ,error ){_accc .skipSpaces ();for {_bgc ,_dac :=_accc ._cfgd .Peek (2);if _dac !=nil {return nil ,_dac ;};if _bgc [0]=='%'{_accc .parseComment ();_accc .skipSpaces ();continue ;
}else if _bgc [0]=='/'{_eda ,_gcf :=_accc .parseName ();return _eda ,_gcf ;}else if _bgc [0]=='('{_eggc ,_aff :=_accc .parseString ();return _eggc ,_aff ;}else if _bgc [0]=='['{_cbf ,_fbe :=_accc .parseArray ();return _cbf ,_fbe ;}else if (_bgc [0]=='<')&&(_bgc [1]=='<'){_ded ,_gdd :=_accc .parseDict ();
return _ded ,_gdd ;}else if _bgc [0]=='<'{_bfga ,_dgf :=_accc .parseHexString ();return _bfga ,_dgf ;}else if _cbb .IsDecimalDigit (_bgc [0])||(_bgc [0]=='-'&&_cbb .IsDecimalDigit (_bgc [1])){_dbg ,_gfgc :=_accc .parseNumber ();if _gfgc !=nil {return nil ,_gfgc ;
};return _dbg ,nil ;}else {_gdb ,_adfd :=_accc .parseOperand ();if _adfd !=nil {return nil ,_adfd ;};return _gdb ,nil ;};};};func (cmap *CMap )String ()string {_gae :=cmap ._ad ;_gfc :=[]string {_a .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._cgd ),_a .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ag )};
if cmap ._cge !=""{_gfc =append (_gfc ,_a .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._cge ));};if cmap ._eb !=""{_gfc =append (_gfc ,_a .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._eb ));
};_gfc =append (_gfc ,_a .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_gae .String ()));if len (cmap ._fc )> 0{_gfc =append (_gfc ,_a .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._fc )));
};if len (cmap ._gfe )> 0{_gfc =append (_gfc ,_a .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._gfe )));};return _a .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._fea ,_ac .Join (_gfc ,"\u0020"));
};func (_dee *cMapParser )parseOperand ()(cmapOperand ,error ){_cbed :=cmapOperand {};_dfe :=_f .Buffer {};for {_efe ,_deef :=_dee ._cfgd .Peek (1);if _deef !=nil {if _deef ==_fdf .EOF {break ;};return _cbed ,_deef ;};if _cbb .IsDelimiter (_efe [0]){break ;
};if _cbb .IsWhiteSpace (_efe [0]){break ;};_eebe ,_ :=_dee ._cfgd .ReadByte ();_dfe .WriteByte (_eebe );};if _dfe .Len ()==0{return _cbed ,_a .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_cbed .Operand =_dfe .String ();return _cbed ,nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_bdg ,_bfe :=cmap ._gb [cid ];return _bdg ,_bfe ;};func (cmap *CMap )parse ()error {var _ec cmapObject ;for {_ecc ,_eegc :=cmap .parseObject ();
if _eegc !=nil {if _eegc ==_fdf .EOF {break ;};_fe .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_eegc );return _eegc ;};switch _fafg :=_ecc .(type ){case cmapOperand :_agf :=_fafg ;
switch _agf .Operand {case _aba :_baa :=cmap .parseCodespaceRange ();if _baa !=nil {return _baa ;};case _bge :_gcg :=cmap .parseCIDRange ();if _gcg !=nil {return _gcg ;};case _edd :_dce :=cmap .parseBfchar ();if _dce !=nil {return _dce ;};case _ced :_cfd :=cmap .parseBfrange ();
if _cfd !=nil {return _cfd ;};case _ccac :if _ec ==nil {_fe .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 ;};_bee ,_fca :=_ec .(cmapName );
if !_fca {_fe .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",_ec );return ErrBadCMap ;};cmap ._eb =_bee .Name ;
case _dfad :_gac :=cmap .parseSystemInfo ();if _gac !=nil {return _gac ;};};case cmapName :_afg :=_fafg ;switch _afg .Name {case _dfad :_bfc :=cmap .parseSystemInfo ();if _bfc !=nil {return _bfc ;};case _cag :_fcf :=cmap .parseName ();if _fcf !=nil {return _fcf ;
};case _bggb :_dgb :=cmap .parseType ();if _dgb !=nil {return _dgb ;};case _gegg :_eef :=cmap .parseVersion ();if _eef !=nil {return _eef ;};};};_ec =_ecc ;};return nil ;};var (ErrBadCMap =_g .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_g .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 =_g .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););type fbRange struct{_cgb CharCode ;_aa CharCode ;_dgd string ;};func (_ece *cMapParser )parseArray ()(cmapArray ,error ){_gccc :=cmapArray {};_gccc .Array =[]cmapObject {};
_ece ._cfgd .ReadByte ();for {_ece .skipSpaces ();_acbd ,_dcbe :=_ece ._cfgd .Peek (1);if _dcbe !=nil {return _gccc ,_dcbe ;};if _acbd [0]==']'{_ece ._cfgd .ReadByte ();break ;};_feb ,_dcbe :=_ece .parseObject ();if _dcbe !=nil {return _gccc ,_dcbe ;};
_gccc .Array =append (_gccc .Array ,_feb );};return _gccc ,nil ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_cff ,_ebg :=cmap ._ea [code ];return _cff ,_ebg ;};type cmapName struct{Name string ;};func (cmap *CMap )parseName ()error {_acc :="";
_def :=false ;for _addg :=0;_addg < 20&&!_def ;_addg ++{_dcda ,_bde :=cmap .parseObject ();if _bde !=nil {return _bde ;};switch _fgb :=_dcda .(type ){case cmapOperand :switch _fgb .Operand {case "\u0064\u0065\u0066":_def =true ;default:_fe .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",_dcda ,_acc );
if _acc !=""{_acc =_a .Sprintf ("\u0025\u0073\u0020%\u0073",_acc ,_fgb .Operand );};_fe .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",_acc );
};case cmapName :_acc =_fgb .Name ;};};if !_def {_fe .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._fea =_acc ;return nil ;};func _egd (_bg string )rune {_beb :=[]rune (_bg );
return _beb [len (_beb )-1]};func (cmap *CMap )parseCodespaceRange ()error {for {_badd ,_cdg :=cmap .parseObject ();if _cdg !=nil {if _cdg ==_fdf .EOF {break ;};return _cdg ;};_dbe ,_ebgc :=_badd .(cmapHexString );if !_ebgc {if _acb ,_ffa :=_badd .(cmapOperand );
_ffa {if _acb .Operand ==_aad {return nil ;};return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_badd ,_cdg =cmap .parseObject ();if _cdg !=nil {if _cdg ==_fdf .EOF {break ;};return _cdg ;};_agb ,_ebgc :=_badd .(cmapHexString );
if !_ebgc {return _g .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_dbe ._ggcc )!=len (_agb ._ggcc ){return _g .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");
};_bfbd :=_gfgb (_dbe );_beef :=_gfgb (_agb );if _beef < _bfbd {_fe .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",_bfbd ,_beef );
return ErrBadCMap ;};_gfg :=_agb ._geb ;_bac :=Codespace {NumBytes :_gfg ,Low :_bfbd ,High :_beef };cmap ._fc =append (cmap ._fc ,_bac );_fe .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",_bfbd ,_beef );
};if len (cmap ._fc )==0{_fe .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 _bdgb (_dedc cmapHexString )rune {_deec :=_dfcc (_dedc );
if _aac :=len (_deec );_aac ==0{_fe .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",_dedc );
return MissingCodeRune ;};if len (_deec )> 1{_fe .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",_dedc ,_deec );
};return _deec [0];};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_dad :=make (map[CharCode ]string ,len (codeToRune ));for _fdfb ,_bc :=range codeToRune {_dad [_fdfb ]=string (_bc );};cmap :=&CMap {_fea :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ag :2,_cgd :16,_ad :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_fc :[]Codespace {{Low :0,High :0xffff}},_gfe :_dad ,_ca :make (map[string ]CharCode ,len (codeToRune )),_ea :make (map[CharCode ]CharCode ,len (codeToRune )),_gb :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )Name ()string {return cmap ._fea };func IsPredefinedCMap (name string )bool {return _bf .AssetExists (name )};type cmapString struct{String string ;};func _faf (_gfa string )string {_egda :=[]rune (_gfa );
_egc :=make ([]string ,len (_egda ));for _fga ,_abc :=range _egda {_egc [_fga ]=_a .Sprintf ("\u0025\u0030\u0034\u0078",_abc );};return _a .Sprintf ("\u003c\u0025\u0073\u003e",_ac .Join (_egc ,""));};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;
};func (_bbd *cMapParser )parseString ()(cmapString ,error ){_bbd ._cfgd .ReadByte ();_age :=_f .Buffer {};_bddg :=1;for {_eddc ,_gbag :=_bbd ._cfgd .Peek (1);if _gbag !=nil {return cmapString {_age .String ()},_gbag ;};if _eddc [0]=='\\'{_bbd ._cfgd .ReadByte ();
_ccd ,_dba :=_bbd ._cfgd .ReadByte ();if _dba !=nil {return cmapString {_age .String ()},_dba ;};if _cbb .IsOctalDigit (_ccd ){_aebc ,_dced :=_bbd ._cfgd .Peek (2);if _dced !=nil {return cmapString {_age .String ()},_dced ;};var _beec []byte ;_beec =append (_beec ,_ccd );
for _ ,_dfb :=range _aebc {if _cbb .IsOctalDigit (_dfb ){_beec =append (_beec ,_dfb );}else {break ;};};_bbd ._cfgd .Discard (len (_beec )-1);_fe .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_beec );
_adc ,_dced :=_c .ParseUint (string (_beec ),8,32);if _dced !=nil {return cmapString {_age .String ()},_dced ;};_age .WriteByte (byte (_adc ));continue ;};switch _ccd {case 'n':_age .WriteByte ('\n');case 'r':_age .WriteByte ('\r');case 't':_age .WriteByte ('\t');
case 'b':_age .WriteByte ('\b');case 'f':_age .WriteByte ('\f');case '(':_age .WriteByte ('(');case ')':_age .WriteByte (')');case '\\':_age .WriteByte ('\\');};continue ;}else if _eddc [0]=='('{_bddg ++;}else if _eddc [0]==')'{_bddg --;if _bddg ==0{_bbd ._cfgd .ReadByte ();
break ;};};_ada ,_ :=_bbd ._cfgd .ReadByte ();_age .WriteByte (_ada );};return cmapString {_age .String ()},nil ;};const (_gd =100;_bcf ="\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";
_fdcf ="\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 charRange struct{_dg CharCode ;_df CharCode ;};func (cmap *CMap )computeInverseMappings (){for _dfg ,_cf :=range cmap ._ea {if _agc ,_dae :=cmap ._gb [_cf ];!_dae ||(_dae &&_agc > _dfg ){cmap ._gb [_cf ]=_dfg ;};};for _gc ,_ed :=range cmap ._gfe {if _ba ,_adg :=cmap ._ca [_ed ];
!_adg ||(_adg &&_ba > _gc ){cmap ._ca [_ed ]=_gc ;};};_b .Slice (cmap ._fc ,func (_cc ,_gcc int )bool {return cmap ._fc [_cc ].Low < cmap ._fc [_gcc ].Low });};func (cmap *CMap )parseBfchar ()error {for {_cad ,_afd :=cmap .parseObject ();if _afd !=nil {if _afd ==_fdf .EOF {break ;
};return _afd ;};var _aceg CharCode ;switch _afc :=_cad .(type ){case cmapOperand :if _afc .Operand ==_bga {return nil ;};return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_aceg =_gfgb (_afc );
default:return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_cad ,_afd =cmap .parseObject ();if _afd !=nil {if _afd ==_fdf .EOF {break ;};return _afd ;};var _eegf []rune ;switch _cda :=_cad .(type ){case cmapOperand :if _cda .Operand ==_bga {return nil ;
};_fe .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",_cda );return ErrBadCMap ;case cmapHexString :_eegf =_dfcc (_cda );
case cmapName :_fe .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",_cda );_eegf =[]rune {MissingCodeRune };default:_fe .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",_cad );
return ErrBadCMap ;};cmap ._gfe [_aceg ]=string (_eegf );};return nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_bbc ,_bbb :=cmap ._ca [s ];return _bbc ,_bbb ;};func (cmap *CMap )Bytes ()[]byte {_fe .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 ._eac )> 0{return cmap ._eac ;};cmap ._eac =[]byte (_ac .Join ([]string {_bcf ,cmap .toBfData (),_fdcf },"\u000a"));return cmap ._eac ;};type CharCode uint32 ;func (cmap *CMap )parseBfrange ()error {for {var _efd CharCode ;_abe ,_gdfc :=cmap .parseObject ();
if _gdfc !=nil {if _gdfc ==_fdf .EOF {break ;};return _gdfc ;};switch _cbba :=_abe .(type ){case cmapOperand :if _cbba .Operand ==_bdb {return nil ;};return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_efd =_gfgb (_cbba );default:return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _effb CharCode ;_abe ,_gdfc =cmap .parseObject ();if _gdfc !=nil {if _gdfc ==_fdf .EOF {break ;};
return _gdfc ;};switch _fcfc :=_abe .(type ){case cmapOperand :_fe .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 :_effb =_gfgb (_fcfc );default:_fe .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_abe );return ErrBadCMap ;};_abe ,_gdfc =cmap .parseObject ();
if _gdfc !=nil {if _gdfc ==_fdf .EOF {break ;};return _gdfc ;};switch _fgad :=_abe .(type ){case cmapArray :if len (_fgad .Array )!=int (_effb -_efd )+1{_fe .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 _fgag :=_efd ;_fgag <=_effb ;_fgag ++{_ggc :=_fgad .Array [_fgag -_efd ];_gdff ,_cgbe :=_ggc .(cmapHexString );if !_cgbe {return _g .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_ccc :=_dfcc (_gdff );cmap ._gfe [_fgag ]=string (_ccc );};case cmapHexString :_dag :=_dfcc (_fgad );_cgfe :=len (_dag );for _bfbg :=_efd ;_bfbg <=_effb ;_bfbg ++{cmap ._gfe [_bfbg ]=string (_dag );if _cgfe > 0{_dag [_cgfe -1]++;}else {_fe .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",_bfbg );
};};default:_fe .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_abe );return ErrBadCMap ;};};return nil ;};func _dfcc (_cgcb cmapHexString )[]rune {if len (_cgcb ._ggcc )==1{return []rune {rune (_cgcb ._ggcc [0])};
};_aag :=_cgcb ._ggcc ;if len (_aag )%2!=0{_aag =append (_aag ,0);_fe .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",_cgcb ,_aag );
};_fecc :=len (_aag )>>1;_fba :=make ([]uint16 ,_fecc );for _agcf :=0;_agcf < _fecc ;_agcf ++{_fba [_agcf ]=uint16 (_aag [_agcf <<1])<<8+uint16 (_aag [_agcf <<1+1]);};_ggg :=_e .Decode (_fba );return _ggg ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_fe .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 :=_fcd (isSimple );cmap .cMapParser =_acfd (data );_ef :=cmap .parse ();if _ef !=nil {return nil ,_ef ;};if len (cmap ._fc )==0{if cmap ._eb !=""{return cmap ,nil ;};_fe .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 (cmap *CMap )parseCIDRange ()error {for {_dcdae ,_deg :=cmap .parseObject ();if _deg !=nil {if _deg ==_fdf .EOF {break ;};return _deg ;};_baf ,_ggb :=_dcdae .(cmapHexString );
if !_ggb {if _facc ,_bag :=_dcdae .(cmapOperand );_bag {if _facc .Operand ==_defa {return nil ;};return _g .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");
};};_ebe :=_gfgb (_baf );_dcdae ,_deg =cmap .parseObject ();if _deg !=nil {if _deg ==_fdf .EOF {break ;};return _deg ;};_ead ,_ggb :=_dcdae .(cmapHexString );if !_ggb {return _g .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 (_baf ._ggcc )!=len (_ead ._ggcc ){return _g .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");};_defc :=_gfgb (_ead );
if _ebe > _defc {_fe .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",_ebe ,_defc );
return ErrBadCMap ;};_dcdae ,_deg =cmap .parseObject ();if _deg !=nil {if _deg ==_fdf .EOF {break ;};return _deg ;};_cdgb ,_ggb :=_dcdae .(cmapInt );if !_ggb {return _g .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 _cdgb ._cdadg < 0{return _g .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_gefb :=_cdgb ._cdadg ;for _fcbd :=_ebe ;_fcbd <=_defc ;_fcbd ++{cmap ._ea [_fcbd ]=CharCode (_gefb );
_gefb ++;};_fe .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",_ebe ,_defc ,_cdgb ._cdadg );};return nil ;};func _fcd (_fa bool )*CMap {_be :=16;if _fa {_be =8;
};return &CMap {_cgd :_be ,_ea :make (map[CharCode ]CharCode ),_gb :make (map[CharCode ]CharCode ),_gfe :make (map[CharCode ]string ),_ca :make (map[string ]CharCode )};};func (cmap *CMap )parseSystemInfo ()error {_bdfb :=false ;_afa :=false ;_eba :="";
_ege :=false ;_bgg :=CIDSystemInfo {};for _aae :=0;_aae < 50&&!_ege ;_aae ++{_eefa ,_fgf :=cmap .parseObject ();if _fgf !=nil {return _fgf ;};switch _fec :=_eefa .(type ){case cmapDict :_gdf :=_fec .Dict ;_cfcd ,_aeb :=_gdf ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];
if !_aeb {_fe .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bcc ,_aeb :=_cfcd .(cmapString );if !_aeb {_fe .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_bgg .Registry =_bcc .String ;_cfcd ,_aeb =_gdf ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_aeb {_fe .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_bcc ,_aeb =_cfcd .(cmapString );if !_aeb {_fe .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bgg .Ordering =_bcc .String ;
_ccf ,_aeb :=_gdf ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_aeb {_fe .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};
_defg ,_aeb :=_ccf .(cmapInt );if !_aeb {_fe .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bgg .Supplement =int (_defg ._cdadg );_ege =true ;case cmapOperand :switch _fec .Operand {case "\u0062\u0065\u0067i\u006e":_bdfb =true ;
case "\u0065\u006e\u0064":_ege =true ;case "\u0064\u0065\u0066":_afa =false ;};case cmapName :if _bdfb {_eba =_fec .Name ;_afa =true ;};case cmapString :if _afa {switch _eba {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_bgg .Registry =_fec .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_bgg .Ordering =_fec .String ;};};case cmapInt :if _afa {switch _eba {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_bgg .Supplement =int (_fec ._cdadg );};};};};if !_ege {_fe .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 ._ad =_bgg ;return nil ;};func NewCIDSystemInfo (obj _cbb .PdfObject )(_ce CIDSystemInfo ,_da error ){_eg ,_ee :=_cbb .GetDict (obj );if !_ee {return CIDSystemInfo {},_cbb .ErrTypeError ;};_ab ,_ee :=_cbb .GetStringVal (_eg .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
if !_ee {return CIDSystemInfo {},_cbb .ErrTypeError ;};_ae ,_ee :=_cbb .GetStringVal (_eg .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_ee {return CIDSystemInfo {},_cbb .ErrTypeError ;};_gf ,_ee :=_cbb .GetIntVal (_eg .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
if !_ee {return CIDSystemInfo {},_cbb .ErrTypeError ;};return CIDSystemInfo {Registry :_ab ,Ordering :_ae ,Supplement :_gf },nil ;};func (_fbg *cMapParser )parseComment ()(string ,error ){var _befa _f .Buffer ;_ ,_gdbe :=_fbg .skipSpaces ();if _gdbe !=nil {return _befa .String (),_gdbe ;
};_aab :=true ;for {_gag ,_faae :=_fbg ._cfgd .Peek (1);if _faae !=nil {_fe .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_faae );return _befa .String (),_faae ;};if _aab &&_gag [0]!='%'{return _befa .String (),ErrBadCMapComment ;
};_aab =false ;if (_gag [0]!='\r')&&(_gag [0]!='\n'){_dagc ,_ :=_fbg ._cfgd .ReadByte ();_befa .WriteByte (_dagc );}else {break ;};};return _befa .String (),nil ;};type cmapObject interface{};func (_bgb *cMapParser )parseNumber ()(cmapObject ,error ){_fbf ,_dgdd :=_cbb .ParseNumber (_bgb ._cfgd );
if _dgdd !=nil {return nil ,_dgdd ;};switch _edg :=_fbf .(type ){case *_cbb .PdfObjectFloat :return cmapFloat {float64 (*_edg )},nil ;case *_cbb .PdfObjectInteger :return cmapInt {int64 (*_edg )},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",_fbf );
};func (cmap *CMap )parseVersion ()error {_eegd :="";_ccg :=false ;for _gaa :=0;_gaa < 3&&!_ccg ;_gaa ++{_ddf ,_cffc :=cmap .parseObject ();if _cffc !=nil {return _cffc ;};switch _aaa :=_ddf .(type ){case cmapOperand :switch _aaa .Operand {case "\u0064\u0065\u0066":_ccg =true ;
default:_fe .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",_ddf );
return ErrBadCMap ;};case cmapInt :_eegd =_a .Sprintf ("\u0025\u0064",_aaa ._cdadg );case cmapFloat :_eegd =_a .Sprintf ("\u0025\u0066",_aaa ._cdb );case cmapString :_eegd =_aaa .String ;default:_fe .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",_ddf );
};};cmap ._cge =_eegd ;return nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _cgac ,_cbg :=cmap ._gfe [code ];_cbg {return _cgac ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )parseType ()error {_bfb :=0;_fbc :=false ;
for _eefg :=0;_eefg < 3&&!_fbc ;_eefg ++{_cca ,_edfb :=cmap .parseObject ();if _edfb !=nil {return _edfb ;};switch _bddf :=_cca .(type ){case cmapOperand :switch _bddf .Operand {case "\u0064\u0065\u0066":_fbc =true ;default:_fe .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",_cca );
return ErrBadCMap ;};case cmapInt :_bfb =int (_bddf ._cdadg );};};cmap ._ag =_bfb ;return nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._gfe )==0{return "";};_bef :=make ([]CharCode ,0,len (cmap ._gfe ));for _bbe :=range cmap ._gfe {_bef =append (_bef ,_bbe );
};_b .Slice (_bef ,func (_ff ,_facb int )bool {return _bef [_ff ]< _bef [_facb ]});var _bbbg []charRange ;_bfef :=charRange {_bef [0],_bef [0]};_cfg :=cmap ._gfe [_bef [0]];for _ ,_beg :=range _bef [1:]{_gaeb :=cmap ._gfe [_beg ];if _beg ==_bfef ._df +1&&_egd (_gaeb )==_egd (_cfg )+1{_bfef ._df =_beg ;
}else {_bbbg =append (_bbbg ,_bfef );_bfef ._dg ,_bfef ._df =_beg ,_beg ;};_cfg =_gaeb ;};_bbbg =append (_bbbg ,_bfef );var _de []CharCode ;var _bba []fbRange ;for _ ,_cfa :=range _bbbg {if _cfa ._dg ==_cfa ._df {_de =append (_de ,_cfa ._dg );}else {_bba =append (_bba ,fbRange {_cgb :_cfa ._dg ,_aa :_cfa ._df ,_dgd :cmap ._gfe [_cfa ._dg ]});
};};_fe .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 (_bbbg ),len (_de ),len (_bba ));var _cba []string ;if len (_de )> 0{_bcg :=(len (_de )+_gd -1)/_gd ;
for _gad :=0;_gad < _bcg ;_gad ++{_cfca :=_bdec (len (_de )-_gad *_gd ,_gd );_cba =append (_cba ,_a .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_cfca ));for _faaf :=0;_faaf < _cfca ;_faaf ++{_eed :=_de [_gad *_gd +_faaf ];
_bfg :=cmap ._gfe [_eed ];_cba =append (_cba ,_a .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_eed ,_faf (_bfg )));};_cba =append (_cba ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_bba )> 0{_cd :=(len (_bba )+_gd -1)/_gd ;for _bae :=0;
_bae < _cd ;_bae ++{_acf :=_bdec (len (_bba )-_bae *_gd ,_gd );_cba =append (_cba ,_a .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_acf ));for _ace :=0;_ace < _acf ;_ace ++{_daf :=_bba [_bae *_gd +_ace ];
_cba =append (_cba ,_a .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_daf ._cgb ,_daf ._aa ,_faf (_daf ._dgd )));};_cba =append (_cba ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _ac .Join (_cba ,"\u000a");
};func _gfgb (_fef cmapHexString )CharCode {_fbff :=CharCode (0);for _ ,_ebc :=range _fef ._ggcc {_fbff <<=8;_fbff |=CharCode (_ebc );};return _fbff ;};type cmapHexString struct{_geb int ;_ggcc []byte ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_bd :=_bb (name );
if _bd !=nil {return nil ,_bd ;};if cmap ._eb ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_fdfg ,_bd :=_bb (cmap ._eb );if _bd !=nil {return nil ,_bd ;};for _fdc ,_bdf :=range _fdfg ._ea {if _ ,_dfc :=cmap ._ea [_fdc ];!_dfc {cmap ._ea [_fdc ]=_bdf ;
};};cmap ._fc =append (cmap ._fc ,_fdfg ._fc ...);cmap .computeInverseMappings ();return cmap ,nil ;};func (_gba *cMapParser )skipSpaces ()(int ,error ){_cccb :=0;for {_gbgb ,_agg :=_gba ._cfgd .Peek (1);if _agg !=nil {return 0,_agg ;};if _cbb .IsWhiteSpace (_gbgb [0]){_gba ._cfgd .ReadByte ();
_cccb ++;}else {break ;};};return _cccb ,nil ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _aef []CharCode ;if cmap ._cgd ==8{for _ ,_dgg :=range data {_aef =append (_aef ,CharCode (_dgg ));};return _aef ,true ;};for _db :=0;
_db < len (data );{_bdd ,_eec ,_geg :=cmap .matchCode (data [_db :]);if !_geg {_fe .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",_db ,data ,string (data ));
return _aef ,false ;};_aef =append (_aef ,_bdd );_db +=_eec ;};return _aef ,true ;};type cmapDict struct{Dict map[string ]cmapObject ;};func _bb (_gbg string )(*CMap ,error ){_bca ,_ddg :=_bf .Asset (_gbg );if _ddg !=nil {return nil ,_ddg ;};return LoadCmapFromDataCID (_bca );
};func _bdec (_bgd ,_gda int )int {if _bgd < _gda {return _bgd ;};return _gda ;};func (cmap *CMap )NBits ()int {return cmap ._cgd };type cmapInt struct{_cdadg int64 };func _ecb ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};type cMapParser struct{_cfgd *_fd .Reader };
func _acfd (_ffdg []byte )*cMapParser {_bbaf :=cMapParser {};_fgd :=_f .NewBuffer (_ffdg );_bbaf ._cfgd =_fd .NewReader (_fgd );return &_bbaf ;};func (cmap *CMap )Stream ()(*_cbb .PdfObjectStream ,error ){if cmap ._af !=nil {return cmap ._af ,nil ;};_cbe ,_dfa :=_cbb .MakeStream (cmap .Bytes (),_cbb .NewFlateEncoder ());
if _dfa !=nil {return nil ,_dfa ;};cmap ._af =_cbe ;return cmap ._af ,nil ;};func (_fgdg *cMapParser )parseHexString ()(cmapHexString ,error ){_fgdg ._cfgd .ReadByte ();_gab :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_fgc :=_f .Buffer {};for {_fgdg .skipSpaces ();_gfdd ,_aecf :=_fgdg ._cfgd .Peek (1);if _aecf !=nil {return cmapHexString {},_aecf ;};if _gfdd [0]=='>'{_fgdg ._cfgd .ReadByte ();break ;};_dgc ,_ :=_fgdg ._cfgd .ReadByte ();if _f .IndexByte (_gab ,_dgc )>=0{_fgc .WriteByte (_dgc );
};};if _fgc .Len ()%2==1{_fe .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",_fgc .String ());_fgc .WriteByte ('0');};_gcgd :=_fgc .Len ()/2;
_ecd ,_ :=_cb .DecodeString (_fgc .String ());return cmapHexString {_geb :_gcgd ,_ggcc :_ecd },nil ;};func (cmap *CMap )matchCode (_eebg []byte )(_gfd CharCode ,_eff int ,_fgg bool ){for _adf :=0;_adf < _cg ;_adf ++{if _adf < len (_eebg ){_gfd =_gfd <<8|CharCode (_eebg [_adf ]);
_eff ++;};_fgg =cmap .inCodespace (_gfd ,_adf +1);if _fgg {return _gfd ,_eff ,true ;};};_fe .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",_eebg ,string (_eebg ),cmap );
return 0,0,false ;};type cmapArray struct{Array []cmapObject ;};type cmapFloat struct{_cdb float64 };const (_cg =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;
};type CMap struct{*cMapParser ;_fea string ;_cgd int ;_ag int ;_cge string ;_eb string ;_ad CIDSystemInfo ;_fc []Codespace ;_ea map[CharCode ]CharCode ;_gb map[CharCode ]CharCode ;_gfe map[CharCode ]string ;_ca map[string ]CharCode ;_eac []byte ;_af *_cbb .PdfObjectStream ;
};