unipdf/internal/cmap/cmap.go
2024-03-27 22:34:33 +00:00

141 lines
42 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 (_b "bufio";_ec "bytes";_af "encoding/hex";_dd "errors";_g "fmt";_dba "github.com/unidoc/unipdf/v3/common";_ada "github.com/unidoc/unipdf/v3/core";_ad "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_c "io";_db "sort";_d "strconv";
_ea "strings";_e "unicode/utf16";);func (_agag *cMapParser )parseName ()(cmapName ,error ){_efe :="";_gag :=false ;for {_efbc ,_afae :=_agag ._egc .Peek (1);if _afae ==_c .EOF {break ;};if _afae !=nil {return cmapName {_efe },_afae ;};if !_gag {if _efbc [0]=='/'{_gag =true ;
_agag ._egc .ReadByte ();}else {_dba .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",_efbc ,_efbc );return cmapName {_efe },_g .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_efbc [0]);
};}else {if _ada .IsWhiteSpace (_efbc [0]){break ;}else if (_efbc [0]=='/')||(_efbc [0]=='[')||(_efbc [0]=='(')||(_efbc [0]==']')||(_efbc [0]=='<')||(_efbc [0]=='>'){break ;}else if _efbc [0]=='#'{_gga ,_acg :=_agag ._egc .Peek (3);if _acg !=nil {return cmapName {_efe },_acg ;
};_agag ._egc .Discard (3);_gfgf ,_acg :=_af .DecodeString (string (_gga [1:3]));if _acg !=nil {return cmapName {_efe },_acg ;};_efe +=string (_gfgf );}else {_bbeb ,_ :=_agag ._egc .ReadByte ();_efe +=string (_bbeb );};};};return cmapName {_efe },nil ;
};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._gf ._dgb ,cmap ._gf ._fbd };func (cmap *CMap )Stream ()(*_ada .PdfObjectStream ,error ){if cmap ._aca !=nil {return cmap ._aca ,nil ;};_bgd ,_bec :=_ada .MakeStream (cmap .Bytes (),_ada .NewFlateEncoder ());
if _bec !=nil {return nil ,_bec ;};cmap ._aca =_bgd ;return cmap ._aca ,nil ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_gcd :=make (map[CharCode ]string ,len (codeToRune ));for _gb ,_ee :=range codeToRune {_gcd [_gb ]=string (_ee );
};cmap :=&CMap {_eag :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_aga :2,_ebf :16,_eca :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_ff :[]Codespace {{Low :0,High :0xffff}},_eab :_gcd ,_aa :make (map[string ]CharCode ,len (codeToRune )),_cba :make (map[CharCode ]CharCode ,len (codeToRune )),_ce :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};type CMap struct{*cMapParser ;_eag string ;_ebf int ;_aga int ;_dde string ;_fa string ;_eca CIDSystemInfo ;_ff []Codespace ;_cba map[CharCode ]CharCode ;
_ce map[CharCode ]CharCode ;_eab map[CharCode ]string ;_aa map[string ]CharCode ;_fd []byte ;_aca *_ada .PdfObjectStream ;_gf integer ;};type fbRange struct{_ba CharCode ;_cb CharCode ;_bb string ;};func (cmap *CMap )toBfData ()string {if len (cmap ._eab )==0{return "";
};_egg :=make ([]CharCode ,0,len (cmap ._eab ));for _cef :=range cmap ._eab {_egg =append (_egg ,_cef );};_db .Slice (_egg ,func (_fac ,_dddf int )bool {return _egg [_fac ]< _egg [_dddf ]});var _cbfd []charRange ;_fede :=charRange {_egg [0],_egg [0]};_bef :=cmap ._eab [_egg [0]];
for _ ,_def :=range _egg [1:]{_fgfc :=cmap ._eab [_def ];if _def ==_fede ._bg +1&&_cbg (_fgfc )==_cbg (_bef )+1{_fede ._bg =_def ;}else {_cbfd =append (_cbfd ,_fede );_fede ._gc ,_fede ._bg =_def ,_def ;};_bef =_fgfc ;};_cbfd =append (_cbfd ,_fede );var _bd []CharCode ;
var _aeg []fbRange ;for _ ,_aff :=range _cbfd {if _aff ._gc ==_aff ._bg {_bd =append (_bd ,_aff ._gc );}else {_aeg =append (_aeg ,fbRange {_ba :_aff ._gc ,_cb :_aff ._bg ,_bb :cmap ._eab [_aff ._gc ]});};};_dba .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 (_cbfd ),len (_bd ),len (_aeg ));
var _abf []string ;if len (_bd )> 0{_becg :=(len (_bd )+_abfc -1)/_abfc ;for _cbfb :=0;_cbfb < _becg ;_cbfb ++{_eff :=_dbc (len (_bd )-_cbfb *_abfc ,_abfc );_abf =append (_abf ,_g .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_eff ));
for _ade :=0;_ade < _eff ;_ade ++{_acd :=_bd [_cbfb *_abfc +_ade ];_fca :=cmap ._eab [_acd ];_abf =append (_abf ,_g .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_acd ,_ffdc (_fca )));};_abf =append (_abf ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
};};if len (_aeg )> 0{_bgfe :=(len (_aeg )+_abfc -1)/_abfc ;for _gaf :=0;_gaf < _bgfe ;_gaf ++{_gcg :=_dbc (len (_aeg )-_gaf *_abfc ,_abfc );_abf =append (_abf ,_g .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_gcg ));
for _gfd :=0;_gfd < _gcg ;_gfd ++{_bgff :=_aeg [_gaf *_abfc +_gfd ];_abf =append (_abf ,_g .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_bgff ._ba ,_bgff ._cb ,_ffdc (_bgff ._bb )));};_abf =append (_abf ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
};};return _ea .Join (_abf ,"\u000a");};func (_cgg *cMapParser )parseNumber ()(cmapObject ,error ){_abd ,_fegf :=_ada .ParseNumber (_cgg ._egc );if _fegf !=nil {return nil ,_fegf ;};switch _ffec :=_abd .(type ){case *_ada .PdfObjectFloat :return cmapFloat {float64 (*_ffec )},nil ;
case *_ada .PdfObjectInteger :return cmapInt {int64 (*_ffec )},nil ;};return nil ,_g .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_abd );};func _eeg (_ded bool )*CMap {_bgf :=16;
if _ded {_bgf =8;};return &CMap {_ebf :_bgf ,_cba :make (map[CharCode ]CharCode ),_ce :make (map[CharCode ]CharCode ),_eab :make (map[CharCode ]string ),_aa :make (map[string ]CharCode )};};func (cmap *CMap )parseBfrange ()error {for {var _fab CharCode ;
_gafe ,_ddb :=cmap .parseObject ();if _ddb !=nil {if _ddb ==_c .EOF {break ;};return _ddb ;};switch _daf :=_gafe .(type ){case cmapOperand :if _daf .Operand ==_eea {return nil ;};return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_fab =_abag (_daf );default:return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _deaf CharCode ;_gafe ,_ddb =cmap .parseObject ();if _ddb !=nil {if _ddb ==_c .EOF {break ;};return _ddb ;
};switch _cbef :=_gafe .(type ){case cmapOperand :_dba .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 :_deaf =_abag (_cbef );if _deaf > 0xffff{_deaf =0xffff;};default:_dba .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_gafe );
return ErrBadCMap ;};_gafe ,_ddb =cmap .parseObject ();if _ddb !=nil {if _ddb ==_c .EOF {break ;};return _ddb ;};switch _abc :=_gafe .(type ){case cmapArray :if len (_abc .Array )!=int (_deaf -_fab )+1{_dba .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 _efb :=_fab ;_efb <=_deaf ;_efb ++{_gccb :=_abc .Array [_efb -_fab ];_cdd ,_fecb :=_gccb .(cmapHexString );if !_fecb {return _dd .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_acfb :=_bga (_cdd );cmap ._eab [_efb ]=string (_acfb );};case cmapHexString :_gge :=_bga (_abc );_bda :=len (_gge );for _fba :=_fab ;_fba <=_deaf ;_fba ++{cmap ._eab [_fba ]=string (_gge );if _bda > 0{_gge [_bda -1]++;}else {_dba .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",_fba );
};if _fba ==1<<32-1{break ;};};default:_dba .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_gafe );return ErrBadCMap ;};};return nil ;};type cmapObject interface{};
func _ffdc (_agf string )string {_edc :=[]rune (_agf );_bbc :=make ([]string ,len (_edc ));for _eef ,_fef :=range _edc {_bbc [_eef ]=_g .Sprintf ("\u0025\u0030\u0034\u0078",_fef );};return _g .Sprintf ("\u003c\u0025\u0073\u003e",_ea .Join (_bbc ,""));};
func _cdbg (_fbab cmapHexString )rune {_dbad :=_bga (_fbab );if _ddfde :=len (_dbad );_ddfde ==0{_dba .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",_fbab );
return MissingCodeRune ;};if len (_dbad )> 1{_dba .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",_fbab ,_dbad );
};return _dbad [0];};func _bga (_afg cmapHexString )[]rune {if len (_afg ._acc )==1{return []rune {rune (_afg ._acc [0])};};_eecb :=_afg ._acc ;if len (_eecb )%2!=0{_eecb =append (_eecb ,0);_dba .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",_afg ,_eecb );
};_cddf :=len (_eecb )>>1;_bcb :=make ([]uint16 ,_cddf );for _fgfcb :=0;_fgfcb < _cddf ;_fgfcb ++{_bcb [_fgfcb ]=uint16 (_eecb [_fgfcb <<1])<<8+uint16 (_eecb [_fgfcb <<1+1]);};_cbea :=_e .Decode (_bcb );return _cbea ;};type cmapHexString struct{_daggb int ;
_acc []byte ;};type cmapInt struct{_aaaf int64 };const (_abfc =100;_fdd ="\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";
_dgd ="\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 )parseCodespaceRange ()error {for {_eda ,_bad :=cmap .parseObject ();if _bad !=nil {if _bad ==_c .EOF {break ;};return _bad ;};_acec ,_feb :=_eda .(cmapHexString );if !_feb {if _ebe ,_dgg :=_eda .(cmapOperand );_dgg {if _ebe .Operand ==_cdad {return nil ;
};return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_eda ,_bad =cmap .parseObject ();if _bad !=nil {if _bad ==_c .EOF {break ;};return _bad ;};_aaa ,_feb :=_eda .(cmapHexString );if !_feb {return _dd .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");
};if len (_acec ._acc )!=len (_aaa ._acc ){return _dd .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");};_bde :=_abag (_acec );
_degb :=_abag (_aaa );if _degb < _bde {_dba .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",_bde ,_degb );
return ErrBadCMap ;};_eac :=_aaa ._daggb ;_bff :=Codespace {NumBytes :_eac ,Low :_bde ,High :_degb };cmap ._ff =append (cmap ._ff ,_bff );_dba .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",_bde ,_degb );
};if len (cmap ._ff )==0{_dba .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 )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _fgc []CharCode ;
if cmap ._ebf ==8{for _ ,_be :=range data {_fgc =append (_fgc ,CharCode (_be ));};return _fgc ,true ;};for _ddc :=0;_ddc < len (data );{_cgdc ,_afc ,_fc :=cmap .matchCode (data [_ddc :]);if !_fc {_dba .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",_ddc ,data ,string (data ));
return _fgc ,false ;};_fgc =append (_fgc ,_cgdc );_ddc +=_afc ;};return _fgc ,true ;};func (cmap *CMap )computeInverseMappings (){for _ebc ,_bgg :=range cmap ._cba {if _bcc ,_ddf :=cmap ._ce [_bgg ];!_ddf ||(_ddf &&_bcc > _ebc ){cmap ._ce [_bgg ]=_ebc ;
};};for _da ,_gfe :=range cmap ._eab {if _agae ,_ge :=cmap ._aa [_gfe ];!_ge ||(_ge &&_agae > _da ){cmap ._aa [_gfe ]=_da ;};};_db .Slice (cmap ._ff ,func (_dc ,_cf int )bool {return cmap ._ff [_dc ].Low < cmap ._ff [_cf ].Low });};func (cmap *CMap )inCodespace (_cgdd CharCode ,_abe int )bool {for _ ,_gec :=range cmap ._ff {if _gec .Low <=_cgdd &&_cgdd <=_gec .High &&_abe ==_gec .NumBytes {return true ;
};};return false ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_bge ,_gbdc :=cmap ._ce [cid ];return _bge ,_gbdc ;};func (cmap *CMap )String ()string {_ddd :=cmap ._eca ;_cbac :=[]string {_g .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._ebf ),_g .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._aga )};
if cmap ._dde !=""{_cbac =append (_cbac ,_g .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._dde ));};if cmap ._fa !=""{_cbac =append (_cbac ,_g .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._fa ));
};_cbac =append (_cbac ,_g .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_ddd .String ()));if len (cmap ._ff )> 0{_cbac =append (_cbac ,_g .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._ff )));
};if len (cmap ._eab )> 0{_cbac =append (_cbac ,_g .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._eab )));};return _g .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._eag ,_ea .Join (_cbac ,"\u0020"));
};func (cmap *CMap )parseSystemInfo ()error {_fec :=false ;_dcb :=false ;_ggb :="";_gcgg :=false ;_cce :=CIDSystemInfo {};for _bdf :=0;_bdf < 50&&!_gcgg ;_bdf ++{_fbec ,_aabg :=cmap .parseObject ();if _aabg !=nil {return _aabg ;};switch _fefa :=_fbec .(type ){case cmapDict :_cbgd :=_fefa .Dict ;
_cgf ,_afbe :=_cbgd ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_afbe {_dba .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ccf ,_afbe :=_cgf .(cmapString );
if !_afbe {_dba .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cce .Registry =_ccf .String ;_cgf ,_afbe =_cbgd ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];
if !_afbe {_dba .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ccf ,_afbe =_cgf .(cmapString );if !_afbe {_dba .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_cce .Ordering =_ccf .String ;_cec ,_afbe :=_cbgd ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_afbe {_dba .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_bea ,_afbe :=_cec .(cmapInt );if !_afbe {_dba .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cce .Supplement =int (_bea ._aaaf );
_gcgg =true ;case cmapOperand :switch _fefa .Operand {case "\u0062\u0065\u0067i\u006e":_fec =true ;case "\u0065\u006e\u0064":_gcgg =true ;case "\u0064\u0065\u0066":_dcb =false ;};case cmapName :if _fec {_ggb =_fefa .Name ;_dcb =true ;};case cmapString :if _dcb {switch _ggb {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_cce .Registry =_fefa .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_cce .Ordering =_fefa .String ;};};case cmapInt :if _dcb {switch _ggb {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_cce .Supplement =int (_fefa ._aaaf );};};};};if !_gcgg {_dba .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 ._eca =_cce ;return nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_fbe ,_eagg :=cmap ._aa [s ];return _fbe ,_eagg ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_cg ,_agg :=cmap ._cba [code ];
return _cg ,_agg ;};func (cmap *CMap )parseType ()error {_geca :=0;_gcdb :=false ;for _ebb :=0;_ebb < 3&&!_gcdb ;_ebb ++{_dea ,_bf :=cmap .parseObject ();if _bf !=nil {return _bf ;};switch _dcf :=_dea .(type ){case cmapOperand :switch _dcf .Operand {case "\u0064\u0065\u0066":_gcdb =true ;
default:_dba .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",_dea );return ErrBadCMap ;};case cmapInt :_geca =int (_dcf ._aaaf );
};};cmap ._aga =_geca ;return nil ;};func (cmap *CMap )Bytes ()[]byte {_dba .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 ._fd )> 0{return cmap ._fd ;
};cmap ._fd =[]byte (_ea .Join ([]string {_fdd ,cmap .toBfData (),_dgd },"\u000a"));return cmap ._fd ;};func (cmap *CMap )Type ()int {return cmap ._aga };func (cmap *CMap )parseName ()error {_adag :="";_dca :=false ;for _gfc :=0;_gfc < 20&&!_dca ;_gfc ++{_agad ,_dce :=cmap .parseObject ();
if _dce !=nil {return _dce ;};switch _eagb :=_agad .(type ){case cmapOperand :switch _eagb .Operand {case "\u0064\u0065\u0066":_dca =true ;default:_dba .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",_agad ,_adag );
if _adag !=""{_adag =_g .Sprintf ("\u0025\u0073\u0020%\u0073",_adag ,_eagb .Operand );};_dba .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",_adag );
};case cmapName :_adag =_eagb .Name ;};};if !_dca {_dba .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._eag =_adag ;return nil ;};var (ErrBadCMap =_dd .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");
ErrBadCMapComment =_dd .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 =_dd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");
);type cmapArray struct{Array []cmapObject ;};func _cbg (_cab string )rune {_fda :=[]rune (_cab );return _fda [len (_fda )-1]};type charRange struct{_gc CharCode ;_bg CharCode ;};func (_bffc *cMapParser )parseHexString ()(cmapHexString ,error ){_bffc ._egc .ReadByte ();
_dggd :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_bed :=_ec .Buffer {};for {_bffc .skipSpaces ();_ggab ,_efd :=_bffc ._egc .Peek (1);if _efd !=nil {return cmapHexString {},_efd ;
};if _ggab [0]=='>'{_bffc ._egc .ReadByte ();break ;};_gbf ,_ :=_bffc ._egc .ReadByte ();if _ec .IndexByte (_dggd ,_gbf )>=0{_bed .WriteByte (_gbf );};};if _bed .Len ()%2==1{_dba .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",_bed .String ());
_bed .WriteByte ('0');};_dagg :=_bed .Len ()/2;_aba ,_ :=_af .DecodeString (_bed .String ());return cmapHexString {_daggb :_dagg ,_acc :_aba },nil ;};func (_edd *cMapParser )parseString ()(cmapString ,error ){_edd ._egc .ReadByte ();_gddb :=_ec .Buffer {};
_gcfc :=1;for {_dbba ,_gcac :=_edd ._egc .Peek (1);if _gcac !=nil {return cmapString {_gddb .String ()},_gcac ;};if _dbba [0]=='\\'{_edd ._egc .ReadByte ();_ffff ,_cbdd :=_edd ._egc .ReadByte ();if _cbdd !=nil {return cmapString {_gddb .String ()},_cbdd ;
};if _ada .IsOctalDigit (_ffff ){_eeae ,_ddeb :=_edd ._egc .Peek (2);if _ddeb !=nil {return cmapString {_gddb .String ()},_ddeb ;};var _gcdbf []byte ;_gcdbf =append (_gcdbf ,_ffff );for _ ,_adee :=range _eeae {if _ada .IsOctalDigit (_adee ){_gcdbf =append (_gcdbf ,_adee );
}else {break ;};};_edd ._egc .Discard (len (_gcdbf )-1);_dba .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_gcdbf );_gafg ,_ddeb :=_d .ParseUint (string (_gcdbf ),8,32);if _ddeb !=nil {return cmapString {_gddb .String ()},_ddeb ;
};_gddb .WriteByte (byte (_gafg ));continue ;};switch _ffff {case 'n':_gddb .WriteByte ('\n');case 'r':_gddb .WriteByte ('\r');case 't':_gddb .WriteByte ('\t');case 'b':_gddb .WriteByte ('\b');case 'f':_gddb .WriteByte ('\f');case '(':_gddb .WriteByte ('(');
case ')':_gddb .WriteByte (')');case '\\':_gddb .WriteByte ('\\');};continue ;}else if _dbba [0]=='('{_gcfc ++;}else if _dbba [0]==')'{_gcfc --;if _gcfc ==0{_edd ._egc .ReadByte ();break ;};};_gac ,_ :=_edd ._egc .ReadByte ();_gddb .WriteByte (_gac );};
return cmapString {_gddb .String ()},nil ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_gba :=_bc (name );if _gba !=nil {return nil ,_gba ;};if cmap ._fa ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_gd ,_gba :=_bc (cmap ._fa );
if _gba !=nil {return nil ,_gba ;};for _ffd ,_bba :=range _gd ._cba {if _ ,_cbe :=cmap ._cba [_ffd ];!_cbe {cmap ._cba [_ffd ]=_bba ;};};cmap ._ff =append (cmap ._ff ,_gd ._ff ...);cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gbaf ,_gbd :=cmap .BytesToCharcodes (data );
if !_gbd {_dba .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;};_cbf :=make ([]string ,len (_gbaf ));var _fg []CharCode ;for _gdf ,_fae :=range _gbaf {_dfd ,_ga :=cmap ._eab [_fae ];if !_ga {_fg =append (_fg ,_fae );_dfd =MissingCodeString ;};_cbf [_gdf ]=_dfd ;};_fea :=_ea .Join (_cbf ,"");if len (_fg )> 0{_dba .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 ),_gbaf ,len (_fg ),_fg ,_fea ,cmap );
};return _fea ,len (_fg );};func _cceb ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func _dbc (_cafc ,_bbg int )int {if _cafc < _bbg {return _cafc ;};return _bbg ;};func (_bfa *cMapParser )parseArray ()(cmapArray ,error ){_gee :=cmapArray {};
_gee .Array =[]cmapObject {};_bfa ._egc .ReadByte ();for {_bfa .skipSpaces ();_dbd ,_ebgg :=_bfa ._egc .Peek (1);if _ebgg !=nil {return _gee ,_ebgg ;};if _dbd [0]==']'{_bfa ._egc .ReadByte ();break ;};_bag ,_ebgg :=_bfa .parseObject ();if _ebgg !=nil {return _gee ,_ebgg ;
};_gee .Array =append (_gee .Array ,_bag );};return _gee ,nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _bbe ,_gff :=cmap ._eab [code ];_gff {return _bbe ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )parseBfchar ()error {for {_fdfa ,_ceb :=cmap .parseObject ();
if _ceb !=nil {if _ceb ==_c .EOF {break ;};return _ceb ;};var _afac CharCode ;switch _bdee :=_fdfa .(type ){case cmapOperand :if _bdee .Operand ==_ddg {return nil ;};return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_afac =_abag (_bdee );default:return _dd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_fdfa ,_ceb =cmap .parseObject ();if _ceb !=nil {if _ceb ==_c .EOF {break ;};return _ceb ;};var _acf []rune ;
switch _beb :=_fdfa .(type ){case cmapOperand :if _beb .Operand ==_ddg {return nil ;};_dba .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",_beb );
return ErrBadCMap ;case cmapHexString :_acf =_bga (_beb );case cmapName :_dba .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",_beb );_acf =[]rune {MissingCodeRune };
default:_dba .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",_fdfa );return ErrBadCMap ;};cmap ._eab [_afac ]=string (_acf );};return nil ;};func (cmap *CMap )Name ()string {return cmap ._eag };
func (_dag *cMapParser )skipSpaces ()(int ,error ){_dcag :=0;for {_dggg ,_fgb :=_dag ._egc .Peek (1);if _fgb !=nil {return 0,_fgb ;};if _ada .IsWhiteSpace (_dggg [0]){_dag ._egc .ReadByte ();_dcag ++;}else {break ;};};return _dcag ,nil ;};func (_bbb *cMapParser )parseObject ()(cmapObject ,error ){_bbb .skipSpaces ();
for {_dbbc ,_caa :=_bbb ._egc .Peek (2);if _caa !=nil {return nil ,_caa ;};if _dbbc [0]=='%'{_bbb .parseComment ();_bbb .skipSpaces ();continue ;}else if _dbbc [0]=='/'{_becfe ,_ebfa :=_bbb .parseName ();return _becfe ,_ebfa ;}else if _dbbc [0]=='('{_acecc ,_fbece :=_bbb .parseString ();
return _acecc ,_fbece ;}else if _dbbc [0]=='['{_cbb ,_agd :=_bbb .parseArray ();return _cbb ,_agd ;}else if (_dbbc [0]=='<')&&(_dbbc [1]=='<'){_dbec ,_egd :=_bbb .parseDict ();return _dbec ,_egd ;}else if _dbbc [0]=='<'{_ece ,_ceba :=_bbb .parseHexString ();
return _ece ,_ceba ;}else if _ada .IsDecimalDigit (_dbbc [0])||(_dbbc [0]=='-'&&_ada .IsDecimalDigit (_dbbc [1])){_gdg ,_dafa :=_bbb .parseNumber ();if _dafa !=nil {return nil ,_dafa ;};return _gdg ,nil ;}else {_aed ,_caf :=_bbb .parseOperand ();if _caf !=nil {return nil ,_caf ;
};return _aed ,nil ;};};};func (_ae *CIDSystemInfo )String ()string {return _g .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_ae .Registry ,_ae .Ordering ,_ae .Supplement );};type integer struct{_fbd bool ;_dgb int ;};func (_cbde *cMapParser )parseDict ()(cmapDict ,error ){_dba .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_eegg :=_cceb ();_dagb ,_ :=_cbde ._egc .ReadByte ();if _dagb !='<'{return _eegg ,ErrBadCMapDict ;};_dagb ,_ =_cbde ._egc .ReadByte ();if _dagb !='<'{return _eegg ,ErrBadCMapDict ;};for {_cbde .skipSpaces ();_gfgbg ,_feg :=_cbde ._egc .Peek (2);if _feg !=nil {return _eegg ,_feg ;
};if (_gfgbg [0]=='>')&&(_gfgbg [1]=='>'){_cbde ._egc .ReadByte ();_cbde ._egc .ReadByte ();break ;};_bggf ,_feg :=_cbde .parseName ();_dba .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_bggf .Name );if _feg !=nil {_dba .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",_feg );
return _eegg ,_feg ;};_cbde .skipSpaces ();_gcce ,_feg :=_cbde .parseObject ();if _feg !=nil {return _eegg ,_feg ;};_eegg .Dict [_bggf .Name ]=_gcce ;_cbde .skipSpaces ();_gfgbg ,_feg =_cbde ._egc .Peek (3);if _feg !=nil {return _eegg ,_feg ;};if string (_gfgbg )=="\u0064\u0065\u0066"{_cbde ._egc .Discard (3);
};};return _eegg ,nil ;};const (_eb =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._eca };type cmapOperand struct{Operand string ;};func _bc (_bcf string )(*CMap ,error ){_fed ,_fb :=_ad .Asset (_bcf );
if _fb !=nil {return nil ,_fb ;};return LoadCmapFromDataCID (_fed );};type cmapFloat struct{_faca float64 };func (_aeee *cMapParser )parseComment ()(string ,error ){var _ccd _ec .Buffer ;_ ,_fcgb :=_aeee .skipSpaces ();if _fcgb !=nil {return _ccd .String (),_fcgb ;
};_gbaa :=true ;for {_abb ,_cgcg :=_aeee ._egc .Peek (1);if _cgcg !=nil {_dba .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_cgcg );return _ccd .String (),_cgcg ;};if _gbaa &&_abb [0]!='%'{return _ccd .String (),ErrBadCMapComment ;
};_gbaa =false ;if (_abb [0]!='\r')&&(_abb [0]!='\n'){_gcf ,_ :=_aeee ._egc .ReadByte ();_ccd .WriteByte (_gcf );}else {break ;};};return _ccd .String (),nil ;};func NewCIDSystemInfo (obj _ada .PdfObject )(_ac CIDSystemInfo ,_ag error ){_f ,_ef :=_ada .GetDict (obj );
if !_ef {return CIDSystemInfo {},_ada .ErrTypeError ;};_ab ,_ef :=_ada .GetStringVal (_f .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_ef {return CIDSystemInfo {},_ada .ErrTypeError ;};_de ,_ef :=_ada .GetStringVal (_f .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));
if !_ef {return CIDSystemInfo {},_ada .ErrTypeError ;};_dbg ,_ef :=_ada .GetIntVal (_f .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_ef {return CIDSystemInfo {},_ada .ErrTypeError ;};return CIDSystemInfo {Registry :_ab ,Ordering :_de ,Supplement :_dbg },nil ;
};type cMapParser struct{_egc *_b .Reader };func (_cdc *cMapParser )parseOperand ()(cmapOperand ,error ){_acfd :=cmapOperand {};_cde :=_ec .Buffer {};for {_bfff ,_gbdcb :=_cdc ._egc .Peek (1);if _gbdcb !=nil {if _gbdcb ==_c .EOF {break ;};return _acfd ,_gbdcb ;
};if _ada .IsDelimiter (_bfff [0]){break ;};if _ada .IsWhiteSpace (_bfff [0]){break ;};_bdef ,_ :=_cdc ._egc .ReadByte ();_cde .WriteByte (_bdef );};if _cde .Len ()==0{return _acfd ,_g .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_acfd .Operand =_cde .String ();return _acfd ,nil ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_dba .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 :=_eeg (isSimple );cmap .cMapParser =_cge (data );_cbd :=cmap .parse ();if _cbd !=nil {return nil ,_cbd ;};if len (cmap ._ff )==0{if cmap ._fa !=""{return cmap ,nil ;};_dba .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 ;};type cmapDict struct{Dict map[string ]cmapObject ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (cmap *CMap )matchCode (_eg []byte )(_dec CharCode ,_bgb int ,_ddfd bool ){for _deg :=0;
_deg < _eb ;_deg ++{if _deg < len (_eg ){_dec =_dec <<8|CharCode (_eg [_deg ]);_bgb ++;};_ddfd =cmap .inCodespace (_dec ,_deg +1);if _ddfd {return _dec ,_bgb ,true ;};};_dba .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",_eg ,string (_eg ),cmap );
return 0,0,false ;};func (cmap *CMap )parse ()error {var _cfg cmapObject ;for {_ead ,_aee :=cmap .parseObject ();if _aee !=nil {if _aee ==_c .EOF {break ;};_dba .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_aee );
return _aee ;};switch _aega :=_ead .(type ){case cmapOperand :_fbf :=_aega ;switch _fbf .Operand {case _cfb :_afb :=cmap .parseCodespaceRange ();if _afb !=nil {return _afb ;};case _becf :_cda :=cmap .parseCIDRange ();if _cda !=nil {return _cda ;};case _bfb :_cee :=cmap .parseBfchar ();
if _cee !=nil {return _cee ;};case _fbc :_gcc :=cmap .parseBfrange ();if _gcc !=nil {return _gcc ;};case _cdfd :if _cfg ==nil {_dba .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 ;};_gdd ,_bbd :=_cfg .(cmapName );if !_bbd {_dba .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",_cfg );
return ErrBadCMap ;};cmap ._fa =_gdd .Name ;case _fde :_fcg :=cmap .parseSystemInfo ();if _fcg !=nil {return _fcg ;};};case cmapName :_dbe :=_aega ;switch _dbe .Name {case _fde :_fbb :=cmap .parseSystemInfo ();if _fbb !=nil {return _fbb ;};case _ggf :_dgf :=cmap .parseName ();
if _dgf !=nil {return _dgf ;};case _gfg :_ddfe :=cmap .parseType ();if _ddfe !=nil {return _ddfe ;};case _dcg :_ddcf :=cmap .parseVersion ();if _ddcf !=nil {return _ddcf ;};case _gca :if _aee =cmap .parseWMode ();_aee !=nil {return _aee ;};};};_cfg =_ead ;
};return nil ;};type CharCode uint32 ;type cmapString struct{String string ;};func IsPredefinedCMap (name string )bool {return _ad .AssetExists (name )};func (cmap *CMap )NBits ()int {return cmap ._ebf };func (cmap *CMap )parseCIDRange ()error {for {_fga ,_adc :=cmap .parseObject ();
if _adc !=nil {if _adc ==_c .EOF {break ;};return _adc ;};_cca ,_afd :=_fga .(cmapHexString );if !_afd {if _eee ,_ebg :=_fga .(cmapOperand );_ebg {if _eee .Operand ==_bcgg {return nil ;};return _dd .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");
};};_bbcb :=_abag (_cca );_fga ,_adc =cmap .parseObject ();if _adc !=nil {if _adc ==_c .EOF {break ;};return _adc ;};_gfcb ,_afd :=_fga .(cmapHexString );if !_afd {return _dd .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 (_cca ._acc )!=len (_gfcb ._acc ){return _dd .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");};_aac :=_abag (_gfcb );
if _bbcb > _aac {_dba .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",_bbcb ,_aac );
return ErrBadCMap ;};_fga ,_adc =cmap .parseObject ();if _adc !=nil {if _adc ==_c .EOF {break ;};return _adc ;};_fff ,_afd :=_fga .(cmapInt );if !_afd {return _dd .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 _fff ._aaaf < 0{return _dd .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_cdf :=_fff ._aaaf ;for _addd :=_bbcb ;_addd <=_aac ;_addd ++{cmap ._cba [_addd ]=CharCode (_cdf );
_cdf ++;};_dba .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",_bbcb ,_aac ,_fff ._aaaf );};return nil ;};func (cmap *CMap )parseWMode ()error {var _deb int ;
_dge :=false ;for _faa :=0;_faa < 3&&!_dge ;_faa ++{_bbde ,_gae :=cmap .parseObject ();if _gae !=nil {return _gae ;};switch _ace :=_bbde .(type ){case cmapOperand :switch _ace .Operand {case "\u0064\u0065\u0066":_dge =true ;default:_dba .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",_bbde );
return ErrBadCMap ;};case cmapInt :_deb =int (_ace ._aaaf );};};cmap ._gf =integer {_fbd :true ,_dgb :_deb };return nil ;};type cmapName struct{Name string ;};func _cge (_fcf []byte )*cMapParser {_eed :=cMapParser {};_aacd :=_ec .NewBuffer (_fcf );_eed ._egc =_b .NewReader (_aacd );
return &_eed ;};const (_fde ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_bcg ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_ced ="\u0065n\u0064\u0063\u006d\u0061\u0070";_cfb ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";
_cdad ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_bfb ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_ddg ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_fbc ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_eea ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_becf ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bcgg ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cdfd ="\u0075s\u0065\u0063\u006d\u0061\u0070";
_gca ="\u0057\u004d\u006fd\u0065";_ggf ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_gfg ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_dcg ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func _abag (_dad cmapHexString )CharCode {_dbf :=CharCode (0);
for _ ,_eec :=range _dad ._acc {_dbf <<=8;_dbf |=CharCode (_eec );};return _dbf ;};func (cmap *CMap )parseVersion ()error {_fcc :="";_cgc :=false ;for _gg :=0;_gg < 3&&!_cgc ;_gg ++{_cdg ,_ede :=cmap .parseObject ();if _ede !=nil {return _ede ;};switch _ccg :=_cdg .(type ){case cmapOperand :switch _ccg .Operand {case "\u0064\u0065\u0066":_cgc =true ;
default:_dba .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",_cdg );
return ErrBadCMap ;};case cmapInt :_fcc =_g .Sprintf ("\u0025\u0064",_ccg ._aaaf );case cmapFloat :_fcc =_g .Sprintf ("\u0025\u0066",_ccg ._faca );case cmapString :_fcc =_ccg .String ;default:_dba .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",_cdg );
};};cmap ._dde =_fcc ;return nil ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};