[Libreoffice-commits] core.git: vcl/inc vcl/source
Julien Nabet (via logerrit)
logerrit at kemper.freedesktop.org
Sat Oct 12 21:32:46 UTC 2019
vcl/inc/sft.hxx | 216 +++++++++++++++++++++++++++++++++++++++++
vcl/source/fontsubset/sft.cxx | 119 ++++++++++------------
vcl/source/fontsubset/ttcr.cxx | 46 +++-----
3 files changed, 293 insertions(+), 88 deletions(-)
New commits:
commit 6f0e2cc38bbdb9fe115f3df38d7a596416d34bc2
Author: Julien Nabet <serval2412 at yahoo.fr>
AuthorDate: Sat Oct 12 19:31:02 2019 +0200
Commit: Julien Nabet <serval2412 at yahoo.fr>
CommitDate: Sat Oct 12 23:31:30 2019 +0200
Document and replace some magic values in sft/ttcr (vcl)
Change-Id: Id9c3f96acb7b93c7ef215ae33d98ad17ef45095c
Reviewed-on: https://gerrit.libreoffice.org/80719
Reviewed-by: Khaled Hosny <khaledhosny at eglug.org>
Tested-by: Jenkins
diff --git a/vcl/inc/sft.hxx b/vcl/inc/sft.hxx
index aa81dcd151cb..39bc2ecfd421 100644
--- a/vcl/inc/sft.hxx
+++ b/vcl/inc/sft.hxx
@@ -185,6 +185,222 @@ namespace vcl
struct TrueTypeFont;
+/*
+ Some table OS/2 consts
+ quick history:
+ OpenType has been created from TrueType
+ - original TrueType had an OS/2 table with a length of 68 bytes
+ (cf https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6OS2.html)
+ - There have been 6 versions (from version 0 to 5)
+ (cf https://docs.microsoft.com/en-us/typography/opentype/otspec140/os2ver0)
+
+ For the record:
+ // From Initial TrueType version
+ TYPE NAME FROM BYTE
+ uint16 version 0
+ int16 xAvgCharWidth 2
+ uint16 usWeightClass 4
+ uint16 usWidthClass 6
+ uint16 fsType 8
+ int16 ySubscriptXSize 10
+ int16 ySubscriptYSize 12
+ int16 ySubscriptXOffset 14
+ int16 ySubscriptYOffset 16
+ int16 ySuperscriptXSize 18
+ int16 ySuperscriptYSize 20
+ int16 ySuperscriptXOffset 22
+ int16 ySuperscriptYOffset 24
+ int16 yStrikeoutSize 26
+ int16 yStrikeoutPosition 28
+ int16 sFamilyClass 30
+ uint8 panose[10] 32
+ uint32 ulUnicodeRange1 42
+ uint32 ulUnicodeRange2 46
+ uint32 ulUnicodeRange3 50
+ uint32 ulUnicodeRange4 54
+ Tag achVendID 58
+ uint16 fsSelection 62
+ uint16 usFirstCharIndex 64
+ uint16 usLastCharIndex 66
+
+ // From Version 0 of OpenType
+ int16 sTypoAscender 68
+ int16 sTypoDescender 70
+ int16 sTypoLineGap 72
+ uint16 usWinAscent 74
+ uint16 usWinDescent 76
+
+ => length for OpenType version 0 = 78 bytes
+
+ // From Version 1 of OpenType
+ uint32 ulCodePageRange1 78
+ uint32 ulCodePageRange2 82
+
+ => length for OpenType version 1 = 86 bytes
+
+ // From Version 2 of OpenType
+ // (idem for Versions 3 and 4)
+ int16 sxHeight 86
+ int16 sCapHeight 88
+ uint16 usDefaultChar 90
+ uint16 usBreakChar 92
+ uint16 usMaxContext 94
+
+ => length for OpenType version 2, 3 and 4 = 96 bytes
+
+ // From Version 5 of OpenType
+ uint16 usLowerOpticalPointSize 96
+ uint16 usUpperOpticalPointSize 98
+ END 100
+
+ => length for OS/2 table version 5 = 100 bytes
+
+*/
+static const int OS2_Legacy_length = 68;
+static const int OS2_V0_length = 78;
+static const int OS2_V1_length = 86;
+
+static const int OS2_usWeightClass_offset = 4;
+static const int OS2_usWidthClass_offset = 6;
+static const int OS2_fsType_offset = 8;
+static const int OS2_panose_offset = 32;
+static const int OS2_panoseNbBytes_offset = 10;
+static const int OS2_ulUnicodeRange1_offset = 42;
+static const int OS2_ulUnicodeRange2_offset = 46;
+static const int OS2_ulUnicodeRange3_offset = 50;
+static const int OS2_ulUnicodeRange4_offset = 54;
+static const int OS2_fsSelection_offset = 62;
+static const int OS2_typoAscender_offset = 68;
+static const int OS2_typoDescender_offset = 70;
+static const int OS2_typoLineGap_offset = 72;
+static const int OS2_winAscent_offset = 74;
+static const int OS2_winDescent_offset = 76;
+static const int OS2_ulCodePageRange1_offset = 78;
+static const int OS2_ulCodePageRange2_offset = 82;
+
+/*
+ Some table hhea consts
+ cf https://docs.microsoft.com/fr-fr/typography/opentype/spec/hhea
+ TYPE NAME FROM BYTE
+ uint16 majorVersion 0
+ uint16 minorVersion 2
+ FWORD ascender 4
+ FWORD descender 6
+ FWORD lineGap 8
+ UFWORD advanceWidthMax 10
+ FWORD minLeftSideBearing 12
+ FWORD minRightSideBearing 14
+ FWORD xMaxExtent 16
+ int16 caretSlopeRise 18
+ int16 caretSlopeRun 20
+ int16 caretOffset 22
+ int16 (reserved) 24
+ int16 (reserved) 26
+ int16 (reserved) 28
+ int16 (reserved) 30
+ int16 metricDataFormat 32
+ uint16 numberOfHMetrics 34
+ END 36
+
+ => length for hhea table = 36 bytes
+
+*/
+static const int HHEA_Length = 36;
+
+static const int HHEA_ascender_offset = 4;
+static const int HHEA_descender_offset = 6;
+static const int HHEA_lineGap_offset = 8;
+static const int HHEA_caretSlopeRise_offset = 18;
+static const int HHEA_caretSlopeRun_offset = 20;
+
+/*
+ Some table post consts
+ cf https://docs.microsoft.com/fr-fr/typography/opentype/spec/post
+ TYPE NAME FROM BYTE
+ Fixed version 0
+ Fixed italicAngle 4
+ FWord underlinePosition 8
+ FWord underlineThickness 10
+ uint32 isFixedPitch 12
+ ...
+
+*/
+static const int POST_italicAngle_offset = 4;
+static const int POST_underlinePosition_offset = 8;
+static const int POST_underlineThickness_offset = 10;
+static const int POST_isFixedPitch_offset = 12;
+
+/*
+ Some table head consts
+ cf https://docs.microsoft.com/fr-fr/typography/opentype/spec/head
+ TYPE NAME FROM BYTE
+ uit16 majorVersion 0
+ uit16 minorVersion 2
+ Fixed fontRevision 4
+ uint32 checkSumAdjustment 8
+ uint32 magicNumber 12 (= 0x5F0F3CF5)
+ uint16 flags 16
+ uint16 unitsPerEm 18
+ LONGDATETIME created 20
+ LONGDATETIME modified 28
+ int16 xMin 36
+ int16 yMin 38
+ int16 xMax 40
+ int16 yMax 42
+ uint16 macStyle 44
+ uint16 lowestRecPPEM 46
+ int16 fontDirectionHint 48
+ int16 indexToLocFormat 50
+ int16 glyphDataFormat 52
+
+ END 54
+
+ => length head table = 54 bytes
+*/
+static const int HEAD_Length_offset = 54;
+
+static const int HEAD_majorVersion_offset = 0;
+static const int HEAD_fontRevision_offset = 4;
+static const int HEAD_magicNumber_offset = 12;
+static const int HEAD_flags_offset = 16;
+static const int HEAD_unitsPerEm_offset = 18;
+static const int HEAD_created_offset = 20;
+static const int HEAD_xMin_offset = 36;
+static const int HEAD_yMin_offset = 38;
+static const int HEAD_xMax_offset = 40;
+static const int HEAD_yMax_offset = 42;
+static const int HEAD_macStyle_offset = 44;
+static const int HEAD_lowestRecPPEM_offset = 46;
+static const int HEAD_fontDirectionHint_offset = 48;
+static const int HEAD_indexToLocFormat_offset = 50;
+static const int HEAD_glyphDataFormat_offset = 52;
+
+/*
+ Some table maxp consts
+ cf https://docs.microsoft.com/fr-fr/typography/opentype/spec/maxp
+ For 0.5 version
+ TYPE NAME FROM BYTE
+ Fixed version 0
+ uint16 numGlyphs 4
+
+ For 1.0 Version
+ Fixed version 0
+ uint16 numGlyphs 4
+ uint16 maxPoints 6
+ uint16 maxContours 8
+ uint16 maxCompositePoints 10
+ uint16 maxCompositeContours 12
+ ...
+
+*/
+static const int MAXP_Version1Length_offset = 32;
+
+static const int MAXP_numGlyphs_offset = 4;
+static const int MAXP_maxPoints_offset = 6;
+static const int MAXP_maxContours_offset = 8;
+static const int MAXP_maxCompositePoints_offset = 10;
+static const int MAXP_maxCompositeContours_offset = 12;
+
/**
* @defgroup sft Sun Font Tools Exported Functions
*/
diff --git a/vcl/source/fontsubset/sft.cxx b/vcl/source/fontsubset/sft.cxx
index 52b2e0360b50..9da262cf4a42 100644
--- a/vcl/source/fontsubset/sft.cxx
+++ b/vcl/source/fontsubset/sft.cxx
@@ -1639,11 +1639,11 @@ static SFErrCodes doOpenTTFont( sal_uInt32 facenum, TrueTypeFont* t )
table = getTable(t, O_head);
table_size = getTableSize(t, O_head);
- if (table_size < 52) {
+ if (table_size < HEAD_Length_offset) {
return SFErrCodes::TtFormat;
}
- t->unitsPerEm = GetUInt16(table, 18);
- int indexfmt = GetInt16(table, 50);
+ t->unitsPerEm = GetUInt16(table, HEAD_unitsPerEm_offset);
+ int indexfmt = GetInt16(table, HEAD_indexToLocFormat_offset);
if( ((indexfmt != 0) && (indexfmt != 1)) || (t->unitsPerEm <= 0) ) {
return SFErrCodes::TtFormat;
@@ -1937,7 +1937,7 @@ SFErrCodes CreateTTFromTTGlyphs(TrueTypeFont *ttf,
/** hhea **/
const sal_uInt8* p = getTable(ttf, O_hhea);
if (p) {
- hhea = TrueTypeTableNew_hhea(GetUInt16(p, 4), GetUInt16(p, 6), GetUInt16(p, 8), GetUInt16(p, 18), GetUInt16(p, 20));
+ hhea = TrueTypeTableNew_hhea(GetUInt16(p, HHEA_ascender_offset), GetUInt16(p, HHEA_descender_offset), GetUInt16(p, HHEA_lineGap_offset), GetUInt16(p, HHEA_caretSlopeRise_offset), GetUInt16(p, HHEA_caretSlopeRun_offset));
} else {
hhea = TrueTypeTableNew_hhea(0, 0, 0, 0, 0);
}
@@ -1946,13 +1946,13 @@ SFErrCodes CreateTTFromTTGlyphs(TrueTypeFont *ttf,
p = getTable(ttf, O_head);
assert(p != nullptr);
- head = TrueTypeTableNew_head(GetUInt32(p, 4),
- GetUInt16(p, 16),
- GetUInt16(p, 18),
- p+20,
- GetUInt16(p, 44),
- GetUInt16(p, 46),
- GetInt16(p, 48));
+ head = TrueTypeTableNew_head(GetUInt32(p, HEAD_fontRevision_offset),
+ GetUInt16(p, HEAD_flags_offset),
+ GetUInt16(p, HEAD_unitsPerEm_offset),
+ p+HEAD_created_offset,
+ GetUInt16(p, HEAD_macStyle_offset),
+ GetUInt16(p, HEAD_lowestRecPPEM_offset),
+ GetInt16(p, HEAD_fontDirectionHint_offset));
/** glyf **/
@@ -1988,10 +1988,10 @@ SFErrCodes CreateTTFromTTGlyphs(TrueTypeFont *ttf,
/** post **/
if ((p = getTable(ttf, O_post)) != nullptr) {
post = TrueTypeTableNew_post(0x00030000,
- GetUInt32(p, 4),
- GetUInt16(p, 8),
- GetUInt16(p, 10),
- GetUInt16(p, 12));
+ GetUInt32(p, POST_italicAngle_offset),
+ GetUInt16(p, POST_underlinePosition_offset),
+ GetUInt16(p, POST_underlineThickness_offset),
+ GetUInt16(p, POST_isFixedPitch_offset));
} else {
post = TrueTypeTableNew_post(0x00030000, 0, 0, 0, 0);
}
@@ -2364,24 +2364,21 @@ void GetTTFontMetrics(const uint8_t *pHhea, size_t nHhea,
/* There are 3 different versions of OS/2 table: original (68 bytes long),
* Microsoft old (78 bytes long) and Microsoft new (86 bytes long,)
* Apple's documentation recommends looking at the table length.
- *
- * FIXME: horribly outdated comment and horrible code that uses hard-coded
- * offsets to read the table.
*/
- if (nOs2 >= 76 + 2)
+ if (nOs2 >= OS2_V0_length)
{
- info->fsSelection = GetUInt16(pOs2, 62);
- info->typoAscender = GetInt16(pOs2, 68);
- info->typoDescender = GetInt16(pOs2, 70);
- info->typoLineGap = GetInt16(pOs2, 72);
- info->winAscent = GetUInt16(pOs2, 74);
- info->winDescent = GetUInt16(pOs2, 76);
+ info->fsSelection = GetUInt16(pOs2, OS2_fsSelection_offset);
+ info->typoAscender = GetInt16(pOs2, OS2_typoAscender_offset);
+ info->typoDescender = GetInt16(pOs2, OS2_typoDescender_offset);
+ info->typoLineGap = GetInt16(pOs2, OS2_typoLineGap_offset);
+ info->winAscent = GetUInt16(pOs2, OS2_winAscent_offset);
+ info->winDescent = GetUInt16(pOs2, OS2_winDescent_offset);
}
- if (nHhea >= 8 + 2) {
- info->ascender = GetInt16(pHhea, 4);
- info->descender = GetInt16(pHhea, 6);
- info->linegap = GetInt16(pHhea, 8);
+ if (nHhea >= HHEA_lineGap_offset + 2) {
+ info->ascender = GetInt16(pHhea, HHEA_ascender_offset);
+ info->descender = GetInt16(pHhea, HHEA_descender_offset);
+ info->linegap = GetInt16(pHhea, HHEA_lineGap_offset);
}
}
@@ -2401,50 +2398,46 @@ void GetTTGlobalFontInfo(TrueTypeFont *ttf, TTGlobalFontInfo *info)
const sal_uInt8* table = getTable(ttf, O_OS2);
sal_uInt32 table_size = getTableSize(ttf, O_OS2);
if (table && table_size >= 42) {
- info->weight = GetUInt16(table, 4);
- info->width = GetUInt16(table, 6);
-
- /* There are 3 different versions of OS/2 table: original (68 bytes long),
- * Microsoft old (78 bytes long) and Microsoft new (86 bytes long,)
- * Apple's documentation recommends looking at the table length.
- */
- if (table_size >= 78) {
- info->typoAscender = XUnits(UPEm,GetInt16(table, 68));
- info->typoDescender = XUnits(UPEm, GetInt16(table, 70));
- info->typoLineGap = XUnits(UPEm, GetInt16(table, 72));
- info->winAscent = XUnits(UPEm, GetUInt16(table, 74));
- info->winDescent = XUnits(UPEm, GetUInt16(table, 76));
+ info->weight = GetUInt16(table, OS2_usWeightClass_offset);
+ info->width = GetUInt16(table, OS2_usWidthClass_offset);
+
+ if (table_size >= OS2_V0_length) {
+ info->typoAscender = XUnits(UPEm,GetInt16(table, OS2_typoAscender_offset));
+ info->typoDescender = XUnits(UPEm, GetInt16(table, OS2_typoDescender_offset));
+ info->typoLineGap = XUnits(UPEm, GetInt16(table, OS2_typoLineGap_offset));
+ info->winAscent = XUnits(UPEm, GetUInt16(table, OS2_winAscent_offset));
+ info->winDescent = XUnits(UPEm, GetUInt16(table, OS2_winDescent_offset));
/* sanity check; some fonts treat winDescent as signed
* violating the standard */
if( info->winDescent > 5*UPEm )
- info->winDescent = XUnits(UPEm, GetInt16(table, 76));
+ info->winDescent = XUnits(UPEm, GetInt16(table, OS2_winDescent_offset));
}
- memcpy(info->panose, table + 32, 10);
- info->typeFlags = GetUInt16( table, 8 );
+ memcpy(info->panose, table + OS2_panose_offset, OS2_panoseNbBytes_offset);
+ info->typeFlags = GetUInt16( table, OS2_fsType_offset );
}
table = getTable(ttf, O_post);
if (table && getTableSize(ttf, O_post) >= 12+sizeof(sal_uInt32)) {
- info->pitch = GetUInt32(table, 12);
- info->italicAngle = GetInt32(table, 4);
+ info->pitch = GetUInt32(table, POST_isFixedPitch_offset);
+ info->italicAngle = GetInt32(table, POST_italicAngle_offset);
}
table = getTable(ttf, O_head); /* 'head' tables is always there */
table_size = getTableSize(ttf, O_head);
if (table_size >= 46) {
- info->xMin = XUnits(UPEm, GetInt16(table, 36));
- info->yMin = XUnits(UPEm, GetInt16(table, 38));
- info->xMax = XUnits(UPEm, GetInt16(table, 40));
- info->yMax = XUnits(UPEm, GetInt16(table, 42));
- info->macStyle = GetInt16(table, 44);
+ info->xMin = XUnits(UPEm, GetInt16(table, HEAD_xMin_offset));
+ info->yMin = XUnits(UPEm, GetInt16(table, HEAD_yMin_offset));
+ info->xMax = XUnits(UPEm, GetInt16(table, HEAD_xMax_offset));
+ info->yMax = XUnits(UPEm, GetInt16(table, HEAD_yMax_offset));
+ info->macStyle = GetInt16(table, HEAD_macStyle_offset);
}
table = getTable(ttf, O_hhea);
table_size = getTableSize(ttf, O_hhea);
if (table && table_size >= 10) {
- info->ascender = XUnits(UPEm, GetInt16(table, 4));
- info->descender = XUnits(UPEm, GetInt16(table, 6));
- info->linegap = XUnits(UPEm, GetInt16(table, 8));
+ info->ascender = XUnits(UPEm, GetInt16(table, HHEA_ascender_offset));
+ info->descender = XUnits(UPEm, GetInt16(table, HHEA_descender_offset));
+ info->linegap = XUnits(UPEm, GetInt16(table, HHEA_lineGap_offset));
}
table = getTable(ttf, O_vhea);
@@ -2623,19 +2616,19 @@ bool getTTCoverage(
{
bool bRet = false;
// parse OS/2 header
- if (nLength >= 58)
+ if (nLength >= OS2_Legacy_length)
{
rUnicodeRange = std::bitset<UnicodeCoverage::MAX_UC_ENUM>();
- append(rUnicodeRange.get(), 0, GetUInt32(pTable, 42));
- append(rUnicodeRange.get(), 32, GetUInt32(pTable, 46));
- append(rUnicodeRange.get(), 64, GetUInt32(pTable, 50));
- append(rUnicodeRange.get(), 96, GetUInt32(pTable, 54));
+ append(rUnicodeRange.get(), 0, GetUInt32(pTable, OS2_ulUnicodeRange1_offset));
+ append(rUnicodeRange.get(), 32, GetUInt32(pTable, OS2_ulUnicodeRange2_offset));
+ append(rUnicodeRange.get(), 64, GetUInt32(pTable, OS2_ulUnicodeRange3_offset));
+ append(rUnicodeRange.get(), 96, GetUInt32(pTable, OS2_ulUnicodeRange4_offset));
bRet = true;
- if (nLength >= 86)
+ if (nLength >= OS2_V1_length)
{
rCodePageRange = std::bitset<CodePageCoverage::MAX_CP_ENUM>();
- append(rCodePageRange.get(), 0, GetUInt32(pTable, 78));
- append(rCodePageRange.get(), 32, GetUInt32(pTable, 82));
+ append(rCodePageRange.get(), 0, GetUInt32(pTable, OS2_ulCodePageRange1_offset));
+ append(rCodePageRange.get(), 32, GetUInt32(pTable, OS2_ulCodePageRange2_offset));
}
}
return bRet;
diff --git a/vcl/source/fontsubset/ttcr.cxx b/vcl/source/fontsubset/ttcr.cxx
index b4074203d316..a52f8fda08b0 100644
--- a/vcl/source/fontsubset/ttcr.cxx
+++ b/vcl/source/fontsubset/ttcr.cxx
@@ -300,17 +300,13 @@ SFErrCodes StreamToFile(TrueTypeCreator *_this, const char* fname)
* TrueTypeTable private methods
*/
-#define TABLESIZE_head 54
-#define TABLESIZE_hhea 36
-#define TABLESIZE_maxp 32
-
/* Table data points to
* --------------------------------------------
* generic tdata_generic struct
- * 'head' TABLESIZE_head bytes of memory
- * 'hhea' TABLESIZE_hhea bytes of memory
+ * 'head' HEAD_Length_offset bytes of memory
+ * 'hhea' HHEA_Length bytes of memory
* 'loca' tdata_loca struct
- * 'maxp' TABLESIZE_maxp bytes of memory
+ * 'maxp' MAXP_Version1Length_offset bytes of memory
* 'glyf' list of GlyphData structs (defined in sft.h)
* 'name' list of NameRecord structs (defined in sft.h)
* 'post' tdata_post struct
@@ -507,7 +503,7 @@ static int GetRawData_generic(TrueTypeTable *_this, sal_uInt8 **ptr, sal_uInt32
static int GetRawData_head(TrueTypeTable *_this, sal_uInt8 **ptr, sal_uInt32 *len, sal_uInt32 *tag)
{
- *len = TABLESIZE_head;
+ *len = HEAD_Length_offset;
*ptr = static_cast<sal_uInt8 *>(_this->data);
*tag = T_head;
@@ -516,7 +512,7 @@ static int GetRawData_head(TrueTypeTable *_this, sal_uInt8 **ptr, sal_uInt32 *le
static int GetRawData_hhea(TrueTypeTable *_this, sal_uInt8 **ptr, sal_uInt32 *len, sal_uInt32 *tag)
{
- *len = TABLESIZE_hhea;
+ *len = HHEA_Length;
*ptr = static_cast<sal_uInt8 *>(_this->data);
*tag = T_hhea;
@@ -542,7 +538,7 @@ static int GetRawData_loca(TrueTypeTable *_this, sal_uInt8 **ptr, sal_uInt32 *le
static int GetRawData_maxp(TrueTypeTable *_this, sal_uInt8 **ptr, sal_uInt32 *len, sal_uInt32 *tag)
{
- *len = TABLESIZE_maxp;
+ *len = MAXP_Version1Length_offset;
*ptr = static_cast<sal_uInt8 *>(_this->data);
*tag = T_maxp;
@@ -862,7 +858,7 @@ TrueTypeTable *TrueTypeTableNew_head(sal_uInt32 fontRevision,
assert(created != nullptr);
TrueTypeTable* table = static_cast<TrueTypeTable*>(smalloc(sizeof(TrueTypeTable)));
- sal_uInt8* ptr = ttmalloc(TABLESIZE_head);
+ sal_uInt8* ptr = ttmalloc(HEAD_Length_offset);
PutUInt32(0x00010000, ptr, 0); /* version */
PutUInt32(fontRevision, ptr, 4);
@@ -890,7 +886,7 @@ TrueTypeTable *TrueTypeTableNew_hhea(sal_Int16 ascender,
sal_Int16 caretSlopeRun)
{
TrueTypeTable* table = static_cast<TrueTypeTable*>(smalloc(sizeof(TrueTypeTable)));
- sal_uInt8* ptr = ttmalloc(TABLESIZE_hhea);
+ sal_uInt8* ptr = ttmalloc(HHEA_Length);
PutUInt32(0x00010000, ptr, 0); /* version */
PutUInt16(ascender, ptr, 4);
@@ -929,10 +925,10 @@ TrueTypeTable *TrueTypeTableNew_loca()
TrueTypeTable *TrueTypeTableNew_maxp( const sal_uInt8* maxp, int size)
{
TrueTypeTable* table = static_cast<TrueTypeTable*>(smalloc(sizeof(TrueTypeTable)));
- table->data = ttmalloc(TABLESIZE_maxp);
+ table->data = ttmalloc(MAXP_Version1Length_offset);
- if (maxp && size == TABLESIZE_maxp) {
- memcpy(table->data, maxp, TABLESIZE_maxp);
+ if (maxp && size == MAXP_Version1Length_offset) {
+ memcpy(table->data, maxp, MAXP_Version1Length_offset);
}
table->tag = T_maxp;
@@ -1374,20 +1370,20 @@ static void ProcessTables(TrueTypeCreator *tt)
head = FindTable(tt, T_head);
sal_uInt8* const pHeadData = static_cast<sal_uInt8*>(head->data);
- PutInt16(xMin, pHeadData, 36);
- PutInt16(yMin, pHeadData, 38);
- PutInt16(xMax, pHeadData, 40);
- PutInt16(yMax, pHeadData, 42);
- PutInt16(indexToLocFormat, pHeadData, 50);
+ PutInt16(xMin, pHeadData, HEAD_xMin_offset);
+ PutInt16(yMin, pHeadData, HEAD_yMin_offset);
+ PutInt16(xMax, pHeadData, HEAD_xMax_offset);
+ PutInt16(yMax, pHeadData, HEAD_yMax_offset);
+ PutInt16(indexToLocFormat, pHeadData, HEAD_indexToLocFormat_offset);
maxp = FindTable(tt, T_maxp);
sal_uInt8* const pMaxpData = static_cast<sal_uInt8*>(maxp->data);
- PutUInt16(static_cast<sal_uInt16>(nGlyphs), pMaxpData, 4);
- PutUInt16(maxPoints, pMaxpData, 6);
- PutUInt16(maxContours, pMaxpData, 8);
- PutUInt16(maxCompositePoints, pMaxpData, 10);
- PutUInt16(maxCompositeContours, pMaxpData, 12);
+ PutUInt16(static_cast<sal_uInt16>(nGlyphs), pMaxpData, MAXP_numGlyphs_offset);
+ PutUInt16(maxPoints, pMaxpData, MAXP_maxPoints_offset);
+ PutUInt16(maxContours, pMaxpData, MAXP_maxContours_offset);
+ PutUInt16(maxCompositePoints, pMaxpData, MAXP_maxCompositePoints_offset);
+ PutUInt16(maxCompositeContours, pMaxpData, MAXP_maxCompositeContours_offset);
/*
* Generate an htmx table and update hhea table
More information about the Libreoffice-commits
mailing list