public byte[] Rebuild(bool checksumAdjustment) { // create a Motorola Byte Order buffer for the new table WoffBuffer headBuffer = new WoffBuffer(SizeOfTable); // populate the buffer headBuffer.SetFixed(this.TableVersionNumber, (uint)FieldOffsets.TableVersionNumber); headBuffer.SetFixed(this.FontRevision, (uint)FieldOffsets.FontRevision); headBuffer.SetUInt(this.CheckSumAdjustment, (uint)FieldOffsets.CheckSumAdjustment); headBuffer.SetUInt(this.MagicNumber, (uint)FieldOffsets.MagicNumber); headBuffer.SetUShort(this.Flags, (uint)FieldOffsets.Flags); headBuffer.SetUShort(this.UnitsPerEm, (uint)FieldOffsets.UnitsPerEm); headBuffer.SetLong(this.Created, (uint)FieldOffsets.Created); headBuffer.SetLong(this.Modified, (uint)FieldOffsets.Modified); headBuffer.SetShort(this.XMin, (uint)FieldOffsets.XMin); headBuffer.SetShort(this.YMin, (uint)FieldOffsets.YMin); headBuffer.SetShort(this.XMax, (uint)FieldOffsets.XMax); headBuffer.SetShort(this.YMax, (uint)FieldOffsets.YMax); headBuffer.SetUShort(this.MacStyle, (uint)FieldOffsets.MacStyle); headBuffer.SetUShort(this.LowestRecPPEM, (uint)FieldOffsets.LowestRecPPEM); headBuffer.SetShort(this.FontDirectionHint, (uint)FieldOffsets.FontDirectionHint); headBuffer.SetShort(this.IndexToLocFormat, (uint)FieldOffsets.IndexToLocFormat); headBuffer.SetShort(this.GlyphDataFormat, (uint)FieldOffsets.GlyphDataFormat); if (checksumAdjustment) { // For checksum adjustment, we set this value to 0 headBuffer.SetUInt(0, (uint)FieldOffsets.CheckSumAdjustment); } return(headBuffer.GetBuffer()); }