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/glyph_table.h" 20f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com#include "test/serialization_test.h" 21f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 22f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comnamespace sfntly { 23f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 24f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com// We spot check only glyph id 33. 256b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.comconst int32_t GLYPH33_OFFSET = 0xAC8; 26f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comconst int32_t GLYPH33_LENGTH = 40; 27f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comconst int32_t GLYPH33_XMIN = 92; 28f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comconst int32_t GLYPH33_YMIN = 20; 29f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comconst int32_t GLYPH33_XMAX = 797; 30f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comconst int32_t GLYPH33_YMAX = 1235; 31f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 32f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com// TODO(arthurhsu): Tuffy does not have composite glyphs. Need better testing. 33f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comstatic bool VerifyGLYF(Table* table) { 34f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com GlyphTablePtr glyf_table = down_cast<GlyphTable*>(table); 35f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com if (glyf_table == NULL) { 36f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com return false; 37f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com } 38f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 39f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com GlyphPtr glyf; 40f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com glyf.Attach(glyf_table->GetGlyph(GLYPH33_OFFSET, GLYPH33_LENGTH)); 41f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com if (glyf == NULL) { 42f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com return false; 43f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com } 44f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 45f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_EQ(glyf->XMin(), GLYPH33_XMIN); 46f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_EQ(glyf->YMin(), GLYPH33_YMIN); 47f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_EQ(glyf->XMax(), GLYPH33_XMAX); 48f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_EQ(glyf->YMax(), GLYPH33_YMAX); 49f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 50f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com return true; 51f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com} 52f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 53f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.combool VerifyGLYF(Table* original, Table* target) { 54f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_TRUE(VerifyGLYF(original)); 55f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com EXPECT_TRUE(VerifyGLYF(target)); 56f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com return true; 57f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com} 58f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com 59f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.com} // namespace sfntly 60