mod constants {
pub const MODIFIER_LETTER_SMALL_H: char = 'ʰ';
pub const MODIFIER_LETTER_SMALL_H_WITH_HOOK: char = 'ʱ';
pub const MODIFIER_LETTER_SMALL_J: char = 'ʲ';
pub const MODIFIER_LETTER_SMALL_R: char = 'ʳ';
pub const MODIFIER_LETTER_SMALL_TURNED_R: char = 'ʴ';
pub const MODIFIER_LETTER_SMALL_TURNED_R_WITH_HOOK: char = 'ʵ';
pub const MODIFIER_LETTER_SMALL_CAPITAL_INVERTED_R: char = 'ʶ';
pub const MODIFIER_LETTER_SMALL_W: char = 'ʷ';
pub const MODIFIER_LETTER_SMALL_Y: char = 'ʸ';
pub const MODIFIER_LETTER_PRIME: char = 'ʹ';
pub const MODIFIER_LETTER_DOUBLE_PRIME: char = 'ʺ';
pub const MODIFIER_LETTER_TURNED_COMMA: char = 'ʻ';
pub const MODIFIER_LETTER_APOSTROPHE: char = 'ʼ';
pub const MODIFIER_LETTER_REVERSED_COMMA: char = 'ʽ';
pub const MODIFIER_LETTER_RIGHT_HALF_RING: char = 'ʾ';
pub const MODIFIER_LETTER_LEFT_HALF_RING: char = 'ʿ';
pub const MODIFIER_LETTER_GLOTTAL_STOP: char = 'ˀ';
pub const MODIFIER_LETTER_REVERSED_GLOTTAL_STOP: char = 'ˁ';
pub const MODIFIER_LETTER_LEFT_ARROWHEAD: char = '˂';
pub const MODIFIER_LETTER_RIGHT_ARROWHEAD: char = '˃';
pub const MODIFIER_LETTER_UP_ARROWHEAD: char = '˄';
pub const MODIFIER_LETTER_DOWN_ARROWHEAD: char = '˅';
pub const MODIFIER_LETTER_CIRCUMFLEX_ACCENT: char = 'ˆ';
pub const CARON: char = 'ˇ';
pub const MODIFIER_LETTER_VERTICAL_LINE: char = 'ˈ';
pub const MODIFIER_LETTER_MACRON: char = 'ˉ';
pub const MODIFIER_LETTER_ACUTE_ACCENT: char = 'ˊ';
pub const MODIFIER_LETTER_GRAVE_ACCENT: char = 'ˋ';
pub const MODIFIER_LETTER_LOW_VERTICAL_LINE: char = 'ˌ';
pub const MODIFIER_LETTER_LOW_MACRON: char = 'ˍ';
pub const MODIFIER_LETTER_LOW_GRAVE_ACCENT: char = 'ˎ';
pub const MODIFIER_LETTER_LOW_ACUTE_ACCENT: char = 'ˏ';
pub const MODIFIER_LETTER_TRIANGULAR_COLON: char = 'ː';
pub const MODIFIER_LETTER_HALF_TRIANGULAR_COLON: char = 'ˑ';
pub const MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING: char = '˒';
pub const MODIFIER_LETTER_CENTRED_LEFT_HALF_RING: char = '˓';
pub const MODIFIER_LETTER_UP_TACK: char = '˔';
pub const MODIFIER_LETTER_DOWN_TACK: char = '˕';
pub const MODIFIER_LETTER_PLUS_SIGN: char = '˖';
pub const MODIFIER_LETTER_MINUS_SIGN: char = '˗';
pub const BREVE: char = '˘';
pub const DOT_ABOVE: char = '˙';
pub const RING_ABOVE: char = '˚';
pub const OGONEK: char = '˛';
pub const SMALL_TILDE: char = '˜';
pub const DOUBLE_ACUTE_ACCENT: char = '˝';
pub const MODIFIER_LETTER_RHOTIC_HOOK: char = '˞';
pub const MODIFIER_LETTER_CROSS_ACCENT: char = '˟';
pub const MODIFIER_LETTER_SMALL_GAMMA: char = 'ˠ';
pub const MODIFIER_LETTER_SMALL_L: char = 'ˡ';
pub const MODIFIER_LETTER_SMALL_S: char = 'ˢ';
pub const MODIFIER_LETTER_SMALL_X: char = 'ˣ';
pub const MODIFIER_LETTER_SMALL_REVERSED_GLOTTAL_STOP: char = 'ˤ';
pub const MODIFIER_LETTER_EXTRA_DASH_HIGH_TONE_BAR: char = '˥';
pub const MODIFIER_LETTER_HIGH_TONE_BAR: char = '˦';
pub const MODIFIER_LETTER_MID_TONE_BAR: char = '˧';
pub const MODIFIER_LETTER_LOW_TONE_BAR: char = '˨';
pub const MODIFIER_LETTER_EXTRA_DASH_LOW_TONE_BAR: char = '˩';
pub const MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK: char = '˪';
pub const MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK: char = '˫';
pub const MODIFIER_LETTER_VOICING: char = 'ˬ';
pub const MODIFIER_LETTER_UNASPIRATED: char = '˭';
pub const MODIFIER_LETTER_DOUBLE_APOSTROPHE: char = 'ˮ';
pub const MODIFIER_LETTER_LOW_DOWN_ARROWHEAD: char = '˯';
pub const MODIFIER_LETTER_LOW_UP_ARROWHEAD: char = '˰';
pub const MODIFIER_LETTER_LOW_LEFT_ARROWHEAD: char = '˱';
pub const MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD: char = '˲';
pub const MODIFIER_LETTER_LOW_RING: char = '˳';
pub const MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT: char = '˴';
pub const MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT: char = '˵';
pub const MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT: char = '˶';
pub const MODIFIER_LETTER_LOW_TILDE: char = '˷';
pub const MODIFIER_LETTER_RAISED_COLON: char = '˸';
pub const MODIFIER_LETTER_BEGIN_HIGH_TONE: char = '˹';
pub const MODIFIER_LETTER_END_HIGH_TONE: char = '˺';
pub const MODIFIER_LETTER_BEGIN_LOW_TONE: char = '˻';
pub const MODIFIER_LETTER_END_LOW_TONE: char = '˼';
pub const MODIFIER_LETTER_SHELF: char = '˽';
pub const MODIFIER_LETTER_OPEN_SHELF: char = '˾';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum SpacingModifierLetters {
ModifierLetterSmallH,
ModifierLetterSmallHWithHook,
ModifierLetterSmallJ,
ModifierLetterSmallR,
ModifierLetterSmallTurnedR,
ModifierLetterSmallTurnedRWithHook,
ModifierLetterSmallCapitalInvertedR,
ModifierLetterSmallW,
ModifierLetterSmallY,
ModifierLetterPrime,
ModifierLetterDoublePrime,
ModifierLetterTurnedComma,
ModifierLetterApostrophe,
ModifierLetterReversedComma,
ModifierLetterRightHalfRing,
ModifierLetterLeftHalfRing,
ModifierLetterGlottalStop,
ModifierLetterReversedGlottalStop,
ModifierLetterLeftArrowhead,
ModifierLetterRightArrowhead,
ModifierLetterUpArrowhead,
ModifierLetterDownArrowhead,
ModifierLetterCircumflexAccent,
Caron,
ModifierLetterVerticalLine,
ModifierLetterMacron,
ModifierLetterAcuteAccent,
ModifierLetterGraveAccent,
ModifierLetterLowVerticalLine,
ModifierLetterLowMacron,
ModifierLetterLowGraveAccent,
ModifierLetterLowAcuteAccent,
ModifierLetterTriangularColon,
ModifierLetterHalfTriangularColon,
ModifierLetterCentredRightHalfRing,
ModifierLetterCentredLeftHalfRing,
ModifierLetterUpTack,
ModifierLetterDownTack,
ModifierLetterPlusSign,
ModifierLetterMinusSign,
Breve,
DotAbove,
RingAbove,
Ogonek,
SmallTilde,
DoubleAcuteAccent,
ModifierLetterRhoticHook,
ModifierLetterCrossAccent,
ModifierLetterSmallGamma,
ModifierLetterSmallL,
ModifierLetterSmallS,
ModifierLetterSmallX,
ModifierLetterSmallReversedGlottalStop,
ModifierLetterExtraDashHighToneBar,
ModifierLetterHighToneBar,
ModifierLetterMidToneBar,
ModifierLetterLowToneBar,
ModifierLetterExtraDashLowToneBar,
ModifierLetterYinDepartingToneMark,
ModifierLetterYangDepartingToneMark,
ModifierLetterVoicing,
ModifierLetterUnaspirated,
ModifierLetterDoubleApostrophe,
ModifierLetterLowDownArrowhead,
ModifierLetterLowUpArrowhead,
ModifierLetterLowLeftArrowhead,
ModifierLetterLowRightArrowhead,
ModifierLetterLowRing,
ModifierLetterMiddleGraveAccent,
ModifierLetterMiddleDoubleGraveAccent,
ModifierLetterMiddleDoubleAcuteAccent,
ModifierLetterLowTilde,
ModifierLetterRaisedColon,
ModifierLetterBeginHighTone,
ModifierLetterEndHighTone,
ModifierLetterBeginLowTone,
ModifierLetterEndLowTone,
ModifierLetterShelf,
ModifierLetterOpenShelf,
}
impl Into<char> for SpacingModifierLetters {
fn into(self) -> char {
use constants::*;
match self {
SpacingModifierLetters::ModifierLetterSmallH => MODIFIER_LETTER_SMALL_H,
SpacingModifierLetters::ModifierLetterSmallHWithHook => MODIFIER_LETTER_SMALL_H_WITH_HOOK,
SpacingModifierLetters::ModifierLetterSmallJ => MODIFIER_LETTER_SMALL_J,
SpacingModifierLetters::ModifierLetterSmallR => MODIFIER_LETTER_SMALL_R,
SpacingModifierLetters::ModifierLetterSmallTurnedR => MODIFIER_LETTER_SMALL_TURNED_R,
SpacingModifierLetters::ModifierLetterSmallTurnedRWithHook => MODIFIER_LETTER_SMALL_TURNED_R_WITH_HOOK,
SpacingModifierLetters::ModifierLetterSmallCapitalInvertedR => MODIFIER_LETTER_SMALL_CAPITAL_INVERTED_R,
SpacingModifierLetters::ModifierLetterSmallW => MODIFIER_LETTER_SMALL_W,
SpacingModifierLetters::ModifierLetterSmallY => MODIFIER_LETTER_SMALL_Y,
SpacingModifierLetters::ModifierLetterPrime => MODIFIER_LETTER_PRIME,
SpacingModifierLetters::ModifierLetterDoublePrime => MODIFIER_LETTER_DOUBLE_PRIME,
SpacingModifierLetters::ModifierLetterTurnedComma => MODIFIER_LETTER_TURNED_COMMA,
SpacingModifierLetters::ModifierLetterApostrophe => MODIFIER_LETTER_APOSTROPHE,
SpacingModifierLetters::ModifierLetterReversedComma => MODIFIER_LETTER_REVERSED_COMMA,
SpacingModifierLetters::ModifierLetterRightHalfRing => MODIFIER_LETTER_RIGHT_HALF_RING,
SpacingModifierLetters::ModifierLetterLeftHalfRing => MODIFIER_LETTER_LEFT_HALF_RING,
SpacingModifierLetters::ModifierLetterGlottalStop => MODIFIER_LETTER_GLOTTAL_STOP,
SpacingModifierLetters::ModifierLetterReversedGlottalStop => MODIFIER_LETTER_REVERSED_GLOTTAL_STOP,
SpacingModifierLetters::ModifierLetterLeftArrowhead => MODIFIER_LETTER_LEFT_ARROWHEAD,
SpacingModifierLetters::ModifierLetterRightArrowhead => MODIFIER_LETTER_RIGHT_ARROWHEAD,
SpacingModifierLetters::ModifierLetterUpArrowhead => MODIFIER_LETTER_UP_ARROWHEAD,
SpacingModifierLetters::ModifierLetterDownArrowhead => MODIFIER_LETTER_DOWN_ARROWHEAD,
SpacingModifierLetters::ModifierLetterCircumflexAccent => MODIFIER_LETTER_CIRCUMFLEX_ACCENT,
SpacingModifierLetters::Caron => CARON,
SpacingModifierLetters::ModifierLetterVerticalLine => MODIFIER_LETTER_VERTICAL_LINE,
SpacingModifierLetters::ModifierLetterMacron => MODIFIER_LETTER_MACRON,
SpacingModifierLetters::ModifierLetterAcuteAccent => MODIFIER_LETTER_ACUTE_ACCENT,
SpacingModifierLetters::ModifierLetterGraveAccent => MODIFIER_LETTER_GRAVE_ACCENT,
SpacingModifierLetters::ModifierLetterLowVerticalLine => MODIFIER_LETTER_LOW_VERTICAL_LINE,
SpacingModifierLetters::ModifierLetterLowMacron => MODIFIER_LETTER_LOW_MACRON,
SpacingModifierLetters::ModifierLetterLowGraveAccent => MODIFIER_LETTER_LOW_GRAVE_ACCENT,
SpacingModifierLetters::ModifierLetterLowAcuteAccent => MODIFIER_LETTER_LOW_ACUTE_ACCENT,
SpacingModifierLetters::ModifierLetterTriangularColon => MODIFIER_LETTER_TRIANGULAR_COLON,
SpacingModifierLetters::ModifierLetterHalfTriangularColon => MODIFIER_LETTER_HALF_TRIANGULAR_COLON,
SpacingModifierLetters::ModifierLetterCentredRightHalfRing => MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING,
SpacingModifierLetters::ModifierLetterCentredLeftHalfRing => MODIFIER_LETTER_CENTRED_LEFT_HALF_RING,
SpacingModifierLetters::ModifierLetterUpTack => MODIFIER_LETTER_UP_TACK,
SpacingModifierLetters::ModifierLetterDownTack => MODIFIER_LETTER_DOWN_TACK,
SpacingModifierLetters::ModifierLetterPlusSign => MODIFIER_LETTER_PLUS_SIGN,
SpacingModifierLetters::ModifierLetterMinusSign => MODIFIER_LETTER_MINUS_SIGN,
SpacingModifierLetters::Breve => BREVE,
SpacingModifierLetters::DotAbove => DOT_ABOVE,
SpacingModifierLetters::RingAbove => RING_ABOVE,
SpacingModifierLetters::Ogonek => OGONEK,
SpacingModifierLetters::SmallTilde => SMALL_TILDE,
SpacingModifierLetters::DoubleAcuteAccent => DOUBLE_ACUTE_ACCENT,
SpacingModifierLetters::ModifierLetterRhoticHook => MODIFIER_LETTER_RHOTIC_HOOK,
SpacingModifierLetters::ModifierLetterCrossAccent => MODIFIER_LETTER_CROSS_ACCENT,
SpacingModifierLetters::ModifierLetterSmallGamma => MODIFIER_LETTER_SMALL_GAMMA,
SpacingModifierLetters::ModifierLetterSmallL => MODIFIER_LETTER_SMALL_L,
SpacingModifierLetters::ModifierLetterSmallS => MODIFIER_LETTER_SMALL_S,
SpacingModifierLetters::ModifierLetterSmallX => MODIFIER_LETTER_SMALL_X,
SpacingModifierLetters::ModifierLetterSmallReversedGlottalStop => MODIFIER_LETTER_SMALL_REVERSED_GLOTTAL_STOP,
SpacingModifierLetters::ModifierLetterExtraDashHighToneBar => MODIFIER_LETTER_EXTRA_DASH_HIGH_TONE_BAR,
SpacingModifierLetters::ModifierLetterHighToneBar => MODIFIER_LETTER_HIGH_TONE_BAR,
SpacingModifierLetters::ModifierLetterMidToneBar => MODIFIER_LETTER_MID_TONE_BAR,
SpacingModifierLetters::ModifierLetterLowToneBar => MODIFIER_LETTER_LOW_TONE_BAR,
SpacingModifierLetters::ModifierLetterExtraDashLowToneBar => MODIFIER_LETTER_EXTRA_DASH_LOW_TONE_BAR,
SpacingModifierLetters::ModifierLetterYinDepartingToneMark => MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK,
SpacingModifierLetters::ModifierLetterYangDepartingToneMark => MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK,
SpacingModifierLetters::ModifierLetterVoicing => MODIFIER_LETTER_VOICING,
SpacingModifierLetters::ModifierLetterUnaspirated => MODIFIER_LETTER_UNASPIRATED,
SpacingModifierLetters::ModifierLetterDoubleApostrophe => MODIFIER_LETTER_DOUBLE_APOSTROPHE,
SpacingModifierLetters::ModifierLetterLowDownArrowhead => MODIFIER_LETTER_LOW_DOWN_ARROWHEAD,
SpacingModifierLetters::ModifierLetterLowUpArrowhead => MODIFIER_LETTER_LOW_UP_ARROWHEAD,
SpacingModifierLetters::ModifierLetterLowLeftArrowhead => MODIFIER_LETTER_LOW_LEFT_ARROWHEAD,
SpacingModifierLetters::ModifierLetterLowRightArrowhead => MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD,
SpacingModifierLetters::ModifierLetterLowRing => MODIFIER_LETTER_LOW_RING,
SpacingModifierLetters::ModifierLetterMiddleGraveAccent => MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT,
SpacingModifierLetters::ModifierLetterMiddleDoubleGraveAccent => MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT,
SpacingModifierLetters::ModifierLetterMiddleDoubleAcuteAccent => MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT,
SpacingModifierLetters::ModifierLetterLowTilde => MODIFIER_LETTER_LOW_TILDE,
SpacingModifierLetters::ModifierLetterRaisedColon => MODIFIER_LETTER_RAISED_COLON,
SpacingModifierLetters::ModifierLetterBeginHighTone => MODIFIER_LETTER_BEGIN_HIGH_TONE,
SpacingModifierLetters::ModifierLetterEndHighTone => MODIFIER_LETTER_END_HIGH_TONE,
SpacingModifierLetters::ModifierLetterBeginLowTone => MODIFIER_LETTER_BEGIN_LOW_TONE,
SpacingModifierLetters::ModifierLetterEndLowTone => MODIFIER_LETTER_END_LOW_TONE,
SpacingModifierLetters::ModifierLetterShelf => MODIFIER_LETTER_SHELF,
SpacingModifierLetters::ModifierLetterOpenShelf => MODIFIER_LETTER_OPEN_SHELF,
}
}
}
impl std::convert::TryFrom<char> for SpacingModifierLetters {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
MODIFIER_LETTER_SMALL_H => Ok(SpacingModifierLetters::ModifierLetterSmallH),
MODIFIER_LETTER_SMALL_H_WITH_HOOK => Ok(SpacingModifierLetters::ModifierLetterSmallHWithHook),
MODIFIER_LETTER_SMALL_J => Ok(SpacingModifierLetters::ModifierLetterSmallJ),
MODIFIER_LETTER_SMALL_R => Ok(SpacingModifierLetters::ModifierLetterSmallR),
MODIFIER_LETTER_SMALL_TURNED_R => Ok(SpacingModifierLetters::ModifierLetterSmallTurnedR),
MODIFIER_LETTER_SMALL_TURNED_R_WITH_HOOK => Ok(SpacingModifierLetters::ModifierLetterSmallTurnedRWithHook),
MODIFIER_LETTER_SMALL_CAPITAL_INVERTED_R => Ok(SpacingModifierLetters::ModifierLetterSmallCapitalInvertedR),
MODIFIER_LETTER_SMALL_W => Ok(SpacingModifierLetters::ModifierLetterSmallW),
MODIFIER_LETTER_SMALL_Y => Ok(SpacingModifierLetters::ModifierLetterSmallY),
MODIFIER_LETTER_PRIME => Ok(SpacingModifierLetters::ModifierLetterPrime),
MODIFIER_LETTER_DOUBLE_PRIME => Ok(SpacingModifierLetters::ModifierLetterDoublePrime),
MODIFIER_LETTER_TURNED_COMMA => Ok(SpacingModifierLetters::ModifierLetterTurnedComma),
MODIFIER_LETTER_APOSTROPHE => Ok(SpacingModifierLetters::ModifierLetterApostrophe),
MODIFIER_LETTER_REVERSED_COMMA => Ok(SpacingModifierLetters::ModifierLetterReversedComma),
MODIFIER_LETTER_RIGHT_HALF_RING => Ok(SpacingModifierLetters::ModifierLetterRightHalfRing),
MODIFIER_LETTER_LEFT_HALF_RING => Ok(SpacingModifierLetters::ModifierLetterLeftHalfRing),
MODIFIER_LETTER_GLOTTAL_STOP => Ok(SpacingModifierLetters::ModifierLetterGlottalStop),
MODIFIER_LETTER_REVERSED_GLOTTAL_STOP => Ok(SpacingModifierLetters::ModifierLetterReversedGlottalStop),
MODIFIER_LETTER_LEFT_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterLeftArrowhead),
MODIFIER_LETTER_RIGHT_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterRightArrowhead),
MODIFIER_LETTER_UP_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterUpArrowhead),
MODIFIER_LETTER_DOWN_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterDownArrowhead),
MODIFIER_LETTER_CIRCUMFLEX_ACCENT => Ok(SpacingModifierLetters::ModifierLetterCircumflexAccent),
CARON => Ok(SpacingModifierLetters::Caron),
MODIFIER_LETTER_VERTICAL_LINE => Ok(SpacingModifierLetters::ModifierLetterVerticalLine),
MODIFIER_LETTER_MACRON => Ok(SpacingModifierLetters::ModifierLetterMacron),
MODIFIER_LETTER_ACUTE_ACCENT => Ok(SpacingModifierLetters::ModifierLetterAcuteAccent),
MODIFIER_LETTER_GRAVE_ACCENT => Ok(SpacingModifierLetters::ModifierLetterGraveAccent),
MODIFIER_LETTER_LOW_VERTICAL_LINE => Ok(SpacingModifierLetters::ModifierLetterLowVerticalLine),
MODIFIER_LETTER_LOW_MACRON => Ok(SpacingModifierLetters::ModifierLetterLowMacron),
MODIFIER_LETTER_LOW_GRAVE_ACCENT => Ok(SpacingModifierLetters::ModifierLetterLowGraveAccent),
MODIFIER_LETTER_LOW_ACUTE_ACCENT => Ok(SpacingModifierLetters::ModifierLetterLowAcuteAccent),
MODIFIER_LETTER_TRIANGULAR_COLON => Ok(SpacingModifierLetters::ModifierLetterTriangularColon),
MODIFIER_LETTER_HALF_TRIANGULAR_COLON => Ok(SpacingModifierLetters::ModifierLetterHalfTriangularColon),
MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING => Ok(SpacingModifierLetters::ModifierLetterCentredRightHalfRing),
MODIFIER_LETTER_CENTRED_LEFT_HALF_RING => Ok(SpacingModifierLetters::ModifierLetterCentredLeftHalfRing),
MODIFIER_LETTER_UP_TACK => Ok(SpacingModifierLetters::ModifierLetterUpTack),
MODIFIER_LETTER_DOWN_TACK => Ok(SpacingModifierLetters::ModifierLetterDownTack),
MODIFIER_LETTER_PLUS_SIGN => Ok(SpacingModifierLetters::ModifierLetterPlusSign),
MODIFIER_LETTER_MINUS_SIGN => Ok(SpacingModifierLetters::ModifierLetterMinusSign),
BREVE => Ok(SpacingModifierLetters::Breve),
DOT_ABOVE => Ok(SpacingModifierLetters::DotAbove),
RING_ABOVE => Ok(SpacingModifierLetters::RingAbove),
OGONEK => Ok(SpacingModifierLetters::Ogonek),
SMALL_TILDE => Ok(SpacingModifierLetters::SmallTilde),
DOUBLE_ACUTE_ACCENT => Ok(SpacingModifierLetters::DoubleAcuteAccent),
MODIFIER_LETTER_RHOTIC_HOOK => Ok(SpacingModifierLetters::ModifierLetterRhoticHook),
MODIFIER_LETTER_CROSS_ACCENT => Ok(SpacingModifierLetters::ModifierLetterCrossAccent),
MODIFIER_LETTER_SMALL_GAMMA => Ok(SpacingModifierLetters::ModifierLetterSmallGamma),
MODIFIER_LETTER_SMALL_L => Ok(SpacingModifierLetters::ModifierLetterSmallL),
MODIFIER_LETTER_SMALL_S => Ok(SpacingModifierLetters::ModifierLetterSmallS),
MODIFIER_LETTER_SMALL_X => Ok(SpacingModifierLetters::ModifierLetterSmallX),
MODIFIER_LETTER_SMALL_REVERSED_GLOTTAL_STOP => Ok(SpacingModifierLetters::ModifierLetterSmallReversedGlottalStop),
MODIFIER_LETTER_EXTRA_DASH_HIGH_TONE_BAR => Ok(SpacingModifierLetters::ModifierLetterExtraDashHighToneBar),
MODIFIER_LETTER_HIGH_TONE_BAR => Ok(SpacingModifierLetters::ModifierLetterHighToneBar),
MODIFIER_LETTER_MID_TONE_BAR => Ok(SpacingModifierLetters::ModifierLetterMidToneBar),
MODIFIER_LETTER_LOW_TONE_BAR => Ok(SpacingModifierLetters::ModifierLetterLowToneBar),
MODIFIER_LETTER_EXTRA_DASH_LOW_TONE_BAR => Ok(SpacingModifierLetters::ModifierLetterExtraDashLowToneBar),
MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK => Ok(SpacingModifierLetters::ModifierLetterYinDepartingToneMark),
MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK => Ok(SpacingModifierLetters::ModifierLetterYangDepartingToneMark),
MODIFIER_LETTER_VOICING => Ok(SpacingModifierLetters::ModifierLetterVoicing),
MODIFIER_LETTER_UNASPIRATED => Ok(SpacingModifierLetters::ModifierLetterUnaspirated),
MODIFIER_LETTER_DOUBLE_APOSTROPHE => Ok(SpacingModifierLetters::ModifierLetterDoubleApostrophe),
MODIFIER_LETTER_LOW_DOWN_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterLowDownArrowhead),
MODIFIER_LETTER_LOW_UP_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterLowUpArrowhead),
MODIFIER_LETTER_LOW_LEFT_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterLowLeftArrowhead),
MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD => Ok(SpacingModifierLetters::ModifierLetterLowRightArrowhead),
MODIFIER_LETTER_LOW_RING => Ok(SpacingModifierLetters::ModifierLetterLowRing),
MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT => Ok(SpacingModifierLetters::ModifierLetterMiddleGraveAccent),
MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT => Ok(SpacingModifierLetters::ModifierLetterMiddleDoubleGraveAccent),
MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT => Ok(SpacingModifierLetters::ModifierLetterMiddleDoubleAcuteAccent),
MODIFIER_LETTER_LOW_TILDE => Ok(SpacingModifierLetters::ModifierLetterLowTilde),
MODIFIER_LETTER_RAISED_COLON => Ok(SpacingModifierLetters::ModifierLetterRaisedColon),
MODIFIER_LETTER_BEGIN_HIGH_TONE => Ok(SpacingModifierLetters::ModifierLetterBeginHighTone),
MODIFIER_LETTER_END_HIGH_TONE => Ok(SpacingModifierLetters::ModifierLetterEndHighTone),
MODIFIER_LETTER_BEGIN_LOW_TONE => Ok(SpacingModifierLetters::ModifierLetterBeginLowTone),
MODIFIER_LETTER_END_LOW_TONE => Ok(SpacingModifierLetters::ModifierLetterEndLowTone),
MODIFIER_LETTER_SHELF => Ok(SpacingModifierLetters::ModifierLetterShelf),
MODIFIER_LETTER_OPEN_SHELF => Ok(SpacingModifierLetters::ModifierLetterOpenShelf),
_ => Err(()),
}
}
}
impl Into<u32> for SpacingModifierLetters {
fn into(self) -> u32 {
let c: char = self.into();
let hex = c
.escape_unicode()
.to_string()
.replace("\\u{", "")
.replace("}", "");
u32::from_str_radix(&hex, 16).unwrap()
}
}
impl std::convert::TryFrom<u32> for SpacingModifierLetters {
type Error = ();
fn try_from(u: u32) -> Result<Self, Self::Error> {
if let Ok(c) = char::try_from(u) {
Self::try_from(c)
} else {
Err(())
}
}
}
impl Iterator for SpacingModifierLetters {
type Item = Self;
fn next(&mut self) -> Option<Self> {
let index: u32 = (*self).into();
use std::convert::TryFrom;
Self::try_from(index + 1).ok()
}
}
impl SpacingModifierLetters {
pub fn new() -> Self {
SpacingModifierLetters::ModifierLetterSmallH
}
pub fn name(&self) -> &str {
match self {
SpacingModifierLetters::ModifierLetterSmallH => "modifier letter small h",
SpacingModifierLetters::ModifierLetterSmallHWithHook => "modifier letter small h with hook",
SpacingModifierLetters::ModifierLetterSmallJ => "modifier letter small j",
SpacingModifierLetters::ModifierLetterSmallR => "modifier letter small r",
SpacingModifierLetters::ModifierLetterSmallTurnedR => "modifier letter small turned r",
SpacingModifierLetters::ModifierLetterSmallTurnedRWithHook => "modifier letter small turned r with hook",
SpacingModifierLetters::ModifierLetterSmallCapitalInvertedR => "modifier letter small capital inverted r",
SpacingModifierLetters::ModifierLetterSmallW => "modifier letter small w",
SpacingModifierLetters::ModifierLetterSmallY => "modifier letter small y",
SpacingModifierLetters::ModifierLetterPrime => "modifier letter prime",
SpacingModifierLetters::ModifierLetterDoublePrime => "modifier letter double prime",
SpacingModifierLetters::ModifierLetterTurnedComma => "modifier letter turned comma",
SpacingModifierLetters::ModifierLetterApostrophe => "modifier letter apostrophe",
SpacingModifierLetters::ModifierLetterReversedComma => "modifier letter reversed comma",
SpacingModifierLetters::ModifierLetterRightHalfRing => "modifier letter right half ring",
SpacingModifierLetters::ModifierLetterLeftHalfRing => "modifier letter left half ring",
SpacingModifierLetters::ModifierLetterGlottalStop => "modifier letter glottal stop",
SpacingModifierLetters::ModifierLetterReversedGlottalStop => "modifier letter reversed glottal stop",
SpacingModifierLetters::ModifierLetterLeftArrowhead => "modifier letter left arrowhead",
SpacingModifierLetters::ModifierLetterRightArrowhead => "modifier letter right arrowhead",
SpacingModifierLetters::ModifierLetterUpArrowhead => "modifier letter up arrowhead",
SpacingModifierLetters::ModifierLetterDownArrowhead => "modifier letter down arrowhead",
SpacingModifierLetters::ModifierLetterCircumflexAccent => "modifier letter circumflex accent",
SpacingModifierLetters::Caron => "caron",
SpacingModifierLetters::ModifierLetterVerticalLine => "modifier letter vertical line",
SpacingModifierLetters::ModifierLetterMacron => "modifier letter macron",
SpacingModifierLetters::ModifierLetterAcuteAccent => "modifier letter acute accent",
SpacingModifierLetters::ModifierLetterGraveAccent => "modifier letter grave accent",
SpacingModifierLetters::ModifierLetterLowVerticalLine => "modifier letter low vertical line",
SpacingModifierLetters::ModifierLetterLowMacron => "modifier letter low macron",
SpacingModifierLetters::ModifierLetterLowGraveAccent => "modifier letter low grave accent",
SpacingModifierLetters::ModifierLetterLowAcuteAccent => "modifier letter low acute accent",
SpacingModifierLetters::ModifierLetterTriangularColon => "modifier letter triangular colon",
SpacingModifierLetters::ModifierLetterHalfTriangularColon => "modifier letter half triangular colon",
SpacingModifierLetters::ModifierLetterCentredRightHalfRing => "modifier letter centred right half ring",
SpacingModifierLetters::ModifierLetterCentredLeftHalfRing => "modifier letter centred left half ring",
SpacingModifierLetters::ModifierLetterUpTack => "modifier letter up tack",
SpacingModifierLetters::ModifierLetterDownTack => "modifier letter down tack",
SpacingModifierLetters::ModifierLetterPlusSign => "modifier letter plus sign",
SpacingModifierLetters::ModifierLetterMinusSign => "modifier letter minus sign",
SpacingModifierLetters::Breve => "breve",
SpacingModifierLetters::DotAbove => "dot above",
SpacingModifierLetters::RingAbove => "ring above",
SpacingModifierLetters::Ogonek => "ogonek",
SpacingModifierLetters::SmallTilde => "small tilde",
SpacingModifierLetters::DoubleAcuteAccent => "double acute accent",
SpacingModifierLetters::ModifierLetterRhoticHook => "modifier letter rhotic hook",
SpacingModifierLetters::ModifierLetterCrossAccent => "modifier letter cross accent",
SpacingModifierLetters::ModifierLetterSmallGamma => "modifier letter small gamma",
SpacingModifierLetters::ModifierLetterSmallL => "modifier letter small l",
SpacingModifierLetters::ModifierLetterSmallS => "modifier letter small s",
SpacingModifierLetters::ModifierLetterSmallX => "modifier letter small x",
SpacingModifierLetters::ModifierLetterSmallReversedGlottalStop => "modifier letter small reversed glottal stop",
SpacingModifierLetters::ModifierLetterExtraDashHighToneBar => "modifier letter extra-high tone bar",
SpacingModifierLetters::ModifierLetterHighToneBar => "modifier letter high tone bar",
SpacingModifierLetters::ModifierLetterMidToneBar => "modifier letter mid tone bar",
SpacingModifierLetters::ModifierLetterLowToneBar => "modifier letter low tone bar",
SpacingModifierLetters::ModifierLetterExtraDashLowToneBar => "modifier letter extra-low tone bar",
SpacingModifierLetters::ModifierLetterYinDepartingToneMark => "modifier letter yin departing tone mark",
SpacingModifierLetters::ModifierLetterYangDepartingToneMark => "modifier letter yang departing tone mark",
SpacingModifierLetters::ModifierLetterVoicing => "modifier letter voicing",
SpacingModifierLetters::ModifierLetterUnaspirated => "modifier letter unaspirated",
SpacingModifierLetters::ModifierLetterDoubleApostrophe => "modifier letter double apostrophe",
SpacingModifierLetters::ModifierLetterLowDownArrowhead => "modifier letter low down arrowhead",
SpacingModifierLetters::ModifierLetterLowUpArrowhead => "modifier letter low up arrowhead",
SpacingModifierLetters::ModifierLetterLowLeftArrowhead => "modifier letter low left arrowhead",
SpacingModifierLetters::ModifierLetterLowRightArrowhead => "modifier letter low right arrowhead",
SpacingModifierLetters::ModifierLetterLowRing => "modifier letter low ring",
SpacingModifierLetters::ModifierLetterMiddleGraveAccent => "modifier letter middle grave accent",
SpacingModifierLetters::ModifierLetterMiddleDoubleGraveAccent => "modifier letter middle double grave accent",
SpacingModifierLetters::ModifierLetterMiddleDoubleAcuteAccent => "modifier letter middle double acute accent",
SpacingModifierLetters::ModifierLetterLowTilde => "modifier letter low tilde",
SpacingModifierLetters::ModifierLetterRaisedColon => "modifier letter raised colon",
SpacingModifierLetters::ModifierLetterBeginHighTone => "modifier letter begin high tone",
SpacingModifierLetters::ModifierLetterEndHighTone => "modifier letter end high tone",
SpacingModifierLetters::ModifierLetterBeginLowTone => "modifier letter begin low tone",
SpacingModifierLetters::ModifierLetterEndLowTone => "modifier letter end low tone",
SpacingModifierLetters::ModifierLetterShelf => "modifier letter shelf",
SpacingModifierLetters::ModifierLetterOpenShelf => "modifier letter open shelf",
}
}
}