unipdf/internal/cmap/cmap.go
2024-05-29 17:04:37 +00:00

139 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 (_ae "bufio";_a "bytes";_g "encoding/hex";_ec "errors";_f "fmt";_b "github.com/unidoc/unipdf/v3/common";_ga "github.com/unidoc/unipdf/v3/core";_ag "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_fa "io";_c "sort";_d "strconv";_dc "strings";
_fe "unicode/utf16";);func (cmap *CMap )String ()string {_efed :=cmap ._bf ;_edc :=[]string {_f .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._aeb ),_f .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._eg )};if cmap ._fc !=""{_edc =append (_edc ,_f .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._fc ));
};if cmap ._fec !=""{_edc =append (_edc ,_f .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._fec ));};_edc =append (_edc ,_f .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_efed .String ()));
if len (cmap ._ge )> 0{_edc =append (_edc ,_f .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._ge )));};if len (cmap ._cc )> 0{_edc =append (_edc ,_f .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._cc )));
};return _f .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ba ,_dc .Join (_edc ,"\u0020"));};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _cf []CharCode ;if cmap ._aeb ==8{for _ ,_cad :=range data {_cf =append (_cf ,CharCode (_cad ));
};return _cf ,true ;};for _bdd :=0;_bdd < len (data );{_deb ,_bb ,_cdf :=cmap .matchCode (data [_bdd :]);if !_cdf {_b .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",_bdd ,data ,string (data ));
return _cf ,false ;};_cf =append (_cf ,_deb );_bdd +=_bb ;};return _cf ,true ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_cag ,_dac :=cmap ._cdg [code ];return _cag ,_dac ;};var (ErrBadCMap =_ec .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");
ErrBadCMapComment =_ec .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 =_ec .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");
);const (_ea =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););type CharCode uint32 ;const (_ggb ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_fbgc ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
_gbb ="\u0065n\u0064\u0063\u006d\u0061\u0070";_gffa ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_gbce ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_egfg ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_eee ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_cde ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_adb ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_dfdb ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_ccea ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_dgfb ="\u0075s\u0065\u0063\u006d\u0061\u0070";_ade ="\u0057\u004d\u006fd\u0065";_dgbf ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_ffd ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_eae ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (_dcgdd *cMapParser )parseHexString ()(cmapHexString ,error ){_dcgdd ._edb .ReadByte ();
_eeg :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_fbad :=_a .Buffer {};for {_dcgdd .skipSpaces ();_adbf ,_adaa :=_dcgdd ._edb .Peek (1);if _adaa !=nil {return cmapHexString {},_adaa ;
};if _adbf [0]=='>'{_dcgdd ._edb .ReadByte ();break ;};_eced ,_ :=_dcgdd ._edb .ReadByte ();if _a .IndexByte (_eeg ,_eced )>=0{_fbad .WriteByte (_eced );};};if _fbad .Len ()%2==1{_b .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",_fbad .String ());
_fbad .WriteByte ('0');};_afgg :=_fbad .Len ()/2;_dfde ,_ :=_g .DecodeString (_fbad .String ());return cmapHexString {_gdge :_afgg ,_ged :_dfde },nil ;};func (cmap *CMap )parseWMode ()error {var _dff int ;_adae :=false ;for _ced :=0;_ced < 3&&!_adae ;_ced ++{_cga ,_ded :=cmap .parseObject ();
if _ded !=nil {return _ded ;};switch _fbdb :=_cga .(type ){case cmapOperand :switch _fbdb .Operand {case "\u0064\u0065\u0066":_adae =true ;default:_b .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",_cga );
return ErrBadCMap ;};case cmapInt :_dff =int (_fbdb ._bcaf );};};cmap ._ed =integer {_ebfa :true ,_gec :_dff };return nil ;};func (cmap *CMap )inCodespace (_ece CharCode ,_ff int )bool {for _ ,_gag :=range cmap ._ge {if _gag .Low <=_ece &&_ece <=_gag .High &&_ff ==_gag .NumBytes {return true ;
};};return false ;};func (_cg *CIDSystemInfo )String ()string {return _f .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_cg .Registry ,_cg .Ordering ,_cg .Supplement );};func (_aaca *cMapParser )parseArray ()(cmapArray ,error ){_bdg :=cmapArray {};
_bdg .Array =[]cmapObject {};_aaca ._edb .ReadByte ();for {_aaca .skipSpaces ();_gdb ,_cgc :=_aaca ._edb .Peek (1);if _cgc !=nil {return _bdg ,_cgc ;};if _gdb [0]==']'{_aaca ._edb .ReadByte ();break ;};_gdgc ,_cgc :=_aaca .parseObject ();if _cgc !=nil {return _bdg ,_cgc ;
};_bdg .Array =append (_bdg .Array ,_gdgc );};return _bdg ,nil ;};func (_afe *cMapParser )parseString ()(cmapString ,error ){_afe ._edb .ReadByte ();_bfac :=_a .Buffer {};_dafb :=1;for {_fedd ,_cbc :=_afe ._edb .Peek (1);if _cbc !=nil {return cmapString {_bfac .String ()},_cbc ;
};if _fedd [0]=='\\'{_afe ._edb .ReadByte ();_abde ,_gbf :=_afe ._edb .ReadByte ();if _gbf !=nil {return cmapString {_bfac .String ()},_gbf ;};if _ga .IsOctalDigit (_abde ){_dege ,_gfbe :=_afe ._edb .Peek (2);if _gfbe !=nil {return cmapString {_bfac .String ()},_gfbe ;
};var _aga []byte ;_aga =append (_aga ,_abde );for _ ,_abcg :=range _dege {if _ga .IsOctalDigit (_abcg ){_aga =append (_aga ,_abcg );}else {break ;};};_afe ._edb .Discard (len (_aga )-1);_b .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_aga );
_eefg ,_gfbe :=_d .ParseUint (string (_aga ),8,32);if _gfbe !=nil {return cmapString {_bfac .String ()},_gfbe ;};_bfac .WriteByte (byte (_eefg ));continue ;};switch _abde {case 'n':_bfac .WriteByte ('\n');case 'r':_bfac .WriteByte ('\r');case 't':_bfac .WriteByte ('\t');
case 'b':_bfac .WriteByte ('\b');case 'f':_bfac .WriteByte ('\f');case '(':_bfac .WriteByte ('(');case ')':_bfac .WriteByte (')');case '\\':_bfac .WriteByte ('\\');};continue ;}else if _fedd [0]=='('{_dafb ++;}else if _fedd [0]==')'{_dafb --;if _dafb ==0{_afe ._edb .ReadByte ();
break ;};};_cdgf ,_ :=_afe ._edb .ReadByte ();_bfac .WriteByte (_cdgf );};return cmapString {_bfac .String ()},nil ;};func (_cff *cMapParser )parseObject ()(cmapObject ,error ){_cff .skipSpaces ();for {_abb ,_deace :=_cff ._edb .Peek (2);if _deace !=nil {return nil ,_deace ;
};if _abb [0]=='%'{_cff .parseComment ();_cff .skipSpaces ();continue ;}else if _abb [0]=='/'{_cfg ,_gga :=_cff .parseName ();return _cfg ,_gga ;}else if _abb [0]=='('{_ecbg ,_ceef :=_cff .parseString ();return _ecbg ,_ceef ;}else if _abb [0]=='['{_cffb ,_edd :=_cff .parseArray ();
return _cffb ,_edd ;}else if (_abb [0]=='<')&&(_abb [1]=='<'){_eeff ,_gfa :=_cff .parseDict ();return _eeff ,_gfa ;}else if _abb [0]=='<'{_cddc ,_daag :=_cff .parseHexString ();return _cddc ,_daag ;}else if _ga .IsDecimalDigit (_abb [0])||(_abb [0]=='-'&&_ga .IsDecimalDigit (_abb [1])){_eac ,_fffg :=_cff .parseNumber ();
if _fffg !=nil {return nil ,_fffg ;};return _eac ,nil ;}else {_ccdb ,_bgdf :=_cff .parseOperand ();if _bgdf !=nil {return nil ,_bgdf ;};return _ccdb ,nil ;};};};func (cmap *CMap )parseVersion ()error {_dacf :="";_gdg :=false ;for _acbe :=0;_acbe < 3&&!_gdg ;
_acbe ++{_dda ,_agg :=cmap .parseObject ();if _agg !=nil {return _agg ;};switch _egb :=_dda .(type ){case cmapOperand :switch _egb .Operand {case "\u0064\u0065\u0066":_gdg =true ;default:_b .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",_dda );
return ErrBadCMap ;};case cmapInt :_dacf =_f .Sprintf ("\u0025\u0064",_egb ._bcaf );case cmapFloat :_dacf =_f .Sprintf ("\u0025\u0066",_egb ._bcf );case cmapString :_dacf =_egb .String ;default:_b .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",_dda );
};};cmap ._fc =_dacf ;return nil ;};func (cmap *CMap )Type ()int {return cmap ._eg };func (cmap *CMap )parseCodespaceRange ()error {for {_daad ,_dbgd :=cmap .parseObject ();if _dbgd !=nil {if _dbgd ==_fa .EOF {break ;};return _dbgd ;};_ccdd ,_ddb :=_daad .(cmapHexString );
if !_ddb {if _bdda ,_bcac :=_daad .(cmapOperand );_bcac {if _bdda .Operand ==_gbce {return nil ;};return _ec .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_daad ,_dbgd =cmap .parseObject ();if _dbgd !=nil {if _dbgd ==_fa .EOF {break ;
};return _dbgd ;};_dbcg ,_ddb :=_daad .(cmapHexString );if !_ddb {return _ec .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_ccdd ._ged )!=len (_dbcg ._ged ){return _ec .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");
};_gcd :=_gaee (_ccdd );_acd :=_gaee (_dbcg );if _acd < _gcd {_b .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",_gcd ,_acd );
return ErrBadCMap ;};_efd :=_dbcg ._gdge ;_cbef :=Codespace {NumBytes :_efd ,Low :_gcd ,High :_acd };cmap ._ge =append (cmap ._ge ,_cbef );_b .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",_gcd ,_acd );
};if len (cmap ._ge )==0{_b .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 )parseCIDRange ()error {for {_dbd ,_cee :=cmap .parseObject ();
if _cee !=nil {if _cee ==_fa .EOF {break ;};return _cee ;};_abc ,_aag :=_dbd .(cmapHexString );if !_aag {if _fbf ,_fcf :=_dbd .(cmapOperand );_fcf {if _fbf .Operand ==_ccea {return nil ;};return _ec .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");
};};_agga :=_gaee (_abc );_dbd ,_cee =cmap .parseObject ();if _cee !=nil {if _cee ==_fa .EOF {break ;};return _cee ;};_fbdfa ,_aag :=_dbd .(cmapHexString );if !_aag {return _ec .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 (_abc ._ged )!=len (_fbdfa ._ged ){return _ec .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");};_eecb :=_gaee (_fbdfa );
if _agga > _eecb {_b .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",_agga ,_eecb );
return ErrBadCMap ;};_dbd ,_cee =cmap .parseObject ();if _cee !=nil {if _cee ==_fa .EOF {break ;};return _cee ;};_fgb ,_aag :=_dbd .(cmapInt );if !_aag {return _ec .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 _fgb ._bcaf < 0{return _ec .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_afa :=_fgb ._bcaf ;for _fbg :=_agga ;_fbg <=_eecb ;_fbg ++{cmap ._cdg [_fbg ]=CharCode (_afa );
_afa ++;};_b .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",_agga ,_eecb ,_fgb ._bcaf );};return nil ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_df :=make (map[CharCode ]string ,len (codeToRune ));
for _fg ,_bfa :=range codeToRune {_df [_fg ]=string (_bfa );};cmap :=&CMap {_ba :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_eg :2,_aeb :16,_bf :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_ge :[]Codespace {{Low :0,High :0xffff}},_cc :_df ,_ac :make (map[string ]CharCode ,len (codeToRune )),_cdg :make (map[CharCode ]CharCode ,len (codeToRune )),_bg :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_acb ,_cac :=cmap ._bg [cid ];return _acb ,_cac ;};type cmapInt struct{_bcaf int64 };type cMapParser struct{_edb *_ae .Reader };func (cmap *CMap )parseBfrange ()error {for {var _acaa CharCode ;
_ffe ,_gfc :=cmap .parseObject ();if _gfc !=nil {if _gfc ==_fa .EOF {break ;};return _gfc ;};switch _bfb :=_ffe .(type ){case cmapOperand :if _bfb .Operand ==_adb {return nil ;};return _ec .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_acaa =_gaee (_bfb );default:return _ec .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _ageg CharCode ;_ffe ,_gfc =cmap .parseObject ();if _gfc !=nil {if _gfc ==_fa .EOF {break ;};return _gfc ;
};switch _fdc :=_ffe .(type ){case cmapOperand :_b .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 :_ageg =_gaee (_fdc );if _ageg > 0xffff{_ageg =0xffff;};default:_b .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ffe );return ErrBadCMap ;};_ffe ,_gfc =cmap .parseObject ();
if _gfc !=nil {if _gfc ==_fa .EOF {break ;};return _gfc ;};switch _gfcc :=_ffe .(type ){case cmapArray :if len (_gfcc .Array )!=int (_ageg -_acaa )+1{_b .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 _dcb :=_acaa ;_dcb <=_ageg ;_dcb ++{_dbe :=_gfcc .Array [_dcb -_acaa ];_dbgf ,_dbde :=_dbe .(cmapHexString );if !_dbde {return _ec .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_cefg :=_bdb (_dbgf );cmap ._cc [_dcb ]=string (_cefg );};case cmapHexString :_gbcg :=_bdb (_gfcc );_cdd :=len (_gbcg );for _gcf :=_acaa ;_gcf <=_ageg ;_gcf ++{cmap ._cc [_gcf ]=string (_gbcg );if _cdd > 0{_gbcg [_cdd -1]++;}else {_b .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",_gcf );
};if _gcf ==1<<32-1{break ;};};default:_b .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ffe );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )Bytes ()[]byte {_b .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 ._da )> 0{return cmap ._da ;};cmap ._da =[]byte (_dc .Join ([]string {_ddf ,cmap .toBfData (),_dfa },"\u000a"));return cmap ._da ;};type CMap struct{*cMapParser ;_ba string ;_aeb int ;_eg int ;_fc string ;_fec string ;_bf CIDSystemInfo ;_ge []Codespace ;
_cdg map[CharCode ]CharCode ;_bg map[CharCode ]CharCode ;_cc map[CharCode ]string ;_ac map[string ]CharCode ;_da []byte ;_ab *_ga .PdfObjectStream ;_ed integer ;};func _dbae (_cec []byte )*cMapParser {_ggg :=cMapParser {};_cddf :=_a .NewBuffer (_cec );
_ggg ._edb =_ae .NewReader (_cddf );return &_ggg ;};func (cmap *CMap )Name ()string {return cmap ._ba };func (cmap *CMap )parse ()error {var _fdf cmapObject ;for {_efee ,_gca :=cmap .parseObject ();if _gca !=nil {if _gca ==_fa .EOF {break ;};_b .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_gca );
return _gca ;};switch _cae :=_efee .(type ){case cmapOperand :_gda :=_cae ;switch _gda .Operand {case _gffa :_aad :=cmap .parseCodespaceRange ();if _aad !=nil {return _aad ;};case _dfdb :_gebc :=cmap .parseCIDRange ();if _gebc !=nil {return _gebc ;};case _egfg :_dcgd :=cmap .parseBfchar ();
if _dcgd !=nil {return _dcgd ;};case _cde :_aef :=cmap .parseBfrange ();if _aef !=nil {return _aef ;};case _dgfb :if _fdf ==nil {_b .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 ;};_dgfc ,_afb :=_fdf .(cmapName );if !_afb {_b .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",_fdf );
return ErrBadCMap ;};cmap ._fec =_dgfc .Name ;case _ggb :_ccf :=cmap .parseSystemInfo ();if _ccf !=nil {return _ccf ;};};case cmapName :_bbd :=_cae ;switch _bbd .Name {case _ggb :_dgfg :=cmap .parseSystemInfo ();if _dgfg !=nil {return _dgfg ;};case _dgbf :_agfe :=cmap .parseName ();
if _agfe !=nil {return _agfe ;};case _ffd :_bce :=cmap .parseType ();if _bce !=nil {return _bce ;};case _eae :_ccd :=cmap .parseVersion ();if _ccd !=nil {return _ccd ;};case _ade :if _gca =cmap .parseWMode ();_gca !=nil {return _gca ;};};};_fdf =_efee ;
};return nil ;};func _geae ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (cmap *CMap )computeInverseMappings (){for _fga ,_baa :=range cmap ._cdg {if _gb ,_fcg :=cmap ._bg [_baa ];!_fcg ||(_fcg &&_gb > _fga ){cmap ._bg [_baa ]=_fga ;
};};for _fgef ,_geb :=range cmap ._cc {if _ce ,_ggf :=cmap ._ac [_geb ];!_ggf ||(_ggf &&_ce > _fgef ){cmap ._ac [_geb ]=_fgef ;};};_c .Slice (cmap ._ge ,func (_aba ,_fcd int )bool {return cmap ._ge [_aba ].Low < cmap ._ge [_fcd ].Low });};func (cmap *CMap )matchCode (_ebc []byte )(_bgc CharCode ,_gfe int ,_bgd bool ){for _fed :=0;
_fed < _ea ;_fed ++{if _fed < len (_ebc ){_bgc =_bgc <<8|CharCode (_ebc [_fed ]);_gfe ++;};_bgd =cmap .inCodespace (_bgc ,_fed +1);if _bgd {return _bgc ,_gfe ,true ;};};_b .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",_ebc ,string (_ebc ),cmap );
return 0,0,false ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_cea ,_age :=cmap .BytesToCharcodes (data );if !_age {_b .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;};_ef :=make ([]string ,len (_cea ));var _fca []CharCode ;for _efe ,_gff :=range _cea {_ead ,_ege :=cmap ._cc [_gff ];if !_ege {_fca =append (_fca ,_gff );_ead =MissingCodeString ;};_ef [_efe ]=_ead ;};_cb :=_dc .Join (_ef ,"");if len (_fca )> 0{_b .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 ),_cea ,len (_fca ),_fca ,_cb ,cmap );
};return _cb ,len (_fca );};type cmapArray struct{Array []cmapObject ;};type cmapString struct{String string ;};func (_fecd *cMapParser )parseComment ()(string ,error ){var _acdd _a .Buffer ;_ ,_gebe :=_fecd .skipSpaces ();if _gebe !=nil {return _acdd .String (),_gebe ;
};_bfbf :=true ;for {_gea ,_afcd :=_fecd ._edb .Peek (1);if _afcd !=nil {_b .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_afcd );return _acdd .String (),_afcd ;};if _bfbf &&_gea [0]!='%'{return _acdd .String (),ErrBadCMapComment ;
};_bfbf =false ;if (_gea [0]!='\r')&&(_gea [0]!='\n'){_afce ,_ :=_fecd ._edb .ReadByte ();_acdd .WriteByte (_afce );}else {break ;};};return _acdd .String (),nil ;};func (cmap *CMap )parseSystemInfo ()error {_cadb :=false ;_cgab :=false ;_afddb :="";_fffe :=false ;
_daa :=CIDSystemInfo {};for _dba :=0;_dba < 50&&!_fffe ;_dba ++{_daf ,_gebb :=cmap .parseObject ();if _gebb !=nil {return _gebb ;};switch _eaa :=_daf .(type ){case cmapDict :_fcdd :=_eaa .Dict ;_ecb ,_gba :=_fcdd ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];
if !_gba {_b .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cba ,_gba :=_ecb .(cmapString );if !_gba {_b .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_daa .Registry =_cba .String ;_ecb ,_gba =_fcdd ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_gba {_b .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_cba ,_gba =_ecb .(cmapString );if !_gba {_b .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_daa .Ordering =_cba .String ;_egf ,_gba :=_fcdd ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
if !_gba {_b .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ceg ,_gba :=_egf .(cmapInt );if !_gba {_b .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_daa .Supplement =int (_ceg ._bcaf );_fffe =true ;case cmapOperand :switch _eaa .Operand {case "\u0062\u0065\u0067i\u006e":_cadb =true ;case "\u0065\u006e\u0064":_fffe =true ;case "\u0064\u0065\u0066":_cgab =false ;};case cmapName :if _cadb {_afddb =_eaa .Name ;
_cgab =true ;};case cmapString :if _cgab {switch _afddb {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_daa .Registry =_eaa .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_daa .Ordering =_eaa .String ;};};case cmapInt :if _cgab {switch _afddb {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_daa .Supplement =int (_eaa ._bcaf );
};};};};if !_fffe {_b .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 ._bf =_daa ;return nil ;};const (_fff =100;_ddf ="\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";
_dfa ="\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 )Stream ()(*_ga .PdfObjectStream ,error ){if cmap ._ab !=nil {return cmap ._ab ,nil ;};_aae ,_afc :=_ga .MakeStream (cmap .Bytes (),_ga .NewFlateEncoder ());if _afc !=nil {return nil ,_afc ;};cmap ._ab =_aae ;return cmap ._ab ,nil ;};
func (cmap *CMap )parseName ()error {_dbc :="";_agbb :=false ;for _dde :=0;_dde < 20&&!_agbb ;_dde ++{_aac ,_afdd :=cmap .parseObject ();if _afdd !=nil {return _afdd ;};switch _bag :=_aac .(type ){case cmapOperand :switch _bag .Operand {case "\u0064\u0065\u0066":_agbb =true ;
default:_b .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",_aac ,_dbc );
if _dbc !=""{_dbc =_f .Sprintf ("\u0025\u0073\u0020%\u0073",_dbc ,_bag .Operand );};_b .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",_dbc );
};case cmapName :_dbc =_bag .Name ;};};if !_agbb {_b .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 =_dbc ;return nil ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._bf };
func _aca (_dbb string )rune {_bea :=[]rune (_dbb );return _bea [len (_bea )-1]};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _fgd ,_aed :=cmap ._cc [code ];
_aed {return _fgd ,true ;};return MissingCodeString ,false ;};type cmapFloat struct{_bcf float64 };func _bff (_efc cmapHexString )rune {_bgec :=_bdb (_efc );if _gcdd :=len (_bgec );_gcdd ==0{_b .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",_efc );
return MissingCodeRune ;};if len (_bgec )> 1{_b .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",_efc ,_bgec );
};return _bgec [0];};type charRange struct{_ca CharCode ;_fb CharCode ;};func (_bge *cMapParser )parseName ()(cmapName ,error ){_deg :="";_acag :=false ;for {_bgcd ,_bfc :=_bge ._edb .Peek (1);if _bfc ==_fa .EOF {break ;};if _bfc !=nil {return cmapName {_deg },_bfc ;
};if !_acag {if _bgcd [0]=='/'{_acag =true ;_bge ._edb .ReadByte ();}else {_b .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",_bgcd ,_bgcd );
return cmapName {_deg },_f .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_bgcd [0]);};}else {if _ga .IsWhiteSpace (_bgcd [0]){break ;}else if (_bgcd [0]=='/')||(_bgcd [0]=='[')||(_bgcd [0]=='(')||(_bgcd [0]==']')||(_bgcd [0]=='<')||(_bgcd [0]=='>'){break ;
}else if _bgcd [0]=='#'{_fgba ,_afg :=_bge ._edb .Peek (3);if _afg !=nil {return cmapName {_deg },_afg ;};_bge ._edb .Discard (3);_ace ,_afg :=_g .DecodeString (string (_fgba [1:3]));if _afg !=nil {return cmapName {_deg },_afg ;};_deg +=string (_ace );
}else {_addb ,_ :=_bge ._edb .ReadByte ();_deg +=string (_addb );};};};return cmapName {_deg },nil ;};type cmapObject interface{};func (cmap *CMap )NBits ()int {return cmap ._aeb };func _gaee (_bged cmapHexString )CharCode {_egbd :=CharCode (0);for _ ,_fbca :=range _bged ._ged {_egbd <<=8;
_egbd |=CharCode (_fbca );};return _egbd ;};func NewCIDSystemInfo (obj _ga .PdfObject )(_fbd CIDSystemInfo ,_ad error ){_db ,_be :=_ga .GetDict (obj );if !_be {return CIDSystemInfo {},_ga .ErrTypeError ;};_cd ,_be :=_ga .GetStringVal (_db .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
if !_be {return CIDSystemInfo {},_ga .ErrTypeError ;};_beb ,_be :=_ga .GetStringVal (_db .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_be {return CIDSystemInfo {},_ga .ErrTypeError ;};_bd ,_be :=_ga .GetIntVal (_db .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
if !_be {return CIDSystemInfo {},_ga .ErrTypeError ;};return CIDSystemInfo {Registry :_cd ,Ordering :_beb ,Supplement :_bd },nil ;};func _dag (_dbg string )(*CMap ,error ){_gg ,_aeg :=_ag .Asset (_dbg );if _aeg !=nil {return nil ,_aeg ;};return LoadCmapFromDataCID (_gg );
};func _dfb (_fd bool )*CMap {_dd :=16;if _fd {_dd =8;};return &CMap {_aeb :_dd ,_cdg :make (map[CharCode ]CharCode ),_bg :make (map[CharCode ]CharCode ),_cc :make (map[CharCode ]string ),_ac :make (map[string ]CharCode )};};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._ed ._gec ,cmap ._ed ._ebfa };
func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_b .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 :=_dfb (isSimple );cmap .cMapParser =_dbae (data );_gd :=cmap .parse ();if _gd !=nil {return nil ,_gd ;};if len (cmap ._ge )==0{if cmap ._fec !=""{return cmap ,nil ;};_b .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 );
};cmap .computeInverseMappings ();return cmap ,nil ;};func (_gbd *cMapParser )parseNumber ()(cmapObject ,error ){_ecbd ,_gcg :=_ga .ParseNumber (_gbd ._edb );if _gcg !=nil {return nil ,_gcg ;};switch _adbb :=_ecbd .(type ){case *_ga .PdfObjectFloat :return cmapFloat {float64 (*_adbb )},nil ;
case *_ga .PdfObjectInteger :return cmapInt {int64 (*_adbb )},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",_ecbd );};type cmapDict struct{Dict map[string ]cmapObject ;
};type integer struct{_ebfa bool ;_gec int ;};func (cmap *CMap )parseBfchar ()error {for {_baae ,_gde :=cmap .parseObject ();if _gde !=nil {if _gde ==_fa .EOF {break ;};return _gde ;};var _fffb CharCode ;switch _dcda :=_baae .(type ){case cmapOperand :if _dcda .Operand ==_eee {return nil ;
};return _ec .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_fffb =_gaee (_dcda );default:return _ec .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};_baae ,_gde =cmap .parseObject ();if _gde !=nil {if _gde ==_fa .EOF {break ;};return _gde ;};var _baad []rune ;switch _fbde :=_baae .(type ){case cmapOperand :if _fbde .Operand ==_eee {return nil ;};_b .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",_fbde );
return ErrBadCMap ;case cmapHexString :_baad =_bdb (_fbde );case cmapName :_b .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",_fbde );_baad =[]rune {MissingCodeRune };
default:_b .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",_baae );return ErrBadCMap ;};cmap ._cc [_fffb ]=string (_baad );};return nil ;};func _ecag (_dea string )string {_fecb :=[]rune (_dea );
_cdgb :=make ([]string ,len (_fecb ));for _ecf ,_bdf :=range _fecb {_cdgb [_ecf ]=_f .Sprintf ("\u0025\u0030\u0034\u0078",_bdf );};return _f .Sprintf ("\u003c\u0025\u0073\u003e",_dc .Join (_cdgb ,""));};func (_cgb *cMapParser )parseDict ()(cmapDict ,error ){_b .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_adac :=_geae ();_ebf ,_ :=_cgb ._edb .ReadByte ();if _ebf !='<'{return _adac ,ErrBadCMapDict ;};_ebf ,_ =_cgb ._edb .ReadByte ();if _ebf !='<'{return _adac ,ErrBadCMapDict ;};for {_cgb .skipSpaces ();_bcb ,_acbc :=_cgb ._edb .Peek (2);if _acbc !=nil {return _adac ,_acbc ;
};if (_bcb [0]=='>')&&(_bcb [1]=='>'){_cgb ._edb .ReadByte ();_cgb ._edb .ReadByte ();break ;};_dbbb ,_acbc :=_cgb .parseName ();_b .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_dbbb .Name );if _acbc !=nil {_b .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",_acbc );
return _adac ,_acbc ;};_cgb .skipSpaces ();_fgac ,_acbc :=_cgb .parseObject ();if _acbc !=nil {return _adac ,_acbc ;};_adac .Dict [_dbbb .Name ]=_fgac ;_cgb .skipSpaces ();_bcb ,_acbc =_cgb ._edb .Peek (3);if _acbc !=nil {return _adac ,_acbc ;};if string (_bcb )=="\u0064\u0065\u0066"{_cgb ._edb .Discard (3);
};};return _adac ,nil ;};func (cmap *CMap )parseType ()error {_bca :=0;_faf :=false ;for _fbae :=0;_fbae < 3&&!_faf ;_fbae ++{_bed ,_ebcb :=cmap .parseObject ();if _ebcb !=nil {return _ebcb ;};switch _gebcc :=_bed .(type ){case cmapOperand :switch _gebcc .Operand {case "\u0064\u0065\u0066":_faf =true ;
default:_b .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",_bed );return ErrBadCMap ;};case cmapInt :_bca =int (_gebcc ._bcaf );
};};cmap ._eg =_bca ;return nil ;};type fbRange struct{_dcg CharCode ;_gf CharCode ;_caf string ;};func (_ffdb *cMapParser )skipSpaces ()(int ,error ){_dffe :=0;for {_cda ,_beac :=_ffdb ._edb .Peek (1);if _beac !=nil {return 0,_beac ;};if _ga .IsWhiteSpace (_cda [0]){_ffdb ._edb .ReadByte ();
_dffe ++;}else {break ;};};return _dffe ,nil ;};type cmapOperand struct{Operand string ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func IsPredefinedCMap (name string )bool {return _ag .AssetExists (name )};
type cmapHexString struct{_gdge int ;_ged []byte ;};func _cdged (_cbf ,_fea int )int {if _cbf < _fea {return _cbf ;};return _fea ;};type cmapName struct{Name string ;};func (cmap *CMap )toBfData ()string {if len (cmap ._cc )==0{return "";};_cdge :=make ([]CharCode ,0,len (cmap ._cc ));
for _gab :=range cmap ._cc {_cdge =append (_cdge ,_gab );};_c .Slice (_cdge ,func (_fbdfe ,_fce int )bool {return _cdge [_fbdfe ]< _cdge [_fce ]});var _agd []charRange ;_dab :=charRange {_cdge [0],_cdge [0]};_cdb :=cmap ._cc [_cdge [0]];for _ ,_ffc :=range _cdge [1:]{_aab :=cmap ._cc [_ffc ];
if _ffc ==_dab ._fb +1&&_aca (_aab )==_aca (_cdb )+1{_dab ._fb =_ffc ;}else {_agd =append (_agd ,_dab );_dab ._ca ,_dab ._fb =_ffc ,_ffc ;};_cdb =_aab ;};_agd =append (_agd ,_dab );var _bda []CharCode ;var _fda []fbRange ;for _ ,_ebb :=range _agd {if _ebb ._ca ==_ebb ._fb {_bda =append (_bda ,_ebb ._ca );
}else {_fda =append (_fda ,fbRange {_dcg :_ebb ._ca ,_gf :_ebb ._fb ,_caf :cmap ._cc [_ebb ._ca ]});};};_b .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 (_agd ),len (_bda ),len (_fda ));
var _bc []string ;if len (_bda )> 0{_eag :=(len (_bda )+_fff -1)/_fff ;for _dgb :=0;_dgb < _eag ;_dgb ++{_gge :=_cdged (len (_bda )-_dgb *_fff ,_fff );_bc =append (_bc ,_f .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_gge ));
for _ecd :=0;_ecd < _gge ;_ecd ++{_cab :=_bda [_dgb *_fff +_ecd ];_afd :=cmap ._cc [_cab ];_bc =append (_bc ,_f .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_cab ,_ecag (_afd )));};_bc =append (_bc ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
};};if len (_fda )> 0{_cca :=(len (_fda )+_fff -1)/_fff ;for _cce :=0;_cce < _cca ;_cce ++{_fgae :=_cdged (len (_fda )-_cce *_fff ,_fff );_bc =append (_bc ,_f .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_fgae ));
for _bfg :=0;_bfg < _fgae ;_bfg ++{_fgeb :=_fda [_cce *_fff +_bfg ];_bc =append (_bc ,_f .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_fgeb ._dcg ,_fgeb ._gf ,_ecag (_fgeb ._caf )));};_bc =append (_bc ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
};};return _dc .Join (_bc ,"\u000a");};func _bdb (_gebd cmapHexString )[]rune {if len (_gebd ._ged )==1{return []rune {rune (_gebd ._ged [0])};};_gbe :=_gebd ._ged ;if len (_gbe )%2!=0{_gbe =append (_gbe ,0);_b .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",_gebd ,_gbe );
};_abg :=len (_gbe )>>1;_dgg :=make ([]uint16 ,_abg );for _gce :=0;_gce < _abg ;_gce ++{_dgg [_gce ]=uint16 (_gbe [_gce <<1])<<8+uint16 (_gbe [_gce <<1+1]);};_geg :=_fe .Decode (_dgg );return _geg ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_eb :=_dag (name );
if _eb !=nil {return nil ,_eb ;};if cmap ._fec ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_fba ,_eb :=_dag (cmap ._fec );if _eb !=nil {return nil ,_eb ;};for _de ,_af :=range _fba ._cdg {if _ ,_fge :=cmap ._cdg [_de ];!_fge {cmap ._cdg [_de ]=_af ;
};};cmap ._ge =append (cmap ._ge ,_fba ._ge ...);cmap .computeInverseMappings ();return cmap ,nil ;};func (_cddb *cMapParser )parseOperand ()(cmapOperand ,error ){_cgd :=cmapOperand {};_dedd :=_a .Buffer {};for {_edbf ,_efg :=_cddb ._edb .Peek (1);if _efg !=nil {if _efg ==_fa .EOF {break ;
};return _cgd ,_efg ;};if _ga .IsDelimiter (_edbf [0]){break ;};if _ga .IsWhiteSpace (_edbf [0]){break ;};_fgbg ,_ :=_cddb ._edb .ReadByte ();_dedd .WriteByte (_fgbg );};if _dedd .Len ()==0{return _cgd ,_f .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_cgd .Operand =_dedd .String ();return _cgd ,nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_ecg ,_dfd :=cmap ._ac [s ];return _ecg ,_dfd ;};