summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2015-04-21 07:06:03 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2015-04-21 07:06:03 +0000
commit7a68d8bfb3588cb1a71c122bf09fcee3f45100c1 (patch)
tree1c1feb524da3c8b07aba1267042c3aab2accc9ee /Build
parent9437d3e2b74ac72dc69e74b64ee49b0c18f2ff81 (diff)
texk/dvipdfm-x: Fixed a dfont bug, from Akira
git-svn-id: svn://tug.org/texlive/trunk@36978 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/texk/dvipdfm-x/ChangeLog5
-rw-r--r--Build/source/texk/dvipdfm-x/dvi.c16
-rw-r--r--Build/source/texk/dvipdfm-x/tt_cmap.c16
3 files changed, 25 insertions, 12 deletions
diff --git a/Build/source/texk/dvipdfm-x/ChangeLog b/Build/source/texk/dvipdfm-x/ChangeLog
index bb72892d19f..22603862204 100644
--- a/Build/source/texk/dvipdfm-x/ChangeLog
+++ b/Build/source/texk/dvipdfm-x/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-21 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * dvi.c, tt_cmap.c: Fixed a dfont bug, from Akira,
+ bug found by Dohyun Kim <nomosnomos@gmail.com>.
+
2015-04-19 Shunsaku Hirata <shunsaku.hirata74@gmail.com>
* pngimage.c: Ask libpng to do gamma correction with assumed
diff --git a/Build/source/texk/dvipdfm-x/dvi.c b/Build/source/texk/dvipdfm-x/dvi.c
index 21196544235..6c028b2815f 100644
--- a/Build/source/texk/dvipdfm-x/dvi.c
+++ b/Build/source/texk/dvipdfm-x/dvi.c
@@ -929,16 +929,17 @@ 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;
if (verbose)
MESG("<%s@%.2fpt", filename, ptsize * dvi2pts);
- if ((fp = fopen(filename, "rb")) != NULL)
- path = strdup(filename);
+ if ((path = dpx_find_dfont_file(filename)) != NULL &&
+ (fp = fopen(path, "rb")) != NULL)
+ is_dfont = 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_dfont_file(filename)) == NULL)
+ && (path = dpx_find_type1_file(filename)) == NULL)
|| (fp = fopen(path, "rb")) == NULL) {
ERROR("Cannot proceed without the font: %s", filename);
}
@@ -962,9 +963,14 @@ dvi_locate_native_font (const char *filename, uint32_t index,
loaded_fonts[cur_id].type = NATIVE;
free(fontmap_key);
- sfont = sfnt_open(fp);
+ 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);
diff --git a/Build/source/texk/dvipdfm-x/tt_cmap.c b/Build/source/texk/dvipdfm-x/tt_cmap.c
index e2602319c14..8a8d9ec52d9 100644
--- a/Build/source/texk/dvipdfm-x/tt_cmap.c
+++ b/Build/source/texk/dvipdfm-x/tt_cmap.c
@@ -1208,23 +1208,25 @@ otf_create_ToUnicode_stream (const char *font_name,
MESG("otf_cmap>> Creating ToUnicode CMap for \"%s\"...\n", font_name);
}
- fp = DPXFOPEN(font_name, DPX_RES_TYPE_TTFONT);
- if (!fp) {
- fp = DPXFOPEN(font_name, DPX_RES_TYPE_OTFONT);
- }
- if (!fp) {
+ if ((fp = DPXFOPEN(font_name, DPX_RES_TYPE_TTFONT)) ||
+ (fp = DPXFOPEN(font_name, DPX_RES_TYPE_OTFONT))) {
+ sfont = sfnt_open(fp);
+ } else if ((fp = DPXFOPEN(font_name, DPX_RES_TYPE_DFONT))) {
+ sfont = dfont_open(fp, ttc_index);
+ } else {
RELEASE(cmap_name);
return NULL;
}
- sfont = sfnt_open(fp);
-
if (!sfont) {
ERROR("Could not open OpenType/TrueType font file \"%s\"", font_name);
}
switch (sfont->type) {
+ case SFNT_TYPE_DFONT:
+ offset = sfont->offset;
+ break;
case SFNT_TYPE_TTC:
offset = ttc_read_offset(sfont, ttc_index);
if (offset == 0) {