summaryrefslogtreecommitdiffstats
path: root/libs/minikin/FontFamily.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/minikin/FontFamily.cpp')
-rw-r--r--libs/minikin/FontFamily.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/libs/minikin/FontFamily.cpp b/libs/minikin/FontFamily.cpp
index ad8120f..ab6ba20 100644
--- a/libs/minikin/FontFamily.cpp
+++ b/libs/minikin/FontFamily.cpp
@@ -34,7 +34,7 @@ namespace android {
FontLanguage::FontLanguage(const char* buf, size_t size) {
uint32_t bits = 0;
size_t i;
- for (i = 0; i < size && buf[i] != '-' && buf[i] != '_'; i++) {
+ for (i = 0; i < size; i++) {
uint16_t c = buf[i];
if (c == '-' || c == '_') break;
}
@@ -60,6 +60,28 @@ FontLanguage::FontLanguage(const char* buf, size_t size) {
mBits = bits;
}
+std::string FontLanguage::getString() const {
+ char buf[16];
+ size_t i = 0;
+ if (mBits & kBaseLangMask) {
+ buf[i++] = (mBits >> 8) & 0xFFu;
+ buf[i++] = mBits & 0xFFu;
+ }
+ if (mBits & kScriptMask) {
+ if (!i)
+ buf[i++] = 'x';
+ buf[i++] = '-';
+ buf[i++] = 'H';
+ buf[i++] = 'a';
+ buf[i++] = 'n';
+ if (mBits & kHansFlag)
+ buf[i++] = 's';
+ else
+ buf[i++] = 't';
+ }
+ return std::string(buf, i);
+}
+
int FontLanguage::match(const FontLanguage other) const {
int result = 0;
if ((mBits & kBaseLangMask) == (other.mBits & kBaseLangMask)) {