Add getFamilyNames to SkTypeface.
Committed: https://code.google.com/p/skia/source/detail?r=10589
Review URL: https://codereview.chromium.org/21716005
git-svn-id: http://skia.googlecode.com/svn/trunk@10592 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/sfnt/SkOTTable_name.cpp b/src/sfnt/SkOTTable_name.cpp
index e044075..b536c0a 100644
--- a/src/sfnt/SkOTTable_name.cpp
+++ b/src/sfnt/SkOTTable_name.cpp
@@ -451,6 +451,8 @@
++fIndex;
} while (fType != -1 && nameRecord->nameID.fontSpecific != fType);
+ record.type = nameRecord->nameID.fontSpecific;
+
const uint16_t stringTableOffset = SkEndian_SwapBE16(fName.stringOffset);
const char* stringTable = SkTAddOffset<const char>(&fName, stringTableOffset);
@@ -460,20 +462,29 @@
const char* nameString = SkTAddOffset<const char>(stringTable, nameOffset);
switch (nameRecord->platformID.value) {
case SkOTTableName::Record::PlatformID::Windows:
- SkASSERT(SkOTTableName::Record::EncodingID::Windows::UnicodeBMPUCS2
- == nameRecord->encodingID.windows.value
- || SkOTTableName::Record::EncodingID::Windows::UnicodeUCS4
- == nameRecord->encodingID.windows.value
- || SkOTTableName::Record::EncodingID::Windows::Symbol
- == nameRecord->encodingID.windows.value);
+ if (SkOTTableName::Record::EncodingID::Windows::UnicodeBMPUCS2
+ != nameRecord->encodingID.windows.value
+ && SkOTTableName::Record::EncodingID::Windows::UnicodeUCS4
+ != nameRecord->encodingID.windows.value
+ && SkOTTableName::Record::EncodingID::Windows::Symbol
+ != nameRecord->encodingID.windows.value)
+ {
+ record.name.reset();
+ break;
+ }
case SkOTTableName::Record::PlatformID::Unicode:
case SkOTTableName::Record::PlatformID::ISO:
SkStringFromUTF16BE((const uint16_t*)nameString, nameLength, record.name);
break;
case SkOTTableName::Record::PlatformID::Macintosh:
- SkASSERT(SkOTTableName::Record::EncodingID::Macintosh::Roman
- == nameRecord->encodingID.macintosh.value);
+ // TODO: need better decoding, especially on Mac.
+ if (SkOTTableName::Record::EncodingID::Macintosh::Roman
+ != nameRecord->encodingID.macintosh.value)
+ {
+ record.name.reset();
+ break;
+ }
SkStringFromMacRoman((const uint8_t*)nameString, nameLength, record.name);
break;