diff options
Diffstat (limited to 'Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-04-uptex')
-rw-r--r-- | Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-04-uptex | 258 |
1 files changed, 0 insertions, 258 deletions
diff --git a/Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-04-uptex b/Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-04-uptex deleted file mode 100644 index 82651fe8fcc..00000000000 --- a/Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-04-uptex +++ /dev/null @@ -1,258 +0,0 @@ -diff -ur dvipdfmx-20110311.orig/src/dvi.c dvipdfmx-20110311/src/dvi.c ---- dvipdfmx-20110311.orig/src/dvi.c 2011-03-09 08:43:18.000000000 +0100 -+++ dvipdfmx-20110311/src/dvi.c 2011-11-05 14:58:04.000000000 +0100 -@@ -58,6 +58,10 @@ - #define TEX_FONTS_ALLOC_SIZE 16u - #define VF_NESTING_MAX 16u - -+/* UTF-32 over U+FFFF -> UTF-16 surrogate pair */ -+#define UTF32toUTF16HS(x) (0xd800 + (((x-0x10000) >> 10) & 0x3ff)) -+#define UTF32toUTF16LS(x) (0xdc00 + ( x & 0x3ff)) -+ - /* Interal Variables */ - static FILE *dvi_file = NULL; - -@@ -734,7 +738,7 @@ - { - struct loaded_font *font; - spt_t width, height, depth; -- unsigned char wbuf[2]; -+ unsigned char wbuf[4]; - - if (current_font < 0) { - ERROR("No font selected!"); -@@ -753,7 +757,14 @@ - - switch (font->type) { - case PHYSICAL: -- if (ch > 255) { /* _FIXME_ */ -+ if (ch > 65535) { /* _FIXME_ */ -+ wbuf[0] = (UTF32toUTF16HS(ch) >> 8) & 0xff; -+ wbuf[1] = UTF32toUTF16HS(ch) & 0xff; -+ wbuf[2] = (UTF32toUTF16LS(ch) >> 8) & 0xff; -+ wbuf[3] = UTF32toUTF16LS(ch) & 0xff; -+ pdf_dev_set_string(dvi_state.h, -dvi_state.v, wbuf, 4, -+ width, font->font_id, 2); -+ } else if (ch > 255) { /* _FIXME_ */ - wbuf[0] = (ch >> 8) & 0xff; - wbuf[1] = ch & 0xff; - pdf_dev_set_string(dvi_state.h, -dvi_state.v, wbuf, 2, -@@ -805,7 +816,7 @@ - { - struct loaded_font *font; - spt_t width, height, depth; -- unsigned char wbuf[2]; -+ unsigned char wbuf[4]; - - if (current_font < 0) { - ERROR("No font selected!"); -@@ -821,7 +832,14 @@ - /* Treat a single character as a one byte string and use the - * string routine. - */ -- if (ch > 255) { /* _FIXME_ */ -+ if (ch > 65535) { /* _FIXME_ */ -+ wbuf[0] = (UTF32toUTF16HS(ch) >> 8) & 0xff; -+ wbuf[1] = UTF32toUTF16HS(ch) & 0xff; -+ wbuf[2] = (UTF32toUTF16LS(ch) >> 8) & 0xff; -+ wbuf[3] = UTF32toUTF16LS(ch) & 0xff; -+ pdf_dev_set_string(dvi_state.h, -dvi_state.v, wbuf, 4, -+ width, font->font_id, 2); -+ } else if (ch > 255) { /* _FIXME_ */ - wbuf[0] = (ch >> 8) & 0xff; - wbuf[1] = ch & 0xff; - pdf_dev_set_string(dvi_state.h, -dvi_state.v, wbuf, 2, -@@ -899,6 +917,12 @@ - } - - static void -+do_set3 (void) -+{ -+ dvi_set(get_unsigned_triple(dvi_file)); -+} -+ -+static void - do_setrule (void) - { - SIGNED_QUAD width, height; -@@ -935,6 +959,12 @@ - dvi_put(get_unsigned_pair(dvi_file)); - } - -+static void -+do_put3 (void) -+{ -+ dvi_put(get_unsigned_triple(dvi_file)); -+} -+ - void - dvi_push (void) - { -@@ -1414,8 +1444,9 @@ - switch (opcode) { - case SET1: do_set1(); break; - case SET2: do_set2(); break; -- case SET3: case SET4: -- ERROR("Multibyte (>16 bits) character not supported!"); -+ case SET3: do_set3(); break; -+ case SET4: -+ ERROR("Multibyte (>24 bits) character not supported!"); - break; - - case SET_RULE: -@@ -1424,8 +1455,9 @@ - - case PUT1: do_put1(); break; - case PUT2: do_put2(); break; -- case PUT3: case PUT4: -- ERROR ("Multibyte character (>16 bits) not supported!"); -+ case PUT3: do_put3(); break; -+ case PUT4: -+ ERROR ("Multibyte character (>24 bits) not supported!"); - break; - - case PUT_RULE: -diff -ur dvipdfmx-20110311.orig/src/tfm.c dvipdfmx-20110311/src/tfm.c ---- dvipdfmx-20110311.orig/src/tfm.c 2011-03-05 05:44:49.000000000 +0100 -+++ dvipdfmx-20110311/src/tfm.c 2011-11-05 14:58:04.000000000 +0100 -@@ -55,6 +55,12 @@ - #define IS_JFM(i) ((i) == JFM_ID || (i) == JFMV_ID) - #endif /* !WITHOUT_ASCII_PTEX */ - -+#if !defined(WITHOUT_ASCII_PTEX) -+#define CHARACTER_INDEX(i) ((i>0xFFFFul ? 0x10000ul : i)) -+#else -+#define CHARACTER_INDEX(i) ((i)) -+#endif -+ - /* - * TFM Record structure: - * Multiple TFM's may be read in at once. -@@ -162,7 +168,7 @@ - struct coverage - { - long first_char; -- unsigned short num_chars; -+ long num_chars; - }; - - /* -@@ -208,7 +214,7 @@ - { - if (charcode >= map->coverage.first_char && - charcode <= map->coverage.first_char + map->coverage.num_chars) -- return map->indices[charcode - map->coverage.first_char]; -+ return map->indices[CHARACTER_INDEX(charcode - map->coverage.first_char)]; - else - return -1; - -@@ -224,7 +230,7 @@ - charcode >= map->coverages[idx].first_char; idx--) { - if (charcode <= - map->coverages[idx].first_char + map->coverages[idx].num_chars) -- return map->indices[idx]; -+ return map->indices[CHARACTER_INDEX(idx)]; - } - - return -1; -@@ -479,12 +485,13 @@ - fm->charmap.type = MAPTYPE_CHAR; - fm->charmap.data = map = NEW(1, struct char_map); - map->coverage.first_char = 0; -- map->coverage.num_chars = 0xFFFFu; -- map->indices = NEW(0x10000L, unsigned short); -+ map->coverage.num_chars = 0x10FFFFu; -+ map->indices = NEW(0x10001ul, unsigned short); - - for (code = 0; code <= 0xFFFFu; code++) { - map->indices[code] = tfm->chartypes[code]; - } -+ map->indices[0x10000ul] = tfm->chartypes[0]; - } else { - struct range_map *map; - -@@ -493,7 +500,7 @@ - map->num_coverages = 1; - map->coverages = NEW(map->num_coverages, struct coverage); - map->coverages[0].first_char = 0; -- map->coverages[0].num_chars = 0xFFFFu; -+ map->coverages[0].num_chars = 0x10FFFFu; - map->indices = NEW(1, unsigned short); - map->indices[0] = 0; /* Only default type used. */ - } -@@ -784,7 +791,7 @@ - jfm_do_char_type_array(tfm_file, &tfm); - jfm_make_charmap(fm, &tfm); - fm->firstchar = 0; -- fm->lastchar = 0xFFFFl; -+ fm->lastchar = 0x10FFFFl; - fm->fontdir = (tfm.id == JFMV_ID) ? FONT_DIR_VERT : FONT_DIR_HORIZ; - fm->source = SOURCE_TYPE_JFM; - } -diff -ur dvipdfmx-20110311.orig/src/vf.c dvipdfmx-20110311/src/vf.c ---- dvipdfmx-20110311.orig/src/vf.c 2011-03-05 05:44:49.000000000 +0100 -+++ dvipdfmx-20110311/src/vf.c 2011-11-05 14:58:04.000000000 +0100 -@@ -238,11 +238,11 @@ - ch = get_unsigned_quad (vf_file); - /* Skip over TFM width since we already know it */ - get_unsigned_quad (vf_file); -- if (ch < 65536L) -+ if (ch < 0x1000000L) - read_a_char_def (vf_file, thisfont, pkt_len, ch); - else { - fprintf (stderr, "char=%ld\n", ch); -- ERROR ("Long character (>16 bits) in VF file.\nI can't handle long characters!\n"); -+ ERROR ("Long character (>24 bits) in VF file.\nI can't handle long characters!\n"); - } - break; - } -@@ -455,6 +455,12 @@ - return; - } - -+static void vf_set3(unsigned char **start, unsigned char *end) -+{ -+ vf_set (unsigned_triple(start, end)); -+ return; -+} -+ - static void vf_putrule(unsigned char **start, unsigned char *end, spt_t ptsize) - { - SIGNED_QUAD width, height; -@@ -491,6 +497,12 @@ - return; - } - -+static void vf_put3(unsigned char **start, unsigned char *end) -+{ -+ dvi_put (unsigned_triple(start, end)); -+ return; -+} -+ - static void vf_push(void) - { - dvi_push(); -@@ -851,8 +863,10 @@ - vf_set2(&start, end); - break; - case SET3: -+ vf_set3(&start, end); -+ break; - case SET4: -- ERROR ("Multibyte (>16 bits) character in VF packet.\nI can't handle this!"); -+ ERROR ("Multibyte (>24 bits) character in VF packet.\nI can't handle this!"); - break; - case SET_RULE: - vf_setrule(&start, end, ptsize); -@@ -864,8 +878,10 @@ - vf_put2(&start, end); - break; - case PUT3: -+ vf_put3(&start, end); -+ break; - case PUT4: -- ERROR ("Multibyte (>16 bits) character in VF packet.\nI can't handle this!"); -+ ERROR ("Multibyte (>24 bits) character in VF packet.\nI can't handle this!"); - break; - case PUT_RULE: - vf_putrule(&start, end, ptsize); |