Files
PdfPig/src/UglyToad.PdfPig/PdfFonts/Encodings/MacRomanEncoding.cs
Eliot Jones bbde38f656 move tokenizers to their own project
since both pdfs and Adobe Type1 fonts use postscript type objects, tokenization is needed by the main project and the fonts project
2020-01-05 10:40:44 +00:00

235 lines
6.8 KiB
C#

namespace UglyToad.PdfPig.PdfFonts.Encodings
{
using Core;
internal class MacRomanEncoding : Encoding
{
/// <summary>
/// Table of octal character codes and their corresponding names.
/// </summary>
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);
}
}
}
}