Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pypdf/_codecs/__init__.py: 100%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

32 statements  

1from typing import Dict, List 

2 

3from .adobe_glyphs import adobe_glyphs 

4from .pdfdoc import _pdfdoc_encoding 

5from .std import _std_encoding 

6from .symbol import _symbol_encoding 

7from .zapfding import _zapfding_encoding 

8 

9 

10def fill_from_encoding(enc: str) -> List[str]: 

11 lst: List[str] = [] 

12 for x in range(256): 

13 try: 

14 lst += (bytes((x,)).decode(enc),) 

15 except Exception: 

16 lst += (chr(x),) 

17 return lst 

18 

19 

20def rev_encoding(enc: List[str]) -> Dict[str, int]: 

21 rev: Dict[str, int] = {} 

22 for i in range(256): 

23 char = enc[i] 

24 if char == "\u0000": 

25 continue 

26 assert char not in rev, f"{char} at {i} already at {rev[char]}" 

27 rev[char] = i 

28 return rev 

29 

30 

31_win_encoding = fill_from_encoding("cp1252") 

32_mac_encoding = fill_from_encoding("mac_roman") 

33 

34 

35_win_encoding_rev: Dict[str, int] = rev_encoding(_win_encoding) 

36_mac_encoding_rev: Dict[str, int] = rev_encoding(_mac_encoding) 

37_symbol_encoding_rev: Dict[str, int] = rev_encoding(_symbol_encoding) 

38_zapfding_encoding_rev: Dict[str, int] = rev_encoding(_zapfding_encoding) 

39_pdfdoc_encoding_rev: Dict[str, int] = rev_encoding(_pdfdoc_encoding) 

40 

41 

42charset_encoding: Dict[str, List[str]] = { 

43 "/StandardEncoding": _std_encoding, 

44 "/WinAnsiEncoding": _win_encoding, 

45 "/MacRomanEncoding": _mac_encoding, 

46 "/PDFDocEncoding": _pdfdoc_encoding, 

47 "/Symbol": _symbol_encoding, 

48 "/ZapfDingbats": _zapfding_encoding, 

49} 

50 

51__all__ = [ 

52 "_mac_encoding", 

53 "_pdfdoc_encoding", 

54 "_pdfdoc_encoding_rev", 

55 "_std_encoding", 

56 "_symbol_encoding", 

57 "_win_encoding", 

58 "_zapfding_encoding", 

59 "adobe_glyphs", 

60 "charset_encoding", 

61]