summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/pmpostdir/ppsout.ch
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2014-09-16 09:01:26 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2014-09-16 09:01:26 +0000
commited35ca7560a0e1ec82107722d95212d02e0f6120 (patch)
tree14fd43985a1c2a418f80fa2c33ebacae4fe833d5 /Build/source/texk/web2c/pmpostdir/ppsout.ch
parent4394fcebb4df6385e6d02bea16726df0dd9df005 (diff)
Build system: Add texk/web2c/pmpostdir/ for pMetaPost and upMetaPost
git-svn-id: svn://tug.org/texlive/trunk@35184 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/pmpostdir/ppsout.ch')
-rw-r--r--Build/source/texk/web2c/pmpostdir/ppsout.ch95
1 files changed, 95 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/pmpostdir/ppsout.ch b/Build/source/texk/web2c/pmpostdir/ppsout.ch
new file mode 100644
index 00000000000..f1ca7cfe6c4
--- /dev/null
+++ b/Build/source/texk/web2c/pmpostdir/ppsout.ch
@@ -0,0 +1,95 @@
+%
+%
+% change file of psout.w for jMetaPost (CWEB version)
+% Akira Kakuto (translated the WEB version)
+%
+%
+
+@x
+#include <math.h>
+@y
+#include <math.h>
+#include <ptexenc/ptexenc.h>
+#ifdef UPMP
+#include <ptexenc/unicode.h>
+#endif
+@z
+
+% Treat all Kanji fonts as used
+@x
+ if ( mp->font_info[p].qqqq.b3==mp_used )
+@y
+ if ( mp->font_info[p].qqqq.b3==mp_used || mp->font_id[f]!=0)
+@z
+
+%
+% Kanji string output
+@x
+static void mp_print_initial_comment(MP mp,mp_edge_object *hh, int prologues);
+@y
+static void mp_print_initial_comment(MP mp,mp_edge_object *hh, int prologues);
+
+#define Hi(x) (((x) >> 8) & 0xff)
+#define Lo(x) ((x) & 0xff)
+
+@ @c
+static void mp_ps_kanji_string_out (MP mp, char *s)
+{
+ int i, c;
+#ifdef UPMP
+ int cx;
+#endif
+ size_t len;
+
+ len = strlen(s);
+ i=0;
+ mp_ps_print(mp, "<");
+ while (i<len) {
+ if ( mp->ps->ps_offset+5>mp->max_print_line )
+ mp_ps_print_ln(mp);
+#ifdef UPMP
+ c=toDVI(fromBUFF((unsigned char*)s, len, i));
+ i=i+multistrlen((unsigned char*)s, len, i);
+ if (isinternalUPTEX() && c>65535) {
+ cx=UTF32toUTF16HS(c); /* High surrogate */
+ mp_hex_digit_out(mp, Hi(cx) / 16);
+ mp_hex_digit_out(mp, Hi(cx) % 16);
+ mp_hex_digit_out(mp, Lo(cx) / 16);
+ mp_hex_digit_out(mp, Lo(cx) % 16);
+ c=UTF32toUTF16LS(c); /* Low surrogate */
+ }
+#else
+ c=toDVI(fromBUFF((unsigned char*)s, i+2, i));
+ i=i+2;
+#endif
+ mp_hex_digit_out(mp, Hi(c) / 16);
+ mp_hex_digit_out(mp, Hi(c) % 16);
+ mp_hex_digit_out(mp, Lo(c) / 16);
+ mp_hex_digit_out(mp, Lo(c) % 16);
+ };
+ mp_ps_print(mp, ">");
+};
+@z
+
+@x
+ mp_ps_print_nl(mp, "%%Creator: MetaPost ");
+@y
+#ifdef UPMP
+ mp_ps_print_nl(mp, "%%Creator: MetaPost (upTeX version) ");
+#else
+ mp_ps_print_nl(mp, "%%Creator: MetaPost (Japanese version) ");
+#endif
+@z
+
+%
+% Call Kanji string output routine if the font is JFM.
+@x
+ mp_ps_string_out(mp, gr_text_p(p),gr_text_l(p));
+ mp_ps_name_out(mp, mp->font_name[gr_font_n(p)],false);
+@y
+ if (mp->font_id[gr_font_n(p)]!=0)
+ mp_ps_kanji_string_out(mp, gr_text_p(p));
+ else
+ mp_ps_string_out(mp, gr_text_p(p),gr_text_l(p));
+ mp_ps_name_out(mp, mp->font_name[gr_font_n(p)],false);
+@z