#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "third_party/blink/renderer/platform/text/character.h"
#include <unicode/uchar.h>
#include <unicode/ucptrie.h>
#include <unicode/uobject.h>
#include <unicode/uscript.h>
#include <algorithm>
#include "base/synchronization/lock.h"
#include "third_party/blink/renderer/platform/text/character_property_data.h"
#include "third_party/blink/renderer/platform/text/icu_error.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
#include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
#include "third_party/blink/renderer/platform/wtf/text/unicode.h"
namespace blink {
namespace {
UCPTrie* CreateTrie() { … }
unsigned GetProperty(UChar32 c, CharacterProperty property) { … }
base::Lock& GetFreezePatternLock() { … }
}
void Character::ApplyPatternAndFreezeIfEmpty(icu::UnicodeSet* unicodeSet,
const char* pattern) { … }
bool Character::IsUprightInMixedVertical(UChar32 character) { … }
bool Character::IsCJKIdeographOrSymbolSlow(UChar32 c) { … }
bool Character::IsPotentialCustomElementNameChar(UChar32 character) { … }
bool Character::IsBidiControl(UChar32 character) { … }
bool Character::IsHangulSlow(UChar32 character) { … }
HanKerningCharType Character::GetHanKerningCharType(UChar32 character) { … }
bool Character::MaybeHanKerningOpenSlow(UChar32 ch) { … }
bool Character::MaybeHanKerningCloseSlow(UChar32 ch) { … }
unsigned Character::ExpansionOpportunityCount(
base::span<const LChar> characters,
TextDirection direction,
bool& is_after_expansion) { … }
unsigned Character::ExpansionOpportunityCount(
base::span<const UChar> characters,
TextDirection direction,
bool& is_after_expansion) { … }
bool Character::CanTextDecorationSkipInk(UChar32 codepoint) { … }
bool Character::CanReceiveTextEmphasis(UChar32 c) { … }
bool Character::IsEmojiTagSequence(UChar32 c) { … }
bool Character::IsExtendedPictographic(UChar32 c) { … }
bool Character::IsEmojiComponent(UChar32 c) { … }
bool Character::MaybeEmojiPresentation(UChar32 c) { … }
bool Character::IsCommonOrInheritedScript(UChar32 character) { … }
bool Character::IsPrivateUse(UChar32 character) { … }
bool Character::IsNonCharacter(UChar32 character) { … }
bool Character::HasDefiniteScript(UChar32 character) { … }
static const UChar stretchy_operator_with_inline_axis[]{ … };
bool Character::IsVerticalMathCharacter(UChar32 text_content) { … }
}