1f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com/* 2f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * Copyright 2011 Google Inc. All Rights Reserved. 3f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * 4f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * Licensed under the Apache License, Version 2.0 (the "License"); 5f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * you may not use this file except in compliance with the License. 6f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * You may obtain a copy of the License at 7f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * 8f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * http://www.apache.org/licenses/LICENSE-2.0 9f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * 10f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * Unless required by applicable law or agreed to in writing, software 11f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * distributed under the License is distributed on an "AS IS" BASIS, 12f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * See the License for the specific language governing permissions and 14f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com * limitations under the License. 15f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com */ 16f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 17f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com#include "gtest/gtest.h" 18f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com#include "sfntly/font.h" 195af34fd773f8cfee82321393504f558ddf67c628arthurhsu@google.com#include "sfntly/table/truetype/loca_table.h" 20f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com#include "test/serialization_test.h" 21f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 22f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comnamespace sfntly { 23f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 246b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.comconst int32_t LOCA_NUM_LOCAS = 1503; 25f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comconst int32_t LOCAS[] = { 26f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 0x00000, // 0 276b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x00058, // 1 286b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x00058, // 2 296b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x00058, // 3 306b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x00058, // 4 316b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x000B8, // 5 326b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x00138, // 6 336b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x001A4, // 7 346b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x0025C, // 8 356b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x00328, // 9 366b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0x003B8, // 10 37f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com}; 386b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.comconst int32_t NUM_TEST_LOCAS = 11; 39f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 40f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comstatic bool VerifyLOCA(Table* table) { 41f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com LocaTablePtr loca = down_cast<LocaTable*>(table); 42f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com if (loca == NULL) { 43f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com return false; 44f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com } 45f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 46f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_EQ(loca->NumLocas(), LOCA_NUM_LOCAS); 47b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com EXPECT_EQ(loca->num_glyphs(), LOCA_NUM_LOCAS - 1); 48f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 496b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com for (int32_t i = 0; i < NUM_TEST_LOCAS - 1; ++i) { 50f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_EQ(loca->GlyphOffset(i), LOCAS[i]); 51f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_EQ(loca->GlyphLength(i), LOCAS[i + 1] - LOCAS[i]); 52f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com } 53f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com return true; 54f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com} 55f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 56f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.combool VerifyLOCA(Table* original, Table* target) { 57f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_TRUE(VerifyLOCA(original)); 58f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_TRUE(VerifyLOCA(target)); 59f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com return true; 60f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com} 61f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 62f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com} // namespace sfntly 63