Struct icu::normalizer::properties::CanonicalDecomposition
source · pub struct CanonicalDecomposition { /* private fields */ }
Expand description
The raw (non-recursive) canonical decomposition operation.
Callers should generally use DecomposingNormalizer
instead of this API.
However, this API is provided for callers such as HarfBuzz that specifically
want access to non-recursive canonical decomposition e.g. for use in a
glyph-availability-guided custom normalizer.
Implementations§
source§impl CanonicalDecomposition
impl CanonicalDecomposition
sourcepub fn decompose(&self, c: char) -> Decomposed
pub fn decompose(&self, c: char) -> Decomposed
Performs non-recursive canonical decomposition (including for Hangul).
use icu_normalizer::properties::Decomposed;
let decomp = icu_normalizer::properties::CanonicalDecomposition::try_new_unstable(&icu_testdata::unstable()).unwrap();
assert_eq!(decomp.decompose('e'), Decomposed::Default);
assert_eq!(
decomp.decompose('ệ'),
Decomposed::Expansion('ẹ', '\u{0302}')
);
assert_eq!(decomp.decompose('각'), Decomposed::Expansion('가', 'ᆨ'));
assert_eq!(decomp.decompose('\u{212B}'), Decomposed::Singleton('Å')); // ANGSTROM SIGN
assert_eq!(decomp.decompose('\u{2126}'), Decomposed::Singleton('Ω')); // OHM SIGN
assert_eq!(decomp.decompose('\u{1F71}'), Decomposed::Singleton('ά')); // oxia
sourcepub fn try_new_unstable<D>(
data_provider: &D
) -> Result<CanonicalDecomposition, NormalizerError>where
D: DataProvider<CanonicalDecompositionDataV1Marker> + DataProvider<CanonicalDecompositionTablesV1Marker> + DataProvider<NonRecursiveDecompositionSupplementV1Marker> + ?Sized,
pub fn try_new_unstable<D>( data_provider: &D ) -> Result<CanonicalDecomposition, NormalizerError>where D: DataProvider<CanonicalDecompositionDataV1Marker> + DataProvider<CanonicalDecompositionTablesV1Marker> + DataProvider<NonRecursiveDecompositionSupplementV1Marker> + ?Sized,
Construct from data provider.
⚠️ The bounds on this function may change over time, including in SemVer minor releases.
sourcepub fn try_new_with_any_provider(
provider: &impl AnyProvider
) -> Result<CanonicalDecomposition, NormalizerError>
pub fn try_new_with_any_provider( provider: &impl AnyProvider ) -> Result<CanonicalDecomposition, NormalizerError>
Creates a new instance using an AnyProvider
.
For details on the behavior of this function, see: Self::try_new_unstable
sourcepub fn try_new_with_buffer_provider(
provider: &impl BufferProvider
) -> Result<CanonicalDecomposition, NormalizerError>
pub fn try_new_with_buffer_provider( provider: &impl BufferProvider ) -> Result<CanonicalDecomposition, NormalizerError>
✨ Enabled with the "serde"
feature.
Creates a new instance using a BufferProvider
.
For details on the behavior of this function, see: Self::try_new_unstable