7#include "unicode_decomposition_type.hpp"
9#include "../algorithm.hpp"
14namespace hi::inline v1 {
22enum class unicode_normalization_mask {
23 decompose_canonical = 1 << to_underlying(unicode_decomposition_type::canonical),
24 decompose_font = 1 << to_underlying(unicode_decomposition_type::font),
25 decompose_noBreak = 1 << to_underlying(unicode_decomposition_type::noBreak),
26 decompose_initial = 1 << to_underlying(unicode_decomposition_type::initial),
27 decompose_medial = 1 << to_underlying(unicode_decomposition_type::medial),
28 decompose_final = 1 << to_underlying(unicode_decomposition_type::_final),
29 decompose_isolated = 1 << to_underlying(unicode_decomposition_type::isolated),
30 decompose_circle = 1 << to_underlying(unicode_decomposition_type::circle),
31 decompose_super = 1 << to_underlying(unicode_decomposition_type::super),
32 decompose_sub = 1 << to_underlying(unicode_decomposition_type::sub),
33 decompose_fraction = 1 << to_underlying(unicode_decomposition_type::fraction),
34 decompose_vertical = 1 << to_underlying(unicode_decomposition_type::vertical),
35 decompose_wide = 1 << to_underlying(unicode_decomposition_type::wide),
36 decompose_narrow = 1 << to_underlying(unicode_decomposition_type::narrow),
37 decompose_small = 1 << to_underlying(unicode_decomposition_type::small),
38 decompose_square = 1 << to_underlying(unicode_decomposition_type::square),
39 decompose_compat = 1 << to_underlying(unicode_decomposition_type::compat),
45 decompose_control = 1 << 25,
49 compose_CRLF = 1 << 26,
55 decompose_newline_to_PS = 1 << 27,
61 decompose_newline_to_LF = 1 << 28,
67 decompose_newline_to_CRLF = 1 << 29,
73 decompose_newline_to_SP = 1 << 30,
79 decompose_newline = decompose_newline_to_PS | decompose_newline_to_LF | decompose_newline_to_CRLF | decompose_newline_to_SP,
83 NFD = decompose_canonical,
88 NFD | decompose_font | decompose_noBreak | decompose_initial | decompose_medial | decompose_final | decompose_isolated |
89 decompose_circle | decompose_super | decompose_sub | decompose_fraction | decompose_vertical | decompose_wide |
90 decompose_narrow | decompose_small | decompose_square | decompose_compat,
94[[nodiscard]]
constexpr unicode_normalization_mask decompose_newline_to(
char32_t new_line_char)
noexcept
96 switch (new_line_char) {
98 return unicode_normalization_mask::decompose_newline_to_LF;
100 return unicode_normalization_mask::decompose_newline_to_CRLF;
102 return unicode_normalization_mask::decompose_newline_to_PS;
104 return unicode_normalization_mask::decompose_newline_to_SP;
110[[nodiscard]]
constexpr bool any(unicode_normalization_mask
const& rhs)
noexcept
112 return to_bool(to_underlying(rhs));
115[[nodiscard]]
constexpr unicode_normalization_mask
116operator|(unicode_normalization_mask
const& lhs, unicode_normalization_mask
const& rhs)
noexcept
118 return static_cast<unicode_normalization_mask
>(to_underlying(lhs) | to_underlying(rhs));
121[[nodiscard]]
constexpr unicode_normalization_mask
122operator&(unicode_normalization_mask
const& lhs, unicode_normalization_mask
const& rhs)
noexcept
124 return static_cast<unicode_normalization_mask
>(to_underlying(lhs) & to_underlying(rhs));
127[[nodiscard]]
constexpr unicode_normalization_mask
128operator&(unicode_normalization_mask
const& lhs, unicode_decomposition_type
const& rhs)
noexcept
130 return static_cast<unicode_normalization_mask
>(to_underlying(lhs) & (1 << to_underlying(rhs)));
141unicode_NFD(std::u32string_view text, unicode_normalization_mask normalization_mask = unicode_normalization_mask::NFD)
noexcept;
151unicode_NFC(std::u32string_view text, unicode_normalization_mask normalization_mask = unicode_normalization_mask::NFD)
noexcept;
160unicode_NFKD(std::u32string_view text, unicode_normalization_mask normalization_mask = unicode_normalization_mask::NFKD)
noexcept;
169unicode_NFKC(std::u32string_view text, unicode_normalization_mask normalization_mask = unicode_normalization_mask::NFKD)
noexcept;
constexpr alignment operator|(horizontal_alignment lhs, vertical_alignment rhs) noexcept
Combine vertical and horizontal alignment.
Definition alignment.hpp:200