1d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org// Use of this source code is governed by a BSD-style license that can be 3d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org// found in the LICENSE file. 4d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org 5d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org#ifndef OTS_CFF_H_ 6d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org#define OTS_CFF_H_ 7d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org 8d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org#include "ots.h" 9d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org 106263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org#include <map> 11a4099a3bb81adafc5593090c1185ec82933a3d6eyusukes@chromium.org#include <string> 12edfb13039debb4b0d4c8305474a5540d9d3aab07yusukes@chromium.org#include <vector> 13a4099a3bb81adafc5593090c1185ec82933a3d6eyusukes@chromium.org 14d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.orgnamespace ots { 15d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org 166263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.orgstruct CFFIndex { 176263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org CFFIndex() 186263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org : count(0), off_size(0), offset_to_next(0) {} 196263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org uint16_t count; 206263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org uint8_t off_size; 216263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org std::vector<uint32_t> offsets; 226263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org uint32_t offset_to_next; 236263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org}; 246263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org 25d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.orgstruct OpenTypeCFF { 26d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org const uint8_t *data; 27d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org size_t length; 28a4099a3bb81adafc5593090c1185ec82933a3d6eyusukes@chromium.org // Name INDEX. This name is used in name.cc as a postscript font name. 29a4099a3bb81adafc5593090c1185ec82933a3d6eyusukes@chromium.org std::string name; 30edfb13039debb4b0d4c8305474a5540d9d3aab07yusukes@chromium.org 316263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org // The number of fonts the file has. 32edfb13039debb4b0d4c8305474a5540d9d3aab07yusukes@chromium.org size_t font_dict_length; 336263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org // A map from glyph # to font #. 346263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org std::map<uint16_t, uint8_t> fd_select; 356263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org 366263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org // A list of char strings. 376263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org std::vector<CFFIndex *> char_strings_array; 386263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org // A list of Local Subrs associated with FDArrays. Can be empty. 396263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org std::vector<CFFIndex *> local_subrs_per_font; 406263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org // A Local Subrs associated with Top DICT. Can be NULL. 416263d06109011f6cff761aed14ded117c8fa1836yusukes@chromium.org CFFIndex *local_subrs; 42d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org}; 43d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org 44d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org} // namespace ots 45d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org 46d257d186ae2a08042a412824678f98241a1a4f3cyusukes@chromium.org#endif // OTS_CFF_H_ 47