Mercurial > projects > dstep
view dstep/applicationservices/ats/SFNTLayoutTypes.d @ 12:9f0b49a2f64e
Added the ApplicationServices frameworks: ATS, ColorSync and CoreGraphics
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Mon, 03 Aug 2009 14:00:21 +0200 |
parents | |
children |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Aug 1, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.applicationservices.ats.SFNTLayoutTypes; //import dstep.AvailabilityMacros; import dstep.coreservices.CoreServices; import dstep.internal.Types; alias ushort SFNTLookupTableFormat; alias ushort SFNTLookupValue; alias ushort SFNTLookupOffset; alias uint SFNTLookupKind; alias SFNTLookupTable* SFNTLookupTablePtr; alias SFNTLookupTablePtr* SFNTLookupTableHandle; alias ubyte STClass; alias ubyte STEntryIndex; alias ushort STXClass; alias ushort STXStateIndex; alias ushort STXEntryIndex; alias SFNTLookupTable STXClassTable; alias LcarCaretTable* LcarCaretTablePtr; alias ushort JustPCActionType; alias ushort JustificationFlags; alias ushort JustPCUnconditionalAddAction; alias ushort OpbdTableFormat; alias uint MortSubtableMaskFlags; alias uint MortLigatureActionEntry; alias ushort PropCharProperties; alias short TrakValue; alias ubyte KernTableFormat; alias ushort KernSubtableInfo; alias short KernKerningValue; alias ushort KernArrayOffset; alias KernTableHeader* KernTableHeaderPtr; alias KernTableHeaderPtr* KernTableHeaderHandle; alias KernOrderedListEntry* KernOrderedListEntryPtr; alias KernOffsetTable* KernOffsetTablePtr; alias KernSubtableHeader* KernSubtableHeaderPtr; alias uint BslnBaselineClass; alias ushort BslnTableFormat; alias BslnTable* BslnTablePtr; enum { kAllTypographicFeaturesType = 0, kLigaturesType = 1, kCursiveConnectionType = 2, kLetterCaseType = 3, kVerticalSubstitutionType = 4, kLinguisticRearrangementType = 5, kNumberSpacingType = 6, kSmartSwashType = 8, kDiacriticsType = 9, kVerticalPositionType = 10, kFractionsType = 11, kOverlappingCharactersType = 13, kTypographicExtrasType = 14, kMathematicalExtrasType = 15, kOrnamentSetsType = 16, kCharacterAlternativesType = 17, kDesignComplexityType = 18, kStyleOptionsType = 19, kCharacterShapeType = 20, kNumberCaseType = 21, kTextSpacingType = 22, kTransliterationType = 23, kAnnotationType = 24, kKanaSpacingType = 25, kIdeographicSpacingType = 26, kUnicodeDecompositionType = 27, kRubyKanaType = 28, kCJKSymbolAlternativesType = 29, kIdeographicAlternativesType = 30, kCJKVerticalRomanPlacementType = 31, kItalicCJKRomanType = 32, kCJKRomanSpacingType = 103, kLastFeatureType = -1 } enum { kAllTypeFeaturesOnSelector = 0, kAllTypeFeaturesOffSelector = 1 } enum { kRequiredLigaturesOnSelector = 0, kRequiredLigaturesOffSelector = 1, kCommonLigaturesOnSelector = 2, kCommonLigaturesOffSelector = 3, kRareLigaturesOnSelector = 4, kRareLigaturesOffSelector = 5, kLogosOnSelector = 6, kLogosOffSelector = 7, kRebusPicturesOnSelector = 8, kRebusPicturesOffSelector = 9, kDiphthongLigaturesOnSelector = 10, kDiphthongLigaturesOffSelector = 11, kSquaredLigaturesOnSelector = 12, kSquaredLigaturesOffSelector = 13, kAbbrevSquaredLigaturesOnSelector = 14, kAbbrevSquaredLigaturesOffSelector = 15, kSymbolLigaturesOnSelector = 16, kSymbolLigaturesOffSelector = 17 } enum { kUnconnectedSelector = 0, kPartiallyConnectedSelector = 1, kCursiveSelector = 2 } enum { kUpperAndLowerCaseSelector = 0, kAllCapsSelector = 1, kAllLowerCaseSelector = 2, kSmallCapsSelector = 3, kInitialCapsSelector = 4, kInitialCapsAndSmallCapsSelector = 5 } enum { kSubstituteVerticalFormsOnSelector = 0, kSubstituteVerticalFormsOffSelector = 1 } enum { kLinguisticRearrangementOnSelector = 0, kLinguisticRearrangementOffSelector = 1 } enum { kMonospacedNumbersSelector = 0, kProportionalNumbersSelector = 1, kThirdWidthNumbersSelector = 2, kQuarterWidthNumbersSelector = 3 } enum { kWordInitialSwashesOnSelector = 0, kWordInitialSwashesOffSelector = 1, kWordFinalSwashesOnSelector = 2, kWordFinalSwashesOffSelector = 3, kLineInitialSwashesOnSelector = 4, kLineInitialSwashesOffSelector = 5, kLineFinalSwashesOnSelector = 6, kLineFinalSwashesOffSelector = 7, kNonFinalSwashesOnSelector = 8, kNonFinalSwashesOffSelector = 9 } enum { kShowDiacriticsSelector = 0, kHideDiacriticsSelector = 1, kDecomposeDiacriticsSelector = 2 } enum { kNormalPositionSelector = 0, kSuperiorsSelector = 1, kInferiorsSelector = 2, kOrdinalsSelector = 3 } enum { kNoFractionsSelector = 0, kVerticalFractionsSelector = 1, kDiagonalFractionsSelector = 2 } enum { kPreventOverlapOnSelector = 0, kPreventOverlapOffSelector = 1 } enum { kHyphensToEmDashOnSelector = 0, kHyphensToEmDashOffSelector = 1, kHyphenToEnDashOnSelector = 2, kHyphenToEnDashOffSelector = 3, kSlashedZeroOnSelector = 4, kSlashedZeroOffSelector = 5, kFormInterrobangOnSelector = 6, kFormInterrobangOffSelector = 7, kSmartQuotesOnSelector = 8, kSmartQuotesOffSelector = 9, kPeriodsToEllipsisOnSelector = 10, kPeriodsToEllipsisOffSelector = 11 } enum { kHyphenToMinusOnSelector = 0, kHyphenToMinusOffSelector = 1, kAsteriskToMultiplyOnSelector = 2, kAsteriskToMultiplyOffSelector = 3, kSlashToDivideOnSelector = 4, kSlashToDivideOffSelector = 5, kInequalityLigaturesOnSelector = 6, kInequalityLigaturesOffSelector = 7, kExponentsOnSelector = 8, kExponentsOffSelector = 9 } enum { kNoOrnamentsSelector = 0, kDingbatsSelector = 1, kPiCharactersSelector = 2, kFleuronsSelector = 3, kDecorativeBordersSelector = 4, kInternationalSymbolsSelector = 5, kMathSymbolsSelector = 6 } enum { kNoAlternatesSelector = 0 } enum { kDesignLevel1Selector = 0, kDesignLevel2Selector = 1, kDesignLevel3Selector = 2, kDesignLevel4Selector = 3, kDesignLevel5Selector = 4 } enum { kNoStyleOptionsSelector = 0, kDisplayTextSelector = 1, kEngravedTextSelector = 2, kIlluminatedCapsSelector = 3, kTitlingCapsSelector = 4, kTallCapsSelector = 5 } enum { kTraditionalCharactersSelector = 0, kSimplifiedCharactersSelector = 1, kJIS1978CharactersSelector = 2, kJIS1983CharactersSelector = 3, kJIS1990CharactersSelector = 4, kTraditionalAltOneSelector = 5, kTraditionalAltTwoSelector = 6, kTraditionalAltThreeSelector = 7, kTraditionalAltFourSelector = 8, kTraditionalAltFiveSelector = 9, kExpertCharactersSelector = 10 } enum { kLowerCaseNumbersSelector = 0, kUpperCaseNumbersSelector = 1 } enum { kProportionalTextSelector = 0, kMonospacedTextSelector = 1, kHalfWidthTextSelector = 2 } enum { kNoTransliterationSelector = 0, kHanjaToHangulSelector = 1, kHiraganaToKatakanaSelector = 2, kKatakanaToHiraganaSelector = 3, kKanaToRomanizationSelector = 4, kRomanizationToHiraganaSelector = 5, kRomanizationToKatakanaSelector = 6, kHanjaToHangulAltOneSelector = 7, kHanjaToHangulAltTwoSelector = 8, kHanjaToHangulAltThreeSelector = 9 } enum { kNoAnnotationSelector = 0, kBoxAnnotationSelector = 1, kRoundedBoxAnnotationSelector = 2, kCircleAnnotationSelector = 3, kInvertedCircleAnnotationSelector = 4, kParenthesisAnnotationSelector = 5, kPeriodAnnotationSelector = 6, kRomanNumeralAnnotationSelector = 7, kDiamondAnnotationSelector = 8, kInvertedBoxAnnotationSelector = 9, kInvertedRoundedBoxAnnotationSelector = 10 } enum { kFullWidthKanaSelector = 0, kProportionalKanaSelector = 1 } enum { kFullWidthIdeographsSelector = 0, kProportionalIdeographsSelector = 1, kHalfWidthIdeographsSelector = 2 } enum { kCanonicalCompositionOnSelector = 0, kCanonicalCompositionOffSelector = 1, kCompatibilityCompositionOnSelector = 2, kCompatibilityCompositionOffSelector = 3, kTranscodingCompositionOnSelector = 4, kTranscodingCompositionOffSelector = 5 } enum { kNoRubyKanaSelector = 0, kRubyKanaSelector = 1, kRubyKanaOnSelector = 2, kRubyKanaOffSelector = 3 } enum { kNoCJKSymbolAlternativesSelector = 0, kCJKSymbolAltOneSelector = 1, kCJKSymbolAltTwoSelector = 2, kCJKSymbolAltThreeSelector = 3, kCJKSymbolAltFourSelector = 4, kCJKSymbolAltFiveSelector = 5 } enum { kNoIdeographicAlternativesSelector = 0, kIdeographicAltOneSelector = 1, kIdeographicAltTwoSelector = 2, kIdeographicAltThreeSelector = 3, kIdeographicAltFourSelector = 4, kIdeographicAltFiveSelector = 5 } enum { kCJKVerticalRomanCenteredSelector = 0, kCJKVerticalRomanHBaselineSelector = 1 } enum { kNoCJKItalicRomanSelector = 0, kCJKItalicRomanSelector = 1, kCJKItalicRomanOnSelector = 2, kCJKItalicRomanOffSelector = 3 } enum { kHalfWidthCJKRomanSelector = 0, kProportionalCJKRomanSelector = 1, kDefaultCJKRomanSelector = 2, kFullWidthCJKRomanSelector = 3 } enum { kSFNTLookupSimpleArray = 0, kSFNTLookupSegmentSingle = 2, kSFNTLookupSegmentArray = 4, kSFNTLookupSingleTable = 6, kSFNTLookupTrimmedArray = 8 } enum { kSTClassEndOfText = 0, kSTClassOutOfBounds = 1, kSTClassDeletedGlyph = 2, kSTClassEndOfLine = 3, kSTSetMark = 0x8000, kSTNoAdvance = 0x4000, kSTMarkEnd = 0x2000, kSTLigActionMask = 0x3FFF, kSTRearrVerbMask = 0x000F } enum { kSTXHasLigAction = 0x2000 } enum { kLCARTag = 0x6C636172, kLCARCurrentVersion = 0x00010000, kLCARLinearFormat = 0, kLCARCtlPointFormat = 1 } enum { kJUSTTag = 0x6A757374, kJUSTCurrentVersion = 0x00010000, kJUSTStandardFormat = 0, kJUSTnoGlyphcode = 0xFFFF, kJUSTpcDecompositionAction = 0, kJUSTpcUnconditionalAddAction = 1, kJUSTpcConditionalAddAction = 2, kJUSTpcGlyphStretchAction = 3, kJUSTpcDuctilityAction = 4, kJUSTpcGlyphRepeatAddAction = 5 } enum { kJUSTKashidaPriority = 0, kJUSTSpacePriority = 1, kJUSTLetterPriority = 2, kJUSTNullPriority = 3, kJUSTPriorityCount = 4 } enum { kJUSTOverridePriority = 0x8000, kJUSTOverrideLimits = 0x4000, kJUSTOverrideUnlimited = 0x2000, kJUSTUnlimited = 0x1000, kJUSTPriorityMask = 0x0003 } enum { kOPBDTag = 0x6F706264, kOPBDCurrentVersion = 0x00010000, kOPBDDistanceFormat = 0, kOPBDControlPointFormat = 1 } enum { kMORTTag = 0x6D6F7274, kMORTCurrentVersion = 0x00010000, kMORTCoverVertical = 0x8000, kMORTCoverDescending = 0x4000, kMORTCoverIgnoreVertical = 0x2000, kMORTCoverTypeMask = 0x000F, kMORTRearrangementType = 0, kMORTContextualType = 1, kMORTLigatureType = 2, kMORTSwashType = 4, kMORTInsertionType = 5, kMORTLigLastAction = cast(c_long)0x80000000, kMORTLigStoreLigature = 0x40000000, kMORTLigFormOffsetMask = 0x3FFFFFFF, kMORTLigFormOffsetShift = 2, kMORTraNoAction = 0, kMORTraxA = 1, kMORTraDx = 2, kMORTraDxA = 3, kMORTraxAB = 4, kMORTraxBA = 5, kMORTraCDx = 6, kMORTraDCx = 7, kMORTraCDxA = 8, kMORTraDCxA = 9, kMORTraDxAB = 10, kMORTraDxBA = 11, kMORTraCDxAB = 12, kMORTraCDxBA = 13, kMORTraDCxAB = 14, kMORTraDCxBA = 15, kMORTDoInsertionsBefore = 0x80, kMORTIsSplitVowelPiece = 0x40, kMORTInsertionsCountMask = 0x3F, kMORTCurrInsertKashidaLike = 0x2000, kMORTMarkInsertKashidaLike = 0x1000, kMORTCurrInsertBefore = 0x0800, kMORTMarkInsertBefore = 0x0400, kMORTMarkJustTableCountMask = 0x3F80, kMORTMarkJustTableCountShift = 7, kMORTCurrJustTableCountMask = 0x007F, kMORTCurrJustTableCountShift = 0, kMORTCurrInsertCountMask = 0x03E0, kMORTCurrInsertCountShift = 5, kMORTMarkInsertCountMask = 0x001F, kMORTMarkInsertCountShift = 0 } enum { kMORXTag = 0x6D6F7278, kMORXCurrentVersion = 0x00020000, kMORXCoverVertical = cast(c_long)0x80000000, kMORXCoverDescending = 0x40000000, kMORXCoverIgnoreVertical = 0x20000000, kMORXCoverTypeMask = 0x000000FF } enum { kPROPTag = 0x70726F70, kPROPCurrentVersion = 0x00030000, kPROPPairOffsetShift = 8, kPROPPairOffsetSign = 7, kPROPIsFloaterMask = 0x8000, kPROPCanHangLTMask = 0x4000, kPROPCanHangRBMask = 0x2000, kPROPUseRLPairMask = 0x1000, kPROPPairOffsetMask = 0x0F00, kPROPRightConnectMask = 0x0080, kPROPZeroReserved = 0x0060, kPROPDirectionMask = 0x001F } enum { kPROPLDirectionClass = 0, kPROPRDirectionClass = 1, kPROPALDirectionClass = 2, kPROPENDirectionClass = 3, kPROPESDirectionClass = 4, kPROPETDirectionClass = 5, kPROPANDirectionClass = 6, kPROPCSDirectionClass = 7, kPROPPSDirectionClass = 8, kPROPSDirectionClass = 9, kPROPWSDirectionClass = 10, kPROPONDirectionClass = 11, kPROPSENDirectionClass = 12, kPROPLREDirectionClass = 13, kPROPLRODirectionClass = 14, kPROPRLEDirectionClass = 15, kPROPRLODirectionClass = 16, kPROPPDFDirectionClass = 17, kPROPNSMDirectionClass = 18, kPROPBNDirectionClass = 19, kPROPNumDirectionClasses = 20 } enum { kTRAKTag = 0x7472616B, kTRAKCurrentVersion = 0x00010000, kTRAKUniformFormat = 0 } enum { kKERNTag = 0x6B65726E, kKERNCurrentVersion = 0x00010000, kKERNVertical = 0x8000, kKERNResetCrossStream = 0x8000, kKERNCrossStream = 0x4000, kKERNVariation = 0x2000, kKERNUnusedBits = 0x1F00, kKERNFormatMask = 0x00FF } enum { kKERNOrderedList = 0, kKERNStateTable = 1, kKERNSimpleArray = 2, kKERNIndexArray = 3 } enum { kKERNLineStart = 0x00000001, kKERNLineEndKerning = 0x00000002, kKERNNoCrossKerning = 0x00000004, kKERNNotesRequested = 0x00000008, kKERNNoStakeNote = 1, kKERNCrossStreamResetNote = 2, kKERNNotApplied = 0x00000001 } enum { kBSLNTag = 0x62736C6E, kBSLNCurrentVersion = 0x00010000, kBSLNDistanceFormatNoMap = 0, kBSLNDistanceFormatWithMap = 1, kBSLNControlPointFormatNoMap = 2, kBSLNControlPointFormatWithMap = 3 } enum { kBSLNRomanBaseline = 0, kBSLNIdeographicCenterBaseline = 1, kBSLNIdeographicLowBaseline = 2, kBSLNHangingBaseline = 3, kBSLNMathBaseline = 4, kBSLNLastBaseline = 31, kBSLNNumBaselineClasses = kBSLNLastBaseline + 1, kBSLNNoBaselineOverride = 255 } struct SFNTLookupBinarySearchHeader { ushort unitSize; ushort nUnits; ushort searchRange; ushort entrySelector; ushort rangeShift; } struct SFNTLookupArrayHeader { SFNTLookupValue* lookupValues; } struct SFNTLookupTrimmedArrayHeader { ushort firstGlyph; ushort count; SFNTLookupValue* valueArray; } struct SFNTLookupSegment { ushort lastGlyph; ushort firstGlyph; UInt16* value; } struct SFNTLookupSegmentHeader { SFNTLookupBinarySearchHeader binSearch; SFNTLookupSegment* segments; } struct SFNTLookupSingle { ushort glyph; UInt16* value; } struct SFNTLookupSingleHeader { SFNTLookupBinarySearchHeader binSearch; SFNTLookupSingle* entries; } union SFNTLookupFormatSpecificHeader { SFNTLookupArrayHeader theArray; SFNTLookupSegmentHeader segment; SFNTLookupSingleHeader single; SFNTLookupTrimmedArrayHeader trimmedArray; } struct SFNTLookupTable { ushort format; SFNTLookupFormatSpecificHeader fsHeader; } struct STHeader { ubyte filler; ubyte nClasses; ushort classTableOffset; ushort stateArrayOffset; ushort entryTableOffset; } struct STClassTable { ushort firstGlyph; ushort nGlyphs; char* classes; } struct STEntryZero { ushort newState; ushort flags; } struct STEntryOne { ushort newState; ushort flags; ushort offset1; } struct STEntryTwo { ushort newState; ushort flags; ushort offset1; ushort offset2; } struct STXHeader { uint nClasses; uint classTableOffset; uint stateArrayOffset; uint entryTableOffset; } struct STXEntryZero { ushort newState; ushort flags; } struct STXEntryOne { ushort newState; ushort flags; ushort index1; } struct STXEntryTwo { ushort newState; ushort flags; ushort index1; ushort index2; } struct LcarCaretClassEntry { ushort count; UInt16* partials; } struct LcarCaretTable { int version_; ushort format; SFNTLookupTable lookup; } struct JustPCDecompositionAction { int lowerLimit; int upperLimit; ushort order; ushort count; UInt16* glyphs; } struct JustPCConditionalAddAction { int substThreshhold; ushort addGlyph; ushort substGlyph; } struct JustPCDuctilityAction { uint ductilityAxis; int minimumLimit; int noStretchValue; int maximumLimit; } struct JustPCGlyphRepeatAddAction { ushort flags; ushort glyph; } struct JustPCActionSubrecord { ushort theClass; ushort theType; uint length; uint data; } struct JustPCAction { uint actionCount; JustPCActionSubrecord* actions; } struct JustWidthDeltaEntry { uint justClass; int beforeGrowLimit; int beforeShrinkLimit; int afterGrowLimit; int afterShrinkLimit; ushort growFlags; ushort shrinkFlags; } struct JustWidthDeltaGroup { uint count; JustWidthDeltaEntry* entries; } struct JustPostcompTable { SFNTLookupTable lookupTable; } struct JustDirectionTable { ushort justClass; ushort widthDeltaClusters; ushort postcomp; SFNTLookupTable lookup; } struct JustTable { int version_; ushort format; ushort horizHeaderOffset; ushort vertHeaderOffset; } struct OpbdSideValues { short leftSideShift; short topSideShift; short rightSideShift; short bottomSideShift; } struct OpbdTable { int version_; ushort format; SFNTLookupTable lookupTable; } struct MortRearrangementSubtable { STHeader header; } struct MortContextualSubtable { STHeader header; ushort substitutionTableOffset; } struct MortLigatureSubtable { STHeader header; ushort ligatureActionTableOffset; ushort componentTableOffset; ushort ligatureTableOffset; } struct MortSwashSubtable { SFNTLookupTable lookup; } struct MortInsertionSubtable { STHeader header; } union MortSpecificSubtable { MortRearrangementSubtable rearrangement; MortContextualSubtable contextual; MortLigatureSubtable ligature; MortSwashSubtable swash; MortInsertionSubtable insertion; } struct MortSubtable { ushort length; ushort coverage; uint flags; MortSpecificSubtable u; } struct MortFeatureEntry { ushort featureType; ushort featureSelector; uint enableFlags; uint disableFlags; } struct MortChain { uint defaultFlags; uint length; ushort nFeatures; ushort nSubtables; MortFeatureEntry* featureEntries; } struct MortTable { int version_; uint nChains; MortChain* chains; } struct MorxRearrangementSubtable { STXHeader header; } struct MorxContextualSubtable { STXHeader header; uint substitutionTableOffset; } struct MorxLigatureSubtable { STXHeader header; uint ligatureActionTableOffset; uint componentTableOffset; uint ligatureTableOffset; } struct MorxInsertionSubtable { STXHeader header; uint insertionGlyphTableOffset; } union MorxSpecificSubtable { MorxRearrangementSubtable rearrangement; MorxRearrangementSubtable contextual; MorxRearrangementSubtable ligature; MorxRearrangementSubtable swash; MorxRearrangementSubtable insertion; } struct MorxSubtable { uint length; uint coverage; uint flags; MorxSpecificSubtable u; } struct MorxChain { uint defaultFlags; uint length; uint nFeatures; uint nSubtables; MortFeatureEntry* featureEntries; } struct MorxTable { int version_; uint nChains; MorxChain* chains; } struct PropTable { int version_; ushort format; ushort defaultProps; SFNTLookupTable lookup; } struct PropLookupSegment { ushort lastGlyph; ushort firstGlyph; ushort value; } struct PropLookupSingle { ushort glyph; ushort props; } struct TrakTableEntry { int track; ushort nameTableIndex; ushort sizesOffset; } struct TrakTableData { ushort nTracks; ushort nSizes; uint sizeTableOffset; TrakTableEntry* trakTable; } struct TrakTable { int version_; ushort format; ushort horizOffset; ushort vertOffset; } struct KernVersion0Header { ushort version_; ushort nTables; UInt16* firstSubtable; } struct KernTableHeader { int version_; int nTables; UInt16* firstSubtable; } struct KernKerningPair { ushort left; ushort right; } struct KernOrderedListEntry { KernKerningPair pair; short value; } struct KernOrderedListHeader { ushort nPairs; ushort searchRange; ushort entrySelector; ushort rangeShift; UInt16* table; } struct KernStateHeader { STHeader header; ushort valueTable; char* firstTable; } struct KernStateEntry { ushort newState; ushort flags; } struct KernOffsetTable { ushort firstGlyph; ushort nGlyphs; KernArrayOffset* offsetTable; } struct KernSimpleArrayHeader { ushort rowWidth; ushort leftOffsetTable; ushort rightOffsetTable; ushort theArray; UInt16* firstTable; } struct KernIndexArrayHeader { ushort glyphCount; ubyte kernValueCount; ubyte leftClassCount; ubyte rightClassCount; ubyte flags; SInt16* kernValue; char* leftClass; char* rightClass; char* kernIndex; } /* * union KernFormatSpecificHeader { KernOrderedListHeader orderedList; KernStateHeader stateTable; KernSimpleArrayHeader simpleArray; KernIndexArrayHeader indexArray; }; */ union KernFormatSpecificHeader { KernOrderedListHeader orderedList; KernStateHeader stateTable; KernSimpleArrayHeader simpleArray; KernIndexArrayHeader indexArray; } struct KernVersion0SubtableHeader { ushort version_; ushort length; ushort stInfo; KernFormatSpecificHeader fsHeader; } struct KernSubtableHeader { int length; ushort stInfo; short tupleIndex; KernFormatSpecificHeader fsHeader; } struct BslnFormat0Part { SInt16* deltas; } struct BslnFormat1Part { SInt16* deltas; SFNTLookupTable mappingData; } struct BslnFormat2Part { ushort stdGlyph; SInt16* ctlPoints; } struct BslnFormat3Part { ushort stdGlyph; SInt16* ctlPoints; SFNTLookupTable mappingData; } union BslnFormatUnion { BslnFormat0Part fmt0Part; BslnFormat1Part fmt1Part; BslnFormat2Part fmt2Part; BslnFormat3Part fmt3Part; } struct BslnTable { int version_; ushort format; ushort defaultBaseline; BslnFormatUnion parts; }