1464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com/* 2464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * Copyright 2011 Google Inc. All Rights Reserved. 3464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * 4464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * Licensed under the Apache License, Version 2.0 (the "License"); 5464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * you may not use this file except in compliance with the License. 6464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * You may obtain a copy of the License at 7464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * 8464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * http://www.apache.org/licenses/LICENSE-2.0 9464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * 10464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * Unless required by applicable law or agreed to in writing, software 11464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * distributed under the License is distributed on an "AS IS" BASIS, 12464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * See the License for the specific language governing permissions and 14464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * limitations under the License. 15464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com */ 16464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 175af34fd773f8cfee82321393504f558ddf67c628arthurhsu@google.com#include "sfntly/table/core/os2_table.h" 18464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 198f090032dd4f8f8908f338cc73bb840b788377f2stuartg@google.com#include <algorithm> 208f090032dd4f8f8908f338cc73bb840b788377f2stuartg@google.com 21464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comnamespace sfntly { 22464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com/****************************************************************************** 23464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * Constants 24464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ******************************************************************************/ 25464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kLatin1_1252 = (int64_t)1 << 0; 26464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kLatin2_1250 = (int64_t)1 << (int64_t)1; 27464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kCyrillic_1251 = (int64_t)1 << 2; 28464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kGreek_1253 = (int64_t)1 << 3; 29464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kTurkish_1254 = (int64_t)1 << 4; 30464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kHebrew_1255 = (int64_t)1 << 5; 31464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kArabic_1256 = (int64_t)1 << 6; 32464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kWindowsBaltic_1257 = (int64_t)1 << 7; 33464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kVietnamese_1258 = (int64_t)1 << 8; 34464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI9 = (int64_t)1 << 9; 35464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI10 = (int64_t)1 << 10; 36464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI11 = (int64_t)1 << 11; 37464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI12 = (int64_t)1 << 12; 38464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI13 = (int64_t)1 << 13; 39464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI14 = (int64_t)1 << 14; 40464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI15 = (int64_t)1 << 15; 41464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kThai_874 = (int64_t)1 << 16; 42464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kJapanJIS_932 = (int64_t)1 << 17; 43464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kChineseSimplified_936 = (int64_t)1 << 18; 44464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kKoreanWansung_949 = (int64_t)1 << 19; 45464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kChineseTraditional_950 = (int64_t)1 << 20; 46464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kKoreanJohab_1361 = (int64_t)1 << 21; 47464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI22 = (int64_t)1 << 22; 48464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI23 = (int64_t)1 << 23; 49464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI24 = (int64_t)1 << 24; 50464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI25 = (int64_t)1 << 25; 51464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI26 = (int64_t)1 << 26; 52464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI27 = (int64_t)1 << 27; 53464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kAlternateANSI28 = (int64_t)1 << 28; 54464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kMacintoshCharacterSet = (int64_t)1 << 29; 55464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kOEMCharacterSet = (int64_t)1 << 30; 56464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kSymbolCharacterSet = (int64_t)1 << 31; 57464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM32 = (int64_t)1 << 32; 58464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM33 = (int64_t)1 << 33; 59464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM34 = (int64_t)1 << 34; 60464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM35 = (int64_t)1 << 35; 61464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM36 = (int64_t)1 << 36; 62464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM37 = (int64_t)1 << 37; 63464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM38 = (int64_t)1 << 38; 64464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM39 = (int64_t)1 << 39; 65464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM40 = (int64_t)1 << 40; 66464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM41 = (int64_t)1 << 41; 67464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM42 = (int64_t)1 << 42; 68464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM43 = (int64_t)1 << 43; 69464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM44 = (int64_t)1 << 44; 70464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM45 = (int64_t)1 << 45; 71464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM46 = (int64_t)1 << 46; 72464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kReservedForOEM47 = (int64_t)1 << 47; 73464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kIBMGreek_869 = (int64_t)1 << 48; 74464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kMSDOSRussion_866 = (int64_t)1 << 49; 75464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kMSDOSNordic_865 = (int64_t)1 << 50; 76464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kArabic_864 = (int64_t)1 << 51; 77464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kMSDOSCanadianFrench_863 = (int64_t)1 << 52; 78464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kHebrew_862 = (int64_t)1 << 53; 79464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kMSDOSIcelandic_861 = (int64_t)1 << 54; 80464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kMSDOSPortugese_860 = (int64_t)1 << 55; 81464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kIBMTurkish_857 = (int64_t)1 << 56; 82464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kIBMCyrillic_855 = (int64_t)1 << 57; 83464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kLatin2_852 = (int64_t)1 << 58; 84464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kMSDOSBaltic_775 = (int64_t)1 << 59; 85464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kGreek_737 = (int64_t)1 << 60; 86464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kArabic_708 = (int64_t)1 << 61; 87464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kLatin1_850 = (int64_t)1 << 62; 88464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst int64_t CodePageRange::kUS_437 = (int64_t)1 << 63; 89464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 90464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com/****************************************************************************** 91464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * struct UnicodeRange 92464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ******************************************************************************/ 93464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comint32_t UnicodeRange::range(int32_t bit) { 94464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com if (bit < 0 || bit > kLast) { 95464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com return -1; 96464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com } 97464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com return bit; 98464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 99464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 100464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com/****************************************************************************** 101464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * class OS2Table 102464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ******************************************************************************/ 103464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comOS2Table::~OS2Table() {} 104464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 105b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::TableVersion() { 106246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kVersion); 107464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 108464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 109246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::XAvgCharWidth() { 110246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kXAvgCharWidth); 111464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 112464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 113246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsWeightClass() { 114246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsWeightClass); 115464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 116464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 117246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsWidthClass() { 118246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsWidthClass); 119464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 120464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 121246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::FsType() { 122246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kFsType); 123464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 124464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 125246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSubscriptXSize() { 126246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSubscriptXSize); 127464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 128464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 129246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSubscriptYSize() { 130246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSubscriptYSize); 131464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 132464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 133246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSubscriptXOffset() { 134246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSubscriptXOffset); 135464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 136464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 137246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSubscriptYOffset() { 138246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSubscriptYOffset); 139464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 140464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 141246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSuperscriptXSize() { 142246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSuperscriptXSize); 143464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 144464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 145246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSuperscriptYSize() { 146246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSuperscriptYSize); 147464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 148464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 149246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSuperscriptXOffset() { 150246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSuperscriptXOffset); 151464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 152464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 153246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YSuperscriptYOffset() { 154246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYSuperscriptYOffset); 155464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 156464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 157246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YStrikeoutSize() { 158246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYStrikeoutSize); 159464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 160464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 161246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::YStrikeoutPosition() { 162246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kYStrikeoutPosition); 163464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 164464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 165246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::SFamilyClass() { 166246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kSFamilyClass); 167464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 168464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 169246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comvoid OS2Table::Panose(ByteVector* value) { 170b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com assert(value); 171464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com value->clear(); 172464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com value->resize(10); 17332a01c7c6e7be46dda9bfc78de9ce32d99e4c8b7arthurhsu@google.com data_->ReadBytes(Offset::kPanose, &((*value)[0]), 0, 10); 174464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 175464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 176246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint64_t OS2Table::UlUnicodeRange1() { 177246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadULong(Offset::kUlUnicodeRange1); 178464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 179464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 180246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint64_t OS2Table::UlUnicodeRange2() { 181246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadULong(Offset::kUlUnicodeRange2); 182464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 183464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 184246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint64_t OS2Table::UlUnicodeRange3() { 185246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadULong(Offset::kUlUnicodeRange3); 186464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 187464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 188246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint64_t OS2Table::UlUnicodeRange4() { 189246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadULong(Offset::kUlUnicodeRange4); 190464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 191464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 192246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comvoid OS2Table::AchVendId(ByteVector* b) { 193b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com assert(b); 194464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com b->clear(); 195464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com b->resize(4); 19632a01c7c6e7be46dda9bfc78de9ce32d99e4c8b7arthurhsu@google.com data_->ReadBytes(Offset::kAchVendId, &((*b)[0]), 0, 4); 197464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 198464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 199246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::FsSelection() { 200246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kFsSelection); 201464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 202464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 203246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsFirstCharIndex() { 204246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsFirstCharIndex); 205464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 206464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 207246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsLastCharIndex() { 208246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsLastCharIndex); 209464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 210464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 211246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::STypoAscender() { 212246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kSTypoAscender); 213464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 214464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 215f7c13bf6ff210e3c018971a6f219bb626ae00378arthurhsu@google.comint32_t OS2Table::STypoDescender() { 216246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kSTypoDescender); 217464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 218464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 219246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::STypoLineGap() { 220246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kSTypoLineGap); 221464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 222464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 223246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsWinAscent() { 224246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsWinAscent); 225464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 226464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 227246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsWinDescent() { 228246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsWinDescent); 229464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 230464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 231246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint64_t OS2Table::UlCodePageRange1() { 232246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadULong(Offset::kUlCodePageRange1); 233464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 234464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 235246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint64_t OS2Table::UlCodePageRange2() { 236246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadULong(Offset::kUlCodePageRange2); 237464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 238464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 239246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::SxHeight() { 240246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadShort(Offset::kSxHeight); 241464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 242464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 243b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::SCapHeight() { 244b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return data_->ReadShort(Offset::kSCapHeight); 245b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 246b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 247246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsDefaultChar() { 248246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsDefaultChar); 249464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 250464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 251246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsBreakChar() { 252246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsBreakChar); 253464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 254464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 255246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comint32_t OS2Table::UsMaxContext() { 256246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return data_->ReadUShort(Offset::kUsMaxContext); 257246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com} 258246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com 259246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comOS2Table::OS2Table(Header* header, ReadableFontData* data) 260246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com : Table(header, data) { 261464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 262464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 263464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com/****************************************************************************** 264464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * class OS2Table::Builder 265464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ******************************************************************************/ 2666b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.comOS2Table::Builder::Builder(Header* header, WritableFontData* data) 2676b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com : TableBasedTableBuilder(header, data) { 268b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 269b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 2706b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.comOS2Table::Builder::Builder(Header* header, ReadableFontData* data) 2716b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com : TableBasedTableBuilder(header, data) { 272464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 273464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 274464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comOS2Table::Builder::~Builder() {} 275464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 276246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.comCALLER_ATTACH FontDataTable* OS2Table::Builder::SubBuildTable( 277464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ReadableFontData* data) { 278464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com FontDataTablePtr table = new OS2Table(header(), data); 279246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com return table.Detach(); 280464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 281464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 282b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comCALLER_ATTACH OS2Table::Builder* 283b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com OS2Table::Builder::CreateBuilder(Header* header, 284b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com WritableFontData* data) { 285b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com Ptr<OS2Table::Builder> builder; 286b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com builder = new OS2Table::Builder(header, data); 287b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return builder.Detach(); 288b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 289b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 290b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::TableVersion() { 291b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kVersion); 292b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 293b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 294b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetTableVersion(int32_t version) { 295b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kVersion, version); 296b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 297b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 298b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::XAvgCharWidth() { 299b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kXAvgCharWidth); 300b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 301b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 302b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetXAvgCharWidth(int32_t width) { 303b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kXAvgCharWidth, width); 304b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 305b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 306b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsWeightClass() { 307b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsWeightClass); 308b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 309b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 310b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsWeightClass(int32_t weight) { 311b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsWeightClass, weight); 312b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 313b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 314b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsWidthClass() { 315b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsWidthClass); 316b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 317b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 318b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsWidthClass(int32_t width) { 319b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsWidthClass, width); 320b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 321b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 322b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::FsType() { 323b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kFsType); 324b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 325b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 326b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetFsType(int32_t fs_type) { 327b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kFsType, fs_type); 328b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 329b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 330b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSubscriptXSize() { 331b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSubscriptXSize); 332b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 333b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 334b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSubscriptXSize(int32_t size) { 335b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSubscriptXSize, size); 336b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 337b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 338b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSubscriptYSize() { 339b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSubscriptYSize); 340b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 341b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 342b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSubscriptYSize(int32_t size) { 343b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSubscriptYSize, size); 344b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 345b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 346b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSubscriptXOffset() { 347b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSubscriptXOffset); 348b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 349b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 350b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSubscriptXOffset(int32_t offset) { 351b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSubscriptXOffset, offset); 352b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 353b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 354b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSubscriptYOffset() { 355b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSubscriptYOffset); 356b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 357b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 358b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSubscriptYOffset(int32_t offset) { 359b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSubscriptYOffset, offset); 360b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 361b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 362b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSuperscriptXSize() { 363b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSuperscriptXSize); 364b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 365b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 366b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSuperscriptXSize(int32_t size) { 367b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSuperscriptXSize, size); 368b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 369b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 370b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSuperscriptYSize() { 371b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSuperscriptYSize); 372b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 373b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 374b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSuperscriptYSize(int32_t size) { 375b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSuperscriptYSize, size); 376b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 377b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 378b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSuperscriptXOffset() { 379b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSuperscriptXOffset); 380b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 381b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 382b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSuperscriptXOffset(int32_t offset) { 383b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSuperscriptXOffset, offset); 384b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 385b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 386b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YSuperscriptYOffset() { 387b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYSuperscriptYOffset); 388b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 389b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 390b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYSuperscriptYOffset(int32_t offset) { 391b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYSuperscriptYOffset, offset); 392b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 393b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 394b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YStrikeoutSize() { 395b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYStrikeoutSize); 396b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 397b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 398b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYStrikeoutSize(int32_t size) { 399b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYStrikeoutSize, size); 400b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 401b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 402b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::YStrikeoutPosition() { 403b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kYStrikeoutPosition); 404b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 405b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 406b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetYStrikeoutPosition(int32_t position) { 407b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kYStrikeoutPosition, position); 408b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 409b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 410b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::SFamilyClass() { 411b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kSFamilyClass); 412b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 413b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 414b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetSFamilyClass(int32_t family) { 415b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kSFamilyClass, family); 416b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 417b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 418b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::Panose(ByteVector* value) { 419b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com assert(value); 420b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com value->clear(); 421b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com value->resize(Offset::kPanoseLength); 422b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalReadData()->ReadBytes(Offset::kPanose, 423b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com &((*value)[0]), 424b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 0, 425b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com Offset::kPanoseLength); 426b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 427b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 428b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetPanose(ByteVector* panose) { 429b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com assert(panose); 430b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com if (panose->size() != Offset::kPanoseLength) { 431b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com#if !defined (SFNTLY_NO_EXCEPTION) 432b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com throw IllegalArgumentException("Panose bytes must be exactly 10 in length"); 433b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com#endif 434b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return; 435b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com } 436b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteBytes(Offset::kPanose, panose); 437b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 438b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 439b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint64_t OS2Table::Builder::UlUnicodeRange1() { 440b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadULong(Offset::kUlUnicodeRange1); 441b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 442b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 443b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUlUnicodeRange1(int64_t range) { 444b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteULong(Offset::kUlUnicodeRange1, range); 445b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 446b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 447b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint64_t OS2Table::Builder::UlUnicodeRange2() { 448b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadULong(Offset::kUlUnicodeRange2); 449b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 450b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 451b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUlUnicodeRange2(int64_t range) { 452b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteULong(Offset::kUlUnicodeRange2, range); 453b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 454b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 455b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint64_t OS2Table::Builder::UlUnicodeRange3() { 456b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadULong(Offset::kUlUnicodeRange3); 457b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 458b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 459b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUlUnicodeRange3(int64_t range) { 460b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteULong(Offset::kUlUnicodeRange3, range); 461b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 462b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 463b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint64_t OS2Table::Builder::UlUnicodeRange4() { 464b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadULong(Offset::kUlUnicodeRange4); 465b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 466b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 467b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUlUnicodeRange4(int64_t range) { 468b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteULong(Offset::kUlUnicodeRange4, range); 469b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 470b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 471b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::AchVendId(ByteVector* b) { 472b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com assert(b); 473b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com b->clear(); 474b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com b->resize(4); 475b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalReadData()->ReadBytes(Offset::kAchVendId, &((*b)[0]), 0, 4); 476b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 477b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 478b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetAchVendId(ByteVector* b) { 479b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com assert(b); 480b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com assert(b->size()); 4816b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com InternalWriteData()->WriteBytesPad(Offset::kAchVendId, 4826b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com b, 4836b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com 0, 4846b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com std::min<size_t>( 4856b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com (size_t)Offset::kAchVendIdLength, 4866b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com b->size()), 4876b8e073e978eed96605da6f92d6db740a39864baarthurhsu@google.com static_cast<byte_t>(' ')); 488b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 489b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 490b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::FsSelection() { 491b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kFsSelection); 492b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 493b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 494b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetFsSelection(int32_t fs_selection) { 495b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kFsSelection, fs_selection); 496b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 497b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 498b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsFirstCharIndex() { 499b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsFirstCharIndex); 500b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 501b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 502b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsFirstCharIndex(int32_t first_index) { 503b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsFirstCharIndex, first_index); 504b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 505b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 506b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsLastCharIndex() { 507b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsLastCharIndex); 508b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 509b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 510b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsLastCharIndex(int32_t last_index) { 511b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsLastCharIndex, last_index); 512b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 513b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 514b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::STypoAscender() { 515b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kSTypoAscender); 516b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 517b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 518b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetSTypoAscender(int32_t ascender) { 519b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kSTypoAscender, ascender); 520b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 521b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 522b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::STypoDescender() { 523b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kSTypoDescender); 524b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 525b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 526b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetSTypoDescender(int32_t descender) { 527b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kSTypoDescender, descender); 528b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 529b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 530b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::STypoLineGap() { 531b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kSTypoLineGap); 532b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 533b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 534b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetSTypoLineGap(int32_t line_gap) { 535b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kSTypoLineGap, line_gap); 536b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 537b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 538b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsWinAscent() { 539b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsWinAscent); 540b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 541b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 542b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsWinAscent(int32_t ascent) { 543b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsWinAscent, ascent); 544b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 545b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 546b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsWinDescent() { 547b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsWinDescent); 548b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 549b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 550b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsWinDescent(int32_t descent) { 551b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsWinDescent, descent); 552b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 553b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 554b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint64_t OS2Table::Builder::UlCodePageRange1() { 555b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadULong(Offset::kUlCodePageRange1); 556b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 557b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 558b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUlCodePageRange1(int64_t range) { 559b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteULong(Offset::kUlCodePageRange1, range); 560b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 561b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 562b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint64_t OS2Table::Builder::UlCodePageRange2() { 563b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadULong(Offset::kUlCodePageRange2); 564b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 565b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 566b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUlCodePageRange2(int64_t range) { 567b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteULong(Offset::kUlCodePageRange2, range); 568b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 569b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 570b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::SxHeight() { 571b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kSxHeight); 572b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 573b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 574b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetSxHeight(int32_t height) { 575b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kSxHeight, height); 576b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 577b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 578b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::SCapHeight() { 579b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadShort(Offset::kSCapHeight); 580b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 581b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 582b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetSCapHeight(int32_t height) { 583b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteShort(Offset::kSCapHeight, height); 584b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 585b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 586b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsDefaultChar() { 587b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsDefaultChar); 588b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 589b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 590b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsDefaultChar(int32_t default_char) { 591b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsDefaultChar, default_char); 592b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 593b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 594b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsBreakChar() { 595b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsBreakChar); 596b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 597b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 598b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsBreakChar(int32_t break_char) { 599b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsBreakChar, break_char); 600b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 601b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 602b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comint32_t OS2Table::Builder::UsMaxContext() { 603b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com return InternalReadData()->ReadUShort(Offset::kUsMaxContext); 604b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 605b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 606b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.comvoid OS2Table::Builder::SetUsMaxContext(int32_t max_context) { 607b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com InternalWriteData()->WriteUShort(Offset::kUsMaxContext, max_context); 608b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com} 609b54cce09c1fc2b09e2adae43d7eb017b47b0cccfarthurhsu@google.com 610464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} // namespace sfntly 611