LibUnicode: Add enum for UAX#14 line breaking classes
This commit is contained in:
parent
ae0f5ef9ce
commit
d8be8e27ed
2 changed files with 38 additions and 0 deletions
|
|
@ -463,4 +463,30 @@ BidiClass bidirectional_class(u32 code_point)
|
|||
return char_direction_to_bidi_class(direction);
|
||||
}
|
||||
|
||||
LineBreakClass line_break_class(u32 code_point)
|
||||
{
|
||||
auto icu_code_point = static_cast<UChar32>(code_point);
|
||||
auto icu_line_break = static_cast<ULineBreak>(u_getIntPropertyValue(icu_code_point, UCHAR_LINE_BREAK));
|
||||
|
||||
switch (icu_line_break) {
|
||||
case U_LB_ALPHABETIC:
|
||||
case U_LB_HEBREW_LETTER:
|
||||
return LineBreakClass::Alphabetic;
|
||||
case U_LB_NUMERIC:
|
||||
return LineBreakClass::Numeric;
|
||||
case U_LB_IDEOGRAPHIC:
|
||||
case U_LB_H2:
|
||||
case U_LB_H3:
|
||||
return LineBreakClass::Ideographic;
|
||||
case U_LB_AMBIGUOUS:
|
||||
return LineBreakClass::Ambiguous;
|
||||
case U_LB_COMPLEX_CONTEXT:
|
||||
return LineBreakClass::ComplexContext;
|
||||
case U_LB_COMBINING_MARK:
|
||||
return LineBreakClass::CombiningMark;
|
||||
default:
|
||||
return LineBreakClass::Other;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,4 +74,16 @@ enum class BidiClass {
|
|||
|
||||
BidiClass bidirectional_class(u32 code_point);
|
||||
|
||||
enum class LineBreakClass {
|
||||
Alphabetic, // AL
|
||||
Numeric, // NU
|
||||
Ideographic, // ID
|
||||
Ambiguous, // AI
|
||||
ComplexContext, // SA
|
||||
CombiningMark, // CM
|
||||
Other,
|
||||
};
|
||||
|
||||
LineBreakClass line_break_class(u32 code_point);
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue