aboutsummaryrefslogtreecommitdiffstats
path: root/components/gfx/text/util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/gfx/text/util.rs')
-rw-r--r--components/gfx/text/util.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/components/gfx/text/util.rs b/components/gfx/text/util.rs
index 5be03cb2b78..f740c4a54e6 100644
--- a/components/gfx/text/util.rs
+++ b/components/gfx/text/util.rs
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+use ucd::{Codepoint, UnicodeBlock};
+
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum CompressionMode {
CompressNone,
@@ -114,3 +116,42 @@ pub fn is_bidi_control(c: char) -> bool {
_ => false
}
}
+
+pub fn unicode_plane(codepoint: char) -> u32 {
+ (codepoint as u32) >> 16
+}
+
+pub fn is_cjk(codepoint: char) -> bool {
+ if let Some(block) = codepoint.block() {
+ match block {
+ UnicodeBlock::CJKRadicalsSupplement |
+ UnicodeBlock::KangxiRadicals |
+ UnicodeBlock::IdeographicDescriptionCharacters |
+ UnicodeBlock::CJKSymbolsandPunctuation |
+ UnicodeBlock::Hiragana |
+ UnicodeBlock::Katakana |
+ UnicodeBlock::Bopomofo |
+ UnicodeBlock::HangulCompatibilityJamo |
+ UnicodeBlock::Kanbun |
+ UnicodeBlock::BopomofoExtended |
+ UnicodeBlock::CJKStrokes |
+ UnicodeBlock::KatakanaPhoneticExtensions |
+ UnicodeBlock::EnclosedCJKLettersandMonths |
+ UnicodeBlock::CJKCompatibility |
+ UnicodeBlock::CJKUnifiedIdeographsExtensionA |
+ UnicodeBlock::YijingHexagramSymbols |
+ UnicodeBlock::CJKUnifiedIdeographs |
+ UnicodeBlock::CJKCompatibilityIdeographs |
+ UnicodeBlock::CJKCompatibilityForms |
+ UnicodeBlock::HalfwidthandFullwidthForms => {
+ return true
+ }
+
+ _ => {}
+ }
+ }
+
+
+ // https://en.wikipedia.org/wiki/Plane_(Unicode)#Supplementary_Ideographic_Plane
+ unicode_plane(codepoint) == 2
+}