HeadTable = ref object
majorVersion*: uint16
minorVersion*: uint16
fontRevision*: float32
checkSumAdjustment*: uint32
magicNumber*: uint32
flags*: uint16
unitsPerEm*: uint16
created*: float64
modified*: float64
xMin*: int16
yMin*: int16
xMax*: int16
yMax*: int16
macStyle*: uint16
lowestRecPPEM*: uint16
fontDirectionHint*: int16
indexToLocFormat*: int16
glyphDataFormat*: int16
-
NameTable = ref object
format*: uint16
count*: uint16
stringOffset*: Offset16
nameRecords*: seq[NameRecord]
-
NameRecord = object
platformID*: uint16
encodingID*: uint16
languageID*: uint16
nameID*: uint16
name*: NameTableNames
length*: uint16
offset*: Offset16
text*: string
-
NameTableNames = enum
ntnCopyright, ntnFontFamily, ntnFontSubfamily, ntnUniqueID, ntnFullName,
ntnVersion, ntnPostScriptName, ntnTrademark, ntnManufacturer, ntnDesigner,
ntnDescription, ntnManufacturerURL, ntnDesignerURL, ntnLicense, ntnLicenseURL,
ntnReserved, ntnPreferredFamily, ntnPreferredSubfamily, ntnCompatibleFullName,
ntnSampleText, ntnPostScriptFindFontName, ntnWwsFamily, ntnWwsSubfamily
-
MaxpTable = ref object
version*: float
numGlyphs*: uint16
maxPoints*: uint16
maxContours*: uint16
maxCompositePoints*: uint16
maxCompositeContours*: uint16
maxZones*: uint16
maxTwilightPoints*: uint16
maxStorage*: uint16
maxFunctionDefs*: uint16
maxInstructionDefs*: uint16
maxStackElements*: uint16
maxSizeOfInstructions*: uint16
maxComponentElements*: uint16
maxComponentDepth*: uint16
-
OS2Table = ref object
version*: uint16
xAvgCharWidth*: int16
usWeightClass*: uint16
usWidthClass*: uint16
fsType*: uint16
ySubscriptXSize*: int16
ySubscriptYSize*: int16
ySubscriptXOffset*: int16
ySubscriptYOffset*: int16
ySuperscriptXSize*: int16
ySuperscriptYSize*: int16
ySuperscriptXOffset*: int16
ySuperscriptYOffset*: int16
yStrikeoutSize*: int16
yStrikeoutPosition*: int16
sFamilyClass*: int16
panose*: array[10, uint8]
ulUnicodeRange1*: uint32
ulUnicodeRange2*: uint32
ulUnicodeRange3*: uint32
ulUnicodeRange4*: uint32
achVendID*: string
fsSelection*: uint16
usFirstCharIndex*: uint16
usLastCharIndex*: uint16
sTypoAscender*: int16
sTypoDescender*: int16
sTypoLineGap*: int16
usWinAscent*: uint16
usWinDescent*: uint16
ulCodePageRange1*: uint32
ulCodePageRange2*: uint32
sxHeight*: int16
sCapHeight*: int16
usDefaultChar*: uint16
usBreakChar*: uint16
usMaxContext*: uint16
usLowerOpticalPointSize*: uint16
usUpperOpticalPointSize*: uint16
-
LocaTable = ref object
offsets*: seq[uint32]
-
HheaTable = ref object
majorVersion*: uint16
minorVersion*: uint16
ascender*: int16
descender*: int16
lineGap*: int16
advanceWidthMax*: uint16
minLeftSideBearing*: int16
minRightSideBearing*: int16
xMaxExtent*: int16
caretSlopeRise*: int16
caretSlopeRun*: int16
caretOffset*: int16
metricDataFormat*: int16
numberOfHMetrics*: uint16
-
Horizontal Header Table.
HmtxTable = ref object
hMetrics*: seq[LongHorMetricRecrod]
leftSideBearings*: seq[int16]
-
Horizontal Metrics Table
LongHorMetricRecrod = object
advanceWidth*: uint16
lsb*: int16
-
KernTable = ref object
version*: uint16
nTables*: uint16
subTables*: seq[KernSubTable]
-
KernSubTable = object
version*: uint16
length*: uint16
coverage*: uint16
numPairs*: uint16
searchRange*: uint16
entrySelector*: uint16
rangeShift*: uint16
kerningPairs*: seq[KerningPair]
-
KerningPair = object
left*: uint16
right*: uint16
value*: int16
-
CmapTable = ref object
version*: uint16
numTables*: uint16
encodingRecords*: seq[EncodingRecord]
glyphIndexMap*: Table[int, int]
-
EncodingRecord = object
platformID*: uint16
encodingID*: uint16
offset*: Offset32
-
SegmentMapping = ref object
format*: uint16
length*: uint16
language*: uint16
segCountX2*: uint16
searchRange*: uint16
entrySelector*: uint16
rangeShift*: uint16
endCode*: seq[uint16]
reservedPad*: uint16
startCode*: seq[uint16]
idDelta*: seq[uint16]
idRangeOffset*: seq[uint16]
glyphIdArray*: seq[uint16]
-
GlyfTable = ref object
offsets*: seq[int]
-
TtfCoordinate = object
x*: int
y*: int
isOnCurve*: bool
-
Chunk = object
tag*: string
checkSum*: uint32
offset*: uint32
length*: uint32
-
OtfFont = ref object
stream*: Stream
version*: float
numTables*: uint16
searchRange*: uint16
entrySelector*: uint16
rangeShift*: uint16
chunks*: Table[string, Chunk]
head*: HeadTable
name*: NameTable
maxp*: MaxpTable
os2*: OS2Table
loca*: LocaTable
hhea*: HheaTable
hmtx*: HmtxTable
kern*: KernTable
cmap*: CmapTable
glyf*: GlyfTable
-