unipdf/internal/cmap/cmap.go

140 lines
41 KiB
Go
Raw Normal View History

//
2020-08-27 21:45:09 +00:00
// 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/
2023-01-08 22:34:27 +00:00
package cmap ;import (_fa "bufio";_ca "bytes";_c "encoding/hex";_fb "errors";_f "fmt";_ga "github.com/unidoc/unipdf/v3/common";_ec "github.com/unidoc/unipdf/v3/core";_b "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_e "io";_ab "sort";_dc "strconv";
_g "strings";_d "unicode/utf16";);func (cmap *CMap )parseWMode ()error {var _aec int ;_efdc :=false ;for _ced :=0;_ced < 3&&!_efdc ;_ced ++{_dab ,_ffc :=cmap .parseObject ();if _ffc !=nil {return _ffc ;};switch _ege :=_dab .(type ){case cmapOperand :switch _ege .Operand {case "\u0064\u0065\u0066":_efdc =true ;
default:_ga .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",_dab );return ErrBadCMap ;};case cmapInt :_aec =int (_ege ._cgbf );
};};cmap ._ccf =integer {_gbbdb :true ,_cgf :_aec };return nil ;};func _fgce (_bgdg cmapHexString )[]rune {if len (_bgdg ._dgfbc )==1{return []rune {rune (_bgdg ._dgfbc [0])};};_bddc :=_bgdg ._dgfbc ;if len (_bddc )%2!=0{_bddc =append (_bddc ,0);_ga .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",_bgdg ,_bddc );
};_abc :=len (_bddc )>>1;_aeb :=make ([]uint16 ,_abc );for _ace :=0;_ace < _abc ;_ace ++{_aeb [_ace ]=uint16 (_bddc [_ace <<1])<<8+uint16 (_bddc [_ace <<1+1]);};_debb :=_d .Decode (_aeb );return _debb ;};func (cmap *CMap )parseBfrange ()error {for {var _dfb CharCode ;
_gbc ,_aaa :=cmap .parseObject ();if _aaa !=nil {if _aaa ==_e .EOF {break ;};return _aaa ;};switch _bdf :=_gbc .(type ){case cmapOperand :if _bdf .Operand ==_eaa {return nil ;};return _fb .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_dfb =_gcc (_bdf );default:return _fb .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _eec CharCode ;_gbc ,_aaa =cmap .parseObject ();if _aaa !=nil {if _aaa ==_e .EOF {break ;};return _aaa ;
};switch _cfa :=_gbc .(type ){case cmapOperand :_ga .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 :_eec =_gcc (_cfa );if _eec > 0xffff{_eec =0xffff;};default:_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_gbc );return ErrBadCMap ;
};_gbc ,_aaa =cmap .parseObject ();if _aaa !=nil {if _aaa ==_e .EOF {break ;};return _aaa ;};switch _adb :=_gbc .(type ){case cmapArray :if len (_adb .Array )!=int (_eec -_dfb )+1{_ga .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 _ecgf :=_dfb ;_ecgf <=_eec ;_ecgf ++{_eda :=_adb .Array [_ecgf -_dfb ];_eag ,_cfe :=_eda .(cmapHexString );if !_cfe {return _fb .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_cca :=_fgce (_eag );cmap ._db [_ecgf ]=string (_cca );};case cmapHexString :_cbe :=_fgce (_adb );_cfae :=len (_cbe );for _dcf :=_dfb ;_dcf <=_eec ;_dcf ++{cmap ._db [_dcf ]=string (_cbe );if _cfae > 0{_cbe [_cfae -1]++;}else {_ga .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",_dcf );
};if _dcf ==1<<32-1{break ;};};default:_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_gbc );return ErrBadCMap ;};};return nil ;};func _age (_cgbc []byte )*cMapParser {_eecf :=cMapParser {};
_eba :=_ca .NewBuffer (_cgbc );_eecf ._fge =_fa .NewReader (_eba );return &_eecf ;};type cmapOperand struct{Operand string ;};func _bb (_efg bool )*CMap {_caa :=16;if _efg {_caa =8;};return &CMap {_ecbd :_caa ,_de :make (map[CharCode ]CharCode ),_bc :make (map[CharCode ]CharCode ),_db :make (map[CharCode ]string ),_dcd :make (map[string ]CharCode )};
};func (_cgbcb *cMapParser )parseDict ()(cmapDict ,error ){_ga .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_aaf :=_ddfc ();_eee ,_ :=_cgbcb ._fge .ReadByte ();if _eee !='<'{return _aaf ,ErrBadCMapDict ;
};_eee ,_ =_cgbcb ._fge .ReadByte ();if _eee !='<'{return _aaf ,ErrBadCMapDict ;};for {_cgbcb .skipSpaces ();_bggd ,_baa :=_cgbcb ._fge .Peek (2);if _baa !=nil {return _aaf ,_baa ;};if (_bggd [0]=='>')&&(_bggd [1]=='>'){_cgbcb ._fge .ReadByte ();_cgbcb ._fge .ReadByte ();
break ;};_fde ,_baa :=_cgbcb .parseName ();_ga .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_fde .Name );if _baa !=nil {_ga .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",_baa );
return _aaf ,_baa ;};_cgbcb .skipSpaces ();_ffdf ,_baa :=_cgbcb .parseObject ();if _baa !=nil {return _aaf ,_baa ;};_aaf .Dict [_fde .Name ]=_ffdf ;_cgbcb .skipSpaces ();_bggd ,_baa =_cgbcb ._fge .Peek (3);if _baa !=nil {return _aaf ,_baa ;};if string (_bggd )=="\u0064\u0065\u0066"{_cgbcb ._fge .Discard (3);
};};return _aaf ,nil ;};func (_cdf *cMapParser )parseHexString ()(cmapHexString ,error ){_cdf ._fge .ReadByte ();_gbdc :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_dgfb :=_ca .Buffer {};
for {_cdf .skipSpaces ();_daab ,_adba :=_cdf ._fge .Peek (1);if _adba !=nil {return cmapHexString {},_adba ;};if _daab [0]=='>'{_cdf ._fge .ReadByte ();break ;};_agf ,_ :=_cdf ._fge .ReadByte ();if _ca .IndexByte (_gbdc ,_agf )>=0{_dgfb .WriteByte (_agf );
};};if _dgfb .Len ()%2==1{_ga .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",_dgfb .String ());_dgfb .WriteByte ('0');};_edg :=_dgfb .Len ()/2;
_cdff ,_ :=_c .DecodeString (_dgfb .String ());return cmapHexString {_deba :_edg ,_dgfbc :_cdff },nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (cmap *CMap )parseVersion ()error {_faa :="";_add :=false ;
for _dbab :=0;_dbab < 3&&!_add ;_dbab ++{_gdg ,_cdge :=cmap .parseObject ();if _cdge !=nil {return _cdge ;};switch _cfc :=_gdg .(type ){case cmapOperand :switch _cfc .Operand {case "\u0064\u0065\u0066":_add =true ;default:_ga .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",_gdg );
return ErrBadCMap ;};case cmapInt :_faa =_f .Sprintf ("\u0025\u0064",_cfc ._cgbf );case cmapFloat :_faa =_f .Sprintf ("\u0025\u0066",_cfc ._geed );case cmapString :_faa =_cfc .String ;default:_ga .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",_gdg );
};};cmap ._ad =_faa ;return nil ;};const (_fcg =100;_dgg ="\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";
_edb ="\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 )WMode ()(int ,bool ){return cmap ._ccf ._cgf ,cmap ._ccf ._gbbdb };func (cmap *CMap )inCodespace (_cae CharCode ,_dff int )bool {for _ ,_cgd :=range cmap ._fe {if _cgd .Low <=_cae &&_cae <=_cgd .High &&_dff ==_cgd .NumBytes {return true ;
};};return false ;};type CharCode uint32 ;func (_eeg *cMapParser )skipSpaces ()(int ,error ){_eff :=0;for {_ggb ,_fca :=_eeg ._fge .Peek (1);if _fca !=nil {return 0,_fca ;};if _ec .IsWhiteSpace (_ggb [0]){_eeg ._fge .ReadByte ();_eff ++;}else {break ;};
};return _eff ,nil ;};func (cmap *CMap )matchCode (_dfa []byte )(_eeff CharCode ,_dgf int ,_ddc bool ){for _dcdd :=0;_dcdd < _ef ;_dcdd ++{if _dcdd < len (_dfa ){_eeff =_eeff <<8|CharCode (_dfa [_dcdd ]);_dgf ++;};_ddc =cmap .inCodespace (_eeff ,_dcdd +1);
if _ddc {return _eeff ,_dgf ,true ;};};_ga .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",_dfa ,string (_dfa ),cmap );
return 0,0,false ;};var (ErrBadCMap =_fb .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_fb .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 =_fb .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (_afg *cMapParser )parseName ()(cmapName ,error ){_ded :="";_gbbd :=false ;for {_ccac ,_aba :=_afg ._fge .Peek (1);if _aba ==_e .EOF {break ;};if _aba !=nil {return cmapName {_ded },_aba ;
};if !_gbbd {if _ccac [0]=='/'{_gbbd =true ;_afg ._fge .ReadByte ();}else {_ga .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",_ccac ,_ccac );
return cmapName {_ded },_f .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_ccac [0]);};}else {if _ec .IsWhiteSpace (_ccac [0]){break ;}else if (_ccac [0]=='/')||(_ccac [0]=='[')||(_ccac [0]=='(')||(_ccac [0]==']')||(_ccac [0]=='<')||(_ccac [0]=='>'){break ;
}else if _ccac [0]=='#'{_eaba ,_bbfg :=_afg ._fge .Peek (3);if _bbfg !=nil {return cmapName {_ded },_bbfg ;};_afg ._fge .Discard (3);_dcg ,_bbfg :=_c .DecodeString (string (_eaba [1:3]));if _bbfg !=nil {return cmapName {_ded },_bbfg ;};_ded +=string (_dcg );
}else {_aeef ,_ :=_afg ._fge .ReadByte ();_ded +=string (_aeef );};};};return cmapName {_ded },nil ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._ee };func (cmap *CMap )parse ()error {var _egf cmapObject ;for {_fda ,_cgdd :=cmap .parseObject ();
if _cgdd !=nil {if _cgdd ==_e .EOF {break ;};_ga .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_cgdd );return _cgdd ;};switch _gad :=_fda .(type ){case cmapOperand :_adea :=_gad ;
switch _adea .Operand {case _gadf :_gdb :=cmap .parseCodespaceRange ();if _gdb !=nil {return _gdb ;};case _cee :_bcg :=cmap .parseCIDRange ();if _bcg !=nil {return _bcg ;};case _bbe :_fea :=cmap .parseBfchar ();if _fea !=nil {return _fea ;};case _bbcc :_cec :=cmap .parseBfrange ();
if _cec !=nil {return _cec ;};case _bde :if _egf ==nil {_ga .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 ;};_dbcd ,_bca :=_egf .(cmapName );
if !_bca {_ga .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",_egf );return ErrBadCMap ;};cmap ._ac =_dbcd .Name ;
case _aca :_gef :=cmap .parseSystemInfo ();if _gef !=nil {return _gef ;};};case cmapName :_gee :=_gad ;switch _gee .Name {case _aca :_adc :=cmap .parseSystemInfo ();if _adc !=nil {return _adc ;};case _efa :_bf :=cmap .parseName ();if _bf !=nil {return _bf ;
};case _ddcc :_bfe :=cmap .parseType ();if _bfe !=nil {return _bfe ;};case _bdde :_cdc :=cmap .parseVersion ();if _cdc !=nil {return _cdc ;};case _bff :if _cgdd =cmap .parseWMode ();_cgdd !=nil {return _cgdd ;};};};_egf =_fda ;};return nil ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _aed []CharCode ;
if cmap ._ecbd ==8{for _ ,_agg :=range data {_aed =append (_aed ,CharCode (_agg ));};return _aed ,true ;};for _cda :=0;_cda < len (data );{_cga ,_eef ,_bbc :=cmap .matchCode (data [_cda :]);if !_bbc {_ga .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",_cda ,data ,string (data ));
return _aed ,false ;};_aed =append (_aed ,_cga );_cda +=_eef ;};return _aed ,true ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_ga .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 =_age (data );_fd :=cmap .parse ();if _fd !=nil {return nil ,_fd ;};if len (cmap ._fe )==0{if cmap ._ac !=""{return cmap ,nil ;};_ga .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 ;};type cmapFloat struct{_geed float64 };func (cmap *CMap )String ()string {_gbf :=cmap ._ee ;_ddd :=[]string {_f .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._ecbd ),_f .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._fbg )};
if cmap ._ad !=""{_ddd =append (_ddd ,_f .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._ad ));};if cmap ._ac !=""{_ddd =append (_ddd ,_f .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._ac ));
};_ddd =append (_ddd ,_f .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_gbf .String ()));if len (cmap ._fe )> 0{_ddd =append (_ddd ,_f .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._fe )));
};if len (cmap ._db )> 0{_ddd =append (_ddd ,_f .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._db )));};return _f .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ecg ,_g .Join (_ddd ,"\u0020"));
};func (_ffcc *cMapParser )parseComment ()(string ,error ){var _acd _ca .Buffer ;_ ,_bbf :=_ffcc .skipSpaces ();if _bbf !=nil {return _acd .String (),_bbf ;};_ega :=true ;for {_efdb ,_efbf :=_ffcc ._fge .Peek (1);if _efbf !=nil {_ga .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_efbf );
return _acd .String (),_efbf ;};if _ega &&_efdb [0]!='%'{return _acd .String (),ErrBadCMapComment ;};_ega =false ;if (_efdb [0]!='\r')&&(_efdb [0]!='\n'){_bgg ,_ :=_ffcc ._fge .ReadByte ();_acd .WriteByte (_bgg );}else {break ;};};return _acd .String (),nil ;
};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _adg ,_bga :=cmap ._db [code ];_bga {return _adg ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )Type ()int {return cmap ._fbg };type CMap struct{*cMapParser ;_ecg string ;
_ecbd int ;_fbg int ;_ad string ;_ac string ;_ee CIDSystemInfo ;_fe []Codespace ;_de map[CharCode ]CharCode ;_bc map[CharCode ]CharCode ;_db map[CharCode ]string ;_dcd map[string ]CharCode ;_ea []byte ;_dd *_ec .PdfObjectStream ;_ccf integer ;};func (cmap *CMap )Stream ()(*_ec .PdfObjectStream ,error ){if cmap ._dd !=nil {return cmap ._dd ,nil ;
};_ead ,_gfcd :=_ec .MakeStream (cmap .Bytes (),_ec .NewFlateEncoder ());if _gfcd !=nil {return nil ,_gfcd ;};cmap ._dd =_ead ;return cmap ._dd ,nil ;};func (cmap *CMap )parseCIDRange ()error {for {_bgc ,_ecbe :=cmap .parseObject ();if _ecbe !=nil {if _ecbe ==_e .EOF {break ;
};return _ecbe ;};_fagb ,_ccea :=_bgc .(cmapHexString );if !_ccea {if _cag ,_bdd :=_bgc .(cmapOperand );_bdd {if _cag .Operand ==_bgee {return nil ;};return _fb .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");
};};_dbe :=_gcc (_fagb );_bgc ,_ecbe =cmap .parseObject ();if _ecbe !=nil {if _ecbe ==_e .EOF {break ;};return _ecbe ;};_gfbf ,_ccea :=_bgc .(cmapHexString );if !_ccea {return _fb .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 (_fagb ._dgfbc )!=len (_gfbf ._dgfbc ){return _fb .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");};
_ede :=_gcc (_gfbf );if _dbe > _ede {_ga .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",_dbe ,_ede );
return ErrBadCMap ;};_bgc ,_ecbe =cmap .parseObject ();if _ecbe !=nil {if _ecbe ==_e .EOF {break ;};return _ecbe ;};_gfg ,_ccea :=_bgc .(cmapInt );if !_ccea {return _fb .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 _gfg ._cgbf < 0{return _fb .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_bae :=_gfg ._cgbf ;for _baec :=_dbe ;_baec <=_ede ;_baec ++{cmap ._de [_baec ]=CharCode (_bae );
_bae ++;};_ga .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",_dbe ,_ede ,_gfg ._cgbf );};return nil ;};func (_geg *cMapParser )parseOperand ()(cmapOperand ,error ){_bggg :=cmapOperand {};
_cea :=_ca .Buffer {};for {_agfa ,_edgf :=_geg ._fge .Peek (1);if _edgf !=nil {if _edgf ==_e .EOF {break ;};return _bggg ,_edgf ;};if _ec .IsDelimiter (_agfa [0]){break ;};if _ec .IsWhiteSpace (_agfa [0]){break ;};_gcdc ,_ :=_geg ._fge .ReadByte ();_cea .WriteByte (_gcdc );
};if _cea .Len ()==0{return _bggg ,_f .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_bggg .Operand =_cea .String ();return _bggg ,nil ;};func _gfb (_abe string )string {_faf :=[]rune (_abe );
_fag :=make ([]string ,len (_faf ));for _gbd ,_ecc :=range _faf {_fag [_gbd ]=_f .Sprintf ("\u0025\u0030\u0034\u0078",_ecc );};return _f .Sprintf ("\u003c\u0025\u0073\u003e",_g .Join (_fag ,""));};func IsPredefinedCMap (name string )bool {return _b .AssetExists (name )};
type cmapObject interface{};type cmapHexString struct{_deba int ;_dgfbc []byte ;};func (cmap *CMap )parseSystemInfo ()error {_dfae :=false ;_cfd :=false ;_fefb :="";_edff :=false ;_gfff :=CIDSystemInfo {};for _acc :=0;_acc < 50&&!_edff ;_acc ++{_fed ,_gcg :=cmap .parseObject ();
if _gcg !=nil {return _gcg ;};switch _ddf :=_fed .(type ){case cmapDict :_cfda :=_ddf .Dict ;_cfdg ,_aea :=_cfda ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_aea {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_ada ,_aea :=_cfdg .(cmapString );if !_aea {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfff .Registry =_ada .String ;
_cfdg ,_aea =_cfda ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_aea {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ada ,_aea =_cfdg .(cmapString );
if !_aea {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfff .Ordering =_ada .String ;_fab ,_aea :=_cfda ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
if !_aea {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_fgcd ,_aea :=_fab .(cmapInt );if !_aea {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_gfff .Supplement =int (_fgcd ._cgbf );_edff =true ;case cmapOperand :switch _ddf .Operand {case "\u0062\u0065\u0067i\u006e":_dfae =true ;case "\u0065\u006e\u0064":_edff =true ;case "\u0064\u0065\u0066":_cfd =false ;};case cmapName :if _dfae {_fefb =_ddf .Name ;
_cfd =true ;};case cmapString :if _cfd {switch _fefb {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_gfff .Registry =_ddf .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_gfff .Ordering =_ddf .String ;};};case cmapInt :if _cfd {switch _fefb {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_gfff .Supplement =int (_ddf ._cgbf );
};};};};if !_edff {_ga .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 ._ee =_gfff ;return nil ;};type charRange struct{_cc CharCode ;_caf CharCode ;};func (cmap *CMap )Bytes ()[]byte {_ga .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 (_g .Join ([]string {_dgg ,cmap .toBfData (),_edb },"\u000a"));return cmap ._ea ;};const (_ef =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func _ddfc ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};
func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_bg :=_be (name );if _bg !=nil {return nil ,_bg ;};if cmap ._ac ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_dg ,_bg :=_be (cmap ._ac );if _bg !=nil {return nil ,_bg ;};for _gab ,_cf :=range _dg ._de {if _ ,_ffe :=cmap ._de [_gab ];
!_ffe {cmap ._de [_gab ]=_cf ;};};cmap ._fe =append (cmap ._fe ,_dg ._fe ...);cmap .computeInverseMappings ();return cmap ,nil ;};const (_aca ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_fbgc ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
_efb ="\u0065n\u0064\u0063\u006d\u0061\u0070";_gadf ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_beef ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_bbe ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_abdb ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_bbcc ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_eaa ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_cee ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bgee ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bde ="\u0075s\u0065\u0063\u006d\u0061\u0070";_bff ="\u0057\u004d\u006fd\u0065";_efa ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_ddcc ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_bdde ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )parseCodespaceRange ()error {for {_agdg ,_cgab :=cmap .parseObject ();if _cgab !=nil {if _cgab ==_e .EOF {break ;
};return _cgab ;};_afacb ,_deb :=_agdg .(cmapHexString );if !_deb {if _fcb ,_aef :=_agdg .(cmapOperand );_aef {if _fcb .Operand ==_beef {return nil ;};return _fb .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
};};_agdg ,_cgab =cmap .parseObject ();if _cgab !=nil {if _cgab ==_e .EOF {break ;};return _cgab ;};_cdcd ,_deb :=_agdg .(cmapHexString );if !_deb {return _fb .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_afacb ._dgfbc )!=len (_cdcd ._dgfbc ){return _fb .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");
};_cdb :=_gcc (_afacb );_abg :=_gcc (_cdcd );if _abg < _cdb {_ga .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",_cdb ,_abg );
return ErrBadCMap ;};_dggb :=_cdcd ._deba ;_def :=Codespace {NumBytes :_dggb ,Low :_cdb ,High :_abg };cmap ._fe =append (cmap ._fe ,_def );_ga .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",_cdb ,_abg );
};if len (cmap ._fe )==0{_ga .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 NewCIDSystemInfo (obj _ec .PdfObject )(_ed CIDSystemInfo ,_ae error ){_gb ,_gf :=_ec .GetDict (obj );
if !_gf {return CIDSystemInfo {},_ec .ErrTypeError ;};_ecb ,_gf :=_ec .GetStringVal (_gb .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_gf {return CIDSystemInfo {},_ec .ErrTypeError ;};_ce ,_gf :=_ec .GetStringVal (_gb .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));
if !_gf {return CIDSystemInfo {},_ec .ErrTypeError ;};_fad ,_gf :=_ec .GetIntVal (_gb .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_gf {return CIDSystemInfo {},_ec .ErrTypeError ;};return CIDSystemInfo {Registry :_ecb ,Ordering :_ce ,Supplement :_fad },nil ;
};func _eaaa (_bba ,_fcf int )int {if _bba < _fcf {return _bba ;};return _fcf ;};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};type cmapInt struct{_cgbf int64 };func _fbee (_ddb string )rune {_fdc :=[]rune (_ddb );return _fdc [len (_fdc )-1]};
func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_ebe ,_fbf :=cmap ._de [code ];return _ebe ,_fbf ;};func _be (_gga string )(*CMap ,error ){_gc ,_cff :=_b .Asset (_gga );if _cff !=nil {return nil ,_cff ;};return LoadCmapFromDataCID (_gc );
};func (_abb *cMapParser )parseArray ()(cmapArray ,error ){_dfgc :=cmapArray {};_dfgc .Array =[]cmapObject {};_abb ._fge .ReadByte ();for {_abb .skipSpaces ();_edfb ,_bebg :=_abb ._fge .Peek (1);if _bebg !=nil {return _dfgc ,_bebg ;};if _edfb [0]==']'{_abb ._fge .ReadByte ();
break ;};_ebd ,_bebg :=_abb .parseObject ();if _bebg !=nil {return _dfgc ,_bebg ;};_dfgc .Array =append (_dfgc .Array ,_ebd );};return _dfgc ,nil ;};func (cmap *CMap )parseName ()error {_dfg :="";_bcf :=false ;for _deee :=0;_deee < 20&&!_bcf ;_deee ++{_cdgb ,_feg :=cmap .parseObject ();
if _feg !=nil {return _feg ;};switch _fafg :=_cdgb .(type ){case cmapOperand :switch _fafg .Operand {case "\u0064\u0065\u0066":_bcf =true ;default:_ga .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",_cdgb ,_dfg );
if _dfg !=""{_dfg =_f .Sprintf ("\u0025\u0073\u0020%\u0073",_dfg ,_fafg .Operand );};_ga .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",_dfg );
};case cmapName :_dfg =_fafg .Name ;};};if !_bcf {_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ecg =_dfg ;return nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._db )==0{return "";
};_aa :=make ([]CharCode ,0,len (cmap ._db ));for _cfg :=range cmap ._db {_aa =append (_aa ,_cfg );};_ab .Slice (_aa ,func (_cab ,_edf int )bool {return _aa [_cab ]< _aa [_edf ]});var _adeg []charRange ;_dce :=charRange {_aa [0],_aa [0]};_feff :=cmap ._db [_aa [0]];
for _ ,_cdg :=range _aa [1:]{_fba :=cmap ._db [_cdg ];if _cdg ==_dce ._caf +1&&_fbee (_fba )==_fbee (_feff )+1{_dce ._caf =_cdg ;}else {_adeg =append (_adeg ,_dce );_dce ._cc ,_dce ._caf =_cdg ,_cdg ;};_feff =_fba ;};_adeg =append (_adeg ,_dce );var _fgc []CharCode ;
var _dba []fbRange ;for _ ,_cabc :=range _adeg {if _cabc ._cc ==_cabc ._caf {_fgc =append (_fgc ,_cabc ._cc );}else {_dba =append (_dba ,fbRange {_da :_cabc ._cc ,_gd :_cabc ._caf ,_fae :cmap ._db [_cabc ._cc ]});};};_ga .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 (_adeg ),len (_fgc ),len (_dba ));
var _gbb []string ;if len (_fgc )> 0{_bge :=(len (_fgc )+_fcg -1)/_fcg ;for _fbb :=0;_fbb < _bge ;_fbb ++{_gag :=_eaaa (len (_fgc )-_fbb *_fcg ,_fcg );_gbb =append (_gbb ,_f .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_gag ));
for _gcb :=0;_gcb < _gag ;_gcb ++{_ged :=_fgc [_fbb *_fcg +_gcb ];_fce :=cmap ._db [_ged ];_gbb =append (_gbb ,_f .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_ged ,_gfb (_fce )));};_gbb =append (_gbb ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
};};if len (_dba )> 0{_cgdc :=(len (_dba )+_fcg -1)/_fcg ;for _bef :=0;_bef < _cgdc ;_bef ++{_dfcd :=_eaaa (len (_dba )-_bef *_fcg ,_fcg );_gbb =append (_gbb ,_f .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_dfcd ));
for _dda :=0;_dda < _dfcd ;_dda ++{_cgb :=_dba [_bef *_fcg +_dda ];_gbb =append (_gbb ,_f .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_cgb ._da ,_cgb ._gd ,_gfb (_cgb ._fae )));};_gbb =append (_gbb ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
};};return _g .Join (_gbb ,"\u000a");};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_gbg :=make (map[CharCode ]string ,len (codeToRune ));for _aee ,_ff :=range codeToRune {_gbg [_aee ]=string (_ff );};cmap :=&CMap {_ecg :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_fbg :2,_ecbd :16,_ee :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_fe :[]Codespace {{Low :0,High :0xffff}},_db :_gbg ,_dcd :make (map[string ]CharCode ,len (codeToRune )),_de :make (map[CharCode ]CharCode ,len (codeToRune )),_bc :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (_aabe *cMapParser )parseNumber ()(cmapObject ,error ){_cfgc ,_ceec :=_ec .ParseNumber (_aabe ._fge );if _ceec !=nil {return nil ,_ceec ;};switch _afgg :=_cfgc .(type ){case *_ec .PdfObjectFloat :return cmapFloat {float64 (*_afgg )},nil ;
case *_ec .PdfObjectInteger :return cmapInt {int64 (*_afgg )},nil ;};return nil ,_f .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_cfgc );};type cmapDict struct{Dict map[string ]cmapObject ;
};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_cb ,_fbgf :=cmap ._bc [cid ];return _cb ,_fbgf ;};type cmapName struct{Name string ;};type cmapString struct{String string ;
};type cMapParser struct{_fge *_fa .Reader };func (_dfcg *cMapParser )parseObject ()(cmapObject ,error ){_dfcg .skipSpaces ();for {_beb ,_bgd :=_dfcg ._fge .Peek (2);if _bgd !=nil {return nil ,_bgd ;};if _beb [0]=='%'{_dfcg .parseComment ();_dfcg .skipSpaces ();
continue ;}else if _beb [0]=='/'{_dge ,_ccd :=_dfcg .parseName ();return _dge ,_ccd ;}else if _beb [0]=='('{_aac ,_fdgc :=_dfcg .parseString ();return _aac ,_fdgc ;}else if _beb [0]=='['{_dffb ,_bfa :=_dfcg .parseArray ();return _dffb ,_bfa ;}else if (_beb [0]=='<')&&(_beb [1]=='<'){_gcd ,_bgeb :=_dfcg .parseDict ();
return _gcd ,_bgeb ;}else if _beb [0]=='<'{_eagb ,_fbeb :=_dfcg .parseHexString ();return _eagb ,_fbeb ;}else if _ec .IsDecimalDigit (_beb [0])||(_beb [0]=='-'&&_ec .IsDecimalDigit (_beb [1])){_deg ,_gbcg :=_dfcg .parseNumber ();if _gbcg !=nil {return nil ,_gbcg ;
};return _deg ,nil ;}else {_fcd ,_aab :=_dfcg .parseOperand ();if _aab !=nil {return nil ,_aab ;};return _fcd ,nil ;};};};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_bd ,_cce :=cmap .BytesToCharcodes (data );if !_cce {_ga .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;};_dee :=make ([]string ,len (_bd ));var _eb []CharCode ;for _ecgg ,_dec :=range _bd {_daa ,_dbc :=cmap ._db [_dec ];if !_dbc {_eb =append (_eb ,_dec );_daa =MissingCodeString ;};_dee [_ecgg ]=_daa ;};_ffd :=_g .Join (_dee ,"");if len (_eb )> 0{_ga .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 ),_bd ,len (_eb ),_eb ,_ffd ,cmap );
};return _ffd ,len (_eb );};func (cmap *CMap )parseBfchar ()error {for {_ffda ,_efgf :=cmap .parseObject ();if _efgf !=nil {if _efgf ==_e .EOF {break ;};return _efgf ;};var _ggc CharCode ;switch _eeb :=_ffda .(type ){case cmapOperand :if _eeb .Operand ==_abdb {return nil ;
};return _fb .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_ggc =_gcc (_eeb );default:return _fb .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};_ffda ,_efgf =cmap .parseObject ();if _efgf !=nil {if _efgf ==_e .EOF {break ;};return _efgf ;};var _dfe []rune ;switch _eca :=_ffda .(type ){case cmapOperand :if _eca .Operand ==_abdb {return nil ;};_ga .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",_eca );
return ErrBadCMap ;case cmapHexString :_dfe =_fgce (_eca );case cmapName :_ga .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",_eca );_dfe =[]rune {MissingCodeRune };
default:_ga .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",_ffda );return ErrBadCMap ;};cmap ._db [_ggc ]=string (_dfe );};return nil ;};func (cmap *CMap )Name ()string {return cmap ._ecg };
func (_acdf *cMapParser )parseString ()(cmapString ,error ){_acdf ._fge .ReadByte ();_bac :=_ca .Buffer {};_bea :=1;for {_bdda ,_fdad :=_acdf ._fge .Peek (1);if _fdad !=nil {return cmapString {_bac .String ()},_fdad ;};if _bdda [0]=='\\'{_acdf ._fge .ReadByte ();
_gfgc ,_fcge :=_acdf ._fge .ReadByte ();if _fcge !=nil {return cmapString {_bac .String ()},_fcge ;};if _ec .IsOctalDigit (_gfgc ){_gba ,_fgg :=_acdf ._fge .Peek (2);if _fgg !=nil {return cmapString {_bac .String ()},_fgg ;};var _adae []byte ;_adae =append (_adae ,_gfgc );
for _ ,_daae :=range _gba {if _ec .IsOctalDigit (_daae ){_adae =append (_adae ,_daae );}else {break ;};};_acdf ._fge .Discard (len (_adae )-1);_ga .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_adae );
_ebc ,_fgg :=_dc .ParseUint (string (_adae ),8,32);if _fgg !=nil {return cmapString {_bac .String ()},_fgg ;};_bac .WriteByte (byte (_ebc ));continue ;};switch _gfgc {case 'n':_bac .WriteByte ('\n');case 'r':_bac .WriteByte ('\r');case 't':_bac .WriteByte ('\t');
case 'b':_bac .WriteByte ('\b');case 'f':_bac .WriteByte ('\f');case '(':_bac .WriteByte ('(');case ')':_bac .WriteByte (')');case '\\':_bac .WriteByte ('\\');};continue ;}else if _bdda [0]=='('{_bea ++;}else if _bdda [0]==')'{_bea --;if _bea ==0{_acdf ._fge .ReadByte ();
break ;};};_abdc ,_ :=_acdf ._fge .ReadByte ();_bac .WriteByte (_abdc );};return cmapString {_bac .String ()},nil ;};func _cdbb (_fdca cmapHexString )rune {_ccef :=_fgce (_fdca );if _abeg :=len (_ccef );_abeg ==0{_ga .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",_fdca );
return MissingCodeRune ;};if len (_ccef )> 1{_ga .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",_fdca ,_ccef );
};return _ccef [0];};func _gcc (_bbd cmapHexString )CharCode {_dgc :=CharCode (0);for _ ,_dffg :=range _bbd ._dgfbc {_dgc <<=8;_dgc |=CharCode (_dffg );};return _dgc ;};type integer struct{_gbbdb bool ;_cgf int ;};func (_cg *CIDSystemInfo )String ()string {return _f .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_cg .Registry ,_cg .Ordering ,_cg .Supplement );
};type cmapArray struct{Array []cmapObject ;};func (cmap *CMap )computeInverseMappings (){for _dgb ,_af :=range cmap ._de {if _dgbc ,_eed :=cmap ._bc [_af ];!_eed ||(_eed &&_dgbc > _dgb ){cmap ._bc [_af ]=_dgb ;};};for _fef ,_abd :=range cmap ._db {if _ade ,_ceg :=cmap ._dcd [_abd ];
!_ceg ||(_ceg &&_ade > _fef ){cmap ._dcd [_abd ]=_fef ;};};_ab .Slice (cmap ._fe ,func (_ag ,_ece int )bool {return cmap ._fe [_ag ].Low < cmap ._fe [_ece ].Low });};type fbRange struct{_da CharCode ;_gd CharCode ;_fae string ;};func (cmap *CMap )NBits ()int {return cmap ._ecbd };
func (cmap *CMap )parseType ()error {_gda :=0;_gbe :=false ;for _eefd :=0;_eefd < 3&&!_gbe ;_eefd ++{_ecee ,_bfeb :=cmap .parseObject ();if _bfeb !=nil {return _bfeb ;};switch _cced :=_ecee .(type ){case cmapOperand :switch _cced .Operand {case "\u0064\u0065\u0066":_gbe =true ;
default:_ga .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",_ecee );return ErrBadCMap ;};case cmapInt :_gda =int (_cced ._cgbf );
};};cmap ._fbg =_gda ;return nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_df ,_fbe :=cmap ._dcd [s ];return _df ,_fbe };