Documentation ¶
Index ¶
- Constants
- func DecodeMacintosh(encoded []byte) string
- func DecodeMacintoshByte(b byte) rune
- func Float1616ToUint(f Float1616) uint32
- func Float214FromUint(v uint16) float32
- func ParseLoca(src []byte, numGlyphs int, isLong bool) (out []uint32, err error)
- func ParseUint16s(src []byte, count int) ([]uint16, error)
- type AATFeature
- type AATKernSubtableHeader
- type AATLookup
- type AATLookupExt
- type AATLookupRecord4
- type AATLoopkup0
- type AATLoopkup10
- type AATLoopkup2
- type AATLoopkup4
- type AATLoopkup6
- type AATLoopkup8
- type AATLoopkup8Data
- type AATLoopkupExt0
- type AATLoopkupExt10
- type AATLoopkupExt2
- type AATLoopkupExt4
- type AATLoopkupExt6
- type AATLoopkupExt8
- type AATStateEntry
- type AATStateTable
- type AATStateTableExt
- type AatLookupMixed
- type AlternateSet
- type AlternateSubs
- type Anchor
- type AnchorFormat1
- type AnchorFormat2
- type AnchorFormat3
- type AnchorMatrix
- type Ankr
- type AnkrAnchor
- type AttachList
- type AttachPoint
- type Avar
- type AxisValueMap
- type BaseArray
- type BigGlyphMetrics
- type BitmapData17
- type BitmapData18
- type BitmapData19
- type BitmapData2
- type BitmapData5
- type BitmapGlyphData
- type BitmapSize
- type BitmapSubtable
- type Bloc
- type CBLC
- type CFF
- type CaretValue
- type CaretValue1
- type CaretValue2
- type CaretValue3
- type ChainedClassSequenceRuleSet
- type ChainedContextualPos
- type ChainedContextualPos1
- type ChainedContextualPos2
- type ChainedContextualPos3
- type ChainedContextualPosITF
- type ChainedContextualSubs
- type ChainedContextualSubs1
- type ChainedContextualSubs2
- type ChainedContextualSubs3
- type ChainedContextualSubsITF
- type ChainedSequenceContextFormat1
- type ChainedSequenceContextFormat2
- type ChainedSequenceContextFormat3
- type ChainedSequenceRule
- type ChainedSequenceRuleSet
- type Class1Record
- type Class2Record
- type ClassDef
- type ClassDef1
- type ClassDef2
- type ClassRangeRecord
- type ClassSequenceRuleSet
- type ClassTable
- type Cmap
- type CmapSubtable
- type CmapSubtable0
- type CmapSubtable10
- type CmapSubtable12
- type CmapSubtable13
- type CmapSubtable14
- type CmapSubtable2
- type CmapSubtable4
- type CmapSubtable6
- type CompositeGlyph
- type CompositeGlyphPart
- type ConditionFormat1
- type ConditionSet
- type ContextualPos
- type ContextualPos1
- type ContextualPos2
- type ContextualPos3
- type ContextualPosITF
- type ContextualSubs
- type ContextualSubs1
- type ContextualSubs2
- type ContextualSubs3
- type ContextualSubsITF
- type Coord
- type Coverage
- type Coverage1
- type Coverage2
- type CursivePos
- type DefaultUVSTable
- type DeltaSetMapping
- type DeviceHinting
- type DeviceTable
- type DeviceTableHeader
- type DeviceVariation
- type EBLC
- type EncodingID
- type EncodingRecord
- type EntryExit
- type Extension
- type ExtensionPos
- type ExtensionSubs
- type Feat
- type Feature
- type FeatureList
- type FeatureName
- type FeatureSettingName
- type FeatureTableSubstitution
- type FeatureTableSubstitutionRecord
- type FeatureVariation
- type FeatureVariationRecord
- type Float1616
- type FontPage
- type Fvar
- type FvarRecords
- type GDEF
- type GPOS
- type GPOSLookup
- type GSUB
- type GSUBLookup
- type Glyf
- type Glyph
- type GlyphContourPoint
- type GlyphData
- type GlyphID
- type GlyphIdOffsetPair
- type GlyphProps
- type GlyphVariationData
- type Gvar
- type HVAR
- type Head
- type Hhea
- type Hmtx
- type IndexData
- type IndexData1
- type IndexData2
- type IndexData3
- type IndexData4
- type IndexData5
- type IndexSubHeader
- type IndexSubTableArray
- type IndexSubTableHeader
- type InstanceRecord
- type ItemVarStore
- type ItemVariationData
- type KAAnchor
- type KAControl
- type KACoordinates
- type Kern
- type KernData
- type KernData0
- type KernData1
- type KernData2
- type KernData3
- type KernSubtable
- type Kernx0Record
- type Kerx
- type KerxAnchorAnchors
- type KerxAnchorControls
- type KerxAnchorCoordinates
- type KerxAnchors
- type KerxData
- type KerxData0
- type KerxData1
- type KerxData2
- type KerxData4
- type KerxData6
- type KerxSubtable
- type LangSys
- type LanguageID
- type Layout
- type LigCaretList
- type LigGlyph
- type Ligature
- type LigatureArray
- type LigatureAttach
- type LigatureSet
- type LigatureSubs
- type LongHorMetric
- type Lookup
- type LookupRecord2
- type Ltag
- type MVAR
- type Mark2Array
- type MarkArray
- type MarkBasePos
- type MarkGlyphSets
- type MarkLigPos
- type MarkMarkPos
- type MarkRecord
- type Maxp
- type Morx
- type MorxChain
- type MorxChainSubtable
- type MorxSubtable
- type MorxSubtableContextual
- type MorxSubtableInsertion
- type MorxSubtableLigature
- type MorxSubtableNonContextual
- type MorxSubtableRearrangement
- type MorxSubtableVersion
- type MultipleSubs
- type Name
- type NameID
- type OTKernSubtableHeader
- type Offset16
- type Offset32
- type Os2
- type PairPos
- type PairPosData
- type PairPosData1
- type PairPosData2
- type PairSet
- type PairValueRecord
- type PlatformID
- type Post
- type PostNames
- type PostNames10
- type PostNames20
- type PostNames30
- type RangeRecord
- type RegionAxisCoordinates
- type ReverseChainSingleSubs
- type SVG
- type SVGDocumentList
- type SVGDocumentRecord
- type SbitLineMetrics
- type Sbix
- type Script
- type ScriptList
- type SegmentMaps
- type Sequence
- type SequenceContextFormat1
- type SequenceContextFormat2
- type SequenceContextFormat3
- type SequenceLookupRecord
- type SequenceRule
- type SequenceRuleSet
- type SequentialMapGroup
- type SharedTuples
- type SimpleGlyph
- type SinglePos
- type SinglePosData
- type SinglePosData1
- type SinglePosData2
- type SingleSubs
- type SingleSubstData
- type SingleSubstData1
- type SingleSubstData2
- type SmallGlyphMetrics
- type Strike
- type SubstitutionsTable
- type Tag
- type TagOffsetRecord
- type TrackData
- type TrackTableEntry
- type Trak
- type Tuple
- type TupleVariationHeader
- type UVSMappingTable
- type UnicodeRange
- type UvsMappingRecord
- type VORG
- type VVAR
- type ValueFormat
- type ValueRecord
- type VarValueRecord
- type VariationAxisRecord
- type VariationRegion
- type VariationRegionList
- type VariationSelector
- type VariationStoreIndex
- type VertOriginYMetric
- type Vhea
- type Vmtx
Constants ¶
const ( Kerx1Push = 0x8000 // If set, push this glyph on the kerning stack. Kerx1DontAdvance = 0x4000 // If set, don't advance to the next glyph before going to the new state. Kerx1Reset = 0x2000 // If set, reset the kerning data (clear the stack) Kern1Offset = 0x3FFF // Byte offset from beginning of subtable to the value table for the glyphs on the kerning stack. )
Kernx1 state entry flags
const ( // Push this glyph onto the component stack for // eventual processing. MLSetComponent = 0x8000 // Leave the glyph pointer at this glyph for the // next iteration. MLDontAdvance = 0x4000 // Use the ligActionIndex to process a ligature group. MLPerformAction = 0x2000 // Byte offset from beginning of subtable to the // ligature action list. This value must be a // multiple of 4. MLOffset = 0x3FFF // This is the last action in the list. This also // implies storage. MLActionLast = 1 << 31 // Store the ligature at the current cumulated index // in the ligature table in place of the marked // (i.e. currently-popped) glyph. MLActionStore = 1 << 30 // A 30-bit value which is sign-extended to 32-bits // and added to the glyph ID, resulting in an index // into the component table. MLActionOffset = 0x3FFFFFFF )
MorxLigatureSubtable flags
const ( // If set, mark the current glyph. MISetMark = 0x8000 // If set, don't advance to the next glyph before // going to the new state. This does not mean // that the glyph pointed to is the same one as // before. If you've made insertions immediately // downstream of the current glyph, the next glyph // processed would in fact be the first one // inserted. MIDontAdvance = 0x4000 // If set, and the currentInsertList is nonzero, // then the specified glyph list will be inserted // as a kashida-like insertion, either before or // after the current glyph (depending on the state // of the currentInsertBefore flag). If clear, and // the currentInsertList is nonzero, then the // specified glyph list will be inserted as a // split-vowel-like insertion, either before or // after the current glyph (depending on the state // of the currentInsertBefore flag). MICurrentIsKashidaLike = 0x2000 // If set, and the markedInsertList is nonzero, // then the specified glyph list will be inserted // as a kashida-like insertion, either before or // after the marked glyph (depending on the state // of the markedInsertBefore flag). If clear, and // the markedInsertList is nonzero, then the // specified glyph list will be inserted as a // split-vowel-like insertion, either before or // after the marked glyph (depending on the state // of the markedInsertBefore flag). MIMarkedIsKashidaLike = 0x1000 // If set, specifies that insertions are to be made // to the left of the current glyph. If clear, // they're made to the right of the current glyph. MICurrentInsertBefore = 0x0800 // If set, specifies that insertions are to be // made to the left of the marked glyph. If clear, // they're made to the right of the marked glyph. MIMarkedInsertBefore = 0x0400 // This 5-bit field is treated as a count of the // number of glyphs to insert at the current // position. Since zero means no insertions, the // largest number of insertions at any given // current location is 31 glyphs. MICurrentInsertCount = 0x3E0 // This 5-bit field is treated as a count of the // number of glyphs to insert at the marked // position. Since zero means no insertions, the // largest number of insertions at any given // marked location is 31 glyphs. MIMarkedInsertCount = 0x001F )
MorxInsertionSubtable flags
const ( PEUnicodeDefault = EncodingID(0) PEUnicodeBMP = EncodingID(3) PEUnicodeFull = EncodingID(4) PEUnicodeFull13 = EncodingID(6) PEMacRoman = PEUnicodeDefault PEMicrosoftSymbolCs = EncodingID(0) PEMicrosoftUnicodeCs = EncodingID(1) PEMicrosoftUcs4 = EncodingID(10) )
Variables ¶
This section is empty.
Functions ¶
func DecodeMacintosh ¶
DecodeMacintosh decode a Macintosh encoded string
func DecodeMacintoshByte ¶
DecodeMacintoshByte returns the rune for the given byte
func Float1616ToUint ¶
func Float214FromUint ¶
Types ¶
type AATFeature ¶
type AATKernSubtableHeader ¶
type AATKernSubtableHeader struct { Coverage byte // Circumstances under which this table is used. TupleCount uint16 // The tuple count. This value is only used with variation fonts and should be 0 for all other fonts. The subtable's tupleCount will be ignored if the 'kerx' table version is less than 4. // contains filtered or unexported fields }
func ParseAATKernSubtableHeader ¶
func ParseAATKernSubtableHeader(src []byte) (AATKernSubtableHeader, int, error)
func (AATKernSubtableHeader) Data ¶
func (k AATKernSubtableHeader) Data() KernData
type AATLookup ¶
type AATLookup interface { AatLookupMixed // Class returns the class ID for the provided glyph, or (0, false) // for glyphs not covered by this class. Class(g GlyphID) (uint16, bool) // contains filtered or unexported methods }
AATLookup is conceptually a map[GlyphID]uint16, but it may be implemented more efficiently.
type AATLookupExt ¶
type AATLookupExt interface { AatLookupMixed // Class returns the class ID for the provided glyph, or (0, false) // for glyphs not covered by this class. Class(g GlyphID) (uint32, bool) // contains filtered or unexported methods }
AATLookupExt is the same as AATLookup, but class values are uint32
func ParseAATLookupExt ¶
func ParseAATLookupExt(src []byte, valuesCount int) (AATLookupExt, int, error)
type AATLookupRecord4 ¶
type AATLookupRecord4 struct { LastGlyph GlyphID FirstGlyph GlyphID // offset to an array of []uint16 (or []uint32 for extended) with length last - first + 1 Values []uint16 `offsetSize:"Offset16" offsetRelativeTo:"Parent" arrayCount:"ComputedField-nValues()"` }
func ParseAATLookupRecord4 ¶
func ParseAATLookupRecord4(src []byte, parentSrc []byte) (AATLookupRecord4, int, error)
type AATLoopkup0 ¶
type AATLoopkup0 struct { Values []uint16 `arrayCount:""` // contains filtered or unexported fields }
func ParseAATLoopkup0 ¶
func ParseAATLoopkup0(src []byte, valuesCount int) (AATLoopkup0, int, error)
func (AATLoopkup0) ClassUint32 ¶
func (lk AATLoopkup0) ClassUint32(g GlyphID) uint32
type AATLoopkup10 ¶
type AATLoopkup10 struct { FirstGlyph GlyphID Values []uint16 `arrayCount:"FirstUint16"` // contains filtered or unexported fields }
func ParseAATLoopkup10 ¶
func ParseAATLoopkup10(src []byte) (AATLoopkup10, int, error)
func (AATLoopkup10) ClassUint32 ¶
func (lk AATLoopkup10) ClassUint32(g GlyphID) uint32
type AATLoopkup2 ¶
type AATLoopkup2 struct { Records []LookupRecord2 `arrayCount:"ComputedField-nUnits"` // contains filtered or unexported fields }
func ParseAATLoopkup2 ¶
func ParseAATLoopkup2(src []byte) (AATLoopkup2, int, error)
func (AATLoopkup2) ClassUint32 ¶
func (lk AATLoopkup2) ClassUint32(g GlyphID) uint32
type AATLoopkup4 ¶
type AATLoopkup4 struct { // Do not include the termination segment Records []AATLookupRecord4 `arrayCount:"ComputedField-nUnits-1"` // contains filtered or unexported fields }
func ParseAATLoopkup4 ¶
func ParseAATLoopkup4(src []byte) (AATLoopkup4, int, error)
func (AATLoopkup4) ClassUint32 ¶
func (lk AATLoopkup4) ClassUint32(g GlyphID) uint32
type AATLoopkup6 ¶
type AATLoopkup6 struct { Records []loopkupRecord6 `arrayCount:"ComputedField-nUnits"` // contains filtered or unexported fields }
func ParseAATLoopkup6 ¶
func ParseAATLoopkup6(src []byte) (AATLoopkup6, int, error)
func (AATLoopkup6) ClassUint32 ¶
func (lk AATLoopkup6) ClassUint32(g GlyphID) uint32
type AATLoopkup8 ¶
type AATLoopkup8 struct { AATLoopkup8Data // contains filtered or unexported fields }
func ParseAATLoopkup8 ¶
func ParseAATLoopkup8(src []byte) (AATLoopkup8, int, error)
func (AATLoopkup8) ClassUint32 ¶
func (lk AATLoopkup8) ClassUint32(g GlyphID) uint32
type AATLoopkup8Data ¶
func ParseAATLoopkup8Data ¶
func ParseAATLoopkup8Data(src []byte) (AATLoopkup8Data, int, error)
type AATLoopkupExt0 ¶
type AATLoopkupExt0 struct { Values []uint32 `arrayCount:""` // contains filtered or unexported fields }
func ParseAATLoopkupExt0 ¶
func ParseAATLoopkupExt0(src []byte, valuesCount int) (AATLoopkupExt0, int, error)
func (AATLoopkupExt0) ClassUint32 ¶
func (lk AATLoopkupExt0) ClassUint32(g GlyphID) uint32
type AATLoopkupExt10 ¶
type AATLoopkupExt10 struct { FirstGlyph GlyphID Values []uint32 `arrayCount:"FirstUint16"` // contains filtered or unexported fields }
func ParseAATLoopkupExt10 ¶
func ParseAATLoopkupExt10(src []byte) (AATLoopkupExt10, int, error)
func (AATLoopkupExt10) ClassUint32 ¶
func (lk AATLoopkupExt10) ClassUint32(g GlyphID) uint32
type AATLoopkupExt2 ¶
type AATLoopkupExt2 struct { Records []lookupRecordExt2 `arrayCount:"ComputedField-nUnits"` // contains filtered or unexported fields }
func ParseAATLoopkupExt2 ¶
func ParseAATLoopkupExt2(src []byte) (AATLoopkupExt2, int, error)
func (AATLoopkupExt2) ClassUint32 ¶
func (lk AATLoopkupExt2) ClassUint32(g GlyphID) uint32
type AATLoopkupExt4 ¶
type AATLoopkupExt4 struct { // the values pointed by the record are uint32 Records []loopkupRecordExt4 `arrayCount:"ComputedField-nUnits"` // contains filtered or unexported fields }
func ParseAATLoopkupExt4 ¶
func ParseAATLoopkupExt4(src []byte) (AATLoopkupExt4, int, error)
func (AATLoopkupExt4) ClassUint32 ¶
func (lk AATLoopkupExt4) ClassUint32(g GlyphID) uint32
type AATLoopkupExt6 ¶
type AATLoopkupExt6 struct { Records []loopkupRecordExt6 `arrayCount:"ComputedField-nUnits"` // contains filtered or unexported fields }
func ParseAATLoopkupExt6 ¶
func ParseAATLoopkupExt6(src []byte) (AATLoopkupExt6, int, error)
func (AATLoopkupExt6) ClassUint32 ¶
func (lk AATLoopkupExt6) ClassUint32(g GlyphID) uint32
type AATLoopkupExt8 ¶
type AATLoopkupExt8 AATLoopkup8
func ParseAATLoopkupExt8 ¶
func ParseAATLoopkupExt8(src []byte) (AATLoopkupExt8, int, error)
func (AATLoopkupExt8) ClassUint32 ¶
func (lk AATLoopkupExt8) ClassUint32(g GlyphID) uint32
type AATStateEntry ¶
type AATStateEntry struct { NewState uint16 Flags uint16 // Table specific. // contains filtered or unexported fields }
AATStateEntry is shared between old and extended state tables, and between the different kind of entries. See the various AsXXX() methods.
func (AATStateEntry) AsKernxIndex ¶
func (e AATStateEntry) AsKernxIndex() uint16
AsKernxIndex reads the internal data for entries in 'kern/x' subtable format 1 or 4. An entry with no index returns 0xFFFF
func (AATStateEntry) AsMorxContextual ¶
func (e AATStateEntry) AsMorxContextual() (markIndex, currentIndex uint16)
AsMorxContextual reads the internal data for entries in morx contextual subtable. The returned indexes use 0xFFFF as empty value.
func (AATStateEntry) AsMorxInsertion ¶
func (e AATStateEntry) AsMorxInsertion() (currentIndex, markedIndex uint16)
AsMorxInsertion reads the internal data for entries in morx insertion subtable. The returned indexes use 0xFFFF as empty value.
func (AATStateEntry) AsMorxLigature ¶
func (e AATStateEntry) AsMorxLigature() (ligActionIndex uint16)
AsMorxLigature reads the internal data for entries in morx ligature subtable.
type AATStateTable ¶
type AATStateTable struct { StateSize uint16 // Size of a state, in bytes. The size is limited to 8 bits, although the field is 16 bits for alignment. ClassTable ClassTable `offsetSize:"Offset16"` // Byte offset from the beginning of the state table to the class subtable. States [][]uint8 `isOpaque:""` Entries []AATStateEntry `isOpaque:""` // entry data are empty // contains filtered or unexported fields }
State table header, without the actual data See https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6Tables.html
func ParseAATStateTable ¶
func ParseAATStateTable(src []byte) (AATStateTable, int, error)
type AATStateTableExt ¶
type AATStateTableExt struct { StateSize uint32 // Size of a state, in bytes. The size is limited to 8 bits, although the field is 16 bits for alignment. Class AATLookup `offsetSize:"Offset32"` // Byte offset from the beginning of the state table to the class subtable. States [][]uint16 `isOpaque:""` // each sub array has length stateSize Entries []AATStateEntry `isOpaque:""` // length is the maximum state + 1 // contains filtered or unexported fields }
Extended state table, including the data See https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6Tables.html - State tables binarygen: argument=entryDataSize int
func ParseAATStateTableExt ¶
type AatLookupMixed ¶
type AlternateSet ¶
type AlternateSet struct {
AlternateGlyphIDs []GlyphID `arrayCount:"FirstUint16"` // Array of alternate glyph IDs, in arbitrary order
}
func ParseAlternateSet ¶
func ParseAlternateSet(src []byte) (AlternateSet, int, error)
type AlternateSubs ¶
type AlternateSubs struct { Coverage Coverage `offsetSize:"Offset16"` // Offset to Coverage table, from beginning of substitution subtable AlternateSets []AlternateSet `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // contains filtered or unexported fields }
func ParseAlternateSubs ¶
func ParseAlternateSubs(src []byte) (AlternateSubs, int, error)
func (AlternateSubs) Cov ¶
func (lk AlternateSubs) Cov() Coverage
type AnchorFormat1 ¶
type AnchorFormat1 struct { XCoordinate int16 // Horizontal value, in design units YCoordinate int16 // Vertical value, in design units // contains filtered or unexported fields }
func ParseAnchorFormat1 ¶
func ParseAnchorFormat1(src []byte) (AnchorFormat1, int, error)
type AnchorFormat2 ¶
type AnchorFormat2 struct { XCoordinate int16 // Horizontal value, in design units YCoordinate int16 // Vertical value, in design units AnchorPoint uint16 // Index to glyph contour point // contains filtered or unexported fields }
func ParseAnchorFormat2 ¶
func ParseAnchorFormat2(src []byte) (AnchorFormat2, int, error)
type AnchorFormat3 ¶
type AnchorFormat3 struct { XCoordinate int16 // Horizontal value, in design units YCoordinate int16 // Vertical value, in design units XDevice DeviceTable `isOpaque:""` // Offset to Device table (non-variable font) / VariationIndex table (variable font) for X coordinate, from beginning of Anchor table (may be NULL) YDevice DeviceTable `isOpaque:""` // Offset to Device table (non-variable font) / VariationIndex table (variable font) for Y coordinate, from beginning of Anchor table (may be NULL) // contains filtered or unexported fields }
func ParseAnchorFormat3 ¶
func ParseAnchorFormat3(src []byte) (AnchorFormat3, int, error)
type AnchorMatrix ¶
type AnchorMatrix struct {
// contains filtered or unexported fields
}
AnchorMatrix is a compact representation of a [][]Anchor
func (AnchorMatrix) Anchor ¶
func (am AnchorMatrix) Anchor(index, class int) Anchor
func (AnchorMatrix) Len ¶
func (am AnchorMatrix) Len() int
type Ankr ¶
type Ankr struct {
// contains filtered or unexported fields
}
Ankr is the anchor point table See - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ankr.html
type AnkrAnchor ¶
type AnkrAnchor struct {
X, Y int16
}
AnkrAnchor is a point within the coordinate space of a given glyph independent of the control points used to render the glyph
func ParseAnkrAnchor ¶
func ParseAnkrAnchor(src []byte) (AnkrAnchor, int, error)
type AttachList ¶
type AttachList struct { Coverage Coverage `offsetSize:"Offset16"` // Offset to Coverage table - from beginning of AttachList table AttachPoints []AttachPoint `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // [glyphCount] Array of offsets to AttachPoint tables-from beginning of AttachList table-in Coverage Index order }
func ParseAttachList ¶
func ParseAttachList(src []byte) (AttachList, int, error)
type AttachPoint ¶
type AttachPoint struct {
PointIndices []uint16 `arrayCount:"FirstUint16"` // [pointCount] Array of contour point indices -in increasing numerical order
}
func ParseAttachPoint ¶
func ParseAttachPoint(src []byte) (AttachPoint, int, error)
type Avar ¶
type Avar struct { AxisSegmentMaps []SegmentMaps `arrayCount:"FirstUint16"` //[axisCount] The segment maps array — one segment map for each axis, in the order of axes specified in the 'fvar' table. // contains filtered or unexported fields }
avar — Axis Variations Table
type AxisValueMap ¶
type BaseArray ¶
type BaseArray struct {
// contains filtered or unexported fields
}
func (BaseArray) Anchors ¶
func (ba BaseArray) Anchors() AnchorMatrix
type BigGlyphMetrics ¶
type BigGlyphMetrics struct { SmallGlyphMetrics // contains filtered or unexported fields }
type BitmapData17 ¶
type BitmapData17 struct { SmallGlyphMetrics Image []byte `arrayCount:"FirstUint32"` }
Format 17: small metrics, PNG image data
func ParseBitmapData17 ¶
func ParseBitmapData17(src []byte) (BitmapData17, int, error)
type BitmapData18 ¶
type BitmapData18 struct { BigGlyphMetrics Image []byte `arrayCount:"FirstUint32"` }
Format 18: big metrics, PNG image data
func ParseBitmapData18 ¶
func ParseBitmapData18(src []byte) (BitmapData18, int, error)
type BitmapData19 ¶
type BitmapData19 struct {
Image []byte `arrayCount:"FirstUint32"`
}
Format 19: metrics in CBLC table, PNG image data
func ParseBitmapData19 ¶
func ParseBitmapData19(src []byte) (BitmapData19, int, error)
type BitmapData2 ¶
type BitmapData2 struct { SmallGlyphMetrics Image []byte `arrayCount:"ToEnd"` }
Format 2: small metrics, bit-aligned data
func ParseBitmapData2 ¶
func ParseBitmapData2(src []byte) (BitmapData2, int, error)
type BitmapData5 ¶
type BitmapData5 struct {
Image []byte `arrayCount:"ToEnd"`
}
Format 5: metrics in CBLC table, bit-aligned image data only
func ParseBitmapData5 ¶
func ParseBitmapData5(src []byte) (BitmapData5, int, error)
type BitmapGlyphData ¶
type BitmapGlyphData struct { OriginOffsetX int16 // The horizontal (x-axis) position of the left edge of the bitmap graphic in relation to the glyph design space origin. OriginOffsetY int16 // The vertical (y-axis) position of the bottom edge of the bitmap graphic in relation to the glyph design space origin. GraphicType Tag // Indicates the format of the embedded graphic data: one of 'jpg ', 'png ' or 'tiff', or the special format 'dupe'. Data []byte `arrayCount:"ToEnd"` // The actual embedded graphic data. The total length is inferred from sequential entries in the glyphDataOffsets array and the fixed size (8 bytes) of the preceding fields. }
func ParseBitmapGlyphData ¶
func ParseBitmapGlyphData(src []byte) (BitmapGlyphData, int, error)
type BitmapSize ¶
type BitmapSize struct { Hori SbitLineMetrics // Line metrics for text rendered horizontally. Vert SbitLineMetrics // Line metrics for text rendered vertically. PpemX uint8 // Horizontal pixels per em. PpemY uint8 // Vertical pixels per em. // contains filtered or unexported fields }
type BitmapSubtable ¶
type BitmapSubtable struct { FirstGlyph GlyphID // First glyph ID of this range. LastGlyph GlyphID // Last glyph ID of this range (inclusive). IndexSubHeader }
type Bloc ¶
type Bloc = CBLC
Bloc is the bitmap location table See - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
type CBLC ¶
type CBLC struct { BitmapSizes []BitmapSize `arrayCount:"FirstUint32"` // BitmapSize records array. IndexSubTables [][]BitmapSubtable `isOpaque:""` // with same length as [BitmapSizes] // contains filtered or unexported fields }
CBLC is the Color Bitmap Location Table See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/cblc
type CFF ¶
type CFF = []byte
CFF is the Compact Font Format Table. Since it used its own format, quite different from the regular Opentype format, its interpretation is handled externally (see font/cff). See also https://learn.microsoft.com/fr-fr/typography/opentype/spec/cff
type CaretValue ¶
type CaretValue interface {
// contains filtered or unexported methods
}
func ParseCaretValue ¶
func ParseCaretValue(src []byte) (CaretValue, int, error)
type CaretValue1 ¶
type CaretValue1 struct { Coordinate int16 // X or Y value, in design units // contains filtered or unexported fields }
func ParseCaretValue1 ¶
func ParseCaretValue1(src []byte) (CaretValue1, int, error)
type CaretValue2 ¶
type CaretValue2 struct { CaretValuePointIndex uint16 // Contour point index on glyph // contains filtered or unexported fields }
func ParseCaretValue2 ¶
func ParseCaretValue2(src []byte) (CaretValue2, int, error)
type CaretValue3 ¶
type CaretValue3 struct { Coordinate int16 // X or Y value, in design units Device DeviceTable `isOpaque:""` // contains filtered or unexported fields }
func ParseCaretValue3 ¶
func ParseCaretValue3(src []byte) (CaretValue3, int, error)
type ChainedClassSequenceRuleSet ¶
type ChainedClassSequenceRuleSet = ChainedSequenceRuleSet
ChainedClassSequenceRuleSet has the same binary format as ChainedSequenceRuleSet, and using the same type simplifies later processing.
type ChainedContextualPos ¶
type ChainedContextualPos struct {
Data ChainedContextualPosITF
}
func ParseChainedContextualPos ¶
func ParseChainedContextualPos(src []byte) (ChainedContextualPos, int, error)
func (ChainedContextualPos) Cov ¶
func (lk ChainedContextualPos) Cov() Coverage
type ChainedContextualPos1 ¶
type ChainedContextualPos1 ChainedSequenceContextFormat1
func ParseChainedContextualPos1 ¶
func ParseChainedContextualPos1(src []byte) (ChainedContextualPos1, int, error)
func (ChainedContextualPos1) Cov ¶
func (cc ChainedContextualPos1) Cov() Coverage
type ChainedContextualPos2 ¶
type ChainedContextualPos2 ChainedSequenceContextFormat2
func ParseChainedContextualPos2 ¶
func ParseChainedContextualPos2(src []byte) (ChainedContextualPos2, int, error)
func (ChainedContextualPos2) Cov ¶
func (cc ChainedContextualPos2) Cov() Coverage
type ChainedContextualPos3 ¶
type ChainedContextualPos3 ChainedSequenceContextFormat3
func ParseChainedContextualPos3 ¶
func ParseChainedContextualPos3(src []byte) (ChainedContextualPos3, int, error)
func (ChainedContextualPos3) Cov ¶
func (cc ChainedContextualPos3) Cov() Coverage
type ChainedContextualPosITF ¶
type ChainedContextualPosITF interface { Cov() Coverage // contains filtered or unexported methods }
func ParseChainedContextualPosITF ¶
func ParseChainedContextualPosITF(src []byte) (ChainedContextualPosITF, int, error)
type ChainedContextualSubs ¶
type ChainedContextualSubs struct {
Data ChainedContextualSubsITF
}
func ParseChainedContextualSubs ¶
func ParseChainedContextualSubs(src []byte) (ChainedContextualSubs, int, error)
func (ChainedContextualSubs) Cov ¶
func (lk ChainedContextualSubs) Cov() Coverage
type ChainedContextualSubs1 ¶
type ChainedContextualSubs1 ChainedSequenceContextFormat1
func ParseChainedContextualSubs1 ¶
func ParseChainedContextualSubs1(src []byte) (ChainedContextualSubs1, int, error)
func (ChainedContextualSubs1) Cov ¶
func (cc ChainedContextualSubs1) Cov() Coverage
type ChainedContextualSubs2 ¶
type ChainedContextualSubs2 ChainedSequenceContextFormat2
func ParseChainedContextualSubs2 ¶
func ParseChainedContextualSubs2(src []byte) (ChainedContextualSubs2, int, error)
func (ChainedContextualSubs2) Cov ¶
func (cc ChainedContextualSubs2) Cov() Coverage
type ChainedContextualSubs3 ¶
type ChainedContextualSubs3 ChainedSequenceContextFormat3
func ParseChainedContextualSubs3 ¶
func ParseChainedContextualSubs3(src []byte) (ChainedContextualSubs3, int, error)
func (ChainedContextualSubs3) Cov ¶
func (cc ChainedContextualSubs3) Cov() Coverage
type ChainedContextualSubsITF ¶
type ChainedContextualSubsITF interface { Cov() Coverage // contains filtered or unexported methods }
func ParseChainedContextualSubsITF ¶
func ParseChainedContextualSubsITF(src []byte) (ChainedContextualSubsITF, int, error)
type ChainedSequenceContextFormat1 ¶
type ChainedSequenceContextFormat1 struct { ChainedSeqRuleSet []ChainedSequenceRuleSet `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[chainedSeqRuleSetCount] Array of offsets to ChainedSeqRuleSet tables, from beginning of ChainedSequenceContextFormat1 table (may be NULL) // contains filtered or unexported fields }
type ChainedSequenceContextFormat2 ¶
type ChainedSequenceContextFormat2 struct { BacktrackClassDef ClassDef `offsetSize:"Offset16"` // Offset to ClassDef table containing backtrack sequence context, from beginning of ChainedSequenceContextFormat2 table InputClassDef ClassDef `offsetSize:"Offset16"` // Offset to ClassDef table containing input sequence context, from beginning of ChainedSequenceContextFormat2 table LookaheadClassDef ClassDef `offsetSize:"Offset16"` // Offset to ClassDef table containing lookahead sequence context, from beginning of ChainedSequenceContextFormat2 table ChainedClassSeqRuleSet []ChainedClassSequenceRuleSet `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[chainedClassSeqRuleSetCount] Array of offsets to ChainedClassSequenceRuleSet tables, from beginning of ChainedSequenceContextFormat2 table (may be NULL) // contains filtered or unexported fields }
type ChainedSequenceContextFormat3 ¶
type ChainedSequenceContextFormat3 struct { BacktrackCoverages []Coverage `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[backtrackGlyphCount] Array of offsets to coverage tables for the backtrack sequence InputCoverages []Coverage `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[inputGlyphCount] Array of offsets to coverage tables for the input sequence LookaheadCoverages []Coverage `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[lookaheadGlyphCount] Array of offsets to coverage tables for the lookahead sequence SeqLookupRecords []SequenceLookupRecord `arrayCount:"FirstUint16"` //[seqLookupCount] Array of SequenceLookupRecords // contains filtered or unexported fields }
type ChainedSequenceRule ¶
type ChainedSequenceRule struct { BacktrackSequence []GlyphID `arrayCount:"FirstUint16"` //[backtrackGlyphCount] Array of backtrack glyph IDs InputSequence []GlyphID `arrayCount:"ComputedField-inputGlyphCount-1"` //[inputGlyphCount - 1] Array of input glyph IDs—start with second glyph LookaheadSequence []GlyphID `arrayCount:"FirstUint16"` //[lookaheadGlyphCount] Array of lookahead glyph IDs SeqLookupRecords []SequenceLookupRecord `arrayCount:"FirstUint16"` //[seqLookupCount] Array of SequenceLookupRecords // contains filtered or unexported fields }
func ParseChainedSequenceRule ¶
func ParseChainedSequenceRule(src []byte) (ChainedSequenceRule, int, error)
type ChainedSequenceRuleSet ¶
type ChainedSequenceRuleSet struct {
ChainedSeqRules []ChainedSequenceRule `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // Array of offsets to SequenceRule tables, from beginning of the SequenceRuleSet table
}
func ParseChainedSequenceRuleSet ¶
func ParseChainedSequenceRuleSet(src []byte) (ChainedSequenceRuleSet, int, error)
type Class1Record ¶
type Class1Record []Class2Record //[class2Count] Array of Class2 records, ordered by classes in classDef2.
type Class2Record ¶
type Class2Record struct { ValueRecord1 ValueRecord // Positioning for first glyph — empty if valueFormat1 = 0. ValueRecord2 ValueRecord // Positioning for second glyph — empty if valueFormat2 = 0. }
type ClassDef ¶
type ClassDef interface { Class(gi GlyphID) (uint16, bool) // Extent returns the maximum class ID + 1. This is the length // required for an array to be indexed by the class values. Extent() int // contains filtered or unexported methods }
ClassDef stores a value for a set of GlyphIDs. Conceptually it is a map[GlyphID]uint16, but it may be implemented more efficiently.
type ClassDef1 ¶
type ClassDef2 ¶
type ClassDef2 struct { ClassRangeRecords []ClassRangeRecord `arrayCount:"FirstUint16"` //[glyphCount] Array of Class Values — one per glyph ID // contains filtered or unexported fields }
type ClassRangeRecord ¶
type ClassSequenceRuleSet ¶
type ClassSequenceRuleSet = SequenceRuleSet
ClassSequenceRuleSet has the same binary format as SequenceRuleSet, and using the same type simplifies later processing.
type ClassTable ¶
ClassTable is the same as AATLookup8, but with no format and with bytes instead of uint16s
func ParseClassTable ¶
func ParseClassTable(src []byte) (ClassTable, int, error)
type Cmap ¶
type Cmap struct { Records []EncodingRecord `arrayCount:"ComputedField-numTables"` // contains filtered or unexported fields }
Cmap is the Character to Glyph Index Mapping table See https://learn.microsoft.com/en-us/typography/opentype/spec/cmap
type CmapSubtable ¶
type CmapSubtable interface {
// contains filtered or unexported methods
}
CmapSubtable is the union type for the various cmap formats
func ParseCmapSubtable ¶
func ParseCmapSubtable(src []byte) (CmapSubtable, int, error)
type CmapSubtable0 ¶
type CmapSubtable0 struct { GlyphIdArray [256]uint8 // An array that maps character codes to glyph index values. // contains filtered or unexported fields }
func ParseCmapSubtable0 ¶
func ParseCmapSubtable0(src []byte) (CmapSubtable0, int, error)
type CmapSubtable10 ¶
type CmapSubtable10 struct { StartCharCode uint32 // First character code covered GlyphIdArray []GlyphID `arrayCount:"FirstUint32"` // Array of glyph indices for the character codes covered // contains filtered or unexported fields }
func ParseCmapSubtable10 ¶
func ParseCmapSubtable10(src []byte) (CmapSubtable10, int, error)
type CmapSubtable12 ¶
type CmapSubtable12 struct { Groups []SequentialMapGroup `arrayCount:"FirstUint32"` // Array of SequentialMapGroup records. // contains filtered or unexported fields }
func ParseCmapSubtable12 ¶
func ParseCmapSubtable12(src []byte) (CmapSubtable12, int, error)
type CmapSubtable13 ¶
type CmapSubtable13 struct { Groups []SequentialMapGroup `arrayCount:"FirstUint32"` // Array of SequentialMapGroup records. // contains filtered or unexported fields }
func ParseCmapSubtable13 ¶
func ParseCmapSubtable13(src []byte) (CmapSubtable13, int, error)
type CmapSubtable14 ¶
type CmapSubtable14 struct { VarSelectors []VariationSelector `arrayCount:"FirstUint32"` // [numVarSelectorRecords] Array of VariationSelector records. // contains filtered or unexported fields }
func ParseCmapSubtable14 ¶
func ParseCmapSubtable14(src []byte) (CmapSubtable14, int, error)
type CmapSubtable2 ¶
type CmapSubtable2 struct {
// contains filtered or unexported fields
}
func ParseCmapSubtable2 ¶
func ParseCmapSubtable2(src []byte) (CmapSubtable2, int, error)
type CmapSubtable4 ¶
type CmapSubtable4 struct { EndCode []uint16 `arrayCount:"ComputedField-segCountX2 / 2"` // [segCount]uint16 End characterCode for each segment, last=0xFFFF. StartCode []uint16 `arrayCount:"ComputedField-segCountX2 / 2"` // [segCount]uint16 Start character code for each segment. IdDelta []uint16 `arrayCount:"ComputedField-segCountX2 / 2"` // [segCount]int16 Delta for all character codes in segment. IdRangeOffsets []uint16 `arrayCount:"ComputedField-segCountX2 / 2"` // [segCount]uint16 Offsets into glyphIdArray or 0 GlyphIDArray []byte `arrayCount:"ToEnd"` // glyphIdArray : uint16[] glyph index array (arbitrary length) // contains filtered or unexported fields }
func ParseCmapSubtable4 ¶
func ParseCmapSubtable4(src []byte) (CmapSubtable4, int, error)
type CmapSubtable6 ¶
type CmapSubtable6 struct { FirstCode uint16 // First character code of subrange. GlyphIdArray []GlyphID `arrayCount:"FirstUint16"` // Array of glyph index values for character codes in the range. // contains filtered or unexported fields }
func ParseCmapSubtable6 ¶
func ParseCmapSubtable6(src []byte) (CmapSubtable6, int, error)
type CompositeGlyph ¶
type CompositeGlyph struct { Glyphs []CompositeGlyphPart `isOpaque:""` Instructions []byte `isOpaque:""` }
func ParseCompositeGlyph ¶
func ParseCompositeGlyph(src []byte) (CompositeGlyph, int, error)
type CompositeGlyphPart ¶
type CompositeGlyphPart struct { Flags uint16 GlyphIndex GlyphID // Scale is a matrix x, 01, 10, y ; default to identity Scale [4]float32 // contains filtered or unexported fields }
func ParseCompositeGlyphPart ¶
func ParseCompositeGlyphPart(src []byte) (CompositeGlyphPart, int, error)
func (*CompositeGlyphPart) ArgsAsIndices ¶
func (c *CompositeGlyphPart) ArgsAsIndices() (int, int)
func (*CompositeGlyphPart) ArgsAsTranslation ¶
func (c *CompositeGlyphPart) ArgsAsTranslation() (int16, int16)
func (*CompositeGlyphPart) HasUseMyMetrics ¶
func (c *CompositeGlyphPart) HasUseMyMetrics() bool
func (*CompositeGlyphPart) IsAnchored ¶
func (c *CompositeGlyphPart) IsAnchored() bool
return true if arg1 and arg2 indicated an anchor point, not offsets
func (*CompositeGlyphPart) IsScaledOffsets ¶
func (c *CompositeGlyphPart) IsScaledOffsets() bool
type ConditionFormat1 ¶
type ConditionFormat1 struct { AxisIndex uint16 // Index (zero-based) for the variation axis within the 'fvar' table. FilterRangeMinValue Coord // Minimum value of the font variation instances that satisfy this condition. FilterRangeMaxValue Coord // Maximum value of the font variation instances that satisfy this condition. // contains filtered or unexported fields }
func ParseConditionFormat1 ¶
func ParseConditionFormat1(src []byte) (ConditionFormat1, int, error)
type ConditionSet ¶
type ConditionSet struct { // uint16 conditionCount Number of Conditions for this condition set. Conditions []ConditionFormat1 `arrayCount:"FirstUint16" offsetsArray:"Offset32"` // [conditionCount] Array of offsets to condition tables, from beginning of the ConditionSet table. }
func ParseConditionSet ¶
func ParseConditionSet(src []byte) (ConditionSet, int, error)
type ContextualPos ¶
type ContextualPos struct {
Data ContextualPosITF
}
func ParseContextualPos ¶
func ParseContextualPos(src []byte) (ContextualPos, int, error)
func (ContextualPos) Cov ¶
func (lk ContextualPos) Cov() Coverage
func (*ContextualPos) Sanitize ¶
func (cs *ContextualPos) Sanitize(lookupCount uint16) error
type ContextualPos1 ¶
type ContextualPos1 SequenceContextFormat1
func ParseContextualPos1 ¶
func ParseContextualPos1(src []byte) (ContextualPos1, int, error)
func (ContextualPos1) Cov ¶
func (cs ContextualPos1) Cov() Coverage
type ContextualPos2 ¶
type ContextualPos2 SequenceContextFormat2
func ParseContextualPos2 ¶
func ParseContextualPos2(src []byte) (ContextualPos2, int, error)
func (ContextualPos2) Cov ¶
func (cs ContextualPos2) Cov() Coverage
type ContextualPos3 ¶
type ContextualPos3 SequenceContextFormat3
func ParseContextualPos3 ¶
func ParseContextualPos3(src []byte) (ContextualPos3, int, error)
func (ContextualPos3) Cov ¶
func (cs ContextualPos3) Cov() Coverage
type ContextualPosITF ¶
type ContextualPosITF interface { Cov() Coverage // contains filtered or unexported methods }
func ParseContextualPosITF ¶
func ParseContextualPosITF(src []byte) (ContextualPosITF, int, error)
type ContextualSubs ¶
type ContextualSubs struct {
Data ContextualSubsITF
}
func ParseContextualSubs ¶
func ParseContextualSubs(src []byte) (ContextualSubs, int, error)
func (ContextualSubs) Cov ¶
func (lk ContextualSubs) Cov() Coverage
func (ContextualSubs) Sanitize ¶
func (cs ContextualSubs) Sanitize(lookupCount uint16) error
type ContextualSubs1 ¶
type ContextualSubs1 SequenceContextFormat1
func ParseContextualSubs1 ¶
func ParseContextualSubs1(src []byte) (ContextualSubs1, int, error)
func (ContextualSubs1) Cov ¶
func (cs ContextualSubs1) Cov() Coverage
type ContextualSubs2 ¶
type ContextualSubs2 SequenceContextFormat2
func ParseContextualSubs2 ¶
func ParseContextualSubs2(src []byte) (ContextualSubs2, int, error)
func (ContextualSubs2) Cov ¶
func (cs ContextualSubs2) Cov() Coverage
type ContextualSubs3 ¶
type ContextualSubs3 SequenceContextFormat3
func ParseContextualSubs3 ¶
func ParseContextualSubs3(src []byte) (ContextualSubs3, int, error)
func (ContextualSubs3) Cov ¶
func (cs ContextualSubs3) Cov() Coverage
type ContextualSubsITF ¶
type ContextualSubsITF interface { Cov() Coverage // contains filtered or unexported methods }
func ParseContextualSubsITF ¶
func ParseContextualSubsITF(src []byte) (ContextualSubsITF, int, error)
type Coverage ¶
type Coverage interface { // Index returns the index of the provided glyph, or // `false` if the glyph is not covered by this lookup. // Note: this method is injective: two distincts, covered glyphs are mapped // to distincts indices. Index(GlyphID) (int, bool) // Len return the number of glyphs covered. // It is 0 for empty coverages. // For non empty Coverages, it is also 1 + (maximum index returned) Len() int // contains filtered or unexported methods }
Coverage specifies all the glyphs affected by a substitution or positioning operation described in a subtable. Conceptually is it a []GlyphIndex, with an Index method, but it may be implemented for efficiently. See https://learn.microsoft.com/typography/opentype/spec/chapter2#lookup-table
type Coverage1 ¶
type Coverage1 struct { Glyphs []GlyphID `arrayCount:"FirstUint16"` // contains filtered or unexported fields }
type Coverage2 ¶
type Coverage2 struct { Ranges []RangeRecord `arrayCount:"FirstUint16"` // contains filtered or unexported fields }
type CursivePos ¶
type CursivePos struct { EntryExits []EntryExit `isOpaque:""` // contains filtered or unexported fields }
func ParseCursivePos ¶
func ParseCursivePos(src []byte) (CursivePos, int, error)
func (CursivePos) Cov ¶
func (lk CursivePos) Cov() Coverage
type DefaultUVSTable ¶
type DefaultUVSTable struct {
Ranges []UnicodeRange `arrayCount:"FirstUint32"`
}
DefaultUVSTable is used in Cmap format 14 See https://learn.microsoft.com/en-us/typography/opentype/spec/cmap#default-uvs-table
func ParseDefaultUVSTable ¶
func ParseDefaultUVSTable(src []byte) (DefaultUVSTable, int, error)
type DeltaSetMapping ¶
type DeltaSetMapping struct { // uint16 or uint32 mapCount : The number of mapping entries. Map []VariationStoreIndex `isOpaque:"" subsliceStart:"AtCurrent"` // contains filtered or unexported fields }
func ParseDeltaSetMapping ¶
func ParseDeltaSetMapping(src []byte) (DeltaSetMapping, int, error)
func (DeltaSetMapping) Index ¶
func (m DeltaSetMapping) Index(glyph GlyphID) VariationStoreIndex
Index returns the VariationStoreIndex for the given index.
type DeviceHinting ¶
type DeviceTable ¶
type DeviceTable interface {
// contains filtered or unexported methods
}
DeviceTable is either an DeviceHinting for standard fonts, or a DeviceVariation for variable fonts.
type DeviceTableHeader ¶
type DeviceTableHeader struct {
// contains filtered or unexported fields
}
DeviceTableHeader is the common header for DeviceTable See https://learn.microsoft.com/fr-fr/typography/opentype/spec/chapter2#device-and-variationindex-tables
func ParseDeviceTableHeader ¶
func ParseDeviceTableHeader(src []byte) (DeviceTableHeader, int, error)
type DeviceVariation ¶
type DeviceVariation VariationStoreIndex
type EBLC ¶
type EBLC = CBLC
EBLC is the Embedded Bitmap Location Table See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/eblc
type EncodingID ¶
type EncodingID uint16
EncodingID represents the platform specific id for entries in the name table. The most common values are provided as constants.
type EncodingRecord ¶
type EncodingRecord struct { PlatformID PlatformID // Platform ID. EncodingID EncodingID // Platform-specific encoding ID. Subtable CmapSubtable `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Byte offset from beginning of table to the subtable for this encoding. }
func ParseEncodingRecord ¶
func ParseEncodingRecord(src []byte, parentSrc []byte) (EncodingRecord, int, error)
type Extension ¶
type Extension struct { ExtensionLookupType uint16 // Lookup type of subtable referenced by extensionOffset (that is, the extension subtable). ExtensionOffset Offset32 // Offset to the extension subtable, of lookup type extensionLookupType, relative to the start of the ExtensionSubstFormat1 subtable. RawData []byte `subsliceStart:"AtStart" arrayCount:"ToEnd"` // contains filtered or unexported fields }
type ExtensionPos ¶
type ExtensionPos Extension
func ParseExtensionPos ¶
func ParseExtensionPos(src []byte) (ExtensionPos, int, error)
func (ExtensionPos) Cov ¶
func (lk ExtensionPos) Cov() Coverage
func (ExtensionPos) Resolve ¶
func (ext ExtensionPos) Resolve() (GPOSLookup, error)
type ExtensionSubs ¶
type ExtensionSubs Extension
func ParseExtensionSubs ¶
func ParseExtensionSubs(src []byte) (ExtensionSubs, int, error)
func (ExtensionSubs) Cov ¶
func (lk ExtensionSubs) Cov() Coverage
func (ExtensionSubs) Resolve ¶
func (ext ExtensionSubs) Resolve() (GSUBLookup, error)
type Feat ¶
type Feat struct { Names []FeatureName `arrayCount:"ComputedField-featureNameCount"` // The feature name array. // contains filtered or unexported fields }
Feat is the feature name table. See - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6feat.html
func (Feat) GetFeature ¶
func (ft Feat) GetFeature(feature uint16) *FeatureName
GetFeature performs a binary seach into the names, using `Feature` as key, returning `nil` if not found.
type Feature ¶
type Feature struct { LookupListIndices []uint16 `arrayCount:"FirstUint16"` // [lookupIndexCount] Array of indices into the LookupList — zero-based (first lookup is LookupListIndex = 0) // contains filtered or unexported fields }
type FeatureList ¶
type FeatureList struct { Records []TagOffsetRecord `arrayCount:"FirstUint16"` // Array of FeatureRecords — zero-based (first feature has FeatureIndex = 0), listed alphabetically by feature tag Features []Feature `isOpaque:""` }
func ParseFeatureList ¶
func ParseFeatureList(src []byte) (FeatureList, int, error)
type FeatureName ¶
type FeatureName struct { Feature uint16 // Feature type. SettingTable []FeatureSettingName `offsetSize:"Offset32" offsetRelativeTo:"Parent" arrayCount:"ComputedField-nSettings"` // Offset in bytes from the beginning of the 'feat' table to this feature's setting name array. The actual type of record this offset refers to will depend on the exclusivity value, as described below. FeatureFlags uint16 // Single-bit flags associated with the feature type. NameIndex uint16 // The name table index for the feature's name. This index has values greater than 255 and less than 32768. // contains filtered or unexported fields }
func ParseFeatureName ¶
func ParseFeatureName(src []byte, parentSrc []byte) (FeatureName, int, error)
func (*FeatureName) IsExclusive ¶
func (feature *FeatureName) IsExclusive() bool
IsExclusive returns true if the feature settings are mutually exclusive.
type FeatureSettingName ¶
type FeatureTableSubstitution ¶
type FeatureTableSubstitution struct { Substitutions []FeatureTableSubstitutionRecord `arrayCount:"FirstUint16"` // [substitutionCount] Array of feature table substitution records. // contains filtered or unexported fields }
func ParseFeatureTableSubstitution ¶
func ParseFeatureTableSubstitution(src []byte) (FeatureTableSubstitution, int, error)
type FeatureTableSubstitutionRecord ¶
type FeatureTableSubstitutionRecord struct { FeatureIndex uint16 // The feature table index to match. AlternateFeature Feature `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Offset to an alternate feature table, from start of the FeatureTableSubstitution table. }
func ParseFeatureTableSubstitutionRecord ¶
func ParseFeatureTableSubstitutionRecord(src []byte, parentSrc []byte) (FeatureTableSubstitutionRecord, int, error)
type FeatureVariation ¶
type FeatureVariation struct { FeatureVariationRecords []FeatureVariationRecord `arrayCount:"FirstUint32"` //[featureVariationRecordCount] Array of feature variation records. // contains filtered or unexported fields }
func ParseFeatureVariation ¶
func ParseFeatureVariation(src []byte) (FeatureVariation, int, error)
type FeatureVariationRecord ¶
type FeatureVariationRecord struct { ConditionSet ConditionSet `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Offset to a condition set table, from beginning of FeatureVariations table. Substitutions FeatureTableSubstitution `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Offset to a feature table substitution table, from beginning of the FeatureVariations table. }
func ParseFeatureVariationRecord ¶
func ParseFeatureVariationRecord(src []byte, parentSrc []byte) (FeatureVariationRecord, int, error)
type Float1616 ¶
type Float1616 = float32
Float1616 is a float32, represented in fixed 16.16 format in font files.
func Float1616FromUint ¶
type FontPage ¶
type FontPage uint16
See https://docs.microsoft.com/en-us/typography/legacy/legacy_arabic_fonts https://github.com/Microsoft/Font-Validator/blob/520aaae/OTFontFileVal/val_OS2.cs#L644-L681
const ( FPNone FontPage = 0 FPHebrew FontPage = 0xB100 /* Hebrew Windows 3.1 font page */ FPSimpArabic FontPage = 0xB200 /* Simplified Arabic Windows 3.1 font page */ FPTradArabic FontPage = 0xB300 /* Traditional Arabic Windows 3.1 font page */ FPOemArabic FontPage = 0xB400 /* OEM Arabic Windows 3.1 font page */ FPSimpFarsi FontPage = 0xBA00 /* Simplified Farsi Windows 3.1 font page */ FPTradFarsi FontPage = 0xBB00 /* Traditional Farsi Windows 3.1 font page */ FPThai FontPage = 0xDE00 /* Thai Windows 3.1 font page */ )
type Fvar ¶
type Fvar struct { FvarRecords `isOpaque:""` // contains filtered or unexported fields }
Fvar is the Font Variations Table. See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/fvar
type FvarRecords ¶
type FvarRecords struct { Axis []VariationAxisRecord Instances []InstanceRecord `isOpaque:"" subsliceStart:"AtCurrent"` }
binarygen: argument=instanceCount int binarygen: argument=instanceSize int
func ParseFvarRecords ¶
type GDEF ¶
type GDEF struct { GlyphClassDef ClassDef `offsetSize:"Offset16"` // Offset to class definition table for glyph type, from beginning of GDEF header (may be NULL) AttachList AttachList `offsetSize:"Offset16"` // Offset to attachment point list table, from beginning of GDEF header (may be NULL) LigCaretList LigCaretList `offsetSize:"Offset16"` // Offset to ligature caret list table, from beginning of GDEF header (may be NULL) MarkAttachClass ClassDef `offsetSize:"Offset16"` // Offset to class definition table for mark attachment type, from beginning of GDEF header (may be NULL) MarkGlyphSetsDef MarkGlyphSets `isOpaque:""` // Offset to the table of mark glyph set definitions, from beginning of GDEF header (may be NULL) ItemVarStore ItemVarStore `isOpaque:""` // Offset to the Item Variation Store table, from beginning of GDEF header (may be NULL) // contains filtered or unexported fields }
func (*GDEF) GlyphProps ¶
func (gd *GDEF) GlyphProps(glyph GlyphID) GlyphProps
GlyphProps return a summary of the glyph properties.
type GPOS ¶
type GPOS Layout
GPOS is the Glyph Positioning (GPOS) table. It provides precise control over glyph placement for sophisticated text layout and rendering in each script and language system that a font supports. See https://learn.microsoft.com/fr-fr/typography/opentype/spec/gpos
type GPOSLookup ¶
type GPOSLookup interface { // Coverage returns the coverage of the lookup subtable. // For ContextualPos3 and ChainedContextualPos3, its the coverage of the first input. Cov() Coverage // contains filtered or unexported methods }
type GSUB ¶
type GSUB Layout
GSUB is the Glyph Substitution (GSUB) table. It provides data for substition of glyphs for appropriate rendering of scripts, such as cursively-connecting forms in Arabic script, or for advanced typographic effects, such as ligatures. See https://learn.microsoft.com/fr-fr/typography/opentype/spec/gsub
type GSUBLookup ¶
type GSUBLookup interface { // Coverage returns the coverage of the lookup subtable. // For ContextualSubs3 and ChainedContextualSubs3, its the coverage of the first input. Cov() Coverage // contains filtered or unexported methods }
GSUBLookup is one lookup subtable data
type Glyph ¶
type GlyphContourPoint ¶
func ParseGlyphContourPoint ¶
func ParseGlyphContourPoint(src []byte) (GlyphContourPoint, int, error)
type GlyphIdOffsetPair ¶
type GlyphProps ¶
type GlyphProps = uint16
GlyphProps is a 16-bit integer where the lower 8-bit have bits representing glyph class, and high 8-bit the mark attachment type (if any).
const ( GPBaseGlyph GlyphProps = 1 << (iota + 1) GPLigature GPMark )
type GlyphVariationData ¶
type GlyphVariationData struct { SerializedData []byte `offsetSize:"Offset16" arrayCount:"ToEnd"` // Offset from the start of the GlyphVariationData table to the serialized data TupleVariationHeaders []TupleVariationHeader `arrayCount:"ComputedField-tupleVariationCount&0x0FFF"` //[tupleCount] Array of tuple variation headers. // contains filtered or unexported fields }
func ParseGlyphVariationData ¶
func ParseGlyphVariationData(src []byte, axisCount int) (GlyphVariationData, int, error)
func (*GlyphVariationData) HasSharedPointNumbers ¶
func (gv *GlyphVariationData) HasSharedPointNumbers() bool
HasSharedPointNumbers returns true if the 'sharedPointNumbers' is on.
type Gvar ¶
type Gvar struct { GlyphVariationDatas []GlyphVariationData `isOpaque:""` // contains filtered or unexported fields }
See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/gvar
type HVAR ¶
type HVAR struct { ItemVariationStore ItemVarStore `offsetSize:"Offset32"` // Offset in bytes from the start of this table to the item variation store table. AdvanceWidthMapping DeltaSetMapping `offsetSize:"Offset32"` // Offset in bytes from the start of this table to the delta-set index mapping for advance widths (may be NULL). LsbMapping *DeltaSetMapping `offsetSize:"Offset32"` // Offset in bytes from the start of this table to the delta-set index mapping for left side bearings (may be NULL). RsbMapping *DeltaSetMapping `offsetSize:"Offset32"` // Offset in bytes from the start of this table to the delta-set index mapping for right side bearings (may be NULL). // contains filtered or unexported fields }
See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/hvar
type Head ¶
type Head struct { UnitsPerEm uint16 XMin int16 YMin int16 XMax int16 YMax int16 MacStyle uint16 IndexToLocFormat int16 // contains filtered or unexported fields }
TableHead contains critical information about the rest of the font. https://learn.microsoft.com/en-us/typography/opentype/spec/head https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6head.html
type Hhea ¶
type Hhea struct { Ascender int16 Descender int16 LineGap int16 AdvanceMax uint16 MinFirstSideBearing int16 MinSecondSideBearing int16 MaxExtent int16 CaretSlopeRise int16 CaretSlopeRun int16 CaretOffset int16 NumOfLongMetrics uint16 // contains filtered or unexported fields }
https://learn.microsoft.com/en-us/typography/opentype/spec/hhea
type Hmtx ¶
type Hmtx struct { Metrics []LongHorMetric `arrayCount:""` // avances are padded with the last value // and side bearings are given LeftSideBearings []int16 `arrayCount:""` }
https://learn.microsoft.com/en-us/typography/opentype/spec/hmtx
type IndexData1 ¶
type IndexData1 struct { // sizeOfArray = (lastGlyph - firstGlyph + 1) + 1 + 1 pad if needed // sbitOffsets[glyphIndex] + imageDataOffset = glyphData SbitOffsets []Offset32 }
func ParseIndexData1 ¶
func ParseIndexData1(src []byte, sbitOffsetsCount int) (IndexData1, int, error)
type IndexData2 ¶
type IndexData2 struct { ImageSize uint32 // All the glyphs are of the same size. BigMetrics BigGlyphMetrics // All glyphs have the same metrics; glyph data may be compressed, byte-aligned, or bit-aligned. }
func ParseIndexData2 ¶
func ParseIndexData2(src []byte) (IndexData2, int, error)
type IndexData3 ¶
type IndexData3 struct { // sizeOfArray = (lastGlyph - firstGlyph + 1) + 1 + 1 pad if needed // sbitOffets[glyphIndex] + imageDataOffset = glyphData SbitOffsets []Offset16 }
func ParseIndexData3 ¶
func ParseIndexData3(src []byte, sbitOffsetsCount int) (IndexData3, int, error)
type IndexData4 ¶
type IndexData4 struct { GlyphArray []GlyphIdOffsetPair `arrayCount:"ComputedField-numGlyphs+1"` //[numGlyphs + 1] One per glyph. // contains filtered or unexported fields }
func ParseIndexData4 ¶
func ParseIndexData4(src []byte) (IndexData4, int, error)
type IndexData5 ¶
type IndexData5 struct { ImageSize uint32 // All glyphs have the same data size. BigMetrics BigGlyphMetrics // All glyphs have the same metrics. GlyphIdArray []GlyphID `arrayCount:"FirstUint32"` // [numGlyphs] One per glyph, sorted by glyph ID. }
func ParseIndexData5 ¶
func ParseIndexData5(src []byte) (IndexData5, int, error)
type IndexSubHeader ¶
type IndexSubHeader struct { ImageFormat uint16 // Format of EBDT image data. ImageDataOffset Offset32 // Offset to image data in EBDT table. IndexData IndexData `unionField:"indexFormat"` // contains filtered or unexported fields }
func ParseIndexSubHeader ¶
func ParseIndexSubHeader(src []byte, sbitOffsetsCount int) (IndexSubHeader, int, error)
type IndexSubTableArray ¶
type IndexSubTableArray struct {
Subtables []IndexSubTableHeader
}
func ParseIndexSubTableArray ¶
func ParseIndexSubTableArray(src []byte, subtablesCount int) (IndexSubTableArray, int, error)
type IndexSubTableHeader ¶
type InstanceRecord ¶
type InstanceRecord struct { SubfamilyNameID uint16 // The name ID for entries in the 'name' table that provide subfamily names for this instance. Coordinates []Float1616 // [axisCount] The coordinates array for this instance. PostScriptNameID uint16 `isOpaque:"" subsliceStart:"AtCurrent"` // Optional. The name ID for entries in the 'name' table that provide PostScript names for this instance. // contains filtered or unexported fields }
func ParseInstanceRecord ¶
func ParseInstanceRecord(src []byte, coordinatesCount int) (InstanceRecord, int, error)
type ItemVarStore ¶
type ItemVarStore struct { VariationRegionList VariationRegionList `offsetSize:"Offset32"` // Offset in bytes from the start of the item variation store to the variation region list. ItemVariationDatas []ItemVariationData `arrayCount:"FirstUint16" offsetsArray:"Offset32"` // [itemVariationDataCount] Offsets in bytes from the start of the item variation store to each item variation data subtable. // contains filtered or unexported fields }
func ParseItemVarStore ¶
func ParseItemVarStore(src []byte) (ItemVarStore, int, error)
func (*ItemVarStore) AxisCount ¶
func (vs *ItemVarStore) AxisCount() int
AxisCount returns the number of axis found in the var store, which must be the same as the one in the 'fvar' table. It returns -1 if the store is empty
func (ItemVarStore) GetDelta ¶
func (store ItemVarStore) GetDelta(index VariationStoreIndex, coords []Coord) float32
GetDelta uses the variation [store] and the selected instance coordinates [coords] to compute the value at [index].
type ItemVariationData ¶
type ItemVariationData struct { RegionIndexes []uint16 `arrayCount:"ComputedField-regionIndexCount"` //[regionIndexCount] Array of indices into the variation region list for the regions referenced by this item variation data table. DeltaSets [][]int16 `isOpaque:"" subsliceStart:"AtCurrent"` //[itemCount] Delta-set rows. // contains filtered or unexported fields }
func ParseItemVariationData ¶
func ParseItemVariationData(src []byte) (ItemVariationData, int, error)
type KACoordinates ¶
type KACoordinates struct {
MarkX, MarkY, CurrentX, CurrentY int16
}
type Kern ¶
type Kern struct { Tables []KernSubtable // contains filtered or unexported fields }
Kern is the kern table. It has multiple header format, defined in Apple AAT and Microsoft OT specs, but the subtable data actually are the same.
Microsoft (OT) format
version uint16 : Table version number (0) nTables uint16 : Number of subtables in the kerning table.
Apple (AAT) old format
version uint16 : The version number of the kerning table (0x0001 for the current version). nTables uint16 : The number of subtables included in the kerning table.
Apple (AAT) new format
version uint32 : The version number of the kerning table (0x00010000 for the current version). nTables uint32 : The number of subtables included in the kerning table.
See - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kern.html and - https://learn.microsoft.com/fr-fr/typography/opentype/spec/kern
type KernData0 ¶
type KernData0 struct { Pairs []Kernx0Record `arrayCount:"ComputedField-nPairs"` // contains filtered or unexported fields }
type KernData1 ¶
type KernData1 struct { AATStateTable Values []int16 `isOpaque:""` // contains filtered or unexported fields }
type KernData2 ¶
type KernData2 struct { Left AATLoopkup8Data `offsetSize:"Offset16" offsetRelativeTo:"Parent"` Right AATLoopkup8Data `offsetSize:"Offset16" offsetRelativeTo:"Parent"` KerningStart Offset16 // Offset from beginning of this subtable to the start of the kerning array. KerningData []byte `isOpaque:"" offsetRelativeTo:"Parent"` // indexed by Left + Right // contains filtered or unexported fields }
type KernData3 ¶
type KernData3 struct { RightClassCount uint8 // The number of right-hand classes. Kernings []int16 `arrayCount:"ComputedField-kernValueCount"` LeftClass []uint8 `arrayCount:"ComputedField-glyphCount"` RightClass []uint8 `arrayCount:"ComputedField-glyphCount"` KernIndex []uint8 `arrayCount:"ComputedField-nKernIndex()"` // contains filtered or unexported fields }
type KernSubtable ¶
type KernSubtable interface { // Data returns the actual kerning data Data() KernData }
type Kernx0Record ¶
type Kerx ¶
type Kerx struct { Tables []KerxSubtable `arrayCount:"ComputedField-nTables"` // contains filtered or unexported fields }
Kerx is the extended kerning table See https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kerx.html
type KerxAnchorAnchors ¶
type KerxAnchorAnchors struct {
Anchors []KAAnchor
}
func ParseKerxAnchorAnchors ¶
func ParseKerxAnchorAnchors(src []byte, anchorsCount int) (KerxAnchorAnchors, int, error)
type KerxAnchorControls ¶
type KerxAnchorControls struct {
Anchors []KAControl
}
func ParseKerxAnchorControls ¶
func ParseKerxAnchorControls(src []byte, anchorsCount int) (KerxAnchorControls, int, error)
type KerxAnchorCoordinates ¶
type KerxAnchorCoordinates struct {
Anchors []KACoordinates
}
func ParseKerxAnchorCoordinates ¶
func ParseKerxAnchorCoordinates(src []byte, anchorsCount int) (KerxAnchorCoordinates, int, error)
type KerxAnchors ¶
type KerxAnchors interface {
// contains filtered or unexported methods
}
type KerxData0 ¶
type KerxData0 struct { Pairs []Kernx0Record `arrayCount:"ComputedField-nPairs"` // contains filtered or unexported fields }
binarygen: argument=tupleCount int
type KerxData1 ¶
type KerxData1 struct { AATStateTableExt `arguments:"valuesCount=valuesCount, entryDataSize=2"` Values []int16 `isOpaque:""` // contains filtered or unexported fields }
binarygen: argument=tupleCount int binarygen: argument=valuesCount int
type KerxData2 ¶
type KerxData2 struct { Left AATLookup `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Offset from beginning of this subtable to the left-hand offset table. Right AATLookup `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Offset from beginning of this subtable to right-hand offset table. KerningStart Offset32 // Offset from beginning of this subtable to the start of the kerning array. KerningData []byte `subsliceStart:"AtStart" arrayCount:"ToEnd"` // indexed by Left + Right // contains filtered or unexported fields }
type KerxData4 ¶
type KerxData4 struct { AATStateTableExt `arguments:"valuesCount=valuesCount,entryDataSize=2"` Flags uint32 Anchors KerxAnchors `isOpaque:""` }
binarygen: argument=valuesCount int
func (KerxData4) ActionType ¶
ActionType returns 0, 1 or 2, according to the anchor format :
- 0 : KerxAnchorControls
- 1 : KerxAnchorAnchors
- 2 : KerxAnchorCoordinates
type KerxData6 ¶
type KerxData6 struct { Row AatLookupMixed `isOpaque:"" offsetRelativeTo:"Parent"` // Values are pre-multiplied by `columnCount` Column AatLookupMixed `isOpaque:"" offsetRelativeTo:"Parent"` // with rowCount * columnCount // for tuples the values are estParseKerx (Not yet run).the first element of the tuple Kernings []int16 `isOpaque:"" offsetRelativeTo:"Parent"` // contains filtered or unexported fields }
binarygen: argument=tupleCount int binarygen: argument=valuesCount int
type KerxSubtable ¶
type KerxSubtable struct { Coverage uint16 // Circumstances under which this table is used. TupleCount uint32 // The tuple count. This value is only used with variation fonts and should be 0 for all other fonts. The subtable's tupleCount will be ignored if the 'kerx' table version is less than 4. Data KerxData `unionField:"version" arguments:"tupleCount=.TupleCount, valuesCount=valuesCount"` // contains filtered or unexported fields }
binarygen: argument=valuesCount int
func ParseKerxSubtable ¶
func ParseKerxSubtable(src []byte, valuesCount int) (KerxSubtable, int, error)
type LangSys ¶
type LangSys struct { RequiredFeatureIndex uint16 // Index of a feature required for this language system; if no required features = 0xFFFF FeatureIndices []uint16 `arrayCount:"FirstUint16"` // [featureIndexCount] Array of indices into the FeatureList, in arbitrary order // contains filtered or unexported fields }
type LanguageID ¶
type LanguageID uint16
LanguageID represents the language used by an entry in the name table
type Layout ¶
type Layout struct { ScriptList ScriptList `offsetSize:"Offset16"` // Offset to ScriptList table, from beginning of GPOS table FeatureList FeatureList `offsetSize:"Offset16"` // Offset to FeatureList table, from beginning of GPOS table LookupList lookupList `offsetSize:"Offset16"` // Offset to LookupList table, from beginning of GPOS table FeatureVariations *FeatureVariation `isOpaque:""` // Offset to FeatureVariations table, from beginning of GPOS table (may be NULL) // contains filtered or unexported fields }
Layout represents the common layout table used by GPOS and GSUB. The Features field contains all the features for this layout. However, the script and language determines which feature is used.
See https://learn.microsoft.com/typography/opentype/spec/chapter2#organization See https://learn.microsoft.com/typography/opentype/spec/gpos See https://www.microsoft.com/typography/otspec/GSUB.htm
type LigCaretList ¶
type LigCaretList struct { Coverage Coverage `offsetSize:"Offset16"` // Offset to Coverage table - from beginning of LigCaretList table LigGlyphs []LigGlyph `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // [ligGlyphCount] Array of offsets to LigGlyph tables, from beginning of LigCaretList table —in Coverage Index order }
func ParseLigCaretList ¶
func ParseLigCaretList(src []byte) (LigCaretList, int, error)
type LigGlyph ¶
type LigGlyph struct {
CaretValues []CaretValue `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // [caretCount] Array of offsets to CaretValue tables, from beginning of LigGlyph table — in increasing coordinate order
}
type Ligature ¶
type Ligature struct { LigatureGlyph GlyphID // glyph ID of ligature to substitute ComponentGlyphIDs []GlyphID `arrayCount:"ComputedField-componentCount-1"` // [componentCount - 1] Array of component glyph IDs — start with the second component, ordered in writing direction // contains filtered or unexported fields }
Glyph components for one ligature
type LigatureArray ¶
type LigatureArray struct {
LigatureAttachs []LigatureAttach `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // [ligatureCount] Array of offsets to LigatureAttach tables. Offsets are from beginning of LigatureArray table, ordered by ligatureCoverage index.
}
func ParseLigatureArray ¶
func ParseLigatureArray(src []byte, offsetsCount int) (LigatureArray, int, error)
type LigatureAttach ¶
type LigatureAttach struct {
// contains filtered or unexported fields
}
func ParseLigatureAttach ¶
func ParseLigatureAttach(src []byte, offsetsCount int) (LigatureAttach, int, error)
func (LigatureAttach) Anchors ¶
func (la LigatureAttach) Anchors() AnchorMatrix
type LigatureSet ¶
type LigatureSet struct {
Ligatures []Ligature `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // [LigatureCount] Array of offsets to Ligature tables. Offsets are from beginning of LigatureSet table, ordered by preference.
}
All ligatures beginning with the same glyph
func ParseLigatureSet ¶
func ParseLigatureSet(src []byte) (LigatureSet, int, error)
type LigatureSubs ¶
type LigatureSubs struct { Coverage Coverage `offsetSize:"Offset16"` // Offset to Coverage table, from beginning of substitution subtable LigatureSets []LigatureSet `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[ligatureSetCount] Array of offsets to LigatureSet tables. Offsets are from beginning of substitution subtable, ordered by Coverage index // contains filtered or unexported fields }
func ParseLigatureSubs ¶
func ParseLigatureSubs(src []byte) (LigatureSubs, int, error)
func (LigatureSubs) Cov ¶
func (lk LigatureSubs) Cov() Coverage
func (LigatureSubs) Sanitize ¶
func (ls LigatureSubs) Sanitize() error
type LongHorMetric ¶
type LongHorMetric struct {
AdvanceWidth, LeftSideBearing int16
}
type Lookup ¶
type Lookup struct { LookupFlag uint16 // Lookup qualifiers MarkFilteringSet uint16 // Index (base 0) into GDEF mark glyph sets structure. This field is only present if the USE_MARK_FILTERING_SET lookup flag is set. // contains filtered or unexported fields }
Lookup is the common format for GSUB and GPOS lookups
func (Lookup) AsGPOSLookups ¶
func (lk Lookup) AsGPOSLookups() ([]GPOSLookup, error)
AsGPOSLookups returns the GPOS lookup subtables
func (Lookup) AsGSUBLookups ¶
func (lk Lookup) AsGSUBLookups() ([]GSUBLookup, error)
AsGSUBLookups returns the GSUB lookup subtables.
type LookupRecord2 ¶
type Ltag ¶
type Ltag struct {
// contains filtered or unexported fields
}
Ltag is the language tags table See https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html
type MVAR ¶
type MVAR struct { ItemVariationStore ItemVarStore `offsetSize:"Offset16"` // Offset in bytes from the start of this table to the item variation store table. If valueRecordCount is zero, set to zero; if valueRecordCount is greater than zero, must be greater than zero. ValueRecords []VarValueRecord `isOpaque:"" subsliceStart:"AtCurrent"` // [valueRecordCount] Array of value records that identify target items and the associated delta-set index for each. The valueTag records must be in binary order of their valueTag field. // contains filtered or unexported fields }
type Mark2Array ¶
type Mark2Array struct {
// contains filtered or unexported fields
}
func ParseMark2Array ¶
func ParseMark2Array(src []byte, offsetsCount int) (Mark2Array, int, error)
func (Mark2Array) Anchors ¶
func (ma Mark2Array) Anchors() AnchorMatrix
type MarkArray ¶
type MarkArray struct { MarkRecords []MarkRecord `arrayCount:"FirstUint16"` //[markCount] Array of MarkRecords, ordered by corresponding glyphs in the associated mark Coverage table. MarkAnchors []Anchor `isOpaque:""` // with same length as MarkRecords }
type MarkBasePos ¶
type MarkBasePos struct { BaseCoverage Coverage `offsetSize:"Offset16"` // Offset to baseCoverage table, from beginning of MarkBasePos subtable. MarkArray MarkArray `offsetSize:"Offset16"` // Offset to MarkArray table, from beginning of MarkBasePos subtable. BaseArray BaseArray `offsetSize:"Offset16" arguments:"offsetsCount=.markClassCount"` // Offset to BaseArray table, from beginning of MarkBasePos subtable. // contains filtered or unexported fields }
func ParseMarkBasePos ¶
func ParseMarkBasePos(src []byte) (MarkBasePos, int, error)
func (MarkBasePos) Cov ¶
func (lk MarkBasePos) Cov() Coverage
func (*MarkBasePos) Sanitize ¶
func (mp *MarkBasePos) Sanitize() error
type MarkGlyphSets ¶
type MarkGlyphSets struct { Coverages []Coverage `arrayCount:"FirstUint16" offsetsArray:"Offset32"` // [markGlyphSetCount] Array of offsets to mark glyph set coverage tables, from the start of the MarkGlyphSets table. // contains filtered or unexported fields }
func ParseMarkGlyphSets ¶
func ParseMarkGlyphSets(src []byte) (MarkGlyphSets, int, error)
type MarkLigPos ¶
type MarkLigPos struct { MarkCoverage Coverage `offsetSize:"Offset16"` // Offset to markCoverage table, from beginning of MarkLigPos subtable. LigatureCoverage Coverage `offsetSize:"Offset16"` // Offset to ligatureCoverage table, from beginning of MarkLigPos subtable. MarkClassCount uint16 // Number of defined mark classes MarkArray MarkArray `offsetSize:"Offset16"` // Offset to MarkArray table, from beginning of MarkLigPos subtable. LigatureArray LigatureArray `offsetSize:"Offset16" arguments:"offsetsCount=.MarkClassCount"` // Offset to LigatureArray table, from beginning of MarkLigPos subtable. // contains filtered or unexported fields }
func ParseMarkLigPos ¶
func ParseMarkLigPos(src []byte) (MarkLigPos, int, error)
func (MarkLigPos) Cov ¶
func (lk MarkLigPos) Cov() Coverage
func (*MarkLigPos) Sanitize ¶
func (mp *MarkLigPos) Sanitize() error
type MarkMarkPos ¶
type MarkMarkPos struct { PosFormat uint16 // Format identifier: format = 1 Mark1Coverage Coverage `offsetSize:"Offset16"` // Offset to Combining Mark Coverage table, from beginning of MarkMarkPos subtable. Mark2Coverage Coverage `offsetSize:"Offset16"` // Offset to Base Mark Coverage table, from beginning of MarkMarkPos subtable. MarkClassCount uint16 // Number of Combining Mark classes defined Mark1Array MarkArray `offsetSize:"Offset16"` // Offset to MarkArray table for mark1, from beginning of MarkMarkPos subtable. Mark2Array Mark2Array `offsetSize:"Offset16" arguments:"offsetsCount=.MarkClassCount"` // Offset to Mark2Array table for mark2, from beginning of MarkMarkPos subtable. }
func ParseMarkMarkPos ¶
func ParseMarkMarkPos(src []byte) (MarkMarkPos, int, error)
func (MarkMarkPos) Cov ¶
func (lk MarkMarkPos) Cov() Coverage
type MarkRecord ¶
type MarkRecord struct { MarkClass uint16 // Class defined for the associated mark. // contains filtered or unexported fields }
type Maxp ¶
type Maxp struct { NumGlyphs uint16 // contains filtered or unexported fields }
https://learn.microsoft.com/en-us/typography/opentype/spec/Maxp
type Morx ¶
type Morx struct { Chains []MorxChain `arrayCount:"ComputedField-nChains"` // contains filtered or unexported fields }
Morx is the extended glyph metamorphosis table See https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6morx.html
type MorxChain ¶
type MorxChain struct { Flags uint32 // The default specification for subtables. Features []AATFeature `arrayCount:"ComputedField-nFeatureEntries"` Subtables []MorxChainSubtable `arrayCount:"ComputedField-nSubtable"` // contains filtered or unexported fields }
MorxChain is a set of subtables
type MorxChainSubtable ¶
type MorxChainSubtable struct { // Coverage flags and subtable type. Coverage byte SubFeatureFlags uint32 // The 32-bit mask identifying which subtable this is (the subtable being executed if the AND of this value and the processed defaultFlags is nonzero) Data MorxSubtable `unionField:"version"` // contains filtered or unexported fields }
func ParseMorxChainSubtable ¶
func ParseMorxChainSubtable(src []byte, valuesCount int) (MorxChainSubtable, int, error)
type MorxSubtable ¶
type MorxSubtable interface {
// contains filtered or unexported methods
}
type MorxSubtableContextual ¶
type MorxSubtableContextual struct { AATStateTableExt `arguments:"valuesCount=valuesCount,entryDataSize=4"` // Byte offset from the beginning of the state subtable to the beginning of the substitution tables : // each value of the array is itself an offet to a aatLookupTable, and the number of // items is computed from the header Substitutions SubstitutionsTable `offsetSize:"Offset32" arguments:"substitutionsCount=.nSubs(), valuesCount=valuesCount"` }
binarygen: argument=valuesCount int
func ParseMorxSubtableContextual ¶
func ParseMorxSubtableContextual(src []byte, valuesCount int) (MorxSubtableContextual, int, error)
type MorxSubtableInsertion ¶
type MorxSubtableInsertion struct { AATStateTableExt `arguments:"valuesCount=valuesCount,entryDataSize=4"` Insertions []GlyphID `offsetSize:"Offset32" arrayCount:"ComputedField-nInsertions()"` // Byte offset from stateHeader to the start of the insertion glyph table. }
binarygen: argument=valuesCount int
func ParseMorxSubtableInsertion ¶
func ParseMorxSubtableInsertion(src []byte, valuesCount int) (MorxSubtableInsertion, int, error)
type MorxSubtableLigature ¶
type MorxSubtableLigature struct { AATStateTableExt `arguments:"valuesCount=valuesCount, entryDataSize=2"` LigActions []uint32 `isOpaque:""` Components []uint16 `isOpaque:""` Ligatures []GlyphID `isOpaque:""` // contains filtered or unexported fields }
binarygen: argument=valuesCount int
func ParseMorxSubtableLigature ¶
func ParseMorxSubtableLigature(src []byte, valuesCount int) (MorxSubtableLigature, int, error)
type MorxSubtableNonContextual ¶
type MorxSubtableNonContextual struct { // The lookup value is interpreted as a GlyphIndex Class AATLookup }
func ParseMorxSubtableNonContextual ¶
func ParseMorxSubtableNonContextual(src []byte, valuesCount int) (MorxSubtableNonContextual, int, error)
type MorxSubtableRearrangement ¶
type MorxSubtableRearrangement struct {
AATStateTableExt `arguments:"valuesCount=valuesCount,entryDataSize=0"`
}
binarygen: argument=valuesCount int
func ParseMorxSubtableRearrangement ¶
func ParseMorxSubtableRearrangement(src []byte, valuesCount int) (MorxSubtableRearrangement, int, error)
type MorxSubtableVersion ¶
type MorxSubtableVersion uint8
MorxSubtableVersion indicates the kind of 'morx' subtable. See the constants.
const ( MorxSubtableVersionRearrangement MorxSubtableVersion = iota MorxSubtableVersionContextual MorxSubtableVersionLigature MorxSubtableVersionNonContextual MorxSubtableVersionInsertion )
type MultipleSubs ¶
type MultipleSubs struct { Coverage Coverage `offsetSize:"Offset16"` // Offset to Coverage table, from beginning of substitution subtable Sequences []Sequence `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // contains filtered or unexported fields }
func ParseMultipleSubs ¶
func ParseMultipleSubs(src []byte) (MultipleSubs, int, error)
func (MultipleSubs) Cov ¶
func (lk MultipleSubs) Cov() Coverage
func (MultipleSubs) Sanitize ¶
func (ms MultipleSubs) Sanitize() error
type Name ¶
type Name struct {
// contains filtered or unexported fields
}
Naming table See https://learn.microsoft.com/en-us/typography/opentype/spec/name
type OTKernSubtableHeader ¶
type OTKernSubtableHeader struct { Coverage byte // What type of information is contained in this table. // contains filtered or unexported fields }
func ParseOTKernSubtableHeader ¶
func ParseOTKernSubtableHeader(src []byte) (OTKernSubtableHeader, int, error)
func (OTKernSubtableHeader) Data ¶
func (k OTKernSubtableHeader) Data() KernData
type Os2 ¶
type Os2 struct { Version uint16 XAvgCharWidth uint16 USWeightClass uint16 USWidthClass uint16 YSubscriptXSize int16 YSubscriptYSize int16 YSubscriptXOffset int16 YSubscriptYOffset int16 YSuperscriptXSize int16 YSuperscriptYSize int16 YSuperscriptXOffset int16 YStrikeoutSize int16 YStrikeoutPosition int16 FsSelection uint16 USFirstCharIndex uint16 USLastCharIndex uint16 STypoAscender int16 STypoDescender int16 STypoLineGap int16 HigherVersionData []byte `arrayCount:"ToEnd"` // contains filtered or unexported fields }
OS/2 and Windows Metrics Table See https://learn.microsoft.com/en-us/typography/opentype/spec/os2
type PairPos ¶
type PairPos struct {
Data PairPosData
}
type PairPosData ¶
type PairPosData interface { Cov() Coverage // contains filtered or unexported methods }
func ParsePairPosData ¶
func ParsePairPosData(src []byte) (PairPosData, int, error)
type PairPosData1 ¶
type PairPosData1 struct { ValueFormat1 ValueFormat // Defines the types of data in valueRecord1 — for the first glyph in the pair (may be zero). ValueFormat2 ValueFormat // Defines the types of data in valueRecord2 — for the second glyph in the pair (may be zero). PairSets []PairSet `arrayCount:"FirstUint16" offsetsArray:"Offset16" arguments:"valueFormat1=.ValueFormat1, valueFormat2=.ValueFormat2"` //[pairSetCount] Array of offsets to PairSet tables. Offsets are from beginning of PairPos subtable, ordered by Coverage Index. // contains filtered or unexported fields }
func ParsePairPosData1 ¶
func ParsePairPosData1(src []byte) (PairPosData1, int, error)
func (PairPosData1) Cov ¶
func (d PairPosData1) Cov() Coverage
type PairPosData2 ¶
type PairPosData2 struct { ValueFormat1 ValueFormat // Defines the types of data in valueRecord1 — for the first glyph in the pair (may be zero). ValueFormat2 ValueFormat // Defines the types of data in valueRecord2 — for the second glyph in the pair (may be zero). ClassDef1 ClassDef `offsetSize:"Offset16"` // Offset to ClassDef table, from beginning of PairPos subtable — for the first glyph of the pair. ClassDef2 ClassDef `offsetSize:"Offset16"` // Offset to ClassDef table, from beginning of PairPos subtable — for the second glyph of the pair. // contains filtered or unexported fields }
func ParsePairPosData2 ¶
func ParsePairPosData2(src []byte) (PairPosData2, int, error)
func (PairPosData2) Cov ¶
func (d PairPosData2) Cov() Coverage
func (*PairPosData2) Record ¶
func (pp *PairPosData2) Record(class1, class2 uint16) Class2Record
Record returns the record for the given classes, which must come from ClassDef1 and ClassDef2
type PairSet ¶
type PairSet struct {
// contains filtered or unexported fields
}
binarygen: argument=valueFormat1 ValueFormat binarygen: argument=valueFormat2 ValueFormat
func ParsePairSet ¶
func ParsePairSet(src []byte, valueFormat1 ValueFormat, valueFormat2 ValueFormat) (PairSet, int, error)
type PairValueRecord ¶
type PairValueRecord struct { SecondGlyph GlyphID // Glyph ID of second glyph in the pair (first glyph is listed in the Coverage table). ValueRecord1 ValueRecord // Positioning data for the first glyph in the pair. ValueRecord2 ValueRecord // Positioning data for the second glyph in the pair. }
type PlatformID ¶
type PlatformID uint16
PlatformID represents the platform id for entries in the name table.
const ( PlatformUnicode PlatformID = iota PlatformMac PlatformIso // deprecated PlatformMicrosoft PlatformCustom PlatformAdobe // artificial )
type Post ¶
type Post struct { // UnderlinePosition is the suggested distance of the top of the // underline from the baseline (negative values indicate below baseline). UnderlinePosition int16 // Suggested values for the underline thickness. UnderlineThickness int16 // IsFixedPitch indicates that the font is not proportionally spaced // (i.e. monospaced). IsFixedPitch uint32 Names PostNames `unionField:"version"` // contains filtered or unexported fields }
PostScript table See https://learn.microsoft.com/en-us/typography/opentype/spec/post
type PostNames10 ¶
type PostNames10 struct{}
func ParsePostNames10 ¶
func ParsePostNames10([]byte) (PostNames10, int, error)
type PostNames20 ¶
type PostNames20 struct { GlyphNameIndexes []uint16 `arrayCount:"FirstUint16"` // size numGlyph StringData []byte `arrayCount:"ToEnd"` }
func ParsePostNames20 ¶
func ParsePostNames20(src []byte) (PostNames20, int, error)
type PostNames30 ¶
type PostNames30 PostNames10
func ParsePostNames30 ¶
func ParsePostNames30([]byte) (PostNames30, int, error)
type RangeRecord ¶
type RegionAxisCoordinates ¶
type ReverseChainSingleSubs ¶
type ReverseChainSingleSubs struct { BacktrackCoverages []Coverage `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[backtrackGlyphCount] Array of offsets to coverage tables in backtrack sequence, in glyph sequence order. LookaheadCoverages []Coverage `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[lookaheadGlyphCount] Array of offsets to coverage tables in lookahead sequence, in glyph sequence order. SubstituteGlyphIDs []GlyphID `arrayCount:"FirstUint16"` //[glyphCount] Array of substitute glyph IDs — ordered by Coverage index. // contains filtered or unexported fields }
func ParseReverseChainSingleSubs ¶
func ParseReverseChainSingleSubs(src []byte) (ReverseChainSingleSubs, int, error)
func (ReverseChainSingleSubs) Cov ¶
func (lk ReverseChainSingleSubs) Cov() Coverage
func (ReverseChainSingleSubs) Sanitize ¶
func (rs ReverseChainSingleSubs) Sanitize() error
type SVG ¶
type SVG struct { SVGDocumentList SVGDocumentList `offsetSize:"Offset32"` // Offset to the SVG Document List, from the start of the SVG table. Must be non-zero. // contains filtered or unexported fields }
SVG is the SVG (Scalable Vector Graphics) table. See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/svg
type SVGDocumentList ¶
type SVGDocumentList struct { DocumentRecords []SVGDocumentRecord `arrayCount:"FirstUint16"` // [numEntries] Array of SVG document records. SVGRawData []byte `subsliceStart:"AtStart" arrayCount:"ToEnd"` }
func ParseSVGDocumentList ¶
func ParseSVGDocumentList(src []byte) (SVGDocumentList, int, error)
type SVGDocumentRecord ¶
type SVGDocumentRecord struct { StartGlyphID GlyphID // The first glyph ID for the range covered by this record. EndGlyphID GlyphID // The last glyph ID for the range covered by this record. SvgDocOffset Offset32 // Offset from the beginning of the SVGDocumentList to an SVG document. Must be non-zero. SvgDocLength uint32 // Length of the SVG document data. Must be non-zero. }
Each SVG document record specifies a range of glyph IDs (from startGlyphID to endGlyphID, inclusive), and the location of its associated SVG document in the SVG table.
type SbitLineMetrics ¶
type Sbix ¶
type Sbix struct { // Bit 0: Set to 1. // Bit 1: Draw outlines. // Bits 2 to 15: reserved (set to 0). Flags uint16 Strikes []Strike `arrayCount:"FirstUint32" offsetsArray:"Offset32"` // [numStrikes] Offsets from the beginning of the 'sbix' table to data for each individual bitmap strike. // contains filtered or unexported fields }
Sbix is the Standard Bitmap Graphics Table See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/sbix
type Script ¶
type Script struct { DefaultLangSys *LangSys `offsetSize:"Offset16"` // Offset to default LangSys table, from beginning of Script table — may be NULL LangSysRecords []TagOffsetRecord `arrayCount:"FirstUint16"` // [langSysCount] Array of LangSysRecords, listed alphabetically by LangSys tag LangSys []LangSys `isOpaque:""` // same length as langSysRecords }
func (Script) FindLanguage ¶
FindLanguage looks for language and return its index into the LangSys slice, or -1 if the tag is not found.
func (Script) GetLangSys ¶
GetLangSys return the language at [index]. It [index] is out of range (for example with 0xFFFF), it returns [DefaultLangSys] (which may be empty)
type ScriptList ¶
type ScriptList struct { Records []TagOffsetRecord `arrayCount:"FirstUint16"` // Array of ScriptRecords, listed alphabetically by script tag Scripts []Script `isOpaque:""` }
func ParseScriptList ¶
func ParseScriptList(src []byte) (ScriptList, int, error)
type SegmentMaps ¶
type SegmentMaps struct { // [positionMapCount] The array of axis value map records for this axis. // Each axis value map record provides a single axis-value mapping correspondence. AxisValueMaps []AxisValueMap `arrayCount:"FirstUint16"` }
func ParseSegmentMaps ¶
func ParseSegmentMaps(src []byte) (SegmentMaps, int, error)
type Sequence ¶
type Sequence struct {
SubstituteGlyphIDs []GlyphID `arrayCount:"FirstUint16"` // [glyphCount] String of glyph IDs to substitute
}
type SequenceContextFormat1 ¶
type SequenceContextFormat1 struct { SeqRuleSet []SequenceRuleSet `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[seqRuleSetCount] Array of offsets to SequenceRuleSet tables, from beginning of SequenceContextFormat1 table (offsets may be NULL) // contains filtered or unexported fields }
type SequenceContextFormat2 ¶
type SequenceContextFormat2 struct { ClassDef ClassDef `offsetSize:"Offset16"` // Offset to ClassDef table, from beginning of SequenceContextFormat2 table ClassSeqRuleSet []ClassSequenceRuleSet `arrayCount:"FirstUint16" offsetsArray:"Offset16"` //[classSeqRuleSetCount] Array of offsets to ClassSequenceRuleSet tables, from beginning of SequenceContextFormat2 table (may be NULL) // contains filtered or unexported fields }
type SequenceContextFormat3 ¶
type SequenceContextFormat3 struct { Coverages []Coverage `arrayCount:"ComputedField-glyphCount" offsetsArray:"Offset16"` //[glyphCount] Array of offsets to Coverage tables, from beginning of SequenceContextFormat3 subtable SeqLookupRecords []SequenceLookupRecord `arrayCount:"ComputedField-seqLookupCount"` //[seqLookupCount] Array of SequenceLookupRecords // contains filtered or unexported fields }
type SequenceLookupRecord ¶
type SequenceRule ¶
type SequenceRule struct { InputSequence []GlyphID `arrayCount:"ComputedField-glyphCount-1"` //[glyphCount - 1] Array of input glyph IDs—starting with the second glyph SeqLookupRecords []SequenceLookupRecord `arrayCount:"ComputedField-seqLookupCount"` //[seqLookupCount] Array of Sequence lookup records // contains filtered or unexported fields }
func ParseSequenceRule ¶
func ParseSequenceRule(src []byte) (SequenceRule, int, error)
type SequenceRuleSet ¶
type SequenceRuleSet struct {
SeqRule []SequenceRule `arrayCount:"FirstUint16" offsetsArray:"Offset16"` // Array of offsets to SequenceRule tables, from beginning of the SequenceRuleSet table
}
func ParseSequenceRuleSet ¶
func ParseSequenceRuleSet(src []byte) (SequenceRuleSet, int, error)
type SequentialMapGroup ¶
type SimpleGlyph ¶
type SimpleGlyph struct { EndPtsOfContours []uint16 // [numberOfContours] Array of point indices for the last point of each contour, in increasing numeric order. Instructions []byte `arrayCount:"FirstUint16"` // [instructionLength] Array of instruction byte code for the glyph. Points []GlyphContourPoint `isOpaque:"" subsliceStart:"AtCurrent"` }
func ParseSimpleGlyph ¶
func ParseSimpleGlyph(src []byte, endPtsOfContoursCount int) (SimpleGlyph, int, error)
type SinglePos ¶
type SinglePos struct {
Data SinglePosData
}
type SinglePosData ¶
type SinglePosData interface { Cov() Coverage // contains filtered or unexported methods }
func ParseSinglePosData ¶
func ParseSinglePosData(src []byte) (SinglePosData, int, error)
type SinglePosData1 ¶
type SinglePosData1 struct { ValueFormat ValueFormat // Defines the types of data in the ValueRecord. ValueRecord ValueRecord `isOpaque:""` // Defines positioning value(s) — applied to all glyphs in the Coverage table. // contains filtered or unexported fields }
func ParseSinglePosData1 ¶
func ParseSinglePosData1(src []byte) (SinglePosData1, int, error)
func (SinglePosData1) Cov ¶
func (d SinglePosData1) Cov() Coverage
type SinglePosData2 ¶
type SinglePosData2 struct { ValueFormat ValueFormat // Defines the types of data in the ValueRecords. ValueRecords []ValueRecord `isOpaque:""` //[valueCount] Array of ValueRecords — positioning values applied to glyphs. // contains filtered or unexported fields }
func ParseSinglePosData2 ¶
func ParseSinglePosData2(src []byte) (SinglePosData2, int, error)
func (SinglePosData2) Cov ¶
func (d SinglePosData2) Cov() Coverage
type SingleSubs ¶
type SingleSubs struct {
Data SingleSubstData
}
func ParseSingleSubs ¶
func ParseSingleSubs(src []byte) (SingleSubs, int, error)
func (SingleSubs) Cov ¶
func (lk SingleSubs) Cov() Coverage
type SingleSubstData ¶
type SingleSubstData interface { Cov() Coverage // contains filtered or unexported methods }
func ParseSingleSubstData ¶
func ParseSingleSubstData(src []byte) (SingleSubstData, int, error)
type SingleSubstData1 ¶
type SingleSubstData1 struct { Coverage Coverage `offsetSize:"Offset16"` // Offset to Coverage table, from beginning of substitution subtable DeltaGlyphID int16 // Add to original glyph ID to get substitute glyph ID // contains filtered or unexported fields }
func ParseSingleSubstData1 ¶
func ParseSingleSubstData1(src []byte) (SingleSubstData1, int, error)
func (SingleSubstData1) Cov ¶
func (d SingleSubstData1) Cov() Coverage
type SingleSubstData2 ¶
type SingleSubstData2 struct { Coverage Coverage `offsetSize:"Offset16"` // Offset to Coverage table, from beginning of substitution subtable SubstituteGlyphIDs []GlyphID `arrayCount:"FirstUint16"` //[glyphCount] Array of substitute glyph IDs — ordered by Coverage index // contains filtered or unexported fields }
func ParseSingleSubstData2 ¶
func ParseSingleSubstData2(src []byte) (SingleSubstData2, int, error)
func (SingleSubstData2) Cov ¶
func (d SingleSubstData2) Cov() Coverage
type SmallGlyphMetrics ¶
type SmallGlyphMetrics struct { Height uint8 // Number of rows of data. Width uint8 // Number of columns of data. BearingX int8 // Distance in pixels from the horizontal origin to the left edge of the bitmap. BearingY int8 // Distance in pixels from the horizontal origin to the top edge of the bitmap. Advance uint8 // Horizontal advance width in pixels. }
type Strike ¶
type Strike struct { Ppem uint16 // The PPEM size for which this strike was designed. Ppi uint16 // The device pixel density (in PPI) for which this strike was designed. (E.g., 96 PPI, 192 PPI.) GlyphDatas []BitmapGlyphData `isOpaque:""` //[numGlyphs+1] Offset from the beginning of the strike data header to bitmap data for an individual glyph ID. }
Strike stores one size of bitmap glyphs in the 'sbix' table. binarygen: argument=numGlyphs int
type SubstitutionsTable ¶
type SubstitutionsTable struct {
Substitutions []AATLookup `offsetsArray:"Offset32"`
}
func ParseSubstitutionsTable ¶
type TagOffsetRecord ¶
type TrackData ¶
type TrackData struct { SizeTable []Float1616 `offsetSize:"Offset32" offsetRelativeTo:"Parent" arrayCount:"ComputedField-nSizes"` // Offset from start of the tracking table to the start of the size subtable. TrackTable []TrackTableEntry `arrayCount:"ComputedField-nTracks" arguments:"perSizeTrackingCount=.nSizes"` // Array[nTracks] of TrackTableEntry records. // contains filtered or unexported fields }
type TrackTableEntry ¶
type TrackTableEntry struct { Track Float1616 // Track value for this record. NameIndex uint16 // The 'name' table index for this track (a short word or phrase like "loose" or "very tight"). NameIndex has a value greater than 255 and less than 32768. PerSizeTracking []int16 `offsetSize:"Offset16" offsetRelativeTo:"GrandParent"` // in font units, with length len(SizeTable) }
func ParseTrackTableEntry ¶
type Trak ¶
type Trak struct { Horiz TrackData `offsetSize:"Offset16"` // Offset from start of tracking table to TrackData for horizontal text (or 0 if none). Vert TrackData `offsetSize:"Offset16"` // Offset from start of tracking table to TrackData for vertical text (or 0 if none). // contains filtered or unexported fields }
Trak is the tracking table. See - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6trak.html
type Tuple ¶
type Tuple struct {
Values []Coord // [axisCount] Coordinate array specifying a position within the font’s variation space. The number of elements must match the axisCount specified in the 'fvar' table.
}
type TupleVariationHeader ¶
type TupleVariationHeader struct { VariationDataSize uint16 // The size in bytes of the serialized data for this tuple variation table. // Peak tuple record for this tuple variation table — optional, determined by flags in the tupleIndex value. // Note that this must always be included in the 'cvar' table. PeakTuple Tuple `isOpaque:"" subsliceStart:"AtCurrent"` IntermediateTuples [2]Tuple `isOpaque:"" subsliceStart:"AtCurrent"` // Intermediate start/end tuple record for this tuple variation table — optional, determined by flags in the tupleIndex value. // contains filtered or unexported fields }
binarygen: argument=axisCount int
func ParseTupleVariationHeader ¶
func ParseTupleVariationHeader(src []byte, axisCount int) (TupleVariationHeader, int, error)
func (*TupleVariationHeader) HasPrivatePointNumbers ¶
func (t *TupleVariationHeader) HasPrivatePointNumbers() bool
HasPrivatePointNumbers returns true if the flag 'privatePointNumbers' is on
func (*TupleVariationHeader) Index ¶
func (t *TupleVariationHeader) Index() uint16
Index returns the tuple index, after masking
type UVSMappingTable ¶
type UVSMappingTable struct {
Ranges []UvsMappingRecord `arrayCount:"FirstUint32"`
}
UVSMappingTable is used in Cmap format 14 See https://learn.microsoft.com/en-us/typography/opentype/spec/cmap#non-default-uvs-table
func ParseUVSMappingTable ¶
func ParseUVSMappingTable(src []byte) (UVSMappingTable, int, error)
type UnicodeRange ¶
type UvsMappingRecord ¶
type VORG ¶
type VORG struct { DefaultVertOriginY int16 // The y coordinate of a glyph’s vertical origin, in the font’s design coordinate system, to be used if no entry is present for the glyph in the vertOriginYMetrics array. VertOriginYMetrics []VertOriginYMetric `arrayCount:"FirstUint16"` // contains filtered or unexported fields }
VORG is the Vertical Origin Table See - https://learn.microsoft.com/fr-fr/typography/opentype/spec/vorg
type ValueFormat ¶
type ValueFormat uint16
ValueFormat is a mask indicating which field are set in a GPOS ValueRecord. It is often shared between many records.
const ( XPlacement ValueFormat = 1 << iota // Includes horizontal adjustment for placement YPlacement // Includes vertical adjustment for placement XAdvance // Includes horizontal adjustment for advance YAdvance // Includes vertical adjustment for advance XPlaDevice // Includes horizontal Device table for placement YPlaDevice // Includes vertical Device table for placement XAdvDevice // Includes horizontal Device table for advance YAdvDevice // Includes vertical Device table for advance // Mask for having any Device table Devices = XPlaDevice | YPlaDevice | XAdvDevice | YAdvDevice )
type ValueRecord ¶
type ValueRecord struct { XPlacement int16 // Horizontal adjustment for placement, in design units. YPlacement int16 // Vertical adjustment for placement, in design units. XAdvance int16 // Horizontal adjustment for advance, in design units — only used for horizontal layout. YAdvance int16 // Vertical adjustment for advance, in design units — only used for vertical layout. XPlaDevice DeviceTable // Offset to Device table (non-variable font) / VariationIndex table (variable font) for horizontal placement, from beginning of the immediate parent table (SinglePos or PairPosFormat2 lookup subtable, PairSet table within a PairPosFormat1 lookup subtable) — may be NULL. YPlaDevice DeviceTable // Offset to Device table (non-variable font) / VariationIndex table (variable font) for vertical placement, from beginning of the immediate parent table (SinglePos or PairPosFormat2 lookup subtable, PairSet table within a PairPosFormat1 lookup subtable) — may be NULL. XAdvDevice DeviceTable // Offset to Device table (non-variable font) / VariationIndex table (variable font) for horizontal advance, from beginning of the immediate parent table (SinglePos or PairPosFormat2 lookup subtable, PairSet table within a PairPosFormat1 lookup subtable) — may be NULL. YAdvDevice DeviceTable // Offset to Device table (non-variable font) / VariationIndex table (variable font) for vertical advance, from beginning of the immediate parent table (SinglePos or PairPosFormat2 lookup subtable, PairSet table within a PairPosFormat1 lookup su }
ValueRecord has optional fields
type VarValueRecord ¶
type VarValueRecord struct { ValueTag Tag // Four-byte tag identifying a font-wide measure. Index VariationStoreIndex // A delta-set index — used to select an item variation data subtable within the item variation store. }
func ParseVarValueRecord ¶
func ParseVarValueRecord(src []byte) (VarValueRecord, int, error)
type VariationAxisRecord ¶
type VariationAxisRecord struct { Tag Tag // Tag identifying the design variation for the axis. Minimum Float1616 // mininum value on the variation axis that the font covers Default Float1616 // default position on the axis Maximum Float1616 // maximum value on the variation axis that the font covers // contains filtered or unexported fields }
type VariationRegion ¶
type VariationRegion struct { // Array of region axis coordinates records, in the order of axes given in the 'fvar' table. // Each RegionAxisCoordinates record provides coordinate values for a region along a single axis: RegionAxes []RegionAxisCoordinates // [axisCount] }
func ParseVariationRegion ¶
func ParseVariationRegion(src []byte, regionAxesCount int) (VariationRegion, int, error)
func (VariationRegion) Evaluate ¶
func (vr VariationRegion) Evaluate(coords []Coord) float32
Evaluate returns the scalar factor of the region
type VariationRegionList ¶
type VariationRegionList struct { VariationRegions []VariationRegion `arrayCount:"FirstUint16" arguments:"regionAxesCount=.axisCount"` // [regionCount] Array of variation regions. // contains filtered or unexported fields }
func ParseVariationRegionList ¶
func ParseVariationRegionList(src []byte) (VariationRegionList, int, error)
type VariationSelector ¶
type VariationSelector struct { VarSelector [3]byte // uint24 Variation selector DefaultUVS DefaultUVSTable `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Offset from the start of the format 14 subtable to Default UVS Table. May be 0. NonDefaultUVS UVSMappingTable `offsetSize:"Offset32" offsetRelativeTo:"Parent"` // Offset from the start of the format 14 subtable to Non-Default UVS Table. May be 0. }
func ParseVariationSelector ¶
func ParseVariationSelector(src []byte, parentSrc []byte) (VariationSelector, int, error)
type VariationStoreIndex ¶
type VariationStoreIndex struct {
DeltaSetOuter, DeltaSetInner uint16
}
VariationStoreIndex reference an item in the variation store
type VertOriginYMetric ¶
Source Files ¶
- aat_ankr_gen.go
- aat_ankr_src.go
- aat_common.go
- aat_feat_gen.go
- aat_feat_src.go
- aat_kerx_gen.go
- aat_kerx_src.go
- aat_ltag_gen.go
- aat_ltag_src.go
- aat_mortx_gen.go
- aat_mortx_src.go
- aat_properties.go
- aat_trak_gen.go
- aat_trak_src.go
- cmap_gen.go
- cmap_src.go
- glyphs.go
- glyphs_bitmap_gen.go
- glyphs_bitmap_src.go
- glyphs_glyf_gen.go
- glyphs_glyf_src.go
- glyphs_misc_gen.go
- glyphs_misc_src.go
- glyphs_sbix_gen.go
- glyphs_sbix_src.go
- head_gen.go
- head_src.go
- hhea_vhea_gen.go
- hhea_vhea_src.go
- hmtx_vmtx_gen.go
- hmtx_vmtx_src.go
- kern.go
- kern_gen.go
- kern_src.go
- maxp_gen.go
- maxp_src.go
- name_gen.go
- name_src.go
- os2_gen.go
- os2_src.go
- ot_gdef_gen.go
- ot_gdef_src.go
- ot_gpos_gen.go
- ot_gpos_src.go
- ot_gsub_gen.go
- ot_gsub_src.go
- ot_layout.go
- ot_layout_gen.go
- ot_layout_src.go
- ot_properties.go
- post_gen.go
- post_src.go
- tables.go
- xvar_gen.go
- xvar_src.go