| Index: tests/FontHostTest.cpp
|
| ===================================================================
|
| --- tests/FontHostTest.cpp (revision 10083)
|
| +++ tests/FontHostTest.cpp (working copy)
|
| @@ -29,20 +29,18 @@
|
| };
|
|
|
| // Test that getUnitsPerEm() agrees with a direct lookup in the 'head' table
|
| -// (if that table is available.
|
| +// (if that table is available).
|
| static void test_unitsPerEm(skiatest::Reporter* reporter, SkTypeface* face) {
|
| - int nativeUPEM = face->getUnitsPerEm();;
|
| + int nativeUPEM = face->getUnitsPerEm();
|
|
|
| int tableUPEM = -1;
|
| size_t size = face->getTableSize(kFontTableTag_head);
|
| if (size) {
|
| - SkAutoMalloc storage(size);
|
| - char* ptr = (char*)storage.get();
|
| - face->getTableData(kFontTableTag_head, 0, size, ptr);
|
| // unitsPerEm is at offset 18 into the 'head' table.
|
| - tableUPEM = SkEndian_SwapBE16(*(uint16_t*)&ptr[18]);
|
| + uint16_t rawUPEM;
|
| + face->getTableData(kFontTableTag_head, 18, sizeof(rawUPEM), &rawUPEM);
|
| + tableUPEM = SkEndian_SwapBE16(rawUPEM);
|
| }
|
| -// SkDebugf("--- typeface returned %d upem [%X]\n", nativeUPEM, face->uniqueID());
|
|
|
| if (tableUPEM >= 0) {
|
| REPORTER_ASSERT(reporter, tableUPEM == nativeUPEM);
|
| @@ -52,6 +50,28 @@
|
| }
|
| }
|
|
|
| +// Test that countGlyphs() agrees with a direct lookup in the 'maxp' table
|
| +// (if that table is available).
|
| +static void test_countGlyphs(skiatest::Reporter* reporter, SkTypeface* face) {
|
| + int nativeGlyphs = face->countGlyphs();
|
| +
|
| + int tableGlyphs = -1;
|
| + size_t size = face->getTableSize(kFontTableTag_maxp);
|
| + if (size) {
|
| + // glyphs is at offset 4 into the 'maxp' table.
|
| + uint16_t rawGlyphs;
|
| + face->getTableData(kFontTableTag_maxp, 4, sizeof(rawGlyphs), &rawGlyphs);
|
| + tableGlyphs = SkEndian_SwapBE16(rawGlyphs);
|
| + }
|
| +
|
| + if (tableGlyphs >= 0) {
|
| + REPORTER_ASSERT(reporter, tableGlyphs == nativeGlyphs);
|
| + } else {
|
| + // not sure this is a bug, but lets report it for now as info.
|
| + SkDebugf("--- typeface returned 0 glyphs [%X]\n", face->uniqueID());
|
| + }
|
| +}
|
| +
|
| static void test_fontstream(skiatest::Reporter* reporter,
|
| SkStream* stream, int ttcIndex) {
|
| int n = SkFontStream::GetTableTags(stream, ttcIndex, NULL);
|
| @@ -157,6 +177,7 @@
|
| #endif
|
| test_tables(reporter, face);
|
| test_unitsPerEm(reporter, face);
|
| + test_countGlyphs(reporter, face);
|
| face->unref();
|
| }
|
| }
|
|
|