properties.h answers questions about single code points. Each lookup is a few reads of a compressed table and cannot fail; the function returns the value directly.
| Property | Function |
|---|---|
| General_Category | muniGetGeneralCategory |
| Grapheme_Cluster_Break, Word_Break, Sentence_Break, Indic_Conjunct_Break | muniGetGraphemeBreak, muniGetWordBreak, muniGetSentenceBreak, muniGetIndicConjunctBreak |
| Line_Break, East_Asian_Width | muniGetLineBreak, muniGetEastAsianWidth |
| Bidi_Class, Bidi_Mirroring_Glyph, Bidi_Paired_Bracket_Type | muniGetBidiClass, muniGetMirroringGlyph, muniGetBracketType |
| Canonical_Combining_Class | muniGetCombiningClass |
| Script, Script_Extensions | muniGetScript, muniGetScriptExtensions |
| Emoji properties | muniIsExtendedPictographic, muniIsEmoji, muniIsEmojiPresentation, muniIsEmojiModifier, muniIsEmojiModifierBase, muniIsEmojiComponent |
| White_Space, Default_Ignorable_Code_Point | muniIsWhiteSpace, muniIsDefaultIgnorable |
| Ideographic | muniIsIdeographic |
| Decimal digit value | muniGetDecimalDigitValue |
Identifier properties are in identifier.h and case properties in case.h; see Identifiers and security and Normalization and case.
uint32_t. Values past U+10FFFF answer as unassigned code points do, so a lookup never needs a range check first.muni_gcLu, muni_lbSa, muni_bcRli) are the library's own numbering. A value that a new Unicode version adds, as Unicode 15.1 added five Line_Break classes, is appended after the last, and the existing values keep their numbers. That is part of the API, so data may store the numbers.uint32_t by MUNI_MAKE_SCRIPT('L', 'a', 't', 'n'), the same values as HarfBuzz's hb_script_t. Unassigned code points are MUNI_SCRIPT_UNKNOWN; characters many scripts share are MUNI_SCRIPT_COMMON; combining marks that take their base's script are MUNI_SCRIPT_INHERITED.muniGetScriptExtensions always writes at least one script: a code point without listed extensions has its Script alone. An array of MUNI_MAX_SCRIPT_EXTENSIONS entries always suffices for this Unicode version; a release with a new one may raise it, and the count the call reports is always exact.