# Source code for fontTools.misc.encodingTools

    """fontTools.misc.encodingTools.py -- tools for working with OpenType encodings.
    """

    import fontTools.encodings.codecs

    # Map keyed by platformID, then platEncID, then possibly langID
    _encodingMap = {
    	0: { # Unicode
    		0: 'utf_16_be',
    		1: 'utf_16_be',
    		2: 'utf_16_be',
    		3: 'utf_16_be',
    		4: 'utf_16_be',
    		5: 'utf_16_be',
    		6: 'utf_16_be',
    	},
    	1: { # Macintosh
    		# See
    		# https://github.com/fonttools/fonttools/issues/236
    		0: { # Macintosh, platEncID==0, keyed by langID
    			15: "mac_iceland",
    			17: "mac_turkish",
    			18: "mac_croatian",
    			24: "mac_latin2",
    			25: "mac_latin2",
    			26: "mac_latin2",
    			27: "mac_latin2",
    			28: "mac_latin2",
    			36: "mac_latin2",
    			37: "mac_romanian",
    			38: "mac_latin2",
    			39: "mac_latin2",
    			40: "mac_latin2",
    			Ellipsis: 'mac_roman', # Other
    		},
    		1: 'x_mac_japanese_ttx',
    		2: 'x_mac_trad_chinese_ttx',
    		3: 'x_mac_korean_ttx',
    		6: 'mac_greek',
    		7: 'mac_cyrillic',
    		25: 'x_mac_simp_chinese_ttx',
    		29: 'mac_latin2',
    		35: 'mac_turkish',
    		37: 'mac_iceland',
    	},
    	2: { # ISO
    		0: 'ascii',
    		1: 'utf_16_be',
    		2: 'latin1',
    	},
    	3: { # Microsoft
    		0: 'utf_16_be',
    		1: 'utf_16_be',
    		2: 'shift_jis',
    		3: 'gb2312',
    		4: 'big5',
    		5: 'euc_kr',
    		6: 'johab',
    		10: 'utf_16_be',
    	},
    }

    def getEncoding(platformID, platEncID, langID, default=None):
    	"""Returns the Python encoding name for OpenType platformID/encodingID/langID
    	triplet.  If encoding for these values is not known, by default None is
    	returned.  That can be overriden by passing a value to the default argument.
    	"""
    	encoding = _encodingMap.get(platformID, {}).get(platEncID, default)
    	if isinstance(encoding, dict):
    		encoding = encoding.get(langID, encoding[Ellipsis])
    	return encoding