OSDN Git Service

added hyperref support.
authormaqiyuan <maqiyuan@users.sourceforge.jp>
Thu, 21 Aug 2014 06:22:30 +0000 (14:22 +0800)
committermaqiyuan <maqiyuan@users.sourceforge.jp>
Thu, 21 Aug 2014 06:22:30 +0000 (14:22 +0800)
src/texsourc/dpx.c
src/texsourc/dpx.h
src/texsourc/tex4.c

index ce69246..bafa9c6 100644 (file)
@@ -196,7 +196,7 @@ int pdf_get_font_id (internal_font_number f)
   char * sbuf = malloc(length(font_name[f]) + 1);\r
   int id;\r
   memset(sbuf, 0, length(font_name[f]) + 1);\r
-  memcpy(sbuf, str_pool + str_start[font_name[f]], length(font_name[f]));    \r
+  memcpy(sbuf, str_pool + str_start[font_name[f]], length(font_name[f]));\r
   id = dvi_locate_font(sbuf, font_size[f]);\r
   free(sbuf);\r
 \r
@@ -256,7 +256,7 @@ reswitch:
         if (!font_used[f])\r
         {\r
           font_used[f] = true;\r
-          font_id[f]   = pdf_get_font_id(f); \r
+          font_id[f]   = pdf_get_font_id(f);\r
         }\r
 \r
         dvi_f = f;\r
@@ -265,6 +265,14 @@ reswitch:
       char cbuf[2] = {c, 0};\r
       pdf_dev_set_string(cur_h, -cur_v, cbuf, 1, char_width(f, char_info(f, c)), font_id[dvi_f], 1);\r
       cur_h = cur_h + char_width(f, char_info(f, c));\r
+      {\r
+        pdf_rect rect;\r
+        pdf_dev_set_rect(&rect, dvi_h, -dvi_v,\r
+            char_width (f, char_info(f, c)),\r
+            char_height(f, c),\r
+            char_depth (f, c));\r
+        pdf_doc_expand_box(&rect);\r
+      }\r
       p = link(p);\r
     } while (!(!is_char_node(p)));\r
 \r
index d4a4cbd..25bc68a 100644 (file)
@@ -41,3 +41,11 @@ extern void pdf_hlist_out (void);
 extern void pdf_vlist_out (void);\r
 extern void pdf_synch_h (void);\r
 extern void pdf_synch_h (void);\r
+typedef struct pdf_rect\r
+{\r
+  double llx, lly, urx, ury;\r
+} pdf_rect;\r
+extern void pdf_dev_set_rect (pdf_rect *rect,\r
+                  spt_t x_user, spt_t y_user,\r
+                  spt_t width,  spt_t height, spt_t depth);\r
+extern void pdf_doc_expand_box (const pdf_rect *rect);\r
index 7f9e501..0cdcd71 100644 (file)
@@ -429,7 +429,8 @@ void special_out (pointer p)
   selector = old_setting;\r
   str_room(1);\r
   graphics_mode();\r
-  spc_exec_special(str_pool + str_start[str_ptr], cur_length, cur_h * 0.000015202, -cur_v * 0.000015202, 1.0);\r
+  //spc_exec_special(str_pool + str_start[str_ptr], cur_length, cur_h * 0.000015202, -cur_v * 0.000015202, 1.0);\r
+  spc_exec_special(str_pool + str_start[str_ptr], cur_length, dvi_h * 0.000015202, -dvi_v * 0.000015202, 1.0);\r
 /*\r
   if (cur_length < 256)\r
   {\r