unipdf/internal/cmap/cmap.go

137 lines
40 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/
2021-06-21 14:01:56 +00:00
package cmap ;import (_e "bufio";_fg "bytes";_bd "encoding/hex";_dd "errors";_d "fmt";_fd "github.com/unidoc/unipdf/v3/common";_df "github.com/unidoc/unipdf/v3/core";_bg "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_fgg "io";_ge "sort";_g "strconv";
_bdb "strings";_f "unicode/utf16";);func (cmap *CMap )parseBfchar ()error {for {_baa ,_gagd :=cmap .parseObject ();if _gagd !=nil {if _gagd ==_fgg .EOF {break ;};return _gagd ;};var _ebe CharCode ;switch _gbg :=_baa .(type ){case cmapOperand :if _gbg .Operand ==_fbdf {return nil ;
};return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_ebe =_ccd (_gbg );default:return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};_baa ,_gagd =cmap .parseObject ();if _gagd !=nil {if _gagd ==_fgg .EOF {break ;};return _gagd ;};var _abf []rune ;switch _faea :=_baa .(type ){case cmapOperand :if _faea .Operand ==_fbdf {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",_faea );
return ErrBadCMap ;case cmapHexString :_abf =_ggfa (_faea );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",_faea );_abf =[]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",_baa );return ErrBadCMap ;};cmap ._ece [_ebe ]=string (_abf );};return nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _aa ,_feeb :=cmap ._ece [code ];
_feeb {return _aa ,true ;};return MissingCodeString ,false ;};func NewCIDSystemInfo (obj _df .PdfObject )(_a CIDSystemInfo ,_dc error ){_eb ,_gb :=_df .GetDict (obj );if !_gb {return CIDSystemInfo {},_df .ErrTypeError ;};_de ,_gb :=_df .GetStringVal (_eb .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
if !_gb {return CIDSystemInfo {},_df .ErrTypeError ;};_bbb ,_gb :=_df .GetStringVal (_eb .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_gb {return CIDSystemInfo {},_df .ErrTypeError ;};_gg ,_gb :=_df .GetIntVal (_eb .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
if !_gb {return CIDSystemInfo {},_df .ErrTypeError ;};return CIDSystemInfo {Registry :_de ,Ordering :_bbb ,Supplement :_gg },nil ;};type cmapDict struct{Dict map[string ]cmapObject ;};func (cmap *CMap )Type ()int {return cmap ._egb };func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_acbe ,_cef :=cmap ._fe [s ];
return _acbe ,_cef ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_eeb ,_eaa :=cmap ._dfa [cid ];return _eeb ,_eaa ;};func IsPredefinedCMap (name string )bool {return _bg .AssetExists (name )};const (_eg =4;MissingCodeRune ='\ufffd';
MissingCodeString =string (MissingCodeRune ););func (_bccg *cMapParser )parseName ()(cmapName ,error ){_ddaa :="";_ffg :=false ;for {_daec ,_dcge :=_bccg ._dgg .Peek (1);if _dcge ==_fgg .EOF {break ;};if _dcge !=nil {return cmapName {_ddaa },_dcge ;};if !_ffg {if _daec [0]=='/'{_ffg =true ;
_bccg ._dgg .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",_daec ,_daec );return cmapName {_ddaa },_d .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_daec [0]);
};}else {if _df .IsWhiteSpace (_daec [0]){break ;}else if (_daec [0]=='/')||(_daec [0]=='[')||(_daec [0]=='(')||(_daec [0]==']')||(_daec [0]=='<')||(_daec [0]=='>'){break ;}else if _daec [0]=='#'{_abfc ,_egd :=_bccg ._dgg .Peek (3);if _egd !=nil {return cmapName {_ddaa },_egd ;
};_bccg ._dgg .Discard (3);_gfg ,_egd :=_bd .DecodeString (string (_abfc [1:3]));if _egd !=nil {return cmapName {_ddaa },_egd ;};_ddaa +=string (_gfg );}else {_gfgc ,_ :=_bccg ._dgg .ReadByte ();_ddaa +=string (_gfgc );};};};return cmapName {_ddaa },nil ;
};type charRange struct{_egc CharCode ;_ddf CharCode ;};type CMap struct{*cMapParser ;_ff string ;_gcc int ;_egb int ;_ec string ;_fc string ;_c CIDSystemInfo ;_bba []Codespace ;_cg map[CharCode ]CharCode ;_dfa map[CharCode ]CharCode ;_ece map[CharCode ]string ;
_fe map[string ]CharCode ;_ddd []byte ;_gd *_df .PdfObjectStream ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_cc ,_ad :=cmap ._cg [code ];return _cc ,_ad ;};func _ggfa (_fgbc cmapHexString )[]rune {if len (_fgbc ._dge )==1{return []rune {rune (_fgbc ._dge [0])};
};_daac :=_fgbc ._dge ;if len (_daac )%2!=0{_daac =append (_daac ,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",_fgbc ,_daac );
};_bfg :=len (_daac )>>1;_aga :=make ([]uint16 ,_bfg );for _fce :=0;_fce < _bfg ;_fce ++{_aga [_fce ]=uint16 (_daac [_fce <<1])<<8+uint16 (_daac [_fce <<1+1]);};_cabd :=_f .Decode (_aga );return _cabd ;};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 ._ddd )> 0{return cmap ._ddd ;};cmap ._ddd =[]byte (_bdb .Join ([]string {_gaa ,cmap .toBfData (),_efc },"\u000a"));return cmap ._ddd ;};func (cmap *CMap )String ()string {_eeg :=cmap ._c ;_fbe :=[]string {_d .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._gcc ),_d .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._egb )};
if cmap ._ec !=""{_fbe =append (_fbe ,_d .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._ec ));};if cmap ._fc !=""{_fbe =append (_fbe ,_d .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._fc ));
};_fbe =append (_fbe ,_d .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_eeg .String ()));if len (cmap ._bba )> 0{_fbe =append (_fbe ,_d .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._bba )));
};if len (cmap ._ece )> 0{_fbe =append (_fbe ,_d .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._ece )));};return _d .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ff ,_bdb .Join (_fbe ,"\u0020"));
};func _dfacg ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func _ccd (_add cmapHexString )CharCode {_beca :=CharCode (0);for _ ,_cbe :=range _add ._dge {_beca <<=8;_beca |=CharCode (_cbe );};return _beca ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gdc ,_ffd :=cmap .BytesToCharcodes (data );
if !_ffd {_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;};_acb :=make ([]string ,len (_gdc ));var _fee []CharCode ;for _gee ,_ag :=range _gdc {_dfbc ,_cgf :=cmap ._ece [_ag ];if !_cgf {_fee =append (_fee ,_ag );_dfbc =MissingCodeString ;};_acb [_gee ]=_dfbc ;};_cfa :=_bdb .Join (_acb ,"");if len (_fee )> 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 ),_gdc ,len (_fee ),_fee ,_cfa ,cmap );
};return _cfa ,len (_fee );};type cmapObject interface{};func (cmap *CMap )NBits ()int {return cmap ._gcc };func (_egg *cMapParser )parseOperand ()(cmapOperand ,error ){_aff :=cmapOperand {};_fde :=_fg .Buffer {};for {_egag ,_aeba :=_egg ._dgg .Peek (1);
if _aeba !=nil {if _aeba ==_fgg .EOF {break ;};return _aff ,_aeba ;};if _df .IsDelimiter (_egag [0]){break ;};if _df .IsWhiteSpace (_egag [0]){break ;};_fbb ,_ :=_egg ._dgg .ReadByte ();_fde .WriteByte (_fbb );};if _fde .Len ()==0{return _aff ,_d .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_aff .Operand =_fde .String ();return _aff ,nil ;};func (cmap *CMap )parse ()error {var _def cmapObject ;for {_bebg ,_gdbd :=cmap .parseObject ();if _gdbd !=nil {if _gdbd ==_fgg .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",_gdbd );
return _gdbd ;};switch _ggf :=_bebg .(type ){case cmapOperand :_gffe :=_ggf ;switch _gffe .Operand {case _eaef :_fbg :=cmap .parseCodespaceRange ();if _fbg !=nil {return _fbg ;};case _gdca :_acg :=cmap .parseCIDRange ();if _acg !=nil {return _acg ;};case _efaf :_gag :=cmap .parseBfchar ();
if _gag !=nil {return _gag ;};case _ega :_fbd :=cmap .parseBfrange ();if _fbd !=nil {return _fbd ;};case _adg :if _def ==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 ;};_bgea ,_ecd :=_def .(cmapName );if !_ecd {_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",_def );
return ErrBadCMap ;};cmap ._fc =_bgea .Name ;case _gfb :_egf :=cmap .parseSystemInfo ();if _egf !=nil {return _egf ;};};case cmapName :_dca :=_ggf ;switch _dca .Name {case _gfb :_baf :=cmap .parseSystemInfo ();if _baf !=nil {return _baf ;};case _ecac :_dcad :=cmap .parseName ();
if _dcad !=nil {return _dcad ;};case _agf :_fcf :=cmap .parseType ();if _fcf !=nil {return _fcf ;};case _ecae :_bec :=cmap .parseVersion ();if _bec !=nil {return _bec ;};};};_def =_bebg ;};return nil ;};func (_aebb *cMapParser )parseDict ()(cmapDict ,error ){_fd .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_ced :=_dfacg ();_aeed ,_ :=_aebb ._dgg .ReadByte ();if _aeed !='<'{return _ced ,ErrBadCMapDict ;};_aeed ,_ =_aebb ._dgg .ReadByte ();if _aeed !='<'{return _ced ,ErrBadCMapDict ;};for {_aebb .skipSpaces ();_bed ,_fdadf :=_aebb ._dgg .Peek (2);if _fdadf !=nil {return _ced ,_fdadf ;
};if (_bed [0]=='>')&&(_bed [1]=='>'){_aebb ._dgg .ReadByte ();_aebb ._dgg .ReadByte ();break ;};_acgg ,_fdadf :=_aebb .parseName ();_fd .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_acgg .Name );if _fdadf !=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",_fdadf );
return _ced ,_fdadf ;};_aebb .skipSpaces ();_cbfc ,_fdadf :=_aebb .parseObject ();if _fdadf !=nil {return _ced ,_fdadf ;};_ced .Dict [_acgg .Name ]=_cbfc ;_aebb .skipSpaces ();_bed ,_fdadf =_aebb ._dgg .Peek (3);if _fdadf !=nil {return _ced ,_fdadf ;};
if string (_bed )=="\u0064\u0065\u0066"{_aebb ._dgg .Discard (3);};};return _ced ,nil ;};func (cmap *CMap )parseName ()error {_cdc :="";_aea :=false ;for _cb :=0;_cb < 20&&!_aea ;_cb ++{_eac ,_aabe :=cmap .parseObject ();if _aabe !=nil {return _aabe ;};
switch _fcdg :=_eac .(type ){case cmapOperand :switch _fcdg .Operand {case "\u0064\u0065\u0066":_aea =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",_eac ,_cdc );
if _cdc !=""{_cdc =_d .Sprintf ("\u0025\u0073\u0020%\u0073",_cdc ,_fcdg .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",_cdc );
};case cmapName :_cdc =_fcdg .Name ;};};if !_aea {_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 ._ff =_cdc ;return nil ;};type cmapOperand struct{Operand string ;
};func (cmap *CMap )parseSystemInfo ()error {_gcf :=false ;_deb :=false ;_dgf :="";_bc :=false ;_cfd :=CIDSystemInfo {};for _cbc :=0;_cbc < 50&&!_bc ;_cbc ++{_bgg ,_ecfe :=cmap .parseObject ();if _ecfe !=nil {return _ecfe ;};switch _bdg :=_bgg .(type ){case cmapDict :_ebf :=_bdg .Dict ;
_afa ,_ggg :=_ebf ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_ggg {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cbd ,_ggg :=_afa .(cmapString );
if !_ggg {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cfd .Registry =_cbd .String ;_afa ,_ggg =_ebf ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];
if !_ggg {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cbd ,_ggg =_afa .(cmapString );if !_ggg {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_cfd .Ordering =_cbd .String ;_fba ,_ggg :=_ebf ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_ggg {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_aac ,_ggg :=_fba .(cmapInt );if !_ggg {_fd .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cfd .Supplement =int (_aac ._dab );
_bc =true ;case cmapOperand :switch _bdg .Operand {case "\u0062\u0065\u0067i\u006e":_gcf =true ;case "\u0065\u006e\u0064":_bc =true ;case "\u0064\u0065\u0066":_deb =false ;};case cmapName :if _gcf {_dgf =_bdg .Name ;_deb =true ;};case cmapString :if _deb {switch _dgf {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_cfd .Registry =_bdg .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_cfd .Ordering =_bdg .String ;};};case cmapInt :if _deb {switch _dgf {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_cfd .Supplement =int (_bdg ._dab );};};};};if !_bc {_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 ._c =_cfd ;return nil ;};func (_bde *cMapParser )parseObject ()(cmapObject ,error ){_bde .skipSpaces ();for {_adgd ,_fbc :=_bde ._dgg .Peek (2);if _fbc !=nil {return nil ,_fbc ;};if _adgd [0]=='%'{_bde .parseComment ();_bde .skipSpaces ();
continue ;}else if _adgd [0]=='/'{_fgb ,_bca :=_bde .parseName ();return _fgb ,_bca ;}else if _adgd [0]=='('{_edca ,_ead :=_bde .parseString ();return _edca ,_ead ;}else if _adgd [0]=='['{_fgde ,_cab :=_bde .parseArray ();return _fgde ,_cab ;}else if (_adgd [0]=='<')&&(_adgd [1]=='<'){_eacc ,_edb :=_bde .parseDict ();
return _eacc ,_edb ;}else if _adgd [0]=='<'{_edd ,_ecg :=_bde .parseHexString ();return _edd ,_ecg ;}else if _df .IsDecimalDigit (_adgd [0])||(_adgd [0]=='-'&&_df .IsDecimalDigit (_adgd [1])){_ebab ,_bfe :=_bde .parseNumber ();if _bfe !=nil {return nil ,_bfe ;
};return _ebab ,nil ;}else {_cbb ,_bcc :=_bde .parseOperand ();if _bcc !=nil {return nil ,_bcc ;};return _cbb ,nil ;};};};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 :=_bbbc (isSimple );cmap .cMapParser =_dbd (data );_ac :=cmap .parse ();if _ac !=nil {return nil ,_ac ;};if len (cmap ._bba )==0{if cmap ._fc !=""{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 (_fdd *cMapParser )parseNumber ()(cmapObject ,error ){_cgb ,_dggf :=_df .ParseNumber (_fdd ._dgg );if _dggf !=nil {return nil ,_dggf ;};switch _fea :=_cgb .(type ){case *_df .PdfObjectFloat :return cmapFloat {float64 (*_fea )},nil ;
case *_df .PdfObjectInteger :return cmapInt {int64 (*_fea )},nil ;};return nil ,_d .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_cgb );};type cmapName struct{Name string ;
};var (ErrBadCMap =_dd .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_dd .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 =_dd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");
);func _fdb (_aec ,_fgc int )int {if _aec < _fgc {return _aec ;};return _fgc ;};func (_eee *cMapParser )parseHexString ()(cmapHexString ,error ){_eee ._dgg .ReadByte ();_cad :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_gab :=_fg .Buffer {};for {_eee .skipSpaces ();_ecdd ,_edeg :=_eee ._dgg .Peek (1);if _edeg !=nil {return cmapHexString {},_edeg ;};if _ecdd [0]=='>'{_eee ._dgg .ReadByte ();break ;};_afc ,_ :=_eee ._dgg .ReadByte ();if _fg .IndexByte (_cad ,_afc )>=0{_gab .WriteByte (_afc );
};};if _gab .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",_gab .String ());_gab .WriteByte ('0');};_agcc :=_gab .Len ()/2;
_dcca ,_ :=_bd .DecodeString (_gab .String ());return cmapHexString {_eefd :_agcc ,_dge :_dcca },nil ;};func (cmap *CMap )parseCodespaceRange ()error {for {_geg ,_agg :=cmap .parseObject ();if _agg !=nil {if _agg ==_fgg .EOF {break ;};return _agg ;};_aef ,_bdbg :=_geg .(cmapHexString );
if !_bdbg {if _ecec ,_ccg :=_geg .(cmapOperand );_ccg {if _ecec .Operand ==_cgcg {return nil ;};return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_geg ,_agg =cmap .parseObject ();if _agg !=nil {if _agg ==_fgg .EOF {break ;
};return _agg ;};_gba ,_bdbg :=_geg .(cmapHexString );if !_bdbg {return _dd .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_aef ._dge )!=len (_gba ._dge ){return _dd .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");
};_dcg :=_ccd (_aef );_ggga :=_ccd (_gba );if _ggga < _dcg {_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",_dcg ,_ggga );
return ErrBadCMap ;};_faef :=_gba ._eefd ;_cee :=Codespace {NumBytes :_faef ,Low :_dcg ,High :_ggga };cmap ._bba =append (cmap ._bba ,_cee );_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",_dcg ,_ggga );
};if len (cmap ._bba )==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 (_dedd *cMapParser )parseString ()(cmapString ,error ){_dedd ._dgg .ReadByte ();
_fbfg :=_fg .Buffer {};_fec :=1;for {_ddad ,_bbdf :=_dedd ._dgg .Peek (1);if _bbdf !=nil {return cmapString {_fbfg .String ()},_bbdf ;};if _ddad [0]=='\\'{_dedd ._dgg .ReadByte ();_cda ,_faf :=_dedd ._dgg .ReadByte ();if _faf !=nil {return cmapString {_fbfg .String ()},_faf ;
};if _df .IsOctalDigit (_cda ){_dbg ,_deaa :=_dedd ._dgg .Peek (2);if _deaa !=nil {return cmapString {_fbfg .String ()},_deaa ;};var _gbe []byte ;_gbe =append (_gbe ,_cda );for _ ,_bdbc :=range _dbg {if _df .IsOctalDigit (_bdbc ){_gbe =append (_gbe ,_bdbc );
}else {break ;};};_dedd ._dgg .Discard (len (_gbe )-1);_fd .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_gbe );_acee ,_deaa :=_g .ParseUint (string (_gbe ),8,32);if _deaa !=nil {return cmapString {_fbfg .String ()},_deaa ;
};_fbfg .WriteByte (byte (_acee ));continue ;};switch _cda {case 'n':_fbfg .WriteByte ('\n');case 'r':_fbfg .WriteByte ('\r');case 't':_fbfg .WriteByte ('\t');case 'b':_fbfg .WriteByte ('\b');case 'f':_fbfg .WriteByte ('\f');case '(':_fbfg .WriteByte ('(');
case ')':_fbfg .WriteByte (')');case '\\':_fbfg .WriteByte ('\\');};continue ;}else if _ddad [0]=='('{_fec ++;}else if _ddad [0]==')'{_fec --;if _fec ==0{_dedd ._dgg .ReadByte ();break ;};};_fgdea ,_ :=_dedd ._dgg .ReadByte ();_fbfg .WriteByte (_fgdea );
};return cmapString {_fbfg .String ()},nil ;};func _ceed (_fbeg cmapHexString )rune {_daeg :=_ggfa (_fbeg );if _bbcd :=len (_daeg );_bbcd ==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",_fbeg );
return MissingCodeRune ;};if len (_daeg )> 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",_fbeg ,_daeg );
};return _daeg [0];};type cmapInt struct{_dab int64 };func (cmap *CMap )parseCIDRange ()error {for {_cce ,_bcb :=cmap .parseObject ();if _bcb !=nil {if _bcb ==_fgg .EOF {break ;};return _bcb ;};_abec ,_eagf :=_cce .(cmapHexString );if !_eagf {if _aae ,_afg :=_cce .(cmapOperand );
_afg {if _aae .Operand ==_eda {return nil ;};return _dd .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");
};};_eafb :=_ccd (_abec );_cce ,_bcb =cmap .parseObject ();if _bcb !=nil {if _bcb ==_fgg .EOF {break ;};return _bcb ;};_ada ,_eagf :=_cce .(cmapHexString );if !_eagf {return _dd .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 (_abec ._dge )!=len (_ada ._dge ){return _dd .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");};_feg :=_ccd (_ada );
if _eafb > _feg {_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",_eafb ,_feg );
return ErrBadCMap ;};_cce ,_bcb =cmap .parseObject ();if _bcb !=nil {if _bcb ==_fgg .EOF {break ;};return _bcb ;};_agd ,_eagf :=_cce .(cmapInt );if !_eagf {return _dd .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 _agd ._dab < 0{return _dd .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_cgg :=_agd ._dab ;for _ddfb :=_eafb ;_ddfb <=_feg ;_ddfb ++{cmap ._cg [_ddfb ]=CharCode (_cgg );
_cgg ++;};_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",_eafb ,_feg ,_agd ._dab );};return nil ;};type Codespace struct{NumBytes int ;Low CharCode ;
High CharCode ;};func _dbd (_ace []byte )*cMapParser {_dgge :=cMapParser {};_gcca :=_fg .NewBuffer (_ace );_dgge ._dgg =_e .NewReader (_gcca );return &_dgge ;};func (cmap *CMap )parseBfrange ()error {for {var _ffb CharCode ;_egbg ,_ebd :=cmap .parseObject ();
if _ebd !=nil {if _ebd ==_fgg .EOF {break ;};return _ebd ;};switch _bag :=_egbg .(type ){case cmapOperand :if _bag .Operand ==_dfed {return nil ;};return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_ffb =_ccd (_bag );default:return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _ecab CharCode ;_egbg ,_ebd =cmap .parseObject ();if _ebd !=nil {if _ebd ==_fgg .EOF {break ;};return _ebd ;
};switch _aacg :=_egbg .(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 :_ecab =_ccd (_aacg );default:_fd .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_egbg );return ErrBadCMap ;};_egbg ,_ebd =cmap .parseObject ();
if _ebd !=nil {if _ebd ==_fgg .EOF {break ;};return _ebd ;};switch _gcd :=_egbg .(type ){case cmapArray :if len (_gcd .Array )!=int (_ecab -_ffb )+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 _gfaa :=_ffb ;_gfaa <=_ecab ;_gfaa ++{_decg :=_gcd .Array [_gfaa -_ffb ];_fdad ,_dbcg :=_decg .(cmapHexString );if !_dbcg {return _dd .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_dac :=_ggfa (_fdad );cmap ._ece [_gfaa ]=string (_dac );};case cmapHexString :_agb :=_ggfa (_gcd );_aeb :=len (_agb );for _bac :=_ffb ;_bac <=_ecab ;_bac ++{cmap ._ece [_bac ]=string (_agb );if _aeb > 0{_agb [_aeb -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",_bac );
};};default:_fd .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_egbg );return ErrBadCMap ;};};return nil ;};type fbRange struct{_bb CharCode ;_gc CharCode ;_dfe string ;
};const (_gfb ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_ddfa ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_eed ="\u0065n\u0064\u0063\u006d\u0061\u0070";_eaef ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";
_cgcg ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_efaf ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_fbdf ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_ega ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_dfed ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gdca ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_eda ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_adg ="\u0075s\u0065\u0063\u006d\u0061\u0070";
_ecac ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_agf ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_ecae ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_cf :=_ef (name );
if _cf !=nil {return nil ,_cf ;};if cmap ._fc ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_beb ,_cf :=_ef (cmap ._fc );if _cf !=nil {return nil ,_cf ;};for _ab ,_dfb :=range _beb ._cg {if _ ,_abd :=cmap ._cg [_ab ];!_abd {cmap ._cg [_ab ]=_dfb ;
};};cmap ._bba =append (cmap ._bba ,_beb ._bba ...);cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMap )Stream ()(*_df .PdfObjectStream ,error ){if cmap ._gd !=nil {return cmap ._gd ,nil ;};_fa ,_geeb :=_df .MakeStream (cmap .Bytes (),_df .NewFlateEncoder ());
if _geeb !=nil {return nil ,_geeb ;};cmap ._gd =_fa ;return cmap ._gd ,nil ;};func (cmap *CMap )matchCode (_ded []byte )(_bgf CharCode ,_edc int ,_agc bool ){for _bf :=0;_bf < _eg ;_bf ++{if _bf < len (_ded ){_bgf =_bgf <<8|CharCode (_ded [_bf ]);_edc ++;
};_agc =cmap .inCodespace (_bgf ,_bf +1);if _agc {return _bgf ,_edc ,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",_ded ,string (_ded ),cmap );
return 0,0,false ;};func (_gce *cMapParser )skipSpaces ()(int ,error ){_fgf :=0;for {_agdc ,_fbaa :=_gce ._dgg .Peek (1);if _fbaa !=nil {return 0,_fbaa ;};if _df .IsWhiteSpace (_agdc [0]){_gce ._dgg .ReadByte ();_fgf ++;}else {break ;};};return _fgf ,nil ;
};type cmapFloat struct{_cgd float64 };func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_ee :=make (map[CharCode ]string ,len (codeToRune ));for _be ,_gec :=range codeToRune {_ee [_be ]=string (_gec );};cmap :=&CMap {_ff :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_egb :2,_gcc :16,_c :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_bba :[]Codespace {{Low :0,High :0xffff}},_ece :_ee ,_fe :make (map[string ]CharCode ,len (codeToRune )),_cg :make (map[CharCode ]CharCode ,len (codeToRune )),_dfa :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};type cmapString struct{String string ;};func _bbbc (_cgc bool )*CMap {_gge :=16;if _cgc {_gge =8;};return &CMap {_gcc :_gge ,_cg :make (map[CharCode ]CharCode ),_dfa :make (map[CharCode ]CharCode ),_ece :make (map[CharCode ]string ),_fe :make (map[string ]CharCode )};
};func (_ba *CIDSystemInfo )String ()string {return _d .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_ba .Registry ,_ba .Ordering ,_ba .Supplement );};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;
};func (_bfeb *cMapParser )parseArray ()(cmapArray ,error ){_gfbg :=cmapArray {};_gfbg .Array =[]cmapObject {};_bfeb ._dgg .ReadByte ();for {_bfeb .skipSpaces ();_aee ,_bbe :=_bfeb ._dgg .Peek (1);if _bbe !=nil {return _gfbg ,_bbe ;};if _aee [0]==']'{_bfeb ._dgg .ReadByte ();
break ;};_faeag ,_bbe :=_bfeb .parseObject ();if _bbe !=nil {return _gfbg ,_bbe ;};_gfbg .Array =append (_gfbg .Array ,_faeag );};return _gfbg ,nil ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _ffdf []CharCode ;if cmap ._gcc ==8{for _ ,_af :=range data {_ffdf =append (_ffdf ,CharCode (_af ));
};return _ffdf ,true ;};for _gdd :=0;_gdd < len (data );{_cae ,_eaf ,_dad :=cmap .matchCode (data [_gdd :]);if !_dad {_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",_gdd ,data ,string (data ));
return _ffdf ,false ;};_ffdf =append (_ffdf ,_cae );_gdd +=_eaf ;};return _ffdf ,true ;};func (cmap *CMap )toBfData ()string {if len (cmap ._ece )==0{return "";};_fda :=make ([]CharCode ,0,len (cmap ._ece ));for _fff :=range cmap ._ece {_fda =append (_fda ,_fff );
};_ge .Slice (_fda ,func (_gff ,_fae int )bool {return _fda [_gff ]< _fda [_fae ]});var _gca []charRange ;_ebc :=charRange {_fda [0],_fda [0]};_fcd :=cmap ._ece [_fda [0]];for _ ,_bge :=range _fda [1:]{_daa :=cmap ._ece [_bge ];if _bge ==_ebc ._ddf +1&&_aaa (_daa )==_aaa (_fcd )+1{_ebc ._ddf =_bge ;
}else {_gca =append (_gca ,_ebc );_ebc ._egc ,_ebc ._ddf =_bge ,_bge ;};_fcd =_daa ;};_gca =append (_gca ,_ebc );var _dfac []CharCode ;var _gfd []fbRange ;for _ ,_gdb :=range _gca {if _gdb ._egc ==_gdb ._ddf {_dfac =append (_dfac ,_gdb ._egc );}else {_gfd =append (_gfd ,fbRange {_bb :_gdb ._egc ,_gc :_gdb ._ddf ,_dfe :cmap ._ece [_gdb ._egc ]});
};};_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 (_gca ),len (_dfac ),len (_gfd ));var _bad []string ;if len (_dfac )> 0{_ede :=(len (_dfac )+_dcc -1)/_dcc ;
for _eef :=0;_eef < _ede ;_eef ++{_afd :=_fdb (len (_dfac )-_eef *_dcc ,_dcc );_bad =append (_bad ,_d .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_afd ));for _eca :=0;_eca < _afd ;_eca ++{_efe :=_dfac [_eef *_dcc +_eca ];
_dce :=cmap ._ece [_efe ];_bad =append (_bad ,_d .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_efe ,_dae (_dce )));};_bad =append (_bad ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_gfd )> 0{_aca :=(len (_gfd )+_dcc -1)/_dcc ;
for _cfc :=0;_cfc < _aca ;_cfc ++{_daf :=_fdb (len (_gfd )-_cfc *_dcc ,_dcc );_bad =append (_bad ,_d .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_daf ));for _caee :=0;_caee < _daf ;_caee ++{_ebaef :=_gfd [_cfc *_dcc +_caee ];
_bad =append (_bad ,_d .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_ebaef ._bb ,_ebaef ._gc ,_dae (_ebaef ._dfe )));};_bad =append (_bad ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};
};return _bdb .Join (_bad ,"\u000a");};func (cmap *CMap )Name ()string {return cmap ._ff };func (cmap *CMap )parseType ()error {_fgd :=0;_gfa :=false ;for _dbf :=0;_dbf < 3&&!_gfa ;_dbf ++{_adc ,_ebg :=cmap .parseObject ();if _ebg !=nil {return _ebg ;};
switch _dg :=_adc .(type ){case cmapOperand :switch _dg .Operand {case "\u0064\u0065\u0066":_gfa =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",_adc );
return ErrBadCMap ;};case cmapInt :_fgd =int (_dg ._dab );};};cmap ._egb =_fgd ;return nil ;};type cMapParser struct{_dgg *_e .Reader };type cmapHexString struct{_eefd int ;_dge []byte ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};
func _dae (_dfec string )string {_ecfb :=[]rune (_dfec );_dbc :=make ([]string ,len (_ecfb ));for _adf ,_acbeb :=range _ecfb {_dbc [_adf ]=_d .Sprintf ("\u0025\u0030\u0034\u0078",_acbeb );};return _d .Sprintf ("\u003c\u0025\u0073\u003e",_bdb .Join (_dbc ,""));
};func _ef (_gf string )(*CMap ,error ){_ea ,_gbf :=_bg .Asset (_gf );if _gbf !=nil {return nil ,_gbf ;};return LoadCmapFromDataCID (_ea );};func (cmap *CMap )inCodespace (_dfbe CharCode ,_bef int )bool {for _ ,_dda :=range cmap ._bba {if _dda .Low <=_dfbe &&_dfbe <=_dda .High &&_bef ==_dda .NumBytes {return true ;
};};return false ;};func (_fad *cMapParser )parseComment ()(string ,error ){var _abg _fg .Buffer ;_ ,_aaf :=_fad .skipSpaces ();if _aaf !=nil {return _abg .String (),_aaf ;};_fag :=true ;for {_dbe ,_gac :=_fad ._dgg .Peek (1);if _gac !=nil {_fd .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_gac );
return _abg .String (),_gac ;};if _fag &&_dbe [0]!='%'{return _abg .String (),ErrBadCMapComment ;};_fag =false ;if (_dbe [0]!='\r')&&(_dbe [0]!='\n'){_beg ,_ :=_fad ._dgg .ReadByte ();_abg .WriteByte (_beg );}else {break ;};};return _abg .String (),nil ;
};const (_dcc =100;_gaa ="\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";
_efc ="\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 _aaa (_daab string )rune {_ecf :=[]rune (_daab );return _ecf [len (_ecf )-1]};func (cmap *CMap )parseVersion ()error {_gaag :="";_cdd :=false ;for _ecfa :=0;_ecfa < 3&&!_cdd ;_ecfa ++{_ddfe ,_gea :=cmap .parseObject ();if _gea !=nil {return _gea ;
};switch _eag :=_ddfe .(type ){case cmapOperand :switch _eag .Operand {case "\u0064\u0065\u0066":_cdd =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",_ddfe );
return ErrBadCMap ;};case cmapInt :_gaag =_d .Sprintf ("\u0025\u0064",_eag ._dab );case cmapFloat :_gaag =_d .Sprintf ("\u0025\u0066",_eag ._cgd );case cmapString :_gaag =_eag .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",_ddfe );
};};cmap ._ec =_gaag ;return nil ;};type cmapArray struct{Array []cmapObject ;};func (cmap *CMap )computeInverseMappings (){for _ae ,_ca :=range cmap ._cg {if _gcb ,_abdd :=cmap ._dfa [_ca ];!_abdd ||(_abdd &&_gcb > _ae ){cmap ._dfa [_ca ]=_ae ;};};for _ce ,_ga :=range cmap ._ece {if _bae ,_caf :=cmap ._fe [_ga ];
!_caf ||(_caf &&_bae > _ce ){cmap ._fe [_ga ]=_ce ;};};_ge .Slice (cmap ._bba ,func (_db ,_gged int )bool {return cmap ._bba [_db ].Low < cmap ._bba [_gged ].Low });};type CharCode uint32 ;