From ee476e9cf0ee1dec3161ef3bed87be12ca9786f1 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 7 Oct 2016 10:24:50 +0200 Subject: GRAPHICS: Parse slant from BDF fonts --- devtools/convbdf.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'devtools/convbdf.cpp') diff --git a/devtools/convbdf.cpp b/devtools/convbdf.cpp index a3196a9a94..5fbcd98b25 100644 --- a/devtools/convbdf.cpp +++ b/devtools/convbdf.cpp @@ -39,6 +39,7 @@ struct BdfBoundingBox { struct BdfFont { char *familyName; + char *slant; int maxAdvance; int size; int height; @@ -53,7 +54,7 @@ struct BdfFont { unsigned char *advances; BdfBoundingBox *boxes; - BdfFont() : bitmaps(0), advances(0), boxes(0) { + BdfFont() : bitmaps(0), advances(0), boxes(0), familyName(0), slant(0) { } ~BdfFont() { @@ -65,6 +66,7 @@ struct BdfFont { delete[] advances; delete[] boxes; delete[] familyName; + delete[] slant; } }; @@ -173,6 +175,15 @@ int main(int argc, char *argv[]) { if (p == font.familyName) error("Invalid FAMILY_NAME"); *p = '\0'; // Remove last quote + } else if (hasPrefix(line, "SLANT \"")) { + font.familyName = new char[line.size()]; // We will definitely fit here + strncpy(font.familyName, &line.c_str()[7], line.size() - 1); + char *p = &font.slant[strlen(font.slant)]; + while (p != font.slant && *p != '"') + p--; + if (p == font.slant) + error("Invalid SLANT"); + *p = '\0'; // Remove last quote } else if (hasPrefix(line, "FONT_ASCENT ")) { if (sscanf(line.c_str(), "FONT_ASCENT %d", &font.ascent) != 1) error("Invalid FONT_ASCENT"); @@ -496,6 +507,7 @@ int main(int argc, char *argv[]) { printf("// Font structure\n" "static const BdfFontData desc = {\n" "\t\"%s\", // Family name\n" + "\t\"%s\", // Slant\n" "\t%d, // Max advance\n" "\t%d, // Size\n" "\t%d, // Height\n" @@ -507,7 +519,7 @@ int main(int argc, char *argv[]) { "\t%d, // Characters\n" "\n" "\tbitmapTable, // Bitmaps\n", - font.familyName, font.maxAdvance, font.size, font.height, font.defaultBox.width, + font.familyName, font.slant, font.maxAdvance, font.size, font.height, font.defaultBox.width, font.defaultBox.height, font.defaultBox.xOffset, font.defaultBox.yOffset, font.ascent, font.firstCharacter, font.defaultCharacter, font.numCharacters); -- cgit v1.2.3