unipdf/internal/cmap/cmap.go
2022-12-15 21:59:56 +00:00

142 lines
41 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package cmap ;import (_ca "bufio";_ec "bytes";_d "encoding/hex";_ef "errors";_e "fmt";_fa "github.com/unidoc/unipdf/v3/common";_fabb "github.com/unidoc/unipdf/v3/core";_fab "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_da "io";_ff "sort";_ce "strconv";
_dc "strings";_c "unicode/utf16";);type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func _dagg (_eacb ,_gfbe int )int {if _eacb < _gfbe {return _eacb ;};return _gfbe ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_ee :=make (map[CharCode ]string ,len (codeToRune ));
for _dfa ,_de :=range codeToRune {_ee [_dfa ]=string (_de );};cmap :=&CMap {_ba :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_cce :2,_cb :16,_cbd :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_dag :[]Codespace {{Low :0,High :0xffff}},_bfe :_ee ,_ccd :make (map[string ]CharCode ,len (codeToRune )),_dcb :make (map[CharCode ]CharCode ,len (codeToRune )),_ecd :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func _add (_aff string )string {_bac :=[]rune (_aff );_gfd :=make ([]string ,len (_bac ));for _gae ,_deb :=range _bac {_gfd [_gae ]=_e .Sprintf ("\u0025\u0030\u0034\u0078",_deb );};return _e .Sprintf ("\u003c\u0025\u0073\u003e",_dc .Join (_gfd ,""));
};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )inCodespace (_fgdd CharCode ,_ebb int )bool {for _ ,_gbe :=range cmap ._dag {if _gbe .Low <=_fgdd &&_fgdd <=_gbe .High &&_ebb ==_gbe .NumBytes {return true ;};};return false ;
};type cmapString struct{String string ;};const (_fdf =100;_def ="\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";
_afb ="\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 )Bytes ()[]byte {_fa .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 ._dfc )> 0{return cmap ._dfc ;};cmap ._dfc =[]byte (_dc .Join ([]string {_def ,cmap .toBfData (),_afb },"\u000a"));
return cmap ._dfc ;};const (_gcb ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_gead ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_geb ="\u0065n\u0064\u0063\u006d\u0061\u0070";_dcg ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";
_dfeb ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_cefg ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_bca ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_aafa ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_eccc ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_dcdg ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cbc ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_gbcg ="\u0075s\u0065\u0063\u006d\u0061\u0070";
_cbag ="\u0057\u004d\u006fd\u0065";_fcg ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_eece ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_eca ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gcc ,_dab :=cmap .BytesToCharcodes (data );
if !_dab {_fa .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;};_ggg :=make ([]string ,len (_gcc ));var _bd []CharCode ;for _eee ,_dfe :=range _gcc {_cfg ,_acb :=cmap ._bfe [_dfe ];if !_acb {_bd =append (_bd ,_dfe );_cfg =MissingCodeString ;};_ggg [_eee ]=_cfg ;};_dd :=_dc .Join (_ggg ,"");if len (_bd )> 0{_fa .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 ),_gcc ,len (_bd ),_bd ,_dd ,cmap );
};return _dd ,len (_bd );};func (cmap *CMap )Type ()int {return cmap ._cce };func (cmap *CMap )computeInverseMappings (){for _ccef ,_fbe :=range cmap ._dcb {if _gcg ,_fd :=cmap ._ecd [_fbe ];!_fd ||(_fd &&_gcg > _ccef ){cmap ._ecd [_fbe ]=_ccef ;};};for _fbb ,_af :=range cmap ._bfe {if _cfb ,_agb :=cmap ._ccd [_af ];
!_agb ||(_agb &&_cfb > _fbb ){cmap ._ccd [_af ]=_fbb ;};};_ff .Slice (cmap ._dag ,func (_gf ,_bag int )bool {return cmap ._dag [_gf ].Low < cmap ._dag [_bag ].Low });};type charRange struct{_b CharCode ;_bg CharCode ;};func (_dcfe *cMapParser )parseDict ()(cmapDict ,error ){_fa .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_fba :=_cafb ();_geg ,_ :=_dcfe ._bcf .ReadByte ();if _geg !='<'{return _fba ,ErrBadCMapDict ;};_geg ,_ =_dcfe ._bcf .ReadByte ();if _geg !='<'{return _fba ,ErrBadCMapDict ;};for {_dcfe .skipSpaces ();_aacb ,_baac :=_dcfe ._bcf .Peek (2);if _baac !=nil {return _fba ,_baac ;
};if (_aacb [0]=='>')&&(_aacb [1]=='>'){_dcfe ._bcf .ReadByte ();_dcfe ._bcf .ReadByte ();break ;};_agaf ,_baac :=_dcfe .parseName ();_fa .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_agaf .Name );if _baac !=nil {_fa .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",_baac );
return _fba ,_baac ;};_dcfe .skipSpaces ();_gdfd ,_baac :=_dcfe .parseObject ();if _baac !=nil {return _fba ,_baac ;};_fba .Dict [_agaf .Name ]=_gdfd ;_dcfe .skipSpaces ();_aacb ,_baac =_dcfe ._bcf .Peek (3);if _baac !=nil {return _fba ,_baac ;};if string (_aacb )=="\u0064\u0065\u0066"{_dcfe ._bcf .Discard (3);
};};return _fba ,nil ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_fa .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 :=_dee (isSimple );cmap .cMapParser =_gfed (data );_ag :=cmap .parse ();if _ag !=nil {return nil ,_ag ;};if len (cmap ._dag )==0{if cmap ._ad !=""{return cmap ,nil ;};_fa .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 NewCIDSystemInfo (obj _fabb .PdfObject )(_bc CIDSystemInfo ,_df error ){_bf ,_a :=_fabb .GetDict (obj );if !_a {return CIDSystemInfo {},_fabb .ErrTypeError ;};_g ,_a :=_fabb .GetStringVal (_bf .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
if !_a {return CIDSystemInfo {},_fabb .ErrTypeError ;};_ea ,_a :=_fabb .GetStringVal (_bf .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_a {return CIDSystemInfo {},_fabb .ErrTypeError ;};_ac ,_a :=_fabb .GetIntVal (_bf .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
if !_a {return CIDSystemInfo {},_fabb .ErrTypeError ;};return CIDSystemInfo {Registry :_g ,Ordering :_ea ,Supplement :_ac },nil ;};func (cmap *CMap )parseWMode ()error {var _bba int ;_bbc :=false ;for _gdf :=0;_gdf < 3&&!_bbc ;_gdf ++{_gac ,_gcf :=cmap .parseObject ();
if _gcf !=nil {return _gcf ;};switch _ggcf :=_gac .(type ){case cmapOperand :switch _ggcf .Operand {case "\u0064\u0065\u0066":_bbc =true ;default:_fa .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",_gac );
return ErrBadCMap ;};case cmapInt :_bba =int (_ggcf ._gdc );};};cmap ._cef =integer {_ebc :true ,_efad :_bba };return nil ;};type cmapArray struct{Array []cmapObject ;};func (cmap *CMap )matchCode (_bcg []byte )(_cdb CharCode ,_baa int ,_gbb bool ){for _dca :=0;
_dca < _cc ;_dca ++{if _dca < len (_bcg ){_cdb =_cdb <<8|CharCode (_bcg [_dca ]);_baa ++;};_gbb =cmap .inCodespace (_cdb ,_dca +1);if _gbb {return _cdb ,_baa ,true ;};};_fa .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",_bcg ,string (_bcg ),cmap );
return 0,0,false ;};func (cmap *CMap )parseBfrange ()error {for {var _dcd CharCode ;_ccbg ,_bgd :=cmap .parseObject ();if _bgd !=nil {if _bgd ==_da .EOF {break ;};return _bgd ;};switch _aef :=_ccbg .(type ){case cmapOperand :if _aef .Operand ==_eccc {return nil ;
};return _ef .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_dcd =_dffd (_aef );default:return _ef .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};var _fgbd CharCode ;_ccbg ,_bgd =cmap .parseObject ();if _bgd !=nil {if _bgd ==_da .EOF {break ;};return _bgd ;};switch _bfa :=_ccbg .(type ){case cmapOperand :_fa .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 :_fgbd =_dffd (_bfa );if _fgbd > 0xffff{_fgbd =0xffff;};default:_fa .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ccbg );return ErrBadCMap ;
};_ccbg ,_bgd =cmap .parseObject ();if _bgd !=nil {if _bgd ==_da .EOF {break ;};return _bgd ;};switch _adf :=_ccbg .(type ){case cmapArray :if len (_adf .Array )!=int (_fgbd -_dcd )+1{_fa .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 _bdg :=_dcd ;_bdg <=_fgbd ;_bdg ++{_gbeg :=_adf .Array [_bdg -_dcd ];_bdb ,_fgeg :=_gbeg .(cmapHexString );if !_fgeg {return _ef .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_aefd :=_fcdd (_bdb );cmap ._bfe [_bdg ]=string (_aefd );};case cmapHexString :_fec :=_fcdd (_adf );_abe :=len (_fec );for _dbf :=_dcd ;_dbf <=_fgbd ;_dbf ++{cmap ._bfe [_dbf ]=string (_fec );if _abe > 0{_fec [_abe -1]++;}else {_fa .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",_dbf );
};if _dbf ==1<<32-1{break ;};};default:_fa .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ccbg );return ErrBadCMap ;};};return nil ;};func (_egd *cMapParser )parseComment ()(string ,error ){var _dceb _ec .Buffer ;
_ ,_bgaa :=_egd .skipSpaces ();if _bgaa !=nil {return _dceb .String (),_bgaa ;};_befdg :=true ;for {_fdc ,_ggd :=_egd ._bcf .Peek (1);if _ggd !=nil {_fa .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_ggd );
return _dceb .String (),_ggd ;};if _befdg &&_fdc [0]!='%'{return _dceb .String (),ErrBadCMapComment ;};_befdg =false ;if (_fdc [0]!='\r')&&(_fdc [0]!='\n'){_fcd ,_ :=_egd ._bcf .ReadByte ();_dceb .WriteByte (_fcd );}else {break ;};};return _dceb .String (),nil ;
};func _dee (_gc bool )*CMap {_db :=16;if _gc {_db =8;};return &CMap {_cb :_db ,_dcb :make (map[CharCode ]CharCode ),_ecd :make (map[CharCode ]CharCode ),_bfe :make (map[CharCode ]string ),_ccd :make (map[string ]CharCode )};};type cMapParser struct{_bcf *_ca .Reader };
func (_bcgb *cMapParser )parseOperand ()(cmapOperand ,error ){_bbcg :=cmapOperand {};_dba :=_ec .Buffer {};for {_fce ,_bdgd :=_bcgb ._bcf .Peek (1);if _bdgd !=nil {if _bdgd ==_da .EOF {break ;};return _bbcg ,_bdgd ;};if _fabb .IsDelimiter (_fce [0]){break ;
};if _fabb .IsWhiteSpace (_fce [0]){break ;};_gfac ,_ :=_bcgb ._bcf .ReadByte ();_dba .WriteByte (_gfac );};if _dba .Len ()==0{return _bbcg ,_e .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_bbcg .Operand =_dba .String ();return _bbcg ,nil ;};func (_ccb *CIDSystemInfo )String ()string {return _e .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_ccb .Registry ,_ccb .Ordering ,_ccb .Supplement );};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_dagc ,_fbg :=cmap ._ccd [s ];
return _dagc ,_fbg ;};type cmapHexString struct{_abg int ;_ebfg []byte ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (cmap *CMap )parseSystemInfo ()error {_aca :=false ;_bggf :=false ;_cda :="";_adc :=false ;
_gfea :=CIDSystemInfo {};for _fag :=0;_fag < 50&&!_adc ;_fag ++{_ebfb ,_agg :=cmap .parseObject ();if _agg !=nil {return _agg ;};switch _cabb :=_ebfb .(type ){case cmapDict :_ccgb :=_cabb .Dict ;_ace ,_fgb :=_ccgb ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];
if !_fgb {_fa .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_agf ,_fgb :=_ace .(cmapString );if !_fgb {_fa .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_gfea .Registry =_agf .String ;_ace ,_fgb =_ccgb ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_fgb {_fa .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_agf ,_fgb =_ace .(cmapString );if !_fgb {_fa .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfea .Ordering =_agf .String ;
_ccbe ,_fgb :=_ccgb ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_fgb {_fa .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;
};_bgb ,_fgb :=_ccbe .(cmapInt );if !_fgb {_fa .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfea .Supplement =int (_bgb ._gdc );_adc =true ;case cmapOperand :switch _cabb .Operand {case "\u0062\u0065\u0067i\u006e":_aca =true ;
case "\u0065\u006e\u0064":_adc =true ;case "\u0064\u0065\u0066":_bggf =false ;};case cmapName :if _aca {_cda =_cabb .Name ;_bggf =true ;};case cmapString :if _bggf {switch _cda {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_gfea .Registry =_cabb .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_gfea .Ordering =_cabb .String ;};};case cmapInt :if _bggf {switch _cda {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_gfea .Supplement =int (_cabb ._gdc );};};};};if !_adc {_fa .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 ._cbd =_gfea ;return nil ;};func (_bcfb *cMapParser )parseNumber ()(cmapObject ,error ){_abd ,_fabg :=_fabb .ParseNumber (_bcfb ._bcf );if _fabg !=nil {return nil ,_fabg ;};switch _dcea :=_abd .(type ){case *_fabb .PdfObjectFloat :return cmapFloat {float64 (*_dcea )},nil ;
case *_fabb .PdfObjectInteger :return cmapInt {int64 (*_dcea )},nil ;};return nil ,_e .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_abd );};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._cef ._efad ,cmap ._cef ._ebc };
func (cmap *CMap )parseType ()error {_dcc :=0;_defe :=false ;for _egb :=0;_egb < 3&&!_defe ;_egb ++{_cg ,_bda :=cmap .parseObject ();if _bda !=nil {return _bda ;};switch _afe :=_cg .(type ){case cmapOperand :switch _afe .Operand {case "\u0064\u0065\u0066":_defe =true ;
default:_fa .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",_cg );return ErrBadCMap ;};case cmapInt :_dcc =int (_afe ._gdc );
};};cmap ._cce =_dcc ;return nil ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _cdc []CharCode ;if cmap ._cb ==8{for _ ,_eaf :=range data {_cdc =append (_cdc ,CharCode (_eaf ));};return _cdc ,true ;};for _ed :=0;_ed < len (data );
{_aga ,_edg ,_eba :=cmap .matchCode (data [_ed :]);if !_eba {_fa .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",_ed ,data ,string (data ));
return _cdc ,false ;};_cdc =append (_cdc ,_aga );_ed +=_edg ;};return _cdc ,true ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._cbd };func (_dae *cMapParser )parseObject ()(cmapObject ,error ){_dae .skipSpaces ();for {_egfg ,_beff :=_dae ._bcf .Peek (2);
if _beff !=nil {return nil ,_beff ;};if _egfg [0]=='%'{_dae .parseComment ();_dae .skipSpaces ();continue ;}else if _egfg [0]=='/'{_ecac ,_caf :=_dae .parseName ();return _ecac ,_caf ;}else if _egfg [0]=='('{_defa ,_acea :=_dae .parseString ();return _defa ,_acea ;
}else if _egfg [0]=='['{_addc ,_afa :=_dae .parseArray ();return _addc ,_afa ;}else if (_egfg [0]=='<')&&(_egfg [1]=='<'){_ebge ,_fbgd :=_dae .parseDict ();return _ebge ,_fbgd ;}else if _egfg [0]=='<'{_aefa ,_gab :=_dae .parseHexString ();return _aefa ,_gab ;
}else if _fabb .IsDecimalDigit (_egfg [0])||(_egfg [0]=='-'&&_fabb .IsDecimalDigit (_egfg [1])){_gbed ,_cage :=_dae .parseNumber ();if _cage !=nil {return nil ,_cage ;};return _gbed ,nil ;}else {_gdb ,_bagc :=_dae .parseOperand ();if _bagc !=nil {return nil ,_bagc ;
};return _gdb ,nil ;};};};type cmapInt struct{_gdc int64 };func (cmap *CMap )Stream ()(*_fabb .PdfObjectStream ,error ){if cmap ._eac !=nil {return cmap ._eac ,nil ;};_faf ,_gfe :=_fabb .MakeStream (cmap .Bytes (),_fabb .NewFlateEncoder ());if _gfe !=nil {return nil ,_gfe ;
};cmap ._eac =_faf ;return cmap ._eac ,nil ;};func (cmap *CMap )parseCodespaceRange ()error {for {_cegc ,_baf :=cmap .parseObject ();if _baf !=nil {if _baf ==_da .EOF {break ;};return _baf ;};_adg ,_dfd :=_cegc .(cmapHexString );if !_dfd {if _eec ,_eecg :=_cegc .(cmapOperand );
_eecg {if _eec .Operand ==_dfeb {return nil ;};return _ef .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_cegc ,_baf =cmap .parseObject ();if _baf !=nil {if _baf ==_da .EOF {break ;};return _baf ;};
_cegcc ,_dfd :=_cegc .(cmapHexString );if !_dfd {return _ef .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_adg ._ebfg )!=len (_cegcc ._ebfg ){return _ef .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");
};_efd :=_dffd (_adg );_bbgg :=_dffd (_cegcc );if _bbgg < _efd {_fa .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",_efd ,_bbgg );
return ErrBadCMap ;};_efdf :=_cegcc ._abg ;_cdf :=Codespace {NumBytes :_efdf ,Low :_efd ,High :_bbgg };cmap ._dag =append (cmap ._dag ,_cdf );_fa .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",_efd ,_bbgg );
};if len (cmap ._dag )==0{_fa .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 _bfc (_gea string )rune {_aad :=[]rune (_gea );
return _aad [len (_aad )-1]};func (cmap *CMap )parseCIDRange ()error {for {_eea ,_ecg :=cmap .parseObject ();if _ecg !=nil {if _ecg ==_da .EOF {break ;};return _ecg ;};_ccec ,_gaa :=_eea .(cmapHexString );if !_gaa {if _afbg ,_cag :=_eea .(cmapOperand );
_cag {if _afbg .Operand ==_cbc {return nil ;};return _ef .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");
};};_acd :=_dffd (_ccec );_eea ,_ecg =cmap .parseObject ();if _ecg !=nil {if _ecg ==_da .EOF {break ;};return _ecg ;};_bggd ,_gaa :=_eea .(cmapHexString );if !_gaa {return _ef .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 (_ccec ._ebfg )!=len (_bggd ._ebfg ){return _ef .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");};_ecc :=_dffd (_bggd );
if _acd > _ecc {_fa .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",_acd ,_ecc );
return ErrBadCMap ;};_eea ,_ecg =cmap .parseObject ();if _ecg !=nil {if _ecg ==_da .EOF {break ;};return _ecg ;};_cdcdf ,_gaa :=_eea .(cmapInt );if !_gaa {return _ef .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 _cdcdf ._gdc < 0{return _ef .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_egf :=_cdcdf ._gdc ;for _gdg :=_acd ;_gdg <=_ecc ;_gdg ++{cmap ._dcb [_gdg ]=CharCode (_egf );
_egf ++;};_fa .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",_acd ,_ecc ,_cdcdf ._gdc );};return nil ;};var (ErrBadCMap =_ef .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");
ErrBadCMapComment =_ef .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 =_ef .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");
);func _fcdd (_bbb cmapHexString )[]rune {if len (_bbb ._ebfg )==1{return []rune {rune (_bbb ._ebfg [0])};};_bddf :=_bbb ._ebfg ;if len (_bddf )%2!=0{_bddf =append (_bddf ,0);_fa .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",_bbb ,_bddf );
};_agfa :=len (_bddf )>>1;_dgc :=make ([]uint16 ,_agfa );for _cge :=0;_cge < _agfa ;_cge ++{_dgc [_cge ]=uint16 (_bddf [_cge <<1])<<8+uint16 (_bddf [_cge <<1+1]);};_dfaa :=_c .Decode (_dgc );return _dfaa ;};func (cmap *CMap )toBfData ()string {if len (cmap ._bfe )==0{return "";
};_cbg :=make ([]CharCode ,0,len (cmap ._bfe ));for _fed :=range cmap ._bfe {_cbg =append (_cbg ,_fed );};_ff .Slice (_cbg ,func (_gdd ,_cff int )bool {return _cbg [_gdd ]< _cbg [_cff ]});var _eab []charRange ;_ebgb :=charRange {_cbg [0],_cbg [0]};_ab :=cmap ._bfe [_cbg [0]];
for _ ,_ggc :=range _cbg [1:]{_eg :=cmap ._bfe [_ggc ];if _ggc ==_ebgb ._bg +1&&_bfc (_eg )==_bfc (_ab )+1{_ebgb ._bg =_ggc ;}else {_eab =append (_eab ,_ebgb );_ebgb ._b ,_ebgb ._bg =_ggc ,_ggc ;};_ab =_eg ;};_eab =append (_eab ,_ebgb );var _fafd []CharCode ;
var _bfb []fbRange ;for _ ,_bbg :=range _eab {if _bbg ._b ==_bbg ._bg {_fafd =append (_fafd ,_bbg ._b );}else {_bfb =append (_bfb ,fbRange {_efa :_bbg ._b ,_fe :_bbg ._bg ,_daf :cmap ._bfe [_bbg ._b ]});};};_fa .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 (_eab ),len (_fafd ),len (_bfb ));
var _aea []string ;if len (_fafd )> 0{_aa :=(len (_fafd )+_fdf -1)/_fdf ;for _ebf :=0;_ebf < _aa ;_ebf ++{_bec :=_dagg (len (_fafd )-_ebf *_fdf ,_fdf );_aea =append (_aea ,_e .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_bec ));
for _gdac :=0;_gdac < _bec ;_gdac ++{_gcd :=_fafd [_ebf *_fdf +_gdac ];_bee :=cmap ._bfe [_gcd ];_aea =append (_aea ,_e .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_gcd ,_add (_bee )));};_aea =append (_aea ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
};};if len (_bfb )> 0{_aeb :=(len (_bfb )+_fdf -1)/_fdf ;for _fbf :=0;_fbf < _aeb ;_fbf ++{_ega :=_dagg (len (_bfb )-_fbf *_fdf ,_fdf );_aea =append (_aea ,_e .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_ega ));
for _ggb :=0;_ggb < _ega ;_ggb ++{_cab :=_bfb [_fbf *_fdf +_ggb ];_aea =append (_aea ,_e .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_cab ._efa ,_cab ._fe ,_add (_cab ._daf )));};_aea =append (_aea ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
};};return _dc .Join (_aea ,"\u000a");};func (_gfg *cMapParser )parseName ()(cmapName ,error ){_fef :="";_ecb :=false ;for {_caa ,_dccc :=_gfg ._bcf .Peek (1);if _dccc ==_da .EOF {break ;};if _dccc !=nil {return cmapName {_fef },_dccc ;};if !_ecb {if _caa [0]=='/'{_ecb =true ;
_gfg ._bcf .ReadByte ();}else {_fa .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u004e\u0061\u006d\u0065\u0020\u0073\u0074a\u0072t\u0069n\u0067 \u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0028\u0025\u0020\u0078\u0029",_caa ,_caa );return cmapName {_fef },_e .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_caa [0]);
};}else {if _fabb .IsWhiteSpace (_caa [0]){break ;}else if (_caa [0]=='/')||(_caa [0]=='[')||(_caa [0]=='(')||(_caa [0]==']')||(_caa [0]=='<')||(_caa [0]=='>'){break ;}else if _caa [0]=='#'{_dcf ,_cbgg :=_gfg ._bcf .Peek (3);if _cbgg !=nil {return cmapName {_fef },_cbgg ;
};_gfg ._bcf .Discard (3);_bce ,_cbgg :=_d .DecodeString (string (_dcf [1:3]));if _cbgg !=nil {return cmapName {_fef },_cbgg ;};_fef +=string (_bce );}else {_cae ,_ :=_gfg ._bcf .ReadByte ();_fef +=string (_cae );};};};return cmapName {_fef },nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _gge ,_gff :=cmap ._bfe [code ];
_gff {return _gge ,true ;};return MissingCodeString ,false ;};const (_cc =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (_fdff *cMapParser )parseArray ()(cmapArray ,error ){_feb :=cmapArray {};_feb .Array =[]cmapObject {};
_fdff ._bcf .ReadByte ();for {_fdff .skipSpaces ();_eff ,_bgab :=_fdff ._bcf .Peek (1);if _bgab !=nil {return _feb ,_bgab ;};if _eff [0]==']'{_fdff ._bcf .ReadByte ();break ;};_bbgf ,_bgab :=_fdff .parseObject ();if _bgab !=nil {return _feb ,_bgab ;};_feb .Array =append (_feb .Array ,_bbgf );
};return _feb ,nil ;};func (cmap *CMap )String ()string {_bdd :=cmap ._cbd ;_gda :=[]string {_e .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._cb ),_e .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._cce )};if cmap ._ccg !=""{_gda =append (_gda ,_e .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._ccg ));
};if cmap ._ad !=""{_gda =append (_gda ,_e .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._ad ));};_gda =append (_gda ,_e .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_bdd .String ()));
if len (cmap ._dag )> 0{_gda =append (_gda ,_e .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._dag )));};if len (cmap ._bfe )> 0{_gda =append (_gda ,_e .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._bfe )));
};return _e .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ba ,_dc .Join (_gda ,"\u0020"));};type cmapDict struct{Dict map[string ]cmapObject ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_gb ,_bb :=cmap ._ecd [cid ];
return _gb ,_bb ;};type cmapOperand struct{Operand string ;};type integer struct{_ebc bool ;_efad int ;};func (_deg *cMapParser )parseString ()(cmapString ,error ){_deg ._bcf .ReadByte ();_abf :=_ec .Buffer {};_adcb :=1;for {_adfe ,_edc :=_deg ._bcf .Peek (1);
if _edc !=nil {return cmapString {_abf .String ()},_edc ;};if _adfe [0]=='\\'{_deg ._bcf .ReadByte ();_fefc ,_agc :=_deg ._bcf .ReadByte ();if _agc !=nil {return cmapString {_abf .String ()},_agc ;};if _fabb .IsOctalDigit (_fefc ){_ggcfa ,_fee :=_deg ._bcf .Peek (2);
if _fee !=nil {return cmapString {_abf .String ()},_fee ;};var _ded []byte ;_ded =append (_ded ,_fefc );for _ ,_dacf :=range _ggcfa {if _fabb .IsOctalDigit (_dacf ){_ded =append (_ded ,_dacf );}else {break ;};};_deg ._bcf .Discard (len (_ded )-1);_fa .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_ded );
_aaa ,_fee :=_ce .ParseUint (string (_ded ),8,32);if _fee !=nil {return cmapString {_abf .String ()},_fee ;};_abf .WriteByte (byte (_aaa ));continue ;};switch _fefc {case 'n':_abf .WriteByte ('\n');case 'r':_abf .WriteByte ('\r');case 't':_abf .WriteByte ('\t');
case 'b':_abf .WriteByte ('\b');case 'f':_abf .WriteByte ('\f');case '(':_abf .WriteByte ('(');case ')':_abf .WriteByte (')');case '\\':_abf .WriteByte ('\\');};continue ;}else if _adfe [0]=='('{_adcb ++;}else if _adfe [0]==')'{_adcb --;if _adcb ==0{_deg ._bcf .ReadByte ();
break ;};};_aabe ,_ :=_deg ._bcf .ReadByte ();_abf .WriteByte (_aabe );};return cmapString {_abf .String ()},nil ;};func _cafb ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_cad ,_dg :=cmap ._dcb [code ];
return _cad ,_dg ;};type cmapFloat struct{_gbee float64 };type cmapName struct{Name string ;};type CMap struct{*cMapParser ;_ba string ;_cb int ;_cce int ;_ccg string ;_ad string ;_cbd CIDSystemInfo ;_dag []Codespace ;_dcb map[CharCode ]CharCode ;_ecd map[CharCode ]CharCode ;
_bfe map[CharCode ]string ;_ccd map[string ]CharCode ;_dfc []byte ;_eac *_fabb .PdfObjectStream ;_cef integer ;};func IsPredefinedCMap (name string )bool {return _fab .AssetExists (name )};func (cmap *CMap )NBits ()int {return cmap ._cb };func (cmap *CMap )parseBfchar ()error {for {_cee ,_bfca :=cmap .parseObject ();
if _bfca !=nil {if _bfca ==_da .EOF {break ;};return _bfca ;};var _fge CharCode ;switch _afg :=_cee .(type ){case cmapOperand :if _afg .Operand ==_bca {return nil ;};return _ef .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_fge =_dffd (_afg );default:return _ef .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_cee ,_bfca =cmap .parseObject ();if _bfca !=nil {if _bfca ==_da .EOF {break ;};return _bfca ;};var _daae []rune ;
switch _acbg :=_cee .(type ){case cmapOperand :if _acbg .Operand ==_bca {return nil ;};_fa .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",_acbg );
return ErrBadCMap ;case cmapHexString :_daae =_fcdd (_acbg );case cmapName :_fa .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",_acbg );_daae =[]rune {MissingCodeRune };
default:_fa .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",_cee );return ErrBadCMap ;};cmap ._bfe [_fge ]=string (_daae );};return nil ;};func (cmap *CMap )parse ()error {var _bff cmapObject ;
for {_dac ,_gbd :=cmap .parseObject ();if _gbd !=nil {if _gbd ==_da .EOF {break ;};_fa .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_gbd );return _gbd ;};
switch _ebbb :=_dac .(type ){case cmapOperand :_bfbb :=_ebbb ;switch _bfbb .Operand {case _dcg :_faa :=cmap .parseCodespaceRange ();if _faa !=nil {return _faa ;};case _dcdg :_aab :=cmap .parseCIDRange ();if _aab !=nil {return _aab ;};case _cefg :_dgb :=cmap .parseBfchar ();
if _dgb !=nil {return _dgb ;};case _aafa :_aac :=cmap .parseBfrange ();if _aac !=nil {return _aac ;};case _gbcg :if _bff ==nil {_fa .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 ;};_gga ,_cbab :=_bff .(cmapName );if !_cbab {_fa .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",_bff );
return ErrBadCMap ;};cmap ._ad =_gga .Name ;case _gcb :_gde :=cmap .parseSystemInfo ();if _gde !=nil {return _gde ;};};case cmapName :_cabd :=_ebbb ;switch _cabd .Name {case _gcb :_cdcd :=cmap .parseSystemInfo ();if _cdcd !=nil {return _cdcd ;};case _fcg :_befd :=cmap .parseName ();
if _befd !=nil {return _befd ;};case _eece :_geab :=cmap .parseType ();if _geab !=nil {return _geab ;};case _eca :_daa :=cmap .parseVersion ();if _daa !=nil {return _daa ;};case _cbag :if _gbd =cmap .parseWMode ();_gbd !=nil {return _gbd ;};};};_bff =_dac ;
};return nil ;};func _ccgd (_bgg string )(*CMap ,error ){_be ,_gd :=_fab .Asset (_bgg );if _gd !=nil {return nil ,_gd ;};return LoadCmapFromDataCID (_be );};func _dffd (_cdeb cmapHexString )CharCode {_ecec :=CharCode (0);for _ ,_dbcfa :=range _cdeb ._ebfg {_ecec <<=8;
_ecec |=CharCode (_dbcfa );};return _ecec ;};func (cmap *CMap )parseVersion ()error {_gbga :="";_edb :=false ;for _gffd :=0;_gffd < 3&&!_edb ;_gffd ++{_bdf ,_gfa :=cmap .parseObject ();if _gfa !=nil {return _gfa ;};switch _gggf :=_bdf .(type ){case cmapOperand :switch _gggf .Operand {case "\u0064\u0065\u0066":_edb =true ;
default:_fa .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",_bdf );
return ErrBadCMap ;};case cmapInt :_gbga =_e .Sprintf ("\u0025\u0064",_gggf ._gdc );case cmapFloat :_gbga =_e .Sprintf ("\u0025\u0066",_gggf ._gbee );case cmapString :_gbga =_gggf .String ;default:_fa .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",_bdf );
};};cmap ._ccg =_gbga ;return nil ;};type fbRange struct{_efa CharCode ;_fe CharCode ;_daf string ;};func (cmap *CMap )Name ()string {return cmap ._ba };func (_dce *cMapParser )skipSpaces ()(int ,error ){_dda :=0;for {_dge ,_adce :=_dce ._bcf .Peek (1);
if _adce !=nil {return 0,_adce ;};if _fabb .IsWhiteSpace (_dge [0]){_dce ._bcf .ReadByte ();_dda ++;}else {break ;};};return _dda ,nil ;};func (cmap *CMap )parseName ()error {_befg :="";_fc :=false ;for _gbc :=0;_gbc < 20&&!_fc ;_gbc ++{_bad ,_gbg :=cmap .parseObject ();
if _gbg !=nil {return _gbg ;};switch _gddd :=_bad .(type ){case cmapOperand :switch _gddd .Operand {case "\u0064\u0065\u0066":_fc =true ;default:_fa .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",_bad ,_befg );
if _befg !=""{_befg =_e .Sprintf ("\u0025\u0073\u0020%\u0073",_befg ,_gddd .Operand );};_fa .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",_befg );
};case cmapName :_befg =_gddd .Name ;};};if !_fc {_fa .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ba =_befg ;return nil ;};type cmapObject interface{};
func _bcee (_bgbc cmapHexString )rune {_cdfd :=_fcdd (_bgbc );if _gba :=len (_cdfd );_gba ==0{_fa .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",_bgbc );
return MissingCodeRune ;};if len (_cdfd )> 1{_fa .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",_bgbc ,_cdfd );
};return _cdfd [0];};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_fb :=_ccgd (name );if _fb !=nil {return nil ,_fb ;};if cmap ._ad ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_fgd ,_fb :=_ccgd (cmap ._ad );if _fb !=nil {return nil ,_fb ;
};for _eb ,_cf :=range _fgd ._dcb {if _ ,_bgc :=cmap ._dcb [_eb ];!_bgc {cmap ._dcb [_eb ]=_cf ;};};cmap ._dag =append (cmap ._dag ,_fgd ._dag ...);cmap .computeInverseMappings ();return cmap ,nil ;};func (_dbcf *cMapParser )parseHexString ()(cmapHexString ,error ){_dbcf ._bcf .ReadByte ();
_dfg :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_cega :=_ec .Buffer {};for {_dbcf .skipSpaces ();_cca ,_acc :=_dbcf ._bcf .Peek (1);if _acc !=nil {return cmapHexString {},_acc ;
};if _cca [0]=='>'{_dbcf ._bcf .ReadByte ();break ;};_eeceb ,_ :=_dbcf ._bcf .ReadByte ();if _ec .IndexByte (_dfg ,_eeceb )>=0{_cega .WriteByte (_eeceb );};};if _cega .Len ()%2==1{_fa .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",_cega .String ());
_cega .WriteByte ('0');};_fdcb :=_cega .Len ()/2;_egag ,_ :=_d .DecodeString (_cega .String ());return cmapHexString {_abg :_fdcb ,_ebfg :_egag },nil ;};type CharCode uint32 ;func _gfed (_gef []byte )*cMapParser {_edd :=cMapParser {};_aeba :=_ec .NewBuffer (_gef );
_edd ._bcf =_ca .NewReader (_aeba );return &_edd ;};