1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2012 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SkOTTable_OS_2_V0_DEFINED 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SkOTTable_OS_2_V0_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkEndian.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkIBMFamilyClass.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkOTTableTypes.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPanose.h" 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#pragma pack(push, 1) 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstruct SkOTTableOS2_V0 { 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT version; 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //SkOTTableOS2_VA::VERSION and SkOTTableOS2_V0::VERSION are both 0. 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //The only way to differentiate these two versions is by the size of the table. 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(0); 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT xAvgCharWidth; 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct WeightClass { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot enum Value : SK_OT_USHORT { 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Thin = SkTEndian_SwapBE16(100), 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ExtraLight = SkTEndian_SwapBE16(200), 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Light = SkTEndian_SwapBE16(300), 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Normal = SkTEndian_SwapBE16(400), 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Medium = SkTEndian_SwapBE16(500), 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SemiBold = SkTEndian_SwapBE16(600), 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Bold = SkTEndian_SwapBE16(700), 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ExtraBold = SkTEndian_SwapBE16(800), 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Black = SkTEndian_SwapBE16(900), 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }; 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT value; 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } usWeightClass; 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct WidthClass { 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot enum Value : SK_OT_USHORT { 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot UltraCondensed = SkTEndian_SwapBE16(1), 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ExtraCondensed = SkTEndian_SwapBE16(2), 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Condensed = SkTEndian_SwapBE16(3), 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SemiCondensed = SkTEndian_SwapBE16(4), 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Medium = SkTEndian_SwapBE16(5), 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SemiExpanded = SkTEndian_SwapBE16(6), 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Expanded = SkTEndian_SwapBE16(7), 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ExtraExpanded = SkTEndian_SwapBE16(8), 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot UltraExpanded = SkTEndian_SwapBE16(9), 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } value; 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } usWidthClass; 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot union Type { 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct Field { 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //8-15 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_BYTE_BITFIELD( 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved08, 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved09, 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved10, 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved11, 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved12, 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved13, 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved14, 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved15) 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //0-7 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_BYTE_BITFIELD( 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved00, 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Restricted, 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot PreviewPrint, 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Editable, 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved04, 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved05, 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved06, 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved07) 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } field; 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct Raw { 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT Installable = 0; 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT RestrictedMask = SkOTSetUSHORTBit<1>::value; 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT PreviewPrintMask = SkOTSetUSHORTBit<2>::value; 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT EditableMask = SkOTSetUSHORTBit<3>::value; 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT value; 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } raw; 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } fsType; 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySubscriptXSize; 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySubscriptYSize; 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySubscriptXOffset; 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySubscriptYOffset; 87fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySuperscriptXSize; 88fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySuperscriptYSize; 89fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySuperscriptXOffset; 90fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT ySuperscriptYOffset; 91fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT yStrikeoutSize; 92fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT yStrikeoutPosition; 93fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkIBMFamilyClass sFamilyClass; 94fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPanose panose; 95fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_ULONG ulCharRange[4]; 96fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_CHAR achVendID[4]; 97fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot union Selection { 98fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct Field { 99fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //8-15 100fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_BYTE_BITFIELD( 101fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved08, 102fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved09, 103fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved10, 104fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved11, 105fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved12, 106fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved13, 107fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved14, 108fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved15) 109fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //0-7 110fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_BYTE_BITFIELD( 111fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Italic, 112fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Underscore, 113fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Negative, 114fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Outlined, 115fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Strikeout, 116fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Bold, 117fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Regular, 118fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Reserved07) 119fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } field; 120fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct Raw { 121fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value; 122fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value; 123fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value; 124fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value; 125fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value; 126fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value; 127fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value; 128fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT value; 129fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } raw; 130fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } fsSelection; 131fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT usFirstCharIndex; 132fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT usLastCharIndex; 133fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //version0 134fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT sTypoAscender; 135fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT sTypoDescender; 136fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_SHORT sTypoLineGap; 137fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT usWinAscent; 138fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_OT_USHORT usWinDescent; 139fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 140fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 141fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#pragma pack(pop) 142fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 143fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 144fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic_assert(sizeof(SkOTTableOS2_V0) == 78, "sizeof_SkOTTableOS2_V0_not_78"); 145fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 146fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 147