chromium/third_party/rust/chromium_crates_io/vendor/skrifa-0.20.0/generated/generated_autohint_scripts.rs

// THIS FILE IS AUTOGENERATED.
// Any changes to this file will be overwritten.
// Use ../scripts/gen_autohint_scripts.py to regenerate.

#[rustfmt::skip]
pub(super) const SCRIPT_CLASSES: &[ScriptClass] = &[
    ScriptClass {
        name: "Adlam",
        tag: Tag::new(b"ADLM"),
        index: 0,
        hint_top_to_bottom: false,
        std_chars: &['𞤌', '𞤮', ],
        blues: &[
            (&['𞤌', '𞤅', '𞤈', '𞤏', '𞤔', '𞤚', ], LATIN_TOP),
            (&['𞤂', '𞤖', ], 0),
            (&['𞤬', '𞤮', '𞤻', '𞤼', '𞤾', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['𞤤', '𞤨', '𞤩', '𞤭', '𞤴', '𞤸', '𞤺', '𞥀', ], 0),
        ],
    },
    ScriptClass {
        name: "Arabic",
        tag: Tag::new(b"ARAB"),
        index: 1,
        hint_top_to_bottom: false,
        std_chars: &['ل', 'ح', 'ـ', ],
        blues: &[
            (&['ا', 'إ', 'ل', 'ك', 'ط', 'ظ', ], LATIN_TOP),
            (&['ت', 'ث', 'ط', 'ظ', 'ك', ], 0),
            (&['ـ', ], LATIN_NEUTRAL),
        ],
    },
    ScriptClass {
        name: "Armenian",
        tag: Tag::new(b"ARMN"),
        index: 2,
        hint_top_to_bottom: false,
        std_chars: &['ս', 'Ս', ],
        blues: &[
            (&['Ա', 'Մ', 'Ւ', 'Ս', 'Բ', 'Գ', 'Դ', 'Օ', ], LATIN_TOP),
            (&['Ւ', 'Ո', 'Դ', 'Ճ', 'Շ', 'Ս', 'Տ', 'Օ', ], 0),
            (&['ե', 'է', 'ի', 'մ', 'վ', 'ֆ', 'ճ', ], LATIN_TOP),
            (&['ա', 'յ', 'ւ', 'ս', 'գ', 'շ', 'ր', 'օ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['հ', 'ո', 'ճ', 'ա', 'ե', 'ծ', 'ս', 'օ', ], 0),
            (&['բ', 'ը', 'ի', 'լ', 'ղ', 'պ', 'փ', 'ց', ], 0),
        ],
    },
    ScriptClass {
        name: "Avestan",
        tag: Tag::new(b"AVST"),
        index: 3,
        hint_top_to_bottom: false,
        std_chars: &['𐬚', ],
        blues: &[
            (&['𐬀', '𐬁', '𐬐', '𐬛', ], LATIN_TOP),
            (&['𐬀', '𐬁', ], 0),
        ],
    },
    ScriptClass {
        name: "Bamum",
        tag: Tag::new(b"BAMU"),
        index: 4,
        hint_top_to_bottom: false,
        std_chars: &['ꛁ', 'ꛯ', ],
        blues: &[
            (&['ꚧ', 'ꚨ', 'ꛛ', 'ꛉ', 'ꛁ', 'ꛈ', 'ꛫ', 'ꛯ', ], LATIN_TOP),
            (&['ꚭ', 'ꚳ', 'ꚶ', 'ꛬ', 'ꚢ', 'ꚽ', 'ꛯ', '꛲', ], 0),
        ],
    },
    ScriptClass {
        name: "Bengali",
        tag: Tag::new(b"BENG"),
        index: 5,
        hint_top_to_bottom: true,
        std_chars: &['০', '৪', ],
        blues: &[
            (&['ই', 'ট', 'ঠ', 'ি', 'ী', 'ৈ', 'ৗ', ], LATIN_TOP),
            (&['ও', 'এ', 'ড', 'ত', 'ন', 'ব', 'ল', 'ক', ], LATIN_TOP),
            (&['অ', 'ড', 'ত', 'ন', 'ব', 'ভ', 'ল', 'ক', ], LATIN_TOP | LATIN_NEUTRAL | LATIN_X_HEIGHT),
            (&['অ', 'ড', 'ত', 'ন', 'ব', 'ভ', 'ল', 'ক', ], 0),
        ],
    },
    ScriptClass {
        name: "Buhid",
        tag: Tag::new(b"BUHD"),
        index: 6,
        hint_top_to_bottom: false,
        std_chars: &['ᝋ', 'ᝏ', ],
        blues: &[
            (&['ᝐ', 'ᝈ', ], LATIN_TOP),
            (&['ᝅ', 'ᝊ', 'ᝎ', ], LATIN_TOP),
            (&['ᝂ', 'ᝃ', 'ᝉ', 'ᝌ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ᝀ', 'ᝃ', 'ᝆ', 'ᝉ', 'ᝋ', 'ᝏ', 'ᝑ', ], 0),
        ],
    },
    ScriptClass {
        name: "Chakma",
        tag: Tag::new(b"CAKM"),
        index: 7,
        hint_top_to_bottom: false,
        std_chars: &['𑄤', '𑄉', '𑄛', ],
        blues: &[
            (&['𑄃', '𑄅', '𑄉', '𑄙', '𑄗', ], LATIN_TOP),
            (&['𑄅', '𑄛', '𑄝', '𑄗', '𑄓', ], 0),
            (&['𑄖', '𑄘', '𑄙', '𑄤', '𑄥', ], 0),
        ],
    },
    ScriptClass {
        name: "Canadian Syllabics",
        tag: Tag::new(b"CANS"),
        index: 8,
        hint_top_to_bottom: false,
        std_chars: &['ᑌ', 'ᓚ', ],
        blues: &[
            (&['ᗜ', 'ᖴ', 'ᐁ', 'ᒣ', 'ᑫ', 'ᑎ', 'ᔑ', 'ᗰ', ], LATIN_TOP),
            (&['ᗶ', 'ᖵ', 'ᒧ', 'ᐃ', 'ᑌ', 'ᒍ', 'ᔑ', 'ᗢ', ], 0),
            (&['ᓓ', 'ᓕ', 'ᓀ', 'ᓂ', 'ᓄ', 'ᕄ', 'ᕆ', 'ᘣ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ᕃ', 'ᓂ', 'ᓀ', 'ᕂ', 'ᓗ', 'ᓚ', 'ᕆ', 'ᘣ', ], 0),
            (&['ᐪ', 'ᙆ', 'ᣘ', 'ᐢ', 'ᒾ', 'ᣗ', 'ᔆ', ], LATIN_TOP),
            (&['ᙆ', 'ᗮ', 'ᒻ', 'ᐞ', 'ᔆ', 'ᒡ', 'ᒢ', 'ᓑ', ], 0),
        ],
    },
    ScriptClass {
        name: "Carian",
        tag: Tag::new(b"CARI"),
        index: 9,
        hint_top_to_bottom: false,
        std_chars: &['𐊫', '𐋉', ],
        blues: &[
            (&['𐊧', '𐊫', '𐊬', '𐊭', '𐊱', '𐊺', '𐊼', '𐊿', ], LATIN_TOP),
            (&['𐊣', '𐊧', '𐊷', '𐋀', '𐊫', '𐊸', '𐋉', ], 0),
        ],
    },
    ScriptClass {
        name: "Cherokee",
        tag: Tag::new(b"CHER"),
        index: 10,
        hint_top_to_bottom: false,
        std_chars: &['Ꭴ', 'Ꮕ', 'ꮕ', ],
        blues: &[
            (&['Ꮖ', 'Ꮋ', 'Ꭼ', 'Ꮓ', 'Ꭴ', 'Ꮳ', 'Ꭶ', 'Ꮥ', ], LATIN_TOP),
            (&['Ꮖ', 'Ꮋ', 'Ꭼ', 'Ꮓ', 'Ꭴ', 'Ꮳ', 'Ꭶ', 'Ꮥ', ], 0),
            (&['ꮒ', 'ꮤ', 'ꮶ', 'ꭴ', 'ꭾ', 'ꮗ', 'ꮝ', 'ꮿ', ], LATIN_TOP),
            (&['ꮖ', 'ꭼ', 'ꮓ', 'ꮠ', 'ꮳ', 'ꭶ', 'ꮥ', 'ꮻ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ꮖ', 'ꭼ', 'ꮓ', 'ꮠ', 'ꮳ', 'ꭶ', 'ꮥ', 'ꮻ', ], 0),
            (&['ᏸ', 'ꮐ', 'ꭹ', 'ꭻ', ], 0),
        ],
    },
    ScriptClass {
        name: "Coptic",
        tag: Tag::new(b"COPT"),
        index: 11,
        hint_top_to_bottom: false,
        std_chars: &['Ⲟ', 'ⲟ', ],
        blues: &[
            (&['Ⲍ', 'Ⲏ', 'Ⲡ', 'Ⳟ', 'Ⲟ', 'Ⲑ', 'Ⲥ', 'Ⳋ', ], LATIN_TOP),
            (&['Ⳑ', 'Ⳙ', 'Ⳟ', 'Ⲏ', 'Ⲟ', 'Ⲑ', 'Ⳝ', 'Ⲱ', ], 0),
            (&['ⲍ', 'ⲏ', 'ⲡ', 'ⳟ', 'ⲟ', 'ⲑ', 'ⲥ', 'ⳋ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ⳑ', 'ⳙ', 'ⳟ', 'ⲏ', 'ⲟ', 'ⲑ', 'ⳝ', 'Ⳓ', ], 0),
        ],
    },
    ScriptClass {
        name: "Cypriot",
        tag: Tag::new(b"CPRT"),
        index: 12,
        hint_top_to_bottom: false,
        std_chars: &['𐠅', '𐠣', ],
        blues: &[
            (&['𐠍', '𐠙', '𐠳', '𐠱', '𐠅', '𐠓', '𐠣', '𐠦', ], LATIN_TOP),
            (&['𐠃', '𐠊', '𐠛', '𐠣', '𐠳', '𐠵', '𐠐', ], 0),
            (&['𐠈', '𐠏', '𐠖', ], LATIN_TOP),
            (&['𐠈', '𐠏', '𐠖', ], 0),
        ],
    },
    ScriptClass {
        name: "Cyrillic",
        tag: Tag::new(b"CYRL"),
        index: 13,
        hint_top_to_bottom: false,
        std_chars: &['о', 'О', ],
        blues: &[
            (&['Б', 'В', 'Е', 'П', 'З', 'О', 'С', 'Э', ], LATIN_TOP),
            (&['Б', 'В', 'Е', 'Ш', 'З', 'О', 'С', 'Э', ], 0),
            (&['х', 'п', 'н', 'ш', 'е', 'з', 'о', 'с', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['х', 'п', 'н', 'ш', 'е', 'з', 'о', 'с', ], 0),
            (&['р', 'у', 'ф', ], 0),
        ],
    },
    ScriptClass {
        name: "Devanagari",
        tag: Tag::new(b"DEVA"),
        index: 14,
        hint_top_to_bottom: true,
        std_chars: &['ठ', 'व', 'ट', ],
        blues: &[
            (&['ई', 'ऐ', 'ओ', 'औ', 'ि', 'ी', 'ो', 'ौ', ], LATIN_TOP),
            (&['क', 'म', 'अ', 'आ', 'थ', 'ध', 'भ', 'श', ], LATIN_TOP),
            (&['क', 'न', 'म', 'उ', 'छ', 'ट', 'ठ', 'ड', ], LATIN_TOP | LATIN_NEUTRAL | LATIN_X_HEIGHT),
            (&['क', 'न', 'म', 'उ', 'छ', 'ट', 'ठ', 'ड', ], 0),
            (&['ु', 'ृ', ], 0),
        ],
    },
    ScriptClass {
        name: "Deseret",
        tag: Tag::new(b"DSRT"),
        index: 15,
        hint_top_to_bottom: false,
        std_chars: &['𐐄', '𐐬', ],
        blues: &[
            (&['𐐂', '𐐄', '𐐋', '𐐗', '𐐑', ], LATIN_TOP),
            (&['𐐀', '𐐂', '𐐄', '𐐗', '𐐛', ], 0),
            (&['𐐪', '𐐬', '𐐳', '𐐿', '𐐹', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['𐐨', '𐐪', '𐐬', '𐐿', '𐑃', ], 0),
        ],
    },
    ScriptClass {
        name: "Ethiopic",
        tag: Tag::new(b"ETHI"),
        index: 16,
        hint_top_to_bottom: false,
        std_chars: &['ዐ', ],
        blues: &[
            (&['ሀ', 'ሃ', 'ዘ', 'ፐ', 'ማ', 'በ', 'ዋ', 'ዐ', ], LATIN_TOP),
            (&['ለ', 'ሐ', 'በ', 'ዘ', 'ሀ', 'ሪ', 'ዐ', 'ጨ', ], 0),
        ],
    },
    ScriptClass {
        name: "Georgian (Mkhedruli)",
        tag: Tag::new(b"GEOR"),
        index: 17,
        hint_top_to_bottom: false,
        std_chars: &['ი', 'ე', 'ა', 'Ჿ', ],
        blues: &[
            (&['გ', 'დ', 'ე', 'ვ', 'თ', 'ი', 'ო', 'ღ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ა', 'ზ', 'მ', 'ს', 'შ', 'ძ', 'ხ', 'პ', ], 0),
            (&['ს', 'ხ', 'ქ', 'ზ', 'მ', 'შ', 'ჩ', 'წ', ], LATIN_TOP),
            (&['ე', 'ვ', 'ჟ', 'ტ', 'უ', 'ფ', 'ქ', 'ყ', ], 0),
            (&['Ნ', 'Ჟ', 'Ჳ', 'Ჸ', 'Გ', 'Ე', 'Ო', 'Ჴ', ], LATIN_TOP),
            (&['Ი', 'Ჲ', 'Ო', 'Ჩ', 'Მ', 'Შ', 'Ჯ', 'Ჽ', ], 0),
        ],
    },
    ScriptClass {
        name: "Georgian (Khutsuri)",
        tag: Tag::new(b"GEOK"),
        index: 18,
        hint_top_to_bottom: false,
        std_chars: &['Ⴖ', 'Ⴑ', 'ⴙ', ],
        blues: &[
            (&['Ⴑ', 'Ⴇ', 'Ⴙ', 'Ⴜ', 'Ⴄ', 'Ⴅ', 'Ⴓ', 'Ⴚ', ], LATIN_TOP),
            (&['Ⴄ', 'Ⴅ', 'Ⴇ', 'Ⴈ', 'Ⴆ', 'Ⴑ', 'Ⴊ', 'Ⴋ', ], 0),
            (&['ⴁ', 'ⴗ', 'ⴂ', 'ⴄ', 'ⴅ', 'ⴇ', 'ⴔ', 'ⴖ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ⴈ', 'ⴌ', 'ⴖ', 'ⴎ', 'ⴃ', 'ⴆ', 'ⴋ', 'ⴢ', ], 0),
            (&['ⴐ', 'ⴑ', 'ⴓ', 'ⴕ', 'ⴙ', 'ⴛ', 'ⴡ', 'ⴣ', ], LATIN_TOP),
            (&['ⴄ', 'ⴅ', 'ⴔ', 'ⴕ', 'ⴁ', 'ⴂ', 'ⴘ', 'ⴝ', ], 0),
        ],
    },
    ScriptClass {
        name: "Glagolitic",
        tag: Tag::new(b"GLAG"),
        index: 19,
        hint_top_to_bottom: false,
        std_chars: &['Ⱅ', 'ⱅ', ],
        blues: &[
            (&['Ⰵ', 'Ⱄ', 'Ⱚ', 'Ⰴ', 'Ⰲ', 'Ⰺ', 'Ⱛ', 'Ⰻ', ], LATIN_TOP),
            (&['Ⰵ', 'Ⰴ', 'Ⰲ', 'Ⱚ', 'Ⱎ', 'Ⱑ', 'Ⰺ', 'Ⱄ', ], 0),
            (&['ⰵ', 'ⱄ', 'ⱚ', 'ⰴ', 'ⰲ', 'ⰺ', 'ⱛ', 'ⰻ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ⰵ', 'ⰴ', 'ⰲ', 'ⱚ', 'ⱎ', 'ⱑ', 'ⰺ', 'ⱄ', ], 0),
        ],
    },
    ScriptClass {
        name: "Gothic",
        tag: Tag::new(b"GOTH"),
        index: 20,
        hint_top_to_bottom: true,
        std_chars: &['𐌴', '𐌾', '𐍃', ],
        blues: &[
            (&['𐌲', '𐌶', '𐍀', '𐍄', '𐌴', '𐍃', '𐍈', '𐌾', ], LATIN_TOP),
            (&['𐌶', '𐌴', '𐍃', '𐍈', ], 0),
        ],
    },
    ScriptClass {
        name: "Greek",
        tag: Tag::new(b"GREK"),
        index: 21,
        hint_top_to_bottom: false,
        std_chars: &['ο', 'Ο', ],
        blues: &[
            (&['Γ', 'Β', 'Ε', 'Ζ', 'Θ', 'Ο', 'Ω', ], LATIN_TOP),
            (&['Β', 'Δ', 'Ζ', 'Ξ', 'Θ', 'Ο', ], 0),
            (&['β', 'θ', 'δ', 'ζ', 'λ', 'ξ', ], LATIN_TOP),
            (&['α', 'ε', 'ι', 'ο', 'π', 'σ', 'τ', 'ω', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['α', 'ε', 'ι', 'ο', 'π', 'σ', 'τ', 'ω', ], 0),
            (&['β', 'γ', 'η', 'μ', 'ρ', 'φ', 'χ', 'ψ', ], 0),
        ],
    },
    ScriptClass {
        name: "Gujarati",
        tag: Tag::new(b"GUJR"),
        index: 22,
        hint_top_to_bottom: false,
        std_chars: &['ટ', '૦', ],
        blues: &[
            (&['ત', 'ન', 'ઋ', 'ઌ', 'છ', 'ટ', 'ર', '૦', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ખ', 'ગ', 'ઘ', 'ઞ', 'ઇ', 'ઈ', 'ઠ', 'જ', ], 0),
            (&['ઈ', 'ઊ', 'િ', 'ી', 'લ', 'શ', 'જ', 'સ', ], LATIN_TOP),
            (&['ુ', 'ૃ', 'ૄ', 'ખ', 'છ', 'છ', ], 0),
            (&['૦', '૧', '૨', '૩', '૭', ], LATIN_TOP),
        ],
    },
    ScriptClass {
        name: "Gurmukhi",
        tag: Tag::new(b"GURU"),
        index: 23,
        hint_top_to_bottom: true,
        std_chars: &['ਠ', 'ਰ', '੦', ],
        blues: &[
            (&['ਇ', 'ਈ', 'ਉ', 'ਏ', 'ਓ', 'ੳ', 'ਿ', 'ੀ', ], LATIN_TOP),
            (&['ਕ', 'ਗ', 'ਙ', 'ਚ', 'ਜ', 'ਤ', 'ਧ', 'ਸ', ], LATIN_TOP),
            (&['ਕ', 'ਗ', 'ਙ', 'ਚ', 'ਜ', 'ਤ', 'ਧ', 'ਸ', ], LATIN_TOP | LATIN_NEUTRAL | LATIN_X_HEIGHT),
            (&['ਅ', 'ਏ', 'ਓ', 'ਗ', 'ਜ', 'ਠ', 'ਰ', 'ਸ', ], 0),
            (&['੦', '੧', '੨', '੩', '੭', ], LATIN_TOP),
        ],
    },
    ScriptClass {
        name: "Hebrew",
        tag: Tag::new(b"HEBR"),
        index: 24,
        hint_top_to_bottom: false,
        std_chars: &['ם', ],
        blues: &[
            (&['ב', 'ד', 'ה', 'ח', 'ך', 'כ', 'ם', 'ס', ], LATIN_TOP | LATIN_LONG),
            (&['ב', 'ט', 'כ', 'ם', 'ס', 'צ', ], 0),
            (&['ק', 'ך', 'ן', 'ף', 'ץ', ], 0),
        ],
    },
    ScriptClass {
        name: "Kayah Li",
        tag: Tag::new(b"KALI"),
        index: 25,
        hint_top_to_bottom: false,
        std_chars: &['ꤍ', '꤀', ],
        blues: &[
            (&['꤅', 'ꤏ', '꤁', 'ꤋ', '꤀', 'ꤍ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['꤈', 'ꤘ', '꤀', 'ꤍ', 'ꤢ', ], 0),
            (&['ꤖ', 'ꤡ', ], LATIN_TOP),
            (&['ꤑ', 'ꤜ', 'ꤞ', ], 0),
            (&['ꤑ', 'ꤜ', 'ꤔ', ], 0),
        ],
    },
    ScriptClass {
        name: "Khmer",
        tag: Tag::new(b"KHMR"),
        index: 26,
        hint_top_to_bottom: false,
        std_chars: &['០', ],
        blues: &[
            (&['ខ', 'ទ', 'ន', 'ឧ', 'ឩ', 'ា', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ក', 'ក', 'ក', 'ក', ], LATIN_SUB_TOP),
            (&['ខ', 'ឃ', 'ច', 'ឋ', 'ប', 'ម', 'យ', 'ឲ', ], 0),
            (&['ត', 'រ', 'ឲ', 'អ', ], 0),
            (&['ន', 'ង', 'ក', 'ច', 'ន', 'ល', ], 0),
        ],
    },
    ScriptClass {
        name: "Khmer Symbols",
        tag: Tag::new(b"KHMS"),
        index: 27,
        hint_top_to_bottom: false,
        std_chars: &['᧡', '᧪', ],
        blues: &[
            (&['᧠', '᧡', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['᧶', '᧹', ], 0),
        ],
    },
    ScriptClass {
        name: "Kannada",
        tag: Tag::new(b"KNDA"),
        index: 28,
        hint_top_to_bottom: false,
        std_chars: &['೦', 'ಬ', ],
        blues: &[
            (&['ಇ', 'ಊ', 'ಐ', 'ಣ', 'ಸ', 'ನ', 'ದ', 'ರ', ], LATIN_TOP),
            (&['ಅ', 'ಉ', 'ಎ', 'ಲ', '೦', '೨', '೬', '೭', ], 0),
        ],
    },
    ScriptClass {
        name: "Lao",
        tag: Tag::new(b"LAOO"),
        index: 29,
        hint_top_to_bottom: false,
        std_chars: &['໐', ],
        blues: &[
            (&['າ', 'ດ', 'ອ', 'ມ', 'ລ', 'ວ', 'ຣ', 'ງ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['າ', 'ອ', 'ບ', 'ຍ', 'ຣ', 'ຮ', 'ວ', 'ຢ', ], 0),
            (&['ປ', 'ຢ', 'ຟ', 'ຝ', ], LATIN_TOP),
            (&['ໂ', 'ໄ', 'ໃ', ], LATIN_TOP),
            (&['ງ', 'ຊ', 'ຖ', 'ຽ', 'ໆ', 'ຯ', ], 0),
        ],
    },
    ScriptClass {
        name: "Latin",
        tag: Tag::new(b"LATN"),
        index: 30,
        hint_top_to_bottom: false,
        std_chars: &['o', 'O', '0', ],
        blues: &[
            (&['T', 'H', 'E', 'Z', 'O', 'C', 'Q', 'S', ], LATIN_TOP),
            (&['H', 'E', 'Z', 'L', 'O', 'C', 'U', 'S', ], 0),
            (&['f', 'i', 'j', 'k', 'd', 'b', 'h', ], LATIN_TOP),
            (&['u', 'v', 'x', 'z', 'o', 'e', 's', 'c', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['n', 'r', 'x', 'z', 'o', 'e', 's', 'c', ], 0),
            (&['p', 'q', 'g', 'j', 'y', ], 0),
        ],
    },
    ScriptClass {
        name: "Latin Subscript Fallback",
        tag: Tag::new(b"LATB"),
        index: 31,
        hint_top_to_bottom: false,
        std_chars: &['ₒ', '₀', ],
        blues: &[
            (&['₀', '₃', '₅', '₇', '₈', ], LATIN_TOP),
            (&['₀', '₁', '₂', '₃', '₈', ], 0),
            (&['ᵢ', 'ⱼ', 'ₕ', 'ₖ', 'ₗ', ], LATIN_TOP),
            (&['ₐ', 'ₑ', 'ₒ', 'ₓ', 'ₙ', 'ₛ', 'ᵥ', 'ᵤ', 'ᵣ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ₐ', 'ₑ', 'ₒ', 'ₓ', 'ₙ', 'ₛ', 'ᵥ', 'ᵤ', 'ᵣ', ], 0),
            (&['ᵦ', 'ᵧ', 'ᵨ', 'ᵩ', 'ₚ', ], 0),
        ],
    },
    ScriptClass {
        name: "Latin Superscript Fallback",
        tag: Tag::new(b"LATP"),
        index: 32,
        hint_top_to_bottom: false,
        std_chars: &['ᵒ', 'ᴼ', '⁰', ],
        blues: &[
            (&['⁰', '³', '⁵', '⁷', 'ᵀ', 'ᴴ', 'ᴱ', 'ᴼ', ], LATIN_TOP),
            (&['⁰', '¹', '²', '³', 'ᴱ', 'ᴸ', 'ᴼ', 'ᵁ', ], 0),
            (&['ᵇ', 'ᵈ', 'ᵏ', 'ʰ', 'ʲ', 'ᶠ', 'ⁱ', ], LATIN_TOP),
            (&['ᵉ', 'ᵒ', 'ʳ', 'ˢ', 'ˣ', 'ᶜ', 'ᶻ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ᵉ', 'ᵒ', 'ʳ', 'ˢ', 'ˣ', 'ᶜ', 'ᶻ', ], 0),
            (&['ᵖ', 'ʸ', 'ᵍ', ], 0),
        ],
    },
    ScriptClass {
        name: "Lisu",
        tag: Tag::new(b"LISU"),
        index: 33,
        hint_top_to_bottom: false,
        std_chars: &['ꓳ', ],
        blues: &[
            (&['ꓡ', 'ꓧ', 'ꓱ', 'ꓶ', 'ꓩ', 'ꓚ', 'ꓵ', 'ꓳ', ], LATIN_TOP),
            (&['ꓕ', 'ꓜ', 'ꓞ', 'ꓡ', 'ꓛ', 'ꓢ', 'ꓳ', 'ꓴ', ], 0),
        ],
    },
    ScriptClass {
        name: "Malayalam",
        tag: Tag::new(b"MLYM"),
        index: 34,
        hint_top_to_bottom: false,
        std_chars: &['ഠ', 'റ', ],
        blues: &[
            (&['ഒ', 'ട', 'ഠ', 'റ', 'ച', 'പ', 'ച', 'പ', ], LATIN_TOP),
            (&['ട', 'ഠ', 'ധ', 'ശ', 'ഘ', 'ച', 'ഥ', 'ല', ], 0),
        ],
    },
    ScriptClass {
        name: "Medefaidrin",
        tag: Tag::new(b"MEDF"),
        index: 35,
        hint_top_to_bottom: false,
        std_chars: &['𖹡', '𖹛', '𖹯', ],
        blues: &[
            (&['𖹀', '𖹁', '𖹂', '𖹃', '𖹏', '𖹚', '𖹟', ], LATIN_TOP),
            (&['𖹀', '𖹁', '𖹂', '𖹃', '𖹏', '𖹚', '𖹒', '𖹓', ], 0),
            (&['𖹤', '𖹬', '𖹧', '𖹴', '𖹶', '𖹾', ], LATIN_TOP),
            (&['𖹠', '𖹡', '𖹢', '𖹹', '𖹳', '𖹮', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['𖹠', '𖹡', '𖹢', '𖹳', '𖹭', '𖹽', ], 0),
            (&['𖹥', '𖹨', '𖹩', ], 0),
            (&['𖺀', '𖺅', '𖺈', '𖺄', '𖺍', ], LATIN_TOP),
        ],
    },
    ScriptClass {
        name: "Mongolian",
        tag: Tag::new(b"MONG"),
        index: 36,
        hint_top_to_bottom: true,
        std_chars: &['ᡂ', 'ᠪ', ],
        blues: &[
            (&['ᠳ', 'ᠴ', 'ᠶ', 'ᠽ', 'ᡂ', 'ᡊ', '‍', '‍', ], LATIN_TOP),
            (&['ᡃ', ], 0),
        ],
    },
    ScriptClass {
        name: "Myanmar",
        tag: Tag::new(b"MYMR"),
        index: 37,
        hint_top_to_bottom: false,
        std_chars: &['ဝ', 'င', 'ဂ', ],
        blues: &[
            (&['ခ', 'ဂ', 'င', 'ဒ', 'ဝ', 'ၥ', '၊', '။', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['င', 'ဎ', 'ဒ', 'ပ', 'ဗ', 'ဝ', '၊', '။', ], 0),
            (&['ဩ', 'ြ', '၍', '၏', '၆', 'ါ', 'ိ', ], LATIN_TOP),
            (&['ဉ', 'ည', 'ဥ', 'ဩ', 'ဨ', '၂', '၅', '၉', ], 0),
        ],
    },
    ScriptClass {
        name: "N'Ko",
        tag: Tag::new(b"NKOO"),
        index: 38,
        hint_top_to_bottom: false,
        std_chars: &['ߋ', '߀', ],
        blues: &[
            (&['ߐ', '߉', 'ߒ', 'ߟ', 'ߖ', 'ߜ', 'ߠ', 'ߥ', ], LATIN_TOP),
            (&['߀', 'ߘ', 'ߡ', 'ߠ', 'ߥ', ], 0),
            (&['ߏ', 'ߛ', 'ߋ', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['ߎ', 'ߏ', 'ߛ', 'ߋ', ], 0),
        ],
    },
    ScriptClass {
        name: "no script",
        tag: Tag::new(b"NONE"),
        index: 39,
        hint_top_to_bottom: false,
        std_chars: &[],
        blues: &[],
    },
    ScriptClass {
        name: "Ol Chiki",
        tag: Tag::new(b"OLCK"),
        index: 40,
        hint_top_to_bottom: false,
        std_chars: &['ᱛ', ],
        blues: &[
            (&['ᱛ', 'ᱜ', 'ᱝ', 'ᱡ', 'ᱢ', 'ᱥ', ], LATIN_TOP),
            (&['ᱛ', 'ᱜ', 'ᱝ', 'ᱡ', 'ᱢ', 'ᱥ', ], 0),
        ],
    },
    ScriptClass {
        name: "Old Turkic",
        tag: Tag::new(b"ORKH"),
        index: 41,
        hint_top_to_bottom: false,
        std_chars: &['𐰗', ],
        blues: &[
            (&['𐰗', '𐰘', '𐰧', ], LATIN_TOP),
            (&['𐰉', '𐰗', '𐰦', '𐰧', ], 0),
        ],
    },
    ScriptClass {
        name: "Osage",
        tag: Tag::new(b"OSGE"),
        index: 42,
        hint_top_to_bottom: false,
        std_chars: &['𐓂', '𐓪', ],
        blues: &[
            (&['𐒾', '𐓍', '𐓒', '𐓓', '𐒻', '𐓂', '𐒵', '𐓆', ], LATIN_TOP),
            (&['𐒰', '𐓍', '𐓂', '𐒿', '𐓎', '𐒹', ], 0),
            (&['𐒼', '𐒽', '𐒾', ], 0),
            (&['𐓵', '𐓶', '𐓺', '𐓻', '𐓝', '𐓣', '𐓪', '𐓮', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['𐓘', '𐓚', '𐓣', '𐓵', '𐓡', '𐓧', '𐓪', '𐓶', ], 0),
            (&['𐓤', '𐓦', '𐓸', '𐓹', '𐓛', ], LATIN_TOP),
            (&['𐓤', '𐓥', '𐓦', ], 0),
        ],
    },
    ScriptClass {
        name: "Osmanya",
        tag: Tag::new(b"OSMA"),
        index: 43,
        hint_top_to_bottom: false,
        std_chars: &['𐒆', '𐒠', ],
        blues: &[
            (&['𐒆', '𐒉', '𐒐', '𐒒', '𐒘', '𐒛', '𐒠', '𐒣', ], LATIN_TOP),
            (&['𐒀', '𐒂', '𐒆', '𐒈', '𐒊', '𐒒', '𐒠', '𐒩', ], 0),
        ],
    },
    ScriptClass {
        name: "Hanifi Rohingya",
        tag: Tag::new(b"ROHG"),
        index: 44,
        hint_top_to_bottom: false,
        std_chars: &['𐴰', ],
        blues: &[
            (&['𐴃', '𐴀', '𐴆', '𐴖', '𐴕', ], LATIN_TOP),
            (&['𐴔', '𐴖', '𐴕', '𐴑', '𐴐', ], 0),
            (&['ـ', ], LATIN_NEUTRAL),
        ],
    },
    ScriptClass {
        name: "Saurashtra",
        tag: Tag::new(b"SAUR"),
        index: 45,
        hint_top_to_bottom: false,
        std_chars: &['ꢝ', '꣐', ],
        blues: &[
            (&['ꢜ', 'ꢞ', 'ꢳ', 'ꢂ', 'ꢖ', 'ꢒ', 'ꢝ', 'ꢛ', ], LATIN_TOP),
            (&['ꢂ', 'ꢨ', 'ꢺ', 'ꢤ', 'ꢎ', ], 0),
        ],
    },
    ScriptClass {
        name: "Shavian",
        tag: Tag::new(b"SHAW"),
        index: 46,
        hint_top_to_bottom: false,
        std_chars: &['𐑴', ],
        blues: &[
            (&['𐑕', '𐑙', ], LATIN_TOP),
            (&['𐑔', '𐑖', '𐑗', '𐑹', '𐑻', ], 0),
            (&['𐑟', '𐑣', ], 0),
            (&['𐑱', '𐑲', '𐑳', '𐑴', '𐑸', '𐑺', '𐑼', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['𐑴', '𐑻', '𐑹', ], 0),
        ],
    },
    ScriptClass {
        name: "Sinhala",
        tag: Tag::new(b"SINH"),
        index: 47,
        hint_top_to_bottom: false,
        std_chars: &['ට', ],
        blues: &[
            (&['ඉ', 'ක', 'ඝ', 'ඳ', 'ප', 'ය', 'ල', 'ෆ', ], LATIN_TOP),
            (&['එ', 'ඔ', 'ඝ', 'ජ', 'ට', 'ථ', 'ධ', 'ර', ], 0),
            (&['ද', 'ඳ', 'උ', 'ල', 'ත', 'ත', 'බ', 'ද', ], 0),
        ],
    },
    ScriptClass {
        name: "Sundanese",
        tag: Tag::new(b"SUND"),
        index: 48,
        hint_top_to_bottom: false,
        std_chars: &['᮰', ],
        blues: &[
            (&['ᮋ', 'ᮞ', 'ᮮ', 'ᮽ', '᮰', 'ᮈ', ], LATIN_TOP),
            (&['ᮄ', 'ᮔ', 'ᮕ', 'ᮗ', '᮰', 'ᮆ', 'ᮈ', 'ᮉ', ], 0),
            (&['ᮼ', '᳄', ], 0),
        ],
    },
    ScriptClass {
        name: "Tamil",
        tag: Tag::new(b"TAML"),
        index: 49,
        hint_top_to_bottom: false,
        std_chars: &['௦', ],
        blues: &[
            (&['உ', 'ஒ', 'ஓ', 'ற', 'ஈ', 'க', 'ங', 'ச', ], LATIN_TOP),
            (&['க', 'ச', 'ல', 'ஶ', 'உ', 'ங', 'ட', 'ப', ], 0),
        ],
    },
    ScriptClass {
        name: "Tai Viet",
        tag: Tag::new(b"TAVT"),
        index: 50,
        hint_top_to_bottom: false,
        std_chars: &['ꪒ', 'ꪫ', ],
        blues: &[
            (&['ꪆ', 'ꪔ', 'ꪒ', 'ꪖ', 'ꪫ', ], LATIN_TOP),
            (&['ꪉ', 'ꪫ', 'ꪮ', ], 0),
        ],
    },
    ScriptClass {
        name: "Telugu",
        tag: Tag::new(b"TELU"),
        index: 51,
        hint_top_to_bottom: false,
        std_chars: &['౦', '౧', ],
        blues: &[
            (&['ఇ', 'ఌ', 'ఙ', 'ఞ', 'ణ', 'ఱ', '౯', ], LATIN_TOP),
            (&['అ', 'క', 'చ', 'ర', 'ఽ', '౨', '౬', ], 0),
        ],
    },
    ScriptClass {
        name: "Tifinagh",
        tag: Tag::new(b"TFNG"),
        index: 52,
        hint_top_to_bottom: false,
        std_chars: &['ⵔ', ],
        blues: &[
            (&['ⵔ', 'ⵙ', 'ⵛ', 'ⵞ', 'ⴵ', 'ⴼ', 'ⴹ', 'ⵎ', ], LATIN_TOP),
            (&['ⵔ', 'ⵙ', 'ⵛ', 'ⵞ', 'ⴵ', 'ⴼ', 'ⴹ', 'ⵎ', ], 0),
        ],
    },
    ScriptClass {
        name: "Thai",
        tag: Tag::new(b"THAI"),
        index: 53,
        hint_top_to_bottom: false,
        std_chars: &['า', 'ๅ', '๐', ],
        blues: &[
            (&['บ', 'เ', 'แ', 'อ', 'ก', 'า', ], LATIN_TOP | LATIN_X_HEIGHT),
            (&['บ', 'ป', 'ษ', 'ฯ', 'อ', 'ย', 'ฮ', ], 0),
            (&['ป', 'ฝ', 'ฟ', ], LATIN_TOP),
            (&['โ', 'ใ', 'ไ', ], LATIN_TOP),
            (&['ฎ', 'ฏ', 'ฤ', 'ฦ', ], 0),
            (&['ญ', 'ฐ', ], 0),
            (&['๐', '๑', '๓', ], 0),
        ],
    },
    ScriptClass {
        name: "Vai",
        tag: Tag::new(b"VAII"),
        index: 54,
        hint_top_to_bottom: false,
        std_chars: &['ꘓ', 'ꖜ', 'ꖴ', ],
        blues: &[
            (&['ꗍ', 'ꘖ', 'ꘙ', 'ꘜ', 'ꖜ', 'ꖝ', 'ꔅ', 'ꕢ', ], LATIN_TOP),
            (&['ꗍ', 'ꘖ', 'ꘙ', 'ꗞ', 'ꔅ', 'ꕢ', 'ꖜ', 'ꔆ', ], 0),
        ],
    },
    ScriptClass {
        name: "Limbu",
        tag: Tag::new(b"LIMB"),
        index: 55,
        hint_top_to_bottom: false,
        std_chars: &['o', ],
        blues: &[],
    },
    ScriptClass {
        name: "Oriya",
        tag: Tag::new(b"ORYA"),
        index: 56,
        hint_top_to_bottom: false,
        std_chars: &['o', ],
        blues: &[],
    },
    ScriptClass {
        name: "Syloti Nagri",
        tag: Tag::new(b"SYLO"),
        index: 57,
        hint_top_to_bottom: false,
        std_chars: &['o', ],
        blues: &[],
    },
    ScriptClass {
        name: "Tibetan",
        tag: Tag::new(b"TIBT"),
        index: 58,
        hint_top_to_bottom: false,
        std_chars: &['o', ],
        blues: &[],
    },
    ScriptClass {
        name: "CJKV ideographs",
        tag: Tag::new(b"HANI"),
        index: 59,
        hint_top_to_bottom: false,
        std_chars: &['田', '囗', ],
        blues: &[
            (&['他', '们', '你', '來', '們', '到', '和', '地', '对', '對', '就', '席', '我', '时', '時', '會', '来', '為', '能', '舰', '說', '说', '这', '這', '齊', '|', '军', '同', '已', '愿', '既', '星', '是', '景', '民', '照', '现', '現', '理', '用', '置', '要', '軍', '那', '配', '里', '開', '雷', '露', '面', '顾', ], CJK_TOP),
            (&['个', '为', '人', '他', '以', '们', '你', '來', '個', '們', '到', '和', '大', '对', '對', '就', '我', '时', '時', '有', '来', '為', '要', '說', '说', '|', '主', '些', '因', '它', '想', '意', '理', '生', '當', '看', '着', '置', '者', '自', '著', '裡', '过', '还', '进', '進', '過', '道', '還', '里', '面', ], 0),
            (&['些', '们', '你', '來', '們', '到', '和', '地', '她', '将', '將', '就', '年', '得', '情', '最', '样', '樣', '理', '能', '說', '说', '这', '這', '通', '|', '即', '吗', '吧', '听', '呢', '品', '响', '嗎', '师', '師', '收', '断', '斷', '明', '眼', '間', '间', '际', '陈', '限', '除', '陳', '随', '際', '隨', ], CJK_HORIZ),
            (&['事', '前', '學', '将', '將', '情', '想', '或', '政', '斯', '新', '样', '樣', '民', '沒', '没', '然', '特', '现', '現', '球', '第', '經', '谁', '起', '|', '例', '別', '别', '制', '动', '動', '吗', '嗎', '增', '指', '明', '朝', '期', '构', '物', '确', '种', '調', '调', '費', '费', '那', '都', '間', '间', ], CJK_HORIZ | CJK_RIGHT),
        ],
    },
];

impl ScriptClass {
    pub const ADLM: usize = 0;
    pub const ARAB: usize = 1;
    pub const ARMN: usize = 2;
    pub const AVST: usize = 3;
    pub const BAMU: usize = 4;
    pub const BENG: usize = 5;
    pub const BUHD: usize = 6;
    pub const CAKM: usize = 7;
    pub const CANS: usize = 8;
    pub const CARI: usize = 9;
    pub const CHER: usize = 10;
    pub const COPT: usize = 11;
    pub const CPRT: usize = 12;
    pub const CYRL: usize = 13;
    pub const DEVA: usize = 14;
    pub const DSRT: usize = 15;
    pub const ETHI: usize = 16;
    pub const GEOR: usize = 17;
    pub const GEOK: usize = 18;
    pub const GLAG: usize = 19;
    pub const GOTH: usize = 20;
    pub const GREK: usize = 21;
    pub const GUJR: usize = 22;
    pub const GURU: usize = 23;
    pub const HEBR: usize = 24;
    pub const KALI: usize = 25;
    pub const KHMR: usize = 26;
    pub const KHMS: usize = 27;
    pub const KNDA: usize = 28;
    pub const LAOO: usize = 29;
    pub const LATN: usize = 30;
    pub const LATB: usize = 31;
    pub const LATP: usize = 32;
    pub const LISU: usize = 33;
    pub const MLYM: usize = 34;
    pub const MEDF: usize = 35;
    pub const MONG: usize = 36;
    pub const MYMR: usize = 37;
    pub const NKOO: usize = 38;
    pub const NONE: usize = 39;
    pub const OLCK: usize = 40;
    pub const ORKH: usize = 41;
    pub const OSGE: usize = 42;
    pub const OSMA: usize = 43;
    pub const ROHG: usize = 44;
    pub const SAUR: usize = 45;
    pub const SHAW: usize = 46;
    pub const SINH: usize = 47;
    pub const SUND: usize = 48;
    pub const TAML: usize = 49;
    pub const TAVT: usize = 50;
    pub const TELU: usize = 51;
    pub const TFNG: usize = 52;
    pub const THAI: usize = 53;
    pub const VAII: usize = 54;
    pub const LIMB: usize = 55;
    pub const ORYA: usize = 56;
    pub const SYLO: usize = 57;
    pub const TIBT: usize = 58;
    pub const HANI: usize = 59;
}

#[rustfmt::skip]
pub(super) const SCRIPT_RANGES: &[ScriptRange] = &[
    base_range(32, 93, ScriptClass::LATN),
    non_base_range(94, 96, ScriptClass::LATN),
    base_range(97, 125, ScriptClass::LATN),
    non_base_range(126, 126, ScriptClass::LATN),
    base_range(127, 127, ScriptClass::LATN),
    base_range(160, 167, ScriptClass::LATN),
    non_base_range(168, 169, ScriptClass::LATN),
    base_range(170, 170, ScriptClass::LATP),
    base_range(171, 173, ScriptClass::LATN),
    non_base_range(174, 176, ScriptClass::LATN),
    base_range(177, 177, ScriptClass::LATN),
    base_range(178, 179, ScriptClass::LATP),
    non_base_range(180, 180, ScriptClass::LATN),
    base_range(181, 183, ScriptClass::LATN),
    non_base_range(184, 184, ScriptClass::LATN),
    base_range(185, 186, ScriptClass::LATP),
    base_range(187, 187, ScriptClass::LATN),
    non_base_range(188, 190, ScriptClass::LATN),
    base_range(191, 687, ScriptClass::LATN),
    base_range(688, 696, ScriptClass::LATP),
    non_base_range(697, 735, ScriptClass::LATN),
    base_range(736, 740, ScriptClass::LATP),
    non_base_range(741, 879, ScriptClass::LATN),
    base_range(880, 889, ScriptClass::GREK),
    non_base_range(890, 890, ScriptClass::GREK),
    base_range(891, 899, ScriptClass::GREK),
    non_base_range(900, 901, ScriptClass::GREK),
    base_range(902, 1023, ScriptClass::GREK),
    base_range(1024, 1154, ScriptClass::CYRL),
    non_base_range(1155, 1161, ScriptClass::CYRL),
    base_range(1162, 1327, ScriptClass::CYRL),
    base_range(1328, 1368, ScriptClass::ARMN),
    non_base_range(1369, 1375, ScriptClass::ARMN),
    base_range(1376, 1423, ScriptClass::ARMN),
    base_range(1424, 1424, ScriptClass::HEBR),
    non_base_range(1425, 1471, ScriptClass::HEBR),
    base_range(1472, 1472, ScriptClass::HEBR),
    non_base_range(1473, 1474, ScriptClass::HEBR),
    base_range(1475, 1475, ScriptClass::HEBR),
    non_base_range(1476, 1477, ScriptClass::HEBR),
    base_range(1478, 1478, ScriptClass::HEBR),
    non_base_range(1479, 1479, ScriptClass::HEBR),
    base_range(1480, 1535, ScriptClass::HEBR),
    non_base_range(1536, 1541, ScriptClass::ARAB),
    base_range(1542, 1551, ScriptClass::ARAB),
    non_base_range(1552, 1562, ScriptClass::ARAB),
    base_range(1563, 1610, ScriptClass::ARAB),
    non_base_range(1611, 1631, ScriptClass::ARAB),
    base_range(1632, 1647, ScriptClass::ARAB),
    non_base_range(1648, 1648, ScriptClass::ARAB),
    base_range(1649, 1749, ScriptClass::ARAB),
    non_base_range(1750, 1756, ScriptClass::ARAB),
    base_range(1757, 1758, ScriptClass::ARAB),
    non_base_range(1759, 1764, ScriptClass::ARAB),
    base_range(1765, 1766, ScriptClass::ARAB),
    non_base_range(1767, 1768, ScriptClass::ARAB),
    base_range(1769, 1769, ScriptClass::ARAB),
    non_base_range(1770, 1773, ScriptClass::ARAB),
    base_range(1774, 1791, ScriptClass::ARAB),
    base_range(1872, 2047, ScriptClass::ARAB),
    base_range(2208, 2258, ScriptClass::ARAB),
    non_base_range(2259, 2303, ScriptClass::ARAB),
    non_base_range(2304, 2306, ScriptClass::DEVA),
    base_range(2307, 2361, ScriptClass::DEVA),
    non_base_range(2362, 2362, ScriptClass::DEVA),
    base_range(2363, 2363, ScriptClass::DEVA),
    base_range(2365, 2368, ScriptClass::DEVA),
    non_base_range(2369, 2376, ScriptClass::DEVA),
    base_range(2377, 2380, ScriptClass::DEVA),
    non_base_range(2381, 2381, ScriptClass::DEVA),
    base_range(2382, 2384, ScriptClass::DEVA),
    non_base_range(2387, 2391, ScriptClass::DEVA),
    base_range(2392, 2401, ScriptClass::DEVA),
    non_base_range(2402, 2403, ScriptClass::DEVA),
    base_range(2406, 2431, ScriptClass::DEVA),
    base_range(2432, 2432, ScriptClass::BENG),
    non_base_range(2433, 2433, ScriptClass::BENG),
    base_range(2434, 2491, ScriptClass::BENG),
    non_base_range(2492, 2492, ScriptClass::BENG),
    base_range(2493, 2496, ScriptClass::BENG),
    non_base_range(2497, 2500, ScriptClass::BENG),
    base_range(2501, 2508, ScriptClass::BENG),
    non_base_range(2509, 2509, ScriptClass::BENG),
    base_range(2510, 2529, ScriptClass::BENG),
    non_base_range(2530, 2531, ScriptClass::BENG),
    base_range(2532, 2557, ScriptClass::BENG),
    non_base_range(2558, 2558, ScriptClass::BENG),
    base_range(2559, 2559, ScriptClass::BENG),
    base_range(2560, 2560, ScriptClass::GURU),
    non_base_range(2561, 2562, ScriptClass::GURU),
    base_range(2563, 2619, ScriptClass::GURU),
    non_base_range(2620, 2620, ScriptClass::GURU),
    base_range(2621, 2624, ScriptClass::GURU),
    non_base_range(2625, 2641, ScriptClass::GURU),
    base_range(2642, 2671, ScriptClass::GURU),
    non_base_range(2672, 2673, ScriptClass::GURU),
    base_range(2674, 2676, ScriptClass::GURU),
    non_base_range(2677, 2677, ScriptClass::GURU),
    base_range(2678, 2687, ScriptClass::GURU),
    base_range(2688, 2688, ScriptClass::GUJR),
    non_base_range(2689, 2690, ScriptClass::GUJR),
    base_range(2691, 2747, ScriptClass::GUJR),
    non_base_range(2748, 2748, ScriptClass::GUJR),
    base_range(2749, 2752, ScriptClass::GUJR),
    non_base_range(2753, 2760, ScriptClass::GUJR),
    base_range(2761, 2764, ScriptClass::GUJR),
    non_base_range(2765, 2765, ScriptClass::GUJR),
    base_range(2766, 2785, ScriptClass::GUJR),
    non_base_range(2786, 2787, ScriptClass::GUJR),
    base_range(2788, 2809, ScriptClass::GUJR),
    non_base_range(2810, 2815, ScriptClass::GUJR),
    base_range(2816, 2816, ScriptClass::ORYA),
    non_base_range(2817, 2818, ScriptClass::ORYA),
    base_range(2819, 2875, ScriptClass::ORYA),
    non_base_range(2876, 2876, ScriptClass::ORYA),
    base_range(2877, 2878, ScriptClass::ORYA),
    non_base_range(2879, 2879, ScriptClass::ORYA),
    base_range(2880, 2880, ScriptClass::ORYA),
    non_base_range(2881, 2884, ScriptClass::ORYA),
    base_range(2885, 2892, ScriptClass::ORYA),
    non_base_range(2893, 2902, ScriptClass::ORYA),
    base_range(2903, 2913, ScriptClass::ORYA),
    non_base_range(2914, 2915, ScriptClass::ORYA),
    base_range(2916, 2943, ScriptClass::ORYA),
    base_range(2944, 2945, ScriptClass::TAML),
    non_base_range(2946, 2946, ScriptClass::TAML),
    base_range(2947, 3007, ScriptClass::TAML),
    non_base_range(3008, 3010, ScriptClass::TAML),
    base_range(3011, 3020, ScriptClass::TAML),
    non_base_range(3021, 3021, ScriptClass::TAML),
    base_range(3022, 3071, ScriptClass::TAML),
    non_base_range(3072, 3072, ScriptClass::TELU),
    base_range(3073, 3075, ScriptClass::TELU),
    non_base_range(3076, 3076, ScriptClass::TELU),
    base_range(3077, 3133, ScriptClass::TELU),
    non_base_range(3134, 3136, ScriptClass::TELU),
    base_range(3137, 3141, ScriptClass::TELU),
    non_base_range(3142, 3158, ScriptClass::TELU),
    base_range(3159, 3169, ScriptClass::TELU),
    non_base_range(3170, 3171, ScriptClass::TELU),
    base_range(3172, 3199, ScriptClass::TELU),
    base_range(3200, 3200, ScriptClass::KNDA),
    non_base_range(3201, 3201, ScriptClass::KNDA),
    base_range(3202, 3259, ScriptClass::KNDA),
    non_base_range(3260, 3260, ScriptClass::KNDA),
    base_range(3261, 3262, ScriptClass::KNDA),
    non_base_range(3263, 3263, ScriptClass::KNDA),
    base_range(3264, 3269, ScriptClass::KNDA),
    non_base_range(3270, 3270, ScriptClass::KNDA),
    base_range(3271, 3275, ScriptClass::KNDA),
    non_base_range(3276, 3277, ScriptClass::KNDA),
    base_range(3278, 3297, ScriptClass::KNDA),
    non_base_range(3298, 3299, ScriptClass::KNDA),
    base_range(3300, 3327, ScriptClass::KNDA),
    non_base_range(3328, 3329, ScriptClass::MLYM),
    base_range(3330, 3386, ScriptClass::MLYM),
    non_base_range(3387, 3388, ScriptClass::MLYM),
    base_range(3389, 3404, ScriptClass::MLYM),
    non_base_range(3405, 3406, ScriptClass::MLYM),
    base_range(3407, 3425, ScriptClass::MLYM),
    non_base_range(3426, 3427, ScriptClass::MLYM),
    base_range(3428, 3455, ScriptClass::MLYM),
    base_range(3456, 3529, ScriptClass::SINH),
    non_base_range(3530, 3530, ScriptClass::SINH),
    base_range(3531, 3537, ScriptClass::SINH),
    non_base_range(3538, 3542, ScriptClass::SINH),
    base_range(3543, 3583, ScriptClass::SINH),
    base_range(3584, 3632, ScriptClass::THAI),
    non_base_range(3633, 3633, ScriptClass::THAI),
    base_range(3634, 3635, ScriptClass::THAI),
    non_base_range(3636, 3642, ScriptClass::THAI),
    base_range(3643, 3654, ScriptClass::THAI),
    non_base_range(3655, 3662, ScriptClass::THAI),
    base_range(3663, 3711, ScriptClass::THAI),
    base_range(3712, 3760, ScriptClass::LAOO),
    non_base_range(3761, 3761, ScriptClass::LAOO),
    base_range(3762, 3763, ScriptClass::LAOO),
    non_base_range(3764, 3772, ScriptClass::LAOO),
    base_range(3773, 3783, ScriptClass::LAOO),
    non_base_range(3784, 3789, ScriptClass::LAOO),
    base_range(3790, 3839, ScriptClass::LAOO),
    base_range(3840, 3863, ScriptClass::TIBT),
    non_base_range(3864, 3865, ScriptClass::TIBT),
    base_range(3866, 3892, ScriptClass::TIBT),
    non_base_range(3893, 3893, ScriptClass::TIBT),
    base_range(3894, 3894, ScriptClass::TIBT),
    non_base_range(3895, 3895, ScriptClass::TIBT),
    base_range(3896, 3896, ScriptClass::TIBT),
    non_base_range(3897, 3897, ScriptClass::TIBT),
    base_range(3898, 3901, ScriptClass::TIBT),
    non_base_range(3902, 3903, ScriptClass::TIBT),
    base_range(3904, 3952, ScriptClass::TIBT),
    non_base_range(3953, 3966, ScriptClass::TIBT),
    base_range(3967, 3967, ScriptClass::TIBT),
    non_base_range(3968, 3972, ScriptClass::TIBT),
    base_range(3973, 3973, ScriptClass::TIBT),
    non_base_range(3974, 3975, ScriptClass::TIBT),
    base_range(3976, 3980, ScriptClass::TIBT),
    non_base_range(3981, 4028, ScriptClass::TIBT),
    base_range(4029, 4095, ScriptClass::TIBT),
    base_range(4096, 4140, ScriptClass::MYMR),
    non_base_range(4141, 4144, ScriptClass::MYMR),
    base_range(4145, 4145, ScriptClass::MYMR),
    non_base_range(4146, 4151, ScriptClass::MYMR),
    base_range(4152, 4153, ScriptClass::MYMR),
    non_base_range(4154, 4154, ScriptClass::MYMR),
    base_range(4155, 4156, ScriptClass::MYMR),
    non_base_range(4157, 4158, ScriptClass::MYMR),
    base_range(4159, 4183, ScriptClass::MYMR),
    non_base_range(4184, 4185, ScriptClass::MYMR),
    base_range(4186, 4189, ScriptClass::MYMR),
    non_base_range(4190, 4192, ScriptClass::MYMR),
    base_range(4193, 4208, ScriptClass::MYMR),
    non_base_range(4209, 4212, ScriptClass::MYMR),
    base_range(4213, 4225, ScriptClass::MYMR),
    non_base_range(4226, 4226, ScriptClass::MYMR),
    base_range(4227, 4228, ScriptClass::MYMR),
    non_base_range(4229, 4230, ScriptClass::MYMR),
    base_range(4231, 4236, ScriptClass::MYMR),
    non_base_range(4237, 4237, ScriptClass::MYMR),
    base_range(4238, 4255, ScriptClass::MYMR),
    base_range(4256, 4301, ScriptClass::GEOK),
    base_range(4304, 4351, ScriptClass::GEOR),
    base_range(4352, 4607, ScriptClass::HANI),
    base_range(4608, 4956, ScriptClass::ETHI),
    non_base_range(4957, 4959, ScriptClass::ETHI),
    base_range(4960, 5023, ScriptClass::ETHI),
    base_range(5024, 5119, ScriptClass::CHER),
    base_range(5120, 5759, ScriptClass::CANS),
    base_range(5952, 5969, ScriptClass::BUHD),
    non_base_range(5970, 5971, ScriptClass::BUHD),
    base_range(5972, 5983, ScriptClass::BUHD),
    base_range(6016, 6070, ScriptClass::KHMR),
    non_base_range(6071, 6077, ScriptClass::KHMR),
    base_range(6078, 6085, ScriptClass::KHMR),
    non_base_range(6086, 6086, ScriptClass::KHMR),
    base_range(6087, 6088, ScriptClass::KHMR),
    non_base_range(6089, 6099, ScriptClass::KHMR),
    base_range(6100, 6108, ScriptClass::KHMR),
    non_base_range(6109, 6109, ScriptClass::KHMR),
    base_range(6110, 6143, ScriptClass::KHMR),
    base_range(6144, 6276, ScriptClass::MONG),
    non_base_range(6277, 6278, ScriptClass::MONG),
    base_range(6279, 6312, ScriptClass::MONG),
    non_base_range(6313, 6313, ScriptClass::MONG),
    base_range(6314, 6319, ScriptClass::MONG),
    base_range(6320, 6399, ScriptClass::CANS),
    base_range(6400, 6431, ScriptClass::LIMB),
    non_base_range(6432, 6434, ScriptClass::LIMB),
    base_range(6435, 6438, ScriptClass::LIMB),
    non_base_range(6439, 6452, ScriptClass::LIMB),
    base_range(6453, 6454, ScriptClass::LIMB),
    non_base_range(6455, 6459, ScriptClass::LIMB),
    base_range(6460, 6479, ScriptClass::LIMB),
    base_range(6624, 6655, ScriptClass::KHMS),
    non_base_range(6832, 6846, ScriptClass::LATN),
    non_base_range(7040, 7042, ScriptClass::SUND),
    base_range(7043, 7072, ScriptClass::SUND),
    non_base_range(7073, 7085, ScriptClass::SUND),
    base_range(7086, 7103, ScriptClass::SUND),
    base_range(7248, 7295, ScriptClass::OLCK),
    base_range(7296, 7311, ScriptClass::CYRL),
    base_range(7312, 7359, ScriptClass::GEOR),
    base_range(7360, 7375, ScriptClass::SUND),
    base_range(7424, 7467, ScriptClass::LATN),
    base_range(7468, 7521, ScriptClass::LATP),
    base_range(7522, 7530, ScriptClass::LATB),
    base_range(7531, 7543, ScriptClass::LATN),
    base_range(7544, 7544, ScriptClass::LATP),
    base_range(7545, 7578, ScriptClass::LATN),
    base_range(7579, 7615, ScriptClass::LATP),
    non_base_range(7616, 7679, ScriptClass::LATN),
    base_range(7680, 7935, ScriptClass::LATN),
    base_range(7936, 8124, ScriptClass::GREK),
    non_base_range(8125, 8129, ScriptClass::GREK),
    base_range(8130, 8140, ScriptClass::GREK),
    non_base_range(8141, 8143, ScriptClass::GREK),
    base_range(8144, 8156, ScriptClass::GREK),
    non_base_range(8157, 8159, ScriptClass::GREK),
    base_range(8160, 8172, ScriptClass::GREK),
    non_base_range(8173, 8175, ScriptClass::GREK),
    base_range(8176, 8188, ScriptClass::GREK),
    non_base_range(8189, 8190, ScriptClass::GREK),
    base_range(8191, 8191, ScriptClass::GREK),
    base_range(8192, 8214, ScriptClass::LATN),
    non_base_range(8215, 8215, ScriptClass::LATN),
    base_range(8216, 8253, ScriptClass::LATN),
    non_base_range(8254, 8254, ScriptClass::LATN),
    base_range(8255, 8303, ScriptClass::LATN),
    base_range(8304, 8319, ScriptClass::LATP),
    base_range(8320, 8348, ScriptClass::LATB),
    base_range(8352, 8376, ScriptClass::LATN),
    base_range(8377, 8377, ScriptClass::DEVA),
    base_range(8378, 8399, ScriptClass::LATN),
    base_range(8528, 8591, ScriptClass::LATN),
    base_range(11264, 11359, ScriptClass::GLAG),
    base_range(11360, 11387, ScriptClass::LATN),
    base_range(11388, 11388, ScriptClass::LATB),
    base_range(11389, 11389, ScriptClass::LATP),
    base_range(11390, 11391, ScriptClass::LATN),
    base_range(11392, 11502, ScriptClass::COPT),
    non_base_range(11503, 11505, ScriptClass::COPT),
    base_range(11506, 11519, ScriptClass::COPT),
    base_range(11520, 11565, ScriptClass::GEOK),
    base_range(11568, 11647, ScriptClass::TFNG),
    base_range(11648, 11743, ScriptClass::ETHI),
    non_base_range(11744, 11775, ScriptClass::CYRL),
    base_range(11776, 11903, ScriptClass::LATN),
    base_range(11904, 12255, ScriptClass::HANI),
    base_range(12272, 12329, ScriptClass::HANI),
    non_base_range(12330, 12335, ScriptClass::HANI),
    base_range(12336, 12687, ScriptClass::HANI),
    non_base_range(12688, 12703, ScriptClass::HANI),
    base_range(12704, 12799, ScriptClass::HANI),
    base_range(13056, 40959, ScriptClass::HANI),
    base_range(42192, 42239, ScriptClass::LISU),
    base_range(42240, 42559, ScriptClass::VAII),
    base_range(42560, 42606, ScriptClass::CYRL),
    non_base_range(42607, 42623, ScriptClass::CYRL),
    base_range(42624, 42653, ScriptClass::CYRL),
    non_base_range(42654, 42655, ScriptClass::CYRL),
    base_range(42656, 42735, ScriptClass::BAMU),
    non_base_range(42736, 42737, ScriptClass::BAMU),
    base_range(42738, 42751, ScriptClass::BAMU),
    base_range(42784, 42863, ScriptClass::LATN),
    base_range(42864, 42864, ScriptClass::LATP),
    base_range(42865, 42887, ScriptClass::LATN),
    non_base_range(42888, 42888, ScriptClass::LATN),
    base_range(42889, 42999, ScriptClass::LATN),
    base_range(43000, 43001, ScriptClass::LATP),
    non_base_range(43002, 43002, ScriptClass::LATN),
    base_range(43003, 43007, ScriptClass::LATN),
    base_range(43008, 43009, ScriptClass::SYLO),
    non_base_range(43010, 43010, ScriptClass::SYLO),
    base_range(43011, 43013, ScriptClass::SYLO),
    non_base_range(43014, 43014, ScriptClass::SYLO),
    base_range(43015, 43018, ScriptClass::SYLO),
    non_base_range(43019, 43019, ScriptClass::SYLO),
    base_range(43020, 43044, ScriptClass::SYLO),
    non_base_range(43045, 43046, ScriptClass::SYLO),
    base_range(43047, 43055, ScriptClass::SYLO),
    non_base_range(43136, 43137, ScriptClass::SAUR),
    base_range(43138, 43187, ScriptClass::SAUR),
    non_base_range(43188, 43205, ScriptClass::SAUR),
    base_range(43206, 43231, ScriptClass::SAUR),
    non_base_range(43232, 43249, ScriptClass::DEVA),
    base_range(43250, 43262, ScriptClass::DEVA),
    non_base_range(43263, 43263, ScriptClass::DEVA),
    base_range(43264, 43301, ScriptClass::KALI),
    non_base_range(43302, 43309, ScriptClass::KALI),
    base_range(43310, 43311, ScriptClass::KALI),
    base_range(43360, 43391, ScriptClass::HANI),
    base_range(43488, 43492, ScriptClass::MYMR),
    non_base_range(43493, 43493, ScriptClass::MYMR),
    base_range(43494, 43519, ScriptClass::MYMR),
    base_range(43616, 43643, ScriptClass::MYMR),
    non_base_range(43644, 43644, ScriptClass::MYMR),
    base_range(43645, 43647, ScriptClass::MYMR),
    base_range(43648, 43695, ScriptClass::TAVT),
    non_base_range(43696, 43696, ScriptClass::TAVT),
    base_range(43697, 43697, ScriptClass::TAVT),
    non_base_range(43698, 43700, ScriptClass::TAVT),
    base_range(43701, 43702, ScriptClass::TAVT),
    non_base_range(43703, 43704, ScriptClass::TAVT),
    base_range(43705, 43709, ScriptClass::TAVT),
    non_base_range(43710, 43711, ScriptClass::TAVT),
    base_range(43712, 43712, ScriptClass::TAVT),
    non_base_range(43713, 43713, ScriptClass::TAVT),
    base_range(43714, 43743, ScriptClass::TAVT),
    base_range(43776, 43823, ScriptClass::ETHI),
    base_range(43824, 43867, ScriptClass::LATN),
    base_range(43868, 43871, ScriptClass::LATP),
    base_range(43872, 43887, ScriptClass::LATN),
    base_range(43888, 43967, ScriptClass::CHER),
    base_range(44032, 55295, ScriptClass::HANI),
    base_range(63744, 64255, ScriptClass::HANI),
    base_range(64256, 64262, ScriptClass::LATN),
    base_range(64275, 64279, ScriptClass::ARMN),
    base_range(64285, 64285, ScriptClass::HEBR),
    non_base_range(64286, 64286, ScriptClass::HEBR),
    base_range(64287, 64335, ScriptClass::HEBR),
    base_range(64336, 64433, ScriptClass::ARAB),
    non_base_range(64434, 64449, ScriptClass::ARAB),
    base_range(64450, 65023, ScriptClass::ARAB),
    base_range(65040, 65055, ScriptClass::HANI),
    base_range(65072, 65103, ScriptClass::HANI),
    non_base_range(65136, 65136, ScriptClass::ARAB),
    base_range(65137, 65137, ScriptClass::ARAB),
    non_base_range(65138, 65138, ScriptClass::ARAB),
    base_range(65139, 65139, ScriptClass::ARAB),
    non_base_range(65140, 65140, ScriptClass::ARAB),
    base_range(65141, 65141, ScriptClass::ARAB),
    non_base_range(65142, 65142, ScriptClass::ARAB),
    base_range(65143, 65143, ScriptClass::ARAB),
    non_base_range(65144, 65144, ScriptClass::ARAB),
    base_range(65145, 65145, ScriptClass::ARAB),
    non_base_range(65146, 65146, ScriptClass::ARAB),
    base_range(65147, 65147, ScriptClass::ARAB),
    non_base_range(65148, 65148, ScriptClass::ARAB),
    base_range(65149, 65149, ScriptClass::ARAB),
    non_base_range(65150, 65150, ScriptClass::ARAB),
    base_range(65151, 65279, ScriptClass::ARAB),
    base_range(65280, 65519, ScriptClass::HANI),
    base_range(66208, 66271, ScriptClass::CARI),
    base_range(66352, 66383, ScriptClass::GOTH),
    base_range(66560, 66639, ScriptClass::DSRT),
    base_range(66640, 66687, ScriptClass::SHAW),
    base_range(66688, 66735, ScriptClass::OSMA),
    base_range(66736, 66815, ScriptClass::OSGE),
    base_range(67584, 67647, ScriptClass::CPRT),
    base_range(68352, 68408, ScriptClass::AVST),
    non_base_range(68409, 68415, ScriptClass::AVST),
    base_range(68608, 68687, ScriptClass::ORKH),
    base_range(68864, 68927, ScriptClass::ROHG),
    non_base_range(69888, 69890, ScriptClass::CAKM),
    base_range(69891, 69926, ScriptClass::CAKM),
    non_base_range(69927, 69940, ScriptClass::CAKM),
    base_range(69941, 69957, ScriptClass::CAKM),
    non_base_range(69958, 69958, ScriptClass::CAKM),
    base_range(69959, 69967, ScriptClass::CAKM),
    base_range(71264, 71295, ScriptClass::MONG),
    base_range(93760, 93855, ScriptClass::MEDF),
    base_range(110592, 110895, ScriptClass::HANI),
    base_range(119552, 119647, ScriptClass::HANI),
    base_range(119808, 120831, ScriptClass::LATN),
    non_base_range(122880, 122927, ScriptClass::GLAG),
    non_base_range(125184, 125258, ScriptClass::ADLM),
    base_range(125259, 125279, ScriptClass::ADLM),
    base_range(126464, 126719, ScriptClass::ARAB),
    base_range(131072, 173791, ScriptClass::HANI),
    base_range(173824, 191471, ScriptClass::HANI),
    base_range(194560, 195103, ScriptClass::HANI),
];