initial commit
This commit is contained in:
commit
4b60ece582
327 changed files with 28286 additions and 0 deletions
93
lib/fontParser/tables/head.cpp
Normal file
93
lib/fontParser/tables/head.cpp
Normal file
|
@ -0,0 +1,93 @@
|
|||
#include "head.h"
|
||||
#include <arpa/inet.h>
|
||||
|
||||
Head::Head(const std::string& p_tag, uint32_t p_checkSum, uint32_t p_offset, uint32_t p_length):
|
||||
Table(p_tag, p_checkSum, p_offset, p_length),
|
||||
fontRevisionMajor(0),
|
||||
fontRevisionMinor(0),
|
||||
flags(0),
|
||||
unitsPerEm(0),
|
||||
xMin(0),
|
||||
yMin(0),
|
||||
xMax(0),
|
||||
yMax(0),
|
||||
macStyle(0),
|
||||
lowestRecPPEM(0),
|
||||
fontDirectionHint(0),
|
||||
indexToLocFormat(0)
|
||||
{
|
||||
}
|
||||
|
||||
Head::~Head()
|
||||
{
|
||||
}
|
||||
|
||||
void Head::read(const std::string& path)
|
||||
{
|
||||
char * buffer;
|
||||
buffer = new char[2];
|
||||
|
||||
std::ifstream file(path, std::ios::in | std::ios::binary);
|
||||
file.seekg(offset);
|
||||
|
||||
file.read(buffer, 2); //version is not interesting, it is always 16.16 fixed point number equals to "1.0";
|
||||
file.read(buffer, 2); //version is not interesting, it is always 16.16 fixed point number equals to "1.0";
|
||||
|
||||
file.read(buffer, 2);
|
||||
fontRevisionMajor = ntohs(*((uint16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
fontRevisionMinor = ntohs(*((uint16_t*) buffer));
|
||||
|
||||
delete[] buffer;
|
||||
buffer = new char[4];
|
||||
file.read(buffer, 4); //checkSumAdjustment - it's something fishy, no idea what to use it for;
|
||||
file.read(buffer, 4); //magicNumber, always set to 0x5f0f3cf5;
|
||||
delete[] buffer;
|
||||
buffer = new char[2];
|
||||
|
||||
file.read(buffer, 2);
|
||||
flags = ntohs(*((uint16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
unitsPerEm = ntohs(*((uint16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2); //creation date is a signed int64
|
||||
file.read(buffer, 2);
|
||||
file.read(buffer, 2);
|
||||
file.read(buffer, 2);
|
||||
|
||||
file.read(buffer, 2); //last modification date is a signed int64
|
||||
file.read(buffer, 2);
|
||||
file.read(buffer, 2);
|
||||
file.read(buffer, 2);
|
||||
|
||||
file.read(buffer, 2);
|
||||
xMin = ntohs(*((int16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
yMin = ntohs(*((int16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
xMax = ntohs(*((int16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
yMax = ntohs(*((int16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
macStyle = ntohs(*((uint16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
lowestRecPPEM = ntohs(*((uint16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
fontDirectionHint = ntohs(*((int16_t*) buffer));
|
||||
|
||||
file.read(buffer, 2);
|
||||
indexToLocFormat = ntohs(*((int16_t*) buffer));
|
||||
|
||||
//and there is stil uint16 glyph data format, but its always 0;
|
||||
|
||||
file.close();
|
||||
delete[] buffer;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue