diff options
author | 2013-08-06 23:31:44 +0000 | |
---|---|---|
committer | 2013-08-06 23:31:44 +0000 | |
commit | 7ca6d2f0709d844f6afc601738b9453b3543d38b (patch) | |
tree | 272ed793ffbbb0294d80da2bc361ba3a3eb25935 /src/sfnt | |
parent | 990d85f02ba6efaf6f3d75262d7ed650edc8afd5 (diff) |
Reverting r10589: Add getFamilyNames to SkTypeface
git-svn-id: http://skia.googlecode.com/svn/trunk@10590 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/sfnt')
-rw-r--r-- | src/sfnt/SkOTTable_name.cpp | 27 | ||||
-rw-r--r-- | src/sfnt/SkOTTable_name.h | 6 | ||||
-rw-r--r-- | src/sfnt/SkOTUtils.cpp | 42 | ||||
-rw-r--r-- | src/sfnt/SkOTUtils.h | 52 |
4 files changed, 8 insertions, 119 deletions
diff --git a/src/sfnt/SkOTTable_name.cpp b/src/sfnt/SkOTTable_name.cpp index b536c0a115..e0440754ca 100644 --- a/src/sfnt/SkOTTable_name.cpp +++ b/src/sfnt/SkOTTable_name.cpp @@ -451,8 +451,6 @@ bool SkOTTableName::Iterator::next(SkOTTableName::Iterator::Record& record) { ++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); @@ -462,29 +460,20 @@ bool SkOTTableName::Iterator::next(SkOTTableName::Iterator::Record& record) { const char* nameString = SkTAddOffset<const char>(stringTable, nameOffset); switch (nameRecord->platformID.value) { case SkOTTableName::Record::PlatformID::Windows: - 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; - } + 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); case SkOTTableName::Record::PlatformID::Unicode: case SkOTTableName::Record::PlatformID::ISO: SkStringFromUTF16BE((const uint16_t*)nameString, nameLength, record.name); break; case SkOTTableName::Record::PlatformID::Macintosh: - // TODO: need better decoding, especially on Mac. - if (SkOTTableName::Record::EncodingID::Macintosh::Roman - != nameRecord->encodingID.macintosh.value) - { - record.name.reset(); - break; - } + SkASSERT(SkOTTableName::Record::EncodingID::Macintosh::Roman + == nameRecord->encodingID.macintosh.value); SkStringFromMacRoman((const uint8_t*)nameString, nameLength, record.name); break; diff --git a/src/sfnt/SkOTTable_name.h b/src/sfnt/SkOTTable_name.h index f3dae4085a..8dde1a4fc7 100644 --- a/src/sfnt/SkOTTable_name.h +++ b/src/sfnt/SkOTTable_name.h @@ -554,13 +554,7 @@ struct SkOTTableName { : fName(name), fIndex(0), fType(type) { } - void reset(SkOTTableName::Record::NameID::Predefined::Value type) { - fIndex = 0; - fType = type; - } - struct Record { - SK_OT_USHORT type; SkString name; SkString language; }; diff --git a/src/sfnt/SkOTUtils.cpp b/src/sfnt/SkOTUtils.cpp index 004a888310..c7716fffd5 100644 --- a/src/sfnt/SkOTUtils.cpp +++ b/src/sfnt/SkOTUtils.cpp @@ -159,45 +159,3 @@ SkData* SkOTUtils::RenameFont(SkStream* fontData, const char* fontName, int font return rewrittenFontData.detach(); } - - -SkOTUtils::LocalizedStrings_NameTable* -SkOTUtils::LocalizedStrings_NameTable::CreateForFamilyNames(const SkTypeface& typeface) { - static const SkFontTableTag nameTag = SkSetFourByteTag('n','a','m','e'); - size_t nameTableSize = typeface.getTableSize(nameTag); - if (0 == nameTableSize) { - return NULL; - } - SkAutoTDeleteArray<uint8_t> nameTableData(new uint8_t[nameTableSize]); - size_t copied = typeface.getTableData(nameTag, 0, nameTableSize, nameTableData.get()); - if (copied != nameTableSize) { - return NULL; - } - - return new SkOTUtils::LocalizedStrings_NameTable((SkOTTableName*)nameTableData.detach(), - SkOTUtils::LocalizedStrings_NameTable::familyNameTypes, - SK_ARRAY_COUNT(SkOTUtils::LocalizedStrings_NameTable::familyNameTypes)); -} - -bool SkOTUtils::LocalizedStrings_NameTable::next(SkTypeface::LocalizedString* localizedString) { - do { - SkOTTableName::Iterator::Record record; - if (fFamilyNameIter.next(record)) { - localizedString->fString = record.name; - localizedString->fLanguage = record.language; - return true; - } - if (fTypesCount == fTypesIndex + 1) { - return false; - } - ++fTypesIndex; - fFamilyNameIter.reset(fTypes[fTypesIndex]); - } while (true); -} - -SkOTTableName::Record::NameID::Predefined::Value -SkOTUtils::LocalizedStrings_NameTable::familyNameTypes[3] = { - SkOTTableName::Record::NameID::Predefined::FontFamilyName, - SkOTTableName::Record::NameID::Predefined::PreferredFamily, - SkOTTableName::Record::NameID::Predefined::WWSFamilyName, -}; diff --git a/src/sfnt/SkOTUtils.h b/src/sfnt/SkOTUtils.h index 4825fbeb2f..3c5ada25eb 100644 --- a/src/sfnt/SkOTUtils.h +++ b/src/sfnt/SkOTUtils.h @@ -9,9 +9,6 @@ #define SkOTUtils_DEFINED #include "SkOTTableTypes.h" -#include "SkOTTable_name.h" -#include "SkTypeface.h" - class SkData; class SkStream; @@ -35,55 +32,6 @@ struct SkOTUtils { * fontName and fontNameLen must be specified in terms of ASCII chars. */ static SkData* RenameFont(SkStream* fontData, const char* fontName, int fontNameLen); - - /** An implementation of LocalizedStrings which obtains it's data from a 'name' table. */ - class LocalizedStrings_NameTable : public SkTypeface::LocalizedStrings { - public: - /** Takes ownership of the nameTableData and will free it with SK_DELETE. */ - LocalizedStrings_NameTable(SkOTTableName* nameTableData, - SkOTTableName::Record::NameID::Predefined::Value types[], - int typesCount) - : fTypes(types), fTypesCount(typesCount), fTypesIndex(0) - , fNameTableData(nameTableData), fFamilyNameIter(*nameTableData, fTypes[fTypesIndex]) - { } - - /** Creates an iterator over all the family names in the 'name' table of a typeface. - * If no valid 'name' table can be found, returns NULL. - */ - static LocalizedStrings_NameTable* CreateForFamilyNames(const SkTypeface& typeface); - - virtual bool next(SkTypeface::LocalizedString* localizedString) SK_OVERRIDE; - private: - static SkOTTableName::Record::NameID::Predefined::Value familyNameTypes[3]; - - SkOTTableName::Record::NameID::Predefined::Value* fTypes; - int fTypesCount; - int fTypesIndex; - SkAutoTDeleteArray<SkOTTableName> fNameTableData; - SkOTTableName::Iterator fFamilyNameIter; - }; - - /** An implementation of LocalizedStrings which has one name. */ - class LocalizedStrings_SingleName : public SkTypeface::LocalizedStrings { - public: - LocalizedStrings_SingleName(SkString name, SkString language) - : fName(name), fLanguage(language), fHasNext(true) - { } - - virtual bool next(SkTypeface::LocalizedString* localizedString) SK_OVERRIDE { - localizedString->fString = fName; - localizedString->fLanguage = fLanguage; - - bool hadNext = fHasNext; - fHasNext = false; - return hadNext; - } - - private: - SkString fName; - SkString fLanguage; - bool fHasNext; - }; }; #endif |