mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-29 13:48:54 +08:00
139 lines
40 KiB
Go
139 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 (_ad "bufio";_f "bytes";_e "encoding/hex";_d "errors";_b "fmt";_db "github.com/unidoc/unipdf/v3/common";_ge "github.com/unidoc/unipdf/v3/core";_de "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_gf "io";_ab "sort";_bg "strconv";
|
|
_ade "strings";_a "unicode/utf16";);func _abbg (_cd bool )*CMap {_cbe :=16;if _cd {_cbe =8;};return &CMap {_eg :_cbe ,_gb :make (map[CharCode ]CharCode ),_ef :make (map[CharCode ]CharCode ),_be :make (map[CharCode ]string ),_ebe :make (map[string ]CharCode )};
|
|
};type cMapParser struct{_fcbg *_ad .Reader };type fbRange struct{_c CharCode ;_gg CharCode ;_ba string ;};func (cmap *CMap )parseType ()error {_gbe :=0;_ecb :=false ;for _dgf :=0;_dgf < 3&&!_ecb ;_dgf ++{_bde ,_ece :=cmap .parseObject ();if _ece !=nil {return _ece ;
|
|
};switch _eaa :=_bde .(type ){case cmapOperand :switch _eaa .Operand {case "\u0064\u0065\u0066":_ecb =true ;default:_db .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",_bde );
|
|
return ErrBadCMap ;};case cmapInt :_gbe =int (_eaa ._edce );};};cmap ._dd =_gbe ;return nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._be )==0{return "";};_eegb :=make ([]CharCode ,0,len (cmap ._be ));for _ecgb :=range cmap ._be {_eegb =append (_eegb ,_ecgb );
|
|
};_ab .Slice (_eegb ,func (_cfb ,_caa int )bool {return _eegb [_cfb ]< _eegb [_caa ]});var _bcd []charRange ;_aece :=charRange {_eegb [0],_eegb [0]};_fac :=cmap ._be [_eegb [0]];for _ ,_abdb :=range _eegb [1:]{_gbb :=cmap ._be [_abdb ];if _abdb ==_aece ._eag +1&&_fdg (_gbb )==_fdg (_fac )+1{_aece ._eag =_abdb ;
|
|
}else {_bcd =append (_bcd ,_aece );_aece ._ea ,_aece ._eag =_abdb ,_abdb ;};_fac =_gbb ;};_bcd =append (_bcd ,_aece );var _acb []CharCode ;var _ceb []fbRange ;for _ ,_acf :=range _bcd {if _acf ._ea ==_acf ._eag {_acb =append (_acb ,_acf ._ea );}else {_ceb =append (_ceb ,fbRange {_c :_acf ._ea ,_gg :_acf ._eag ,_ba :cmap ._be [_acf ._ea ]});
|
|
};};_db .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 (_bcd ),len (_acb ),len (_ceb ));var _fge []string ;if len (_acb )> 0{_dcg :=(len (_acb )+_fdc -1)/_fdc ;
|
|
for _ceg :=0;_ceg < _dcg ;_ceg ++{_gcf :=_gbfee (len (_acb )-_ceg *_fdc ,_fdc );_fge =append (_fge ,_b .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_gcf ));for _befg :=0;_befg < _gcf ;_befg ++{_abg :=_acb [_ceg *_fdc +_befg ];
|
|
_ebeg :=cmap ._be [_abg ];_fge =append (_fge ,_b .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_abg ,_cbb (_ebeg )));};_fge =append (_fge ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_ceb )> 0{_da :=(len (_ceb )+_fdc -1)/_fdc ;
|
|
for _cce :=0;_cce < _da ;_cce ++{_ffa :=_gbfee (len (_ceb )-_cce *_fdc ,_fdc );_fge =append (_fge ,_b .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_ffa ));for _efd :=0;_efd < _ffa ;_efd ++{_decd :=_ceb [_cce *_fdc +_efd ];
|
|
_fge =append (_fge ,_b .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_decd ._c ,_decd ._gg ,_cbb (_decd ._ba )));};_fge =append (_fge ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _ade .Join (_fge ,"\u000a");
|
|
};func (cmap *CMap )Bytes ()[]byte {_db .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 ._bge )> 0{return cmap ._bge ;};cmap ._bge =[]byte (_ade .Join ([]string {_aac ,cmap .toBfData (),_bdc },"\u000a"));
|
|
return cmap ._bge ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _gbf ,_ebd :=cmap ._be [code ];_ebd {return _gbf ,true ;};return MissingCodeString ,false ;};func NewCIDSystemInfo (obj _ge .PdfObject )(_eb CIDSystemInfo ,_gea error ){_cg ,_deg :=_ge .GetDict (obj );
|
|
if !_deg {return CIDSystemInfo {},_ge .ErrTypeError ;};_ec ,_deg :=_ge .GetStringVal (_cg .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_deg {return CIDSystemInfo {},_ge .ErrTypeError ;};_aa ,_deg :=_ge .GetStringVal (_cg .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));
|
|
if !_deg {return CIDSystemInfo {},_ge .ErrTypeError ;};_af ,_deg :=_ge .GetIntVal (_cg .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_deg {return CIDSystemInfo {},_ge .ErrTypeError ;};return CIDSystemInfo {Registry :_ec ,Ordering :_aa ,Supplement :_af },nil ;
|
|
};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_db .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 :=_abbg (isSimple );cmap .cMapParser =_afbb (data );_ebg :=cmap .parse ();if _ebg !=nil {return nil ,_ebg ;};if len (cmap ._cc )==0{if cmap ._cb !=""{return cmap ,nil ;};_db .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 cmapFloat struct{_dfa float64 };func (cmap *CMap )String ()string {_ga :=cmap ._bf ;_abdf :=[]string {_b .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._eg ),_b .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._dd )};
|
|
if cmap ._adg !=""{_abdf =append (_abdf ,_b .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._adg ));};if cmap ._cb !=""{_abdf =append (_abdf ,_b .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._cb ));
|
|
};_abdf =append (_abdf ,_b .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_ga .String ()));if len (cmap ._cc )> 0{_abdf =append (_abdf ,_b .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._cc )));
|
|
};if len (cmap ._be )> 0{_abdf =append (_abdf ,_b .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._be )));};return _b .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ee ,_ade .Join (_abdf ,"\u0020"));
|
|
};func (cmap *CMap )parseCIDRange ()error {for {_cda ,_dcgb :=cmap .parseObject ();if _dcgb !=nil {if _dcgb ==_gf .EOF {break ;};return _dcgb ;};_degb ,_fef :=_cda .(cmapHexString );if !_fef {if _ggba ,_ccb :=_cda .(cmapOperand );_ccb {if _ggba .Operand ==_cfae {return nil ;
|
|
};return _d .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");};};_bcc :=_fdff (_degb );
|
|
_cda ,_dcgb =cmap .parseObject ();if _dcgb !=nil {if _dcgb ==_gf .EOF {break ;};return _dcgb ;};_fba ,_fef :=_cda .(cmapHexString );if !_fef {return _d .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 (_degb ._ccec )!=len (_fba ._ccec ){return _d .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");};_acd :=_fdff (_fba );
|
|
if _bcc > _acd {_db .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",_bcc ,_acd );
|
|
return ErrBadCMap ;};_cda ,_dcgb =cmap .parseObject ();if _dcgb !=nil {if _dcgb ==_gf .EOF {break ;};return _dcgb ;};_cge ,_fef :=_cda .(cmapInt );if !_fef {return _d .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 _cge ._edce < 0{return _d .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_aega :=_cge ._edce ;for _fdeb :=_bcc ;_fdeb <=_acd ;_fdeb ++{cmap ._gb [_fdeb ]=CharCode (_aega );
|
|
_aega ++;};_db .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",_bcc ,_acd ,_cge ._edce );};return nil ;};type CIDSystemInfo struct{Registry string ;
|
|
Ordering string ;Supplement int ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_ggg ,_dc :=cmap .BytesToCharcodes (data );if !_dc {_db .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;};_eeg :=make ([]string ,len (_ggg ));var _abe []CharCode ;for _aaf ,_dbd :=range _ggg {_dee ,_gba :=cmap ._be [_dbd ];if !_gba {_abe =append (_abe ,_dbd );_dee =MissingCodeString ;};_eeg [_aaf ]=_dee ;};_bae :=_ade .Join (_eeg ,"");if len (_abe )> 0{_db .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 ),_ggg ,len (_abe ),_abe ,_bae ,cmap );
|
|
};return _bae ,len (_abe );};func _abd (_eca string )(*CMap ,error ){_cgc ,_bef :=_de .Asset (_eca );if _bef !=nil {return nil ,_bef ;};return LoadCmapFromDataCID (_cgc );};func (cmap *CMap )parseVersion ()error {_fcg :="";_gaf :=false ;for _beaf :=0;_beaf < 3&&!_gaf ;
|
|
_beaf ++{_ffg ,_aeba :=cmap .parseObject ();if _aeba !=nil {return _aeba ;};switch _baef :=_ffg .(type ){case cmapOperand :switch _baef .Operand {case "\u0064\u0065\u0066":_gaf =true ;default:_db .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",_ffg );
|
|
return ErrBadCMap ;};case cmapInt :_fcg =_b .Sprintf ("\u0025\u0064",_baef ._edce );case cmapFloat :_fcg =_b .Sprintf ("\u0025\u0066",_baef ._dfa );case cmapString :_fcg =_baef .String ;default:_db .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",_ffg );
|
|
};};cmap ._adg =_fcg ;return nil ;};func _gbfee (_egad ,_fcgf int )int {if _egad < _fcgf {return _egad ;};return _fcgf ;};func (_cfab *cMapParser )parseOperand ()(cmapOperand ,error ){_daaa :=cmapOperand {};_ecbbf :=_f .Buffer {};for {_gee ,_acc :=_cfab ._fcbg .Peek (1);
|
|
if _acc !=nil {if _acc ==_gf .EOF {break ;};return _daaa ,_acc ;};if _ge .IsDelimiter (_gee [0]){break ;};if _ge .IsWhiteSpace (_gee [0]){break ;};_eab ,_ :=_cfab ._fcbg .ReadByte ();_ecbbf .WriteByte (_eab );};if _ecbbf .Len ()==0{return _daaa ,_b .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
|
|
};_daaa .Operand =_ecbbf .String ();return _daaa ,nil ;};const (_fb =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (cmap *CMap )computeInverseMappings (){for _bea ,_dec :=range cmap ._gb {if _decc ,_ebfc :=cmap ._ef [_dec ];
|
|
!_ebfc ||(_ebfc &&_decc > _bea ){cmap ._ef [_dec ]=_bea ;};};for _cfa ,_ca :=range cmap ._be {if _ed ,_ac :=cmap ._ebe [_ca ];!_ac ||(_ac &&_ed > _cfa ){cmap ._ebe [_ca ]=_cfa ;};};_ab .Slice (cmap ._cc ,func (_fd ,_dde int )bool {return cmap ._cc [_fd ].Low < cmap ._cc [_dde ].Low });
|
|
};func (cmap *CMap )parse ()error {var _bag cmapObject ;for {_fde ,_fcc :=cmap .parseObject ();if _fcc !=nil {if _fcc ==_gf .EOF {break ;};_db .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_fcc );
|
|
return _fcc ;};switch _gead :=_fde .(type ){case cmapOperand :_caf :=_gead ;switch _caf .Operand {case _ecgg :_dac :=cmap .parseCodespaceRange ();if _dac !=nil {return _dac ;};case _cec :_dba :=cmap .parseCIDRange ();if _dba !=nil {return _dba ;};case _daef :_acbf :=cmap .parseBfchar ();
|
|
if _acbf !=nil {return _acbf ;};case _cee :_ebegd :=cmap .parseBfrange ();if _ebegd !=nil {return _ebegd ;};case _gge :if _bag ==nil {_db .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 ;};_bgdc ,_fad :=_bag .(cmapName );if !_fad {_db .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",_bag );
|
|
return ErrBadCMap ;};cmap ._cb =_bgdc .Name ;case _cad :_cdc :=cmap .parseSystemInfo ();if _cdc !=nil {return _cdc ;};};case cmapName :_ggf :=_gead ;switch _ggf .Name {case _cad :_eec :=cmap .parseSystemInfo ();if _eec !=nil {return _eec ;};case _egag :_gbd :=cmap .parseName ();
|
|
if _gbd !=nil {return _gbd ;};case _ebb :_cca :=cmap .parseType ();if _cca !=nil {return _cca ;};case _gafc :_fcb :=cmap .parseVersion ();if _fcb !=nil {return _fcb ;};};};_bag =_fde ;};return nil ;};func (_abf *cMapParser )skipSpaces ()(int ,error ){_cff :=0;
|
|
for {_egce ,_afab :=_abf ._fcbg .Peek (1);if _afab !=nil {return 0,_afab ;};if _ge .IsWhiteSpace (_egce [0]){_abf ._fcbg .ReadByte ();_cff ++;}else {break ;};};return _cff ,nil ;};func (cmap *CMap )NBits ()int {return cmap ._eg };const (_fdc =100;_aac ="\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";
|
|
_bdc ="\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 )Name ()string {return cmap ._ee };func _fdg (_fdb string )rune {_afa :=[]rune (_fdb );return _afa [len (_afa )-1]};func (_efc *cMapParser )parseNumber ()(cmapObject ,error ){_bggb ,_bcdaf :=_ge .ParseNumber (_efc ._fcbg );if _bcdaf !=nil {return nil ,_bcdaf ;
|
|
};switch _beb :=_bggb .(type ){case *_ge .PdfObjectFloat :return cmapFloat {float64 (*_beb )},nil ;case *_ge .PdfObjectInteger :return cmapInt {int64 (*_beb )},nil ;};return nil ,_b .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_bggb );
|
|
};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_ag :=make (map[CharCode ]string ,len (codeToRune ));for _abb ,_ebf :=range codeToRune {_ag [_abb ]=string (_ebf );};cmap :=&CMap {_ee :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_dd :2,_eg :16,_bf :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_cc :[]Codespace {{Low :0,High :0xffff}},_be :_ag ,_ebe :make (map[string ]CharCode ,len (codeToRune )),_gb :make (map[CharCode ]CharCode ,len (codeToRune )),_ef :make (map[CharCode ]CharCode ,len (codeToRune ))};
|
|
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )inCodespace (_cdb CharCode ,_cdf int )bool {for _ ,_dbbc :=range cmap ._cc {if _dbbc .Low <=_cdb &&_cdb <=_dbbc .High &&_cdf ==_dbbc .NumBytes {return true ;};};return false ;};func _cadd ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};
|
|
func (cmap *CMap )matchCode (_edg []byte )(_ce CharCode ,_bgf int ,_bc bool ){for _cga :=0;_cga < _fb ;_cga ++{if _cga < len (_edg ){_ce =_ce <<8|CharCode (_edg [_cga ]);_bgf ++;};_bc =cmap .inCodespace (_ce ,_cga +1);if _bc {return _ce ,_bgf ,true ;};
|
|
};_db .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",_edg ,string (_edg ),cmap );
|
|
return 0,0,false ;};func (_cgcg *cMapParser )parseName ()(cmapName ,error ){_abef :="";_bbb :=false ;for {_ccag ,_adec :=_cgcg ._fcbg .Peek (1);if _adec ==_gf .EOF {break ;};if _adec !=nil {return cmapName {_abef },_adec ;};if !_bbb {if _ccag [0]=='/'{_bbb =true ;
|
|
_cgcg ._fcbg .ReadByte ();}else {_db .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",_ccag ,_ccag );return cmapName {_abef },_b .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_ccag [0]);
|
|
};}else {if _ge .IsWhiteSpace (_ccag [0]){break ;}else if (_ccag [0]=='/')||(_ccag [0]=='[')||(_ccag [0]=='(')||(_ccag [0]==']')||(_ccag [0]=='<')||(_ccag [0]=='>'){break ;}else if _ccag [0]=='#'{_cegc ,_eace :=_cgcg ._fcbg .Peek (3);if _eace !=nil {return cmapName {_abef },_eace ;
|
|
};_cgcg ._fcbg .Discard (3);_dbf ,_eace :=_e .DecodeString (string (_cegc [1:3]));if _eace !=nil {return cmapName {_abef },_eace ;};_abef +=string (_dbf );}else {_cbgb ,_ :=_cgcg ._fcbg .ReadByte ();_abef +=string (_cbgb );};};};return cmapName {_abef },nil ;
|
|
};func _fdff (_bbg cmapHexString )CharCode {_dbbda :=CharCode (0);for _ ,_bbf :=range _bbg ._ccec {_dbbda <<=8;_dbbda |=CharCode (_bbf );};return _dbbda ;};const (_cad ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_eaeg ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
|
|
_baa ="\u0065n\u0064\u0063\u006d\u0061\u0070";_ecgg ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_abgb ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
|
|
_daef ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_cafc ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_cee ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_aaa ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
|
|
_cec ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cfae ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_gge ="\u0075s\u0065\u0063\u006d\u0061\u0070";_egag ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
|
|
_ebb ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_gafc ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )parseCodespaceRange ()error {for {_bcb ,_dag :=cmap .parseObject ();if _dag !=nil {if _dag ==_gf .EOF {break ;
|
|
};return _dag ;};_dae ,_gab :=_bcb .(cmapHexString );if !_gab {if _edf ,_cdcc :=_bcb .(cmapOperand );_cdcc {if _edf .Operand ==_abgb {return nil ;};return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
};};_bcb ,_dag =cmap .parseObject ();if _dag !=nil {if _dag ==_gf .EOF {break ;};return _dag ;};_face ,_gab :=_bcb .(cmapHexString );if !_gab {return _d .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_dae ._ccec )!=len (_face ._ccec ){return _d .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");
|
|
};_fdge :=_fdff (_dae );_cbf :=_fdff (_face );if _cbf < _fdge {_db .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",_fdge ,_cbf );
|
|
return ErrBadCMap ;};_bcda :=_face ._bged ;_dea :=Codespace {NumBytes :_bcda ,Low :_fdge ,High :_cbf };cmap ._cc =append (cmap ._cc ,_dea );_db .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",_fdge ,_cbf );
|
|
};if len (cmap ._cc )==0{_db .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 cmapName struct{Name string ;
|
|
};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_aag ,_dbde :=cmap ._ef [cid ];return _aag ,_dbde ;};func (_fdf *cMapParser )parseObject ()(cmapObject ,error ){_fdf .skipSpaces ();for {_cab ,_edcd :=_fdf ._fcbg .Peek (2);if _edcd !=nil {return nil ,_edcd ;
|
|
};if _cab [0]=='%'{_fdf .parseComment ();_fdf .skipSpaces ();continue ;}else if _cab [0]=='/'{_bgdcb ,_afcf :=_fdf .parseName ();return _bgdcb ,_afcf ;}else if _cab [0]=='('{_cdad ,_gcg :=_fdf .parseString ();return _cdad ,_gcg ;}else if _cab [0]=='['{_dcgbb ,_afe :=_fdf .parseArray ();
|
|
return _dcgbb ,_afe ;}else if (_cab [0]=='<')&&(_cab [1]=='<'){_cdbg ,_dce :=_fdf .parseDict ();return _cdbg ,_dce ;}else if _cab [0]=='<'{_gdb ,_edb :=_fdf .parseHexString ();return _gdb ,_edb ;}else if _ge .IsDecimalDigit (_cab [0])||(_cab [0]=='-'&&_ge .IsDecimalDigit (_cab [1])){_bbc ,_fcf :=_fdf .parseNumber ();
|
|
if _fcf !=nil {return nil ,_fcf ;};return _bbc ,nil ;}else {_bgg ,_cef :=_fdf .parseOperand ();if _cef !=nil {return nil ,_cef ;};return _bgg ,nil ;};};};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func _dgfe (_dgca cmapHexString )[]rune {if len (_dgca ._ccec )==1{return []rune {rune (_dgca ._ccec [0])};
|
|
};_efb :=_dgca ._ccec ;if len (_efb )%2!=0{_efb =append (_efb ,0);_db .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",_dgca ,_efb );
|
|
};_faf :=len (_efb )>>1;_fefff :=make ([]uint16 ,_faf );for _dcdf :=0;_dcdf < _faf ;_dcdf ++{_fefff [_dcdf ]=uint16 (_efb [_dcdf <<1])<<8+uint16 (_efb [_dcdf <<1+1]);};_adef :=_a .Decode (_fefff );return _adef ;};func _cbb (_decca string )string {_geab :=[]rune (_decca );
|
|
_daa :=make ([]string ,len (_geab ));for _gag ,_facc :=range _geab {_daa [_gag ]=_b .Sprintf ("\u0025\u0030\u0034\u0078",_facc );};return _b .Sprintf ("\u003c\u0025\u0073\u003e",_ade .Join (_daa ,""));};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _gc []CharCode ;
|
|
if cmap ._eg ==8{for _ ,_ebda :=range data {_gc =append (_gc ,CharCode (_ebda ));};return _gc ,true ;};for _adf :=0;_adf < len (data );{_gd ,_egc ,_adc :=cmap .matchCode (data [_adf :]);if !_adc {_db .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",_adf ,data ,string (data ));
|
|
return _gc ,false ;};_gc =append (_gc ,_gd );_adf +=_egc ;};return _gc ,true ;};type cmapArray struct{Array []cmapObject ;};type cmapDict struct{Dict map[string ]cmapObject ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_ace ,_afca :=cmap ._gb [code ];
|
|
return _ace ,_afca ;};func (_ffb *cMapParser )parseComment ()(string ,error ){var _edbd _f .Buffer ;_ ,_fgb :=_ffb .skipSpaces ();if _fgb !=nil {return _edbd .String (),_fgb ;};_ggeg :=true ;for {_gfb ,_bfb :=_ffb ._fcbg .Peek (1);if _bfb !=nil {_db .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_bfb );
|
|
return _edbd .String (),_bfb ;};if _ggeg &&_gfb [0]!='%'{return _edbd .String (),ErrBadCMapComment ;};_ggeg =false ;if (_gfb [0]!='\r')&&(_gfb [0]!='\n'){_bced ,_ :=_ffb ._fcbg .ReadByte ();_edbd .WriteByte (_bced );}else {break ;};};return _edbd .String (),nil ;
|
|
};func _afbb (_ffgb []byte )*cMapParser {_dega :=cMapParser {};_egae :=_f .NewBuffer (_ffgb );_dega ._fcbg =_ad .NewReader (_egae );return &_dega ;};func (_dab *cMapParser )parseString ()(cmapString ,error ){_dab ._fcbg .ReadByte ();_gdbe :=_f .Buffer {};
|
|
_cdac :=1;for {_bfd ,_beac :=_dab ._fcbg .Peek (1);if _beac !=nil {return cmapString {_gdbe .String ()},_beac ;};if _bfd [0]=='\\'{_dab ._fcbg .ReadByte ();_fdbd ,_cada :=_dab ._fcbg .ReadByte ();if _cada !=nil {return cmapString {_gdbe .String ()},_cada ;
|
|
};if _ge .IsOctalDigit (_fdbd ){_befgg ,_cae :=_dab ._fcbg .Peek (2);if _cae !=nil {return cmapString {_gdbe .String ()},_cae ;};var _bdf []byte ;_bdf =append (_bdf ,_fdbd );for _ ,_bdg :=range _befgg {if _ge .IsOctalDigit (_bdg ){_bdf =append (_bdf ,_bdg );
|
|
}else {break ;};};_dab ._fcbg .Discard (len (_bdf )-1);_db .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_bdf );_fce ,_cae :=_bg .ParseUint (string (_bdf ),8,32);if _cae !=nil {return cmapString {_gdbe .String ()},_cae ;
|
|
};_gdbe .WriteByte (byte (_fce ));continue ;};switch _fdbd {case 'n':_gdbe .WriteByte ('\n');case 'r':_gdbe .WriteByte ('\r');case 't':_gdbe .WriteByte ('\t');case 'b':_gdbe .WriteByte ('\b');case 'f':_gdbe .WriteByte ('\f');case '(':_gdbe .WriteByte ('(');
|
|
case ')':_gdbe .WriteByte (')');case '\\':_gdbe .WriteByte ('\\');};continue ;}else if _bfd [0]=='('{_cdac ++;}else if _bfd [0]==')'{_cdac --;if _cdac ==0{_dab ._fcbg .ReadByte ();break ;};};_cgg ,_ :=_dab ._fcbg .ReadByte ();_gdbe .WriteByte (_cgg );};
|
|
return cmapString {_gdbe .String ()},nil ;};type cmapOperand struct{Operand string ;};type cmapObject interface{};func (cmap *CMap )parseBfchar ()error {for {_fee ,_gbfe :=cmap .parseObject ();if _gbfe !=nil {if _gbfe ==_gf .EOF {break ;};return _gbfe ;
|
|
};var _gdd CharCode ;switch _bdce :=_fee .(type ){case cmapOperand :if _bdce .Operand ==_cafc {return nil ;};return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_gdd =_fdff (_bdce );
|
|
default:return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_fee ,_gbfe =cmap .parseObject ();if _gbfe !=nil {if _gbfe ==_gf .EOF {break ;};return _gbfe ;};var _eed []rune ;switch _bed :=_fee .(type ){case cmapOperand :if _bed .Operand ==_cafc {return nil ;
|
|
};_db .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",_bed );return ErrBadCMap ;case cmapHexString :_eed =_dgfe (_bed );
|
|
case cmapName :_db .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",_bed );_eed =[]rune {MissingCodeRune };default:_db .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",_fee );
|
|
return ErrBadCMap ;};cmap ._be [_gdd ]=string (_eed );};return nil ;};type cmapInt struct{_edce int64 };func (cmap *CMap )Type ()int {return cmap ._dd };type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )Stream ()(*_ge .PdfObjectStream ,error ){if cmap ._fg !=nil {return cmap ._fg ,nil ;
|
|
};_aeg ,_bgb :=_ge .MakeStream (cmap .Bytes (),_ge .NewFlateEncoder ());if _bgb !=nil {return nil ,_bgb ;};cmap ._fg =_aeg ;return cmap ._fg ,nil ;};func (cmap *CMap )parseSystemInfo ()error {_bdd :=false ;_ega :=false ;_agg :="";_dgce :=false ;_bbe :=CIDSystemInfo {};
|
|
for _egg :=0;_egg < 50&&!_dgce ;_egg ++{_dbbd ,_cdbb :=cmap .parseObject ();if _cdbb !=nil {return _cdbb ;};switch _bgc :=_dbbd .(type ){case cmapDict :_ggb :=_bgc .Dict ;_aga ,_aggd :=_ggb ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_aggd {_db .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_acfe ,_aggd :=_aga .(cmapString );if !_aggd {_db .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bbe .Registry =_acfe .String ;
|
|
_aga ,_aggd =_ggb ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_aggd {_db .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_acfe ,_aggd =_aga .(cmapString );
|
|
if !_aggd {_db .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bbe .Ordering =_acfe .String ;_aff ,_aggd :=_ggb ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
|
|
if !_aggd {_db .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bbec ,_aggd :=_aff .(cmapInt );if !_aggd {_db .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_bbe .Supplement =int (_bbec ._edce );_dgce =true ;case cmapOperand :switch _bgc .Operand {case "\u0062\u0065\u0067i\u006e":_bdd =true ;case "\u0065\u006e\u0064":_dgce =true ;case "\u0064\u0065\u0066":_ega =false ;};case cmapName :if _bdd {_agg =_bgc .Name ;
|
|
_ega =true ;};case cmapString :if _ega {switch _agg {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_bbe .Registry =_bgc .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_bbe .Ordering =_bgc .String ;};};case cmapInt :if _ega {switch _agg {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_bbe .Supplement =int (_bgc ._edce );
|
|
};};};};if !_dgce {_db .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006e\u0066\u006f\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u006c\u0079");
|
|
return ErrBadCMap ;};cmap ._bf =_bbe ;return nil ;};func IsPredefinedCMap (name string )bool {return _de .AssetExists (name )};func (_cfe *cMapParser )parseHexString ()(cmapHexString ,error ){_cfe ._fcbg .ReadByte ();_faccb :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
|
|
_gfg :=_f .Buffer {};for {_cfe .skipSpaces ();_gad ,_dcd :=_cfe ._fcbg .Peek (1);if _dcd !=nil {return cmapHexString {},_dcd ;};if _gad [0]=='>'{_cfe ._fcbg .ReadByte ();break ;};_cba ,_ :=_cfe ._fcbg .ReadByte ();if _f .IndexByte (_faccb ,_cba )>=0{_gfg .WriteByte (_cba );
|
|
};};if _gfg .Len ()%2==1{_db .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",_gfg .String ());_gfg .WriteByte ('0');};_acdd :=_gfg .Len ()/2;
|
|
_dcb ,_ :=_e .DecodeString (_gfg .String ());return cmapHexString {_bged :_acdd ,_ccec :_dcb },nil ;};type cmapString struct{String string ;};type charRange struct{_ea CharCode ;_eag CharCode ;};type CMap struct{*cMapParser ;_ee string ;_eg int ;_dd int ;
|
|
_adg string ;_cb string ;_bf CIDSystemInfo ;_cc []Codespace ;_gb map[CharCode ]CharCode ;_ef map[CharCode ]CharCode ;_be map[CharCode ]string ;_ebe map[string ]CharCode ;_bge []byte ;_fg *_ge .PdfObjectStream ;};type CharCode uint32 ;func (cmap *CMap )parseBfrange ()error {for {var _aeaf CharCode ;
|
|
_bcg ,_fgf :=cmap .parseObject ();if _fgf !=nil {if _fgf ==_gf .EOF {break ;};return _fgf ;};switch _abdd :=_bcg .(type ){case cmapOperand :if _abdd .Operand ==_aaa {return nil ;};return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
case cmapHexString :_aeaf =_fdff (_abdd );default:return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _aef CharCode ;_bcg ,_fgf =cmap .parseObject ();if _fgf !=nil {if _fgf ==_gf .EOF {break ;};return _fgf ;
|
|
};switch _ddag :=_bcg .(type ){case cmapOperand :_db .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 :_aef =_fdff (_ddag );default:_db .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bcg );return ErrBadCMap ;};_bcg ,_fgf =cmap .parseObject ();
|
|
if _fgf !=nil {if _fgf ==_gf .EOF {break ;};return _fgf ;};switch _efa :=_bcg .(type ){case cmapArray :if len (_efa .Array )!=int (_aef -_aeaf )+1{_db .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 _adcg :=_aeaf ;_adcg <=_aef ;_adcg ++{_abgf :=_efa .Array [_adcg -_aeaf ];_ecd ,_afb :=_abgf .(cmapHexString );if !_afb {return _d .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
|
|
};_cbgd :=_dgfe (_ecd );cmap ._be [_adcg ]=string (_cbgd );};case cmapHexString :_feff :=_dgfe (_efa );_eecd :=len (_feff );for _ccf :=_aeaf ;_ccf <=_aef ;_ccf ++{cmap ._be [_ccf ]=string (_feff );if _eecd > 0{_feff [_eecd -1]++;}else {_db .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",_ccf );
|
|
};};default:_db .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bcg );return ErrBadCMap ;};};return nil ;};func (_bca *cMapParser )parseArray ()(cmapArray ,error ){_aba :=cmapArray {};
|
|
_aba .Array =[]cmapObject {};_bca ._fcbg .ReadByte ();for {_bca .skipSpaces ();_gff ,_gfbgd :=_bca ._fcbg .Peek (1);if _gfbgd !=nil {return _aba ,_gfbgd ;};if _gff [0]==']'{_bca ._fcbg .ReadByte ();break ;};_dca ,_gfbgd :=_bca .parseObject ();if _gfbgd !=nil {return _aba ,_gfbgd ;
|
|
};_aba .Array =append (_aba .Array ,_dca );};return _aba ,nil ;};func _fbea (_gdg cmapHexString )rune {_dgd :=_dgfe (_gdg );if _adca :=len (_dgd );_adca ==0{_db .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",_gdg );
|
|
return MissingCodeRune ;};if len (_dgd )> 1{_db .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",_gdg ,_dgd );
|
|
};return _dgd [0];};func (cmap *CMap )parseName ()error {_bagg :="";_fec :=false ;for _bce :=0;_bce < 20&&!_fec ;_bce ++{_bff ,_ebad :=cmap .parseObject ();if _ebad !=nil {return _ebad ;};switch _cacc :=_bff .(type ){case cmapOperand :switch _cacc .Operand {case "\u0064\u0065\u0066":_fec =true ;
|
|
default:_db .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",_bff ,_bagg );
|
|
if _bagg !=""{_bagg =_b .Sprintf ("\u0025\u0073\u0020%\u0073",_bagg ,_cacc .Operand );};_db .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",_bagg );
|
|
};case cmapName :_bagg =_cacc .Name ;};};if !_fec {_db .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ee =_bagg ;return nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_aec ,_eba :=cmap ._ebe [s ];
|
|
return _aec ,_eba ;};var (ErrBadCMap =_d .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_d .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 =_d .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (_ae *CIDSystemInfo )String ()string {return _b .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_ae .Registry ,_ae .Ordering ,_ae .Supplement );
|
|
};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_aeb :=_abd (name );if _aeb !=nil {return nil ,_aeb ;};if cmap ._cb ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_eagb ,_aeb :=_abd (cmap ._cb );if _aeb !=nil {return nil ,_aeb ;
|
|
};for _aea ,_dg :=range _eagb ._gb {if _ ,_aeae :=cmap ._gb [_aea ];!_aeae {cmap ._gb [_aea ]=_dg ;};};cmap ._cc =append (cmap ._cc ,_eagb ._cc ...);cmap .computeInverseMappings ();return cmap ,nil ;};type cmapHexString struct{_bged int ;_ccec []byte ;
|
|
};func (_bedf *cMapParser )parseDict ()(cmapDict ,error ){_db .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_abfa :=_cadd ();_cabg ,_ :=_bedf ._fcbg .ReadByte ();if _cabg !='<'{return _abfa ,ErrBadCMapDict ;
|
|
};_cabg ,_ =_bedf ._fcbg .ReadByte ();if _cabg !='<'{return _abfa ,ErrBadCMapDict ;};for {_bedf .skipSpaces ();_cea ,_fbe :=_bedf ._fcbg .Peek (2);if _fbe !=nil {return _abfa ,_fbe ;};if (_cea [0]=='>')&&(_cea [1]=='>'){_bedf ._fcbg .ReadByte ();_bedf ._fcbg .ReadByte ();
|
|
break ;};_df ,_fbe :=_bedf .parseName ();_db .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_df .Name );if _fbe !=nil {_db .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",_fbe );
|
|
return _abfa ,_fbe ;};_bedf .skipSpaces ();_abc ,_fbe :=_bedf .parseObject ();if _fbe !=nil {return _abfa ,_fbe ;};_abfa .Dict [_df .Name ]=_abc ;_bedf .skipSpaces ();_cea ,_fbe =_bedf ._fcbg .Peek (3);if _fbe !=nil {return _abfa ,_fbe ;};if string (_cea )=="\u0064\u0065\u0066"{_bedf ._fcbg .Discard (3);
|
|
};};return _abfa ,nil ;}; |