diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2020-08-07 21:28:08 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2020-08-07 21:28:08 +0000 |
commit | 275f43d792961c3e02cbf06b46eb3f99d105ec6f (patch) | |
tree | f31f639d2a79199a7c956aff0f2b267dae9d20ea /Build/source/texk/dvipdfm-x/tt_cmap.c | |
parent | 151be1c527f048ec037f1ccd83e08857bb9726cd (diff) |
Use uint32_t for TTC index. (S. Hirata)
git-svn-id: svn://tug.org/texlive/trunk@56064 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/tt_cmap.c')
-rw-r--r-- | Build/source/texk/dvipdfm-x/tt_cmap.c | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/Build/source/texk/dvipdfm-x/tt_cmap.c b/Build/source/texk/dvipdfm-x/tt_cmap.c index 113d11699a5..17c1e9924dd 100644 --- a/Build/source/texk/dvipdfm-x/tt_cmap.c +++ b/Build/source/texk/dvipdfm-x/tt_cmap.c @@ -1066,7 +1066,7 @@ static cmap_plat_enc_rec cmap_plat_encs[] = { pdf_obj * otf_create_ToUnicode_stream (const char *font_name, - int ttc_index, /* 0 for non-TTC */ + uint32_t ttc_index, /* 0 for non-TTC */ const char *basefont, const char *used_chars) { @@ -1147,10 +1147,13 @@ otf_create_ToUnicode_stream (const char *font_name, * case. */ { - char *cmap_add_name; + char *cmap_add_name; + size_t len; - cmap_add_name = NEW(strlen(font_name)+strlen(",000-UCS32-Add")+1, char); - sprintf(cmap_add_name, "%s,%03d-UCS32-Add", font_name, ttc_index); + len = strlen(font_name)+strlen("-UCS32-Add")+32; + cmap_add_name = NEW(len, char); + snprintf(cmap_add_name, len, "%s:%d-UCS32-Add", font_name, ttc_index); + cmap_add_name[len-1] = '\0'; cmap_add_id = CMap_cache_find(cmap_add_name); RELEASE(cmap_add_name); if (cmap_add_id < 0) { @@ -1295,7 +1298,7 @@ load_cmap12 (struct cmap12 *map, uint16_t *GIDToCIDMap, USHORT num_glyphs, } int -otf_load_Unicode_CMap (const char *map_name, int ttc_index, /* 0 for non-TTC font */ +otf_load_Unicode_CMap (const char *map_name, uint32_t ttc_index, /* 0 for non-TTC font */ const char *otl_tags, int wmode) { int cmap_id = -1; @@ -1311,24 +1314,26 @@ otf_load_Unicode_CMap (const char *map_name, int ttc_index, /* 0 for non-TTC fon if (!map_name) return -1; - if (ttc_index > 999 || ttc_index < 0) { - return -1; /* Sorry for this... */ - } - /* First look for cache if it was already loaded */ - cmap_name = NEW(strlen(map_name)+strlen("-UCS4-H")+5, char); if (otl_tags) { - cmap_name = NEW(strlen(map_name)+strlen(otl_tags)+strlen("-UCS4-H")+6, char); + size_t len; + len = strlen(map_name)+strlen("-UCS4-H")+strlen(otl_tags)+32; + cmap_name = NEW(len, char); if (wmode) - sprintf(cmap_name, "%s,%03d,%s-UCS4-V", map_name, ttc_index, otl_tags); + snprintf(cmap_name, len, "%s:%d:%s-UCS4-V", map_name, ttc_index, otl_tags); else - sprintf(cmap_name, "%s,%03d,%s-UCS4-H", map_name, ttc_index, otl_tags); + snprintf(cmap_name, len, "%s:%d:%s-UCS4-H", map_name, ttc_index, otl_tags); + cmap_name[len-1] = '\0'; } else { + size_t len; + len = strlen(map_name)+strlen("-UCS4-H")+32; + cmap_name = NEW(len, char); if (wmode) - sprintf(cmap_name, "%s,%03d-UCS4-V", map_name, ttc_index); + snprintf(cmap_name, len, "%s:%d-UCS4-V", map_name, ttc_index); else { - sprintf(cmap_name, "%s,%03d-UCS4-H", map_name, ttc_index); + snprintf(cmap_name, len, "%s:%d-UCS4-H", map_name, ttc_index); } + cmap_name[len-1] = '\0'; } cmap_id = CMap_cache_find(cmap_name); if (cmap_id >= 0) { @@ -1542,12 +1547,15 @@ otf_load_Unicode_CMap (const char *map_name, int ttc_index, /* 0 for non-TTC fon tt_cmap_release(ttcmap); if (otl_tags) { - CMap *tounicode = NULL; - char *tounicode_name; - int tounicode_id; - - tounicode_name = NEW(strlen(map_name)+strlen(",000-UCS32-Add")+1, char); - sprintf(tounicode_name, "%s,%03d-UCS32-Add", map_name, ttc_index); + CMap *tounicode = NULL; + char *tounicode_name; + int tounicode_id; + size_t name_len; + + name_len = strlen(map_name)+strlen("-UCS32-Add")+32; + tounicode_name = NEW(name_len, char); + snprintf(tounicode_name, name_len, "%s:%d-UCS32-Add", map_name, ttc_index); + tounicode_name[name_len-1] = '\0'; tounicode_id = CMap_cache_find(tounicode_name); if (tounicode_id >= 0) tounicode = CMap_cache_get(tounicode_id); @@ -1598,7 +1606,7 @@ otf_load_Unicode_CMap (const char *map_name, int ttc_index, /* 0 for non-TTC fon } int -otf_try_load_GID_to_CID_map (const char *map_name, int ttc_index, int wmode) +otf_try_load_GID_to_CID_map (const char *map_name, uint32_t ttc_index, int wmode) { int cmap_id = -1; sfnt *sfont = NULL; @@ -1610,10 +1618,6 @@ otf_try_load_GID_to_CID_map (const char *map_name, int ttc_index, int wmode) if (!map_name) return -1; - if (ttc_index > 0xFFFFFFFFu || ttc_index < 0) { - return -1; - } - /* Check if already loaded */ len = strlen(map_name) + 32; cmap_name = NEW(len, char); |