pdfrum-font 0.1.0

PDF font dictionaries, encodings, glyph mapping and outlines
// @generated by crates/pdfrum-font/extract-tables.py from the read-only PDFium C++ oracle
// checkout. Do not edit by hand; re-run the extractor instead.
//
// Source: core/fxge/cfx_standardfont.cpp
// License: PDFium, BSD 3-clause (LICENSE at the oracle checkout root).
// Original code copyright 2014 Foxit Software Inc.

use super::StandardFont;

/// `kBase14FontNames` — the canonical PostScript names, indexed by
/// `StandardFont`'s discriminant.
pub(crate) const BASE14_FONT_NAMES: [&str; 14] = [
    "Courier",
    "Courier-Bold",
    "Courier-BoldOblique",
    "Courier-Oblique",
    "Helvetica",
    "Helvetica-Bold",
    "Helvetica-BoldOblique",
    "Helvetica-Oblique",
    "Times-Roman",
    "Times-Bold",
    "Times-BoldItalic",
    "Times-Italic",
    "Symbol",
    "ZapfDingbats",
];

/// `kAltFontNames` — aliases accepted for a base-14 face. Sorted
/// case-insensitively; PDFium binary-searches it with `FXSYS_stricmp`.
pub(crate) const ALT_FONT_NAMES: &[(&str, StandardFont)] = &[
    ("Arial", StandardFont::Helvetica),
    ("Arial,Bold", StandardFont::HelveticaBold),
    ("Arial,BoldItalic", StandardFont::HelveticaBoldOblique),
    ("Arial,Italic", StandardFont::HelveticaOblique),
    ("Arial-Bold", StandardFont::HelveticaBold),
    ("Arial-BoldItalic", StandardFont::HelveticaBoldOblique),
    ("Arial-BoldItalicMT", StandardFont::HelveticaBoldOblique),
    ("Arial-BoldMT", StandardFont::HelveticaBold),
    ("Arial-Italic", StandardFont::HelveticaOblique),
    ("Arial-ItalicMT", StandardFont::HelveticaOblique),
    ("ArialBold", StandardFont::HelveticaBold),
    ("ArialBoldItalic", StandardFont::HelveticaBoldOblique),
    ("ArialItalic", StandardFont::HelveticaOblique),
    ("ArialMT", StandardFont::Helvetica),
    ("ArialMT,Bold", StandardFont::HelveticaBold),
    ("ArialMT,BoldItalic", StandardFont::HelveticaBoldOblique),
    ("ArialMT,Italic", StandardFont::HelveticaOblique),
    ("ArialRoundedMTBold", StandardFont::HelveticaBold),
    ("Courier", StandardFont::Courier),
    ("Courier,Bold", StandardFont::CourierBold),
    ("Courier,BoldItalic", StandardFont::CourierBoldOblique),
    ("Courier,Italic", StandardFont::CourierOblique),
    ("Courier-Bold", StandardFont::CourierBold),
    ("Courier-BoldOblique", StandardFont::CourierBoldOblique),
    ("Courier-Oblique", StandardFont::CourierOblique),
    ("CourierBold", StandardFont::CourierBold),
    ("CourierBoldItalic", StandardFont::CourierBoldOblique),
    ("CourierItalic", StandardFont::CourierOblique),
    ("CourierNew", StandardFont::Courier),
    ("CourierNew,Bold", StandardFont::CourierBold),
    ("CourierNew,BoldItalic", StandardFont::CourierBoldOblique),
    ("CourierNew,Italic", StandardFont::CourierOblique),
    ("CourierNew-Bold", StandardFont::CourierBold),
    ("CourierNew-BoldItalic", StandardFont::CourierBoldOblique),
    ("CourierNew-Italic", StandardFont::CourierOblique),
    ("CourierNewBold", StandardFont::CourierBold),
    ("CourierNewBoldItalic", StandardFont::CourierBoldOblique),
    ("CourierNewItalic", StandardFont::CourierOblique),
    (
        "CourierNewPS-BoldItalicMT",
        StandardFont::CourierBoldOblique,
    ),
    ("CourierNewPS-BoldMT", StandardFont::CourierBold),
    ("CourierNewPS-ItalicMT", StandardFont::CourierOblique),
    ("CourierNewPSMT", StandardFont::Courier),
    ("CourierStd", StandardFont::Courier),
    ("CourierStd-Bold", StandardFont::CourierBold),
    ("CourierStd-BoldOblique", StandardFont::CourierBoldOblique),
    ("CourierStd-Oblique", StandardFont::CourierOblique),
    ("Helvetica", StandardFont::Helvetica),
    ("Helvetica,Bold", StandardFont::HelveticaBold),
    ("Helvetica,BoldItalic", StandardFont::HelveticaBoldOblique),
    ("Helvetica,Italic", StandardFont::HelveticaOblique),
    ("Helvetica-Bold", StandardFont::HelveticaBold),
    ("Helvetica-BoldItalic", StandardFont::HelveticaBoldOblique),
    ("Helvetica-BoldOblique", StandardFont::HelveticaBoldOblique),
    ("Helvetica-Italic", StandardFont::HelveticaOblique),
    ("Helvetica-Oblique", StandardFont::HelveticaOblique),
    ("HelveticaBold", StandardFont::HelveticaBold),
    ("HelveticaBoldItalic", StandardFont::HelveticaBoldOblique),
    ("HelveticaItalic", StandardFont::HelveticaOblique),
    ("Symbol", StandardFont::Symbol),
    ("SymbolMT", StandardFont::Symbol),
    ("Times-Bold", StandardFont::TimesBold),
    ("Times-BoldItalic", StandardFont::TimesBoldOblique),
    ("Times-Italic", StandardFont::TimesOblique),
    ("Times-Roman", StandardFont::Times),
    ("TimesBold", StandardFont::TimesBold),
    ("TimesBoldItalic", StandardFont::TimesBoldOblique),
    ("TimesItalic", StandardFont::TimesOblique),
    ("TimesNewRoman", StandardFont::Times),
    ("TimesNewRoman,Bold", StandardFont::TimesBold),
    ("TimesNewRoman,BoldItalic", StandardFont::TimesBoldOblique),
    ("TimesNewRoman,Italic", StandardFont::TimesOblique),
    ("TimesNewRoman-Bold", StandardFont::TimesBold),
    ("TimesNewRoman-BoldItalic", StandardFont::TimesBoldOblique),
    ("TimesNewRoman-Italic", StandardFont::TimesOblique),
    ("TimesNewRomanBold", StandardFont::TimesBold),
    ("TimesNewRomanBoldItalic", StandardFont::TimesBoldOblique),
    ("TimesNewRomanItalic", StandardFont::TimesOblique),
    ("TimesNewRomanPS", StandardFont::Times),
    ("TimesNewRomanPS-Bold", StandardFont::TimesBold),
    ("TimesNewRomanPS-BoldItalic", StandardFont::TimesBoldOblique),
    (
        "TimesNewRomanPS-BoldItalicMT",
        StandardFont::TimesBoldOblique,
    ),
    ("TimesNewRomanPS-BoldMT", StandardFont::TimesBold),
    ("TimesNewRomanPS-Italic", StandardFont::TimesOblique),
    ("TimesNewRomanPS-ItalicMT", StandardFont::TimesOblique),
    ("TimesNewRomanPSMT", StandardFont::Times),
    ("TimesNewRomanPSMT,Bold", StandardFont::TimesBold),
    (
        "TimesNewRomanPSMT,BoldItalic",
        StandardFont::TimesBoldOblique,
    ),
    ("TimesNewRomanPSMT,Italic", StandardFont::TimesOblique),
    ("ZapfDingbats", StandardFont::Dingbats),
];

/// `kWeightPow` (`core/fxge/cfx_substfont.cpp`).
#[cfg(test)]
pub(crate) const WEIGHT_POW: [u8; 100] = [
    0, 6, 12, 14, 16, 18, 22, 24, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
    60, 62, 64, 66, 68, 70, 70, 72, 72, 74, 74, 74, 76, 76, 76, 78, 78, 78, 80, 80, 80, 82, 82, 82,
    84, 84, 84, 84, 86, 86, 86, 88, 88, 88, 88, 90, 90, 90, 90, 92, 92, 92, 92, 94, 94, 94, 94, 96,
    96, 96, 96, 96, 98, 98, 98, 98, 100, 100, 100, 100, 100, 102, 102, 102, 102, 102, 104, 104,
    104, 104, 104, 106, 106, 106, 106, 106,
];

/// `kWeightPow11` (`core/fxge/cfx_substfont.cpp`).
#[cfg(test)]
pub(crate) const WEIGHT_POW_11: [u8; 100] = [
    0, 4, 7, 8, 9, 10, 12, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33,
    34, 35, 36, 37, 39, 39, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46,
    46, 46, 46, 43, 47, 47, 48, 48, 48, 48, 45, 50, 50, 50, 46, 51, 51, 51, 52, 52, 52, 52, 53, 53,
    53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 58, 58,
    58, 58, 58,
];

/// `kWeightPowShiftJis` (`core/fxge/cfx_substfont.cpp`).
#[cfg(test)]
pub(crate) const WEIGHT_POW_SHIFT_JIS: [u8; 100] = [
    0, 0, 2, 4, 6, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 42, 44, 48, 52, 56, 60, 64, 66, 70,
    74, 78, 82, 86, 90, 96, 96, 96, 96, 98, 98, 98, 100, 100, 100, 100, 102, 102, 102, 102, 104,
    104, 104, 104, 104, 106, 106, 106, 106, 106, 108, 108, 108, 108, 108, 110, 110, 110, 110, 110,
    112, 112, 112, 112, 112, 112, 114, 114, 114, 114, 114, 114, 114, 116, 116, 116, 116, 116, 116,
    116, 118, 118, 118, 118, 118, 118, 118, 120, 120, 120, 120, 120, 120, 120, 120,
];

/// `kAngleSkew` (`core/fxge/cfx_substfont.cpp`).
#[cfg(test)]
pub(crate) const ANGLE_SKEW: [i8; 30] = [
    0, -2, -3, -5, -7, -9, -11, -12, -14, -16, -18, -19, -21, -23, -25, -27, -29, -31, -32, -34,
    -36, -38, -40, -42, -45, -47, -49, -51, -53, -55,
];