unipdf/internal/cmap/cmap.go
2021-03-13 21:28:23 +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 (_db "bufio";_a "bytes";_f "encoding/hex";_fa "errors";_c "fmt";_ag "github.com/unidoc/unipdf/v3/common";_b "github.com/unidoc/unipdf/v3/core";_e "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_cc "io";_fe "sort";_d "strconv";_gd "strings";
_cg "unicode/utf16";);func (cmap *CMap )computeInverseMappings (){for _dd ,_df :=range cmap ._ef {if _ebb ,_ce :=cmap ._efa [_df ];!_ce ||(_ce &&_ebb > _dd ){cmap ._efa [_df ]=_dd ;};};for _ccb ,_dg :=range cmap ._bd {if _bf ,_eg :=cmap ._cfg [_dg ];!_eg ||(_eg &&_bf > _ccb ){cmap ._cfg [_dg ]=_ccb ;
};};_fe .Slice (cmap ._gdc ,func (_eac ,_dea int )bool {return cmap ._gdc [_eac ].Low < cmap ._gdc [_dea ].Low });};type CMap struct{*cMapParser ;_ff string ;_fd int ;_cb int ;_gb string ;_ecc string ;_ad CIDSystemInfo ;_gdc []Codespace ;_ef map[CharCode ]CharCode ;
_efa map[CharCode ]CharCode ;_bd map[CharCode ]string ;_cfg map[string ]CharCode ;_fb []byte ;_ge *_b .PdfObjectStream ;};func _fgcb (_ade cmapHexString )[]rune {if len (_ade ._cbgf )==1{return []rune {rune (_ade ._cbgf [0])};};_faae :=_ade ._cbgf ;if len (_faae )%2!=0{_faae =append (_faae ,0);
_ag .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",_ade ,_faae );
};_bgdc :=len (_faae )>>1;_cgg :=make ([]uint16 ,_bgdc );for _dbaa :=0;_dbaa < _bgdc ;_dbaa ++{_cgg [_dbaa ]=uint16 (_faae [_dbaa <<1])<<8+uint16 (_faae [_dbaa <<1+1]);};_eee :=_cg .Decode (_cgg );return _eee ;};var (ErrBadCMap =_fa .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");
ErrBadCMapComment =_fa .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 =_fa .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");
);type cmapHexString struct{_cefb int ;_cbgf []byte ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gff ,_afg :=cmap .BytesToCharcodes (data );if !_afg {_ag .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;};_fbb :=make ([]string ,len (_gff ));var _eff []CharCode ;for _cff ,_ed :=range _gff {_ba ,_bdc :=cmap ._bd [_ed ];if !_bdc {_eff =append (_eff ,_ed );_ba =MissingCodeString ;};_fbb [_cff ]=_ba ;};_fda :=_gd .Join (_fbb ,"");if len (_eff )> 0{_ag .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 ),_gff ,len (_eff ),_eff ,_fda ,cmap );
};return _fda ,len (_eff );};type CharCode uint32 ;func (_dbec *cMapParser )parseArray ()(cmapArray ,error ){_gebc :=cmapArray {};_gebc .Array =[]cmapObject {};_dbec ._gbgb .ReadByte ();for {_dbec .skipSpaces ();_bdeb ,_fgdd :=_dbec ._gbgb .Peek (1);if _fgdd !=nil {return _gebc ,_fgdd ;
};if _bdeb [0]==']'{_dbec ._gbgb .ReadByte ();break ;};_acag ,_fgdd :=_dbec .parseObject ();if _fgdd !=nil {return _gebc ,_fgdd ;};_gebc .Array =append (_gebc .Array ,_acag );};return _gebc ,nil ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_cd :=make (map[CharCode ]string ,len (codeToRune ));
for _ee ,_ca :=range codeToRune {_cd [_ee ]=string (_ca );};cmap :=&CMap {_ff :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_cb :2,_fd :16,_ad :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_gdc :[]Codespace {{Low :0,High :0xffff}},_bd :_cd ,_cfg :make (map[string ]CharCode ,len (codeToRune )),_ef :make (map[CharCode ]CharCode ,len (codeToRune )),_efa :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )parseVersion ()error {_ceb :="";_gbcf :=false ;for _cce :=0;_cce < 3&&!_gbcf ;_cce ++{_fdfa ,_fbf :=cmap .parseObject ();if _fbf !=nil {return _fbf ;};switch _fac :=_fdfa .(type ){case cmapOperand :switch _fac .Operand {case "\u0064\u0065\u0066":_gbcf =true ;
default:_ag .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",_fdfa );
return ErrBadCMap ;};case cmapInt :_ceb =_c .Sprintf ("\u0025\u0064",_fac ._cfb );case cmapFloat :_ceb =_c .Sprintf ("\u0025\u0066",_fac ._dbce );case cmapString :_ceb =_fac .String ;default:_ag .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",_fdfa );
};};cmap ._gb =_ceb ;return nil ;};func (cmap *CMap )parse ()error {var _fec cmapObject ;for {_gfd ,_dcg :=cmap .parseObject ();if _dcg !=nil {if _dcg ==_cc .EOF {break ;};_ag .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_dcg );
return _dcg ;};switch _fgc :=_gfd .(type ){case cmapOperand :_caf :=_fgc ;switch _caf .Operand {case _bea :_dcb :=cmap .parseCodespaceRange ();if _dcb !=nil {return _dcb ;};case _aea :_bce :=cmap .parseCIDRange ();if _bce !=nil {return _bce ;};case _daae :_gdd :=cmap .parseBfchar ();
if _gdd !=nil {return _gdd ;};case _fde :_beb :=cmap .parseBfrange ();if _beb !=nil {return _beb ;};case _cbge :if _fec ==nil {_ag .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 ;};_gaa ,_beec :=_fec .(cmapName );if !_beec {_ag .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",_fec );
return ErrBadCMap ;};cmap ._ecc =_gaa .Name ;case _bcd :_daf :=cmap .parseSystemInfo ();if _daf !=nil {return _daf ;};};case cmapName :_bfa :=_fgc ;switch _bfa .Name {case _bcd :_eed :=cmap .parseSystemInfo ();if _eed !=nil {return _eed ;};case _cfgd :_ddag :=cmap .parseName ();
if _ddag !=nil {return _ddag ;};case _gaf :_fdb :=cmap .parseType ();if _fdb !=nil {return _fdb ;};case _bfc :_eegd :=cmap .parseVersion ();if _eegd !=nil {return _eegd ;};};};_fec =_gfd ;};return nil ;};func (cmap *CMap )Bytes ()[]byte {_ag .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 ._fb )> 0{return cmap ._fb ;};cmap ._fb =[]byte (_gd .Join ([]string {_eeg ,cmap .toBfData (),_eegg },"\u000a"));return cmap ._fb ;};func _dcbae (_afgd cmapHexString )rune {_gef :=_fgcb (_afgd );if _ebcfd :=len (_gef );_ebcfd ==0{_ag .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",_afgd );
return MissingCodeRune ;};if len (_gef )> 1{_ag .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",_afgd ,_gef );
};return _gef [0];};func (cmap *CMap )Stream ()(*_b .PdfObjectStream ,error ){if cmap ._ge !=nil {return cmap ._ge ,nil ;};_ede ,_aac :=_b .MakeStream (cmap .Bytes (),_b .NewFlateEncoder ());if _aac !=nil {return nil ,_aac ;};cmap ._ge =_ede ;return cmap ._ge ,nil ;
};type cmapInt struct{_cfb int64 };func _bg (_deb bool )*CMap {_dc :=16;if _deb {_dc =8;};return &CMap {_fd :_dc ,_ef :make (map[CharCode ]CharCode ),_efa :make (map[CharCode ]CharCode ),_bd :make (map[CharCode ]string ),_cfg :make (map[string ]CharCode )};
};func (_bbg *cMapParser )parseNumber ()(cmapObject ,error ){_aga ,_fdbe :=_b .ParseNumber (_bbg ._gbgb );if _fdbe !=nil {return nil ,_fdbe ;};switch _efag :=_aga .(type ){case *_b .PdfObjectFloat :return cmapFloat {float64 (*_efag )},nil ;case *_b .PdfObjectInteger :return cmapInt {int64 (*_efag )},nil ;
};return nil ,_c .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_aga );};func (cmap *CMap )parseCIDRange ()error {for {_gfad ,_aaf :=cmap .parseObject ();
if _aaf !=nil {if _aaf ==_cc .EOF {break ;};return _aaf ;};_gdae ,_egbf :=_gfad .(cmapHexString );if !_egbf {if _afdg ,_abcd :=_gfad .(cmapOperand );_abcd {if _afdg .Operand ==_fcbd {return nil ;};return _fa .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");
};};_eabb :=_bac (_gdae );_gfad ,_aaf =cmap .parseObject ();if _aaf !=nil {if _aaf ==_cc .EOF {break ;};return _aaf ;};_bda ,_egbf :=_gfad .(cmapHexString );if !_egbf {return _fa .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 (_gdae ._cbgf )!=len (_bda ._cbgf ){return _fa .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");};_gde :=_bac (_bda );
if _eabb > _gde {_ag .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",_eabb ,_gde );
return ErrBadCMap ;};_gfad ,_aaf =cmap .parseObject ();if _aaf !=nil {if _aaf ==_cc .EOF {break ;};return _aaf ;};_gdbd ,_egbf :=_gfad .(cmapInt );if !_egbf {return _fa .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 _gdbd ._cfb < 0{return _fa .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_cbab :=_gdbd ._cfb ;for _gcb :=_eabb ;_gcb <=_gde ;_gcb ++{cmap ._ef [_gcb ]=CharCode (_cbab );
_cbab ++;};_ag .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",_eabb ,_gde ,_gdbd ._cfb );};return nil ;};func (cmap *CMap )Name ()string {return cmap ._ff };
func _cge (_gbe string )(*CMap ,error ){_ccf ,_fdf :=_e .Asset (_gbe );if _fdf !=nil {return nil ,_fdf ;};return LoadCmapFromDataCID (_ccf );};type cmapFloat struct{_dbce float64 };const (_abdd =100;_eeg ="\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";
_eegg ="\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 (_agd *CIDSystemInfo )String ()string {return _c .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_agd .Registry ,_agd .Ordering ,_agd .Supplement );};type cMapParser struct{_gbgb *_db .Reader };type cmapString struct{String string ;
};func (_ebf *cMapParser )parseString ()(cmapString ,error ){_ebf ._gbgb .ReadByte ();_dgd :=_a .Buffer {};_fffb :=1;for {_ace ,_gae :=_ebf ._gbgb .Peek (1);if _gae !=nil {return cmapString {_dgd .String ()},_gae ;};if _ace [0]=='\\'{_ebf ._gbgb .ReadByte ();
_fdbc ,_gdf :=_ebf ._gbgb .ReadByte ();if _gdf !=nil {return cmapString {_dgd .String ()},_gdf ;};if _b .IsOctalDigit (_fdbc ){_fdg ,_bdf :=_ebf ._gbgb .Peek (2);if _bdf !=nil {return cmapString {_dgd .String ()},_bdf ;};var _aef []byte ;_aef =append (_aef ,_fdbc );
for _ ,_gfc :=range _fdg {if _b .IsOctalDigit (_gfc ){_aef =append (_aef ,_gfc );}else {break ;};};_ebf ._gbgb .Discard (len (_aef )-1);_ag .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_aef );
_aca ,_bdf :=_d .ParseUint (string (_aef ),8,32);if _bdf !=nil {return cmapString {_dgd .String ()},_bdf ;};_dgd .WriteByte (byte (_aca ));continue ;};switch _fdbc {case 'n':_dgd .WriteByte ('\n');case 'r':_dgd .WriteByte ('\r');case 't':_dgd .WriteByte ('\t');
case 'b':_dgd .WriteByte ('\b');case 'f':_dgd .WriteByte ('\f');case '(':_dgd .WriteByte ('(');case ')':_dgd .WriteByte (')');case '\\':_dgd .WriteByte ('\\');};continue ;}else if _ace [0]=='('{_fffb ++;}else if _ace [0]==')'{_fffb --;if _fffb ==0{_ebf ._gbgb .ReadByte ();
break ;};};_dbg ,_ :=_ebf ._gbgb .ReadByte ();_dgd .WriteByte (_dbg );};return cmapString {_dgd .String ()},nil ;};func (_bcac *cMapParser )parseHexString ()(cmapHexString ,error ){_bcac ._gbgb .ReadByte ();_faaa :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_ebg :=_a .Buffer {};for {_bcac .skipSpaces ();_cga ,_accb :=_bcac ._gbgb .Peek (1);if _accb !=nil {return cmapHexString {},_accb ;};if _cga [0]=='>'{_bcac ._gbgb .ReadByte ();break ;};_cacd ,_ :=_bcac ._gbgb .ReadByte ();if _a .IndexByte (_faaa ,_cacd )>=0{_ebg .WriteByte (_cacd );
};};if _ebg .Len ()%2==1{_ag .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",_ebg .String ());_ebg .WriteByte ('0');};_efdf :=_ebg .Len ()/2;
_aaad ,_ :=_f .DecodeString (_ebg .String ());return cmapHexString {_cefb :_efdf ,_cbgf :_aaad },nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._bd )==0{return "";};_cbaf :=make ([]CharCode ,0,len (cmap ._bd ));for _fbe :=range cmap ._bd {_cbaf =append (_cbaf ,_fbe );
};_fe .Slice (_cbaf ,func (_abc ,_ebbe int )bool {return _cbaf [_abc ]< _cbaf [_ebbe ]});var _eace []charRange ;_bgcf :=charRange {_cbaf [0],_cbaf [0]};_ebdb :=cmap ._bd [_cbaf [0]];for _ ,_gba :=range _cbaf [1:]{_gdb :=cmap ._bd [_gba ];if _gba ==_bgcf ._cf +1&&_fcb (_gdb )==_fcb (_ebdb )+1{_bgcf ._cf =_gba ;
}else {_eace =append (_eace ,_bgcf );_bgcf ._eb ,_bgcf ._cf =_gba ,_gba ;};_ebdb =_gdb ;};_eace =append (_eace ,_bgcf );var _bga []CharCode ;var _fbc []fbRange ;for _ ,_cgeg :=range _eace {if _cgeg ._eb ==_cgeg ._cf {_bga =append (_bga ,_cgeg ._eb );}else {_fbc =append (_fbc ,fbRange {_gf :_cgeg ._eb ,_af :_cgeg ._cf ,_de :cmap ._bd [_cgeg ._eb ]});
};};_ag .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 (_eace ),len (_bga ),len (_fbc ));var _bdd []string ;if len (_bga )> 0{_ebcf :=(len (_bga )+_abdd -1)/_abdd ;
for _cfa :=0;_cfa < _ebcf ;_cfa ++{_afd :=_cgff (len (_bga )-_cfa *_abdd ,_abdd );_bdd =append (_bdd ,_c .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_afd ));for _dce :=0;_dce < _afd ;_dce ++{_bde :=_bga [_cfa *_abdd +_dce ];
_dbe :=cmap ._bd [_bde ];_bdd =append (_bdd ,_c .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_bde ,_gg (_dbe )));};_bdd =append (_bdd ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_fbc )> 0{_cgege :=(len (_fbc )+_abdd -1)/_abdd ;
for _faf :=0;_faf < _cgege ;_faf ++{_bca :=_cgff (len (_fbc )-_faf *_abdd ,_abdd );_bdd =append (_bdd ,_c .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_bca ));for _caa :=0;_caa < _bca ;_caa ++{_gbcg :=_fbc [_faf *_abdd +_caa ];
_bdd =append (_bdd ,_c .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_gbcg ._gf ,_gbcg ._af ,_gg (_gbcg ._de )));};_bdd =append (_bdd ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _gd .Join (_bdd ,"\u000a");
};func (cmap *CMap )parseBfchar ()error {for {_fcc ,_fgd :=cmap .parseObject ();if _fgd !=nil {if _fgd ==_cc .EOF {break ;};return _fgd ;};var _fbae CharCode ;switch _bcaa :=_fcc .(type ){case cmapOperand :if _bcaa .Operand ==_ege {return nil ;};return _fa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_fbae =_bac (_bcaa );default:return _fa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_fcc ,_fgd =cmap .parseObject ();if _fgd !=nil {if _fgd ==_cc .EOF {break ;};return _fgd ;};var _cdf []rune ;
switch _ddb :=_fcc .(type ){case cmapOperand :if _ddb .Operand ==_ege {return nil ;};_ag .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",_ddb );
return ErrBadCMap ;case cmapHexString :_cdf =_fgcb (_ddb );case cmapName :_ag .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",_ddb );_cdf =[]rune {MissingCodeRune };
default:_ag .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",_fcc );return ErrBadCMap ;};cmap ._bd [_fbae ]=string (_cdf );};return nil ;};func IsPredefinedCMap (name string )bool {return _e .AssetExists (name )};
func _gg (_feb string )string {_bb :=[]rune (_feb );_cae :=make ([]string ,len (_bb ));for _dfg ,_caab :=range _bb {_cae [_dfg ]=_c .Sprintf ("\u0025\u0030\u0034\u0078",_caab );};return _c .Sprintf ("\u003c\u0025\u0073\u003e",_gd .Join (_cae ,""));};func (_fbfg *cMapParser )parseName ()(cmapName ,error ){_ggd :="";
_fgcf :=false ;for {_bdda ,_beff :=_fbfg ._gbgb .Peek (1);if _beff ==_cc .EOF {break ;};if _beff !=nil {return cmapName {_ggd },_beff ;};if !_fgcf {if _bdda [0]=='/'{_fgcf =true ;_fbfg ._gbgb .ReadByte ();}else {_ag .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",_bdda ,_bdda );
return cmapName {_ggd },_c .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_bdda [0]);};}else {if _b .IsWhiteSpace (_bdda [0]){break ;}else if (_bdda [0]=='/')||(_bdda [0]=='[')||(_bdda [0]=='(')||(_bdda [0]==']')||(_bdda [0]=='<')||(_bdda [0]=='>'){break ;
}else if _bdda [0]=='#'{_bded ,_dba :=_fbfg ._gbgb .Peek (3);if _dba !=nil {return cmapName {_ggd },_dba ;};_fbfg ._gbgb .Discard (3);_fbag ,_dba :=_f .DecodeString (string (_bded [1:3]));if _dba !=nil {return cmapName {_ggd },_dba ;};_ggd +=string (_fbag );
}else {_beg ,_ :=_fbfg ._gbgb .ReadByte ();_ggd +=string (_beg );};};};return cmapName {_ggd },nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_bgdd ,_cba :=cmap ._efa [cid ];return _bgdd ,_cba ;};func _dfbe ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};
func (_dcaa *cMapParser )skipSpaces ()(int ,error ){_fbg :=0;for {_fecc ,_cda :=_dcaa ._gbgb .Peek (1);if _cda !=nil {return 0,_cda ;};if _b .IsWhiteSpace (_fecc [0]){_dcaa ._gbgb .ReadByte ();_fbg ++;}else {break ;};};return _fbg ,nil ;};func (cmap *CMap )parseSystemInfo ()error {_egb :=false ;
_gab :=false ;_gce :="";_dbd :=false ;_gga :=CIDSystemInfo {};for _cgd :=0;_cgd < 50&&!_dbd ;_cgd ++{_ged ,_edg :=cmap .parseObject ();if _edg !=nil {return _edg ;};switch _abab :=_ged .(type ){case cmapDict :_eef :=_abab .Dict ;_cbgd ,_fbba :=_eef ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];
if !_fbba {_ag .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_fgbe ,_fbba :=_cbgd .(cmapString );if !_fbba {_ag .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_gga .Registry =_fgbe .String ;_cbgd ,_fbba =_eef ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_fbba {_ag .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_fgbe ,_fbba =_cbgd .(cmapString );if !_fbba {_ag .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gga .Ordering =_fgbe .String ;
_bff ,_fbba :=_eef ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_fbba {_ag .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;
};_acf ,_fbba :=_bff .(cmapInt );if !_fbba {_ag .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gga .Supplement =int (_acf ._cfb );_dbd =true ;case cmapOperand :switch _abab .Operand {case "\u0062\u0065\u0067i\u006e":_egb =true ;
case "\u0065\u006e\u0064":_dbd =true ;case "\u0064\u0065\u0066":_gab =false ;};case cmapName :if _egb {_gce =_abab .Name ;_gab =true ;};case cmapString :if _gab {switch _gce {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_gga .Registry =_abab .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_gga .Ordering =_abab .String ;};};case cmapInt :if _gab {switch _gce {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_gga .Supplement =int (_abab ._cfb );};};};};if !_dbd {_ag .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 ._ad =_gga ;return nil ;};type cmapDict struct{Dict map[string ]cmapObject ;};type charRange struct{_eb CharCode ;_cf CharCode ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _be []CharCode ;if cmap ._fd ==8{for _ ,_dec :=range data {_be =append (_be ,CharCode (_dec ));
};return _be ,true ;};for _abe :=0;_abe < len (data );{_ffdc ,_cab ,_efe :=cmap .matchCode (data [_abe :]);if !_efe {_ag .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",_abe ,data ,string (data ));
return _be ,false ;};_be =append (_be ,_ffdc );_abe +=_cab ;};return _be ,true ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_egg ,_gea :=cmap ._cfg [s ];return _egg ,_gea ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_ag .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 :=_bg (isSimple );cmap .cMapParser =_abg (data );_aad :=cmap .parse ();if _aad !=nil {return nil ,_aad ;};if len (cmap ._gdc )==0{if cmap ._ecc !=""{return cmap ,nil ;};_ag .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 )matchCode (_agcf []byte )(_cde CharCode ,_geb int ,_cgf bool ){for _ece :=0;_ece < _ac ;_ece ++{if _ece < len (_agcf ){_cde =_cde <<8|CharCode (_agcf [_ece ]);
_geb ++;};_cgf =cmap .inCodespace (_cde ,_ece +1);if _cgf {return _cde ,_geb ,true ;};};_ag .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",_agcf ,string (_agcf ),cmap );
return 0,0,false ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_afgf ,_gbc :=cmap ._ef [code ];return _afgf ,_gbc ;};const (_bcd ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_fgg ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
_edf ="\u0065n\u0064\u0063\u006d\u0061\u0070";_bea ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_dag ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_daae ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_ege ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_fde ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gac ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_aea ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_fcbd ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cbge ="\u0075s\u0065\u0063\u006d\u0061\u0070";_cfgd ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_gaf ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_bfc ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);type cmapArray struct{Array []cmapObject ;};func _cgff (_fbbe ,_ega int )int {if _fbbe < _ega {return _fbbe ;};return _ega ;
};func (cmap *CMap )parseName ()error {_ggc :="";_ced :=false ;for _cbg :=0;_cbg < 20&&!_ced ;_cbg ++{_cef ,_effd :=cmap .parseObject ();if _effd !=nil {return _effd ;};switch _gc :=_cef .(type ){case cmapOperand :switch _gc .Operand {case "\u0064\u0065\u0066":_ced =true ;
default:_ag .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",_cef ,_ggc );
if _ggc !=""{_ggc =_c .Sprintf ("\u0025\u0073\u0020%\u0073",_ggc ,_gc .Operand );};_ag .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",_ggc );
};case cmapName :_ggc =_gc .Name ;};};if !_ced {_ag .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ff =_ggc ;return nil ;};type cmapName struct{Name string ;
};type cmapObject interface{};func (cmap *CMap )parseCodespaceRange ()error {for {_eaa ,_dbb :=cmap .parseObject ();if _dbb !=nil {if _dbb ==_cc .EOF {break ;};return _dbb ;};_fbaf ,_deg :=_eaa .(cmapHexString );if !_deg {if _eab ,_cee :=_eaa .(cmapOperand );
_cee {if _eab .Operand ==_dag {return nil ;};return _fa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_eaa ,_dbb =cmap .parseObject ();if _dbb !=nil {if _dbb ==_cc .EOF {break ;};return _dbb ;};_dcc ,_deg :=_eaa .(cmapHexString );
if !_deg {return _fa .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_fbaf ._cbgf )!=len (_dcc ._cbgf ){return _fa .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");
};_eba :=_bac (_fbaf );_dee :=_bac (_dcc );if _dee < _eba {_ag .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",_eba ,_dee );
return ErrBadCMap ;};_bgba :=_dcc ._cefb ;_gcg :=Codespace {NumBytes :_bgba ,Low :_eba ,High :_dee };cmap ._gdc =append (cmap ._gdc ,_gcg );_ag .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",_eba ,_dee );
};if len (cmap ._gdc )==0{_ag .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 ;};type fbRange struct{_gf CharCode ;
_af CharCode ;_de string ;};func (cmap *CMap )parseBfrange ()error {for {var _ceg CharCode ;_cca ,_eec :=cmap .parseObject ();if _eec !=nil {if _eec ==_cc .EOF {break ;};return _eec ;};switch _cffc :=_cca .(type ){case cmapOperand :if _cffc .Operand ==_gac {return nil ;
};return _fa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_ceg =_bac (_cffc );default:return _fa .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};var _ddf CharCode ;_cca ,_eec =cmap .parseObject ();if _eec !=nil {if _eec ==_cc .EOF {break ;};return _eec ;};switch _eecg :=_cca .(type ){case cmapOperand :_ag .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 :_ddf =_bac (_eecg );default:_ag .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_cca );return ErrBadCMap ;};_cca ,_eec =cmap .parseObject ();
if _eec !=nil {if _eec ==_cc .EOF {break ;};return _eec ;};switch _daab :=_cca .(type ){case cmapArray :if len (_daab .Array )!=int (_ddf -_ceg )+1{_ag .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 _fgbg :=_ceg ;_fgbg <=_ddf ;_fgbg ++{_babc :=_daab .Array [_fgbg -_ceg ];_baae ,_cdb :=_babc .(cmapHexString );if !_cdb {return _fa .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_aeg :=_fgcb (_baae );cmap ._bd [_fgbg ]=string (_aeg );};case cmapHexString :_cgb :=_fgcb (_daab );_bef :=len (_cgb );for _gec :=_ceg ;_gec <=_ddf ;_gec ++{cmap ._bd [_gec ]=string (_cgb );if _bef > 0{_cgb [_bef -1]++;}else {_ag .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",_gec );
};};default:_ag .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_cca );return ErrBadCMap ;};};return nil ;};func NewCIDSystemInfo (obj _b .PdfObject )(_aa CIDSystemInfo ,_ab error ){_ec ,_fc :=_b .GetDict (obj );
if !_fc {return CIDSystemInfo {},_b .ErrTypeError ;};_aba ,_fc :=_b .GetStringVal (_ec .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_fc {return CIDSystemInfo {},_b .ErrTypeError ;};_ea ,_fc :=_b .GetStringVal (_ec .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));
if !_fc {return CIDSystemInfo {},_b .ErrTypeError ;};_afc ,_fc :=_b .GetIntVal (_ec .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_fc {return CIDSystemInfo {},_b .ErrTypeError ;};return CIDSystemInfo {Registry :_aba ,Ordering :_ea ,Supplement :_afc },nil ;
};func (cmap *CMap )inCodespace (_fgb CharCode ,_eda int )bool {for _ ,_ga :=range cmap ._gdc {if _ga .Low <=_fgb &&_fgb <=_ga .High &&_eda ==_ga .NumBytes {return true ;};};return false ;};func (_bgf *cMapParser )parseDict ()(cmapDict ,error ){_ag .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_efc :=_dfbe ();_cabg ,_ :=_bgf ._gbgb .ReadByte ();if _cabg !='<'{return _efc ,ErrBadCMapDict ;};_cabg ,_ =_bgf ._gbgb .ReadByte ();if _cabg !='<'{return _efc ,ErrBadCMapDict ;};for {_bgf .skipSpaces ();_ebeg ,_aag :=_bgf ._gbgb .Peek (2);if _aag !=nil {return _efc ,_aag ;
};if (_ebeg [0]=='>')&&(_ebeg [1]=='>'){_bgf ._gbgb .ReadByte ();_bgf ._gbgb .ReadByte ();break ;};_dgdf ,_aag :=_bgf .parseName ();_ag .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_dgdf .Name );if _aag !=nil {_ag .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",_aag );
return _efc ,_aag ;};_bgf .skipSpaces ();_aafa ,_aag :=_bgf .parseObject ();if _aag !=nil {return _efc ,_aag ;};_efc .Dict [_dgdf .Name ]=_aafa ;_bgf .skipSpaces ();_ebeg ,_aag =_bgf ._gbgb .Peek (3);if _aag !=nil {return _efc ,_aag ;};if string (_ebeg )=="\u0064\u0065\u0066"{_bgf ._gbgb .Discard (3);
};};return _efc ,nil ;};const (_ac =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _acc ,_ffd :=cmap ._bd [code ];_ffd {return _acc ,true ;};return MissingCodeString ,false ;
};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_gfa :=_cge (name );if _gfa !=nil {return nil ,_gfa ;};if cmap ._ecc ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_bgd ,_gfa :=_cge (cmap ._ecc );if _gfa !=nil {return nil ,_gfa ;
};for _bc ,_fce :=range _bgd ._ef {if _ ,_aada :=cmap ._ef [_bc ];!_aada {cmap ._ef [_bc ]=_fce ;};};cmap ._gdc =append (cmap ._gdc ,_bgd ._gdc ...);cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMap )NBits ()int {return cmap ._fd };type cmapOperand struct{Operand string ;
};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (cmap *CMap )parseType ()error {_fcee :=0;_gbg :=false ;for _cac :=0;_cac < 3&&!_gbg ;_cac ++{_gbcb ,_fff :=cmap .parseObject ();if _fff !=nil {return _fff ;};switch _ggb :=_gbcb .(type ){case cmapOperand :switch _ggb .Operand {case "\u0064\u0065\u0066":_gbg =true ;
default:_ag .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",_gbcb );return ErrBadCMap ;};case cmapInt :_fcee =int (_ggb ._cfb );
};};cmap ._cb =_fcee ;return nil ;};func (_bcad *cMapParser )parseOperand ()(cmapOperand ,error ){_bage :=cmapOperand {};_gbf :=_a .Buffer {};for {_cgbf ,_ffa :=_bcad ._gbgb .Peek (1);if _ffa !=nil {if _ffa ==_cc .EOF {break ;};return _bage ,_ffa ;};if _b .IsDelimiter (_cgbf [0]){break ;
};if _b .IsWhiteSpace (_cgbf [0]){break ;};_dbgf ,_ :=_bcad ._gbgb .ReadByte ();_gbf .WriteByte (_dbgf );};if _gbf .Len ()==0{return _bage ,_c .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_bage .Operand =_gbf .String ();return _bage ,nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func _bac (_bbf cmapHexString )CharCode {_cabf :=CharCode (0);for _ ,_bede :=range _bbf ._cbgf {_cabf <<=8;
_cabf |=CharCode (_bede );};return _cabf ;};func (_cdg *cMapParser )parseObject ()(cmapObject ,error ){_cdg .skipSpaces ();for {_fffg ,_dead :=_cdg ._gbgb .Peek (2);if _dead !=nil {return nil ,_dead ;};if _fffg [0]=='%'{_cdg .parseComment ();_cdg .skipSpaces ();
continue ;}else if _fffg [0]=='/'{_afa ,_gag :=_cdg .parseName ();return _afa ,_gag ;}else if _fffg [0]=='('{_ffc ,_aed :=_cdg .parseString ();return _ffc ,_aed ;}else if _fffg [0]=='['{_bgde ,_cafe :=_cdg .parseArray ();return _bgde ,_cafe ;}else if (_fffg [0]=='<')&&(_fffg [1]=='<'){_fca ,_ebe :=_cdg .parseDict ();
return _fca ,_ebe ;}else if _fffg [0]=='<'{_abb ,_fag :=_cdg .parseHexString ();return _abb ,_fag ;}else if _b .IsDecimalDigit (_fffg [0])||(_fffg [0]=='-'&&_b .IsDecimalDigit (_fffg [1])){_bae ,_bed :=_cdg .parseNumber ();if _bed !=nil {return nil ,_bed ;
};return _bae ,nil ;}else {_ebbb ,_faa :=_cdg .parseOperand ();if _faa !=nil {return nil ,_faa ;};return _ebbb ,nil ;};};};func _abg (_bfab []byte )*cMapParser {_adc :=cMapParser {};_adcb :=_a .NewBuffer (_bfab );_adc ._gbgb =_db .NewReader (_adcb );return &_adc ;
};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )String ()string {_bgc :=cmap ._ad ;_gda :=[]string {_c .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._fd ),_c .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._cb )};
if cmap ._gb !=""{_gda =append (_gda ,_c .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._gb ));};if cmap ._ecc !=""{_gda =append (_gda ,_c .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._ecc ));
};_gda =append (_gda ,_c .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_bgc .String ()));if len (cmap ._gdc )> 0{_gda =append (_gda ,_c .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._gdc )));
};if len (cmap ._bd )> 0{_gda =append (_gda ,_c .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._bd )));};return _c .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ff ,_gd .Join (_gda ,"\u0020"));
};func _fcb (_cbd string )rune {_dda :=[]rune (_cbd );return _dda [len (_dda )-1]};func (cmap *CMap )Type ()int {return cmap ._cb };func (_eae *cMapParser )parseComment ()(string ,error ){var _eaea _a .Buffer ;_ ,_cbf :=_eae .skipSpaces ();if _cbf !=nil {return _eaea .String (),_cbf ;
};_ffdf :=true ;for {_dbc ,_fee :=_eae ._gbgb .Peek (1);if _fee !=nil {_ag .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_fee );return _eaea .String (),_fee ;};if _ffdf &&_dbc [0]!='%'{return _eaea .String (),ErrBadCMapComment ;
};_ffdf =false ;if (_dbc [0]!='\r')&&(_dbc [0]!='\n'){_egeb ,_ :=_eae ._gbgb .ReadByte ();_eaea .WriteByte (_egeb );}else {break ;};};return _eaea .String (),nil ;};