fonterator 0.6.0

Load fonts as vector graphics in pure Rust with advanced text layout.
Documentation
//! Code for detecting font direction.

///
#[derive(PartialEq)]
pub(super) enum Direction {
    /// Either Left-Right-Top-Bottom or Top-Bottom-Right-Left
    Cjk,
    /// Left-Right-Top-Bottom
    LeftRight,
    /// Right-Left-Top-Bottom
    RightLeft,
    /// Left-Right-Bottom-Top
    LeftRightBottomTop,
    /// Bottom-Top-Right-Left
    BottomTopRightLeft,
    /// Top-Bottom-Left-Right
    TopBottom,
    /// Check next character for writing direction.
    CheckNext,
}

pub(super) fn direction(c: char) -> Direction {
    use unicode_script::tables::Script::*;
    use Direction::*;

    match unicode_script::tables::get_script(c) {
        Unknown => LeftRight,
        Ahom => LeftRight,
        Anatolian_Hieroglyphs => LeftRight,
        Arabic => RightLeft,
        Armenian => LeftRight,
        Avestan => RightLeft,
        Balinese => LeftRight,
        Bamum => LeftRight,
        Bassa_Vah => LeftRight,
        Batak => LeftRight,
        Bengali => LeftRight,
        Bopomofo => LeftRight,
        Brahmi => LeftRight,
        Braille => LeftRight,
        Buginese => LeftRight,
        Buhid => LeftRight,
        Canadian_Aboriginal => LeftRight,
        Carian => LeftRight,
        Caucasian_Albanian => LeftRight,
        Chakma => LeftRight,
        Cham => LeftRight,
        Cherokee => LeftRight,
        Common => CheckNext,
        Coptic => LeftRight,
        Cuneiform => LeftRight,
        Cypriot => RightLeft,
        Cyrillic => LeftRight,
        Deseret => LeftRight,
        Devanagari => LeftRight,
        Duployan => LeftRight,
        Egyptian_Hieroglyphs => LeftRight,
        Elbasan => LeftRight,
        Ethiopic => LeftRight,
        Georgian => LeftRight,
        Glagolitic => LeftRight,
        Gothic => LeftRight,
        Grantha => LeftRight,
        Greek => LeftRight,
        Gujarati => LeftRight,
        Gurmukhi => LeftRight,
        Han => Cjk,
        Hangul => Cjk,
        Hanunoo => LeftRightBottomTop,
        Hatran => RightLeft,
        Hebrew => RightLeft,
        Hiragana => Cjk,
        Imperial_Aramaic => RightLeft,
        Inherited => CheckNext,
        Inscriptional_Pahlavi => RightLeft,
        Inscriptional_Parthian => RightLeft,
        Javanese => LeftRight,
        Kaithi => LeftRight,
        Kannada => LeftRight,
        Katakana => Cjk,
        Kayah_Li => LeftRight,
        Kharoshthi => RightLeft,
        Khmer => LeftRight,
        Khojki => LeftRight,
        Khudawadi => LeftRight,
        Lao => LeftRight,
        Latin => LeftRight,
        Lepcha => LeftRight,
        Limbu => LeftRight,
        Linear_A => LeftRight,
        Linear_B => LeftRight,
        Lisu => LeftRight,
        Lycian => LeftRight,
        Lydian => RightLeft,
        Mahajani => LeftRight,
        Malayalam => LeftRight,
        Mandaic => RightLeft,
        Manichaean => RightLeft,
        Meetei_Mayek => LeftRight,
        Mende_Kikakui => RightLeft,
        Meroitic_Cursive => RightLeft,
        Meroitic_Hieroglyphs => RightLeft,
        Miao => LeftRight,
        Modi => LeftRight,
        Mongolian => TopBottom,
        Mro => LeftRight,
        Multani => LeftRight,
        Myanmar => LeftRight,
        Nabataean => RightLeft,
        New_Tai_Lue => LeftRight,
        Nko => RightLeft,
        Ogham => BottomTopRightLeft,
        Ol_Chiki => LeftRight,
        Old_Hungarian => RightLeft,
        Old_Italic => RightLeft,
        Old_North_Arabian => RightLeft,
        Old_Permic => LeftRight,
        Old_Persian => RightLeft,
        Old_South_Arabian => RightLeft,
        Old_Turkic => RightLeft,
        Oriya => LeftRight,
        Osmanya => LeftRight,
        Pahawh_Hmong => LeftRight,
        Palmyrene => RightLeft,
        Pau_Cin_Hau => LeftRight,
        Phags_Pa => TopBottom,
        Phoenician => RightLeft,
        Psalter_Pahlavi => RightLeft,
        Rejang => LeftRight,
        Runic => LeftRight,
        Samaritan => RightLeft,
        Saurashtra => LeftRight,
        Sharada => LeftRight,
        Shavian => LeftRight,
        Siddham => LeftRight,
        SignWriting => TopBottom,
        Sinhala => LeftRight,
        Sora_Sompeng => LeftRight,
        Sundanese => LeftRight,
        Syloti_Nagri => LeftRight,
        Syriac => RightLeft,
        Tagalog => LeftRight,
        Tagbanwa => LeftRightBottomTop,
        Tai_Le => LeftRight,
        Tai_Tham => LeftRight,
        Tai_Viet => LeftRight,
        Takri => LeftRight,
        Tamil => LeftRight,
        Telugu => LeftRight,
        Thaana => RightLeft,
        Thai => LeftRight,
        Tibetan => LeftRight,
        Tifinagh => LeftRight,
        Tirhuta => LeftRight,
        Ugaritic => LeftRight,
        Vai => LeftRight,
        Warang_Citi => LeftRight,
        Yi => LeftRight,
    }
}