namespace UglyToad.PdfPig.PdfFonts.Encodings { using Core; internal class MacRomanEncoding : Encoding { /// /// Table of octal character codes and their corresponding names. /// private static readonly (int, string)[] EncodingTable = { (0101, "A"), (0256, "AE"), (0347, "Aacute"), (0345, "Acircumflex"), (0200, "Adieresis"), (0313, "Agrave"), (0201, "Aring"), (0314, "Atilde"), (0102, "B"), (0103, "C"), (0202, "Ccedilla"), (0104, "D"), (0105, "E"), (0203, "Eacute"), (0346, "Ecircumflex"), (0350, "Edieresis"), (0351, "Egrave"), (0106, "F"), (0107, "G"), (0110, "H"), (0111, "I"), (0352, "Iacute"), (0353, "Icircumflex"), (0354, "Idieresis"), (0355, "Igrave"), (0112, "J"), (0113, "K"), (0114, "L"), (0115, "M"), (0116, "N"), (0204, "Ntilde"), (0117, "O"), (0316, "OE"), (0356, "Oacute"), (0357, "Ocircumflex"), (0205, "Odieresis"), (0361, "Ograve"), (0257, "Oslash"), (0315, "Otilde"), (0120, "P"), (0121, "Q"), (0122, "R"), (0123, "S"), (0124, "T"), (0125, "U"), (0362, "Uacute"), (0363, "Ucircumflex"), (0206, "Udieresis"), (0364, "Ugrave"), (0126, "V"), (0127, "W"), (0130, "X"), (0131, "Y"), (0331, "Ydieresis"), (0132, "Z"), (0141, "a"), (0207, "aacute"), (0211, "acircumflex"), (0253, "acute"), (0212, "adieresis"), (0276, "ae"), (0210, "agrave"), (046, "ampersand"), (0214, "aring"), (0136, "asciicircum"), (0176, "asciitilde"), (052, "asterisk"), (0100, "at"), (0213, "atilde"), (0142, "b"), (0134, "backslash"), (0174, "bar"), (0173, "braceleft"), (0175, "braceright"), (0133, "bracketleft"), (0135, "bracketright"), (0371, "breve"), (0245, "bullet"), (0143, "c"), (0377, "caron"), (0215, "ccedilla"), (0374, "cedilla"), (0242, "cent"), (0366, "circumflex"), (072, "colon"), (054, "comma"), (0251, "copyright"), (0333, "currency"), (0144, "d"), (0240, "dagger"), (0340, "daggerdbl"), (0241, "degree"), (0254, "dieresis"), (0326, "divide"), (044, "dollar"), (0372, "dotaccent"), (0365, "dotlessi"), (0145, "e"), (0216, "eacute"), (0220, "ecircumflex"), (0221, "edieresis"), (0217, "egrave"), (070, "eight"), (0311, "ellipsis"), (0321, "emdash"), (0320, "endash"), (075, "equal"), (041, "exclam"), (0301, "exclamdown"), (0146, "f"), (0336, "fi"), (065, "five"), (0337, "fl"), (0304, "florin"), (064, "four"), (0332, "fraction"), (0147, "g"), (0247, "germandbls"), (0140, "grave"), (076, "greater"), (0307, "guillemotleft"), (0310, "guillemotright"), (0334, "guilsinglleft"), (0335, "guilsinglright"), (0150, "h"), (0375, "hungarumlaut"), (055, "hyphen"), (0151, "i"), (0222, "iacute"), (0224, "icircumflex"), (0225, "idieresis"), (0223, "igrave"), (0152, "j"), (0153, "k"), (0154, "l"), (074, "less"), (0302, "logicalnot"), (0155, "m"), (0370, "macron"), (0265, "mu"), (0156, "n"), (071, "nine"), (0226, "ntilde"), (043, "numbersign"), (0157, "o"), (0227, "oacute"), (0231, "ocircumflex"), (0232, "odieresis"), (0317, "oe"), (0376, "ogonek"), (0230, "ograve"), (061, "one"), (0273, "ordfeminine"), (0274, "ordmasculine"), (0277, "oslash"), (0233, "otilde"), (0160, "p"), (0246, "paragraph"), (050, "parenleft"), (051, "parenright"), (045, "percent"), (056, "period"), (0341, "periodcentered"), (0344, "perthousand"), (053, "plus"), (0261, "plusminus"), (0161, "q"), (077, "question"), (0300, "questiondown"), (042, "quotedbl"), (0343, "quotedblbase"), (0322, "quotedblleft"), (0323, "quotedblright"), (0324, "quoteleft"), (0325, "quoteright"), (0342, "quotesinglbase"), (047, "quotesingle"), (0162, "r"), (0250, "registered"), (0373, "ring"), (0163, "s"), (0244, "section"), (073, "semicolon"), (067, "seven"), (066, "six"), (057, "slash"), (040, "space"), (0243, "sterling"), (0164, "t"), (063, "three"), (0367, "tilde"), (0252, "trademark"), (062, "two"), (0165, "u"), (0234, "uacute"), (0236, "ucircumflex"), (0237, "udieresis"), (0235, "ugrave"), (0137, "underscore"), (0166, "v"), (0167, "w"), (0170, "x"), (0171, "y"), (0330, "ydieresis"), (0264, "yen"), (0172, "z"), (060, "zero"), // adding an additional mapping as defined in Appendix D of the pdf spec (0312, "space") }; public static MacRomanEncoding Instance { get; } = new MacRomanEncoding(); public override string EncodingName => "MacRomanEncoding"; protected MacRomanEncoding() { foreach (var valueTuple in EncodingTable) { Add(OctalHelpers.FromOctalInt(valueTuple.Item1), valueTuple.Item2); } } } }