makepad-rustybuzz 0.8.0

A complete harfbuzz shaping algorithm port to Rust.
Documentation
// WARNING: this file was generated by ../scripts/gen-indic-table.py

#![allow(non_camel_case_types)]
#![allow(unused_imports)]

use super::indic::{SyllabicCategory, MatraCategory};

use SyllabicCategory::Avagraha                  as ISC_A;
use SyllabicCategory::Bindu                     as ISC_Bi;
use SyllabicCategory::BrahmiJoiningNumber       as ISC_BJN;
use SyllabicCategory::CantillationMark          as ISC_Ca;
use SyllabicCategory::Consonant                 as ISC_C;
use SyllabicCategory::ConsonantDead             as ISC_CD;
use SyllabicCategory::ConsonantFinal            as ISC_CF;
use SyllabicCategory::ConsonantHeadLetter       as ISC_CHL;
use SyllabicCategory::ConsonantInitialPostfixed as ISC_CIP;
use SyllabicCategory::ConsonantKiller           as ISC_CK;
use SyllabicCategory::ConsonantMedial           as ISC_CM;
use SyllabicCategory::ConsonantPlaceholder      as ISC_CP;
use SyllabicCategory::ConsonantPrecedingRepha   as ISC_CPR;
use SyllabicCategory::ConsonantPrefixed         as ISC_CPrf;
use SyllabicCategory::ConsonantSubjoined        as ISC_CS;
use SyllabicCategory::ConsonantSucceedingRepha  as ISC_CSR;
use SyllabicCategory::ConsonantWithStacker      as ISC_CWS;
use SyllabicCategory::GeminationMark            as ISC_GM;
use SyllabicCategory::InvisibleStacker          as ISC_IS;
use SyllabicCategory::Joiner                    as ISC_ZWJ;
use SyllabicCategory::ModifyingLetter           as ISC_ML;
use SyllabicCategory::NonJoiner                 as ISC_ZWNJ;
use SyllabicCategory::Nukta                     as ISC_N;
use SyllabicCategory::Number                    as ISC_Nd;
use SyllabicCategory::NumberJoiner              as ISC_NJ;
use SyllabicCategory::Other                     as ISC_x;
use SyllabicCategory::PureKiller                as ISC_PK;
use SyllabicCategory::RegisterShifter           as ISC_RS;
use SyllabicCategory::SyllableModifier          as ISC_SM;
use SyllabicCategory::ToneLetter                as ISC_TL;
use SyllabicCategory::ToneMark                  as ISC_TM;
use SyllabicCategory::Virama                    as ISC_V;
use SyllabicCategory::Visarga                   as ISC_Vs;
use SyllabicCategory::Vowel                     as ISC_Vo;
use SyllabicCategory::VowelDependent            as ISC_M;
use SyllabicCategory::VowelIndependent          as ISC_VI;

use MatraCategory::Bottom                       as IMC_B;
use MatraCategory::BottomAndLeft                as IMC_BL;
use MatraCategory::BottomAndRight               as IMC_BR;
use MatraCategory::Left                         as IMC_L;
use MatraCategory::LeftAndRight                 as IMC_LR;
use MatraCategory::NotApplicable                as IMC_x;
use MatraCategory::Overstruck                   as IMC_O;
use MatraCategory::Right                        as IMC_R;
use MatraCategory::Top                          as IMC_T;
use MatraCategory::TopAndBottom                 as IMC_TB;
use MatraCategory::TopAndBottomAndRight         as IMC_TBR;
use MatraCategory::TopAndLeft                   as IMC_TL;
use MatraCategory::TopAndLeftAndRight           as IMC_TLR;
use MatraCategory::TopAndRight                  as IMC_TR;
use MatraCategory::VisualOrderLeft              as IMC_VOL;


const TABLE: &[(SyllabicCategory, MatraCategory)] = &[


  /* Basic Latin */

  /* 0028 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_CP,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0030 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0038 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Latin-1 Supplement */

  /* 00B0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_SM,IMC_x), (ISC_SM,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 00B8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 00C0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 00C8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 00D0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_CP,IMC_x),

  /* Devanagari */

  /* 0900 */ (ISC_Bi,IMC_T), (ISC_Bi,IMC_T), (ISC_Bi,IMC_T), (ISC_Vs,IMC_R), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0908 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0910 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0918 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0920 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0928 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0930 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0938 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_M,IMC_T),  (ISC_M,IMC_R),  (ISC_N,IMC_B),  (ISC_A,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_L),
  /* 0940 */  (ISC_M,IMC_R),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_T),
  /* 0948 */  (ISC_M,IMC_T),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_V,IMC_B),  (ISC_M,IMC_L),  (ISC_M,IMC_R),
  /* 0950 */  (ISC_x,IMC_x), (ISC_Ca,IMC_T), (ISC_Ca,IMC_B),  (ISC_x,IMC_T),  (ISC_x,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_B),  (ISC_M,IMC_B),
  /* 0958 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0960 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0968 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0970 */  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0978 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),

  /* Bengali */

  /* 0980 */ (ISC_CP,IMC_x), (ISC_Bi,IMC_T), (ISC_Bi,IMC_R), (ISC_Vs,IMC_R),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0988 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x),
  /* 0990 */ (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0998 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 09A0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 09A8 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 09B0 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 09B8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_N,IMC_B),  (ISC_A,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_L),
  /* 09C0 */  (ISC_M,IMC_R),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_L),
  /* 09C8 */  (ISC_M,IMC_L),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_M,IMC_LR), (ISC_M,IMC_LR),  (ISC_V,IMC_B), (ISC_CD,IMC_x),  (ISC_x,IMC_x),
  /* 09D0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_R),
  /* 09D8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),
  /* 09E0 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 09E8 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 09F0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 09F8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Bi,IMC_x),  (ISC_x,IMC_x), (ISC_SM,IMC_T),  (ISC_x,IMC_x),

  /* Gurmukhi */

  /* 0A00 */  (ISC_x,IMC_x), (ISC_Bi,IMC_T), (ISC_Bi,IMC_T), (ISC_Vs,IMC_R),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0A08 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x),
  /* 0A10 */ (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0A18 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0A20 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0A28 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0A30 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),
  /* 0A38 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_N,IMC_B),  (ISC_x,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_L),
  /* 0A40 */  (ISC_M,IMC_R),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_T),
  /* 0A48 */  (ISC_M,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_V,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0A50 */  (ISC_x,IMC_x), (ISC_Ca,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0A58 */  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),
  /* 0A60 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0A68 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0A70 */ (ISC_Bi,IMC_T), (ISC_GM,IMC_T), (ISC_CP,IMC_x), (ISC_CP,IMC_x),  (ISC_x,IMC_x), (ISC_CM,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0A78 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Gujarati */

  /* 0A80 */  (ISC_x,IMC_x), (ISC_Bi,IMC_T), (ISC_Bi,IMC_T), (ISC_Vs,IMC_R),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0A88 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x),
  /* 0A90 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0A98 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0AA0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0AA8 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0AB0 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0AB8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_N,IMC_B),  (ISC_A,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_L),
  /* 0AC0 */  (ISC_M,IMC_R),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_T),  (ISC_x,IMC_x),  (ISC_M,IMC_T),
  /* 0AC8 */  (ISC_M,IMC_T), (ISC_M,IMC_TR),  (ISC_x,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_V,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0AD0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0AD8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0AE0 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0AE8 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0AF0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0AF8 */  (ISC_x,IMC_x),  (ISC_C,IMC_x), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T),  (ISC_N,IMC_T),  (ISC_N,IMC_T),  (ISC_N,IMC_T),

  /* Oriya */

  /* 0B00 */  (ISC_x,IMC_x), (ISC_Bi,IMC_T), (ISC_Bi,IMC_R), (ISC_Vs,IMC_R),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0B08 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x),
  /* 0B10 */ (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0B18 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0B20 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0B28 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0B30 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0B38 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_N,IMC_B),  (ISC_A,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_T),
  /* 0B40 */  (ISC_M,IMC_R),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_L),
  /* 0B48 */ (ISC_M,IMC_TL),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_M,IMC_LR),(ISC_M,IMC_TLR),  (ISC_V,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0B50 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_T), (ISC_M,IMC_TR),
  /* 0B58 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),
  /* 0B60 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0B68 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0B70 */  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0B78 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Tamil */

  /* 0B80 */  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Bi,IMC_T), (ISC_ML,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0B88 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0B90 */ (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0B98 */  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0BA0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0BA8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0BB0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0BB8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_R),
  /* 0BC0 */  (ISC_M,IMC_T),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_L),  (ISC_M,IMC_L),
  /* 0BC8 */  (ISC_M,IMC_L),  (ISC_x,IMC_x), (ISC_M,IMC_LR), (ISC_M,IMC_LR), (ISC_M,IMC_LR),  (ISC_V,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0BD0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_R),
  /* 0BD8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0BE0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0BE8 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0BF0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0BF8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Telugu */

  /* 0C00 */ (ISC_Bi,IMC_T), (ISC_Bi,IMC_R), (ISC_Bi,IMC_R), (ISC_Vs,IMC_R), (ISC_Bi,IMC_T), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0C08 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0C10 */ (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0C18 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0C20 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0C28 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0C30 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0C38 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_A,IMC_x),  (ISC_M,IMC_T),  (ISC_M,IMC_T),
  /* 0C40 */  (ISC_M,IMC_T),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_x,IMC_x),  (ISC_M,IMC_T),  (ISC_M,IMC_T),
  /* 0C48 */ (ISC_M,IMC_TB),  (ISC_x,IMC_x),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_V,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0C50 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_T),  (ISC_M,IMC_B),  (ISC_x,IMC_x),
  /* 0C58 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0C60 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0C68 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0C70 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0C78 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Kannada */

  /* 0C80 */ (ISC_Bi,IMC_x), (ISC_Bi,IMC_T), (ISC_Bi,IMC_R), (ISC_Vs,IMC_R),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0C88 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0C90 */ (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0C98 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0CA0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0CA8 */  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0CB0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0CB8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_N,IMC_B),  (ISC_A,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_T),
  /* 0CC0 */ (ISC_M,IMC_TR),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_x,IMC_x),  (ISC_M,IMC_T), (ISC_M,IMC_TR),
  /* 0CC8 */ (ISC_M,IMC_TR),  (ISC_x,IMC_x), (ISC_M,IMC_TR), (ISC_M,IMC_TR),  (ISC_M,IMC_T),  (ISC_V,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0CD0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_x,IMC_x),
  /* 0CD8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),
  /* 0CE0 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0CE8 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0CF0 */  (ISC_x,IMC_x),(ISC_CWS,IMC_x),(ISC_CWS,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0CF8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Malayalam */

  /* 0D00 */ (ISC_Bi,IMC_T), (ISC_Bi,IMC_T), (ISC_Bi,IMC_R), (ISC_Vs,IMC_R),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0D08 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0D10 */ (ISC_VI,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0D18 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0D20 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0D28 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0D30 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0D38 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x), (ISC_PK,IMC_T), (ISC_PK,IMC_T),  (ISC_A,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_R),
  /* 0D40 */  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_M,IMC_L),  (ISC_M,IMC_L),
  /* 0D48 */  (ISC_M,IMC_L),  (ISC_x,IMC_x), (ISC_M,IMC_LR), (ISC_M,IMC_LR), (ISC_M,IMC_LR),  (ISC_V,IMC_T),(ISC_CPR,IMC_x),  (ISC_x,IMC_x),
  /* 0D50 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x),  (ISC_M,IMC_R),
  /* 0D58 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x),
  /* 0D60 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0D68 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0D70 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0D78 */  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x),

  /* Sinhala */

  /* 0D80 */  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Bi,IMC_R), (ISC_Vs,IMC_R),  (ISC_x,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0D88 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 0D90 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x),
  /* 0D98 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0DA0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0DA8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0DB0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 0DB8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 0DC0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),
  /* 0DC8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_V,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_R),
  /* 0DD0 */  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_B),  (ISC_x,IMC_x),  (ISC_M,IMC_B),  (ISC_x,IMC_x),
  /* 0DD8 */  (ISC_M,IMC_R),  (ISC_M,IMC_L), (ISC_M,IMC_TL),  (ISC_M,IMC_L), (ISC_M,IMC_LR),(ISC_M,IMC_TLR), (ISC_M,IMC_LR),  (ISC_M,IMC_R),
  /* 0DE0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0DE8 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 0DF0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Myanmar */

  /* 1000 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1008 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1010 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1018 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1020 */  (ISC_C,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 1028 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_B),
  /* 1030 */  (ISC_M,IMC_B),  (ISC_M,IMC_L),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_T), (ISC_Bi,IMC_T), (ISC_TM,IMC_B),
  /* 1038 */ (ISC_Vs,IMC_R), (ISC_IS,IMC_x), (ISC_PK,IMC_T), (ISC_CM,IMC_R), (ISC_CM,IMC_x), (ISC_CM,IMC_B), (ISC_CM,IMC_B),  (ISC_C,IMC_x),
  /* 1040 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 1048 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),  (ISC_x,IMC_x), (ISC_CP,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_CP,IMC_x),  (ISC_x,IMC_x),
  /* 1050 */  (ISC_C,IMC_x),  (ISC_C,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_R),
  /* 1058 */  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x), (ISC_CM,IMC_B), (ISC_CM,IMC_B),
  /* 1060 */ (ISC_CM,IMC_B),  (ISC_C,IMC_x),  (ISC_M,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_M,IMC_R),
  /* 1068 */  (ISC_M,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1070 */  (ISC_C,IMC_x),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1078 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1080 */  (ISC_C,IMC_x),  (ISC_C,IMC_x), (ISC_CM,IMC_B),  (ISC_M,IMC_R),  (ISC_M,IMC_L),  (ISC_M,IMC_T),  (ISC_M,IMC_T), (ISC_TM,IMC_R),
  /* 1088 */ (ISC_TM,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_R), (ISC_TM,IMC_B),  (ISC_C,IMC_x), (ISC_TM,IMC_R),
  /* 1090 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 1098 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_TM,IMC_R), (ISC_TM,IMC_R),  (ISC_M,IMC_R),  (ISC_M,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Khmer */

  /* 1780 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1788 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1790 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 1798 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* 17A0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 17A8 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),
  /* 17B0 */ (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x), (ISC_VI,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_M,IMC_R),  (ISC_M,IMC_T),
  /* 17B8 */  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_T),  (ISC_M,IMC_B),  (ISC_M,IMC_B),  (ISC_M,IMC_B), (ISC_M,IMC_TL),(ISC_M,IMC_TLR),
  /* 17C0 */ (ISC_M,IMC_LR),  (ISC_M,IMC_L),  (ISC_M,IMC_L),  (ISC_M,IMC_L), (ISC_M,IMC_LR), (ISC_M,IMC_LR), (ISC_Bi,IMC_T), (ISC_Vs,IMC_R),
  /* 17C8 */  (ISC_M,IMC_R), (ISC_RS,IMC_T), (ISC_RS,IMC_T), (ISC_SM,IMC_T),(ISC_CSR,IMC_T), (ISC_CK,IMC_T), (ISC_SM,IMC_T), (ISC_SM,IMC_T),
  /* 17D0 */ (ISC_SM,IMC_T), (ISC_PK,IMC_T), (ISC_IS,IMC_x), (ISC_SM,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 17D8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_A,IMC_x), (ISC_SM,IMC_T),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 17E0 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* 17E8 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Vedic Extensions */

  /* 1CD0 */ (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T),  (ISC_x,IMC_x), (ISC_Ca,IMC_O), (ISC_Ca,IMC_B), (ISC_Ca,IMC_B), (ISC_Ca,IMC_B),
  /* 1CD8 */ (ISC_Ca,IMC_B), (ISC_Ca,IMC_B), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_B), (ISC_Ca,IMC_B), (ISC_Ca,IMC_B), (ISC_Ca,IMC_B),
  /* 1CE0 */ (ISC_Ca,IMC_T), (ISC_Ca,IMC_R),  (ISC_x,IMC_O),  (ISC_x,IMC_O),  (ISC_x,IMC_O),  (ISC_x,IMC_O),  (ISC_x,IMC_O),  (ISC_x,IMC_O),
  /* 1CE8 */  (ISC_x,IMC_O),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_B),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 1CF0 */  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_CD,IMC_x), (ISC_CD,IMC_x), (ISC_Ca,IMC_T),(ISC_CWS,IMC_x),(ISC_CWS,IMC_x), (ISC_Ca,IMC_R),
  /* 1CF8 */ (ISC_Ca,IMC_x), (ISC_Ca,IMC_x), (ISC_CP,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* General Punctuation */

  /* 2008 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),(ISC_ZWNJ,IMC_x),(ISC_ZWJ,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 2010 */ (ISC_CP,IMC_x), (ISC_CP,IMC_x), (ISC_CP,IMC_x), (ISC_CP,IMC_x), (ISC_CP,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Superscripts and Subscripts */

  /* 2070 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_SM,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 2078 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* 2080 */  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_SM,IMC_x), (ISC_SM,IMC_x), (ISC_SM,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),

  /* Devanagari Extended */

  /* A8E0 */ (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T),
  /* A8E8 */ (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Ca,IMC_T),
  /* A8F0 */ (ISC_Ca,IMC_T), (ISC_Ca,IMC_T), (ISC_Bi,IMC_x), (ISC_Bi,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),
  /* A8F8 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_x,IMC_x), (ISC_VI,IMC_x),  (ISC_M,IMC_T),

  /* Myanmar Extended-B */

  /* A9E0 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_M,IMC_T),  (ISC_x,IMC_x),  (ISC_C,IMC_x),
  /* A9E8 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* A9F0 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),
  /* A9F8 */ (ISC_Nd,IMC_x), (ISC_Nd,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_x,IMC_x),

  /* Myanmar Extended-A */

  /* AA60 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* AA68 */  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),
  /* AA70 */  (ISC_x,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x),  (ISC_C,IMC_x), (ISC_CP,IMC_x), (ISC_CP,IMC_x), (ISC_CP,IMC_x),  (ISC_x,IMC_x),
  /* AA78 */  (ISC_x,IMC_x),  (ISC_x,IMC_x),  (ISC_C,IMC_x), (ISC_TM,IMC_R), (ISC_TM,IMC_T), (ISC_TM,IMC_R),  (ISC_C,IMC_x),  (ISC_C,IMC_x),

];

const OFFSET_0X0028: usize = 0;
const OFFSET_0X00B0: usize = 24;
const OFFSET_0X0900: usize = 64;
const OFFSET_0X1000: usize = 1336;
const OFFSET_0X1780: usize = 1496;
const OFFSET_0X1CD0: usize = 1608;
const OFFSET_0X2008: usize = 1656;
const OFFSET_0X2070: usize = 1672;
const OFFSET_0XA8E0: usize = 1696;
const OFFSET_0XA9E0: usize = 1728;
const OFFSET_0XAA60: usize = 1760;

pub fn get_categories(u: u32) -> (SyllabicCategory, MatraCategory) {
    match u >> 12 {
        0x0 => {
            if u == 0x00A0 { return (ISC_CP, IMC_x); }
            if (0x0028..=0x003F).contains(&u) { return TABLE[u as usize - 0x0028 + OFFSET_0X0028]; }
            if (0x00B0..=0x00D7).contains(&u) { return TABLE[u as usize - 0x00B0 + OFFSET_0X00B0]; }
            if (0x0900..=0x0DF7).contains(&u) { return TABLE[u as usize - 0x0900 + OFFSET_0X0900]; }
        }
        0x1 => {
            if (0x1000..=0x109F).contains(&u) { return TABLE[u as usize - 0x1000 + OFFSET_0X1000]; }
            if (0x1780..=0x17EF).contains(&u) { return TABLE[u as usize - 0x1780 + OFFSET_0X1780]; }
            if (0x1CD0..=0x1CFF).contains(&u) { return TABLE[u as usize - 0x1CD0 + OFFSET_0X1CD0]; }
        }
        0x2 => {
            if u == 0x25CC { return (ISC_CP, IMC_x); }
            if (0x2008..=0x2017).contains(&u) { return TABLE[u as usize - 0x2008 + OFFSET_0X2008]; }
            if (0x2070..=0x2087).contains(&u) { return TABLE[u as usize - 0x2070 + OFFSET_0X2070]; }
        }
        0xA => {
            if (0xA8E0..=0xA8FF).contains(&u) { return TABLE[u as usize - 0xA8E0 + OFFSET_0XA8E0]; }
            if (0xA9E0..=0xA9FF).contains(&u) { return TABLE[u as usize - 0xA9E0 + OFFSET_0XA9E0]; }
            if (0xAA60..=0xAA7F).contains(&u) { return TABLE[u as usize - 0xAA60 + OFFSET_0XAA60]; }
        }
        _ => {}
    }

    (ISC_x, IMC_x)
}