diff options
Diffstat (limited to 'libs/minikin/FontFamily.cpp')
-rw-r--r-- | libs/minikin/FontFamily.cpp | 24 |
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)) { |