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]