support 2018.1.0

some improvements
This commit is contained in:
Perfare
2018-05-03 02:41:47 +08:00
parent 52ba354dc5
commit 8218662548
14 changed files with 323 additions and 279 deletions

View File

@@ -13,13 +13,14 @@ namespace AssetStudio
public UFont(AssetPreloadData preloadData, bool readSwitch)
{
var sourceFile = preloadData.sourceFile;
var version = sourceFile.version;
var reader = preloadData.InitReader();
m_Name = reader.ReadAlignedString();
if (readSwitch)
{
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)
if ((version[0] == 5 && version[1] >= 5) || version[0] > 5)//5.5 and up
{
var m_LineSpacing = reader.ReadSingle();
var m_DefaultMaterial = sourceFile.ReadPPtr();
@@ -33,48 +34,33 @@ namespace AssetStudio
int m_CharacterRects_size = reader.ReadInt32();
for (int i = 0; i < m_CharacterRects_size; i++)
{
int index = reader.ReadInt32();
//Rectf uv
float uvx = reader.ReadSingle();
float uvy = reader.ReadSingle();
float uvwidth = reader.ReadSingle();
float uvheight = reader.ReadSingle();
//Rectf vert
float vertx = reader.ReadSingle();
float verty = reader.ReadSingle();
float vertwidth = reader.ReadSingle();
float vertheight = reader.ReadSingle();
float width = reader.ReadSingle();
if (sourceFile.version[0] >= 4)
{
bool flipped = reader.ReadBoolean();
reader.Position += 3;
}
reader.Position += 44;//CharacterInfo data 41
}
int m_KerningValues_size = reader.ReadInt32();
for (int i = 0; i < m_KerningValues_size; i++)
{
int pairfirst = reader.ReadInt16();
int pairsecond = reader.ReadInt16();
float second = reader.ReadSingle();
reader.Position += 8;
}
var m_PixelScale = reader.ReadSingle();
int m_FontData_size = reader.ReadInt32();
if (m_FontData_size > 0)
{
m_FontData = reader.ReadBytes(m_FontData_size);
if (m_FontData[0] == 79 && m_FontData[1] == 84 && m_FontData[2] == 84 && m_FontData[3] == 79)
{ preloadData.extension = ".otf"; }
else { preloadData.extension = ".ttf"; }
{
preloadData.extension = ".otf";
}
else
{
preloadData.extension = ".ttf";
}
}
}
else
{
int m_AsciiStartOffset = reader.ReadInt32();
if (sourceFile.version[0] <= 3)
if (version[0] <= 3)
{
int m_FontCountX = reader.ReadInt32();
int m_FontCountY = reader.ReadInt32();
@@ -83,7 +69,7 @@ namespace AssetStudio
float m_Kerning = reader.ReadSingle();
float m_LineSpacing = reader.ReadSingle();
if (sourceFile.version[0] <= 3)
if (version[0] <= 3)
{
int m_PerCharacterKerning_size = reader.ReadInt32();
for (int i = 0; i < m_PerCharacterKerning_size; i++)
@@ -117,10 +103,10 @@ namespace AssetStudio
float vertheight = reader.ReadSingle();
float width = reader.ReadSingle();
if (sourceFile.version[0] >= 4)
if (version[0] >= 4)
{
bool flipped = reader.ReadBoolean();
reader.Position += 3;
var flipped = reader.ReadBoolean();
reader.AlignStream(4);
}
}
@@ -134,10 +120,10 @@ namespace AssetStudio
float second = reader.ReadSingle();
}
if (sourceFile.version[0] <= 3)
if (version[0] <= 3)
{
bool m_GridFont = reader.ReadBoolean();
reader.Position += 3; //4 byte alignment
var m_GridFont = reader.ReadBoolean();
reader.AlignStream(4);
}
else { float m_PixelScale = reader.ReadSingle(); }
@@ -147,30 +133,13 @@ namespace AssetStudio
m_FontData = reader.ReadBytes(m_FontData_size);
if (m_FontData[0] == 79 && m_FontData[1] == 84 && m_FontData[2] == 84 && m_FontData[3] == 79)
{ preloadData.extension = ".otf"; }
else { preloadData.extension = ".ttf"; }
}
float m_FontSize = reader.ReadSingle();//problem here in minifootball
float m_Ascent = reader.ReadSingle();
uint m_DefaultStyle = reader.ReadUInt32();
int m_FontNames = reader.ReadInt32();
for (int i = 0; i < m_FontNames; i++)
{
string m_FontName = reader.ReadAlignedString();
}
if (sourceFile.version[0] >= 4)
{
int m_FallbackFonts = reader.ReadInt32();
for (int i = 0; i < m_FallbackFonts; i++)
{
PPtr m_FallbackFont = sourceFile.ReadPPtr();
preloadData.extension = ".otf";
}
else
{
preloadData.extension = ".ttf";
}
int m_FontRenderingMode = reader.ReadInt32();
}
}
}