summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfmx/dvipdfmx-20110311/src/tfm.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfmx/dvipdfmx-20110311/src/tfm.c')
-rw-r--r--Build/source/texk/dvipdfmx/dvipdfmx-20110311/src/tfm.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/Build/source/texk/dvipdfmx/dvipdfmx-20110311/src/tfm.c b/Build/source/texk/dvipdfmx/dvipdfmx-20110311/src/tfm.c
index 16043c44d57..92135b0bf18 100644
--- a/Build/source/texk/dvipdfmx/dvipdfmx-20110311/src/tfm.c
+++ b/Build/source/texk/dvipdfmx/dvipdfmx-20110311/src/tfm.c
@@ -55,6 +55,14 @@ static int verbose = 0;
#define IS_JFM(i) ((i) == JFM_ID || (i) == JFMV_ID)
#endif /* !WITHOUT_ASCII_PTEX */
+#if defined(upTeX)
+#if !defined(WITHOUT_ASCII_PTEX)
+#define INDEX(i) ((i>0xFFFFul ? 0x10000ul : i))
+#else
+#define INDEX(i) ((i))
+#endif
+#endif
+
/*
* TFM Record structure:
* Multiple TFM's may be read in at once.
@@ -162,7 +170,11 @@ tfm_font_clear (struct tfm_font *tfm)
struct coverage
{
long first_char;
+#if defined(upTeX)
+ long num_chars;
+#else
unsigned short num_chars;
+#endif
};
/*
@@ -208,7 +220,11 @@ lookup_char (const struct char_map *map, long charcode)
{
if (charcode >= map->coverage.first_char &&
charcode <= map->coverage.first_char + map->coverage.num_chars)
+#if defined(upTeX)
+ return map->indices[INDEX(charcode - map->coverage.first_char)];
+#else
return map->indices[charcode - map->coverage.first_char];
+#endif
else
return -1;
@@ -224,7 +240,11 @@ lookup_range (const struct range_map *map, long charcode)
charcode >= map->coverages[idx].first_char; idx--) {
if (charcode <=
map->coverages[idx].first_char + map->coverages[idx].num_chars)
+#if defined(upTeX)
+ return map->indices[INDEX(idx)];
+#else
return map->indices[idx];
+#endif
}
return -1;
@@ -479,12 +499,20 @@ jfm_make_charmap (struct font_metric *fm, struct tfm_font *tfm)
fm->charmap.type = MAPTYPE_CHAR;
fm->charmap.data = map = NEW(1, struct char_map);
map->coverage.first_char = 0;
+#if defined(upTeX)
+ map->coverage.num_chars = 0x10FFFFu;
+ map->indices = NEW(0x10001ul, unsigned short);
+#else
map->coverage.num_chars = 0xFFFFu;
map->indices = NEW(0x10000L, unsigned short);
+#endif
for (code = 0; code <= 0xFFFFu; code++) {
map->indices[code] = tfm->chartypes[code];
}
+#if defined(upTeX)
+ map->indices[0x10000ul] = tfm->chartypes[0];
+#endif
} else {
struct range_map *map;
@@ -493,7 +521,11 @@ jfm_make_charmap (struct font_metric *fm, struct tfm_font *tfm)
map->num_coverages = 1;
map->coverages = NEW(map->num_coverages, struct coverage);
map->coverages[0].first_char = 0;
+#if defined(upTeX)
+ map->coverages[0].num_chars = 0x10FFFFu;
+#else
map->coverages[0].num_chars = 0xFFFFu;
+#endif
map->indices = NEW(1, unsigned short);
map->indices[0] = 0; /* Only default type used. */
}
@@ -784,7 +816,11 @@ read_tfm (struct font_metric *fm, FILE *tfm_file, UNSIGNED_QUAD tfm_file_size)
jfm_do_char_type_array(tfm_file, &tfm);
jfm_make_charmap(fm, &tfm);
fm->firstchar = 0;
+#if defined(upTeX)
+ fm->lastchar = 0x10FFFFl;
+#else
fm->lastchar = 0xFFFFl;
+#endif
fm->fontdir = (tfm.id == JFMV_ID) ? FONT_DIR_VERT : FONT_DIR_HORIZ;
fm->source = SOURCE_TYPE_JFM;
}