diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2015-08-05 13:20:11 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2015-08-05 13:20:11 +0000 |
commit | 6dbc95dc8a019cc2b56aafe2901d7136f35ea408 (patch) | |
tree | a777ad7b2f5c0b9602b2f14d31d2b59657bdf6ac /Build/source/texk/dvipdfm-x/dvi.c | |
parent | a80f9f3d6b0a845c322d040fd3adb13b2ff41db7 (diff) |
dvipdfm-x: Introduce a new static function static int is_notdef_notzero() to fix the support of native type1 fonts. The t1disasm is required. The fix is intended as an intermediate one until more fine fix is given.
git-svn-id: svn://tug.org/texlive/trunk@38047 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/dvi.c')
-rw-r--r-- | Build/source/texk/dvipdfm-x/dvi.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Build/source/texk/dvipdfm-x/dvi.c b/Build/source/texk/dvipdfm-x/dvi.c index 27ddf4fc78c..a7e8e532769 100644 --- a/Build/source/texk/dvipdfm-x/dvi.c +++ b/Build/source/texk/dvipdfm-x/dvi.c @@ -944,6 +944,34 @@ dvi_locate_font (const char *tfm_name, spt_t ptsize) } static int +is_notdef_notzero (char *path) +{ + FILE *f; + char buf[2014]; + char cmd[512]; + char *p; + int ret = 0; + + strcpy (cmd, "t1disasm "); + strcat (cmd, path); + f = popen (cmd, "r"); + if (f) { + while ((fgets (buf, 2000, f))) { + p = strstr (buf, "CharStrings"); + if (p) { + fgets (buf, 2000, f); + if (strncmp (buf, "/.notdef", 8) != 0) + ret = 1; + break; + } + } + fclose(f); + } + + return ret; +} + +static int dvi_locate_native_font (const char *filename, uint32_t index, spt_t ptsize, int layout_dir, int extend, int slant, int embolden) { @@ -1023,6 +1051,9 @@ dvi_locate_native_font (const char *filename, uint32_t index, loaded_fonts[cur_id].numGlyphs = cffont->num_glyphs; DPXFCLOSE(fp); + if (loaded_fonts[cur_id].cff_is_standard_encoding) { + loaded_fonts[cur_id].cff_is_standard_encoding = is_notdef_notzero (path); + } } else { if (is_dfont) sfont = dfont_open(fp, index); |