// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.Fonts.Unicode {
///
/// Unicode Grapheme_Cluster_Break property values and local rule sentinels.
///
///
///
/// UAX #29 uses these classes in ordered boundary rules to determine extended
/// grapheme clusters. Some members are rule sentinels rather than Unicode property
/// values exposed by the standard.
///
public enum GraphemeClusterClass
{
///
/// Rule sentinel that matches any code point.
///
///
/// This is not a Unicode property value; it represents the "any" operand in
/// UAX #29 boundary rules.
///
Any = 0,
///
/// U+000D CARRIAGE RETURN (CR).
///
CarriageReturn = 1,
///
/// U+000A LINE FEED (LF).
///
LineFeed = 2,
///
/// Controls, separators, formats, and default-ignorable unassigned code points
/// that form hard grapheme cluster boundaries.
///
///
/// This class excludes CR, LF, U+200C ZERO WIDTH NON-JOINER, U+200D ZERO
/// WIDTH JOINER, and prepended concatenation marks because those participate
/// in more specific UAX #29 rules.
///
Control = 3,
///
/// Extending code points that remain in the same extended grapheme cluster as
/// the preceding base.
///
///
/// This includes Grapheme_Extend code points, emoji modifiers, U+200C ZERO
/// WIDTH NON-JOINER, and a small number of spacing marks needed for canonical
/// equivalence.
///
Extend = 4,
///
/// Regional indicator symbols used to build flag emoji pairs.
///
RegionalIndicator = 5,
///
/// Code points that prepend to the following grapheme cluster.
///
///
/// This includes Indic_Syllabic_Category values Consonant_Preceding_Repha and
/// Consonant_Prefixed, plus Prepended_Concatenation_Mark code points.
///
Prepend = 6,
///
/// Spacing marks that extend the previous grapheme cluster.
///
///
/// This includes spacing marks whose Grapheme_Cluster_Break value is not
/// Extend, plus U+0E33 THAI CHARACTER SARA AM and U+0EB3 LAO VOWEL SIGN AM.
///
SpacingMark = 7,
///
/// Hangul leading consonant Jamo (Hangul_Syllable_Type = L).
///
HangulLead = 8,
///
/// Hangul vowel Jamo (Hangul_Syllable_Type = V).
///
HangulVowel = 9,
///
/// Hangul trailing consonant Jamo (Hangul_Syllable_Type = T).
///
HangulTail = 10,
///
/// Hangul LV syllables.
///
HangulLeadVowel = 11,
///
/// Hangul LVT syllables.
///
HangulLeadVowelTail = 12,
///
/// Extended pictographic code points used by GB11 emoji ZWJ sequence handling.
///
///
/// This is not itself a Grapheme_Cluster_Break property value; UAX #29 uses
/// it when matching emoji ZWJ sequences.
///
ExtendedPictographic = 13,
///
/// U+200D ZERO WIDTH JOINER.
///
ZeroWidthJoiner = 14,
///
/// Other.
///
///
/// This is the Unicode Other / XX fallback for code points
/// without an explicit grapheme cluster break class.
///
Other = 0xFF
}
}