codekingpro/portable-devtools
114k
1from .adobe_glyphs import adobe_glyphs2from .pdfdoc import _pdfdoc_encoding3from .std import _std_encoding4from .symbol import _symbol_encoding5from .zapfding import _zapfding_encoding6 7 8def fill_from_encoding(enc: str) -> list[str]:9 lst: list[str] = []10 for x in range(256):11 try:12 lst += (bytes((x,)).decode(enc),)13 except Exception:14 lst += (chr(x),)15 return lst16 17 18def rev_encoding(enc: list[str]) -> dict[str, int]:19 rev: dict[str, int] = {}20 for i in range(256):21 char = enc[i]22 if char == "\u0000":23 continue24 assert char not in rev, f"{char} at {i} already at {rev[char]}"25 rev[char] = i26 return rev27 28 29_win_encoding = fill_from_encoding("cp1252")30_mac_encoding = fill_from_encoding("mac_roman")31 32 33_pdfdoc_encoding_rev: dict[str, int] = rev_encoding(_pdfdoc_encoding)34 35 36charset_encoding: dict[str, list[str]] = {37 "/StandardEncoding": _std_encoding,38 "/WinAnsiEncoding": _win_encoding,39 "/MacRomanEncoding": _mac_encoding,40 "/PDFDocEncoding": _pdfdoc_encoding,41 "/Symbol": _symbol_encoding,42 "/ZapfDingbats": _zapfding_encoding,43}44 45__all__ = [46 "_mac_encoding",47 "_pdfdoc_encoding",48 "_pdfdoc_encoding_rev",49 "_std_encoding",50 "_symbol_encoding",51 "_win_encoding",52 "_zapfding_encoding",53 "adobe_glyphs",54 "charset_encoding",55]56 