unipdf/internal/cmap/cmap.go

141 lines
41 KiB
Go
Raw Normal View History

//
2020-08-27 21:45:09 +00:00
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
2023-09-07 17:40:17 +00:00
package cmap ;import (_a "bufio";_g "bytes";_dc "encoding/hex";_c "errors";_f "fmt";_ec "github.com/unidoc/unipdf/v3/common";_cg "github.com/unidoc/unipdf/v3/core";_cb "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_b "io";_dd "sort";_db "strconv";
_bg "strings";_e "unicode/utf16";);type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_fde ,_ef :=cmap ._cf [s ];return _fde ,_ef };func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _bde ,_ddf :=cmap ._gcg [code ];
_ddf {return _bde ,true ;};return MissingCodeString ,false ;};type cMapParser struct{_gfade *_a .Reader };func _cda (_fdeg cmapHexString )rune {_agd :=_abc (_fdeg );if _ebfc :=len (_agd );_ebfc ==0{_ec .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",_fdeg );
return MissingCodeRune ;};if len (_agd )> 1{_ec .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",_fdeg ,_agd );
};return _agd [0];};func (cmap *CMap )parseType ()error {_gced :=0;_fbcg :=false ;for _edf :=0;_edf < 3&&!_fbcg ;_edf ++{_bffg ,_feea :=cmap .parseObject ();if _feea !=nil {return _feea ;};switch _acbg :=_bffg .(type ){case cmapOperand :switch _acbg .Operand {case "\u0064\u0065\u0066":_fbcg =true ;
default:_ec .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",_bffg );return ErrBadCMap ;};case cmapInt :_gced =int (_acbg ._cccd );
};};cmap ._ce =_gced ;return nil ;};type cmapOperand struct{Operand string ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_fac ,_fgg :=cmap .BytesToCharcodes (data );if !_fgg {_ec .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;};_baa :=make ([]string ,len (_fac ));var _feb []CharCode ;for _gg ,_bge :=range _fac {_age ,_gcgd :=cmap ._gcg [_bge ];if !_gcgd {_feb =append (_feb ,_bge );_age =MissingCodeString ;};_baa [_gg ]=_age ;};_fdd :=_bg .Join (_baa ,"");if len (_feb )> 0{_ec .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 ),_fac ,len (_feb ),_feb ,_fdd ,cmap );
};return _fdd ,len (_feb );};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (cmap *CMap )computeInverseMappings (){for _aae ,_bad :=range cmap ._be {if _beg ,_cbg :=cmap ._dg [_bad ];!_cbg ||(_cbg &&_beg > _aae ){cmap ._dg [_bad ]=_aae ;
};};for _eab ,_aaea :=range cmap ._gcg {if _fbg ,_aag :=cmap ._cf [_aaea ];!_aag ||(_aag &&_fbg > _eab ){cmap ._cf [_aaea ]=_eab ;};};_dd .Slice (cmap ._gc ,func (_eaf ,_dbb int )bool {return cmap ._gc [_eaf ].Low < cmap ._gc [_dbb ].Low });};func (_gedc *cMapParser )parseComment ()(string ,error ){var _fbf _g .Buffer ;
_ ,_ffb :=_gedc .skipSpaces ();if _ffb !=nil {return _fbf .String (),_ffb ;};_dfdc :=true ;for {_gfada ,_aga :=_gedc ._gfade .Peek (1);if _aga !=nil {_ec .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_aga );
return _fbf .String (),_aga ;};if _dfdc &&_gfada [0]!='%'{return _fbf .String (),ErrBadCMapComment ;};_dfdc =false ;if (_gfada [0]!='\r')&&(_gfada [0]!='\n'){_ffd ,_ :=_gedc ._gfade .ReadByte ();_fbf .WriteByte (_ffd );}else {break ;};};return _fbf .String (),nil ;
};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_fcd ,_afd :=cmap ._dg [cid ];return _fcd ,_afd ;};func (_bfc *CIDSystemInfo )String ()string {return _f .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_bfc .Registry ,_bfc .Ordering ,_bfc .Supplement );
};const (_fcc ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_efe ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_cdcc ="\u0065n\u0064\u0063\u006d\u0061\u0070";_agf ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";
_begc ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_cbgg ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_febd ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_bab ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_bccf ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_cgb ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cedd ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_gbd ="\u0075s\u0065\u0063\u006d\u0061\u0070";
_eed ="\u0057\u004d\u006fd\u0065";_eaad ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_fcda ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_fbcc ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func _edg (_gda []byte )*cMapParser {_cge :=cMapParser {};
_faaeg :=_g .NewBuffer (_gda );_cge ._gfade =_a .NewReader (_faaeg );return &_cge ;};func (cmap *CMap )parseSystemInfo ()error {_bgd :=false ;_dgd :=false ;_gfe :="";_fbgac :=false ;_aec :=CIDSystemInfo {};for _cgcf :=0;_cgcf < 50&&!_fbgac ;_cgcf ++{_ffc ,_cacf :=cmap .parseObject ();
if _cacf !=nil {return _cacf ;};switch _afe :=_ffc .(type ){case cmapDict :_egc :=_afe .Dict ;_gagg ,_ggdf :=_egc ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_ggdf {_ec .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_ebf ,_ggdf :=_gagg .(cmapString );if !_ggdf {_ec .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_aec .Registry =_ebf .String ;
_gagg ,_ggdf =_egc ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_ggdf {_ec .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ebf ,_ggdf =_gagg .(cmapString );
if !_ggdf {_ec .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_aec .Ordering =_ebf .String ;_cgf ,_ggdf :=_egc ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
if !_ggdf {_ec .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_egec ,_ggdf :=_cgf .(cmapInt );if !_ggdf {_ec .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_aec .Supplement =int (_egec ._cccd );_fbgac =true ;case cmapOperand :switch _afe .Operand {case "\u0062\u0065\u0067i\u006e":_bgd =true ;case "\u0065\u006e\u0064":_fbgac =true ;case "\u0064\u0065\u0066":_dgd =false ;};case cmapName :if _bgd {_gfe =_afe .Name ;
_dgd =true ;};case cmapString :if _dgd {switch _gfe {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_aec .Registry =_afe .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_aec .Ordering =_afe .String ;};};case cmapInt :if _dgd {switch _gfe {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_aec .Supplement =int (_afe ._cccd );
};};};};if !_fbgac {_ec .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 ._fd =_aec ;return nil ;};func _gf (_eb bool )*CMap {_acb :=16;if _eb {_acb =8;};return &CMap {_bd :_acb ,_be :make (map[CharCode ]CharCode ),_dg :make (map[CharCode ]CharCode ),_gcg :make (map[CharCode ]string ),_cf :make (map[string ]CharCode )};
};func (cmap *CMap )Name ()string {return cmap ._fa };func (cmap *CMap )parseCodespaceRange ()error {for {_cab ,_ccb :=cmap .parseObject ();if _ccb !=nil {if _ccb ==_b .EOF {break ;};return _ccb ;};_bdb ,_cfe :=_cab .(cmapHexString );if !_cfe {if _gdc ,_gad :=_cab .(cmapOperand );
_gad {if _gdc .Operand ==_begc {return nil ;};return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_cab ,_ccb =cmap .parseObject ();if _ccb !=nil {if _ccb ==_b .EOF {break ;};return _ccb ;};_ced ,_cfe :=_cab .(cmapHexString );
if !_cfe {return _c .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_bdb ._add )!=len (_ced ._add ){return _c .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");
};_dae :=_aabb (_bdb );_dgc :=_aabb (_ced );if _dgc < _dae {_ec .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",_dae ,_dgc );
return ErrBadCMap ;};_geb :=_ced ._cbc ;_dba :=Codespace {NumBytes :_geb ,Low :_dae ,High :_dgc };cmap ._gc =append (cmap ._gc ,_dba );_ec .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",_dae ,_dgc );
};if len (cmap ._gc )==0{_ec .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 ;};const (_ffa =100;
_aabg ="\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";
_cad ="\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 )toBfData ()string {if len (cmap ._gcg )==0{return "";};_fff :=make ([]CharCode ,0,len (cmap ._gcg ));for _gce :=range cmap ._gcg {_fff =append (_fff ,_gce );};_dd .Slice (_fff ,func (_adg ,_cbga int )bool {return _fff [_adg ]< _fff [_cbga ]});
var _aab []charRange ;_efc :=charRange {_fff [0],_fff [0]};_cbgc :=cmap ._gcg [_fff [0]];for _ ,_cc :=range _fff [1:]{_fbe :=cmap ._gcg [_cc ];if _cc ==_efc ._ea +1&&_bfd (_fbe )==_bfd (_cbgc )+1{_efc ._ea =_cc ;}else {_aab =append (_aab ,_efc );_efc ._fc ,_efc ._ea =_cc ,_cc ;
};_cbgc =_fbe ;};_aab =append (_aab ,_efc );var _gfad []CharCode ;var _faae []fbRange ;for _ ,_fbeg :=range _aab {if _fbeg ._fc ==_fbeg ._ea {_gfad =append (_gfad ,_fbeg ._fc );}else {_faae =append (_faae ,fbRange {_da :_fbeg ._fc ,_ba :_fbeg ._ea ,_ad :cmap ._gcg [_fbeg ._fc ]});
};};_ec .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 (_aab ),len (_gfad ),len (_faae ));var _ae []string ;if len (_gfad )> 0{_dbgc :=(len (_gfad )+_ffa -1)/_ffa ;
for _eeb :=0;_eeb < _dbgc ;_eeb ++{_cdg :=_gac (len (_gfad )-_eeb *_ffa ,_ffa );_ae =append (_ae ,_f .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_cdg ));for _ggf :=0;_ggf < _cdg ;_ggf ++{_bcb :=_gfad [_eeb *_ffa +_ggf ];
_bfg :=cmap ._gcg [_bcb ];_ae =append (_ae ,_f .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_bcb ,_geg (_bfg )));};_ae =append (_ae ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_faae )> 0{_ddg :=(len (_faae )+_ffa -1)/_ffa ;
for _bdfg :=0;_bdfg < _ddg ;_bdfg ++{_dce :=_gac (len (_faae )-_bdfg *_ffa ,_ffa );_ae =append (_ae ,_f .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_dce ));for _bcc :=0;_bcc < _dce ;_bcc ++{_baf :=_faae [_bdfg *_ffa +_bcc ];
_ae =append (_ae ,_f .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_baf ._da ,_baf ._ba ,_geg (_baf ._ad )));};_ae =append (_ae ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _bg .Join (_ae ,"\u000a");
};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _ecb []CharCode ;if cmap ._bd ==8{for _ ,_ege :=range data {_ecb =append (_ecb ,CharCode (_ege ));};return _ecb ,true ;};for _cfc :=0;_cfc < len (data );{_ecgg ,_fgb ,_dbc :=cmap .matchCode (data [_cfc :]);
if !_dbc {_ec .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",_cfc ,data ,string (data ));
return _ecb ,false ;};_ecb =append (_ecb ,_ecgg );_cfc +=_fgb ;};return _ecb ,true ;};func (_ffac *cMapParser )parseName ()(cmapName ,error ){_bgdb :="";_afg :=false ;for {_dgf ,_bbde :=_ffac ._gfade .Peek (1);if _bbde ==_b .EOF {break ;};if _bbde !=nil {return cmapName {_bgdb },_bbde ;
};if !_afg {if _dgf [0]=='/'{_afg =true ;_ffac ._gfade .ReadByte ();}else {_ec .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",_dgf ,_dgf );
return cmapName {_bgdb },_f .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_dgf [0]);};}else {if _cg .IsWhiteSpace (_dgf [0]){break ;}else if (_dgf [0]=='/')||(_dgf [0]=='[')||(_dgf [0]=='(')||(_dgf [0]==']')||(_dgf [0]=='<')||(_dgf [0]=='>'){break ;
}else if _dgf [0]=='#'{_dbd ,_dgg :=_ffac ._gfade .Peek (3);if _dgg !=nil {return cmapName {_bgdb },_dgg ;};_ffac ._gfade .Discard (3);_bce ,_dgg :=_dc .DecodeString (string (_dbd [1:3]));if _dgg !=nil {return cmapName {_bgdb },_dgg ;};_bgdb +=string (_bce );
}else {_dbag ,_ :=_ffac ._gfade .ReadByte ();_bgdb +=string (_dbag );};};};return cmapName {_bgdb },nil ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._fd };func (cmap *CMap )Type ()int {return cmap ._ce };func NewCIDSystemInfo (obj _cg .PdfObject )(_fb CIDSystemInfo ,_adb error ){_dac ,_ca :=_cg .GetDict (obj );
if !_ca {return CIDSystemInfo {},_cg .ErrTypeError ;};_df ,_ca :=_cg .GetStringVal (_dac .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_ca {return CIDSystemInfo {},_cg .ErrTypeError ;};_bf ,_ca :=_cg .GetStringVal (_dac .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));
if !_ca {return CIDSystemInfo {},_cg .ErrTypeError ;};_dbe ,_ca :=_cg .GetIntVal (_dac .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_ca {return CIDSystemInfo {},_cg .ErrTypeError ;};return CIDSystemInfo {Registry :_df ,Ordering :_bf ,Supplement :_dbe },nil ;
};func (_fad *cMapParser )parseNumber ()(cmapObject ,error ){_abe ,_abf :=_cg .ParseNumber (_fad ._gfade );if _abf !=nil {return nil ,_abf ;};switch _ffcd :=_abe .(type ){case *_cg .PdfObjectFloat :return cmapFloat {float64 (*_ffcd )},nil ;case *_cg .PdfObjectInteger :return cmapInt {int64 (*_ffcd )},nil ;
};return nil ,_f .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_abe );};type cmapInt struct{_cccd int64 };type Codespace struct{NumBytes int ;Low CharCode ;
High CharCode ;};func (_gba *cMapParser )parseObject ()(cmapObject ,error ){_gba .skipSpaces ();for {_gfeb ,_ffe :=_gba ._gfade .Peek (2);if _ffe !=nil {return nil ,_ffe ;};if _gfeb [0]=='%'{_gba .parseComment ();_gba .skipSpaces ();continue ;}else if _gfeb [0]=='/'{_abg ,_def :=_gba .parseName ();
return _abg ,_def ;}else if _gfeb [0]=='('{_debe ,_gcag :=_gba .parseString ();return _debe ,_gcag ;}else if _gfeb [0]=='['{_dgba ,_bbd :=_gba .parseArray ();return _dgba ,_bbd ;}else if (_gfeb [0]=='<')&&(_gfeb [1]=='<'){_fcb ,_ffaf :=_gba .parseDict ();
return _fcb ,_ffaf ;}else if _gfeb [0]=='<'{_acce ,_fdb :=_gba .parseHexString ();return _acce ,_fdb ;}else if _cg .IsDecimalDigit (_gfeb [0])||(_gfeb [0]=='-'&&_cg .IsDecimalDigit (_gfeb [1])){_edfb ,_gbec :=_gba .parseNumber ();if _gbec !=nil {return nil ,_gbec ;
};return _edfb ,nil ;}else {_egf ,_ffg :=_gba .parseOperand ();if _ffg !=nil {return nil ,_ffg ;};return _egf ,nil ;};};};type cmapDict struct{Dict map[string ]cmapObject ;};func (cmap *CMap )parse ()error {var _cdc cmapObject ;for {_cce ,_faac :=cmap .parseObject ();
if _faac !=nil {if _faac ==_b .EOF {break ;};_ec .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_faac );return _faac ;};switch _acc :=_cce .(type ){case cmapOperand :_fcdg :=_acc ;
switch _fcdg .Operand {case _agf :_badg :=cmap .parseCodespaceRange ();if _badg !=nil {return _badg ;};case _cgb :_fbb :=cmap .parseCIDRange ();if _fbb !=nil {return _fbb ;};case _cbgg :_fgc :=cmap .parseBfchar ();if _fgc !=nil {return _fgc ;};case _bab :_agg :=cmap .parseBfrange ();
if _agg !=nil {return _agg ;};case _gbd :if _cdc ==nil {_ec .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 ;};_fbbg ,_cga :=_cdc .(cmapName );
if !_cga {_ec .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",_cdc );return ErrBadCMap ;};cmap ._dbf =_fbbg .Name ;
case _fcc :_bdeg :=cmap .parseSystemInfo ();if _bdeg !=nil {return _bdeg ;};};case cmapName :_aaa :=_acc ;switch _aaa .Name {case _fcc :_begd :=cmap .parseSystemInfo ();if _begd !=nil {return _begd ;};case _eaad :_faga :=cmap .parseName ();if _faga !=nil {return _faga ;
};case _fcda :_dgb :=cmap .parseType ();if _dgb !=nil {return _dgb ;};case _fbcc :_bfa :=cmap .parseVersion ();if _bfa !=nil {return _bfa ;};case _eed :if _faac =cmap .parseWMode ();_faac !=nil {return _faac ;};};};_cdc =_cce ;};return nil ;};func (_degg *cMapParser )parseDict ()(cmapDict ,error ){_ec .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_cggff :=_bbf ();_cae ,_ :=_degg ._gfade .ReadByte ();if _cae !='<'{return _cggff ,ErrBadCMapDict ;};_cae ,_ =_degg ._gfade .ReadByte ();if _cae !='<'{return _cggff ,ErrBadCMapDict ;};for {_degg .skipSpaces ();_acbdb ,_gbc :=_degg ._gfade .Peek (2);if _gbc !=nil {return _cggff ,_gbc ;
};if (_acbdb [0]=='>')&&(_acbdb [1]=='>'){_degg ._gfade .ReadByte ();_degg ._gfade .ReadByte ();break ;};_faf ,_gbc :=_degg .parseName ();_ec .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_faf .Name );if _gbc !=nil {_ec .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",_gbc );
return _cggff ,_gbc ;};_degg .skipSpaces ();_dcb ,_gbc :=_degg .parseObject ();if _gbc !=nil {return _cggff ,_gbc ;};_cggff .Dict [_faf .Name ]=_dcb ;_degg .skipSpaces ();_acbdb ,_gbc =_degg ._gfade .Peek (3);if _gbc !=nil {return _cggff ,_gbc ;};if string (_acbdb )=="\u0064\u0065\u0066"{_degg ._gfade .Discard (3);
};};return _cggff ,nil ;};func (cmap *CMap )String ()string {_eafd :=cmap ._fd ;_eee :=[]string {_f .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._bd ),_f .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ce )};if cmap ._dfg !=""{_eee =append (_eee ,_f .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._dfg ));
};if cmap ._dbf !=""{_eee =append (_eee ,_f .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._dbf ));};_eee =append (_eee ,_f .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_eafd .String ()));
if len (cmap ._gc )> 0{_eee =append (_eee ,_f .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._gc )));};if len (cmap ._gcg )> 0{_eee =append (_eee ,_f .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._gcg )));
};return _f .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._fa ,_bg .Join (_eee ,"\u0020"));};func _geg (_ebc string )string {_fdf :=[]rune (_ebc );_ggg :=make ([]string ,len (_fdf ));for _egea ,_fab :=range _fdf {_ggg [_egea ]=_f .Sprintf ("\u0025\u0030\u0034\u0078",_fab );
};return _f .Sprintf ("\u003c\u0025\u0073\u003e",_bg .Join (_ggg ,""));};func (cmap *CMap )parseBfrange ()error {for {var _eag CharCode ;_ceb ,_cdb :=cmap .parseObject ();if _cdb !=nil {if _cdb ==_b .EOF {break ;};return _cdb ;};switch _gge :=_ceb .(type ){case cmapOperand :if _gge .Operand ==_bccf {return nil ;
};return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_eag =_aabb (_gge );default:return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};var _ged CharCode ;_ceb ,_cdb =cmap .parseObject ();if _cdb !=nil {if _cdb ==_b .EOF {break ;};return _cdb ;};switch _cade :=_ceb .(type ){case cmapOperand :_ec .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 :_ged =_aabb (_cade );if _ged > 0xffff{_ged =0xffff;};default:_ec .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ceb );return ErrBadCMap ;
};_ceb ,_cdb =cmap .parseObject ();if _cdb !=nil {if _cdb ==_b .EOF {break ;};return _cdb ;};switch _cgge :=_ceb .(type ){case cmapArray :if len (_cgge .Array )!=int (_ged -_eag )+1{_ec .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 _fabf :=_eag ;_fabf <=_ged ;_fabf ++{_gca :=_cgge .Array [_fabf -_eag ];_dbcf ,_cggf :=_gca .(cmapHexString );if !_cggf {return _c .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_dda :=_abc (_dbcf );cmap ._gcg [_fabf ]=string (_dda );};case cmapHexString :_cdef :=_abc (_cgge );_bgeg :=len (_cdef );for _bcbc :=_eag ;_bcbc <=_ged ;_bcbc ++{cmap ._gcg [_bcbc ]=string (_cdef );if _bgeg > 0{_cdef [_bgeg -1]++;}else {_ec .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",_bcbc );
};if _bcbc ==1<<32-1{break ;};};default:_ec .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ceb );return ErrBadCMap ;};};return nil ;};type charRange struct{_fc CharCode ;
_ea CharCode ;};func (cmap *CMap )parseVersion ()error {_fba :="";_becf :=false ;for _gcc :=0;_gcc < 3&&!_becf ;_gcc ++{_eefd ,_afa :=cmap .parseObject ();if _afa !=nil {return _afa ;};switch _edc :=_eefd .(type ){case cmapOperand :switch _edc .Operand {case "\u0064\u0065\u0066":_becf =true ;
default:_ec .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",_eefd );
return ErrBadCMap ;};case cmapInt :_fba =_f .Sprintf ("\u0025\u0064",_edc ._cccd );case cmapFloat :_fba =_f .Sprintf ("\u0025\u0066",_edc ._dcbd );case cmapString :_fba =_edc .String ;default:_ec .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",_eefd );
};};cmap ._dfg =_fba ;return nil ;};type CharCode uint32 ;var (ErrBadCMap =_c .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_c .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 =_c .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););type cmapName struct{Name string ;};func (_gbbe *cMapParser )parseHexString ()(cmapHexString ,error ){_gbbe ._gfade .ReadByte ();_gbbea :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_cacfe :=_g .Buffer {};for {_gbbe .skipSpaces ();_daca ,_egg :=_gbbe ._gfade .Peek (1);if _egg !=nil {return cmapHexString {},_egg ;};if _daca [0]=='>'{_gbbe ._gfade .ReadByte ();break ;};_eaae ,_ :=_gbbe ._gfade .ReadByte ();if _g .IndexByte (_gbbea ,_eaae )>=0{_cacfe .WriteByte (_eaae );
};};if _cacfe .Len ()%2==1{_ec .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",_cacfe .String ());_cacfe .WriteByte ('0');};
_ddgd :=_cacfe .Len ()/2;_aaag ,_ :=_dc .DecodeString (_cacfe .String ());return cmapHexString {_cbc :_ddgd ,_add :_aaag },nil ;};func (cmap *CMap )inCodespace (_acbc CharCode ,_gae int )bool {for _ ,_acd :=range cmap ._gc {if _acd .Low <=_acbc &&_acbc <=_acd .High &&_gae ==_acd .NumBytes {return true ;
};};return false ;};func (cmap *CMap )matchCode (_bdf []byte )(_ga CharCode ,_bga int ,_gag bool ){for _bgc :=0;_bgc < _ee ;_bgc ++{if _bgc < len (_bdf ){_ga =_ga <<8|CharCode (_bdf [_bgc ]);_bga ++;};_gag =cmap .inCodespace (_ga ,_bgc +1);if _gag {return _ga ,_bga ,true ;
};};_ec .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",_bdf ,string (_bdf ),cmap );
return 0,0,false ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_bff :=make (map[CharCode ]string ,len (codeToRune ));for _fe ,_ag :=range codeToRune {_bff [_fe ]=string (_ag );};cmap :=&CMap {_fa :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ce :2,_bd :16,_fd :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_gc :[]Codespace {{Low :0,High :0xffff}},_gcg :_bff ,_cf :make (map[string ]CharCode ,len (codeToRune )),_be :make (map[CharCode ]CharCode ,len (codeToRune )),_dg :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func _abc (_agfa cmapHexString )[]rune {if len (_agfa ._add )==1{return []rune {rune (_agfa ._add [0])};};_bcef :=_agfa ._add ;if len (_bcef )%2!=0{_bcef =append (_bcef ,0);_ec .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",_agfa ,_bcef );
};_gcd :=len (_bcef )>>1;_cbb :=make ([]uint16 ,_gcd );for _dec :=0;_dec < _gcd ;_dec ++{_cbb [_dec ]=uint16 (_bcef [_dec <<1])<<8+uint16 (_bcef [_dec <<1+1]);};_gcac :=_e .Decode (_cbb );return _gcac ;};func _cd (_cbd string )(*CMap ,error ){_faa ,_aad :=_cb .Asset (_cbd );
if _aad !=nil {return nil ,_aad ;};return LoadCmapFromDataCID (_faa );};func IsPredefinedCMap (name string )bool {return _cb .AssetExists (name )};func _bbf ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_ec .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 :=_gf (isSimple );cmap .cMapParser =_edg (data );_gd :=cmap .parse ();if _gd !=nil {return nil ,_gd ;};if len (cmap ._gc )==0{if cmap ._dbf !=""{return cmap ,nil ;};_ec .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};type fbRange struct{_da CharCode ;_ba CharCode ;_ad string ;};func (_ecd *cMapParser )parseArray ()(cmapArray ,error ){_egda :=cmapArray {};_egda .Array =[]cmapObject {};_ecd ._gfade .ReadByte ();
for {_ecd .skipSpaces ();_aaf ,_bgca :=_ecd ._gfade .Peek (1);if _bgca !=nil {return _egda ,_bgca ;};if _aaf [0]==']'{_ecd ._gfade .ReadByte ();break ;};_gecd ,_bgca :=_ecd .parseObject ();if _bgca !=nil {return _egda ,_bgca ;};_egda .Array =append (_egda .Array ,_gecd );
};return _egda ,nil ;};func (_fcbg *cMapParser )skipSpaces ()(int ,error ){_cbe :=0;for {_cacd ,_cgaa :=_fcbg ._gfade .Peek (1);if _cgaa !=nil {return 0,_cgaa ;};if _cg .IsWhiteSpace (_cacd [0]){_fcbg ._gfade .ReadByte ();_cbe ++;}else {break ;};};return _cbe ,nil ;
};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_fg :=_cd (name );if _fg !=nil {return nil ,_fg ;};if cmap ._dbf ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_cea ,_fg :=_cd (cmap ._dbf );if _fg !=nil {return nil ,_fg ;};for _ff ,_eg :=range _cea ._be {if _ ,_eaa :=cmap ._be [_ff ];
!_eaa {cmap ._be [_ff ]=_eg ;};};cmap ._gc =append (cmap ._gc ,_cea ._gc ...);cmap .computeInverseMappings ();return cmap ,nil ;};const (_ee =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (_ccba *cMapParser )parseString ()(cmapString ,error ){_ccba ._gfade .ReadByte ();
_ffce :=_g .Buffer {};_afb :=1;for {_aggc ,_gfg :=_ccba ._gfade .Peek (1);if _gfg !=nil {return cmapString {_ffce .String ()},_gfg ;};if _aggc [0]=='\\'{_ccba ._gfade .ReadByte ();_bgbg ,_ecbf :=_ccba ._gfade .ReadByte ();if _ecbf !=nil {return cmapString {_ffce .String ()},_ecbf ;
};if _cg .IsOctalDigit (_bgbg ){_gfee ,_eebf :=_ccba ._gfade .Peek (2);if _eebf !=nil {return cmapString {_ffce .String ()},_eebf ;};var _cfg []byte ;_cfg =append (_cfg ,_bgbg );for _ ,_gcf :=range _gfee {if _cg .IsOctalDigit (_gcf ){_cfg =append (_cfg ,_gcf );
}else {break ;};};_ccba ._gfade .Discard (len (_cfg )-1);_ec .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_cfg );_dfcf ,_eebf :=_db .ParseUint (string (_cfg ),8,32);if _eebf !=nil {return cmapString {_ffce .String ()},_eebf ;
};_ffce .WriteByte (byte (_dfcf ));continue ;};switch _bgbg {case 'n':_ffce .WriteByte ('\n');case 'r':_ffce .WriteByte ('\r');case 't':_ffce .WriteByte ('\t');case 'b':_ffce .WriteByte ('\b');case 'f':_ffce .WriteByte ('\f');case '(':_ffce .WriteByte ('(');
case ')':_ffce .WriteByte (')');case '\\':_ffce .WriteByte ('\\');};continue ;}else if _aggc [0]=='('{_afb ++;}else if _aggc [0]==')'{_afb --;if _afb ==0{_ccba ._gfade .ReadByte ();break ;};};_cacde ,_ :=_ccba ._gfade .ReadByte ();_ffce .WriteByte (_cacde );
};return cmapString {_ffce .String ()},nil ;};func (cmap *CMap )parseCIDRange ()error {for {_cde ,_eega :=cmap .parseObject ();if _eega !=nil {if _eega ==_b .EOF {break ;};return _eega ;};_acbd ,_cgg :=_cde .(cmapHexString );if !_cgg {if _feg ,_fbd :=_cde .(cmapOperand );
_fbd {if _feg .Operand ==_cedd {return nil ;};return _c .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");
};};_afdd :=_aabb (_acbd );_cde ,_eega =cmap .parseObject ();if _eega !=nil {if _eega ==_b .EOF {break ;};return _eega ;};_ebcf ,_cgg :=_cde .(cmapHexString );if !_cgg {return _c .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 (_acbd ._add )!=len (_ebcf ._add ){return _c .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");};_dfd :=_aabb (_ebcf );
if _afdd > _dfd {_ec .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",_afdd ,_dfd );
return ErrBadCMap ;};_cde ,_eega =cmap .parseObject ();if _eega !=nil {if _eega ==_b .EOF {break ;};return _eega ;};_gdd ,_cgg :=_cde .(cmapInt );if !_cgg {return _c .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 _gdd ._cccd < 0{return _c .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_caf :=_gdd ._cccd ;for _bdd :=_afdd ;_bdd <=_dfd ;_bdd ++{cmap ._be [_bdd ]=CharCode (_caf );
_caf ++;};_ec .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",_afdd ,_dfd ,_gdd ._cccd );};return nil ;};func (cmap *CMap )NBits ()int {return cmap ._bd };
type integer struct{_caac bool ;_dag int ;};type cmapHexString struct{_cbc int ;_add []byte ;};type cmapString struct{String string ;};func (cmap *CMap )Bytes ()[]byte {_ec .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 ._ac )> 0{return cmap ._ac ;};cmap ._ac =[]byte (_bg .Join ([]string {_aabg ,cmap .toBfData (),_cad },"\u000a"));return cmap ._ac ;};func (cmap *CMap )parseName ()error {_daa :="";_bcbb :=false ;for _fec :=0;_fec < 20&&!_bcbb ;_fec ++{_fee ,_fbga :=cmap .parseObject ();
if _fbga !=nil {return _fbga ;};switch _cac :=_fee .(type ){case cmapOperand :switch _cac .Operand {case "\u0064\u0065\u0066":_bcbb =true ;default:_ec .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",_fee ,_daa );
if _daa !=""{_daa =_f .Sprintf ("\u0025\u0073\u0020%\u0073",_daa ,_cac .Operand );};_ec .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",_daa );
};case cmapName :_daa =_cac .Name ;};};if !_bcbb {_ec .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._fa =_daa ;return nil ;};func (cmap *CMap )parseBfchar ()error {for {_ccg ,_fcg :=cmap .parseObject ();
if _fcg !=nil {if _fcg ==_b .EOF {break ;};return _fcg ;};var _afeb CharCode ;switch _ceaa :=_ccg .(type ){case cmapOperand :if _ceaa .Operand ==_febd {return nil ;};return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_afeb =_aabb (_ceaa );default:return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_ccg ,_fcg =cmap .parseObject ();if _fcg !=nil {if _fcg ==_b .EOF {break ;};return _fcg ;};var _gea []rune ;
switch _bgaf :=_ccg .(type ){case cmapOperand :if _bgaf .Operand ==_febd {return nil ;};_ec .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",_bgaf );
return ErrBadCMap ;case cmapHexString :_gea =_abc (_bgaf );case cmapName :_ec .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",_bgaf );_gea =[]rune {MissingCodeRune };
default:_ec .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",_ccg );return ErrBadCMap ;};cmap ._gcg [_afeb ]=string (_gea );};return nil ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._aa ._dag ,cmap ._aa ._caac };
func _aabb (_ddcc cmapHexString )CharCode {_fed :=CharCode (0);for _ ,_aabc :=range _ddcc ._add {_fed <<=8;_fed |=CharCode (_aabc );};return _fed ;};type cmapArray struct{Array []cmapObject ;};type cmapFloat struct{_dcbd float64 };func (cmap *CMap )parseWMode ()error {var _gbb int ;
_eeea :=false ;for _cfa :=0;_cfa < 3&&!_eeea ;_cfa ++{_cgd ,_fdg :=cmap .parseObject ();if _fdg !=nil {return _fdg ;};switch _fffe :=_cgd .(type ){case cmapOperand :switch _fffe .Operand {case "\u0064\u0065\u0066":_eeea =true ;default:_ec .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",_cgd );
return ErrBadCMap ;};case cmapInt :_gbb =int (_fffe ._cccd );};};cmap ._aa =integer {_caac :true ,_dag :_gbb };return nil ;};func _bfd (_adbe string )rune {_gbe :=[]rune (_adbe );return _gbe [len (_gbe )-1]};type CMap struct{*cMapParser ;_fa string ;_bd int ;
_ce int ;_dfg string ;_dbf string ;_fd CIDSystemInfo ;_gc []Codespace ;_be map[CharCode ]CharCode ;_dg map[CharCode ]CharCode ;_gcg map[CharCode ]string ;_cf map[string ]CharCode ;_ac []byte ;_fca *_cg .PdfObjectStream ;_aa integer ;};func (_dfdb *cMapParser )parseOperand ()(cmapOperand ,error ){_fgce :=cmapOperand {};
_bfe :=_g .Buffer {};for {_bgbb ,_acda :=_dfdb ._gfade .Peek (1);if _acda !=nil {if _acda ==_b .EOF {break ;};return _fgce ,_acda ;};if _cg .IsDelimiter (_bgbb [0]){break ;};if _cg .IsWhiteSpace (_bgbb [0]){break ;};_fbde ,_ :=_dfdb ._gfade .ReadByte ();
_bfe .WriteByte (_fbde );};if _bfe .Len ()==0{return _fgce ,_f .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_fgce .Operand =_bfe .String ();return _fgce ,nil ;
};func _gac (_egfg ,_aef int )int {if _egfg < _aef {return _egfg ;};return _aef ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_af ,_dbg :=cmap ._be [code ];return _af ,_dbg ;};func (cmap *CMap )Stream ()(*_cg .PdfObjectStream ,error ){if cmap ._fca !=nil {return cmap ._fca ,nil ;
};_bc ,_gfa :=_cg .MakeStream (cmap .Bytes (),_cg .NewFlateEncoder ());if _gfa !=nil {return nil ,_gfa ;};cmap ._fca =_bc ;return cmap ._fca ,nil ;};type cmapObject interface{};