diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/web2c/pmpostdir/ppsout.ch | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 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 | 86 |
1 files changed, 86 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..1353e0b284c --- /dev/null +++ b/Build/source/texk/web2c/pmpostdir/ppsout.ch @@ -0,0 +1,86 @@ +% +% +% 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; + 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) { + int 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 + mp_ps_print_nl(mp, "%%Creator: MetaPost ("@= @>P_UP@= @>"MetaPost) "); +@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)); +@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)); +@z |