mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-27 13:48:51 +08:00
140 lines
41 KiB
Go
140 lines
41 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package cmap ;import (_dee "bufio";_ge "bytes";_de "encoding/hex";_c "errors";_d "fmt";_ga "github.com/unidoc/unipdf/v3/common";_f "github.com/unidoc/unipdf/v3/core";_cg "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_e "io";_cc "sort";_g "strconv";
|
|
_bc "strings";_a "unicode/utf16";);type CMap struct{*cMapParser ;_gee string ;_ee int ;_cd int ;_efd string ;_gb string ;_gd CIDSystemInfo ;_bb []Codespace ;_bg map[CharCode ]CharCode ;_ddg map[CharCode ]CharCode ;_bf map[CharCode ]string ;_fg map[string ]CharCode ;
|
|
_edf []byte ;_db *_f .PdfObjectStream ;_fcd integer ;};type cmapName struct{Name string ;};type fbRange struct{_ed CharCode ;_dd CharCode ;_af string ;};func (_ccf *cMapParser )skipSpaces ()(int ,error ){_geg :=0;for {_gceb ,_bfce :=_ccf ._gaea .Peek (1);
|
|
if _bfce !=nil {return 0,_bfce ;};if _f .IsWhiteSpace (_gceb [0]){_ccf ._gaea .ReadByte ();_geg ++;}else {break ;};};return _geg ,nil ;};func (cmap *CMap )Stream ()(*_f .PdfObjectStream ,error ){if cmap ._db !=nil {return cmap ._db ,nil ;};_ea ,_bbe :=_f .MakeStream (cmap .Bytes (),_f .NewFlateEncoder ());
|
|
if _bbe !=nil {return nil ,_bbe ;};cmap ._db =_ea ;return cmap ._db ,nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_cef ,_cdb :=cmap ._ddg [cid ];return _cef ,_cdb ;};func (cmap *CMap )parse ()error {var _aed cmapObject ;for {_ebc ,_gbea :=cmap .parseObject ();
|
|
if _gbea !=nil {if _gbea ==_e .EOF {break ;};_ga .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_gbea );return _gbea ;};switch _gf :=_ebc .(type ){case cmapOperand :_ffa :=_gf ;
|
|
switch _ffa .Operand {case _ageb :_gbd :=cmap .parseCodespaceRange ();if _gbd !=nil {return _gbd ;};case _bbf :_cfe :=cmap .parseCIDRange ();if _cfe !=nil {return _cfe ;};case _faa :_dcbd :=cmap .parseBfchar ();if _dcbd !=nil {return _dcbd ;};case _ggg :_ec :=cmap .parseBfrange ();
|
|
if _ec !=nil {return _ec ;};case _ccaga :if _aed ==nil {_ga .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 ;};_fac ,_geag :=_aed .(cmapName );
|
|
if !_geag {_ga .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",_aed );return ErrBadCMap ;};cmap ._gb =_fac .Name ;
|
|
case _cdee :_dda :=cmap .parseSystemInfo ();if _dda !=nil {return _dda ;};};case cmapName :_gbee :=_gf ;switch _gbee .Name {case _cdee :_bgg :=cmap .parseSystemInfo ();if _bgg !=nil {return _bgg ;};case _gag :_dgg :=cmap .parseName ();if _dgg !=nil {return _dgg ;
|
|
};case _gda :_aagga :=cmap .parseType ();if _aagga !=nil {return _aagga ;};case _cdeb :_edga :=cmap .parseVersion ();if _edga !=nil {return _edga ;};case _agee :if _gbea =cmap .parseWMode ();_gbea !=nil {return _gbea ;};};};_aed =_ebc ;};return nil ;};
|
|
type cMapParser struct{_gaea *_dee .Reader };func _agg (_dcb string )string {_dbca :=[]rune (_dcb );_gg :=make ([]string ,len (_dbca ));for _ade ,_begb :=range _dbca {_gg [_ade ]=_d .Sprintf ("\u0025\u0030\u0034\u0078",_begb );};return _d .Sprintf ("\u003c\u0025\u0073\u003e",_bc .Join (_gg ,""));
|
|
};type integer struct{_defe bool ;_eddb int ;};func (_gbb *cMapParser )parseObject ()(cmapObject ,error ){_gbb .skipSpaces ();for {_cab ,_efcc :=_gbb ._gaea .Peek (2);if _efcc !=nil {return nil ,_efcc ;};if _cab [0]=='%'{_gbb .parseComment ();_gbb .skipSpaces ();
|
|
continue ;}else if _cab [0]=='/'{_edc ,_bcf :=_gbb .parseName ();return _edc ,_bcf ;}else if _cab [0]=='('{_ffg ,_cafgb :=_gbb .parseString ();return _ffg ,_cafgb ;}else if _cab [0]=='['{_geeg ,_caaa :=_gbb .parseArray ();return _geeg ,_caaa ;}else if (_cab [0]=='<')&&(_cab [1]=='<'){_abe ,_acba :=_gbb .parseDict ();
|
|
return _abe ,_acba ;}else if _cab [0]=='<'{_ggf ,_bga :=_gbb .parseHexString ();return _ggf ,_bga ;}else if _f .IsDecimalDigit (_cab [0])||(_cab [0]=='-'&&_f .IsDecimalDigit (_cab [1])){_cbf ,_dfaa :=_gbb .parseNumber ();if _dfaa !=nil {return nil ,_dfaa ;
|
|
};return _cbf ,nil ;}else {_dba ,_ddbf :=_gbb .parseOperand ();if _ddbf !=nil {return nil ,_ddbf ;};return _dba ,nil ;};};};var (ErrBadCMap =_c .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_c .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 =_c .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (cmap *CMap )parseSystemInfo ()error {_efb :=false ;_fcc :=false ;_dbge :="";_fda :=false ;_bcdb :=CIDSystemInfo {};for _caeb :=0;_caeb < 50&&!_fda ;
|
|
_caeb ++{_ced ,_dcfe :=cmap .parseObject ();if _dcfe !=nil {return _dcfe ;};switch _ebf :=_ced .(type ){case cmapDict :_aba :=_ebf .Dict ;_gcb ,_dddf :=_aba ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_dddf {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_bbb ,_dddf :=_gcb .(cmapString );if !_dddf {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bcdb .Registry =_bbb .String ;
|
|
_gcb ,_dddf =_aba ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_dddf {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bbb ,_dddf =_gcb .(cmapString );
|
|
if !_dddf {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bcdb .Ordering =_bbb .String ;_caa ,_dddf :=_aba ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
|
|
if !_dddf {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_caad ,_dddf :=_caa .(cmapInt );if !_dddf {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_bcdb .Supplement =int (_caad ._gbeac );_fda =true ;case cmapOperand :switch _ebf .Operand {case "\u0062\u0065\u0067i\u006e":_efb =true ;case "\u0065\u006e\u0064":_fda =true ;case "\u0064\u0065\u0066":_fcc =false ;};case cmapName :if _efb {_dbge =_ebf .Name ;
|
|
_fcc =true ;};case cmapString :if _fcc {switch _dbge {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_bcdb .Registry =_ebf .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_bcdb .Ordering =_ebf .String ;};};case cmapInt :if _fcc {switch _dbge {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_bcdb .Supplement =int (_ebf ._gbeac );
|
|
};};};};if !_fda {_ga .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 ._gd =_bcdb ;return nil ;};func (cmap *CMap )Name ()string {return cmap ._gee };func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_bfcc ,_edg :=cmap ._fg [s ];return _bfcc ,_edg ;};func (cmap *CMap )parseBfchar ()error {for {_efbc ,_gdc :=cmap .parseObject ();
|
|
if _gdc !=nil {if _gdc ==_e .EOF {break ;};return _gdc ;};var _cdad CharCode ;switch _fee :=_efbc .(type ){case cmapOperand :if _fee .Operand ==_bda {return nil ;};return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
case cmapHexString :_cdad =_bcg (_fee );default:return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_efbc ,_gdc =cmap .parseObject ();if _gdc !=nil {if _gdc ==_e .EOF {break ;};return _gdc ;};var _bgbd []rune ;
|
|
switch _bbed :=_efbc .(type ){case cmapOperand :if _bbed .Operand ==_bda {return nil ;};_ga .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",_bbed );
|
|
return ErrBadCMap ;case cmapHexString :_bgbd =_aedg (_bbed );case cmapName :_ga .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",_bbed );_bgbd =[]rune {MissingCodeRune };
|
|
default:_ga .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",_efbc );return ErrBadCMap ;};cmap ._bf [_cdad ]=string (_bgbd );};return nil ;};func (cmap *CMap )parseBfrange ()error {for {var _faba CharCode ;
|
|
_fgb ,_dcfc :=cmap .parseObject ();if _dcfc !=nil {if _dcfc ==_e .EOF {break ;};return _dcfc ;};switch _cfd :=_fgb .(type ){case cmapOperand :if _cfd .Operand ==_agd {return nil ;};return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
case cmapHexString :_faba =_bcg (_cfd );default:return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _fgag CharCode ;_fgb ,_dcfc =cmap .parseObject ();if _dcfc !=nil {if _dcfc ==_e .EOF {break ;};return _dcfc ;
|
|
};switch _dgb :=_fgb .(type ){case cmapOperand :_ga .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 :_fgag =_bcg (_dgb );if _fgag > 0xffff{_fgag =0xffff;};default:_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_fgb );return ErrBadCMap ;
|
|
};_fgb ,_dcfc =cmap .parseObject ();if _dcfc !=nil {if _dcfc ==_e .EOF {break ;};return _dcfc ;};switch _dgc :=_fgb .(type ){case cmapArray :if len (_dgc .Array )!=int (_fgag -_faba )+1{_ga .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 _ccb :=_faba ;_ccb <=_fgag ;_ccb ++{_bfa :=_dgc .Array [_ccb -_faba ];_gac ,_daa :=_bfa .(cmapHexString );if !_daa {return _c .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
|
|
};_fed :=_aedg (_gac );cmap ._bf [_ccb ]=string (_fed );};case cmapHexString :_abb :=_aedg (_dgc );_daec :=len (_abb );for _cgfa :=_faba ;_cgfa <=_fgag ;_cgfa ++{cmap ._bf [_cgfa ]=string (_abb );if _daec > 0{_abb [_daec -1]++;}else {_ga .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",_cgfa );
|
|
};if _cgfa ==1<<32-1{break ;};};default:_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_fgb );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_ccg ,_dge :=cmap ._bg [code ];
|
|
return _ccg ,_dge ;};func (cmap *CMap )String ()string {_bac :=cmap ._gd ;_bcdf :=[]string {_d .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._ee ),_d .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._cd )};if cmap ._efd !=""{_bcdf =append (_bcdf ,_d .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._efd ));
|
|
};if cmap ._gb !=""{_bcdf =append (_bcdf ,_d .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._gb ));};_bcdf =append (_bcdf ,_d .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_bac .String ()));
|
|
if len (cmap ._bb )> 0{_bcdf =append (_bcdf ,_d .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._bb )));};if len (cmap ._bf )> 0{_bcdf =append (_bcdf ,_d .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._bf )));
|
|
};return _d .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._gee ,_bc .Join (_bcdf ,"\u0020"));};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_dbc :=_dg (name );if _dbc !=nil {return nil ,_dbc ;};if cmap ._gb ==""{cmap .computeInverseMappings ();
|
|
return cmap ,nil ;};_dbe ,_dbc :=_dg (cmap ._gb );if _dbc !=nil {return nil ,_dbc ;};for _fd ,_be :=range _dbe ._bg {if _ ,_dbg :=cmap ._bg [_fd ];!_dbg {cmap ._bg [_fd ]=_be ;};};cmap ._bb =append (cmap ._bb ,_dbe ._bb ...);cmap .computeInverseMappings ();
|
|
return cmap ,nil ;};type cmapDict struct{Dict map[string ]cmapObject ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_gea :=make (map[CharCode ]string ,len (codeToRune ));for _ca ,_ae :=range codeToRune {_gea [_ca ]=string (_ae );};cmap :=&CMap {_gee :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_cd :2,_ee :16,_gd :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_bb :[]Codespace {{Low :0,High :0xffff}},_bf :_gea ,_fg :make (map[string ]CharCode ,len (codeToRune )),_bg :make (map[CharCode ]CharCode ,len (codeToRune )),_ddg :make (map[CharCode ]CharCode ,len (codeToRune ))};
|
|
cmap .computeInverseMappings ();return cmap ;};type cmapOperand struct{Operand string ;};func _aedg (_cdef cmapHexString )[]rune {if len (_cdef ._bgbc )==1{return []rune {rune (_cdef ._bgbc [0])};};_beb :=_cdef ._bgbc ;if len (_beb )%2!=0{_beb =append (_beb ,0);
|
|
_ga .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",_cdef ,_beb );
|
|
};_gbaa :=len (_beb )>>1;_ggga :=make ([]uint16 ,_gbaa );for _egb :=0;_egb < _gbaa ;_egb ++{_ggga [_egb ]=uint16 (_beb [_egb <<1])<<8+uint16 (_beb [_egb <<1+1]);};_bacd :=_a .Decode (_ggga );return _bacd ;};type charRange struct{_fc CharCode ;_ef CharCode ;
|
|
};func (cmap *CMap )Bytes ()[]byte {_ga .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 ._edf )> 0{return cmap ._edf ;};cmap ._edf =[]byte (_bc .Join ([]string {_ggb ,cmap .toBfData (),_eff },"\u000a"));
|
|
return cmap ._edf ;};type cmapInt struct{_gbeac int64 };type cmapString struct{String string ;};func (cmap *CMap )parseWMode ()error {var _ecg int ;_dcbg :=false ;for _dea :=0;_dea < 3&&!_dcbg ;_dea ++{_bcb ,_abf :=cmap .parseObject ();if _abf !=nil {return _abf ;
|
|
};switch _ddd :=_bcb .(type ){case cmapOperand :switch _ddd .Operand {case "\u0064\u0065\u0066":_dcbg =true ;default:_ga .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",_bcb );
|
|
return ErrBadCMap ;};case cmapInt :_ecg =int (_ddd ._gbeac );};};cmap ._fcd =integer {_defe :true ,_eddb :_ecg };return nil ;};func (_egf *cMapParser )parseOperand ()(cmapOperand ,error ){_beda :=cmapOperand {};_dag :=_ge .Buffer {};for {_fec ,_gbdf :=_egf ._gaea .Peek (1);
|
|
if _gbdf !=nil {if _gbdf ==_e .EOF {break ;};return _beda ,_gbdf ;};if _f .IsDelimiter (_fec [0]){break ;};if _f .IsWhiteSpace (_fec [0]){break ;};_debg ,_ :=_egf ._gaea .ReadByte ();_dag .WriteByte (_debg );};if _dag .Len ()==0{return _beda ,_d .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
|
|
};_beda .Operand =_dag .String ();return _beda ,nil ;};type CharCode uint32 ;func (cmap *CMap )Type ()int {return cmap ._cd };func _bcg (_cgeb cmapHexString )CharCode {_gff :=CharCode (0);for _ ,_cfc :=range _cgeb ._bgbc {_gff <<=8;_gff |=CharCode (_cfc );
|
|
};return _gff ;};func (_ecb *cMapParser )parseString ()(cmapString ,error ){_ecb ._gaea .ReadByte ();_aaef :=_ge .Buffer {};_ada :=1;for {_eagc ,_cbfg :=_ecb ._gaea .Peek (1);if _cbfg !=nil {return cmapString {_aaef .String ()},_cbfg ;};if _eagc [0]=='\\'{_ecb ._gaea .ReadByte ();
|
|
_bgf ,_efbg :=_ecb ._gaea .ReadByte ();if _efbg !=nil {return cmapString {_aaef .String ()},_efbg ;};if _f .IsOctalDigit (_bgf ){_aec ,_aecc :=_ecb ._gaea .Peek (2);if _aecc !=nil {return cmapString {_aaef .String ()},_aecc ;};var _facf []byte ;_facf =append (_facf ,_bgf );
|
|
for _ ,_eed :=range _aec {if _f .IsOctalDigit (_eed ){_facf =append (_facf ,_eed );}else {break ;};};_ecb ._gaea .Discard (len (_facf )-1);_ga .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_facf );
|
|
_afdc ,_aecc :=_g .ParseUint (string (_facf ),8,32);if _aecc !=nil {return cmapString {_aaef .String ()},_aecc ;};_aaef .WriteByte (byte (_afdc ));continue ;};switch _bgf {case 'n':_aaef .WriteByte ('\n');case 'r':_aaef .WriteByte ('\r');case 't':_aaef .WriteByte ('\t');
|
|
case 'b':_aaef .WriteByte ('\b');case 'f':_aaef .WriteByte ('\f');case '(':_aaef .WriteByte ('(');case ')':_aaef .WriteByte (')');case '\\':_aaef .WriteByte ('\\');};continue ;}else if _eagc [0]=='('{_ada ++;}else if _eagc [0]==')'{_ada --;if _ada ==0{_ecb ._gaea .ReadByte ();
|
|
break ;};};_dcg ,_ :=_ecb ._gaea .ReadByte ();_aaef .WriteByte (_dcg );};return cmapString {_aaef .String ()},nil ;};func _gafe ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _dca ,_ac :=cmap ._bf [code ];
|
|
_ac {return _dca ,true ;};return MissingCodeString ,false ;};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};
|
|
type cmapObject interface{};func _gbde (_gec []byte )*cMapParser {_fbb :=cMapParser {};_bbag :=_ge .NewBuffer (_gec );_fbb ._gaea =_dee .NewReader (_bbag );return &_fbb ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_ga .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 :=_ce (isSimple );cmap .cMapParser =_gbde (data );_ab :=cmap .parse ();if _ab !=nil {return nil ,_ab ;};if len (cmap ._bb )==0{if cmap ._gb !=""{return cmap ,nil ;};_ga .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
|
|
return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};func (_afe *CIDSystemInfo )String ()string {return _d .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_afe .Registry ,_afe .Ordering ,_afe .Supplement );
|
|
};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._gd };func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _aac []CharCode ;if cmap ._ee ==8{for _ ,_fa :=range data {_aac =append (_aac ,CharCode (_fa ));};return _aac ,true ;
|
|
};for _gce :=0;_gce < len (data );{_bcd ,_dad ,_fcee :=cmap .matchCode (data [_gce :]);if !_fcee {_ga .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",_gce ,data ,string (data ));
|
|
return _aac ,false ;};_aac =append (_aac ,_bcd );_gce +=_dad ;};return _aac ,true ;};func (cmap *CMap )computeInverseMappings (){for _cdd ,_afc :=range cmap ._bg {if _ba ,_cf :=cmap ._ddg [_afc ];!_cf ||(_cf &&_ba > _cdd ){cmap ._ddg [_afc ]=_cdd ;};};
|
|
for _baf ,_ff :=range cmap ._bf {if _gaf ,_fge :=cmap ._fg [_ff ];!_fge ||(_fge &&_gaf > _baf ){cmap ._fg [_ff ]=_baf ;};};_cc .Slice (cmap ._bb ,func (_afb ,_gcc int )bool {return cmap ._bb [_afb ].Low < cmap ._bb [_gcc ].Low });};const (_dcba =100;_ggb ="\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";
|
|
_eff ="\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 IsPredefinedCMap (name string )bool {return _cg .AssetExists (name )};func (_afed *cMapParser )parseNumber ()(cmapObject ,error ){_fbef ,_ggbf :=_f .ParseNumber (_afed ._gaea );if _ggbf !=nil {return nil ,_ggbf ;};switch _fbefc :=_fbef .(type ){case *_f .PdfObjectFloat :return cmapFloat {float64 (*_fbefc )},nil ;
|
|
case *_f .PdfObjectInteger :return cmapInt {int64 (*_fbefc )},nil ;};return nil ,_d .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_fbef );};func _dbea (_gbed cmapHexString )rune {_bbfc :=_aedg (_gbed );
|
|
if _aecgd :=len (_bbfc );_aecgd ==0{_ga .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",_gbed );
|
|
return MissingCodeRune ;};if len (_bbfc )> 1{_ga .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",_gbed ,_bbfc );
|
|
};return _bbfc [0];};func _dcda (_bdaf ,_dgbg int )int {if _bdaf < _dgbg {return _bdaf ;};return _dgbg ;};const (_cdee ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_gca ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
|
|
_dgad ="\u0065n\u0064\u0063\u006d\u0061\u0070";_ageb ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_effc ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
|
|
_faa ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_bda ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_ggg ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_agd ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
|
|
_bbf ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_fbe ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_ccaga ="\u0075s\u0065\u0063\u006d\u0061\u0070";_agee ="\u0057\u004d\u006fd\u0065";_gag ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
|
|
_gda ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_cdeb ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (_eec *cMapParser )parseHexString ()(cmapHexString ,error ){_eec ._gaea .ReadByte ();_fcde :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
|
|
_dfgb :=_ge .Buffer {};for {_eec .skipSpaces ();_ebb ,_ggd :=_eec ._gaea .Peek (1);if _ggd !=nil {return cmapHexString {},_ggd ;};if _ebb [0]=='>'{_eec ._gaea .ReadByte ();break ;};_gcec ,_ :=_eec ._gaea .ReadByte ();if _ge .IndexByte (_fcde ,_gcec )>=0{_dfgb .WriteByte (_gcec );
|
|
};};if _dfgb .Len ()%2==1{_ga .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",_dfgb .String ());_dfgb .WriteByte ('0');};_aecg :=_dfgb .Len ()/2;
|
|
_bbae ,_ :=_de .DecodeString (_dfgb .String ());return cmapHexString {_acdd :_aecg ,_bgbc :_bbae },nil ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._fcd ._eddb ,cmap ._fcd ._defe };func (cmap *CMap )parseCodespaceRange ()error {for {_bed ,_gcff :=cmap .parseObject ();
|
|
if _gcff !=nil {if _gcff ==_e .EOF {break ;};return _gcff ;};_ggc ,_gba :=_bed .(cmapHexString );if !_gba {if _fff ,_afdd :=_bed .(cmapOperand );_afdd {if _fff .Operand ==_effc {return nil ;};return _c .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
};};_bed ,_gcff =cmap .parseObject ();if _gcff !=nil {if _gcff ==_e .EOF {break ;};return _gcff ;};_eea ,_gba :=_bed .(cmapHexString );if !_gba {return _c .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_ggc ._bgbc )!=len (_eea ._bgbc ){return _c .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");
|
|
};_cgf :=_bcg (_ggc );_aeba :=_bcg (_eea );if _aeba < _cgf {_ga .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",_cgf ,_aeba );
|
|
return ErrBadCMap ;};_dcdb :=_eea ._acdd ;_fdc :=Codespace {NumBytes :_dcdb ,Low :_cgf ,High :_aeba };cmap ._bb =append (cmap ._bb ,_fdc );_ga .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",_cgf ,_aeba );
|
|
};if len (cmap ._bb )==0{_ga .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 (_agge *cMapParser )parseComment ()(string ,error ){var _ecd _ge .Buffer ;
|
|
_ ,_dac :=_agge .skipSpaces ();if _dac !=nil {return _ecd .String (),_dac ;};_abec :=true ;for {_ccce ,_fdf :=_agge ._gaea .Peek (1);if _fdf !=nil {_ga .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_fdf );
|
|
return _ecd .String (),_fdf ;};if _abec &&_ccce [0]!='%'{return _ecd .String (),ErrBadCMapComment ;};_abec =false ;if (_ccce [0]!='\r')&&(_ccce [0]!='\n'){_ggcb ,_ :=_agge ._gaea .ReadByte ();_ecd .WriteByte (_ggcb );}else {break ;};};return _ecd .String (),nil ;
|
|
};func _ce (_aa bool )*CMap {_dbd :=16;if _aa {_dbd =8;};return &CMap {_ee :_dbd ,_bg :make (map[CharCode ]CharCode ),_ddg :make (map[CharCode ]CharCode ),_bf :make (map[CharCode ]string ),_fg :make (map[string ]CharCode )};};func (_fcb *cMapParser )parseDict ()(cmapDict ,error ){_ga .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
|
|
_fcf :=_gafe ();_ggde ,_ :=_fcb ._gaea .ReadByte ();if _ggde !='<'{return _fcf ,ErrBadCMapDict ;};_ggde ,_ =_fcb ._gaea .ReadByte ();if _ggde !='<'{return _fcf ,ErrBadCMapDict ;};for {_fcb .skipSpaces ();_fbg ,_agc :=_fcb ._gaea .Peek (2);if _agc !=nil {return _fcf ,_agc ;
|
|
};if (_fbg [0]=='>')&&(_fbg [1]=='>'){_fcb ._gaea .ReadByte ();_fcb ._gaea .ReadByte ();break ;};_afdcd ,_agc :=_fcb .parseName ();_ga .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_afdcd .Name );if _agc !=nil {_ga .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",_agc );
|
|
return _fcf ,_agc ;};_fcb .skipSpaces ();_fcbd ,_agc :=_fcb .parseObject ();if _agc !=nil {return _fcf ,_agc ;};_fcf .Dict [_afdcd .Name ]=_fcbd ;_fcb .skipSpaces ();_fbg ,_agc =_fcb ._gaea .Peek (3);if _agc !=nil {return _fcf ,_agc ;};if string (_fbg )=="\u0064\u0065\u0066"{_fcb ._gaea .Discard (3);
|
|
};};return _fcf ,nil ;};func (cmap *CMap )parseVersion ()error {_faf :="";_bddg :=false ;for _acb :=0;_acb < 3&&!_bddg ;_acb ++{_aga ,_geee :=cmap .parseObject ();if _geee !=nil {return _geee ;};switch _gfa :=_aga .(type ){case cmapOperand :switch _gfa .Operand {case "\u0064\u0065\u0066":_bddg =true ;
|
|
default:_ga .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",_aga );
|
|
return ErrBadCMap ;};case cmapInt :_faf =_d .Sprintf ("\u0025\u0064",_gfa ._gbeac );case cmapFloat :_faf =_d .Sprintf ("\u0025\u0066",_gfa ._edd );case cmapString :_faf =_gfa .String ;default:_ga .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",_aga );
|
|
};};cmap ._efd =_faf ;return nil ;};type cmapArray struct{Array []cmapObject ;};func _cea (_dadd string )rune {_cdg :=[]rune (_dadd );return _cdg [len (_cdg )-1]};func (_bbac *cMapParser )parseName ()(cmapName ,error ){_dbcab :="";_ecc :=false ;for {_fbac ,_gcde :=_bbac ._gaea .Peek (1);
|
|
if _gcde ==_e .EOF {break ;};if _gcde !=nil {return cmapName {_dbcab },_gcde ;};if !_ecc {if _fbac [0]=='/'{_ecc =true ;_bbac ._gaea .ReadByte ();}else {_ga .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",_fbac ,_fbac );
|
|
return cmapName {_dbcab },_d .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_fbac [0]);};}else {if _f .IsWhiteSpace (_fbac [0]){break ;}else if (_fbac [0]=='/')||(_fbac [0]=='[')||(_fbac [0]=='(')||(_fbac [0]==']')||(_fbac [0]=='<')||(_fbac [0]=='>'){break ;
|
|
}else if _fbac [0]=='#'{_cdf ,_ddc :=_bbac ._gaea .Peek (3);if _ddc !=nil {return cmapName {_dbcab },_ddc ;};_bbac ._gaea .Discard (3);_acc ,_ddc :=_de .DecodeString (string (_cdf [1:3]));if _ddc !=nil {return cmapName {_dbcab },_ddc ;};_dbcab +=string (_acc );
|
|
}else {_afbc ,_ :=_bbac ._gaea .ReadByte ();_dbcab +=string (_afbc );};};};return cmapName {_dbcab },nil ;};func (cmap *CMap )NBits ()int {return cmap ._ee };func _dg (_deee string )(*CMap ,error ){_gae ,_afeb :=_cg .Asset (_deee );if _afeb !=nil {return nil ,_afeb ;
|
|
};return LoadCmapFromDataCID (_gae );};func (cmap *CMap )inCodespace (_aeb CharCode ,_bba int )bool {for _ ,_bfca :=range cmap ._bb {if _bfca .Low <=_aeb &&_aeb <=_bfca .High &&_bba ==_bfca .NumBytes {return true ;};};return false ;};func (cmap *CMap )parseType ()error {_dbbg :=0;
|
|
_deg :=false ;for _geea :=0;_geea < 3&&!_deg ;_geea ++{_ebe ,_dfb :=cmap .parseObject ();if _dfb !=nil {return _dfb ;};switch _dfa :=_ebe .(type ){case cmapOperand :switch _dfa .Operand {case "\u0064\u0065\u0066":_deg =true ;default:_ga .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",_ebe );
|
|
return ErrBadCMap ;};case cmapInt :_dbbg =int (_dfa ._gbeac );};};cmap ._cd =_dbbg ;return nil ;};const (_cga =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););type cmapFloat struct{_edd float64 };func NewCIDSystemInfo (obj _f .PdfObject )(_eg CIDSystemInfo ,_bd error ){_da ,_eb :=_f .GetDict (obj );
|
|
if !_eb {return CIDSystemInfo {},_f .ErrTypeError ;};_gc ,_eb :=_f .GetStringVal (_da .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_eb {return CIDSystemInfo {},_f .ErrTypeError ;};_efc ,_eb :=_f .GetStringVal (_da .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));
|
|
if !_eb {return CIDSystemInfo {},_f .ErrTypeError ;};_afd ,_eb :=_f .GetIntVal (_da .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_eb {return CIDSystemInfo {},_f .ErrTypeError ;};return CIDSystemInfo {Registry :_gc ,Ordering :_efc ,Supplement :_afd },nil ;
|
|
};func (cmap *CMap )matchCode (_dbb []byte )(_fab CharCode ,_def int ,_gdf bool ){for _dce :=0;_dce < _cga ;_dce ++{if _dce < len (_dbb ){_fab =_fab <<8|CharCode (_dbb [_dce ]);_def ++;};_gdf =cmap .inCodespace (_fab ,_dce +1);if _gdf {return _fab ,_def ,true ;
|
|
};};_ga .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",_dbb ,string (_dbb ),cmap );
|
|
return 0,0,false ;};type cmapHexString struct{_acdd int ;_bgbc []byte ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_aea ,_cca :=cmap .BytesToCharcodes (data );if !_cca {_ga .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;};_aae :=make ([]string ,len (_aea ));var _geaf []CharCode ;for _dga ,_fef :=range _aea {_bfc ,_aag :=cmap ._bf [_fef ];if !_aag {_geaf =append (_geaf ,_fef );_bfc =MissingCodeString ;};_aae [_dga ]=_bfc ;};_dc :=_bc .Join (_aae ,"");if len (_geaf )> 0{_ga .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 ),_aea ,len (_geaf ),_geaf ,_dc ,cmap );
|
|
};return _dc ,len (_geaf );};func (_eebf *cMapParser )parseArray ()(cmapArray ,error ){_dfae :=cmapArray {};_dfae .Array =[]cmapObject {};_eebf ._gaea .ReadByte ();for {_eebf .skipSpaces ();_gaaf ,_cbba :=_eebf ._gaea .Peek (1);if _cbba !=nil {return _dfae ,_cbba ;
|
|
};if _gaaf [0]==']'{_eebf ._gaea .ReadByte ();break ;};_abd ,_cbba :=_eebf .parseObject ();if _cbba !=nil {return _dfae ,_cbba ;};_dfae .Array =append (_dfae .Array ,_abd );};return _dfae ,nil ;};func (cmap *CMap )parseCIDRange ()error {for {_gcd ,_cefa :=cmap .parseObject ();
|
|
if _cefa !=nil {if _cefa ==_e .EOF {break ;};return _cefa ;};_dae ,_bbbf :=_gcd .(cmapHexString );if !_bbbf {if _cefd ,_begg :=_gcd .(cmapOperand );_begg {if _cefd .Operand ==_fbe {return nil ;};return _c .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");
|
|
};};_age :=_bcg (_dae );_gcd ,_cefa =cmap .parseObject ();if _cefa !=nil {if _cefa ==_e .EOF {break ;};return _cefa ;};_cbb ,_bbbf :=_gcd .(cmapHexString );if !_bbbf {return _c .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 (_dae ._bgbc )!=len (_cbb ._bgbc ){return _c .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");};_fafa :=_bcg (_cbb );
|
|
if _age > _fafa {_ga .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",_age ,_fafa );
|
|
return ErrBadCMap ;};_gcd ,_cefa =cmap .parseObject ();if _cefa !=nil {if _cefa ==_e .EOF {break ;};return _cefa ;};_fba ,_bbbf :=_gcd .(cmapInt );if !_bbbf {return _c .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 _fba ._gbeac < 0{return _c .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_ffb :=_fba ._gbeac ;for _ece :=_age ;_ece <=_fafa ;_ece ++{cmap ._bg [_ece ]=CharCode (_ffb );
|
|
_ffb ++;};_ga .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",_age ,_fafa ,_fba ._gbeac );};return nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._bf )==0{return "";
|
|
};_aaf :=make ([]CharCode ,0,len (cmap ._bf ));for _dgf :=range cmap ._bf {_aaf =append (_aaf ,_dgf );};_cc .Slice (_aaf ,func (_gead ,_gdg int )bool {return _aaf [_gead ]< _aaf [_gdg ]});var _eab []charRange ;_dcd :=charRange {_aaf [0],_aaf [0]};_ebg :=cmap ._bf [_aaf [0]];
|
|
for _ ,_cafg :=range _aaf [1:]{_eag :=cmap ._bf [_cafg ];if _cafg ==_dcd ._ef +1&&_cea (_eag )==_cea (_ebg )+1{_dcd ._ef =_cafg ;}else {_eab =append (_eab ,_dcd );_dcd ._fc ,_dcd ._ef =_cafg ,_cafg ;};_ebg =_eag ;};_eab =append (_eab ,_dcd );var _bfb []CharCode ;
|
|
var _gbe []fbRange ;for _ ,_aage :=range _eab {if _aage ._fc ==_aage ._ef {_bfb =append (_bfb ,_aage ._fc );}else {_gbe =append (_gbe ,fbRange {_ed :_aage ._fc ,_dd :_aage ._ef ,_af :cmap ._bf [_aage ._fc ]});};};_ga .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 (_eab ),len (_bfb ),len (_gbe ));
|
|
var _dbcg []string ;if len (_bfb )> 0{_afg :=(len (_bfb )+_dcba -1)/_dcba ;for _beg :=0;_beg < _afg ;_beg ++{_affc :=_dcda (len (_bfb )-_beg *_dcba ,_dcba );_dbcg =append (_dbcg ,_d .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_affc ));
|
|
for _fga :=0;_fga < _affc ;_fga ++{_aacd :=_bfb [_beg *_dcba +_fga ];_fgef :=cmap ._bf [_aacd ];_dbcg =append (_dbcg ,_d .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_aacd ,_agg (_fgef )));};_dbcg =append (_dbcg ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
|
|
};};if len (_gbe )> 0{_dfc :=(len (_gbe )+_dcba -1)/_dcba ;for _eeb :=0;_eeb < _dfc ;_eeb ++{_eebg :=_dcda (len (_gbe )-_eeb *_dcba ,_dcba );_dbcg =append (_dbcg ,_d .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_eebg ));
|
|
for _aagg :=0;_aagg < _eebg ;_aagg ++{_ad :=_gbe [_eeb *_dcba +_aagg ];_dbcg =append (_dbcg ,_d .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_ad ._ed ,_ad ._dd ,_agg (_ad ._af )));};_dbcg =append (_dbcg ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
|
|
};};return _bc .Join (_dbcg ,"\u000a");};func (cmap *CMap )parseName ()error {_cgc :="";_ega :=false ;for _gcf :=0;_gcf < 20&&!_ega ;_gcf ++{_bgb ,_dcf :=cmap .parseObject ();if _dcf !=nil {return _dcf ;};switch _cafa :=_bgb .(type ){case cmapOperand :switch _cafa .Operand {case "\u0064\u0065\u0066":_ega =true ;
|
|
default:_ga .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",_bgb ,_cgc );
|
|
if _cgc !=""{_cgc =_d .Sprintf ("\u0025\u0073\u0020%\u0073",_cgc ,_cafa .Operand );};_ga .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",_cgc );
|
|
};case cmapName :_cgc =_cafa .Name ;};};if !_ega {_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._gee =_cgc ;return nil ;}; |