2020-02-07 21:56:30 +02:00
|
|
|
//
|
2020-08-27 21:45:09 +00:00
|
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
|
|
//
|
|
|
|
// This is a commercial product and requires a license to operate.
|
|
|
|
// A trial license can be obtained at https://unidoc.io
|
|
|
|
//
|
|
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
|
|
//
|
|
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
2020-06-03 23:55:15 +10:00
|
|
|
|
2021-07-30 00:21:16 +00:00
|
|
|
package cmap ;import (_bd "bufio";_ae "bytes";_ab "encoding/hex";_abe "errors";_c "fmt";_abc "github.com/unidoc/unipdf/v3/common";_ccb "github.com/unidoc/unipdf/v3/core";_cb "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_ad "io";_cc "sort";_a "strconv";
|
|
|
|
_af "strings";_b "unicode/utf16";);func _gfae (_eea cmapHexString )[]rune {if len (_eea ._abf )==1{return []rune {rune (_eea ._abf [0])};};_fag :=_eea ._abf ;if len (_fag )%2!=0{_fag =append (_fag ,0);_abc .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",_eea ,_fag );
|
|
|
|
};_gcac :=len (_fag )>>1;_gacb :=make ([]uint16 ,_gcac );for _dab :=0;_dab < _gcac ;_dab ++{_gacb [_dab ]=uint16 (_fag [_dab <<1])<<8+uint16 (_fag [_dab <<1+1]);};_eebe :=_b .Decode (_gacb );return _eebe ;};func (cmap *CMap )parseCIDRange ()error {for {_bfb ,_agf :=cmap .parseObject ();
|
|
|
|
if _agf !=nil {if _agf ==_ad .EOF {break ;};return _agf ;};_cad ,_afd :=_bfb .(cmapHexString );if !_afd {if _cfgd ,_dge :=_bfb .(cmapOperand );_dge {if _cfgd .Operand ==_aeca {return nil ;};return _abe .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");
|
|
|
|
};};_bfg :=_fdcd (_cad );_bfb ,_agf =cmap .parseObject ();if _agf !=nil {if _agf ==_ad .EOF {break ;};return _agf ;};_gbf ,_afd :=_bfb .(cmapHexString );if !_afd {return _abe .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 (_cad ._abf )!=len (_gbf ._abf ){return _abe .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");};_aeg :=_fdcd (_gbf );
|
|
|
|
if _bfg > _aeg {_abc .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",_bfg ,_aeg );
|
|
|
|
return ErrBadCMap ;};_bfb ,_agf =cmap .parseObject ();if _agf !=nil {if _agf ==_ad .EOF {break ;};return _agf ;};_cfaa ,_afd :=_bfb .(cmapInt );if !_afd {return _abe .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 _cfaa ._ebg < 0{return _abe .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_adc :=_cfaa ._ebg ;for _dgbb :=_bfg ;_dgbb <=_aeg ;_dgbb ++{cmap ._bf [_dgbb ]=CharCode (_adc );
|
|
|
|
_adc ++;};_abc .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",_bfg ,_aeg ,_cfaa ._ebg );};return nil ;};type cmapObject interface{};func (_bddg *cMapParser )parseOperand ()(cmapOperand ,error ){_gade :=cmapOperand {};
|
|
|
|
_gbafg :=_ae .Buffer {};for {_ecbe ,_eee :=_bddg ._baf .Peek (1);if _eee !=nil {if _eee ==_ad .EOF {break ;};return _gade ,_eee ;};if _ccb .IsDelimiter (_ecbe [0]){break ;};if _ccb .IsWhiteSpace (_ecbe [0]){break ;};_bcbe ,_ :=_bddg ._baf .ReadByte ();
|
|
|
|
_gbafg .WriteByte (_bcbe );};if _gbafg .Len ()==0{return _gade ,_c .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_gade .Operand =_gbafg .String ();return _gade ,nil ;
|
|
|
|
};type CMap struct{*cMapParser ;_ac string ;_gd int ;_gc int ;_cfg string ;_cbd string ;_gg CIDSystemInfo ;_fdc []Codespace ;_bf map[CharCode ]CharCode ;_df map[CharCode ]CharCode ;_fc map[CharCode ]string ;_ged map[string ]CharCode ;_e []byte ;_dc *_ccb .PdfObjectStream ;
|
|
|
|
};var (ErrBadCMap =_abe .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_abe .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 =_abe .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (cmap *CMap )Type ()int {return cmap ._gc };type cMapParser struct{_baf *_bd .Reader };func (cmap *CMap )parseName ()error {_egg :="";_efb :=false ;
|
|
|
|
for _agac :=0;_agac < 20&&!_efb ;_agac ++{_cgg ,_cbeg :=cmap .parseObject ();if _cbeg !=nil {return _cbeg ;};switch _gdae :=_cgg .(type ){case cmapOperand :switch _gdae .Operand {case "\u0064\u0065\u0066":_efb =true ;default:_abc .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",_cgg ,_egg );
|
|
|
|
if _egg !=""{_egg =_c .Sprintf ("\u0025\u0073\u0020%\u0073",_egg ,_gdae .Operand );};_abc .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",_egg );
|
|
|
|
};case cmapName :_egg =_gdae .Name ;};};if !_efb {_abc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ac =_egg ;return nil ;};const (_eeb =100;
|
|
|
|
_cgd ="\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";
|
|
|
|
_bgg ="\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 )parseBfchar ()error {for {_fgc ,_cgagg :=cmap .parseObject ();if _cgagg !=nil {if _cgagg ==_ad .EOF {break ;};return _cgagg ;};var _efa CharCode ;switch _fda :=_fgc .(type ){case cmapOperand :if _fda .Operand ==_fdbd {return nil ;};
|
|
|
|
return _abe .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_efa =_fdcd (_fda );default:return _abe .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
|
|
|
|
};_fgc ,_cgagg =cmap .parseObject ();if _cgagg !=nil {if _cgagg ==_ad .EOF {break ;};return _cgagg ;};var _fff []rune ;switch _fba :=_fgc .(type ){case cmapOperand :if _fba .Operand ==_fdbd {return nil ;};_abc .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",_fba );
|
|
|
|
return ErrBadCMap ;case cmapHexString :_fff =_gfae (_fba );case cmapName :_abc .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",_fba );_fff =[]rune {MissingCodeRune };
|
|
|
|
default:_abc .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",_fgc );return ErrBadCMap ;};cmap ._fc [_efa ]=string (_fff );};return nil ;};func (cmap *CMap )parseBfrange ()error {for {var _fef CharCode ;
|
|
|
|
_bgb ,_gfd :=cmap .parseObject ();if _gfd !=nil {if _gfd ==_ad .EOF {break ;};return _gfd ;};switch _efc :=_bgb .(type ){case cmapOperand :if _efc .Operand ==_ddc {return nil ;};return _abe .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
|
|
case cmapHexString :_fef =_fdcd (_efc );default:return _abe .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _fegg CharCode ;_bgb ,_gfd =cmap .parseObject ();if _gfd !=nil {if _gfd ==_ad .EOF {break ;};return _gfd ;
|
|
|
|
};switch _fge :=_bgb .(type ){case cmapOperand :_abc .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 :_fegg =_fdcd (_fge );default:_abc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bgb );return ErrBadCMap ;};_bgb ,_gfd =cmap .parseObject ();
|
|
|
|
if _gfd !=nil {if _gfd ==_ad .EOF {break ;};return _gfd ;};switch _gae :=_bgb .(type ){case cmapArray :if len (_gae .Array )!=int (_fegg -_fef )+1{_abc .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 _fec :=_fef ;_fec <=_fegg ;_fec ++{_beag :=_gae .Array [_fec -_fef ];_dba ,_addd :=_beag .(cmapHexString );if !_addd {return _abe .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
|
|
|
|
};_agad :=_gfae (_dba );cmap ._fc [_fec ]=string (_agad );};case cmapHexString :_gab :=_gfae (_gae );_ffab :=len (_gab );for _fbff :=_fef ;_fbff <=_fegg ;_fbff ++{cmap ._fc [_fbff ]=string (_gab );if _ffab > 0{_gab [_ffab -1]++;}else {_abc .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",_fbff );
|
|
|
|
};};default:_abc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bgb );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )inCodespace (_bfc CharCode ,_ba int )bool {for _ ,_faf :=range cmap ._fdc {if _faf .Low <=_bfc &&_bfc <=_faf .High &&_ba ==_faf .NumBytes {return true ;
|
|
|
|
};};return false ;};func (cmap *CMap )matchCode (_gbdb []byte )(_adg CharCode ,_gcef int ,_ece bool ){for _bfe :=0;_bfe < _fd ;_bfe ++{if _bfe < len (_gbdb ){_adg =_adg <<8|CharCode (_gbdb [_bfe ]);_gcef ++;};_ece =cmap .inCodespace (_adg ,_bfe +1);if _ece {return _adg ,_gcef ,true ;
|
|
|
|
};};_abc .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",_gbdb ,string (_gbdb ),cmap );
|
|
|
|
return 0,0,false ;};func _cdb (_bg string )(*CMap ,error ){_fa ,_dd :=_cb .Asset (_bg );if _dd !=nil {return nil ,_dd ;};return LoadCmapFromDataCID (_fa );};func (_dgc *cMapParser )parseComment ()(string ,error ){var _bcc _ae .Buffer ;_ ,_edea :=_dgc .skipSpaces ();
|
|
|
|
if _edea !=nil {return _bcc .String (),_edea ;};_dceg :=true ;for {_bfcc ,_gbaf :=_dgc ._baf .Peek (1);if _gbaf !=nil {_abc .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_gbaf );return _bcc .String (),_gbaf ;
|
|
|
|
};if _dceg &&_bfcc [0]!='%'{return _bcc .String (),ErrBadCMapComment ;};_dceg =false ;if (_bfcc [0]!='\r')&&(_bfcc [0]!='\n'){_fac ,_ :=_dgc ._baf .ReadByte ();_bcc .WriteByte (_fac );}else {break ;};};return _bcc .String (),nil ;};func (cmap *CMap )Stream ()(*_ccb .PdfObjectStream ,error ){if cmap ._dc !=nil {return cmap ._dc ,nil ;
|
|
|
|
};_bec ,_geb :=_ccb .MakeStream (cmap .Bytes (),_ccb .NewFlateEncoder ());if _geb !=nil {return nil ,_geb ;};cmap ._dc =_bec ;return cmap ._dc ,nil ;};func _ecf (_cbb string )rune {_bgf :=[]rune (_cbb );return _bgf [len (_bgf )-1]};type fbRange struct{_d CharCode ;
|
|
|
|
_ag CharCode ;_cbe string ;};func (cmap *CMap )parseType ()error {_edg :=0;_eda :=false ;for _ede :=0;_ede < 3&&!_eda ;_ede ++{_bffa ,_dgaa :=cmap .parseObject ();if _dgaa !=nil {return _dgaa ;};switch _bffc :=_bffa .(type ){case cmapOperand :switch _bffc .Operand {case "\u0064\u0065\u0066":_eda =true ;
|
|
|
|
default:_abc .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",_bffa );return ErrBadCMap ;};case cmapInt :_edg =int (_bffc ._ebg );
|
|
|
|
};};cmap ._gc =_edg ;return nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._fc )==0{return "";};_adgf :=make ([]CharCode ,0,len (cmap ._fc ));for _bfed :=range cmap ._fc {_adgf =append (_adgf ,_bfed );};_cc .Slice (_adgf ,func (_acf ,_ccaf int )bool {return _adgf [_acf ]< _adgf [_ccaf ]});
|
|
|
|
var _abg []charRange ;_gbe :=charRange {_adgf [0],_adgf [0]};_cae :=cmap ._fc [_adgf [0]];for _ ,_dce :=range _adgf [1:]{_bad :=cmap ._fc [_dce ];if _dce ==_gbe ._be +1&&_ecf (_bad )==_ecf (_cae )+1{_gbe ._be =_dce ;}else {_abg =append (_abg ,_gbe );_gbe ._cg ,_gbe ._be =_dce ,_dce ;
|
|
|
|
};_cae =_bad ;};_abg =append (_abg ,_gbe );var _dgg []CharCode ;var _bed []fbRange ;for _ ,_bea :=range _abg {if _bea ._cg ==_bea ._be {_dgg =append (_dgg ,_bea ._cg );}else {_bed =append (_bed ,fbRange {_d :_bea ._cg ,_ag :_bea ._be ,_cbe :cmap ._fc [_bea ._cg ]});
|
|
|
|
};};_abc .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 (_abg ),len (_dgg ),len (_bed ));var _abcc []string ;if len (_dgg )> 0{_fgb :=(len (_dgg )+_eeb -1)/_eeb ;
|
|
|
|
for _gfg :=0;_gfg < _fgb ;_gfg ++{_feb :=_aea (len (_dgg )-_gfg *_eeb ,_eeb );_abcc =append (_abcc ,_c .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_feb ));for _aga :=0;_aga < _feb ;_aga ++{_ecb :=_dgg [_gfg *_eeb +_aga ];
|
|
|
|
_dbd :=cmap ._fc [_ecb ];_abcc =append (_abcc ,_c .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_ecb ,_cde (_dbd )));};_abcc =append (_abcc ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_bed )> 0{_cda :=(len (_bed )+_eeb -1)/_eeb ;
|
|
|
|
for _aaa :=0;_aaa < _cda ;_aaa ++{_aac :=_aea (len (_bed )-_aaa *_eeb ,_eeb );_abcc =append (_abcc ,_c .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_aac ));for _dddc :=0;_dddc < _aac ;_dddc ++{_aff :=_bed [_aaa *_eeb +_dddc ];
|
|
|
|
_abcc =append (_abcc ,_c .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_aff ._d ,_aff ._ag ,_cde (_aff ._cbe )));};_abcc =append (_abcc ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};
|
|
|
|
return _af .Join (_abcc ,"\u000a");};func (cmap *CMap )parseCodespaceRange ()error {for {_faad ,_cfa :=cmap .parseObject ();if _cfa !=nil {if _cfa ==_ad .EOF {break ;};return _cfa ;};_ffa ,_bc :=_faad .(cmapHexString );if !_bc {if _edd ,_gdad :=_faad .(cmapOperand );
|
|
|
|
_gdad {if _edd .Operand ==_dbgf {return nil ;};return _abe .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_faad ,_cfa =cmap .parseObject ();if _cfa !=nil {if _cfa ==_ad .EOF {break ;};return _cfa ;
|
|
|
|
};_gcg ,_bc :=_faad .(cmapHexString );if !_bc {return _abe .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_ffa ._abf )!=len (_gcg ._abf ){return _abe .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");
|
|
|
|
};_ceg :=_fdcd (_ffa );_cee :=_fdcd (_gcg );if _cee < _ceg {_abc .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",_ceg ,_cee );
|
|
|
|
return ErrBadCMap ;};_aeec :=_gcg ._cgge ;_fbb :=Codespace {NumBytes :_aeec ,Low :_ceg ,High :_cee };cmap ._fdc =append (cmap ._fdc ,_fbb );_abc .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",_ceg ,_cee );
|
|
|
|
};if len (cmap ._fdc )==0{_abc .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 )parseVersion ()error {_eag :="";
|
|
|
|
_aad :=false ;for _cacc :=0;_cacc < 3&&!_aad ;_cacc ++{_ddb ,_bggf :=cmap .parseObject ();if _bggf !=nil {return _bggf ;};switch _ade :=_ddb .(type ){case cmapOperand :switch _ade .Operand {case "\u0064\u0065\u0066":_aad =true ;default:_abc .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",_ddb );
|
|
|
|
return ErrBadCMap ;};case cmapInt :_eag =_c .Sprintf ("\u0025\u0064",_ade ._ebg );case cmapFloat :_eag =_c .Sprintf ("\u0025\u0066",_ade ._bfd );case cmapString :_eag =_ade .String ;default:_abc .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",_ddb );
|
|
|
|
};};cmap ._cfg =_eag ;return nil ;};func (cmap *CMap )String ()string {_fg :=cmap ._gg ;_cfbd :=[]string {_c .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._gd ),_c .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._gc )};if cmap ._cfg !=""{_cfbd =append (_cfbd ,_c .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._cfg ));
|
|
|
|
};if cmap ._cbd !=""{_cfbd =append (_cfbd ,_c .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._cbd ));};_cfbd =append (_cfbd ,_c .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_fg .String ()));
|
|
|
|
if len (cmap ._fdc )> 0{_cfbd =append (_cfbd ,_c .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._fdc )));};if len (cmap ._fc )> 0{_cfbd =append (_cfbd ,_c .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._fc )));
|
|
|
|
};return _c .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ac ,_af .Join (_cfbd ,"\u0020"));};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_gb :=make (map[CharCode ]string ,len (codeToRune ));for _dbe ,_cd :=range codeToRune {_gb [_dbe ]=string (_cd );
|
|
|
|
};cmap :=&CMap {_ac :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_gc :2,_gd :16,_gg :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_fdc :[]Codespace {{Low :0,High :0xffff}},_fc :_gb ,_ged :make (map[string ]CharCode ,len (codeToRune )),_bf :make (map[CharCode ]CharCode ,len (codeToRune )),_df :make (map[CharCode ]CharCode ,len (codeToRune ))};
|
|
|
|
cmap .computeInverseMappings ();return cmap ;};func (_dca *cMapParser )parseName ()(cmapName ,error ){_ddda :="";_dcee :=false ;for {_efgb ,_ecfc :=_dca ._baf .Peek (1);if _ecfc ==_ad .EOF {break ;};if _ecfc !=nil {return cmapName {_ddda },_ecfc ;};if !_dcee {if _efgb [0]=='/'{_dcee =true ;
|
|
|
|
_dca ._baf .ReadByte ();}else {_abc .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",_efgb ,_efgb );return cmapName {_ddda },_c .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_efgb [0]);
|
|
|
|
};}else {if _ccb .IsWhiteSpace (_efgb [0]){break ;}else if (_efgb [0]=='/')||(_efgb [0]=='[')||(_efgb [0]=='(')||(_efgb [0]==']')||(_efgb [0]=='<')||(_efgb [0]=='>'){break ;}else if _efgb [0]=='#'{_bbe ,_bdd :=_dca ._baf .Peek (3);if _bdd !=nil {return cmapName {_ddda },_bdd ;
|
|
|
|
};_dca ._baf .Discard (3);_gef ,_bdd :=_ab .DecodeString (string (_bbe [1:3]));if _bdd !=nil {return cmapName {_ddda },_bdd ;};_ddda +=string (_gef );}else {_gbbc ,_ :=_dca ._baf .ReadByte ();_ddda +=string (_gbbc );};};};return cmapName {_ddda },nil ;
|
|
|
|
};type cmapName struct{Name string ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_abc .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 :=_age (isSimple );cmap .cMapParser =_fdcg (data );_gbd :=cmap .parse ();if _gbd !=nil {return nil ,_gbd ;};if len (cmap ._fdc )==0{if cmap ._cbd !=""{return cmap ,nil ;};_abc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
|
|
|
|
return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};type cmapString struct{String string ;};func (cmap *CMap )Bytes ()[]byte {_abc .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 ._e )> 0{return cmap ._e ;};cmap ._e =[]byte (_af .Join ([]string {_cgd ,cmap .toBfData (),_bgg },"\u000a"));return cmap ._e ;};func _fdcg (_edf []byte )*cMapParser {_ccd :=cMapParser {};_ccbe :=_ae .NewBuffer (_edf );_ccd ._baf =_bd .NewReader (_ccbe );
|
|
|
|
return &_ccd ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_dfg ,_eg :=cmap ._ged [s ];return _dfg ,_eg };func (_caef *cMapParser )parseString ()(cmapString ,error ){_caef ._baf .ReadByte ();_dde :=_ae .Buffer {};_fbe :=1;for {_cef ,_fdac :=_caef ._baf .Peek (1);
|
|
|
|
if _fdac !=nil {return cmapString {_dde .String ()},_fdac ;};if _cef [0]=='\\'{_caef ._baf .ReadByte ();_bcb ,_fae :=_caef ._baf .ReadByte ();if _fae !=nil {return cmapString {_dde .String ()},_fae ;};if _ccb .IsOctalDigit (_bcb ){_ddf ,_gcd :=_caef ._baf .Peek (2);
|
|
|
|
if _gcd !=nil {return cmapString {_dde .String ()},_gcd ;};var _fccd []byte ;_fccd =append (_fccd ,_bcb );for _ ,_cag :=range _ddf {if _ccb .IsOctalDigit (_cag ){_fccd =append (_fccd ,_cag );}else {break ;};};_caef ._baf .Discard (len (_fccd )-1);_abc .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_fccd );
|
|
|
|
_fdbdf ,_gcd :=_a .ParseUint (string (_fccd ),8,32);if _gcd !=nil {return cmapString {_dde .String ()},_gcd ;};_dde .WriteByte (byte (_fdbdf ));continue ;};switch _bcb {case 'n':_dde .WriteByte ('\n');case 'r':_dde .WriteByte ('\r');case 't':_dde .WriteByte ('\t');
|
|
|
|
case 'b':_dde .WriteByte ('\b');case 'f':_dde .WriteByte ('\f');case '(':_dde .WriteByte ('(');case ')':_dde .WriteByte (')');case '\\':_dde .WriteByte ('\\');};continue ;}else if _cef [0]=='('{_fbe ++;}else if _cef [0]==')'{_fbe --;if _fbe ==0{_caef ._baf .ReadByte ();
|
|
|
|
break ;};};_ddfe ,_ :=_caef ._baf .ReadByte ();_dde .WriteByte (_ddfe );};return cmapString {_dde .String ()},nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func _aea (_ffd ,_cfad int )int {if _ffd < _cfad {return _ffd ;
|
|
|
|
};return _cfad ;};func (_aef *cMapParser )skipSpaces ()(int ,error ){_egef :=0;for {_ffg ,_fga :=_aef ._baf .Peek (1);if _fga !=nil {return 0,_fga ;};if _ccb .IsWhiteSpace (_ffg [0]){_aef ._baf .ReadByte ();_egef ++;}else {break ;};};return _egef ,nil ;
|
|
|
|
};func (cmap *CMap )parse ()error {var _cbda cmapObject ;for {_cdgc ,_cbgc :=cmap .parseObject ();if _cbgc !=nil {if _cbgc ==_ad .EOF {break ;};_abc .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_cbgc );
|
|
|
|
return _cbgc ;};switch _gdd :=_cdgc .(type ){case cmapOperand :_ggb :=_gdd ;switch _ggb .Operand {case _dff :_fede :=cmap .parseCodespaceRange ();if _fede !=nil {return _fede ;};case _ccg :_ded :=cmap .parseCIDRange ();if _ded !=nil {return _ded ;};case _beb :_cgf :=cmap .parseBfchar ();
|
|
|
|
if _cgf !=nil {return _cgf ;};case _aeea :_ddae :=cmap .parseBfrange ();if _ddae !=nil {return _ddae ;};case _dbc :if _cbda ==nil {_abc .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 ;};_dddd ,_acd :=_cbda .(cmapName );if !_acd {_abc .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",_cbda );
|
|
|
|
return ErrBadCMap ;};cmap ._cbd =_dddd .Name ;case _ggd :_ea :=cmap .parseSystemInfo ();if _ea !=nil {return _ea ;};};case cmapName :_eecb :=_gdd ;switch _eecb .Name {case _ggd :_gde :=cmap .parseSystemInfo ();if _gde !=nil {return _gde ;};case _aaca :_cffe :=cmap .parseName ();
|
|
|
|
if _cffe !=nil {return _cffe ;};case _bag :_ceb :=cmap .parseType ();if _ceb !=nil {return _ceb ;};case _eb :_afc :=cmap .parseVersion ();if _afc !=nil {return _afc ;};};};_cbda =_cdgc ;};return nil ;};const (_ggd ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";
|
|
|
|
_bdb ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_cbbd ="\u0065n\u0064\u0063\u006d\u0061\u0070";_dff ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_dbgf ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
|
|
|
|
_beb ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_fdbd ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_aeea ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_ddc ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
|
|
|
|
_ccg ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_aeca ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_dbc ="\u0075s\u0065\u0063\u006d\u0061\u0070";_aaca ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
|
|
|
|
_bag ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_eb ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func _fdcd (_gagb cmapHexString )CharCode {_fdf :=CharCode (0);
|
|
|
|
for _ ,_febae :=range _gagb ._abf {_fdf <<=8;_fdf |=CharCode (_febae );};return _fdf ;};func (_cf *CIDSystemInfo )String ()string {return _c .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_cf .Registry ,_cf .Ordering ,_cf .Supplement );
|
|
|
|
};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gbdg ,_ddd :=cmap .BytesToCharcodes (data );if !_ddd {_abc .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;};_dga :=make ([]string ,len (_gbdg ));var _cac []CharCode ;for _ed ,_aca :=range _gbdg {_gbc ,_cfb :=cmap ._fc [_aca ];if !_cfb {_cac =append (_cac ,_aca );_gbc =MissingCodeString ;};_dga [_ed ]=_gbc ;};_ggf :=_af .Join (_dga ,"");if len (_cac )> 0{_abc .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 ),_gbdg ,len (_cac ),_cac ,_ggf ,cmap );
|
|
|
|
};return _ggf ,len (_cac );};func _bcg ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (cmap *CMap )computeInverseMappings (){for _gda ,_dbg :=range cmap ._bf {if _agc ,_dda :=cmap ._df [_dbg ];!_dda ||(_dda &&_agc > _gda ){cmap ._df [_dbg ]=_gda ;
|
|
|
|
};};for _ec ,_cff :=range cmap ._fc {if _add ,_dgb :=cmap ._ged [_cff ];!_dgb ||(_dgb &&_add > _ec ){cmap ._ged [_cff ]=_ec ;};};_cc .Slice (cmap ._fdc ,func (_gce ,_gad int )bool {return cmap ._fdc [_gce ].Low < cmap ._fdc [_gad ].Low });};func (cmap *CMap )Name ()string {return cmap ._ac };
|
|
|
|
type charRange struct{_cg CharCode ;_be CharCode ;};func _cde (_ff string )string {_eff :=[]rune (_ff );_ege :=make ([]string ,len (_eff ));for _fcf ,_fgd :=range _eff {_ege [_fcf ]=_c .Sprintf ("\u0025\u0030\u0034\u0078",_fgd );};return _c .Sprintf ("\u003c\u0025\u0073\u003e",_af .Join (_ege ,""));
|
|
|
|
};func (_bee *cMapParser )parseHexString ()(cmapHexString ,error ){_bee ._baf .ReadByte ();_bce :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_gfc :=_ae .Buffer {};for {_bee .skipSpaces ();
|
|
|
|
_bae ,_edag :=_bee ._baf .Peek (1);if _edag !=nil {return cmapHexString {},_edag ;};if _bae [0]=='>'{_bee ._baf .ReadByte ();break ;};_edb ,_ :=_bee ._baf .ReadByte ();if _ae .IndexByte (_bce ,_edb )>=0{_gfc .WriteByte (_edb );};};if _gfc .Len ()%2==1{_abc .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",_gfc .String ());
|
|
|
|
_gfc .WriteByte ('0');};_efbc :=_gfc .Len ()/2;_ebd ,_ :=_ab .DecodeString (_gfc .String ());return cmapHexString {_cgge :_efbc ,_abf :_ebd },nil ;};func NewCIDSystemInfo (obj _ccb .PdfObject )(_da CIDSystemInfo ,_g error ){_cbg ,_ge :=_ccb .GetDict (obj );
|
|
|
|
if !_ge {return CIDSystemInfo {},_ccb .ErrTypeError ;};_db ,_ge :=_ccb .GetStringVal (_cbg .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_ge {return CIDSystemInfo {},_ccb .ErrTypeError ;};_fb ,_ge :=_ccb .GetStringVal (_cbg .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));
|
|
|
|
if !_ge {return CIDSystemInfo {},_ccb .ErrTypeError ;};_ca ,_ge :=_ccb .GetIntVal (_cbg .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_ge {return CIDSystemInfo {},_ccb .ErrTypeError ;};return CIDSystemInfo {Registry :_db ,Ordering :_fb ,Supplement :_ca },nil ;
|
|
|
|
};func _age (_cdg bool )*CMap {_aa :=16;if _cdg {_aa =8;};return &CMap {_gd :_aa ,_bf :make (map[CharCode ]CharCode ),_df :make (map[CharCode ]CharCode ),_fc :make (map[CharCode ]string ),_ged :make (map[string ]CharCode )};};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_cga ,_gaa :=cmap ._df [cid ];
|
|
|
|
return _cga ,_gaa ;};const (_fd =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););type cmapArray struct{Array []cmapObject ;};func _gfdc (_bba cmapHexString )rune {_fad :=_gfae (_bba );if _dbga :=len (_fad );_dbga ==0{_abc .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",_bba );
|
|
|
|
return MissingCodeRune ;};if len (_fad )> 1{_abc .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",_bba ,_fad );
|
|
|
|
};return _fad [0];};type cmapDict struct{Dict map[string ]cmapObject ;};func (_afe *cMapParser )parseDict ()(cmapDict ,error ){_abc .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_adea :=_bcg ();
|
|
|
|
_fbea ,_ :=_afe ._baf .ReadByte ();if _fbea !='<'{return _adea ,ErrBadCMapDict ;};_fbea ,_ =_afe ._baf .ReadByte ();if _fbea !='<'{return _adea ,ErrBadCMapDict ;};for {_afe .skipSpaces ();_gec ,_fdg :=_afe ._baf .Peek (2);if _fdg !=nil {return _adea ,_fdg ;
|
|
|
|
};if (_gec [0]=='>')&&(_gec [1]=='>'){_afe ._baf .ReadByte ();_afe ._baf .ReadByte ();break ;};_aeed ,_fdg :=_afe .parseName ();_abc .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_aeed .Name );if _fdg !=nil {_abc .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",_fdg );
|
|
|
|
return _adea ,_fdg ;};_afe .skipSpaces ();_dgbea ,_fdg :=_afe .parseObject ();if _fdg !=nil {return _adea ,_fdg ;};_adea .Dict [_aeed .Name ]=_dgbea ;_afe .skipSpaces ();_gec ,_fdg =_afe ._baf .Peek (3);if _fdg !=nil {return _adea ,_fdg ;};if string (_gec )=="\u0064\u0065\u0066"{_afe ._baf .Discard (3);
|
|
|
|
};};return _adea ,nil ;};type cmapFloat struct{_bfd float64 };func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_dgbe ,_bb :=cmap ._bf [code ];return _dgbe ,_bb ;};func (_gca *cMapParser )parseArray ()(cmapArray ,error ){_ced :=cmapArray {};
|
|
|
|
_ced .Array =[]cmapObject {};_gca ._baf .ReadByte ();for {_gca .skipSpaces ();_dgba ,_efge :=_gca ._baf .Peek (1);if _efge !=nil {return _ced ,_efge ;};if _dgba [0]==']'{_gca ._baf .ReadByte ();break ;};_febab ,_efge :=_gca .parseObject ();if _efge !=nil {return _ced ,_efge ;
|
|
|
|
};_ced .Array =append (_ced .Array ,_febab );};return _ced ,nil ;};func (cmap *CMap )NBits ()int {return cmap ._gd };type cmapOperand struct{Operand string ;};type cmapInt struct{_ebg int64 };func IsPredefinedCMap (name string )bool {return _cb .AssetExists (name )};
|
|
|
|
func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _ef ,_gbb :=cmap ._fc [code ];_gbb {return _ef ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )parseSystemInfo ()error {_bdc :=false ;_feba :=false ;_afgd :="";_eab :=false ;
|
|
|
|
_gfa :=CIDSystemInfo {};for _gag :=0;_gag < 50&&!_eab ;_gag ++{_fca ,_fcc :=cmap .parseObject ();if _fcc !=nil {return _fcc ;};switch _cgc :=_fca .(type ){case cmapDict :_gaab :=_cgc .Dict ;_dea ,_agef :=_gaab ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];
|
|
|
|
if !_agef {_abc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bdcd ,_agef :=_dea .(cmapString );if !_agef {_abc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
|
|
return ErrBadCMap ;};_gfa .Registry =_bdcd .String ;_dea ,_agef =_gaab ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_agef {_abc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
|
|
return ErrBadCMap ;};_bdcd ,_agef =_dea .(cmapString );if !_agef {_abc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfa .Ordering =_bdcd .String ;
|
|
|
|
_ega ,_agef :=_gaab ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_agef {_abc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;
|
|
|
|
};_fcb ,_agef :=_ega .(cmapInt );if !_agef {_abc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfa .Supplement =int (_fcb ._ebg );_eab =true ;
|
|
|
|
case cmapOperand :switch _cgc .Operand {case "\u0062\u0065\u0067i\u006e":_bdc =true ;case "\u0065\u006e\u0064":_eab =true ;case "\u0064\u0065\u0066":_feba =false ;};case cmapName :if _bdc {_afgd =_cgc .Name ;_feba =true ;};case cmapString :if _feba {switch _afgd {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_gfa .Registry =_cgc .String ;
|
|
|
|
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_gfa .Ordering =_cgc .String ;};};case cmapInt :if _feba {switch _afgd {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_gfa .Supplement =int (_cgc ._ebg );};};};};if !_eab {_abc .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 ._gg =_gfa ;return nil ;};func (_gfde *cMapParser )parseObject ()(cmapObject ,error ){_gfde .skipSpaces ();for {_bge ,_bda :=_gfde ._baf .Peek (2);if _bda !=nil {return nil ,_bda ;};if _bge [0]=='%'{_gfde .parseComment ();_gfde .skipSpaces ();
|
|
|
|
continue ;}else if _bge [0]=='/'{_fgf ,_efec :=_gfde .parseName ();return _fgf ,_efec ;}else if _bge [0]=='('{_ecff ,_caa :=_gfde .parseString ();return _ecff ,_caa ;}else if _bge [0]=='['{_fdcf ,_egf :=_gfde .parseArray ();return _fdcf ,_egf ;}else if (_bge [0]=='<')&&(_bge [1]=='<'){_dgae ,_fecb :=_gfde .parseDict ();
|
|
|
|
return _dgae ,_fecb ;}else if _bge [0]=='<'{_bgea ,_bedc :=_gfde .parseHexString ();return _bgea ,_bedc ;}else if _ccb .IsDecimalDigit (_bge [0])||(_bge [0]=='-'&&_ccb .IsDecimalDigit (_bge [1])){_gdg ,_dgag :=_gfde .parseNumber ();if _dgag !=nil {return nil ,_dgag ;
|
|
|
|
};return _gdg ,nil ;}else {_eac ,_ggc :=_gfde .parseOperand ();if _ggc !=nil {return nil ,_ggc ;};return _eac ,nil ;};};};func (_fbd *cMapParser )parseNumber ()(cmapObject ,error ){_cgbf ,_dbf :=_ccb .ParseNumber (_fbd ._baf );if _dbf !=nil {return nil ,_dbf ;
|
|
|
|
};switch _dggg :=_cgbf .(type ){case *_ccb .PdfObjectFloat :return cmapFloat {float64 (*_dggg )},nil ;case *_ccb .PdfObjectInteger :return cmapInt {int64 (*_dggg )},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",_cgbf );
|
|
|
|
};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _dec []CharCode ;if cmap ._gd ==8{for _ ,_fee :=range data {_dec =append (_dec ,CharCode (_fee ));};return _dec ,true ;};for _cgag :=0;_cgag < len (data );{_fbf ,_cca ,_efe :=cmap .matchCode (data [_cgag :]);
|
|
|
|
if !_efe {_abc .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",_cgag ,data ,string (data ));
|
|
|
|
return _dec ,false ;};_dec =append (_dec ,_fbf );_cgag +=_cca ;};return _dec ,true ;};type CharCode uint32 ;type cmapHexString struct{_cgge int ;_abf []byte ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_acb :=_cdb (name );if _acb !=nil {return nil ,_acb ;
|
|
|
|
};if cmap ._cbd ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_aee ,_acb :=_cdb (cmap ._cbd );if _acb !=nil {return nil ,_acb ;};for _aec ,_gf :=range _aee ._bf {if _ ,_acg :=cmap ._bf [_aec ];!_acg {cmap ._bf [_aec ]=_gf ;};};cmap ._fdc =append (cmap ._fdc ,_aee ._fdc ...);
|
|
|
|
cmap .computeInverseMappings ();return cmap ,nil ;};
|