unipdf/internal/cmap/cmap.go
2021-04-23 20:28:14 +00:00

137 lines
40 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package cmap ;import (_d "bufio";_c "bytes";_ga "encoding/hex";_ea "errors";_a "fmt";_ge "github.com/unidoc/unipdf/v3/common";_gc "github.com/unidoc/unipdf/v3/core";_fe "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_gg "io";_f "sort";_b "strconv";
_gge "strings";_g "unicode/utf16";);var (ErrBadCMap =_ea .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_ea .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 =_ea .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (_gcbd *cMapParser )parseHexString ()(cmapHexString ,error ){_gcbd ._dbfg .ReadByte ();_facd :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_eccg :=_c .Buffer {};for {_gcbd .skipSpaces ();_ebd ,_edbc :=_gcbd ._dbfg .Peek (1);if _edbc !=nil {return cmapHexString {},_edbc ;};if _ebd [0]=='>'{_gcbd ._dbfg .ReadByte ();break ;};_daae ,_ :=_gcbd ._dbfg .ReadByte ();if _c .IndexByte (_facd ,_daae )>=0{_eccg .WriteByte (_daae );
};};if _eccg .Len ()%2==1{_ge .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",_eccg .String ());_eccg .WriteByte ('0');};_cbab :=_eccg .Len ()/2;
_fdba ,_ :=_ga .DecodeString (_eccg .String ());return cmapHexString {_acgd :_cbab ,_bdbe :_fdba },nil ;};func IsPredefinedCMap (name string )bool {return _fe .AssetExists (name )};func (_fae *cMapParser )parseComment ()(string ,error ){var _bag _c .Buffer ;
_ ,_gea :=_fae .skipSpaces ();if _gea !=nil {return _bag .String (),_gea ;};_bbfc :=true ;for {_ecd ,_dcb :=_fae ._dbfg .Peek (1);if _dcb !=nil {_ge .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_dcb );
return _bag .String (),_dcb ;};if _bbfc &&_ecd [0]!='%'{return _bag .String (),ErrBadCMapComment ;};_bbfc =false ;if (_ecd [0]!='\r')&&(_ecd [0]!='\n'){_aebe ,_ :=_fae ._dbfg .ReadByte ();_bag .WriteByte (_aebe );}else {break ;};};return _bag .String (),nil ;
};func (cmap *CMap )String ()string {_fac :=cmap ._ef ;_ad :=[]string {_a .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._fed ),_a .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._bb )};if cmap ._ac !=""{_ad =append (_ad ,_a .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._ac ));
};if cmap ._cc !=""{_ad =append (_ad ,_a .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._cc ));};_ad =append (_ad ,_a .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_fac .String ()));
if len (cmap ._gef )> 0{_ad =append (_ad ,_a .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._gef )));};if len (cmap ._dg )> 0{_ad =append (_ad ,_a .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._dg )));
};return _a .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._dd ,_gge .Join (_ad ,"\u0020"));};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_db ,_bbf :=cmap .BytesToCharcodes (data );if !_bbf {_ge .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;};_acf :=make ([]string ,len (_db ));var _egd []CharCode ;for _ccb ,_eee :=range _db {_daf ,_gde :=cmap ._dg [_eee ];if !_gde {_egd =append (_egd ,_eee );_daf =MissingCodeString ;};_acf [_ccb ]=_daf ;};_bbb :=_gge .Join (_acf ,"");if len (_egd )> 0{_ge .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 ),_db ,len (_egd ),_egd ,_bbb ,cmap );
};return _bbb ,len (_egd );};func (_dcab *cMapParser )parseArray ()(cmapArray ,error ){_cgc :=cmapArray {};_cgc .Array =[]cmapObject {};_dcab ._dbfg .ReadByte ();for {_dcab .skipSpaces ();_becb ,_fcfe :=_dcab ._dbfg .Peek (1);if _fcfe !=nil {return _cgc ,_fcfe ;
};if _becb [0]==']'{_dcab ._dbfg .ReadByte ();break ;};_ebcb ,_fcfe :=_dcab .parseObject ();if _fcfe !=nil {return _cgc ,_fcfe ;};_cgc .Array =append (_cgc .Array ,_ebcb );};return _cgc ,nil ;};type cmapObject interface{};const (_add =100;_gbb ="\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";
_gdg ="\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 (_baa *cMapParser )parseDict ()(cmapDict ,error ){_ge .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_ebcc :=_eadc ();_ccab ,_ :=_baa ._dbfg .ReadByte ();if _ccab !='<'{return _ebcc ,ErrBadCMapDict ;
};_ccab ,_ =_baa ._dbfg .ReadByte ();if _ccab !='<'{return _ebcc ,ErrBadCMapDict ;};for {_baa .skipSpaces ();_bbad ,_abb :=_baa ._dbfg .Peek (2);if _abb !=nil {return _ebcc ,_abb ;};if (_bbad [0]=='>')&&(_bbad [1]=='>'){_baa ._dbfg .ReadByte ();_baa ._dbfg .ReadByte ();
break ;};_fdgb ,_abb :=_baa .parseName ();_ge .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_fdgb .Name );if _abb !=nil {_ge .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",_abb );
return _ebcc ,_abb ;};_baa .skipSpaces ();_adbb ,_abb :=_baa .parseObject ();if _abb !=nil {return _ebcc ,_abb ;};_ebcc .Dict [_fdgb .Name ]=_adbb ;_baa .skipSpaces ();_bbad ,_abb =_baa ._dbfg .Peek (3);if _abb !=nil {return _ebcc ,_abb ;};if string (_bbad )=="\u0064\u0065\u0066"{_baa ._dbfg .Discard (3);
};};return _ebcc ,nil ;};func NewCIDSystemInfo (obj _gc .PdfObject )(_gab CIDSystemInfo ,_ff error ){_dc ,_ed :=_gc .GetDict (obj );if !_ed {return CIDSystemInfo {},_gc .ErrTypeError ;};_ee ,_ed :=_gc .GetStringVal (_dc .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
if !_ed {return CIDSystemInfo {},_gc .ErrTypeError ;};_aa ,_ed :=_gc .GetStringVal (_dc .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_ed {return CIDSystemInfo {},_gc .ErrTypeError ;};_de ,_ed :=_gc .GetIntVal (_dc .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
if !_ed {return CIDSystemInfo {},_gc .ErrTypeError ;};return CIDSystemInfo {Registry :_ee ,Ordering :_aa ,Supplement :_de },nil ;};type cMapParser struct{_dbfg *_d .Reader };func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_bf ,_dcf :=cmap ._gf [cid ];
return _bf ,_dcf ;};func (cmap *CMap )parseBfrange ()error {for {var _fgge CharCode ;_dbe ,_bab :=cmap .parseObject ();if _bab !=nil {if _bab ==_gg .EOF {break ;};return _bab ;};switch _fad :=_dbe .(type ){case cmapOperand :if _fad .Operand ==_cca {return nil ;
};return _ea .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_fgge =_bbd (_fad );default:return _ea .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};var _dfe CharCode ;_dbe ,_bab =cmap .parseObject ();if _bab !=nil {if _bab ==_gg .EOF {break ;};return _bab ;};switch _gga :=_dbe .(type ){case cmapOperand :_ge .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 :_dfe =_bbd (_gga );default:_ge .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_dbe );return ErrBadCMap ;};_dbe ,_bab =cmap .parseObject ();
if _bab !=nil {if _bab ==_gg .EOF {break ;};return _bab ;};switch _dde :=_dbe .(type ){case cmapArray :if len (_dde .Array )!=int (_dfe -_fgge )+1{_ge .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 _caaf :=_fgge ;_caaf <=_dfe ;_caaf ++{_aac :=_dde .Array [_caaf -_fgge ];_gcb ,_fcaf :=_aac .(cmapHexString );if !_fcaf {return _ea .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_cfdb :=_cea (_gcb );cmap ._dg [_caaf ]=string (_cfdb );};case cmapHexString :_efg :=_cea (_dde );_edb :=len (_efg );for _agg :=_fgge ;_agg <=_dfe ;_agg ++{cmap ._dg [_agg ]=string (_efg );if _edb > 0{_efg [_edb -1]++;}else {_ge .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",_agg );
};};default:_ge .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_dbe );return ErrBadCMap ;};};return nil ;};func _dcaa (_edf ,_fab int )int {if _edf < _fab {return _edf ;
};return _fab ;};func (cmap *CMap )toBfData ()string {if len (cmap ._dg )==0{return "";};_eag :=make ([]CharCode ,0,len (cmap ._dg ));for _fbg :=range cmap ._dg {_eag =append (_eag ,_fbg );};_f .Slice (_eag ,func (_fc ,_bcb int )bool {return _eag [_fc ]< _eag [_bcb ]});
var _dcd []charRange ;_eac :=charRange {_eag [0],_eag [0]};_bgg :=cmap ._dg [_eag [0]];for _ ,_fdc :=range _eag [1:]{_caab :=cmap ._dg [_fdc ];if _fdc ==_eac ._gb +1&&_agf (_caab )==_agf (_bgg )+1{_eac ._gb =_fdc ;}else {_dcd =append (_dcd ,_eac );_eac ._ba ,_eac ._gb =_fdc ,_fdc ;
};_bgg =_caab ;};_dcd =append (_dcd ,_eac );var _ade []CharCode ;var _gcg []fbRange ;for _ ,_dce :=range _dcd {if _dce ._ba ==_dce ._gb {_ade =append (_ade ,_dce ._ba );}else {_gcg =append (_gcg ,fbRange {_bc :_dce ._ba ,_eb :_dce ._gb ,_fd :cmap ._dg [_dce ._ba ]});
};};_ge .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 (_dcd ),len (_ade ),len (_gcg ));var _fec []string ;if len (_ade )> 0{_fdg :=(len (_ade )+_add -1)/_add ;
for _eabd :=0;_eabd < _fdg ;_eabd ++{_eccb :=_dcaa (len (_ade )-_eabd *_add ,_add );_fec =append (_fec ,_a .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_eccb ));for _aefg :=0;_aefg < _eccb ;_aefg ++{_edc :=_ade [_eabd *_add +_aefg ];
_gca :=cmap ._dg [_edc ];_fec =append (_fec ,_a .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_edc ,_ebc (_gca )));};_fec =append (_fec ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_gcg )> 0{_adb :=(len (_gcg )+_add -1)/_add ;
for _bed :=0;_bed < _adb ;_bed ++{_cg :=_dcaa (len (_gcg )-_bed *_add ,_add );_fec =append (_fec ,_a .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_cg ));for _bca :=0;_bca < _cg ;_bca ++{_bcag :=_gcg [_bed *_add +_bca ];
_fec =append (_fec ,_a .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_bcag ._bc ,_bcag ._eb ,_ebc (_bcag ._fd )));};_fec =append (_fec ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _gge .Join (_fec ,"\u000a");
};func (cmap *CMap )parseVersion ()error {_acfb :="";_ddf :=false ;for _cd :=0;_cd < 3&&!_ddf ;_cd ++{_ede ,_efc :=cmap .parseObject ();if _efc !=nil {return _efc ;};switch _beda :=_ede .(type ){case cmapOperand :switch _beda .Operand {case "\u0064\u0065\u0066":_ddf =true ;
default:_ge .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0070\u0061\u0072\u0073\u0065\u0056e\u0072\u0073\u0069\u006f\u006e\u003a \u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076",_ede );
return ErrBadCMap ;};case cmapInt :_acfb =_a .Sprintf ("\u0025\u0064",_beda ._agge );case cmapFloat :_acfb =_a .Sprintf ("\u0025\u0066",_beda ._cage );case cmapString :_acfb =_beda .String ;default:_ge .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020p\u0061\u0072\u0073\u0065Ver\u0073io\u006e\u003a\u0020\u0042\u0061\u0064\u0020ty\u0070\u0065\u002e\u0020\u006f\u003d\u0025#\u0076",_ede );
};};cmap ._ac =_acfb ;return nil ;};type cmapFloat struct{_cage float64 };func _bdc (_eeeb cmapHexString )rune {_cbce :=_cea (_eeeb );if _cdc :=len (_cbce );_cdc ==0{_ge .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",_eeeb );
return MissingCodeRune ;};if len (_cbce )> 1{_ge .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",_eeeb ,_cbce );
};return _cbce [0];};func (_bddc *cMapParser )parseName ()(cmapName ,error ){_edd :="";_gbbb :=false ;for {_ega ,_aec :=_bddc ._dbfg .Peek (1);if _aec ==_gg .EOF {break ;};if _aec !=nil {return cmapName {_edd },_aec ;};if !_gbbb {if _ega [0]=='/'{_gbbb =true ;
_bddc ._dbfg .ReadByte ();}else {_ge .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",_ega ,_ega );return cmapName {_edd },_a .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_ega [0]);
};}else {if _gc .IsWhiteSpace (_ega [0]){break ;}else if (_ega [0]=='/')||(_ega [0]=='[')||(_ega [0]=='(')||(_ega [0]==']')||(_ega [0]=='<')||(_ega [0]=='>'){break ;}else if _ega [0]=='#'{_aea ,_fcfg :=_bddc ._dbfg .Peek (3);if _fcfg !=nil {return cmapName {_edd },_fcfg ;
};_bddc ._dbfg .Discard (3);_acg ,_fcfg :=_ga .DecodeString (string (_aea [1:3]));if _fcfg !=nil {return cmapName {_edd },_fcfg ;};_edd +=string (_acg );}else {_fef ,_ :=_bddc ._dbfg .ReadByte ();_edd +=string (_fef );};};};return cmapName {_edd },nil ;
};func (cmap *CMap )parseBfchar ()error {for {_efbf ,_gfcd :=cmap .parseObject ();if _gfcd !=nil {if _gfcd ==_gg .EOF {break ;};return _gfcd ;};var _afb CharCode ;switch _adee :=_efbf .(type ){case cmapOperand :if _adee .Operand ==_efbd {return nil ;};
return _ea .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_afb =_bbd (_adee );default:return _ea .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};_efbf ,_gfcd =cmap .parseObject ();if _gfcd !=nil {if _gfcd ==_gg .EOF {break ;};return _gfcd ;};var _bef []rune ;switch _cgb :=_efbf .(type ){case cmapOperand :if _cgb .Operand ==_efbd {return nil ;};_ge .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",_cgb );
return ErrBadCMap ;case cmapHexString :_bef =_cea (_cgb );case cmapName :_ge .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",_cgb );_bef =[]rune {MissingCodeRune };
default:_ge .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",_efbf );return ErrBadCMap ;};cmap ._dg [_afb ]=string (_bef );};return nil ;};func _agf (_dfb string )rune {_afg :=[]rune (_dfb );
return _afg [len (_afg )-1]};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_dab :=_af (name );if _dab !=nil {return nil ,_dab ;};if cmap ._cc ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_bbe ,_dab :=_af (cmap ._cc );if _dab !=nil {return nil ,_dab ;
};for _gfc ,_ffg :=range _bbe ._ead {if _ ,_cad :=cmap ._ead [_gfc ];!_cad {cmap ._ead [_gfc ]=_ffg ;};};cmap ._gef =append (cmap ._gef ,_bbe ._gef ...);cmap .computeInverseMappings ();return cmap ,nil ;};type CIDSystemInfo struct{Registry string ;Ordering string ;
Supplement int ;};func (cmap *CMap )parseCodespaceRange ()error {for {_cfec ,_bec :=cmap .parseObject ();if _bec !=nil {if _bec ==_gg .EOF {break ;};return _bec ;};_edca ,_bgc :=_cfec .(cmapHexString );if !_bgc {if _bad ,_dfa :=_cfec .(cmapOperand );_dfa {if _bad .Operand ==_becc {return nil ;
};return _ea .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_cfec ,_bec =cmap .parseObject ();if _bec !=nil {if _bec ==_gg .EOF {break ;};return _bec ;};_fdcb ,_bgc :=_cfec .(cmapHexString );if !_bgc {return _ea .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");
};if len (_edca ._bdbe )!=len (_fdcb ._bdbe ){return _ea .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");};_egb :=_bbd (_edca );
_dced :=_bbd (_fdcb );if _dced < _egb {_ge .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",_egb ,_dced );
return ErrBadCMap ;};_age :=_fdcb ._acgd ;_aaec :=Codespace {NumBytes :_age ,Low :_egb ,High :_dced };cmap ._gef =append (cmap ._gef ,_aaec );_ge .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",_egb ,_dced );
};if len (cmap ._gef )==0{_ge .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u0020\u0069\u006e\u0020\u0063ma\u0070\u002e");return ErrBadCMap ;};return nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _gaf ,_gcd :=cmap ._dg [code ];
_gcd {return _gaf ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_gad ,_dff :=cmap ._ead [code ];return _gad ,_dff ;};type fbRange struct{_bc CharCode ;_eb CharCode ;_fd string ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_ge .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 :=_fb (isSimple );cmap .cMapParser =_cbb (data );_faa :=cmap .parse ();if _faa !=nil {return nil ,_faa ;};if len (cmap ._gef )==0{if cmap ._cc !=""{return cmap ,nil ;};_ge .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMap )parseSystemInfo ()error {_ceb :=false ;_caf :=false ;_ccbf :="";_fcf :=false ;_dgcb :=CIDSystemInfo {};for _eea :=0;_eea < 50&&!_fcf ;_eea ++{_gadb ,_dccd :=cmap .parseObject ();
if _dccd !=nil {return _dccd ;};switch _acfe :=_gadb .(type ){case cmapDict :_gda :=_acfe .Dict ;_bff ,_ecf :=_gda ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_ecf {_ge .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_dgf ,_ecf :=_bff .(cmapString );if !_ecf {_ge .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dgcb .Registry =_dgf .String ;
_bff ,_ecf =_gda ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_ecf {_ge .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dgf ,_ecf =_bff .(cmapString );
if !_ecf {_ge .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dgcb .Ordering =_dgf .String ;_gafg ,_ecf :=_gda ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
if !_ecf {_ge .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_fgg ,_ecf :=_gafg .(cmapInt );if !_ecf {_ge .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_dgcb .Supplement =int (_fgg ._agge );_fcf =true ;case cmapOperand :switch _acfe .Operand {case "\u0062\u0065\u0067i\u006e":_ceb =true ;case "\u0065\u006e\u0064":_fcf =true ;case "\u0064\u0065\u0066":_caf =false ;};case cmapName :if _ceb {_ccbf =_acfe .Name ;
_caf =true ;};case cmapString :if _caf {switch _ccbf {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_dgcb .Registry =_acfe .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_dgcb .Ordering =_acfe .String ;};};case cmapInt :if _caf {switch _ccbf {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_dgcb .Supplement =int (_acfe ._agge );
};};};};if !_fcf {_ge .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 ._ef =_dgcb ;return nil ;};func _fb (_fg bool )*CMap {_dca :=16;if _fg {_dca =8;};return &CMap {_fed :_dca ,_ead :make (map[CharCode ]CharCode ),_gf :make (map[CharCode ]CharCode ),_dg :make (map[CharCode ]string ),_ag :make (map[string ]CharCode )};
};func _ebc (_feg string )string {_dcfg :=[]rune (_feg );_gee :=make ([]string ,len (_dcfg ));for _cag ,_gbfb :=range _dcfg {_gee [_cag ]=_a .Sprintf ("\u0025\u0030\u0034\u0078",_gbfb );};return _a .Sprintf ("\u003c\u0025\u0073\u003e",_gge .Join (_gee ,""));
};func (cmap *CMap )NBits ()int {return cmap ._fed };type cmapHexString struct{_acgd int ;_bdbe []byte ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (_fbe *cMapParser )skipSpaces ()(int ,error ){_cffg :=0;
for {_bcg ,_bdd :=_fbe ._dbfg .Peek (1);if _bdd !=nil {return 0,_bdd ;};if _gc .IsWhiteSpace (_bcg [0]){_fbe ._dbfg .ReadByte ();_cffg ++;}else {break ;};};return _cffg ,nil ;};func (cmap *CMap )inCodespace (_gefb CharCode ,_ecg int )bool {for _ ,_be :=range cmap ._gef {if _be .Low <=_gefb &&_gefb <=_be .High &&_ecg ==_be .NumBytes {return true ;
};};return false ;};func (cmap *CMap )Bytes ()[]byte {_ge .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 ._gag )> 0{return cmap ._gag ;};cmap ._gag =[]byte (_gge .Join ([]string {_gbb ,cmap .toBfData (),_gdg },"\u000a"));
return cmap ._gag ;};type cmapDict struct{Dict map[string ]cmapObject ;};func (_da *CIDSystemInfo )String ()string {return _a .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_da .Registry ,_da .Ordering ,_da .Supplement );};func (cmap *CMap )parseCIDRange ()error {for {_ace ,_dge :=cmap .parseObject ();
if _dge !=nil {if _dge ==_gg .EOF {break ;};return _dge ;};_fbcb ,_aga :=_ace .(cmapHexString );if !_aga {if _ddac ,_fdb :=_ace .(cmapOperand );_fdb {if _ddac .Operand ==_fbad {return nil ;};return _ea .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");
};};_daa :=_bbd (_fbcb );_ace ,_dge =cmap .parseObject ();if _dge !=nil {if _dge ==_gg .EOF {break ;};return _dge ;};_deg ,_aga :=_ace .(cmapHexString );if !_aga {return _ea .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 (_fbcb ._bdbe )!=len (_deg ._bdbe ){return _ea .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");};_fba :=_bbd (_deg );
if _daa > _fba {_ge .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",_daa ,_fba );
return ErrBadCMap ;};_ace ,_dge =cmap .parseObject ();if _dge !=nil {if _dge ==_gg .EOF {break ;};return _dge ;};_agfa ,_aga :=_ace .(cmapInt );if !_aga {return _ea .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 _agfa ._agge < 0{return _ea .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_aaae :=_agfa ._agge ;for _fgf :=_daa ;_fgf <=_fba ;_fgf ++{cmap ._ead [_fgf ]=CharCode (_aaae );
_aaae ++;};_ge .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",_daa ,_fba ,_agfa ._agge );};return nil ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_df :=make (map[CharCode ]string ,len (codeToRune ));
for _gec ,_fa :=range codeToRune {_df [_gec ]=string (_fa );};cmap :=&CMap {_dd :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_bb :2,_fed :16,_ef :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_gef :[]Codespace {{Low :0,High :0xffff}},_dg :_df ,_ag :make (map[string ]CharCode ,len (codeToRune )),_ead :make (map[CharCode ]CharCode ,len (codeToRune )),_gf :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )parseName ()error {_gcgg :="";_fcgc :=false ;for _ebb :=0;_ebb < 20&&!_fcgc ;_ebb ++{_cfa ,_dcc :=cmap .parseObject ();if _dcc !=nil {return _dcc ;};switch _adeb :=_cfa .(type ){case cmapOperand :switch _adeb .Operand {case "\u0064\u0065\u0066":_fcgc =true ;
default:_ge .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",_cfa ,_gcgg );
if _gcgg !=""{_gcgg =_a .Sprintf ("\u0025\u0073\u0020%\u0073",_gcgg ,_adeb .Operand );};_ge .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",_gcgg );
};case cmapName :_gcgg =_adeb .Name ;};};if !_fcgc {_ge .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._dd =_gcgg ;return nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_cef ,_efb :=cmap ._ag [s ];
return _cef ,_efb ;};type cmapArray struct{Array []cmapObject ;};func _bbd (_adc cmapHexString )CharCode {_cfeg :=CharCode (0);for _ ,_ecff :=range _adc ._bdbe {_cfeg <<=8;_cfeg |=CharCode (_ecff );};return _cfeg ;};type Codespace struct{NumBytes int ;
Low CharCode ;High CharCode ;};type cmapName struct{Name string ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _cfd []CharCode ;if cmap ._fed ==8{for _ ,_aaf :=range data {_cfd =append (_cfd ,CharCode (_aaf ));};return _cfd ,true ;
};for _aae :=0;_aae < len (data );{_bd ,_bg ,_eab :=cmap .matchCode (data [_aae :]);if !_eab {_ge .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",_aae ,data ,string (data ));
return _cfd ,false ;};_cfd =append (_cfd ,_bd );_aae +=_bg ;};return _cfd ,true ;};func (cmap *CMap )computeInverseMappings (){for _ged ,_gdb :=range cmap ._ead {if _ec ,_cf :=cmap ._gf [_gdb ];!_cf ||(_cf &&_ec > _ged ){cmap ._gf [_gdb ]=_ged ;};};for _cff ,_efd :=range cmap ._dg {if _gfb ,_eg :=cmap ._ag [_efd ];
!_eg ||(_eg &&_gfb > _cff ){cmap ._ag [_efd ]=_cff ;};};_f .Slice (cmap ._gef ,func (_ebe ,_egf int )bool {return cmap ._gef [_ebe ].Low < cmap ._gef [_egf ].Low });};func (_facf *cMapParser )parseString ()(cmapString ,error ){_facf ._dbfg .ReadByte ();
_fega :=_c .Buffer {};_dbg :=1;for {_faaf ,_aab :=_facf ._dbfg .Peek (1);if _aab !=nil {return cmapString {_fega .String ()},_aab ;};if _faaf [0]=='\\'{_facf ._dbfg .ReadByte ();_dfcd ,_fdbc :=_facf ._dbfg .ReadByte ();if _fdbc !=nil {return cmapString {_fega .String ()},_fdbc ;
};if _gc .IsOctalDigit (_dfcd ){_ebeb ,_dcee :=_facf ._dbfg .Peek (2);if _dcee !=nil {return cmapString {_fega .String ()},_dcee ;};var _ebf []byte ;_ebf =append (_ebf ,_dfcd );for _ ,_cbf :=range _ebeb {if _gc .IsOctalDigit (_cbf ){_ebf =append (_ebf ,_cbf );
}else {break ;};};_facf ._dbfg .Discard (len (_ebf )-1);_ge .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_ebf );_caag ,_dcee :=_b .ParseUint (string (_ebf ),8,32);if _dcee !=nil {return cmapString {_fega .String ()},_dcee ;
};_fega .WriteByte (byte (_caag ));continue ;};switch _dfcd {case 'n':_fega .WriteByte ('\n');case 'r':_fega .WriteByte ('\r');case 't':_fega .WriteByte ('\t');case 'b':_fega .WriteByte ('\b');case 'f':_fega .WriteByte ('\f');case '(':_fega .WriteByte ('(');
case ')':_fega .WriteByte (')');case '\\':_fega .WriteByte ('\\');};continue ;}else if _faaf [0]=='('{_dbg ++;}else if _faaf [0]==')'{_dbg --;if _dbg ==0{_facf ._dbfg .ReadByte ();break ;};};_cgbg ,_ :=_facf ._dbfg .ReadByte ();_fega .WriteByte (_cgbg );
};return cmapString {_fega .String ()},nil ;};func (cmap *CMap )parse ()error {var _bbgd cmapObject ;for {_ecgc ,_fegg :=cmap .parseObject ();if _fegg !=nil {if _fegg ==_gg .EOF {break ;};_ge .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_fegg );
return _fegg ;};switch _eabg :=_ecgc .(type ){case cmapOperand :_aaa :=_eabg ;switch _aaa .Operand {case _adg :_gcde :=cmap .parseCodespaceRange ();if _gcde !=nil {return _gcde ;};case _abd :_gfg :=cmap .parseCIDRange ();if _gfg !=nil {return _gfg ;};case _ffc :_fcg :=cmap .parseBfchar ();
if _fcg !=nil {return _fcg ;};case _gcbc :_ece :=cmap .parseBfrange ();if _ece !=nil {return _ece ;};case _bgb :if _bbgd ==nil {_ge .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 ;};_cfdg ,_egg :=_bbgd .(cmapName );if !_egg {_ge .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",_bbgd );
return ErrBadCMap ;};cmap ._cc =_cfdg .Name ;case _eca :_dcde :=cmap .parseSystemInfo ();if _dcde !=nil {return _dcde ;};};case cmapName :_aaed :=_eabg ;switch _aaed .Name {case _eca :_fbb :=cmap .parseSystemInfo ();if _fbb !=nil {return _fbb ;};case _fce :_ab :=cmap .parseName ();
if _ab !=nil {return _ab ;};case _bgca :_gaa :=cmap .parseType ();if _gaa !=nil {return _gaa ;};case _efa :_ecb :=cmap .parseVersion ();if _ecb !=nil {return _ecb ;};};};_bbgd =_ecgc ;};return nil ;};func (cmap *CMap )Name ()string {return cmap ._dd };
const (_ae =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func _af (_ce string )(*CMap ,error ){_caa ,_fea :=_fe .Asset (_ce );if _fea !=nil {return nil ,_fea ;};return LoadCmapFromDataCID (_caa );};func (cmap *CMap )Stream ()(*_gc .PdfObjectStream ,error ){if cmap ._bba !=nil {return cmap ._bba ,nil ;
};_cfb ,_gbf :=_gc .MakeStream (cmap .Bytes (),_gc .NewFlateEncoder ());if _gbf !=nil {return nil ,_gbf ;};cmap ._bba =_cfb ;return cmap ._bba ,nil ;};type cmapString struct{String string ;};func _cbb (_bdb []byte )*cMapParser {_egda :=cMapParser {};_bbec :=_c .NewBuffer (_bdb );
_egda ._dbfg =_d .NewReader (_bbec );return &_egda ;};type cmapInt struct{_agge int64 };const (_eca ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_cba ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_eedd ="\u0065n\u0064\u0063\u006d\u0061\u0070";
_adg ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_becc ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_ffc ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";
_efbd ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_gcbc ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_cca ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_abd ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";
_fbad ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bgb ="\u0075s\u0065\u0063\u006d\u0061\u0070";_fce ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_bgca ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_efa ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";
);func (_beff *cMapParser )parseNumber ()(cmapObject ,error ){_gcdf ,_dgea :=_gc .ParseNumber (_beff ._dbfg );if _dgea !=nil {return nil ,_dgea ;};switch _ccd :=_gcdf .(type ){case *_gc .PdfObjectFloat :return cmapFloat {float64 (*_ccd )},nil ;case *_gc .PdfObjectInteger :return cmapInt {int64 (*_ccd )},nil ;
};return nil ,_a .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_gcdf );};func _eadc ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (_eaca *cMapParser )parseObject ()(cmapObject ,error ){_eaca .skipSpaces ();
for {_gecd ,_ggb :=_eaca ._dbfg .Peek (2);if _ggb !=nil {return nil ,_ggb ;};if _gecd [0]=='%'{_eaca .parseComment ();_eaca .skipSpaces ();continue ;}else if _gecd [0]=='/'{_abg ,_abf :=_eaca .parseName ();return _abg ,_abf ;}else if _gecd [0]=='('{_cfff ,_gfd :=_eaca .parseString ();
return _cfff ,_gfd ;}else if _gecd [0]=='['{_aad ,_gfce :=_eaca .parseArray ();return _aad ,_gfce ;}else if (_gecd [0]=='<')&&(_gecd [1]=='<'){_fcef ,_fdf :=_eaca .parseDict ();return _fcef ,_fdf ;}else if _gecd [0]=='<'{_cbg ,_agc :=_eaca .parseHexString ();
return _cbg ,_agc ;}else if _gc .IsDecimalDigit (_gecd [0])||(_gecd [0]=='-'&&_gc .IsDecimalDigit (_gecd [1])){_aeb ,_gdc :=_eaca .parseNumber ();if _gdc !=nil {return nil ,_gdc ;};return _aeb ,nil ;}else {_geg ,_cde :=_eaca .parseOperand ();if _cde !=nil {return nil ,_cde ;
};return _geg ,nil ;};};};type CharCode uint32 ;func _cea (_ggd cmapHexString )[]rune {if len (_ggd ._bdbe )==1{return []rune {rune (_ggd ._bdbe [0])};};_cga :=_ggd ._bdbe ;if len (_cga )%2!=0{_cga =append (_cga ,0);_ge .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",_ggd ,_cga );
};_fdcc :=len (_cga )>>1;_ebcg :=make ([]uint16 ,_fdcc );for _cfc :=0;_cfc < _fdcc ;_cfc ++{_ebcg [_cfc ]=uint16 (_cga [_cfc <<1])<<8+uint16 (_cga [_cfc <<1+1]);};_bbfa :=_g .Decode (_ebcg );return _bbfa ;};func (cmap *CMap )parseType ()error {_fdce :=0;
_eed :=false ;for _gdbd :=0;_gdbd < 3&&!_eed ;_gdbd ++{_bee ,_bae :=cmap .parseObject ();if _bae !=nil {return _bae ;};switch _ecec :=_bee .(type ){case cmapOperand :switch _ecec .Operand {case "\u0064\u0065\u0066":_eed =true ;default:_ge .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",_bee );
return ErrBadCMap ;};case cmapInt :_fdce =int (_ecec ._agge );};};cmap ._bb =_fdce ;return nil ;};func (cmap *CMap )matchCode (_bde []byte )(_cb CharCode ,_dgc int ,_dga bool ){for _aca :=0;_aca < _ae ;_aca ++{if _aca < len (_bde ){_cb =_cb <<8|CharCode (_bde [_aca ]);
_dgc ++;};_dga =cmap .inCodespace (_cb ,_aca +1);if _dga {return _cb ,_dgc ,true ;};};_ge .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",_bde ,string (_bde ),cmap );
return 0,0,false ;};type CMap struct{*cMapParser ;_dd string ;_fed int ;_bb int ;_ac string ;_cc string ;_ef CIDSystemInfo ;_gef []Codespace ;_ead map[CharCode ]CharCode ;_gf map[CharCode ]CharCode ;_dg map[CharCode ]string ;_ag map[string ]CharCode ;_gag []byte ;
_bba *_gc .PdfObjectStream ;};type cmapOperand struct{Operand string ;};func (cmap *CMap )Type ()int {return cmap ._bb };type charRange struct{_ba CharCode ;_gb CharCode ;};func (_cffb *cMapParser )parseOperand ()(cmapOperand ,error ){_gce :=cmapOperand {};
_dae :=_c .Buffer {};for {_gfa ,_beca :=_cffb ._dbfg .Peek (1);if _beca !=nil {if _beca ==_gg .EOF {break ;};return _gce ,_beca ;};if _gc .IsDelimiter (_gfa [0]){break ;};if _gc .IsWhiteSpace (_gfa [0]){break ;};_cfdf ,_ :=_cffb ._dbfg .ReadByte ();_dae .WriteByte (_cfdf );
};if _dae .Len ()==0{return _gce ,_a .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_gce .Operand =_dae .String ();return _gce ,nil ;};