130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun/* 230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * Copyright 2011 Google Inc. All Rights Reserved. 330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * 430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * Licensed under the Apache License, Version 2.0 (the "License"); 530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * you may not use this file except in compliance with the License. 630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * You may obtain a copy of the License at 730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * 830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * http://www.apache.org/licenses/LICENSE-2.0 930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * 1030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * Unless required by applicable law or agreed to in writing, software 1130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * distributed under the License is distributed on an "AS IS" BASIS, 1230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * See the License for the specific language governing permissions and 1430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * limitations under the License. 1530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun */ 1630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 1730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#include "sfntly/table/core/os2_table.h" 1830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 1930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunnamespace sfntly { 2030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun/****************************************************************************** 2130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * Constants 2230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun ******************************************************************************/ 2330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kLatin1_1252 = (int64_t)1 << 0; 2430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kLatin2_1250 = (int64_t)1 << (int64_t)1; 2530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kCyrillic_1251 = (int64_t)1 << 2; 2630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kGreek_1253 = (int64_t)1 << 3; 2730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kTurkish_1254 = (int64_t)1 << 4; 2830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kHebrew_1255 = (int64_t)1 << 5; 2930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kArabic_1256 = (int64_t)1 << 6; 3030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kWindowsBaltic_1257 = (int64_t)1 << 7; 3130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kVietnamese_1258 = (int64_t)1 << 8; 3230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI9 = (int64_t)1 << 9; 3330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI10 = (int64_t)1 << 10; 3430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI11 = (int64_t)1 << 11; 3530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI12 = (int64_t)1 << 12; 3630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI13 = (int64_t)1 << 13; 3730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI14 = (int64_t)1 << 14; 3830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI15 = (int64_t)1 << 15; 3930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kThai_874 = (int64_t)1 << 16; 4030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kJapanJIS_932 = (int64_t)1 << 17; 4130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kChineseSimplified_936 = (int64_t)1 << 18; 4230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kKoreanWansung_949 = (int64_t)1 << 19; 4330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kChineseTraditional_950 = (int64_t)1 << 20; 4430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kKoreanJohab_1361 = (int64_t)1 << 21; 4530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI22 = (int64_t)1 << 22; 4630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI23 = (int64_t)1 << 23; 4730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI24 = (int64_t)1 << 24; 4830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI25 = (int64_t)1 << 25; 4930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI26 = (int64_t)1 << 26; 5030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI27 = (int64_t)1 << 27; 5130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kAlternateANSI28 = (int64_t)1 << 28; 5230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kMacintoshCharacterSet = (int64_t)1 << 29; 5330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kOEMCharacterSet = (int64_t)1 << 30; 5430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kSymbolCharacterSet = (int64_t)1 << 31; 5530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM32 = (int64_t)1 << 32; 5630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM33 = (int64_t)1 << 33; 5730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM34 = (int64_t)1 << 34; 5830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM35 = (int64_t)1 << 35; 5930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM36 = (int64_t)1 << 36; 6030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM37 = (int64_t)1 << 37; 6130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM38 = (int64_t)1 << 38; 6230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM39 = (int64_t)1 << 39; 6330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM40 = (int64_t)1 << 40; 6430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM41 = (int64_t)1 << 41; 6530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM42 = (int64_t)1 << 42; 6630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM43 = (int64_t)1 << 43; 6730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM44 = (int64_t)1 << 44; 6830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM45 = (int64_t)1 << 45; 6930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM46 = (int64_t)1 << 46; 7030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kReservedForOEM47 = (int64_t)1 << 47; 7130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kIBMGreek_869 = (int64_t)1 << 48; 7230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kMSDOSRussion_866 = (int64_t)1 << 49; 7330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kMSDOSNordic_865 = (int64_t)1 << 50; 7430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kArabic_864 = (int64_t)1 << 51; 7530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kMSDOSCanadianFrench_863 = (int64_t)1 << 52; 7630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kHebrew_862 = (int64_t)1 << 53; 7730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kMSDOSIcelandic_861 = (int64_t)1 << 54; 7830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kMSDOSPortugese_860 = (int64_t)1 << 55; 7930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kIBMTurkish_857 = (int64_t)1 << 56; 8030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kIBMCyrillic_855 = (int64_t)1 << 57; 8130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kLatin2_852 = (int64_t)1 << 58; 8230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kMSDOSBaltic_775 = (int64_t)1 << 59; 8330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kGreek_737 = (int64_t)1 << 60; 8430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kArabic_708 = (int64_t)1 << 61; 8530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kLatin1_850 = (int64_t)1 << 62; 8630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunconst int64_t CodePageRange::kUS_437 = (int64_t)1 << 63; 8730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 8830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun/****************************************************************************** 8930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * struct UnicodeRange 9030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun ******************************************************************************/ 9130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t UnicodeRange::range(int32_t bit) { 9230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun if (bit < 0 || bit > kLast) { 9330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return -1; 9430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun } 9530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return bit; 9630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 9730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 9830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun/****************************************************************************** 9930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * class OS2Table 10030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun ******************************************************************************/ 10130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim GurunOS2Table::~OS2Table() {} 10230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 10330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::TableVersion() { 10430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kVersion); 10530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 10630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 10730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::XAvgCharWidth() { 10830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kXAvgCharWidth); 10930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 11030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 11130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsWeightClass() { 11230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsWeightClass); 11330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 11430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 11530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsWidthClass() { 11630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsWidthClass); 11730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 11830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 11930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::FsType() { 12030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kFsType); 12130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 12230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 12330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSubscriptXSize() { 12430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSubscriptXSize); 12530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 12630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 12730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSubscriptYSize() { 12830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSubscriptYSize); 12930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 13030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 13130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSubscriptXOffset() { 13230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSubscriptXOffset); 13330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 13430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 13530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSubscriptYOffset() { 13630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSubscriptYOffset); 13730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 13830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 13930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSuperscriptXSize() { 14030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSuperscriptXSize); 14130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 14230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 14330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSuperscriptYSize() { 14430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSuperscriptYSize); 14530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 14630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 14730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSuperscriptXOffset() { 14830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSuperscriptXOffset); 14930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 15030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 15130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YSuperscriptYOffset() { 15230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYSuperscriptYOffset); 15330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 15430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 15530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YStrikeoutSize() { 15630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYStrikeoutSize); 15730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 15830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 15930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::YStrikeoutPosition() { 16030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kYStrikeoutPosition); 16130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 16230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 16330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::SFamilyClass() { 16430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kSFamilyClass); 16530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 16630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 16730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Panose(ByteVector* value) { 16830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun assert(value); 16930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun value->clear(); 17030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun value->resize(10); 17130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun data_->ReadBytes(Offset::kPanose, &((*value)[0]), 0, 10); 17230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 17330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 17430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::UlUnicodeRange1() { 17530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadULong(Offset::kUlUnicodeRange1); 17630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 17730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 17830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::UlUnicodeRange2() { 17930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadULong(Offset::kUlUnicodeRange2); 18030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 18130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 18230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::UlUnicodeRange3() { 18330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadULong(Offset::kUlUnicodeRange3); 18430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 18530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 18630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::UlUnicodeRange4() { 18730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadULong(Offset::kUlUnicodeRange4); 18830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 18930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 19030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::AchVendId(ByteVector* b) { 19130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun assert(b); 19230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun b->clear(); 19330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun b->resize(4); 19430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun data_->ReadBytes(Offset::kAchVendId, &((*b)[0]), 0, 4); 19530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 19630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 19730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::FsSelection() { 19830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kFsSelection); 19930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 20030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 20130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsFirstCharIndex() { 20230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsFirstCharIndex); 20330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 20430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 20530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsLastCharIndex() { 20630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsLastCharIndex); 20730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 20830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 20930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::STypoAscender() { 21030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kSTypoAscender); 21130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 21230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 21330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::STypoDescender() { 21430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kSTypoDescender); 21530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 21630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 21730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::STypoLineGap() { 21830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kSTypoLineGap); 21930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 22030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 22130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsWinAscent() { 22230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsWinAscent); 22330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 22430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 22530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsWinDescent() { 22630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsWinDescent); 22730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 22830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 22930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::UlCodePageRange1() { 23030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadULong(Offset::kUlCodePageRange1); 23130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 23230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 23330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::UlCodePageRange2() { 23430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadULong(Offset::kUlCodePageRange2); 23530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 23630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 23730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::SxHeight() { 23830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kSxHeight); 23930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 24030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 24130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::SCapHeight() { 24230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadShort(Offset::kSCapHeight); 24330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 24430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 24530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsDefaultChar() { 24630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsDefaultChar); 24730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 24830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 24930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsBreakChar() { 25030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsBreakChar); 25130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 25230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 25330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::UsMaxContext() { 25430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return data_->ReadUShort(Offset::kUsMaxContext); 25530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 25630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 25730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim GurunOS2Table::OS2Table(Header* header, ReadableFontData* data) 25830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun : Table(header, data) { 25930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 26030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 26130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun/****************************************************************************** 26230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun * class OS2Table::Builder 26330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun ******************************************************************************/ 26430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim GurunOS2Table::Builder::Builder(Header* header, WritableFontData* data) 26530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun : TableBasedTableBuilder(header, data) { 26630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 26730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 26830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim GurunOS2Table::Builder::Builder(Header* header, ReadableFontData* data) 26930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun : TableBasedTableBuilder(header, data) { 27030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 27130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 27230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim GurunOS2Table::Builder::~Builder() {} 27330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 27430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim GurunCALLER_ATTACH FontDataTable* OS2Table::Builder::SubBuildTable( 27530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun ReadableFontData* data) { 27630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun FontDataTablePtr table = new OS2Table(header(), data); 27730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return table.Detach(); 27830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 27930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 28030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim GurunCALLER_ATTACH OS2Table::Builder* 28130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun OS2Table::Builder::CreateBuilder(Header* header, 28230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun WritableFontData* data) { 28330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun Ptr<OS2Table::Builder> builder; 28430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun builder = new OS2Table::Builder(header, data); 28530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return builder.Detach(); 28630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 28730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 28830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::TableVersion() { 28930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kVersion); 29030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 29130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 29230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetTableVersion(int32_t version) { 29330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kVersion, version); 29430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 29530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 29630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::XAvgCharWidth() { 29730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kXAvgCharWidth); 29830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 29930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 30030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetXAvgCharWidth(int32_t width) { 30130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kXAvgCharWidth, width); 30230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 30330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 30430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsWeightClass() { 30530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsWeightClass); 30630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 30730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 30830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsWeightClass(int32_t weight) { 30930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsWeightClass, weight); 31030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 31130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 31230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsWidthClass() { 31330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsWidthClass); 31430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 31530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 31630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsWidthClass(int32_t width) { 31730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsWidthClass, width); 31830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 31930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 32030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::FsType() { 32130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kFsType); 32230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 32330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 32430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetFsType(int32_t fs_type) { 32530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kFsType, fs_type); 32630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 32730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 32830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSubscriptXSize() { 32930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSubscriptXSize); 33030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 33130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 33230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSubscriptXSize(int32_t size) { 33330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSubscriptXSize, size); 33430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 33530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 33630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSubscriptYSize() { 33730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSubscriptYSize); 33830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 33930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 34030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSubscriptYSize(int32_t size) { 34130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSubscriptYSize, size); 34230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 34330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 34430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSubscriptXOffset() { 34530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSubscriptXOffset); 34630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 34730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 34830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSubscriptXOffset(int32_t offset) { 34930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSubscriptXOffset, offset); 35030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 35130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 35230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSubscriptYOffset() { 35330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSubscriptYOffset); 35430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 35530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 35630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSubscriptYOffset(int32_t offset) { 35730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSubscriptYOffset, offset); 35830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 35930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 36030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSuperscriptXSize() { 36130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSuperscriptXSize); 36230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 36330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 36430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSuperscriptXSize(int32_t size) { 36530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSuperscriptXSize, size); 36630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 36730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 36830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSuperscriptYSize() { 36930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSuperscriptYSize); 37030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 37130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 37230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSuperscriptYSize(int32_t size) { 37330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSuperscriptYSize, size); 37430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 37530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 37630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSuperscriptXOffset() { 37730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSuperscriptXOffset); 37830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 37930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 38030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSuperscriptXOffset(int32_t offset) { 38130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSuperscriptXOffset, offset); 38230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 38330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 38430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YSuperscriptYOffset() { 38530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYSuperscriptYOffset); 38630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 38730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 38830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYSuperscriptYOffset(int32_t offset) { 38930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYSuperscriptYOffset, offset); 39030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 39130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 39230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YStrikeoutSize() { 39330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYStrikeoutSize); 39430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 39530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 39630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYStrikeoutSize(int32_t size) { 39730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYStrikeoutSize, size); 39830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 39930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 40030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::YStrikeoutPosition() { 40130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kYStrikeoutPosition); 40230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 40330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 40430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetYStrikeoutPosition(int32_t position) { 40530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kYStrikeoutPosition, position); 40630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 40730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 40830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::SFamilyClass() { 40930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kSFamilyClass); 41030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 41130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 41230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetSFamilyClass(int32_t family) { 41330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kSFamilyClass, family); 41430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 41530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 41630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::Panose(ByteVector* value) { 41730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun assert(value); 41830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun value->clear(); 41930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun value->resize(Offset::kPanoseLength); 42030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalReadData()->ReadBytes(Offset::kPanose, 42130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun &((*value)[0]), 42230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 0, 42330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun Offset::kPanoseLength); 42430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 42530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 42630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetPanose(ByteVector* panose) { 42730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun assert(panose); 42830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun if (panose->size() != Offset::kPanoseLength) { 42930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#if !defined (SFNTLY_NO_EXCEPTION) 43030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun throw IllegalArgumentException("Panose bytes must be exactly 10 in length"); 43130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#endif 43230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return; 43330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun } 43430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteBytes(Offset::kPanose, panose); 43530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 43630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 43730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::Builder::UlUnicodeRange1() { 43830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadULong(Offset::kUlUnicodeRange1); 43930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 44030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 44130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUlUnicodeRange1(int64_t range) { 44230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteULong(Offset::kUlUnicodeRange1, range); 44330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 44430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 44530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::Builder::UlUnicodeRange2() { 44630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadULong(Offset::kUlUnicodeRange2); 44730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 44830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 44930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUlUnicodeRange2(int64_t range) { 45030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteULong(Offset::kUlUnicodeRange2, range); 45130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 45230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 45330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::Builder::UlUnicodeRange3() { 45430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadULong(Offset::kUlUnicodeRange3); 45530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 45630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 45730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUlUnicodeRange3(int64_t range) { 45830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteULong(Offset::kUlUnicodeRange3, range); 45930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 46030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 46130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::Builder::UlUnicodeRange4() { 46230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadULong(Offset::kUlUnicodeRange4); 46330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 46430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 46530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUlUnicodeRange4(int64_t range) { 46630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteULong(Offset::kUlUnicodeRange4, range); 46730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 46830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 46930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::AchVendId(ByteVector* b) { 47030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun assert(b); 47130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun b->clear(); 47230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun b->resize(4); 47330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalReadData()->ReadBytes(Offset::kAchVendId, &((*b)[0]), 0, 4); 47430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 47530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 47630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetAchVendId(ByteVector* b) { 47730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun assert(b); 47830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun assert(b->size()); 47930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteBytesPad(Offset::kAchVendId, 48030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun b, 48130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 0, 48230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun std::min<size_t>( 48330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun (size_t)Offset::kAchVendIdLength, 48430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun b->size()), 48530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static_cast<byte_t>(' ')); 48630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 48730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 48830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::FsSelection() { 48930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kFsSelection); 49030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 49130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 49230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetFsSelection(int32_t fs_selection) { 49330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kFsSelection, fs_selection); 49430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 49530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 49630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsFirstCharIndex() { 49730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsFirstCharIndex); 49830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 49930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 50030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsFirstCharIndex(int32_t first_index) { 50130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsFirstCharIndex, first_index); 50230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 50330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 50430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsLastCharIndex() { 50530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsLastCharIndex); 50630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 50730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 50830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsLastCharIndex(int32_t last_index) { 50930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsLastCharIndex, last_index); 51030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 51130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 51230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::STypoAscender() { 51330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kSTypoAscender); 51430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 51530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 51630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetSTypoAscender(int32_t ascender) { 51730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kSTypoAscender, ascender); 51830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 51930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 52030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::STypoDescender() { 52130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kSTypoDescender); 52230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 52330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 52430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetSTypoDescender(int32_t descender) { 52530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kSTypoDescender, descender); 52630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 52730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 52830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::STypoLineGap() { 52930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kSTypoLineGap); 53030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 53130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 53230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetSTypoLineGap(int32_t line_gap) { 53330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kSTypoLineGap, line_gap); 53430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 53530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 53630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsWinAscent() { 53730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsWinAscent); 53830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 53930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 54030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsWinAscent(int32_t ascent) { 54130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsWinAscent, ascent); 54230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 54330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 54430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsWinDescent() { 54530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsWinDescent); 54630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 54730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 54830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsWinDescent(int32_t descent) { 54930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsWinDescent, descent); 55030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 55130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 55230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::Builder::UlCodePageRange1() { 55330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadULong(Offset::kUlCodePageRange1); 55430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 55530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 55630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUlCodePageRange1(int64_t range) { 55730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteULong(Offset::kUlCodePageRange1, range); 55830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 55930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 56030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint64_t OS2Table::Builder::UlCodePageRange2() { 56130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadULong(Offset::kUlCodePageRange2); 56230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 56330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 56430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUlCodePageRange2(int64_t range) { 56530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteULong(Offset::kUlCodePageRange2, range); 56630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 56730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 56830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::SxHeight() { 56930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kSxHeight); 57030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 57130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 57230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetSxHeight(int32_t height) { 57330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kSxHeight, height); 57430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 57530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 57630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::SCapHeight() { 57730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadShort(Offset::kSCapHeight); 57830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 57930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 58030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetSCapHeight(int32_t height) { 58130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteShort(Offset::kSCapHeight, height); 58230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 58330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 58430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsDefaultChar() { 58530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsDefaultChar); 58630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 58730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 58830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsDefaultChar(int32_t default_char) { 58930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsDefaultChar, default_char); 59030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 59130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 59230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsBreakChar() { 59330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsBreakChar); 59430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 59530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 59630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsBreakChar(int32_t break_char) { 59730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsBreakChar, break_char); 59830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 59930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 60030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunint32_t OS2Table::Builder::UsMaxContext() { 60130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun return InternalReadData()->ReadUShort(Offset::kUsMaxContext); 60230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 60330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 60430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunvoid OS2Table::Builder::SetUsMaxContext(int32_t max_context) { 60530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun InternalWriteData()->WriteUShort(Offset::kUsMaxContext, max_context); 60630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 60730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 60830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} // namespace sfntly 609