1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2013 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCommandLineFlags.h" 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkFontMgr.h" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkOTTable_name.h" 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkTypeface.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "Test.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include <stddef.h> 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robottemplate <size_t R, size_t D> struct Format0NameTable { 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName header; 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Record nameRecord[R]; 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot char data[D]; 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robottemplate <size_t R, size_t L, size_t D> struct Format1NameTable { 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName header; 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Record nameRecord[R]; 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Format1Ext header; 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Format1Ext::LangTagRecord langTagRecord[L]; 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } format1ext; 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot char data[D]; 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robottypedef Format0NameTable<1, 9> SimpleFormat0NameTable; 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSimpleFormat0NameTable simpleFormat0NameTable = { 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*header*/ { 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*format*/ SkOTTableName::format_0, 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*count*/ SkTEndianSwap16<1>::value, 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*stringOffset*/ SkTEndianSwap16<offsetof(SimpleFormat0NameTable, data)>::value, 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*nameRecord[]*/ { 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*Record*/ { 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*platformID*/ { SkOTTableName::Record::PlatformID::Windows }, 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*encodingID*/ { SkOTTableName::Record::EncodingID::Windows::UnicodeBMPUCS2 }, 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*languageID*/ { SkOTTableName::Record::LanguageID::Windows::English_UnitedStates }, 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*nameID*/ { SkOTTableName::Record::NameID::Predefined::FontFamilyName }, 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*length*/ SkTEndianSwap16<8>::value, 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*offset*/ SkTEndianSwap16<0>::value, 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*data*/ "\x0" "T" "\x0" "e" "\x0" "s" "\x0" "t", 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robottypedef Format1NameTable<1, 1, 19> SimpleFormat1NameTable; 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSimpleFormat1NameTable simpleFormat1NameTable = { 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*header*/ { 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*format*/ SkOTTableName::format_1, 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*count*/ SkTEndianSwap16<1>::value, 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*stringOffset*/ SkTEndianSwap16<offsetof(SimpleFormat1NameTable, data)>::value, 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*nameRecord[]*/ { 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*Record*/ { 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*platformID*/ { SkOTTableName::Record::PlatformID::Windows }, 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*encodingID*/ { SkOTTableName::Record::EncodingID::Windows::UnicodeBMPUCS2 }, 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*languageID*/ { SkTEndianSwap16<0x8000 + 0>::value }, 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*nameID*/ { SkOTTableName::Record::NameID::Predefined::FontFamilyName }, 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*length*/ SkTEndianSwap16<8>::value, 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*offset*/ SkTEndianSwap16<0>::value, 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*format1ext*/ { 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*header*/ { 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*langTagCount*/ SkTEndianSwap16<1>::value, 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*langTagRecord[]*/ { 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*LangTagRecord*/ { 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*length*/ SkTEndianSwap16<10>::value, 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*offset*/ SkTEndianSwap16<8>::value, 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /*data*/ "\x0" "T" "\x0" "e" "\x0" "s" "\x0" "t" 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot "\x0" "e" "\x0" "n" "\x0" "-" "\x0" "U" "\x0" "S", 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstruct FontNamesTest { 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName* data; 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Record::NameID nameID; 87fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot size_t nameCount; 88fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct { 89fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const char* name; 90fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const char* language; 91fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } names[10]; 92fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 93fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} test[] = { 94fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { 95fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot (SkOTTableName*)&simpleFormat0NameTable, 96fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { SkOTTableName::Record::NameID::Predefined::FontFamilyName }, 97fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 1, 98fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { 99fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { "Test", "en-US" }, 100fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 101fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 102fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { 103fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot (SkOTTableName*)&simpleFormat1NameTable, 104fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { SkOTTableName::Record::NameID::Predefined::FontFamilyName }, 105fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 1, 106fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { 107fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot { "Test", "en-US" }, 108fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 109fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }, 110fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 111fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 112fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic void test_synthetic(skiatest::Reporter* reporter, bool verbose) { 113fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (size_t i = 0; i < SK_ARRAY_COUNT(test); ++i) { 114fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Iterator iter(*test[i].data, test[i].nameID.predefined.value); 115fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Iterator::Record record; 116fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot size_t nameIndex = 0; 117fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot while (nameIndex < test[i].nameCount && iter.next(record)) { 118fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot REPORTER_ASSERT(reporter, 119fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot strcmp(test[i].names[nameIndex].name, record.name.c_str()) == 0, 120fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot "Name did not match."); 121fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 122fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot REPORTER_ASSERT(reporter, 123fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot strcmp(test[i].names[nameIndex].language, record.language.c_str()) == 0, 124fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot "Language did not match."); 125fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 126fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //printf("%s <%s>\n", record.name.c_str(), record.language.c_str()); 127fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 128fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ++nameIndex; 129fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 130fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 131fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot REPORTER_ASSERT(reporter, nameIndex == test[i].nameCount, "Fewer names than expected."); 132fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 133fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot REPORTER_ASSERT(reporter, !iter.next(record), "More names than expected."); 134fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 135fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 136fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 137fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define MAX_FAMILIES 1000 138fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic void test_systemfonts(skiatest::Reporter* reporter, bool verbose) { 139fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SkFontTableTag nameTag = SkSetFourByteTag('n','a','m','e'); 140fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 141fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault()); 142fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int count = SkMin32(fm->countFamilies(), MAX_FAMILIES); 143fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int i = 0; i < count; ++i) { 144fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkFontStyleSet> set(fm->createStyleSet(i)); 145fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int j = 0; j < set->count(); ++j) { 146fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString sname; 147fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFontStyle fs; 148fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot set->getStyle(j, &fs, &sname); 149fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 150fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkTypeface> typeface(set->createTypeface(j)); 151fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 152fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString familyName; 153fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typeface->getFamilyName(&familyName); 154fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (verbose) { 155fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugf("[%s]\n", familyName.c_str()); 156fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 157fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 158fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkTypeface::LocalizedStrings> familyNamesIter( 159fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typeface->createFamilyNameIterator()); 160fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkTypeface::LocalizedString familyNameLocalized; 161fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot while (familyNamesIter->next(&familyNameLocalized)) { 162fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (verbose) { 163fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugf("(%s) <%s>\n", familyNameLocalized.fString.c_str(), 164fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot familyNameLocalized.fLanguage.c_str()); 165fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 166fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 167fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 168fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot size_t nameTableSize = typeface->getTableSize(nameTag); 169fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (0 == nameTableSize) { 170fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot continue; 171fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 172fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkAutoTMalloc<uint8_t> nameTableData(nameTableSize); 173fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot size_t copied = typeface->getTableData(nameTag, 0, nameTableSize, nameTableData.get()); 174fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (copied != nameTableSize) { 175fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot continue; 176fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 177fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 178fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Iterator::Record record; 179fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Iterator familyNameIter(*((SkOTTableName*)nameTableData.get()), 180fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Record::NameID::Predefined::FontFamilyName); 181fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot while (familyNameIter.next(record)) { 182fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot REPORTER_ASSERT( 183fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot reporter, 184fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Record::NameID::Predefined::FontFamilyName == record.type, 185fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot "Requested family name, got something else."); 186fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (verbose) { 187fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugf("{%s} <%s>\n", record.name.c_str(), record.language.c_str()); 188fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 189fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 190fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 191fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Iterator styleNameIter(*((SkOTTableName*)nameTableData.get()), 192fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Record::NameID::Predefined::FontSubfamilyName); 193fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot while (styleNameIter.next(record)) { 194fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot REPORTER_ASSERT( 195fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot reporter, 196fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOTTableName::Record::NameID::Predefined::FontSubfamilyName == record.type, 197fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot "Requested subfamily name, got something else."); 198fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (verbose) { 199fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugf("{{%s}} <%s>\n", record.name.c_str(), record.language.c_str()); 200fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 201fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 202fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 203fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (verbose) { 204fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugf("\n"); 205fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 206fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 207fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 208fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 209fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 210fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDEFINE_bool(verboseFontNames, false, "verbose FontNames test."); 211fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 212fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDEF_TEST(FontNames, reporter) { 213fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot test_synthetic(reporter, FLAGS_verboseFontNames); 214fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot test_systemfonts(reporter, FLAGS_verboseFontNames); 215fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 216