mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-24 13:48:49 +08:00
142 lines
42 KiB
Go
142 lines
42 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package cmap ;import (_d "bufio";_ge "bytes";_af "encoding/hex";_gee "errors";_ec "fmt";_bg "github.com/unidoc/unipdf/v3/common";_eba "github.com/unidoc/unipdf/v3/core";_de "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_eb "io";_ef "sort";_a "strconv";
|
|
_b "strings";_g "unicode/utf16";);const (_ccbe ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_ecgg ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_dbga ="\u0065n\u0064\u0063\u006d\u0061\u0070";_egd ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";
|
|
_ged ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_cced ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_ecf ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_ebad ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
|
|
_eaee ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gdff ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_gdgd ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_dfdc ="\u0075s\u0065\u0063\u006d\u0061\u0070";
|
|
_cbga ="\u0057\u004d\u006fd\u0065";_aeb ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_ccd ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_dbgg ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func _agg (_edcd string )rune {_aegb :=[]rune (_edcd );
|
|
return _aegb [len (_aegb )-1]};func _bdc (_ff string )(*CMap ,error ){_dfe ,_cc :=_de .Asset (_ff );if _cc !=nil {return nil ,_cc ;};return LoadCmapFromDataCID (_dfe );};type CharCode uint32 ;func _eca (_fggb cmapHexString )rune {_eafd :=_eegbe (_fggb );
|
|
if _ecaf :=len (_eafd );_ecaf ==0{_bg .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",_fggb );
|
|
return MissingCodeRune ;};if len (_eafd )> 1{_bg .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",_fggb ,_eafd );
|
|
};return _eafd [0];};func (cmap *CMap )parseCodespaceRange ()error {for {_dee ,_aaf :=cmap .parseObject ();if _aaf !=nil {if _aaf ==_eb .EOF {break ;};return _aaf ;};_eegb ,_bacd :=_dee .(cmapHexString );if !_bacd {if _gdf ,_dag :=_dee .(cmapOperand );
|
|
_dag {if _gdf .Operand ==_ged {return nil ;};return _gee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_dee ,_aaf =cmap .parseObject ();if _aaf !=nil {if _aaf ==_eb .EOF {break ;};return _aaf ;};_fcb ,_bacd :=_dee .(cmapHexString );
|
|
if !_bacd {return _gee .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_eegb ._gedb )!=len (_fcb ._gedb ){return _gee .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");
|
|
};_egad :=_gdgc (_eegb );_ceg :=_gdgc (_fcb );if _ceg < _egad {_bg .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",_egad ,_ceg );
|
|
return ErrBadCMap ;};_becf :=_fcb ._ecfg ;_gfe :=Codespace {NumBytes :_becf ,Low :_egad ,High :_ceg };cmap ._cfa =append (cmap ._cfa ,_gfe );_bg .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",_egad ,_ceg );
|
|
};if len (cmap ._cfa )==0{_bg .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 _eab (_cbfa string )string {_cfcg :=[]rune (_cbfa );
|
|
_bbcd :=make ([]string ,len (_cfcg ));for _gbab ,_fddf :=range _cfcg {_bbcd [_gbab ]=_ec .Sprintf ("\u0025\u0030\u0034\u0078",_fddf );};return _ec .Sprintf ("\u003c\u0025\u0073\u003e",_b .Join (_bbcd ,""));};type CMap struct{*cMapParser ;_cf string ;_gaa int ;
|
|
_cfd int ;_ba string ;_fgc string ;_bb CIDSystemInfo ;_cfa []Codespace ;_edd map[CharCode ]CharCode ;_gb map[CharCode ]CharCode ;_cff map[CharCode ]string ;_da map[string ]CharCode ;_df []byte ;_dfg *_eba .PdfObjectStream ;_cfc integer ;};type charRange struct{_ebb CharCode ;
|
|
_ea CharCode ;};func _bd (_geg bool )*CMap {_ca :=16;if _geg {_ca =8;};return &CMap {_gaa :_ca ,_edd :make (map[CharCode ]CharCode ),_gb :make (map[CharCode ]CharCode ),_cff :make (map[CharCode ]string ),_da :make (map[string ]CharCode )};};func (cmap *CMap )toBfData ()string {if len (cmap ._cff )==0{return "";
|
|
};_cgbb :=make ([]CharCode ,0,len (cmap ._cff ));for _cca :=range cmap ._cff {_cgbb =append (_cgbb ,_cca );};_ef .Slice (_cgbb ,func (_eec ,_gcb int )bool {return _cgbb [_eec ]< _cgbb [_gcb ]});var _fdg []charRange ;_aga :=charRange {_cgbb [0],_cgbb [0]};
|
|
_gce :=cmap ._cff [_cgbb [0]];for _ ,_dfb :=range _cgbb [1:]{_agb :=cmap ._cff [_dfb ];if _dfb ==_aga ._ea +1&&_agg (_agb )==_agg (_gce )+1{_aga ._ea =_dfb ;}else {_fdg =append (_fdg ,_aga );_aga ._ebb ,_aga ._ea =_dfb ,_dfb ;};_gce =_agb ;};_fdg =append (_fdg ,_aga );
|
|
var _fadg []CharCode ;var _afe []fbRange ;for _ ,_aab :=range _fdg {if _aab ._ebb ==_aab ._ea {_fadg =append (_fadg ,_aab ._ebb );}else {_afe =append (_afe ,fbRange {_db :_aab ._ebb ,_ga :_aab ._ea ,_afa :cmap ._cff [_aab ._ebb ]});};};_bg .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 (_fdg ),len (_fadg ),len (_afe ));
|
|
var _fdb []string ;if len (_fadg )> 0{_dfa :=(len (_fadg )+_bfg -1)/_bfg ;for _dggd :=0;_dggd < _dfa ;_dggd ++{_ffb :=_fceb (len (_fadg )-_dggd *_bfg ,_bfg );_fdb =append (_fdb ,_ec .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_ffb ));
|
|
for _cbf :=0;_cbf < _ffb ;_cbf ++{_dce :=_fadg [_dggd *_bfg +_cbf ];_ebd :=cmap ._cff [_dce ];_fdb =append (_fdb ,_ec .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_dce ,_eab (_ebd )));};_fdb =append (_fdb ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
|
|
};};if len (_afe )> 0{_gbcf :=(len (_afe )+_bfg -1)/_bfg ;for _ced :=0;_ced < _gbcf ;_ced ++{_deb :=_fceb (len (_afe )-_ced *_bfg ,_bfg );_fdb =append (_fdb ,_ec .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_deb ));
|
|
for _dda :=0;_dda < _deb ;_dda ++{_dfed :=_afe [_ced *_bfg +_dda ];_fdb =append (_fdb ,_ec .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_dfed ._db ,_dfed ._ga ,_eab (_dfed ._afa )));};_fdb =append (_fdb ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
|
|
};};return _b .Join (_fdb ,"\u000a");};func (cmap *CMap )matchCode (_ggb []byte )(_ce CharCode ,_gba int ,_cb bool ){for _ag :=0;_ag < _f ;_ag ++{if _ag < len (_ggb ){_ce =_ce <<8|CharCode (_ggb [_ag ]);_gba ++;};_cb =cmap .inCodespace (_ce ,_ag +1);if _cb {return _ce ,_gba ,true ;
|
|
};};_bg .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",_ggb ,string (_ggb ),cmap );
|
|
return 0,0,false ;};func (cmap *CMap )parseWMode ()error {var _gda int ;_eafe :=false ;for _ffbf :=0;_ffbf < 3&&!_eafe ;_ffbf ++{_fdbe ,_bcf :=cmap .parseObject ();if _bcf !=nil {return _bcf ;};switch _cbg :=_fdbe .(type ){case cmapOperand :switch _cbg .Operand {case "\u0064\u0065\u0066":_eafe =true ;
|
|
default:_bg .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",_fdbe );return ErrBadCMap ;};case cmapInt :_gda =int (_cbg ._bage );
|
|
};};cmap ._cfc =integer {_dfdca :true ,_egf :_gda };return nil ;};func (cmap *CMap )Stream ()(*_eba .PdfObjectStream ,error ){if cmap ._dfg !=nil {return cmap ._dfg ,nil ;};_fdf ,_ecg :=_eba .MakeStream (cmap .Bytes (),_eba .NewFlateEncoder ());if _ecg !=nil {return nil ,_ecg ;
|
|
};cmap ._dfg =_fdf ;return cmap ._dfg ,nil ;};func (_bfeb *cMapParser )parseDict ()(cmapDict ,error ){_bg .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_efcf :=_eeeg ();_ebg ,_ :=_bfeb ._gfcg .ReadByte ();
|
|
if _ebg !='<'{return _efcf ,ErrBadCMapDict ;};_ebg ,_ =_bfeb ._gfcg .ReadByte ();if _ebg !='<'{return _efcf ,ErrBadCMapDict ;};for {_bfeb .skipSpaces ();_gbb ,_gfca :=_bfeb ._gfcg .Peek (2);if _gfca !=nil {return _efcf ,_gfca ;};if (_gbb [0]=='>')&&(_gbb [1]=='>'){_bfeb ._gfcg .ReadByte ();
|
|
_bfeb ._gfcg .ReadByte ();break ;};_bbcf ,_gfca :=_bfeb .parseName ();_bg .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_bbcf .Name );if _gfca !=nil {_bg .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",_gfca );
|
|
return _efcf ,_gfca ;};_bfeb .skipSpaces ();_ada ,_gfca :=_bfeb .parseObject ();if _gfca !=nil {return _efcf ,_gfca ;};_efcf .Dict [_bbcf .Name ]=_ada ;_bfeb .skipSpaces ();_gbb ,_gfca =_bfeb ._gfcg .Peek (3);if _gfca !=nil {return _efcf ,_gfca ;};if string (_gbb )=="\u0064\u0065\u0066"{_bfeb ._gfcg .Discard (3);
|
|
};};return _efcf ,nil ;};func (cmap *CMap )NBits ()int {return cmap ._gaa };func (_gbac *cMapParser )parseObject ()(cmapObject ,error ){_gbac .skipSpaces ();for {_dddf ,_gbae :=_gbac ._gfcg .Peek (2);if _gbae !=nil {return nil ,_gbae ;};if _dddf [0]=='%'{_gbac .parseComment ();
|
|
_gbac .skipSpaces ();continue ;}else if _dddf [0]=='/'{_gdd ,_gebe :=_gbac .parseName ();return _gdd ,_gebe ;}else if _dddf [0]=='('{_eefcc ,_dacb :=_gbac .parseString ();return _eefcc ,_dacb ;}else if _dddf [0]=='['{_cccg ,_gfd :=_gbac .parseArray ();
|
|
return _cccg ,_gfd ;}else if (_dddf [0]=='<')&&(_dddf [1]=='<'){_affb ,_dcae :=_gbac .parseDict ();return _affb ,_dcae ;}else if _dddf [0]=='<'{_gagb ,_eddb :=_gbac .parseHexString ();return _gagb ,_eddb ;}else if _eba .IsDecimalDigit (_dddf [0])||(_dddf [0]=='-'&&_eba .IsDecimalDigit (_dddf [1])){_becg ,_geec :=_gbac .parseNumber ();
|
|
if _geec !=nil {return nil ,_geec ;};return _becg ,nil ;}else {_ggbf ,_bab :=_gbac .parseOperand ();if _bab !=nil {return nil ,_bab ;};return _ggbf ,nil ;};};};func IsPredefinedCMap (name string )bool {return _de .AssetExists (name )};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_eef ,_ebbb :=cmap .BytesToCharcodes (data );
|
|
if !_ebbb {_bg .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;};_cgb :=make ([]string ,len (_eef ));var _fdd []CharCode ;for _ega ,_ead :=range _eef {_ege ,_dc :=cmap ._cff [_ead ];if !_dc {_fdd =append (_fdd ,_ead );_ege =MissingCodeString ;};_cgb [_ega ]=_ege ;};_gea :=_b .Join (_cgb ,"");if len (_fdd )> 0{_bg .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 ),_eef ,len (_fdd ),_fdd ,_gea ,cmap );
|
|
};return _gea ,len (_fdd );};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_def :=_bdc (name );if _def !=nil {return nil ,_def ;};if cmap ._fgc ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_ab ,_def :=_bdc (cmap ._fgc );if _def !=nil {return nil ,_def ;
|
|
};for _dde ,_aff :=range _ab ._edd {if _ ,_aa :=cmap ._edd [_dde ];!_aa {cmap ._edd [_dde ]=_aff ;};};cmap ._cfa =append (cmap ._cfa ,_ab ._cfa ...);cmap .computeInverseMappings ();return cmap ,nil ;};type cmapObject interface{};type Codespace struct{NumBytes int ;
|
|
Low CharCode ;High CharCode ;};type cmapDict struct{Dict map[string ]cmapObject ;};func (_fbe *cMapParser )parseNumber ()(cmapObject ,error ){_adb ,_febc :=_eba .ParseNumber (_fbe ._gfcg );if _febc !=nil {return nil ,_febc ;};switch _adc :=_adb .(type ){case *_eba .PdfObjectFloat :return cmapFloat {float64 (*_adc )},nil ;
|
|
case *_eba .PdfObjectInteger :return cmapInt {int64 (*_adc )},nil ;};return nil ,_ec .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_adb );};func (cmap *CMap )Bytes ()[]byte {_bg .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 ._df )> 0{return cmap ._df ;};cmap ._df =[]byte (_b .Join ([]string {_ace ,cmap .toBfData (),_abb },"\u000a"));return cmap ._df ;};func (cmap *CMap )parse ()error {var _dafg cmapObject ;for {_bac ,_aea :=cmap .parseObject ();if _aea !=nil {if _aea ==_eb .EOF {break ;
|
|
};_bg .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_aea );return _aea ;};switch _gd :=_bac .(type ){case cmapOperand :_fdab :=_gd ;switch _fdab .Operand {case _egd :_bgf :=cmap .parseCodespaceRange ();
|
|
if _bgf !=nil {return _bgf ;};case _gdff :_eae :=cmap .parseCIDRange ();if _eae !=nil {return _eae ;};case _cced :_gga :=cmap .parseBfchar ();if _gga !=nil {return _gga ;};case _ebad :_fcc :=cmap .parseBfrange ();if _fcc !=nil {return _fcc ;};case _dfdc :if _dafg ==nil {_bg .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 ;};_cce ,_febfg :=_dafg .(cmapName );if !_febfg {_bg .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",_dafg );
|
|
return ErrBadCMap ;};cmap ._fgc =_cce .Name ;case _ccbe :_age :=cmap .parseSystemInfo ();if _age !=nil {return _age ;};};case cmapName :_bba :=_gd ;switch _bba .Name {case _ccbe :_ccf :=cmap .parseSystemInfo ();if _ccf !=nil {return _ccf ;};case _aeb :_gdg :=cmap .parseName ();
|
|
if _gdg !=nil {return _gdg ;};case _ccd :_dca :=cmap .parseType ();if _dca !=nil {return _dca ;};case _dbgg :_fef :=cmap .parseVersion ();if _fef !=nil {return _fef ;};case _cbga :if _aea =cmap .parseWMode ();_aea !=nil {return _aea ;};};};_dafg =_bac ;
|
|
};return nil ;};func (cmap *CMap )parseBfchar ()error {for {_ccea ,_fbd :=cmap .parseObject ();if _fbd !=nil {if _fbd ==_eb .EOF {break ;};return _fbd ;};var _eee CharCode ;switch _aed :=_ccea .(type ){case cmapOperand :if _aed .Operand ==_ecf {return nil ;
|
|
};return _gee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_eee =_gdgc (_aed );default:return _gee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
|
|
};_ccea ,_fbd =cmap .parseObject ();if _fbd !=nil {if _fbd ==_eb .EOF {break ;};return _fbd ;};var _fage []rune ;switch _efb :=_ccea .(type ){case cmapOperand :if _efb .Operand ==_ecf {return nil ;};_bg .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",_efb );
|
|
return ErrBadCMap ;case cmapHexString :_fage =_eegbe (_efb );case cmapName :_bg .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",_efb );_fage =[]rune {MissingCodeRune };
|
|
default:_bg .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",_ccea );return ErrBadCMap ;};cmap ._cff [_eee ]=string (_fage );};return nil ;};type cmapInt struct{_bage int64 };
|
|
type cmapString struct{String string ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._bb };func (_eccg *cMapParser )parseHexString ()(cmapHexString ,error ){_eccg ._gfcg .ReadByte ();_acc :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
|
|
_gef :=_ge .Buffer {};for {_eccg .skipSpaces ();_efba ,_fgcg :=_eccg ._gfcg .Peek (1);if _fgcg !=nil {return cmapHexString {},_fgcg ;};if _efba [0]=='>'{_eccg ._gfcg .ReadByte ();break ;};_bfe ,_ :=_eccg ._gfcg .ReadByte ();if _ge .IndexByte (_acc ,_bfe )>=0{_gef .WriteByte (_bfe );
|
|
};};if _gef .Len ()%2==1{_bg .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",_gef .String ());_gef .WriteByte ('0');};_aefd :=_gef .Len ()/2;
|
|
_cbda ,_ :=_af .DecodeString (_gef .String ());return cmapHexString {_ecfg :_aefd ,_gedb :_cbda },nil ;};func (cmap *CMap )Type ()int {return cmap ._cfd };func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _gf []CharCode ;if cmap ._gaa ==8{for _ ,_eada :=range data {_gf =append (_gf ,CharCode (_eada ));
|
|
};return _gf ,true ;};for _bc :=0;_bc < len (data );{_dfec ,_ccb ,_be :=cmap .matchCode (data [_bc :]);if !_be {_bg .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",_bc ,data ,string (data ));
|
|
return _gf ,false ;};_gf =append (_gf ,_dfec );_bc +=_ccb ;};return _gf ,true ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _dgf ,_ddeb :=cmap ._cff [code ];_ddeb {return _dgf ,true ;};return MissingCodeString ,false ;};type CIDSystemInfo struct{Registry string ;
|
|
Ordering string ;Supplement int ;};func (_cggd *cMapParser )parseString ()(cmapString ,error ){_cggd ._gfcg .ReadByte ();_afff :=_ge .Buffer {};_cfe :=1;for {_cbd ,_becb :=_cggd ._gfcg .Peek (1);if _becb !=nil {return cmapString {_afff .String ()},_becb ;
|
|
};if _cbd [0]=='\\'{_cggd ._gfcg .ReadByte ();_gcc ,_aebf :=_cggd ._gfcg .ReadByte ();if _aebf !=nil {return cmapString {_afff .String ()},_aebf ;};if _eba .IsOctalDigit (_gcc ){_aafd ,_ggc :=_cggd ._gfcg .Peek (2);if _ggc !=nil {return cmapString {_afff .String ()},_ggc ;
|
|
};var _bdf []byte ;_bdf =append (_bdf ,_gcc );for _ ,_dff :=range _aafd {if _eba .IsOctalDigit (_dff ){_bdf =append (_bdf ,_dff );}else {break ;};};_cggd ._gfcg .Discard (len (_bdf )-1);_bg .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_bdf );
|
|
_dcac ,_ggc :=_a .ParseUint (string (_bdf ),8,32);if _ggc !=nil {return cmapString {_afff .String ()},_ggc ;};_afff .WriteByte (byte (_dcac ));continue ;};switch _gcc {case 'n':_afff .WriteByte ('\n');case 'r':_afff .WriteByte ('\r');case 't':_afff .WriteByte ('\t');
|
|
case 'b':_afff .WriteByte ('\b');case 'f':_afff .WriteByte ('\f');case '(':_afff .WriteByte ('(');case ')':_afff .WriteByte (')');case '\\':_afff .WriteByte ('\\');};continue ;}else if _cbd [0]=='('{_cfe ++;}else if _cbd [0]==')'{_cfe --;if _cfe ==0{_cggd ._gfcg .ReadByte ();
|
|
break ;};};_gcag ,_ :=_cggd ._gfcg .ReadByte ();_afff .WriteByte (_gcag );};return cmapString {_afff .String ()},nil ;};func (cmap *CMap )parseCIDRange ()error {for {_agf ,_fbc :=cmap .parseObject ();if _fbc !=nil {if _fbc ==_eb .EOF {break ;};return _fbc ;
|
|
};_bag ,_cffd :=_agf .(cmapHexString );if !_cffd {if _gac ,_beb :=_agf .(cmapOperand );_beb {if _gac .Operand ==_gdgd {return nil ;};return _gee .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");
|
|
};};_fab :=_gdgc (_bag );_agf ,_fbc =cmap .parseObject ();if _fbc !=nil {if _fbc ==_eb .EOF {break ;};return _fbc ;};_dbg ,_cffd :=_agf .(cmapHexString );if !_cffd {return _gee .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 (_bag ._gedb )!=len (_dbg ._gedb ){return _gee .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");};_bfd :=_gdgc (_dbg );
|
|
if _fab > _bfd {_bg .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",_fab ,_bfd );
|
|
return ErrBadCMap ;};_agf ,_fbc =cmap .parseObject ();if _fbc !=nil {if _fbc ==_eb .EOF {break ;};return _fbc ;};_dfd ,_cffd :=_agf .(cmapInt );if !_cffd {return _gee .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 _dfd ._bage < 0{return _gee .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_eafa :=_dfd ._bage ;for _ccg :=_fab ;_ccg <=_bfd ;_ccg ++{cmap ._edd [_ccg ]=CharCode (_eafa );
|
|
_eafa ++;};_bg .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",_fab ,_bfd ,_dfd ._bage );};return nil ;};func (cmap *CMap )parseType ()error {_dcgf :=0;
|
|
_acg :=false ;for _gag :=0;_gag < 3&&!_acg ;_gag ++{_cab ,_bad :=cmap .parseObject ();if _bad !=nil {return _bad ;};switch _dac :=_cab .(type ){case cmapOperand :switch _dac .Operand {case "\u0064\u0065\u0066":_acg =true ;default:_bg .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",_cab );
|
|
return ErrBadCMap ;};case cmapInt :_dcgf =int (_dac ._bage );};};cmap ._cfd =_dcgf ;return nil ;};func _fceb (_gcd ,_adab int )int {if _gcd < _adab {return _gcd ;};return _adab ;};type integer struct{_dfdca bool ;_egf int ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._cfc ._egf ,cmap ._cfc ._dfdca };
|
|
func (_eaec *cMapParser )skipSpaces ()(int ,error ){_fefa :=0;for {_feg ,_cdd :=_eaec ._gfcg .Peek (1);if _cdd !=nil {return 0,_cdd ;};if _eba .IsWhiteSpace (_feg [0]){_eaec ._gfcg .ReadByte ();_fefa ++;}else {break ;};};return _fefa ,nil ;};func (_cfaa *cMapParser )parseComment ()(string ,error ){var _cea _ge .Buffer ;
|
|
_ ,_bfa :=_cfaa .skipSpaces ();if _bfa !=nil {return _cea .String (),_bfa ;};_faee :=true ;for {_ddb ,_ecga :=_cfaa ._gfcg .Peek (1);if _ecga !=nil {_bg .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_ecga );
|
|
return _cea .String (),_ecga ;};if _faee &&_ddb [0]!='%'{return _cea .String (),ErrBadCMapComment ;};_faee =false ;if (_ddb [0]!='\r')&&(_ddb [0]!='\n'){_fgee ,_ :=_cfaa ._gfcg .ReadByte ();_cea .WriteByte (_fgee );}else {break ;};};return _cea .String (),nil ;
|
|
};func _eeeg ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (_gge *cMapParser )parseName ()(cmapName ,error ){_bea :="";_aefb :=false ;for {_egab ,_bae :=_gge ._gfcg .Peek (1);if _bae ==_eb .EOF {break ;};if _bae !=nil {return cmapName {_bea },_bae ;
|
|
};if !_aefb {if _egab [0]=='/'{_aefb =true ;_gge ._gfcg .ReadByte ();}else {_bg .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",_egab ,_egab );
|
|
return cmapName {_bea },_ec .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_egab [0]);};}else {if _eba .IsWhiteSpace (_egab [0]){break ;}else if (_egab [0]=='/')||(_egab [0]=='[')||(_egab [0]=='(')||(_egab [0]==']')||(_egab [0]=='<')||(_egab [0]=='>'){break ;
|
|
}else if _egab [0]=='#'{_cdb ,_facc :=_gge ._gfcg .Peek (3);if _facc !=nil {return cmapName {_bea },_facc ;};_gge ._gfcg .Discard (3);_gfb ,_facc :=_af .DecodeString (string (_cdb [1:3]));if _facc !=nil {return cmapName {_bea },_facc ;};_bea +=string (_gfb );
|
|
}else {_afd ,_ :=_gge ._gfcg .ReadByte ();_bea +=string (_afd );};};};return cmapName {_bea },nil ;};func (cmap *CMap )parseName ()error {_cgg :="";_dcg :=false ;for _gff :=0;_gff < 20&&!_dcg ;_gff ++{_afea ,_ddf :=cmap .parseObject ();if _ddf !=nil {return _ddf ;
|
|
};switch _bbcb :=_afea .(type ){case cmapOperand :switch _bbcb .Operand {case "\u0064\u0065\u0066":_dcg =true ;default:_bg .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",_afea ,_cgg );
|
|
if _cgg !=""{_cgg =_ec .Sprintf ("\u0025\u0073\u0020%\u0073",_cgg ,_bbcb .Operand );};_bg .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",_cgg );
|
|
};case cmapName :_cgg =_bbcb .Name ;};};if !_dcg {_bg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._cf =_cgg ;return nil ;};const (_bfg =100;
|
|
_ace ="\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";
|
|
_abb ="\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 NewCIDSystemInfo (obj _eba .PdfObject )(_c CIDSystemInfo ,_ed error ){_ee ,_fg :=_eba .GetDict (obj );if !_fg {return CIDSystemInfo {},_eba .ErrTypeError ;};_efa ,_fg :=_eba .GetStringVal (_ee .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
|
|
if !_fg {return CIDSystemInfo {},_eba .ErrTypeError ;};_cg ,_fg :=_eba .GetStringVal (_ee .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_fg {return CIDSystemInfo {},_eba .ErrTypeError ;};_dd ,_fg :=_eba .GetIntVal (_ee .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
|
|
if !_fg {return CIDSystemInfo {},_eba .ErrTypeError ;};return CIDSystemInfo {Registry :_efa ,Ordering :_cg ,Supplement :_dd },nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_dg :=make (map[CharCode ]string ,len (codeToRune ));
|
|
for _geb ,_ae :=range codeToRune {_dg [_geb ]=string (_ae );};cmap :=&CMap {_cf :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_cfd :2,_gaa :16,_bb :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_cfa :[]Codespace {{Low :0,High :0xffff}},_cff :_dg ,_da :make (map[string ]CharCode ,len (codeToRune )),_edd :make (map[CharCode ]CharCode ,len (codeToRune )),_gb :make (map[CharCode ]CharCode ,len (codeToRune ))};
|
|
cmap .computeInverseMappings ();return cmap ;};func _eegbe (_ddc cmapHexString )[]rune {if len (_ddc ._gedb )==1{return []rune {rune (_ddc ._gedb [0])};};_fde :=_ddc ._gedb ;if len (_fde )%2!=0{_fde =append (_fde ,0);_bg .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",_ddc ,_fde );
|
|
};_fddg :=len (_fde )>>1;_cbad :=make ([]uint16 ,_fddg );for _fbdf :=0;_fbdf < _fddg ;_fbdf ++{_cbad [_fbdf ]=uint16 (_fde [_fbdf <<1])<<8+uint16 (_fde [_fbdf <<1+1]);};_cedf :=_g .Decode (_cbad );return _cedf ;};func (cmap *CMap )parseBfrange ()error {for {var _eag CharCode ;
|
|
_dbd ,_eeb :=cmap .parseObject ();if _eeb !=nil {if _eeb ==_eb .EOF {break ;};return _eeb ;};switch _aeaf :=_dbd .(type ){case cmapOperand :if _aeaf .Operand ==_eaee {return nil ;};return _gee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
case cmapHexString :_eag =_gdgc (_aeaf );default:return _gee .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _egae CharCode ;_dbd ,_eeb =cmap .parseObject ();if _eeb !=nil {if _eeb ==_eb .EOF {break ;};return _eeb ;
|
|
};switch _dab :=_dbd .(type ){case cmapOperand :_bg .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 :_egae =_gdgc (_dab );if _egae > 0xffff{_egae =0xffff;};default:_bg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_dbd );return ErrBadCMap ;
|
|
};_dbd ,_eeb =cmap .parseObject ();if _eeb !=nil {if _eeb ==_eb .EOF {break ;};return _eeb ;};switch _gdfc :=_dbd .(type ){case cmapArray :if len (_gdfc .Array )!=int (_egae -_eag )+1{_bg .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 _fagf :=_eag ;_fagf <=_egae ;_fagf ++{_abc :=_gdfc .Array [_fagf -_eag ];_ddea ,_eafb :=_abc .(cmapHexString );if !_eafb {return _gee .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
|
|
};_eff :=_eegbe (_ddea );cmap ._cff [_fagf ]=string (_eff );};case cmapHexString :_bfge :=_eegbe (_gdfc );_abea :=len (_bfge );for _dabc :=_eag ;_dabc <=_egae ;_dabc ++{cmap ._cff [_dabc ]=string (_bfge );if _abea > 0{_bfge [_abea -1]++;}else {_bg .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",_dabc );
|
|
};if _dabc ==1<<32-1{break ;};};default:_bg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_dbd );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )parseVersion ()error {_aba :="";
|
|
_ccc :=false ;for _abe :=0;_abe < 3&&!_ccc ;_abe ++{_aec ,_faf :=cmap .parseObject ();if _faf !=nil {return _faf ;};switch _dddg :=_aec .(type ){case cmapOperand :switch _dddg .Operand {case "\u0064\u0065\u0066":_ccc =true ;default:_bg .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",_aec );
|
|
return ErrBadCMap ;};case cmapInt :_aba =_ec .Sprintf ("\u0025\u0064",_dddg ._bage );case cmapFloat :_aba =_ec .Sprintf ("\u0025\u0066",_dddg ._gddb );case cmapString :_aba =_dddg .String ;default:_bg .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",_aec );
|
|
};};cmap ._ba =_aba ;return nil ;};func (cmap *CMap )computeInverseMappings (){for _gbf ,_dfeg :=range cmap ._edd {if _cd ,_ecc :=cmap ._gb [_dfeg ];!_ecc ||(_ecc &&_cd > _gbf ){cmap ._gb [_dfeg ]=_gbf ;};};for _fda ,_dad :=range cmap ._cff {if _gg ,_fb :=cmap ._da [_dad ];
|
|
!_fb ||(_fb &&_gg > _fda ){cmap ._da [_dad ]=_fda ;};};_ef .Slice (cmap ._cfa ,func (_fgg ,_ebbe int )bool {return cmap ._cfa [_fgg ].Low < cmap ._cfa [_ebbe ].Low });};func (_bce *cMapParser )parseOperand ()(cmapOperand ,error ){_cddd :=cmapOperand {};
|
|
_ecge :=_ge .Buffer {};for {_ecd ,_aeae :=_bce ._gfcg .Peek (1);if _aeae !=nil {if _aeae ==_eb .EOF {break ;};return _cddd ,_aeae ;};if _eba .IsDelimiter (_ecd [0]){break ;};if _eba .IsWhiteSpace (_ecd [0]){break ;};_dbc ,_ :=_bce ._gfcg .ReadByte ();_ecge .WriteByte (_dbc );
|
|
};if _ecge .Len ()==0{return _cddd ,_ec .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_cddd .Operand =_ecge .String ();return _cddd ,nil ;};type cmapOperand struct{Operand string ;
|
|
};type cmapArray struct{Array []cmapObject ;};var (ErrBadCMap =_gee .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_gee .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 =_gee .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (cmap *CMap )inCodespace (_fbf CharCode ,_gc int )bool {for _ ,_febf :=range cmap ._cfa {if _febf .Low <=_fbf &&_fbf <=_febf .High &&_gc ==_febf .NumBytes {return true ;
|
|
};};return false ;};func _gdgc (_acd cmapHexString )CharCode {_eebc :=CharCode (0);for _ ,_afc :=range _acd ._gedb {_eebc <<=8;_eebc |=CharCode (_afc );};return _eebc ;};func (cmap *CMap )Name ()string {return cmap ._cf };func (cmap *CMap )parseSystemInfo ()error {_efc :=false ;
|
|
_afb :=false ;_ad :="";_gegf :=false ;_eed :=CIDSystemInfo {};for _adg :=0;_adg < 50&&!_gegf ;_adg ++{_gfc ,_fcgf :=cmap .parseObject ();if _fcgf !=nil {return _fcgf ;};switch _cge :=_gfc .(type ){case cmapDict :_bbg :=_cge .Dict ;_dcc ,_dfbb :=_bbg ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];
|
|
if !_dfbb {_bg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dafe ,_dfbb :=_dcc .(cmapString );if !_dfbb {_bg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_eed .Registry =_dafe .String ;_dcc ,_dfbb =_bbg ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_dfbb {_bg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_dafe ,_dfbb =_dcc .(cmapString );if !_dfbb {_bg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_eed .Ordering =_dafe .String ;
|
|
_cdf ,_dfbb :=_bbg ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_dfbb {_bg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;
|
|
};_gfa ,_dfbb :=_cdf .(cmapInt );if !_dfbb {_bg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_eed .Supplement =int (_gfa ._bage );_gegf =true ;
|
|
case cmapOperand :switch _cge .Operand {case "\u0062\u0065\u0067i\u006e":_efc =true ;case "\u0065\u006e\u0064":_gegf =true ;case "\u0064\u0065\u0066":_afb =false ;};case cmapName :if _efc {_ad =_cge .Name ;_afb =true ;};case cmapString :if _afb {switch _ad {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_eed .Registry =_cge .String ;
|
|
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_eed .Ordering =_cge .String ;};};case cmapInt :if _afb {switch _ad {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_eed .Supplement =int (_cge ._bage );};};};};if !_gegf {_bg .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 ._bb =_eed ;return nil ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_bg .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 :=_bd (isSimple );cmap .cMapParser =_bagd (data );_eg :=cmap .parse ();if _eg !=nil {return nil ,_eg ;};if len (cmap ._cfa )==0{if cmap ._fgc !=""{return cmap ,nil ;};_bg .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
|
|
};cmap .computeInverseMappings ();return cmap ,nil ;};type fbRange struct{_db CharCode ;_ga CharCode ;_afa string ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_fe ,_fa :=cmap ._da [s ];return _fe ,_fa };type cMapParser struct{_gfcg *_d .Reader };
|
|
type cmapName struct{Name string ;};type cmapFloat struct{_gddb float64 };func (cmap *CMap )String ()string {_cgd :=cmap ._bb ;_ac :=[]string {_ec .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._gaa ),_ec .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._cfd )};
|
|
if cmap ._ba !=""{_ac =append (_ac ,_ec .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._ba ));};if cmap ._fgc !=""{_ac =append (_ac ,_ec .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._fgc ));
|
|
};_ac =append (_ac ,_ec .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_cgd .String ()));if len (cmap ._cfa )> 0{_ac =append (_ac ,_ec .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._cfa )));
|
|
};if len (cmap ._cff )> 0{_ac =append (_ac ,_ec .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._cff )));};return _ec .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._cf ,_b .Join (_ac ,"\u0020"));
|
|
};func (_cec *cMapParser )parseArray ()(cmapArray ,error ){_afg :=cmapArray {};_afg .Array =[]cmapObject {};_cec ._gfcg .ReadByte ();for {_cec .skipSpaces ();_dabb ,_bbd :=_cec ._gfcg .Peek (1);if _bbd !=nil {return _afg ,_bbd ;};if _dabb [0]==']'{_cec ._gfcg .ReadByte ();
|
|
break ;};_bagf ,_bbd :=_cec .parseObject ();if _bbd !=nil {return _afg ,_bbd ;};_afg .Array =append (_afg .Array ,_bagf );};return _afg ,nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_cdg ,_fac :=cmap ._gb [cid ];return _cdg ,_fac ;
|
|
};type cmapHexString struct{_ecfg int ;_gedb []byte ;};const (_f =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func _bagd (_aef []byte )*cMapParser {_gab :=cMapParser {};_fae :=_ge .NewBuffer (_aef );_gab ._gfcg =_d .NewReader (_fae );
|
|
return &_gab ;};func (_fc *CIDSystemInfo )String ()string {return _ec .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_fc .Registry ,_fc .Ordering ,_fc .Supplement );};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_aeg ,_daf :=cmap ._edd [code ];
|
|
return _aeg ,_daf ;}; |