summaryrefslogtreecommitdiff
path: root/Build/source/texk/ttfdump/src
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2011-12-01 13:24:38 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2011-12-01 13:24:38 +0000
commit3131715fb5bce44da6c7584315237731aa752eba (patch)
treeb4e748ed3b19d603c4ac1b29f33340c196003e0e /Build/source/texk/ttfdump/src
parent9417d53067c450b541cecd8c3ae224e5d17b8e54 (diff)
ttfdump: Added functionality
- do not segfault for fonts without loca table - allow cmap subtables with format 8, 10, 12, and 13 - handle GPOS and GSUB tables - additional tests git-svn-id: svn://tug.org/texlive/trunk@24713 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/ttfdump/src')
-rw-r--r--Build/source/texk/ttfdump/src/ttfdump.c41
1 files changed, 39 insertions, 2 deletions
diff --git a/Build/source/texk/ttfdump/src/ttfdump.c b/Build/source/texk/ttfdump/src/ttfdump.c
index d603483dc28..0726b3b0e5f 100644
--- a/Build/source/texk/ttfdump/src/ttfdump.c
+++ b/Build/source/texk/ttfdump/src/ttfdump.c
@@ -52,6 +52,9 @@ static void print_vdmx(FILE *out);
static void print_vhea(FILE *out);
static void print_vmtx(FILE *out);
+static void print_gpos(FILE *out);
+static void print_gsub(FILE *out);
+
static void usage (void);
@@ -157,6 +160,9 @@ main(int argc, char *argv[])
print_offset(dp_file);
print_dir(dp_file);
+ if (font->loca == NULL)
+ glyphnum = NO_GLYF;
+
if (tablename == NULL)
{
/* no table specified */
@@ -236,6 +242,10 @@ print_table(FILE *out, char *tablename)
print_vhea(out);
if (!strcmp(tablename, "vmtx"))
print_vmtx(out);
+ if (!strcmp(tablename, "GPOS"))
+ print_gpos(out);
+ if (!strcmp(tablename, "GSUB"))
+ print_gsub(out);
}
@@ -262,6 +272,10 @@ print_all_tables(FILE *dp_file)
print_vdmx(dp_file);
print_vhea(dp_file);
print_vmtx(dp_file);
+
+ /* Additional OpenType Tables */
+ print_gpos(dp_file);
+ print_gsub(dp_file);
}
@@ -270,7 +284,6 @@ print_ttc(TTCHeaderPtr ttc, FILE *out)
{
int i, b[2];
-
FixedSplit(ttc->version, b);
fprintf(out, "TrueType Collection Header\n");
@@ -295,9 +308,17 @@ print_prologue(FILE *out)
static void
print_offset(FILE *out)
{
+ int b[2];
+
+ FixedSplit(font->version, b);
+
fprintf(out, "Offset Table\n");
fprintf(out, "------------\n");
- fprintf(out, "\t sfnt version:\n");
+ fprintf(out, "\t sfnt version: ");
+ if (b[1] & 0xff00)
+ fprintf(out, "'%s'\n", TagToStr (font->version));
+ else
+ fprintf(out, "\t\t %d.%d\n", b[1], b[0]);
fprintf(out, "\t number of tables: %d\n", font->numTables);
}
@@ -505,6 +526,22 @@ print_vmtx(FILE *out)
static void
+print_gpos(FILE *out)
+{
+ if (font->gpos != NULL)
+ ttfPrintGPOS(out, font->gpos);
+}
+
+
+static void
+print_gsub(FILE *out)
+{
+ if (font->gsub != NULL)
+ ttfPrintGSUB(out, font->gsub);
+}
+
+
+static void
usage(void)
{
fprintf(stderr, "Usage: ttfdump ttfname dumpname [options]\n");