/*
 *
 * (C) Copyright IBM Corp. 1998-2006. All Rights Reserved.
 *
 * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
 * YOU REALLY KNOW WHAT YOU'RE DOING.
 *
 * Generated on: 08/21/2006 02:35:14 PM HST
 */

#include "LETypes.h"
#include "ScriptAndLanguageTags.h"
#include "OpenTypeLayoutEngine.h"

U_NAMESPACE_BEGIN

const LETag OpenTypeLayoutEngine::scriptTags[] = {
    zyyyScriptTag, /* 'zyyy' (COMMON) */
    qaaiScriptTag, /* 'qaai' (INHERITED) */
    arabScriptTag, /* 'arab' (ARABIC) */
    armnScriptTag, /* 'armn' (ARMENIAN) */
    bengScriptTag, /* 'beng' (BENGALI) */
    bopoScriptTag, /* 'bopo' (BOPOMOFO) */
    cherScriptTag, /* 'cher' (CHEROKEE) */
    coptScriptTag, /* 'copt' (COPTIC) */
    cyrlScriptTag, /* 'cyrl' (CYRILLIC) */
    dsrtScriptTag, /* 'dsrt' (DESERET) */
    devaScriptTag, /* 'deva' (DEVANAGARI) */
    ethiScriptTag, /* 'ethi' (ETHIOPIC) */
    georScriptTag, /* 'geor' (GEORGIAN) */
    gothScriptTag, /* 'goth' (GOTHIC) */
    grekScriptTag, /* 'grek' (GREEK) */
    gujrScriptTag, /* 'gujr' (GUJARATI) */
    guruScriptTag, /* 'guru' (GURMUKHI) */
    haniScriptTag, /* 'hani' (HAN) */
    hangScriptTag, /* 'hang' (HANGUL) */
    hebrScriptTag, /* 'hebr' (HEBREW) */
    hiraScriptTag, /* 'hira' (HIRAGANA) */
    kndaScriptTag, /* 'knda' (KANNADA) */
    kanaScriptTag, /* 'kana' (KATAKANA) */
    khmrScriptTag, /* 'khmr' (KHMER) */
    laooScriptTag, /* 'lao ' (LAO) */
    latnScriptTag, /* 'latn' (LATIN) */
    mlymScriptTag, /* 'mlym' (MALAYALAM) */
    mongScriptTag, /* 'mong' (MONGOLIAN) */
    mymrScriptTag, /* 'mymr' (MYANMAR) */
    ogamScriptTag, /* 'ogam' (OGHAM) */
    italScriptTag, /* 'ital' (OLD_ITALIC) */
    oryaScriptTag, /* 'orya' (ORIYA) */
    runrScriptTag, /* 'runr' (RUNIC) */
    sinhScriptTag, /* 'sinh' (SINHALA) */
    syrcScriptTag, /* 'syrc' (SYRIAC) */
    tamlScriptTag, /* 'taml' (TAMIL) */
    teluScriptTag, /* 'telu' (TELUGU) */
    thaaScriptTag, /* 'thaa' (THAANA) */
    thaiScriptTag, /* 'thai' (THAI) */
    tibtScriptTag, /* 'tibt' (TIBETAN) */
    cansScriptTag, /* 'cans' (CANADIAN_ABORIGINAL) */
    yiiiScriptTag, /* 'yi  ' (YI) */
    tglgScriptTag, /* 'tglg' (TAGALOG) */
    hanoScriptTag, /* 'hano' (HANUNOO) */
    buhdScriptTag, /* 'buhd' (BUHID) */
    tagbScriptTag, /* 'tagb' (TAGBANWA) */
    braiScriptTag, /* 'brai' (BRAILLE) */
    cprtScriptTag, /* 'cprt' (CYPRIOT) */
    limbScriptTag, /* 'limb' (LIMBU) */
    linbScriptTag, /* 'linb' (LINEAR_B) */
    osmaScriptTag, /* 'osma' (OSMANYA) */
    shawScriptTag, /* 'shaw' (SHAVIAN) */
    taleScriptTag, /* 'tale' (TAI_LE) */
    ugarScriptTag, /* 'ugar' (UGARITIC) */
    hrktScriptTag, /* 'hrkt' (KATAKANA_OR_HIRAGANA) */
    bugiScriptTag, /* 'bugi' (BUGINESE) */
    glagScriptTag, /* 'glag' (GLAGOLITIC) */
    kharScriptTag, /* 'khar' (KHAROSHTHI) */
    syloScriptTag, /* 'sylo' (SYLOTI_NAGRI) */
    taluScriptTag, /* 'talu' (NEW_TAI_LUE) */
    tfngScriptTag, /* 'tfng' (TIFINAGH) */
    xpeoScriptTag, /* 'xpeo' (OLD_PERSIAN) */
    baliScriptTag, /* 'bali' (BALINESE) */
    batkScriptTag, /* 'batk' (BATK) */
    blisScriptTag, /* 'blis' (BLIS) */
    brahScriptTag, /* 'brah' (BRAH) */
    chamScriptTag, /* 'cham' (CHAM) */
    cirtScriptTag, /* 'cirt' (CIRT) */
    cyrsScriptTag, /* 'cyrs' (CYRS) */
    egydScriptTag, /* 'egyd' (EGYD) */
    egyhScriptTag, /* 'egyh' (EGYH) */
    egypScriptTag, /* 'egyp' (EGYP) */
    geokScriptTag, /* 'geok' (GEOK) */
    hansScriptTag, /* 'hans' (HANS) */
    hantScriptTag, /* 'hant' (HANT) */
    hmngScriptTag, /* 'hmng' (HMNG) */
    hungScriptTag, /* 'hung' (HUNG) */
    indsScriptTag, /* 'inds' (INDS) */
    javaScriptTag, /* 'java' (JAVA) */
    kaliScriptTag, /* 'kali' (KALI) */
    latfScriptTag, /* 'latf' (LATF) */
    latgScriptTag, /* 'latg' (LATG) */
    lepcScriptTag, /* 'lepc' (LEPC) */
    linaScriptTag, /* 'lina' (LINA) */
    mandScriptTag, /* 'mand' (MAND) */
    mayaScriptTag, /* 'maya' (MAYA) */
    meroScriptTag, /* 'mero' (MERO) */
    nkooScriptTag, /* 'nko ' (NKO) */
    orkhScriptTag, /* 'orkh' (ORKH) */
    permScriptTag, /* 'perm' (PERM) */
    phagScriptTag, /* 'phag' (PHAGS_PA) */
    phnxScriptTag, /* 'phnx' (PHOENICIAN) */
    plrdScriptTag, /* 'plrd' (PLRD) */
    roroScriptTag, /* 'roro' (RORO) */
    saraScriptTag, /* 'sara' (SARA) */
    syreScriptTag, /* 'syre' (SYRE) */
    syrjScriptTag, /* 'syrj' (SYRJ) */
    syrnScriptTag, /* 'syrn' (SYRN) */
    tengScriptTag, /* 'teng' (TENG) */
    vaiiScriptTag, /* 'vai ' (VAII) */
    vispScriptTag, /* 'visp' (VISP) */
    xsuxScriptTag, /* 'xsux' (CUNEIFORM) */
    zxxxScriptTag, /* 'zxxx' (ZXXX) */
    zzzzScriptTag  /* 'zzzz' (UNKNOWN) */
};

const LETag OpenTypeLayoutEngine::languageTags[] = {
    nullLanguageTag, /* '' (null) */
    araLanguageTag, /* 'ARA' (Arabic) */
    asmLanguageTag, /* 'ASM' (Assamese) */
    benLanguageTag, /* 'BEN' (Bengali) */
    farLanguageTag, /* 'FAR' (Farsi) */
    gujLanguageTag, /* 'GUJ' (Gujarati) */
    hinLanguageTag, /* 'HIN' (Hindi) */
    iwrLanguageTag, /* 'IWR' (Hebrew) */
    jiiLanguageTag, /* 'JII' (Yiddish) */
    janLanguageTag, /* 'JAN' (Japanese) */
    kanLanguageTag, /* 'KAN' (Kannada) */
    kokLanguageTag, /* 'KOK' (Konkani) */
    korLanguageTag, /* 'KOR' (Korean) */
    kshLanguageTag, /* 'KSH' (Kashmiri) */
    malLanguageTag, /* 'MAL' (Malayalam (Traditional)) */
    marLanguageTag, /* 'MAR' (Marathi) */
    mlrLanguageTag, /* 'MLR' (Malayalam (Reformed)) */
    mniLanguageTag, /* 'MNI' (Manipuri) */
    oriLanguageTag, /* 'ORI' (Oriya) */
    sanLanguageTag, /* 'SAN' (Sanscrit) */
    sndLanguageTag, /* 'SND' (Sindhi) */
    snhLanguageTag, /* 'SNH' (Sinhalese) */
    syrLanguageTag, /* 'SYR' (Syriac) */
    tamLanguageTag, /* 'TAM' (Tamil) */
    telLanguageTag, /* 'TEL' (Telugu) */
    thaLanguageTag, /* 'THA' (Thai) */
    urdLanguageTag, /* 'URD' (Urdu) */
    zhpLanguageTag, /* 'ZHP' (Chinese (Phonetic)) */
    zhsLanguageTag, /* 'ZHS' (Chinese (Simplified)) */
    zhtLanguageTag  /* 'ZHT' (Chinese (Traditional)) */
};

U_NAMESPACE_END
