seshat/unicode/
props.rs

1use crate::unicode::ucd::property_names;
2
3#[derive(Clone, Copy)]
4pub struct PropertyName {
5    pub full: &'static str,
6    pub abbr: &'static str,
7}
8
9/// The Unicode property enums should implement this trait.
10///
11/// # Examples
12///
13/// ```
14/// use seshat::unicode::Ucd;
15/// use seshat::unicode::props::Sc;
16/// use seshat::unicode::props::UnicodeProperty;
17///
18/// fn main() {
19///     let capital_a = 'A';
20///     let sc_prop: Sc = capital_a.sc();
21///     let sc_name = sc_prop.property_value_name();
22///
23///     println!("{} ({})", sc_name.full, sc_name.abbr);
24///     // This will prints "Latin (Latn)".
25/// }
26/// ```
27pub trait UnicodeProperty {
28    fn property_value_name(&self) -> PropertyName;
29}
30
31#[derive(Debug, PartialEq, Clone, Copy)]
32#[repr(u8)]
33pub enum BinaryProperty {
34    Y,
35    N,
36}
37
38impl From<bool> for BinaryProperty {
39    fn from(val: bool) -> Self {
40        match val {
41            true => BinaryProperty::Y,
42            false => BinaryProperty::N,
43        }
44    }
45}
46
47impl UnicodeProperty for BinaryProperty {
48    fn property_value_name(&self) -> PropertyName {
49        property_names::binary_property_name(*self)
50    }
51}
52
53/// General_Category (gc)
54#[derive(Debug, PartialEq, Clone, Copy)]
55#[repr(u8)]
56pub enum Gc {
57    // C - Other
58    Cc,
59    Cf,
60    Cn,
61    Co,
62    Cs,
63    // L - Letter
64    // LC - Cased_Letter (Ll | Lt | Lu)
65    Ll,
66    Lm,
67    Lo,
68    Lt,
69    Lu,
70    // M - Mark
71    Mc,
72    Me,
73    Mn,
74    // N - Number
75    Nd,
76    Nl,
77    No,
78    // P - Punctuation
79    Pc,
80    Pd,
81    Pe,
82    Pf,
83    Pi,
84    Po,
85    Ps,
86    // S - Symbol
87    Sc,
88    Sk,
89    Sm,
90    So,
91    // Z - Separator
92    Zl,
93    Zp,
94    Zs,
95}
96
97impl UnicodeProperty for Gc {
98    fn property_value_name(&self) -> PropertyName {
99        property_names::gc_name(*self)
100    }
101}
102
103/// Hangul_Syllable_Type (hst)
104#[derive(Debug, PartialEq, Clone, Copy)]
105#[repr(u8)]
106pub enum Hst {
107    L,      //Leading_Jamo
108    LV,     //LV_Syllable
109    LVT,    //LVT_Syllable
110    NA,     //Not_Applicable
111    T,      //Trailing_Jamo
112    V,      //Vowel_Jamo
113}
114
115impl UnicodeProperty for Hst {
116    fn property_value_name(&self) -> PropertyName {
117        property_names::hst_name(*self)
118    }
119}
120
121/// Grapheme_Cluster_Break (GCB)
122#[derive(Debug, PartialEq, Clone, Copy)]
123#[repr(u8)]
124pub enum Gcb {
125    CN,     // Control
126    CR,     // CR
127    EB,     // E_Base
128    EBG,    // E_Base_GAZ
129    EM,     // E_Modifier
130    EX,     // Extend
131    GAZ,    // Glue_After_Zwj
132    L,      // L
133    LF,     // LF
134    LV,     // LV
135    LVT,    // LVT
136    PP,     // Prepend
137    RI,     // Regional_Indicator
138    SM,     // SpacingMark
139    T,      // T
140    V,      // V
141    XX,     // Other
142    ZWJ,    // ZWJ
143}
144
145impl UnicodeProperty for Gcb {
146    fn property_value_name(&self) -> PropertyName {
147        property_names::gcb_name(*self)
148    }
149}
150
151/// Bidi_Class (bc)
152#[derive(Debug, PartialEq, Clone, Copy)]
153#[repr(u8)]
154pub enum Bc {
155    AL,     // Arabic_Letter
156    AN,     // Arabic_Number
157    B,      // Paragraph_Separator
158    BN,     // Boundary_Neutral
159    CS,     // Common_Separator
160    EN,     // European_Number
161    ES,     // European_Separator
162    ET,     // European_Terminator
163    FSI,    // First_Strong_Isolate
164    L,      // Left_To_Right
165    LRE,    // Left_To_Right_Embedding
166    LRI,    // Left_To_Right_Isolate
167    LRO,    // Left_To_Right_Override
168    NSM,    // Nonspacing_Mark
169    ON,     // Other_Neutral
170    PDF,    // Pop_Directional_Format
171    PDI,    // Pop_Directional_Isolate
172    R,      // Right_To_Left
173    RLE,    // Right_To_Left_Embedding
174    RLI,    // Right_To_Left_Isolate
175    RLO,    // Right_To_Left_Override
176    S,      // Segment_Separator
177    WS,     // White_Space
178}
179
180impl UnicodeProperty for Bc {
181    fn property_value_name(&self) -> PropertyName {
182        property_names::bc_name(*self)
183    }
184}
185
186/// Canonical_Combining_Class (ccc)
187#[derive(Debug, PartialEq, Clone, Copy)]
188#[repr(u8)]
189pub enum Ccc {
190    NR = 0,         // Not_Reordered
191    OV = 1,         // Overlay
192    HANR = 6,       // Han_Reading
193    NK = 7,         // Nukta
194    KV = 8,         // Kana_Voicing
195    VR = 9,         // Virama
196    CCC10 = 10,     // CCC10
197    CCC11 = 11,     // CCC11
198    CCC12 = 12,     // CCC12
199    CCC13 = 13,     // CCC13
200    CCC14 = 14,     // CCC14
201    CCC15 = 15,     // CCC15
202    CCC16 = 16,     // CCC16
203    CCC17 = 17,     // CCC17
204    CCC18 = 18,     // CCC18
205    CCC19 = 19,     // CCC19
206    CCC20 = 20,     // CCC20
207    CCC21 = 21,     // CCC21
208    CCC22 = 22,     // CCC22
209    CCC23 = 23,     // CCC23
210    CCC24 = 24,     // CCC24
211    CCC25 = 25,     // CCC25
212    CCC26 = 26,     // CCC26
213    CCC27 = 27,     // CCC27
214    CCC28 = 28,     // CCC28
215    CCC29 = 29,     // CCC29
216    CCC30 = 30,     // CCC30
217    CCC31 = 31,     // CCC31
218    CCC32 = 32,     // CCC32
219    CCC33 = 33,     // CCC33
220    CCC34 = 34,     // CCC34
221    CCC35 = 35,     // CCC35
222    CCC36 = 36,     // CCC36
223    CCC84 = 84,     // CCC84
224    CCC91 = 91,     // CCC91
225    CCC103 = 103,   // CCC103
226    CCC107 = 107,   // CCC107
227    CCC118 = 118,   // CCC118
228    CCC122 = 122,   // CCC122
229    CCC129 = 129,   // CCC129
230    CCC130 = 130,   // CCC130
231    CCC132 = 132,   // CCC132
232    CCC133 = 133,   // CCC133 # RESERVED
233    ATBL = 200,     // Attached_Below_Left
234    ATB = 202,      // Attached_Below
235    ATA = 214,      // Attached_Above
236    ATAR = 216,     // Attached_Above_Right
237    BL = 218,       // Below_Left
238    B = 220,        // Below
239    BR = 222,       // Below_Right
240    L = 224,        // Left
241    R = 226,        // Right
242    AL = 228,       // Above_Left
243    A = 230,        // Above
244    AR = 232,       // Above_Right
245    DB = 233,       // Double_Below
246    DA = 234,       // Double_Above
247    IS = 240,       // Iota_Subscript
248}
249
250impl UnicodeProperty for Ccc {
251    fn property_value_name(&self) -> PropertyName {
252        property_names::ccc_name(*self)
253    }
254}
255
256/// Decomposition_Type (dt)
257#[derive(Debug, PartialEq, Clone, Copy)]
258#[repr(u8)]
259pub enum Dt {
260    Can,    // Canonical
261    Com,    // Compat
262    Enc,    // Circle
263    Fin,    // Final
264    Font,   // Font
265    Fra,    // Fraction
266    Init,   // Initial
267    Iso,    // Isolated
268    Med,    // Medial
269    Nar,    // Narrow
270    Nb,     // Nobreak
271    None,   // None
272    Sml,    // Small
273    Sqr,    // Square
274    Sub,    // Sub
275    Sup,    // Super
276    Vert,   // Vertical
277    Wide,   // Wide
278}
279
280impl UnicodeProperty for Dt {
281    fn property_value_name(&self) -> PropertyName {
282        property_names::dt_name(*self)
283    }
284}
285
286/// Block (blk)
287#[derive(Debug, PartialEq, Clone, Copy)]
288#[repr(u16)]
289pub enum Blk {
290    // These enum contents are generated by `gen-blk-enum.py` script.
291    Adlam,
292    AegeanNumbers,
293    Ahom,
294    Alchemical,
295    AlphabeticPf,
296    AnatolianHieroglyphs,
297    AncientGreekMusic,
298    AncientGreekNumbers,
299    AncientSymbols,
300    Arabic,
301    ArabicExtA,
302    ArabicExtB,
303    ArabicExtC,
304    ArabicMath,
305    ArabicPfA,
306    ArabicPfB,
307    ArabicSup,
308    Armenian,
309    Arrows,
310    Ascii,
311    Avestan,
312    Balinese,
313    Bamum,
314    BamumSup,
315    BassaVah,
316    Batak,
317    Bengali,
318    Bhaiksuki,
319    BlockElements,
320    Bopomofo,
321    BopomofoExt,
322    BoxDrawing,
323    Brahmi,
324    Braille,
325    Buginese,
326    Buhid,
327    ByzantineMusic,
328    Carian,
329    CaucasianAlbanian,
330    Chakma,
331    Cham,
332    Cherokee,
333    CherokeeSup,
334    ChessSymbols,
335    Chorasmian,
336    Cjk,
337    CjkCompat,
338    CjkCompatForms,
339    CjkCompatIdeographs,
340    CjkCompatIdeographsSup,
341    CjkExtA,
342    CjkExtB,
343    CjkExtC,
344    CjkExtD,
345    CjkExtE,
346    CjkExtF,
347    CjkExtG,
348    CjkExtH,
349    CjkExtI,
350    CjkRadicalsSup,
351    CjkStrokes,
352    CjkSymbols,
353    CompatJamo,
354    ControlPictures,
355    Coptic,
356    CopticEpactNumbers,
357    CountingRod,
358    Cuneiform,
359    CuneiformNumbers,
360    CurrencySymbols,
361    CypriotSyllabary,
362    CyproMinoan,
363    Cyrillic,
364    CyrillicExtA,
365    CyrillicExtB,
366    CyrillicExtC,
367    CyrillicExtD,
368    CyrillicSup,
369    Deseret,
370    Devanagari,
371    DevanagariExt,
372    DevanagariExtA,
373    Diacriticals,
374    DiacriticalsExt,
375    DiacriticalsForSymbols,
376    DiacriticalsSup,
377    Dingbats,
378    DivesAkuru,
379    Dogra,
380    Domino,
381    Duployan,
382    EarlyDynasticCuneiform,
383    EgyptianHieroglyphFormatControls,
384    EgyptianHieroglyphs,
385    EgyptianHieroglyphsExtA,
386    Elbasan,
387    Elymaic,
388    Emoticons,
389    EnclosedAlphanum,
390    EnclosedAlphanumSup,
391    EnclosedCjk,
392    EnclosedIdeographicSup,
393    Ethiopic,
394    EthiopicExt,
395    EthiopicExtA,
396    EthiopicExtB,
397    EthiopicSup,
398    Garay,
399    GeometricShapes,
400    GeometricShapesExt,
401    Georgian,
402    GeorgianExt,
403    GeorgianSup,
404    Glagolitic,
405    GlagoliticSup,
406    Gothic,
407    Grantha,
408    Greek,
409    GreekExt,
410    Gujarati,
411    GunjalaGondi,
412    Gurmukhi,
413    GurungKhema,
414    HalfAndFullForms,
415    HalfMarks,
416    Hangul,
417    HanifiRohingya,
418    Hanunoo,
419    Hatran,
420    Hebrew,
421    HighPuSurrogates,
422    HighSurrogates,
423    Hiragana,
424    Idc,
425    IdeographicSymbols,
426    ImperialAramaic,
427    IndicNumberForms,
428    IndicSiyaqNumbers,
429    InscriptionalPahlavi,
430    InscriptionalParthian,
431    IpaExt,
432    Jamo,
433    JamoExtA,
434    JamoExtB,
435    Javanese,
436    Kaithi,
437    KaktovikNumerals,
438    KanaExtA,
439    KanaExtB,
440    KanaSup,
441    Kanbun,
442    Kangxi,
443    Kannada,
444    Katakana,
445    KatakanaExt,
446    Kawi,
447    KayahLi,
448    Kharoshthi,
449    KhitanSmallScript,
450    Khmer,
451    KhmerSymbols,
452    Khojki,
453    Khudawadi,
454    KiratRai,
455    Lao,
456    Latin1Sup,
457    LatinExtA,
458    LatinExtAdditional,
459    LatinExtB,
460    LatinExtC,
461    LatinExtD,
462    LatinExtE,
463    LatinExtF,
464    LatinExtG,
465    Lepcha,
466    LetterlikeSymbols,
467    Limbu,
468    LinearA,
469    LinearBIdeograms,
470    LinearBSyllabary,
471    Lisu,
472    LisuSup,
473    LowSurrogates,
474    Lycian,
475    Lydian,
476    Mahajani,
477    Mahjong,
478    Makasar,
479    Malayalam,
480    Mandaic,
481    Manichaean,
482    Marchen,
483    MasaramGondi,
484    MathAlphanum,
485    MathOperators,
486    MayanNumerals,
487    Medefaidrin,
488    MeeteiMayek,
489    MeeteiMayekExt,
490    MendeKikakui,
491    MeroiticCursive,
492    MeroiticHieroglyphs,
493    Miao,
494    MiscArrows,
495    MiscMathSymbolsA,
496    MiscMathSymbolsB,
497    MiscPictographs,
498    MiscSymbols,
499    MiscTechnical,
500    Modi,
501    ModifierLetters,
502    ModifierToneLetters,
503    Mongolian,
504    MongolianSup,
505    Mro,
506    Multani,
507    Music,
508    Myanmar,
509    MyanmarExtA,
510    MyanmarExtB,
511    MyanmarExtC,
512    Nabataean,
513    NagMundari,
514    Nandinagari,
515    Nb,
516    NewTaiLue,
517    Newa,
518    Nko,
519    NumberForms,
520    Nushu,
521    NyiakengPuachueHmong,
522    Ocr,
523    Ogham,
524    OlChiki,
525    OlOnal,
526    OldHungarian,
527    OldItalic,
528    OldNorthArabian,
529    OldPermic,
530    OldPersian,
531    OldSogdian,
532    OldSouthArabian,
533    OldTurkic,
534    OldUyghur,
535    Oriya,
536    OrnamentalDingbats,
537    Osage,
538    Osmanya,
539    OttomanSiyaqNumbers,
540    PahawhHmong,
541    Palmyrene,
542    PauCinHau,
543    PhagsPa,
544    Phaistos,
545    Phoenician,
546    PhoneticExt,
547    PhoneticExtSup,
548    PlayingCards,
549    PsalterPahlavi,
550    Pua,
551    Punctuation,
552    Rejang,
553    Rumi,
554    Runic,
555    Samaritan,
556    Saurashtra,
557    Sharada,
558    Shavian,
559    ShorthandFormatControls,
560    Siddham,
561    Sinhala,
562    SinhalaArchaicNumbers,
563    SmallForms,
564    SmallKanaExt,
565    Sogdian,
566    SoraSompeng,
567    Soyombo,
568    Specials,
569    Sundanese,
570    SundaneseSup,
571    Sunuwar,
572    SupArrowsA,
573    SupArrowsB,
574    SupArrowsC,
575    SupMathOperators,
576    SupPuaA,
577    SupPuaB,
578    SupPunctuation,
579    SupSymbolsAndPictographs,
580    SuperAndSub,
581    SuttonSignwriting,
582    SylotiNagri,
583    SymbolsAndPictographsExtA,
584    SymbolsForLegacyComputing,
585    SymbolsForLegacyComputingSup,
586    Syriac,
587    SyriacSup,
588    Tagalog,
589    Tagbanwa,
590    Tags,
591    TaiLe,
592    TaiTham,
593    TaiViet,
594    TaiXuanJing,
595    Takri,
596    Tamil,
597    TamilSup,
598    Tangsa,
599    Tangut,
600    TangutComponents,
601    TangutSup,
602    Telugu,
603    Thaana,
604    Thai,
605    Tibetan,
606    Tifinagh,
607    Tirhuta,
608    Todhri,
609    Toto,
610    TransportAndMap,
611    TuluTigalari,
612    Ucas,
613    UcasExt,
614    UcasExtA,
615    Ugaritic,
616    Vai,
617    VedicExt,
618    VerticalForms,
619    Vithkuqi,
620    Vs,
621    VsSup,
622    Wancho,
623    WarangCiti,
624    Yezidi,
625    YiRadicals,
626    YiSyllables,
627    Yijing,
628    ZanabazarSquare,
629    ZnamennyMusic,
630}
631
632impl UnicodeProperty for Blk {
633    fn property_value_name(&self) -> PropertyName {
634        property_names::blk_name(*self)
635    }
636}
637
638/// Unicode property Script (sc).
639#[derive(Debug, PartialEq, Clone, Copy)]
640#[repr(u8)]
641pub enum Sc {
642    // These enum contents are generated by `gen-sc-enum.py` script.
643    Adlm,
644    Aghb,
645    Ahom,
646    Arab,
647    Armi,
648    Armn,
649    Avst,
650    Bali,
651    Bamu,
652    Bass,
653    Batk,
654    Beng,
655    Bhks,
656    Bopo,
657    Brah,
658    Brai,
659    Bugi,
660    Buhd,
661    Cakm,
662    Cans,
663    Cari,
664    Cham,
665    Cher,
666    Chrs,
667    Copt,
668    Cpmn,
669    Cprt,
670    Cyrl,
671    Deva,
672    Diak,
673    Dogr,
674    Dsrt,
675    Dupl,
676    Egyp,
677    Elba,
678    Elym,
679    Ethi,
680    Gara,
681    Geor,
682    Glag,
683    Gong,
684    Gonm,
685    Goth,
686    Gran,
687    Grek,
688    Gujr,
689    Gukh,
690    Guru,
691    Hang,
692    Hani,
693    Hano,
694    Hatr,
695    Hebr,
696    Hira,
697    Hluw,
698    Hmng,
699    Hmnp,
700    Hrkt,
701    Hung,
702    Ital,
703    Java,
704    Kali,
705    Kana,
706    Kawi,
707    Khar,
708    Khmr,
709    Khoj,
710    Kits,
711    Knda,
712    Krai,
713    Kthi,
714    Lana,
715    Laoo,
716    Latn,
717    Lepc,
718    Limb,
719    Lina,
720    Linb,
721    Lisu,
722    Lyci,
723    Lydi,
724    Mahj,
725    Maka,
726    Mand,
727    Mani,
728    Marc,
729    Medf,
730    Mend,
731    Merc,
732    Mero,
733    Mlym,
734    Modi,
735    Mong,
736    Mroo,
737    Mtei,
738    Mult,
739    Mymr,
740    Nagm,
741    Nand,
742    Narb,
743    Nbat,
744    Newa,
745    Nkoo,
746    Nshu,
747    Ogam,
748    Olck,
749    Onao,
750    Orkh,
751    Orya,
752    Osge,
753    Osma,
754    Ougr,
755    Palm,
756    Pauc,
757    Perm,
758    Phag,
759    Phli,
760    Phlp,
761    Phnx,
762    Plrd,
763    Prti,
764    Rjng,
765    Rohg,
766    Runr,
767    Samr,
768    Sarb,
769    Saur,
770    Sgnw,
771    Shaw,
772    Shrd,
773    Sidd,
774    Sind,
775    Sinh,
776    Sogd,
777    Sogo,
778    Sora,
779    Soyo,
780    Sund,
781    Sunu,
782    Sylo,
783    Syrc,
784    Tagb,
785    Takr,
786    Tale,
787    Talu,
788    Taml,
789    Tang,
790    Tavt,
791    Telu,
792    Tfng,
793    Tglg,
794    Thaa,
795    Thai,
796    Tibt,
797    Tirh,
798    Tnsa,
799    Todr,
800    Toto,
801    Tutg,
802    Ugar,
803    Vaii,
804    Vith,
805    Wara,
806    Wcho,
807    Xpeo,
808    Xsux,
809    Yezi,
810    Yiii,
811    Zanb,
812    Zinh,
813    Zyyy,
814    Zzzz,
815}
816
817impl UnicodeProperty for Sc {
818    fn property_value_name(&self) -> PropertyName {
819        property_names::sc_name(*self)
820    }
821}
822
823/// Unicode property Age(age).
824#[derive(Debug, PartialEq, Clone, Copy)]
825pub enum Age {
826    V1_1,
827    V2_0,
828    V2_1,
829    V3_0,
830    V3_1,
831    V3_2,
832    V4_0,
833    V4_1,
834    V5_0,
835    V5_1,
836    V5_2,
837    V6_0,
838    V6_1,
839    V6_2,
840    V6_3,
841    V7_0,
842    V8_0,
843    V9_0,
844    V10_0,
845    V11_0,
846    V12_0,
847    V12_1,
848    V13_0,
849    V14_0,
850    V15_0,
851    V15_1,
852    V16_0,
853    NA,
854}
855
856impl UnicodeProperty for Age {
857    fn property_value_name(&self) -> PropertyName {
858        property_names::age_name(*self)
859    }
860}
861
862/// Unicode property Word_Break (WB).
863#[derive(Debug, PartialEq, Clone, Copy)]
864pub enum Wb {
865    CR,     // CR
866    DQ,     // Double_Quote
867    EB,     // E_Base
868    EBG,    // E_Base_GAZ
869    EM,     // E_Modifier
870    EX,     // ExtendNumLet
871    Extend, // Extend
872    FO,     // Format
873    GAZ,    // Glue_After_Zwj
874    HL,     // Hebrew_Letter
875    KA,     // Katakana
876    LE,     // ALetter
877    LF,     // LF
878    MB,     // MidNumLet
879    ML,     // MidLetter
880    MN,     // MidNum
881    NL,     // Newline
882    NU,     // Numeric
883    RI,     // Regional_Indicator
884    SQ,     // Single_Quote
885    WSegSpace,  // WSegSpace
886    XX,     // Other
887    ZWJ,    // ZWJ
888}
889
890impl UnicodeProperty for Wb {
891    fn property_value_name(&self) -> PropertyName {
892        property_names::wb_name(*self)
893    }
894}
895
896/// Unicode property Indic_Syllabic_Category (InSC).
897#[allow(non_camel_case_types)]
898#[derive(Debug, PartialEq, Clone, Copy)]
899pub enum Insc {
900    Avagraha,                        // Avagraha
901    Bindu,                           // Bindu
902    Brahmi_Joining_Number,           // Brahmi_Joining_Number
903    Cantillation_Mark,               // Cantillation_Mark
904    Consonant,                       // Consonant
905    Consonant_Dead,                  // Consonant_Dead
906    Consonant_Final,                 // Consonant_Final
907    Consonant_Head_Letter,           // Consonant_Head_Letter
908    Consonant_Initial_Postfixed,     // Consonant_Initial_Postfixed
909    Consonant_Killer,                // Consonant_Killer
910    Consonant_Medial,                // Consonant_Medial
911    Consonant_Placeholder,           // Consonant_Placeholder
912    Consonant_Preceding_Repha,       // Consonant_Preceding_Repha
913    Consonant_Prefixed,              // Consonant_Prefixed
914    Consonant_Subjoined,             // Consonant_Subjoined
915    Consonant_Succeeding_Repha,      // Consonant_Succeeding_Repha
916    Consonant_With_Stacker,          // Consonant_With_Stacker
917    Gemination_Mark,                 // Gemination_Mark
918    Invisible_Stacker,               // Invisible_Stacker
919    Joiner,                          // Joiner
920    Modifying_Letter,                // Modifying_Letter
921    Non_Joiner,                      // Non_Joiner
922    Nukta,                           // Nukta
923    Number,                          // Number
924    Number_Joiner,                   // Number_Joiner
925    Other,                           // Other
926    Pure_Killer,                     // Pure_Killer
927    Register_Shifter,                // Register_Shifter
928    Reordering_Killer,               // Reordering_Killer
929    Syllable_Modifier,               // Syllable_Modifier
930    Tone_Letter,                     // Tone_Letter
931    Tone_Mark,                       // Tone_Mark
932    Virama,                          // Virama
933    Visarga,                         // Visarga
934    Vowel,                           // Vowel
935    Vowel_Dependent,                 // Vowel_Dependent
936    Vowel_Independent,               // Vowel_Independent
937}
938
939impl UnicodeProperty for Insc {
940    fn property_value_name(&self) -> PropertyName {
941        property_names::insc_name(*self)
942    }
943}
944
945/// Unicode property Indic_Conjunct_Break (InCB).
946#[derive(Debug, PartialEq, Clone, Copy)]
947pub enum Incb {
948    Consonant,  // Consonant
949    Extend,     // Extend
950    Linker,     // Linker
951    None,       // None
952}
953
954impl UnicodeProperty for Incb {
955    fn property_value_name(&self) -> PropertyName {
956        property_names::incb_name(*self)
957    }
958}