unipdf/internal/textencoding/textencoding.go

12 lines
1.2 MiB
Go
Raw Normal View History

2020-08-27 21:45:09 +00:00
//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
2020-08-31 21:12:07 +00:00
package textencoding ;import (_f "bytes";_gae "encoding/binary";_d "errors";_fb "fmt";_e "github.com/unidoc/unipdf/v3/common";_dc "github.com/unidoc/unipdf/v3/core";_dcf "github.com/unidoc/unipdf/v3/internal/cmap";_c "github.com/unidoc/unipdf/v3/internal/strutils";_bf "golang.org/x/text/encoding";_dfd "golang.org/x/text/transform";_af "regexp";_dd "sort";_dg "strconv";_df "strings";_ga "sync";_b "unicode";_g "unicode/utf8";);func (_fbfe *TrueTypeFontEncoder )CharcodeToRune (code CharCode )(rune ,bool ){for _gfcg ,_cbb :=range _fbfe ._ccfb {_cfd :=CharCode (_cbb );if _cfd ==code {return _gfcg ,true ;};};_e .Log .Debug ("\u0043h\u0061\u0072c\u006f\u0064\u0065\u0054o\u0052\u0075\u006ee\u003a\u0020\u004e\u006f\u0020\u006d\u0061\u0074\u0063h.\u0020\u0063\u006fd\u0065\u003d0\u0078\u0025\u0030\u0034\u0078\u0020e\u006e\u0063=\u0025\u0073",code ,_fbfe );return 0,false ;};func (_gga CMapEncoder )charcodeToString (_dgc CharCode )(string ,bool ){if _gga ._afe ==nil {return MissingCodeString ,false ;};_deg :=_dcf .CharCode (_dgc );if _gga ._eb !=nil {var _dge bool ;if _deg ,_dge =_gga ._eb .CharcodeToCID (_dcf .CharCode (_dgc ));!_dge {return MissingCodeString ,false ;};};return _gga ._afe .CharcodeToUnicode (_deg );};func (_fa *differencesEncoding )Charcodes ()[]CharCode {_dfb :=_fa ._dbf .Charcodes ();_bfb :=true ;_ecg :=make (map[CharCode ]struct{},len (_dfb ));for _ ,_bba :=range _dfb {_ecg [_bba ]=struct{}{};};for _cdee :=range _fa ._ebf {_ggc :=CharCode (_cdee );if _ ,_efb :=_ecg [_ggc ];!_efb {_dfb =append (_dfb ,_ggc );_bfb =false ;};};if !_bfb {_dd .Slice (_dfb ,func (_be ,_fec int )bool {return _dfb [_be ]< _dfb [_fec ]});};return _dfb ;};func (_gfb *IdentityEncoder )RuneToGlyph (r rune )(GlyphName ,bool ){if r ==' '{return "\u0073\u0070\u0061c\u0065",true ;};_bdfc :=GlyphName (_fb .Sprintf ("\u0075n\u0069\u0025\u002e\u0034\u0058",r ));return _bdfc ,true ;};func _cfdc (_efcd rune ,_bgfa map[rune ]GlyphName )(GlyphName ,bool ){_gadc ,_gce :=_bgfa [_efcd ];if _gce {return _gadc ,true ;};_e .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0072\u0075\u006e\u0065\u0054\u006f\u0047\u006c\u0079\u0070\u0068\u0020u\u006e\u0061\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066\u0069\u006e\u0064\u0020\u0067\u006c\u0079\u0070\u0068\u0020\u0066\u006f\u0072\u0020\u0072\u0075\u006e\u0065\u0020\u0025s",_ggge (_efcd ));return "",false ;};func (_ecad UTF16Encoder )RuneToCharcode (r rune )(CharCode ,bool ){return CharCode (r ),true };func NewMacExpertEncoder ()SimpleEncoder {return _gddd .NewEncoder ()};type differencesEncoding struct{_dbf SimpleEncoder ;_dfaf map[CharCode ]GlyphName ;_ebf map[byte ]rune ;_gc map[rune ]byte ;};func NewMacRomanEncoder ()SimpleEncoder {return _egfbd .NewEncoder ()};func ApplyDifferences (base SimpleEncoder ,differences map[CharCode ]GlyphName )SimpleEncoder {if len (differences )==0{return base ;};_gba :=&differencesEncoding {_dbf :base ,_dfaf :differences ,_ebf :make (map[byte ]rune ),_gc :make (map[rune ]byte )};if _eab ,_cdbg :=base .(*differencesEncoding );_cdbg {_bfd :=make (map[CharCode ]GlyphName );for _ge ,_ee :=range _eab ._dfaf {_bfd [_ge ]=_ee ;};for _gbc ,_ag :=range differences {_bfd [_gbc ]=_ag ;};differences =_bfd ;base =_eab ._dbf ;};for _dfdf ,_fc :=range differences {_gf :=byte (_dfdf );_bb ,_afg :=GlyphToRune (_fc );if _afg {_gba ._gc [_bb ]=_gf ;}else {_e .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u004e\u006f \u006d\u0061\u0074c\u0068\u0020\u0066\u006f\u0072\u0020\u0067\u006c\u0079ph\u003d\u0025\u0071 \u0064\u0069f\u0066\u0065\u0072\u0065\u006e\u0063e\u0073\u003d%\u002b\u0076",_fc ,differences );};_gba ._ebf [_gf ]=_bb ;};return _gba ;};func _egfb (_ceb TextEncoder ,_ecf []byte )string {_eaa :=make ([]rune ,0,len (_ecf )/2+len (_ecf )%2);for len (_ecf )> 0{if len (_ecf )==1{_ecf =[]byte {_ecf [0],0};};_gcg :=CharCode (_gae .BigEndian .Uint16 (_ecf [:]));_ecf =_ecf [2:];_fccf ,_fbf :=_ceb .CharcodeToRune (_gcg );if !_fbf {_e .Log .Debug ("\u0046a\u0069\u006ce\u0064\u0020\u0074\u006f \u006d\u0061\u0070 \u0063\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0020to\u0020\u0072\u0075n\u0065\u00