diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-09-16 09:01:26 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-09-16 09:01:26 +0000 |
commit | ed35ca7560a0e1ec82107722d95212d02e0f6120 (patch) | |
tree | 14fd43985a1c2a418f80fa2c33ebacae4fe833d5 /Build/source/texk/web2c/pmpostdir/ppsout.ch | |
parent | 4394fcebb4df6385e6d02bea16726df0dd9df005 (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.ch | 95 |
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 |