mirror of
https://github.com/QL-Win/QuickLook.git
synced 2025-09-16 13:22:40 +00:00
Temporary solution to read woff2
This commit is contained in:
@@ -0,0 +1,622 @@
|
||||
//Apache2, 2016-present, WinterDev
|
||||
using System.IO;
|
||||
|
||||
namespace Typography.OpenFont.Tables
|
||||
{
|
||||
|
||||
//https://docs.microsoft.com/en-us/typography/opentype/spec/os2
|
||||
/// <summary>
|
||||
/// OS2 and Windows metrics,
|
||||
/// consists of a set of metrics and other data
|
||||
/// that are REQUIRED in OpenType fonts.
|
||||
/// </summary>
|
||||
public class OS2Table : TableEntry
|
||||
{
|
||||
public const string _N = "OS/2";
|
||||
public override string Name => _N;
|
||||
//
|
||||
|
||||
// Type Name of Entry Comments
|
||||
//uint16 version 0x0005
|
||||
//int16 xAvgCharWidth
|
||||
//uint16 usWeightClass
|
||||
//uint16 usWidthClass
|
||||
//uint16 fsType
|
||||
public ushort version; //0-5
|
||||
public short xAvgCharWidth; //just average, not recommend to use.
|
||||
public ushort usWeightClass; //visual weight (degree of blackness or thickness of strokes), 0-1000
|
||||
|
||||
//usWeightClass:
|
||||
//Value Description C Definition (from windows.h)
|
||||
//100 Thin FW_THIN
|
||||
//200 Extra-light FW_EXTRALIGHT
|
||||
// (Ultra-light)
|
||||
//300 Light FW_LIGHT
|
||||
//400 Normal FW_NORMAL
|
||||
// (Regular)
|
||||
//500 Medium FW_MEDIUM
|
||||
//600 Semi-bold FW_SEMIBOLD
|
||||
// (Demi-bold)
|
||||
//700 Bold FW_BOLD
|
||||
//800 Extra-bold FW_EXTRABOLD
|
||||
// (Ultra-bold)
|
||||
//900 Black (Heavy) FW_BLACK
|
||||
|
||||
public ushort usWidthClass; //A relative change from the normal aspect ratio (width to height ratio),
|
||||
//as specified by a font designer for the glyphs in a font.
|
||||
//Although every glyph in a font may have a different numeric aspect ratio,
|
||||
//each glyph in a font of normal width is considered to have a relative aspect ratio of one.
|
||||
//When a new type style is created of a different width class (either by a font designer or by some automated means)
|
||||
//the relative aspect ratio of the characters in the new font is some percentage greater or less than those same characters in the normal
|
||||
//font — it is this difference that this parameter specifies.
|
||||
|
||||
//usWidthClass
|
||||
//Value Description C Definition % of normal
|
||||
//1 Ultra-condensed FWIDTH_ULTRA_CONDENSED 50
|
||||
//2 Extra-condensed FWIDTH_EXTRA_CONDENSED 62.5
|
||||
//3 Condensed FWIDTH_CONDENSED 75
|
||||
//4 Semi-condensed FWIDTH_SEMI_CONDENSED 87.5
|
||||
//5 Medium (normal) FWIDTH_NORMAL 100
|
||||
//6 Semi-expanded FWIDTH_SEMI_EXPANDED 112.5
|
||||
//7 Expanded FWIDTH_EXPANDED 125
|
||||
//8 Extra-expanded FWIDTH_EXTRA_EXPANDED 150
|
||||
//9 Ultra-expanded FWIDTH_ULTRA_EXPANDED 200
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public ushort fsType; //Type flags., embedding licensing rights for the font
|
||||
|
||||
//int16 ySubscriptXSize
|
||||
//int16 ySubscriptYSize
|
||||
//int16 ySubscriptXOffset
|
||||
//int16 ySubscriptYOffset
|
||||
//int16 ySuperscriptXSize
|
||||
//int16 ySuperscriptYSize
|
||||
//int16 ySuperscriptXOffset
|
||||
//int16 ySuperscriptYOffset
|
||||
//int16 yStrikeoutSize
|
||||
//int16 yStrikeoutPosition
|
||||
//int16 sFamilyClass
|
||||
public short ySubscriptXSize;
|
||||
public short ySubscriptYSize;
|
||||
public short ySubscriptXOffset;
|
||||
public short ySubscriptYOffset;
|
||||
public short ySuperscriptXSize;
|
||||
public short ySuperscriptYSize;
|
||||
public short ySuperscriptXOffset;
|
||||
public short ySuperscriptYOffset;
|
||||
public short yStrikeoutSize;
|
||||
public short yStrikeoutPosition;
|
||||
public short sFamilyClass; //This parameter is a classification of font-family design. ,see https://www.microsoft.com/typography/otspec/ibmfc.htm
|
||||
|
||||
//uint8 panose[10] (array of bytes,len =10)
|
||||
public byte[] panose;
|
||||
//uint32 ulUnicodeRange1 Bits 0-31
|
||||
//uint32 ulUnicodeRange2 Bits 32-63
|
||||
//uint32 ulUnicodeRange3 Bits 64-95
|
||||
//uint32 ulUnicodeRange4 Bits 96-127
|
||||
public uint ulUnicodeRange1;
|
||||
public uint ulUnicodeRange2;
|
||||
public uint ulUnicodeRange3;
|
||||
public uint ulUnicodeRange4;
|
||||
|
||||
//Tag achVendID[4] char 4
|
||||
public uint achVendID; //see 'registered venders' at https://www.microsoft.com/typography/links/vendorlist.aspx
|
||||
|
||||
//uint16 fsSelection
|
||||
//uint16 usFirstCharIndex
|
||||
//uint16 usLastCharIndex
|
||||
public ushort fsSelection; //Contains information concerning the nature of the font patterns
|
||||
public ushort usFirstCharIndex;
|
||||
public ushort usLastCharIndex;
|
||||
//int16 sTypoAscender
|
||||
//int16 sTypoDescender
|
||||
//int16 sTypoLineGap
|
||||
public short sTypoAscender;
|
||||
public short sTypoDescender;
|
||||
public short sTypoLineGap;
|
||||
//uint16 usWinAscent
|
||||
//uint16 usWinDescent
|
||||
//uint32 ulCodePageRange1 Bits 0-31
|
||||
//uint32 ulCodePageRange2 Bits 32-63
|
||||
public ushort usWinAscent;
|
||||
public ushort usWinDescent;
|
||||
public uint ulCodePageRange1;
|
||||
public uint ulCodePageRange2;
|
||||
//int16 sxHeight
|
||||
//int16 sCapHeight
|
||||
public short sxHeight;
|
||||
public short sCapHeight;
|
||||
//uint16 usDefaultChar
|
||||
//uint16 usBreakChar
|
||||
//uint16 usMaxContext
|
||||
//uint16 usLowerOpticalPointSize
|
||||
//uint16 usUpperOpticalPointSize
|
||||
public ushort usDefaultChar;
|
||||
public ushort usBreakChar;
|
||||
public ushort usMaxContext;
|
||||
public ushort usLowerOpticalPointSize;
|
||||
public ushort usUpperOpticalPointSize;
|
||||
|
||||
|
||||
#if DEBUG
|
||||
public override string ToString()
|
||||
{
|
||||
return version + "," + Utils.TagToString(this.achVendID);
|
||||
}
|
||||
#endif
|
||||
protected override void ReadContentFrom(BinaryReader reader)
|
||||
{
|
||||
//Six versions of the OS/2 table have been defined: versions 0 to 5
|
||||
//Versions 0 to 4 were defined in earlier versions of the OpenType or
|
||||
//TrueType specifications.
|
||||
|
||||
switch (this.version = reader.ReadUInt16())
|
||||
{
|
||||
default: throw new System.NotSupportedException();
|
||||
case 0: //defined in TrueType revision 1.5
|
||||
ReadVersion0(reader);
|
||||
break;
|
||||
case 1: // defined in TrueType revision 1.66
|
||||
ReadVersion1(reader);
|
||||
break;
|
||||
case 2: //defined in OpenType version 1.2
|
||||
ReadVersion2(reader);
|
||||
break;
|
||||
case 3: //defined in OpenType version 1.4
|
||||
ReadVersion3(reader);
|
||||
break;
|
||||
case 4: //defined in OpenType version 1.6
|
||||
ReadVersion4(reader);
|
||||
break;
|
||||
case 5:
|
||||
ReadVersion5(reader);
|
||||
break;
|
||||
}
|
||||
}
|
||||
void ReadVersion0(BinaryReader reader)
|
||||
{
|
||||
//https://www.microsoft.com/typography/otspec/os2ver0.htm
|
||||
//USHORT version 0x0000
|
||||
//SHORT xAvgCharWidth
|
||||
//USHORT usWeightClass
|
||||
//USHORT usWidthClass
|
||||
//USHORT fsType
|
||||
this.xAvgCharWidth = reader.ReadInt16();
|
||||
this.usWeightClass = reader.ReadUInt16();
|
||||
this.usWidthClass = reader.ReadUInt16();
|
||||
this.fsType = reader.ReadUInt16();
|
||||
|
||||
//SHORT ySubscriptXSize
|
||||
//SHORT ySubscriptYSize
|
||||
//SHORT ySubscriptXOffset
|
||||
//SHORT ySubscriptYOffset
|
||||
//SHORT ySuperscriptXSize
|
||||
//SHORT ySuperscriptYSize
|
||||
//SHORT ySuperscriptXOffset
|
||||
//SHORT ySuperscriptYOffset
|
||||
//SHORT yStrikeoutSize
|
||||
//SHORT yStrikeoutPosition
|
||||
//SHORT sFamilyClass
|
||||
this.ySubscriptXSize = reader.ReadInt16();
|
||||
this.ySubscriptYSize = reader.ReadInt16();
|
||||
this.ySubscriptXOffset = reader.ReadInt16();
|
||||
this.ySubscriptYOffset = reader.ReadInt16();
|
||||
this.ySuperscriptXSize = reader.ReadInt16();
|
||||
this.ySuperscriptYSize = reader.ReadInt16();
|
||||
this.ySuperscriptXOffset = reader.ReadInt16();
|
||||
this.ySuperscriptYOffset = reader.ReadInt16();
|
||||
this.yStrikeoutSize = reader.ReadInt16();
|
||||
this.yStrikeoutPosition = reader.ReadInt16();
|
||||
this.sFamilyClass = reader.ReadInt16();
|
||||
//BYTE panose[10]
|
||||
this.panose = reader.ReadBytes(10);
|
||||
//ULONG ulCharRange[4] Bits 0-31
|
||||
this.ulUnicodeRange1 = reader.ReadUInt32();
|
||||
//CHAR achVendID[4]
|
||||
this.achVendID = reader.ReadUInt32();
|
||||
//USHORT fsSelection
|
||||
//USHORT usFirstCharIndex
|
||||
//USHORT usLastCharIndex
|
||||
this.fsSelection = reader.ReadUInt16();
|
||||
this.usFirstCharIndex = reader.ReadUInt16();
|
||||
this.usLastCharIndex = reader.ReadUInt16();
|
||||
//SHORT sTypoAscender
|
||||
//SHORT sTypoDescender
|
||||
//SHORT sTypoLineGap
|
||||
this.sTypoAscender = reader.ReadInt16();
|
||||
this.sTypoDescender = reader.ReadInt16();
|
||||
this.sTypoLineGap = reader.ReadInt16();
|
||||
//USHORT usWinAscent
|
||||
//USHORT usWinDescent
|
||||
this.usWinAscent = reader.ReadUInt16();
|
||||
this.usWinDescent = reader.ReadUInt16();
|
||||
}
|
||||
|
||||
void ReadVersion1(BinaryReader reader)
|
||||
{
|
||||
//https://www.microsoft.com/typography/otspec/os2ver1.htm
|
||||
|
||||
//SHORT xAvgCharWidth
|
||||
//USHORT usWeightClass
|
||||
//USHORT usWidthClass
|
||||
//USHORT fsType
|
||||
this.xAvgCharWidth = reader.ReadInt16();
|
||||
this.usWeightClass = reader.ReadUInt16();
|
||||
this.usWidthClass = reader.ReadUInt16();
|
||||
this.fsType = reader.ReadUInt16();
|
||||
//SHORT ySubscriptXSize
|
||||
//SHORT ySubscriptYSize
|
||||
//SHORT ySubscriptXOffset
|
||||
//SHORT ySubscriptYOffset
|
||||
//SHORT ySuperscriptXSize
|
||||
//SHORT ySuperscriptYSize
|
||||
//SHORT ySuperscriptXOffset
|
||||
//SHORT ySuperscriptYOffset
|
||||
//SHORT yStrikeoutSize
|
||||
//SHORT yStrikeoutPosition
|
||||
//SHORT sFamilyClass
|
||||
this.ySubscriptXSize = reader.ReadInt16();
|
||||
this.ySubscriptYSize = reader.ReadInt16();
|
||||
this.ySubscriptXOffset = reader.ReadInt16();
|
||||
this.ySubscriptYOffset = reader.ReadInt16();
|
||||
this.ySuperscriptXSize = reader.ReadInt16();
|
||||
this.ySuperscriptYSize = reader.ReadInt16();
|
||||
this.ySuperscriptXOffset = reader.ReadInt16();
|
||||
this.ySuperscriptYOffset = reader.ReadInt16();
|
||||
this.yStrikeoutSize = reader.ReadInt16();
|
||||
this.yStrikeoutPosition = reader.ReadInt16();
|
||||
this.sFamilyClass = reader.ReadInt16();
|
||||
|
||||
//BYTE panose[10]
|
||||
this.panose = reader.ReadBytes(10);
|
||||
//ULONG ulUnicodeRange1 Bits 0-31
|
||||
//ULONG ulUnicodeRange2 Bits 32-63
|
||||
//ULONG ulUnicodeRange3 Bits 64-95
|
||||
//ULONG ulUnicodeRange4 Bits 96-127
|
||||
this.ulUnicodeRange1 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange2 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange3 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange4 = reader.ReadUInt32();
|
||||
//CHAR achVendID[4]
|
||||
this.achVendID = reader.ReadUInt32();
|
||||
//USHORT fsSelection
|
||||
//USHORT usFirstCharIndex
|
||||
//USHORT usLastCharIndex
|
||||
this.fsSelection = reader.ReadUInt16();
|
||||
this.usFirstCharIndex = reader.ReadUInt16();
|
||||
this.usLastCharIndex = reader.ReadUInt16();
|
||||
//SHORT sTypoAscender
|
||||
//SHORT sTypoDescender
|
||||
//SHORT sTypoLineGap
|
||||
this.sTypoAscender = reader.ReadInt16();
|
||||
this.sTypoDescender = reader.ReadInt16();
|
||||
this.sTypoLineGap = reader.ReadInt16();
|
||||
//USHORT usWinAscent
|
||||
//USHORT usWinDescent
|
||||
//ULONG ulCodePageRange1 Bits 0-31
|
||||
//ULONG ulCodePageRange2 Bits 32-63
|
||||
this.usWinAscent = reader.ReadUInt16();
|
||||
this.usWinDescent = reader.ReadUInt16();
|
||||
this.ulCodePageRange1 = reader.ReadUInt32();
|
||||
this.ulCodePageRange2 = reader.ReadUInt32();
|
||||
}
|
||||
void ReadVersion2(BinaryReader reader)
|
||||
{
|
||||
//https://www.microsoft.com/typography/otspec/os2ver2.htm
|
||||
|
||||
//
|
||||
//SHORT xAvgCharWidth
|
||||
//USHORT usWeightClass
|
||||
//USHORT usWidthClass
|
||||
//USHORT fsType
|
||||
this.xAvgCharWidth = reader.ReadInt16();
|
||||
this.usWeightClass = reader.ReadUInt16();
|
||||
this.usWidthClass = reader.ReadUInt16();
|
||||
this.fsType = reader.ReadUInt16();
|
||||
//SHORT ySubscriptXSize
|
||||
//SHORT ySubscriptYSize
|
||||
//SHORT ySubscriptXOffset
|
||||
//SHORT ySubscriptYOffset
|
||||
//SHORT ySuperscriptXSize
|
||||
//SHORT ySuperscriptYSize
|
||||
//SHORT ySuperscriptXOffset
|
||||
//SHORT ySuperscriptYOffset
|
||||
//SHORT yStrikeoutSize
|
||||
//SHORT yStrikeoutPosition
|
||||
//SHORT sFamilyClass
|
||||
this.ySubscriptXSize = reader.ReadInt16();
|
||||
this.ySubscriptYSize = reader.ReadInt16();
|
||||
this.ySubscriptXOffset = reader.ReadInt16();
|
||||
this.ySubscriptYOffset = reader.ReadInt16();
|
||||
this.ySuperscriptXSize = reader.ReadInt16();
|
||||
this.ySuperscriptYSize = reader.ReadInt16();
|
||||
this.ySuperscriptXOffset = reader.ReadInt16();
|
||||
this.ySuperscriptYOffset = reader.ReadInt16();
|
||||
this.yStrikeoutSize = reader.ReadInt16();
|
||||
this.yStrikeoutPosition = reader.ReadInt16();
|
||||
this.sFamilyClass = reader.ReadInt16();
|
||||
//BYTE panose[10]
|
||||
this.panose = reader.ReadBytes(10);
|
||||
//ULONG ulUnicodeRange1 Bits 0-31
|
||||
//ULONG ulUnicodeRange2 Bits 32-63
|
||||
//ULONG ulUnicodeRange3 Bits 64-95
|
||||
//ULONG ulUnicodeRange4 Bits 96-127
|
||||
this.ulUnicodeRange1 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange2 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange3 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange4 = reader.ReadUInt32();
|
||||
//CHAR achVendID[4]
|
||||
this.achVendID = reader.ReadUInt32();
|
||||
//USHORT fsSelection
|
||||
//USHORT usFirstCharIndex
|
||||
//USHORT usLastCharIndex
|
||||
this.fsSelection = reader.ReadUInt16();
|
||||
this.usFirstCharIndex = reader.ReadUInt16();
|
||||
this.usLastCharIndex = reader.ReadUInt16();
|
||||
//SHORT sTypoAscender
|
||||
//SHORT sTypoDescender
|
||||
//SHORT sTypoLineGap
|
||||
this.sTypoAscender = reader.ReadInt16();
|
||||
this.sTypoDescender = reader.ReadInt16();
|
||||
this.sTypoLineGap = reader.ReadInt16();
|
||||
//USHORT usWinAscent
|
||||
//USHORT usWinDescent
|
||||
//ULONG ulCodePageRange1 Bits 0-31
|
||||
//ULONG ulCodePageRange2 Bits 32-63
|
||||
this.usWinAscent = reader.ReadUInt16();
|
||||
this.usWinDescent = reader.ReadUInt16();
|
||||
this.ulCodePageRange1 = reader.ReadUInt32();
|
||||
this.ulCodePageRange2 = reader.ReadUInt32();
|
||||
//SHORT sxHeight
|
||||
//SHORT sCapHeight
|
||||
//USHORT usDefaultChar
|
||||
//USHORT usBreakChar
|
||||
//USHORT usMaxContext
|
||||
this.sxHeight = reader.ReadInt16();
|
||||
this.sCapHeight = reader.ReadInt16();
|
||||
this.usDefaultChar = reader.ReadUInt16();
|
||||
this.usBreakChar = reader.ReadUInt16();
|
||||
this.usMaxContext = reader.ReadUInt16();
|
||||
}
|
||||
void ReadVersion3(BinaryReader reader)
|
||||
{
|
||||
|
||||
//https://www.microsoft.com/typography/otspec/os2ver3.htm
|
||||
// USHORT version 0x0003
|
||||
//SHORT xAvgCharWidth
|
||||
//USHORT usWeightClass
|
||||
//USHORT usWidthClass
|
||||
//USHORT fsType
|
||||
this.xAvgCharWidth = reader.ReadInt16();
|
||||
this.usWeightClass = reader.ReadUInt16();
|
||||
this.usWidthClass = reader.ReadUInt16();
|
||||
this.fsType = reader.ReadUInt16();
|
||||
//SHORT ySubscriptXSize
|
||||
//SHORT ySubscriptYSize
|
||||
//SHORT ySubscriptXOffset
|
||||
//SHORT ySubscriptYOffset
|
||||
//SHORT ySuperscriptXSize
|
||||
//SHORT ySuperscriptYSize
|
||||
//SHORT ySuperscriptXOffset
|
||||
//SHORT ySuperscriptYOffset
|
||||
//SHORT yStrikeoutSize
|
||||
//SHORT yStrikeoutPosition
|
||||
//SHORT sFamilyClass
|
||||
this.ySubscriptXSize = reader.ReadInt16();
|
||||
this.ySubscriptYSize = reader.ReadInt16();
|
||||
this.ySubscriptXOffset = reader.ReadInt16();
|
||||
this.ySubscriptYOffset = reader.ReadInt16();
|
||||
this.ySuperscriptXSize = reader.ReadInt16();
|
||||
this.ySuperscriptYSize = reader.ReadInt16();
|
||||
this.ySuperscriptXOffset = reader.ReadInt16();
|
||||
this.ySuperscriptYOffset = reader.ReadInt16();
|
||||
this.yStrikeoutSize = reader.ReadInt16();
|
||||
this.yStrikeoutPosition = reader.ReadInt16();
|
||||
this.sFamilyClass = reader.ReadInt16();
|
||||
//BYTE panose[10]
|
||||
this.panose = reader.ReadBytes(10);
|
||||
//ULONG ulUnicodeRange1 Bits 0-31
|
||||
//ULONG ulUnicodeRange2 Bits 32-63
|
||||
//ULONG ulUnicodeRange3 Bits 64-95
|
||||
//ULONG ulUnicodeRange4 Bits 96-127
|
||||
this.ulUnicodeRange1 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange2 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange3 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange4 = reader.ReadUInt32();
|
||||
//CHAR achVendID[4]
|
||||
this.achVendID = reader.ReadUInt32();
|
||||
//USHORT fsSelection
|
||||
//USHORT usFirstCharIndex
|
||||
//USHORT usLastCharIndex
|
||||
this.fsSelection = reader.ReadUInt16();
|
||||
this.usFirstCharIndex = reader.ReadUInt16();
|
||||
this.usLastCharIndex = reader.ReadUInt16();
|
||||
//SHORT sTypoAscender
|
||||
//SHORT sTypoDescender
|
||||
//SHORT sTypoLineGap
|
||||
this.sTypoAscender = reader.ReadInt16();
|
||||
this.sTypoDescender = reader.ReadInt16();
|
||||
this.sTypoLineGap = reader.ReadInt16();
|
||||
//USHORT usWinAscent
|
||||
//USHORT usWinDescent
|
||||
//ULONG ulCodePageRange1 Bits 0-31
|
||||
//ULONG ulCodePageRange2 Bits 32-63
|
||||
this.usWinAscent = reader.ReadUInt16();
|
||||
this.usWinDescent = reader.ReadUInt16();
|
||||
this.ulCodePageRange1 = reader.ReadUInt32();
|
||||
this.ulCodePageRange2 = reader.ReadUInt32();
|
||||
//SHORT sxHeight
|
||||
//SHORT sCapHeight
|
||||
//USHORT usDefaultChar
|
||||
//USHORT usBreakChar
|
||||
//USHORT usMaxContext
|
||||
this.sxHeight = reader.ReadInt16();
|
||||
this.sCapHeight = reader.ReadInt16();
|
||||
this.usDefaultChar = reader.ReadUInt16();
|
||||
this.usBreakChar = reader.ReadUInt16();
|
||||
this.usMaxContext = reader.ReadUInt16();
|
||||
}
|
||||
void ReadVersion4(BinaryReader reader)
|
||||
{
|
||||
//https://www.microsoft.com/typography/otspec/os2ver4.htm
|
||||
|
||||
//SHORT xAvgCharWidth
|
||||
//USHORT usWeightClass
|
||||
//USHORT usWidthClass
|
||||
//USHORT fsType
|
||||
this.xAvgCharWidth = reader.ReadInt16();
|
||||
this.usWeightClass = reader.ReadUInt16();
|
||||
this.usWidthClass = reader.ReadUInt16();
|
||||
this.fsType = reader.ReadUInt16();
|
||||
//SHORT ySubscriptXSize
|
||||
//SHORT ySubscriptYSize
|
||||
//SHORT ySubscriptXOffset
|
||||
//SHORT ySubscriptYOffset
|
||||
//SHORT ySuperscriptXSize
|
||||
//SHORT ySuperscriptYSize
|
||||
//SHORT ySuperscriptXOffset
|
||||
//SHORT ySuperscriptYOffset
|
||||
//SHORT yStrikeoutSize
|
||||
//SHORT yStrikeoutPosition
|
||||
//SHORT sFamilyClass
|
||||
this.ySubscriptXSize = reader.ReadInt16();
|
||||
this.ySubscriptYSize = reader.ReadInt16();
|
||||
this.ySubscriptXOffset = reader.ReadInt16();
|
||||
this.ySubscriptYOffset = reader.ReadInt16();
|
||||
this.ySuperscriptXSize = reader.ReadInt16();
|
||||
this.ySuperscriptYSize = reader.ReadInt16();
|
||||
this.ySuperscriptXOffset = reader.ReadInt16();
|
||||
this.ySuperscriptYOffset = reader.ReadInt16();
|
||||
this.yStrikeoutSize = reader.ReadInt16();
|
||||
this.yStrikeoutPosition = reader.ReadInt16();
|
||||
this.sFamilyClass = reader.ReadInt16();
|
||||
//BYTE panose[10]
|
||||
this.panose = reader.ReadBytes(10);
|
||||
//ULONG ulUnicodeRange1 Bits 0-31
|
||||
//ULONG ulUnicodeRange2 Bits 32-63
|
||||
//ULONG ulUnicodeRange3 Bits 64-95
|
||||
//ULONG ulUnicodeRange4 Bits 96-127
|
||||
this.ulUnicodeRange1 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange2 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange3 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange4 = reader.ReadUInt32();
|
||||
//CHAR achVendID[4]
|
||||
this.achVendID = reader.ReadUInt32();
|
||||
//USHORT fsSelection
|
||||
//USHORT usFirstCharIndex
|
||||
//USHORT usLastCharIndex
|
||||
this.fsSelection = reader.ReadUInt16();
|
||||
this.usFirstCharIndex = reader.ReadUInt16();
|
||||
this.usLastCharIndex = reader.ReadUInt16();
|
||||
//SHORT sTypoAscender
|
||||
//SHORT sTypoDescender
|
||||
//SHORT sTypoLineGap
|
||||
this.sTypoAscender = reader.ReadInt16();
|
||||
this.sTypoDescender = reader.ReadInt16();
|
||||
this.sTypoLineGap = reader.ReadInt16();
|
||||
//USHORT usWinAscent
|
||||
//USHORT usWinDescent
|
||||
//ULONG ulCodePageRange1 Bits 0-31
|
||||
//ULONG ulCodePageRange2 Bits 32-63
|
||||
this.usWinAscent = reader.ReadUInt16();
|
||||
this.usWinDescent = reader.ReadUInt16();
|
||||
this.ulCodePageRange1 = reader.ReadUInt32();
|
||||
this.ulCodePageRange2 = reader.ReadUInt32();
|
||||
//SHORT sxHeight
|
||||
//SHORT sCapHeight
|
||||
//USHORT usDefaultChar
|
||||
//USHORT usBreakChar
|
||||
//USHORT usMaxContext
|
||||
this.sxHeight = reader.ReadInt16();
|
||||
this.sCapHeight = reader.ReadInt16();
|
||||
this.usDefaultChar = reader.ReadUInt16();
|
||||
this.usBreakChar = reader.ReadUInt16();
|
||||
this.usMaxContext = reader.ReadUInt16();
|
||||
}
|
||||
|
||||
void ReadVersion5(BinaryReader reader)
|
||||
{
|
||||
this.xAvgCharWidth = reader.ReadInt16();
|
||||
this.usWeightClass = reader.ReadUInt16();
|
||||
this.usWidthClass = reader.ReadUInt16();
|
||||
this.fsType = reader.ReadUInt16();
|
||||
//SHORT ySubscriptXSize
|
||||
//SHORT ySubscriptYSize
|
||||
//SHORT ySubscriptXOffset
|
||||
//SHORT ySubscriptYOffset
|
||||
//SHORT ySuperscriptXSize
|
||||
//SHORT ySuperscriptYSize
|
||||
//SHORT ySuperscriptXOffset
|
||||
//SHORT ySuperscriptYOffset
|
||||
//SHORT yStrikeoutSize
|
||||
//SHORT yStrikeoutPosition
|
||||
//SHORT sFamilyClass
|
||||
this.ySubscriptXSize = reader.ReadInt16();
|
||||
this.ySubscriptYSize = reader.ReadInt16();
|
||||
this.ySubscriptXOffset = reader.ReadInt16();
|
||||
this.ySubscriptYOffset = reader.ReadInt16();
|
||||
this.ySuperscriptXSize = reader.ReadInt16();
|
||||
this.ySuperscriptYSize = reader.ReadInt16();
|
||||
this.ySuperscriptXOffset = reader.ReadInt16();
|
||||
this.ySuperscriptYOffset = reader.ReadInt16();
|
||||
this.yStrikeoutSize = reader.ReadInt16();
|
||||
this.yStrikeoutPosition = reader.ReadInt16();
|
||||
this.sFamilyClass = reader.ReadInt16();
|
||||
|
||||
//BYTE panose[10]
|
||||
this.panose = reader.ReadBytes(10);
|
||||
//ULONG ulUnicodeRange1 Bits 0-31
|
||||
//ULONG ulUnicodeRange2 Bits 32-63
|
||||
//ULONG ulUnicodeRange3 Bits 64-95
|
||||
//ULONG ulUnicodeRange4 Bits 96-127
|
||||
this.ulUnicodeRange1 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange2 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange3 = reader.ReadUInt32();
|
||||
this.ulUnicodeRange4 = reader.ReadUInt32();
|
||||
|
||||
//CHAR achVendID[4]
|
||||
this.achVendID = reader.ReadUInt32();
|
||||
//USHORT fsSelection
|
||||
//USHORT usFirstCharIndex
|
||||
//USHORT usLastCharIndex
|
||||
this.fsSelection = reader.ReadUInt16();
|
||||
this.usFirstCharIndex = reader.ReadUInt16();
|
||||
this.usLastCharIndex = reader.ReadUInt16();
|
||||
//SHORT sTypoAscender
|
||||
//SHORT sTypoDescender
|
||||
//SHORT sTypoLineGap
|
||||
this.sTypoAscender = reader.ReadInt16();
|
||||
this.sTypoDescender = reader.ReadInt16();
|
||||
this.sTypoLineGap = reader.ReadInt16();
|
||||
//USHORT usWinAscent
|
||||
//USHORT usWinDescent
|
||||
//ULONG ulCodePageRange1 Bits 0-31
|
||||
//ULONG ulCodePageRange2 Bits 32-63
|
||||
this.usWinAscent = reader.ReadUInt16();
|
||||
this.usWinDescent = reader.ReadUInt16();
|
||||
this.ulCodePageRange1 = reader.ReadUInt32();
|
||||
this.ulCodePageRange2 = reader.ReadUInt32();
|
||||
//SHORT sxHeight
|
||||
//SHORT sCapHeight
|
||||
//USHORT usDefaultChar
|
||||
//USHORT usBreakChar
|
||||
//USHORT usMaxContext
|
||||
this.sxHeight = reader.ReadInt16();
|
||||
this.sCapHeight = reader.ReadInt16();
|
||||
this.usDefaultChar = reader.ReadUInt16();
|
||||
this.usBreakChar = reader.ReadUInt16();
|
||||
this.usMaxContext = reader.ReadUInt16();
|
||||
//USHORT usLowerOpticalPointSize
|
||||
//USHORT usUpperOpticalPointSize
|
||||
|
||||
this.usLowerOpticalPointSize = reader.ReadUInt16();
|
||||
this.usUpperOpticalPointSize = reader.ReadUInt16();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user