summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/dvi.c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2015-05-06 07:50:57 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2015-05-06 07:50:57 +0000
commitfe9183d6d9d921b1e789d158b133e20306e704d9 (patch)
tree16f4c5de67b66e9a2da38066e4584f96155629cc /Build/source/texk/dvipdfm-x/dvi.c
parent6dd2303447d3bd3352475b75e5d6b1bcce5e3795 (diff)
texk/dvipdfm-x: Do not identify Type1 fonts as TrueType or OpenType
git-svn-id: svn://tug.org/texlive/trunk@37226 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/dvi.c')
-rw-r--r--Build/source/texk/dvipdfm-x/dvi.c68
1 files changed, 36 insertions, 32 deletions
diff --git a/Build/source/texk/dvipdfm-x/dvi.c b/Build/source/texk/dvipdfm-x/dvi.c
index 6c028b2815f..464a58a234d 100644
--- a/Build/source/texk/dvipdfm-x/dvi.c
+++ b/Build/source/texk/dvipdfm-x/dvi.c
@@ -929,7 +929,7 @@ dvi_locate_native_font (const char *filename, uint32_t index,
struct tt_head_table *head;
struct tt_maxp_table *maxp;
struct tt_hhea_table *hhea;
- int is_dfont = 0;
+ int is_dfont = 0, is_type1 = 0;
if (verbose)
MESG("<%s@%.2fpt", filename, ptsize * dvi2pts);
@@ -937,9 +937,10 @@ dvi_locate_native_font (const char *filename, uint32_t index,
if ((path = dpx_find_dfont_file(filename)) != NULL &&
(fp = fopen(path, "rb")) != NULL)
is_dfont = 1;
+ else if ((path = dpx_find_type1_file(filename)) != NULL)
+ is_type1 = 1;
else if (((path = dpx_find_opentype_file(filename)) == NULL
- && (path = dpx_find_truetype_file(filename)) == NULL
- && (path = dpx_find_type1_file(filename)) == NULL)
+ && (path = dpx_find_truetype_file(filename)) == NULL)
|| (fp = fopen(path, "rb")) == NULL) {
ERROR("Cannot proceed without the font: %s", filename);
}
@@ -963,37 +964,40 @@ dvi_locate_native_font (const char *filename, uint32_t index,
loaded_fonts[cur_id].type = NATIVE;
free(fontmap_key);
- if (is_dfont)
- sfont = dfont_open(fp, index);
- else
- sfont = sfnt_open(fp);
- if (sfont->type == SFNT_TYPE_TTC)
- offset = ttc_read_offset(sfont, index);
- else if (sfont->type == SFNT_TYPE_DFONT)
- offset = sfont->offset;
- sfnt_read_table_directory(sfont, offset);
- head = tt_read_head_table(sfont);
- maxp = tt_read_maxp_table(sfont);
- hhea = tt_read_hhea_table(sfont);
- loaded_fonts[cur_id].ascent = hhea->ascent;
- loaded_fonts[cur_id].descent = hhea->descent;
- loaded_fonts[cur_id].unitsPerEm = head->unitsPerEm;
- loaded_fonts[cur_id].numGlyphs = maxp->numGlyphs;
- if (layout_dir == 1 && sfnt_find_table_pos(sfont, "vmtx") > 0) {
- struct tt_vhea_table *vhea = tt_read_vhea_table(sfont);
- sfnt_locate_table(sfont, "vmtx");
- loaded_fonts[cur_id].hvmt = tt_read_longMetrics(sfont, maxp->numGlyphs, vhea->numOfLongVerMetrics, vhea->numOfExSideBearings);
- RELEASE(vhea);
- } else {
- sfnt_locate_table(sfont, "hmtx");
- loaded_fonts[cur_id].hvmt = tt_read_longMetrics(sfont, maxp->numGlyphs, hhea->numOfLongHorMetrics, hhea->numOfExSideBearings);
+ if (is_type1 == 0) {
+ if (is_dfont)
+ sfont = dfont_open(fp, index);
+ else
+ sfont = sfnt_open(fp);
+ if (sfont->type == SFNT_TYPE_TTC)
+ offset = ttc_read_offset(sfont, index);
+ else if (sfont->type == SFNT_TYPE_DFONT)
+ offset = sfont->offset;
+ sfnt_read_table_directory(sfont, offset);
+ head = tt_read_head_table(sfont);
+ maxp = tt_read_maxp_table(sfont);
+ hhea = tt_read_hhea_table(sfont);
+ loaded_fonts[cur_id].ascent = hhea->ascent;
+ loaded_fonts[cur_id].descent = hhea->descent;
+ loaded_fonts[cur_id].unitsPerEm = head->unitsPerEm;
+ loaded_fonts[cur_id].numGlyphs = maxp->numGlyphs;
+ if (layout_dir == 1 && sfnt_find_table_pos(sfont, "vmtx") > 0) {
+ struct tt_vhea_table *vhea = tt_read_vhea_table(sfont);
+ sfnt_locate_table(sfont, "vmtx");
+ loaded_fonts[cur_id].hvmt = tt_read_longMetrics(sfont, maxp->numGlyphs, vhea->numOfLongVerMetrics, vhea->numOfExSideBearings);
+ RELEASE(vhea);
+ } else {
+ sfnt_locate_table(sfont, "hmtx");
+ loaded_fonts[cur_id].hvmt = tt_read_longMetrics(sfont, maxp->numGlyphs, hhea->numOfLongHorMetrics, hhea->numOfExSideBearings);
+ }
+ RELEASE(hhea);
+ RELEASE(maxp);
+ RELEASE(head);
+ sfnt_close(sfont);
+ fclose(fp);
}
- RELEASE(hhea);
- RELEASE(maxp);
- RELEASE(head);
- sfnt_close(sfont);
+
free(path);
- fclose(fp);
loaded_fonts[cur_id].layout_dir = layout_dir;
loaded_fonts[cur_id].extend = mrec->opt.extend;