107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com/*
207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com * Copyright 2013 Google Inc.
307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com *
407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com * Use of this source code is governed by a BSD-style license that can be
507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com * found in the LICENSE file.
607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com */
707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
8a980269c2498836101146adc729ef780fb89824ebungeman@google.com#include "SkCommandLineFlags.h"
9a980269c2498836101146adc729ef780fb89824ebungeman@google.com#include "SkFontMgr.h"
1007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com#include "SkOTTable_name.h"
1107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com#include "SkTypeface.h"
128f6884aab8aecd7657cf3f9cdbc682f0deca29c5tfarina@chromium.org#include "Test.h"
1307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com#include <stddef.h>
1507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comtemplate <size_t R, size_t D> struct Format0NameTable {
1707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    SkOTTableName header;
1807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    SkOTTableName::Record nameRecord[R];
1907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    char data[D];
2007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com};
2107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
2207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comtemplate <size_t R, size_t L, size_t D> struct Format1NameTable {
2307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    SkOTTableName header;
2407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    SkOTTableName::Record nameRecord[R];
2507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    struct {
2607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        SkOTTableName::Format1Ext header;
2707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        SkOTTableName::Format1Ext::LangTagRecord langTagRecord[L];
2807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    } format1ext;
2907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    char data[D];
3007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com};
3107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
3207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comtypedef Format0NameTable<1, 9> SimpleFormat0NameTable;
3307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comSimpleFormat0NameTable simpleFormat0NameTable = {
3407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /*header*/ {
3507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*format*/ SkOTTableName::format_0,
3607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*count*/ SkTEndianSwap16<1>::value,
3707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*stringOffset*/ SkTEndianSwap16<offsetof(SimpleFormat0NameTable, data)>::value,
3807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    },
3907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /*nameRecord[]*/ {
4007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*Record*/ {
4107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*platformID*/ { SkOTTableName::Record::PlatformID::Windows },
4207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*encodingID*/ { SkOTTableName::Record::EncodingID::Windows::UnicodeBMPUCS2 },
4307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*languageID*/ { SkOTTableName::Record::LanguageID::Windows::English_UnitedStates },
4407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*nameID*/ { SkOTTableName::Record::NameID::Predefined::FontFamilyName },
4507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*length*/ SkTEndianSwap16<8>::value,
4607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*offset*/ SkTEndianSwap16<0>::value,
4707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        }
4807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    },
4907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /*data*/ "\x0" "T" "\x0" "e" "\x0" "s" "\x0" "t",
5007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com};
5107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
5207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comtypedef Format1NameTable<1, 1, 19> SimpleFormat1NameTable;
5307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comSimpleFormat1NameTable simpleFormat1NameTable = {
5407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /*header*/ {
5507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*format*/ SkOTTableName::format_1,
5607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*count*/ SkTEndianSwap16<1>::value,
5707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*stringOffset*/ SkTEndianSwap16<offsetof(SimpleFormat1NameTable, data)>::value,
5807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    },
5907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /*nameRecord[]*/ {
6007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*Record*/ {
6107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*platformID*/ { SkOTTableName::Record::PlatformID::Windows },
6207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*encodingID*/ { SkOTTableName::Record::EncodingID::Windows::UnicodeBMPUCS2 },
6307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*languageID*/ { SkTEndianSwap16<0x8000 + 0>::value },
6407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*nameID*/ { SkOTTableName::Record::NameID::Predefined::FontFamilyName },
6507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*length*/ SkTEndianSwap16<8>::value,
6607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*offset*/ SkTEndianSwap16<0>::value,
6707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        }
6807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    },
6907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /*format1ext*/ {
7007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*header*/ {
7107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*langTagCount*/ SkTEndianSwap16<1>::value,
7207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        },
7307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /*langTagRecord[]*/ {
7407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /*LangTagRecord*/ {
7507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com                /*length*/ SkTEndianSwap16<10>::value,
7607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com                /*offset*/ SkTEndianSwap16<8>::value,
7707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            },
7807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        },
7907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    },
8007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /*data*/ "\x0" "T" "\x0" "e" "\x0" "s" "\x0" "t"
8107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             "\x0" "e" "\x0" "n" "\x0" "-" "\x0" "U" "\x0" "S",
8207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com};
8307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
8407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comstruct FontNamesTest {
8507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    SkOTTableName* data;
8607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    SkOTTableName::Record::NameID nameID;
8707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    size_t nameCount;
8807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    struct {
8907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        const char* name;
9007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        const char* language;
9107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    } names[10];
9207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
9307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com} test[] = {
9407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    {
9507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        (SkOTTableName*)&simpleFormat0NameTable,
9607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        { SkOTTableName::Record::NameID::Predefined::FontFamilyName },
9707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        1,
9807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        {
9907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            { "Test", "en-US" },
10007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        },
10107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    },
10207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    {
10307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        (SkOTTableName*)&simpleFormat1NameTable,
10407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        { SkOTTableName::Record::NameID::Predefined::FontFamilyName },
10507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        1,
10607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        {
10707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            { "Test", "en-US" },
10807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        },
10907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    },
11007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com};
11107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
112a980269c2498836101146adc729ef780fb89824ebungeman@google.comstatic void test_synthetic(skiatest::Reporter* reporter, bool verbose) {
11307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    for (size_t i = 0; i < SK_ARRAY_COUNT(test); ++i) {
11407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        SkOTTableName::Iterator iter(*test[i].data, test[i].nameID.predefined.value);
11507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        SkOTTableName::Iterator::Record record;
11607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        size_t nameIndex = 0;
11707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        while (nameIndex < test[i].nameCount && iter.next(record)) {
1181c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon            REPORTER_ASSERT(reporter,
1191c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                            strcmp(test[i].names[nameIndex].name, record.name.c_str()) == 0,
1201c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                            "Name did not match.");
12107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1221c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon            REPORTER_ASSERT(reporter,
1231c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                            strcmp(test[i].names[nameIndex].language, record.language.c_str()) == 0,
1241c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                            "Language did not match.");
12507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
12607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            //printf("%s <%s>\n", record.name.c_str(), record.language.c_str());
12707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
12807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            ++nameIndex;
12907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        }
13007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1311c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon        REPORTER_ASSERT(reporter, nameIndex == test[i].nameCount, "Fewer names than expected.");
13207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1331c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon        REPORTER_ASSERT(reporter, !iter.next(record), "More names than expected.");
13407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    }
13507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com}
13607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
137a980269c2498836101146adc729ef780fb89824ebungeman@google.com#define MAX_FAMILIES 1000
138a980269c2498836101146adc729ef780fb89824ebungeman@google.comstatic void test_systemfonts(skiatest::Reporter* reporter, bool verbose) {
139a980269c2498836101146adc729ef780fb89824ebungeman@google.com    static const SkFontTableTag nameTag = SkSetFourByteTag('n','a','m','e');
140a980269c2498836101146adc729ef780fb89824ebungeman@google.com
141342b7acc46550af5fbefc6f9313231ede11ed692Hal Canary    sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
142a980269c2498836101146adc729ef780fb89824ebungeman@google.com    int count = SkMin32(fm->countFamilies(), MAX_FAMILIES);
143a980269c2498836101146adc729ef780fb89824ebungeman@google.com    for (int i = 0; i < count; ++i) {
144342b7acc46550af5fbefc6f9313231ede11ed692Hal Canary        sk_sp<SkFontStyleSet> set(fm->createStyleSet(i));
145a980269c2498836101146adc729ef780fb89824ebungeman@google.com        for (int j = 0; j < set->count(); ++j) {
146a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkString sname;
147a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkFontStyle fs;
148a980269c2498836101146adc729ef780fb89824ebungeman@google.com            set->getStyle(j, &fs, &sname);
149a980269c2498836101146adc729ef780fb89824ebungeman@google.com
150342b7acc46550af5fbefc6f9313231ede11ed692Hal Canary            sk_sp<SkTypeface> typeface(set->createTypeface(j));
151a980269c2498836101146adc729ef780fb89824ebungeman@google.com
152a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkString familyName;
153a980269c2498836101146adc729ef780fb89824ebungeman@google.com            typeface->getFamilyName(&familyName);
154a980269c2498836101146adc729ef780fb89824ebungeman@google.com            if (verbose) {
155fab44db294846ff05d837b9cf0bf97a073891da7bungeman@google.com                SkDebugf("[%s]\n", familyName.c_str());
156a980269c2498836101146adc729ef780fb89824ebungeman@google.com            }
157a980269c2498836101146adc729ef780fb89824ebungeman@google.com
158342b7acc46550af5fbefc6f9313231ede11ed692Hal Canary            sk_sp<SkTypeface::LocalizedStrings> familyNamesIter(
159839702b61934914118ec557dd641be322eba3b5fbungeman@google.com                typeface->createFamilyNameIterator());
160a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkTypeface::LocalizedString familyNameLocalized;
161a980269c2498836101146adc729ef780fb89824ebungeman@google.com            while (familyNamesIter->next(&familyNameLocalized)) {
162a980269c2498836101146adc729ef780fb89824ebungeman@google.com                if (verbose) {
163fab44db294846ff05d837b9cf0bf97a073891da7bungeman@google.com                    SkDebugf("(%s) <%s>\n", familyNameLocalized.fString.c_str(),
164a6785ccb540b1b752ab536cdf579a698eadbf7d2bungeman                                            familyNameLocalized.fLanguage.c_str());
165a980269c2498836101146adc729ef780fb89824ebungeman@google.com                }
166a980269c2498836101146adc729ef780fb89824ebungeman@google.com            }
167a980269c2498836101146adc729ef780fb89824ebungeman@google.com
168a980269c2498836101146adc729ef780fb89824ebungeman@google.com            size_t nameTableSize = typeface->getTableSize(nameTag);
169a980269c2498836101146adc729ef780fb89824ebungeman@google.com            if (0 == nameTableSize) {
170a980269c2498836101146adc729ef780fb89824ebungeman@google.com                continue;
171a980269c2498836101146adc729ef780fb89824ebungeman@google.com            }
172a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkAutoTMalloc<uint8_t> nameTableData(nameTableSize);
173a980269c2498836101146adc729ef780fb89824ebungeman@google.com            size_t copied = typeface->getTableData(nameTag, 0, nameTableSize, nameTableData.get());
174a980269c2498836101146adc729ef780fb89824ebungeman@google.com            if (copied != nameTableSize) {
175a980269c2498836101146adc729ef780fb89824ebungeman@google.com                continue;
176a980269c2498836101146adc729ef780fb89824ebungeman@google.com            }
177a980269c2498836101146adc729ef780fb89824ebungeman@google.com
178a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkOTTableName::Iterator::Record record;
179a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkOTTableName::Iterator familyNameIter(*((SkOTTableName*)nameTableData.get()),
180a980269c2498836101146adc729ef780fb89824ebungeman@google.com                SkOTTableName::Record::NameID::Predefined::FontFamilyName);
181a980269c2498836101146adc729ef780fb89824ebungeman@google.com            while (familyNameIter.next(record)) {
1821c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                REPORTER_ASSERT(
1831c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                        reporter,
1841c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                        SkOTTableName::Record::NameID::Predefined::FontFamilyName == record.type,
1851c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                        "Requested family name, got something else.");
186a980269c2498836101146adc729ef780fb89824ebungeman@google.com                if (verbose) {
187fab44db294846ff05d837b9cf0bf97a073891da7bungeman@google.com                    SkDebugf("{%s} <%s>\n", record.name.c_str(), record.language.c_str());
188a980269c2498836101146adc729ef780fb89824ebungeman@google.com                }
189a980269c2498836101146adc729ef780fb89824ebungeman@google.com            }
190a980269c2498836101146adc729ef780fb89824ebungeman@google.com
191a980269c2498836101146adc729ef780fb89824ebungeman@google.com            SkOTTableName::Iterator styleNameIter(*((SkOTTableName*)nameTableData.get()),
192a980269c2498836101146adc729ef780fb89824ebungeman@google.com                SkOTTableName::Record::NameID::Predefined::FontSubfamilyName);
193a980269c2498836101146adc729ef780fb89824ebungeman@google.com            while (styleNameIter.next(record)) {
1941c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                REPORTER_ASSERT(
1951c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                        reporter,
1961c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                        SkOTTableName::Record::NameID::Predefined::FontSubfamilyName == record.type,
1971c80e99dd5b23ebc3f10c768857a21887ab9f090Brian Salomon                        "Requested subfamily name, got something else.");
198a980269c2498836101146adc729ef780fb89824ebungeman@google.com                if (verbose) {
199fab44db294846ff05d837b9cf0bf97a073891da7bungeman@google.com                    SkDebugf("{{%s}} <%s>\n", record.name.c_str(), record.language.c_str());
200a980269c2498836101146adc729ef780fb89824ebungeman@google.com                }
201a980269c2498836101146adc729ef780fb89824ebungeman@google.com            }
202a980269c2498836101146adc729ef780fb89824ebungeman@google.com
203a980269c2498836101146adc729ef780fb89824ebungeman@google.com            if (verbose) {
204fab44db294846ff05d837b9cf0bf97a073891da7bungeman@google.com                SkDebugf("\n");
205a980269c2498836101146adc729ef780fb89824ebungeman@google.com            }
206a980269c2498836101146adc729ef780fb89824ebungeman@google.com        }
207a980269c2498836101146adc729ef780fb89824ebungeman@google.com    }
208a980269c2498836101146adc729ef780fb89824ebungeman@google.com}
209a980269c2498836101146adc729ef780fb89824ebungeman@google.com
210a980269c2498836101146adc729ef780fb89824ebungeman@google.comDEFINE_bool(verboseFontNames, false, "verbose FontNames test.");
211a980269c2498836101146adc729ef780fb89824ebungeman@google.com
212e4fafb146e85cdfcf9d5418597b6818aa0754adatfarina@chromium.orgDEF_TEST(FontNames, reporter) {
213a980269c2498836101146adc729ef780fb89824ebungeman@google.com    test_synthetic(reporter, FLAGS_verboseFontNames);
214a980269c2498836101146adc729ef780fb89824ebungeman@google.com    test_systemfonts(reporter, FLAGS_verboseFontNames);
215a980269c2498836101146adc729ef780fb89824ebungeman@google.com}
216