2020-10-12 14:17:59 +00:00
|
|
|
package cmap ;import (_be "bufio";_bg "bytes";_f "encoding/hex";_a "errors";_g "fmt";_gf "github.com/unidoc/unipdf/v3/common";_ae "github.com/unidoc/unipdf/v3/core";_fd "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_bb "io";_beb "sort";_bc "strconv";_c "strings";_bf "unicode/utf16";);func IsPredefinedCMap (name string )bool {return _fd .AssetExists (name )};func (_bgaf *cMapParser )parseDict ()(cmapDict ,error ){_gf .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_aecc :=_bfg ();_efd ,_ :=_bgaf ._decd .ReadByte ();if _efd !='<'{return _aecc ,ErrBadCMapDict ;};_efd ,_ =_bgaf ._decd .ReadByte ();if _efd !='<'{return _aecc ,ErrBadCMapDict ;};for {_bgaf .skipSpaces ();_fddg ,_ebd :=_bgaf ._decd .Peek (2);if _ebd !=nil {return _aecc ,_ebd ;};if (_fddg [0]=='>')&&(_fddg [1]=='>'){_bgaf ._decd .ReadByte ();_bgaf ._decd .ReadByte ();break ;};_baef ,_ebd :=_bgaf .parseName ();_gf .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_baef .Name );if _ebd !=nil {_gf .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",_ebd );return _aecc ,_ebd ;};_bgaf .skipSpaces ();_egf ,_ebd :=_bgaf .parseObject ();if _ebd !=nil {return _aecc ,_ebd ;};_aecc .Dict [_baef .Name ]=_egf ;_bgaf .skipSpaces ();_fddg ,_ebd =_bgaf ._decd .Peek (3);if _ebd !=nil {return _aecc ,_ebd ;};if string (_fddg )=="\u0064\u0065\u0066"{_bgaf ._decd .Discard (3);};};return _aecc ,nil ;};func _eea (_dff cmapHexString )rune {_cbfd :=_eedg (_dff );if _cbca :=len (_cbfd );_cbca ==0{_gf .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",_dff );return MissingCodeRune ;};if len (_cbfd )> 1{_gf .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",_dff ,_cbfd );};return _cbfd [0];};const (_cdc ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_egg ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_gab ="\u0065n\u0064\u0063\u006d\u0061\u0070";_bee ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_gdf ="\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";_ege ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_ebb ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gad ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_edd ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_egc ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_ddd ="\u0075s\u0065\u0063\u006d\u0061\u0070";_eaba ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_eda ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_fbg ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_dcea ,_gcc :=cmap ._bbf [code ];return _dcea ,_gcc ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _gca []CharCode ;if cmap ._ag ==8{for _ ,_daa :=range data {_gca =append (_gca ,CharCode (_daa ));};return _gca ,true ;};for _gdc :=0;_gdc < len (data );{_aeef ,_fb ,_gced :=cmap .matchCode (data [_gdc :]);if !_gced {_gf .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\
|