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

31 statements  

1from .adobe_glyphs import adobe_glyphs 

2from .pdfdoc import _pdfdoc_encoding 

3from .std import _std_encoding 

4from .symbol import _symbol_encoding 

5from .zapfding import _zapfding_encoding 

6 

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 lst 

16 

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 continue 

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

25 rev[char] = i 

26 return rev 

27 

28 

29_win_encoding = fill_from_encoding("cp1252") 

30_mac_encoding = fill_from_encoding("mac_roman") 

31 

32 

33_win_encoding_rev: dict[str, int] = rev_encoding(_win_encoding) 

34_mac_encoding_rev: dict[str, int] = rev_encoding(_mac_encoding) 

35_symbol_encoding_rev: dict[str, int] = rev_encoding(_symbol_encoding) 

36_zapfding_encoding_rev: dict[str, int] = rev_encoding(_zapfding_encoding) 

37_pdfdoc_encoding_rev: dict[str, int] = rev_encoding(_pdfdoc_encoding) 

38 

39 

40charset_encoding: dict[str, list[str]] = { 

41 "/StandardEncoding": _std_encoding, 

42 "/WinAnsiEncoding": _win_encoding, 

43 "/MacRomanEncoding": _mac_encoding, 

44 "/PDFDocEncoding": _pdfdoc_encoding, 

45 "/Symbol": _symbol_encoding, 

46 "/ZapfDingbats": _zapfding_encoding, 

47} 

48 

49__all__ = [ 

50 "_mac_encoding", 

51 "_pdfdoc_encoding", 

52 "_pdfdoc_encoding_rev", 

53 "_std_encoding", 

54 "_symbol_encoding", 

55 "_win_encoding", 

56 "_zapfding_encoding", 

57 "adobe_glyphs", 

58 "charset_encoding", 

59]