aboutsummaryrefslogtreecommitdiff
path: root/print/tex-xdvik/files/patch-texk-xdvik-ptexvf.c
diff options
context:
space:
mode:
Diffstat (limited to 'print/tex-xdvik/files/patch-texk-xdvik-ptexvf.c')
-rw-r--r--print/tex-xdvik/files/patch-texk-xdvik-ptexvf.c150
1 files changed, 150 insertions, 0 deletions
diff --git a/print/tex-xdvik/files/patch-texk-xdvik-ptexvf.c b/print/tex-xdvik/files/patch-texk-xdvik-ptexvf.c
new file mode 100644
index 000000000000..597d4bf7758f
--- /dev/null
+++ b/print/tex-xdvik/files/patch-texk-xdvik-ptexvf.c
@@ -0,0 +1,150 @@
+--- texk/xdvik/ptexvf.c.orig 2015-07-19 18:49:42 UTC
++++ texk/xdvik/ptexvf.c
+@@ -0,0 +1,147 @@
++/*========================================================================*\
++
++Copyright (C) 1993 Yasuhisa Hayashi
++Copyright (C) 1999-2013 The Xdvik-jp project http://xdvi.sourceforge.jp/
++
++Permission is hereby granted, free of charge, to any person obtaining a copy
++of this software and associated documentation files (the "Software"), to
++deal in the Software without restriction, including without limitation the
++rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
++sell copies of the Software, and to permit persons to whom the Software is
++furnished to do so, subject to the following conditions:
++
++The above copyright notice and this permission notice shall be included in
++all copies or substantial portions of the Software.
++
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
++OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++OTHER DEALINGS IN THE SOFTWARE.
++
++NOTE:
++This module is based on prior work, as noted below and
++in the modification history in README.xdvik-jp and changelog.
++
++\*========================================================================*/
++
++/*------------------------------------------------------------------------
++ This module is based on "zeit.c" in
++ "xdvi patch level 17 zeit 書体倶楽部対応化 patch"
++ xdvi-zeit (1993/8, fj.sources)
++ The original author is Yasuhisa Hayashi (林 康久, hayashi@me.aoyama.ac.jp)
++ and copyright notice is shown below (in UTF-8):
++
++○copyright
++
++ わたしが加えた部分については改変、転用、再配布すべ
++ て自由とします。
++
++ -------------------------------------------------------------------------*/
++
++/*******************************************************
++ * Zeit Shotai Kurabu interface routine for xdvi pl.17
++ * Written by Y. Hayashi (hayashi@me.aoyama.ac.jp)
++ ******************************************************/
++
++#include "xdvi-config.h"
++#include "xdvi.h"
++#include "dvi-init.h"
++#include "util.h"
++
++#ifndef X_NOT_STDC_ENV
++#include <stdlib.h>
++#endif
++
++#include "ptexmap.h"
++#include "ptexvf.h"
++#include "jfm.h"
++
++#ifdef PTEX
++#include "ft2.h"
++
++static void read_PTEXVF_char(struct font *fontp, wide_ubyte ch)
++{
++ struct glyph *g;
++ int ascend;
++
++ if (ch > fontp->maxchar) {
++ int j;
++ int i = KTABLESIZE * ((int)(ch / KTABLESIZE)+1);
++ fontp->kglyph = xrealloc(fontp->kglyph, sizeof(struct glyph *) * i);
++ for (j=fontp->maxchar+1; j<i; j++) {
++ fontp->kglyph[j] = NULL;
++ }
++ fontp->maxchar = i-1;
++ }
++ g = fontp->kglyph[ch];
++ if (g == NULL) {
++ struct glyph *orig = fontp->kglyph[0];
++ ASSERT(orig != NULL, "Unexpected error.");
++ g = fontp->kglyph[ch] = xcalloc(1, sizeof(struct glyph));
++ g->bitmap.w = orig->bitmap.w;
++ g->bitmap.h = orig->bitmap.h;
++ g->x = orig->x;
++ g->y = orig->y;
++ g->dvi_adv = orig->dvi_adv;
++ }
++ alloc_bitmap(&g->bitmap);
++ ascend = ft2_get_bitmap(ch, fontp->ft2_index, &g->bitmap);
++#ifndef WORDS_BIGENDIAN
++ order_reverse_bitmap(&g->bitmap);
++#endif /* !WORDS_BIGENDIAN */
++ g->tdir = fontp->dir;
++ if (fontp->dir) { /* tate */
++ int swap = g->x;
++ g->x = g->y;
++ g->y = swap;
++ } else { /* yoko */
++ g->y = ascend;
++ }
++}
++
++int read_PTEXVF_index(struct font *fontp)
++{
++ int n;
++ struct glyph *g;
++ struct jfm *jfm;
++ const double dimconv = fontp->dimconv;
++
++ fontp->read_char = read_PTEXVF_char;
++ fontp->kglyph = xcalloc(KTABLESIZE, sizeof(struct glyph *));
++ fontp->maxchar = KTABLESIZE - 1;
++
++ jfm = read_jfm(fontp->file, fontp->fontname);
++ if (jfm == NULL) return -1;
++ fontp->ft2_index = ft2_open_font(getkanjifont(fontp->fontname));
++ if (fontp->ft2_index < 0) return -1;
++
++ for (n=0; n<jfm->table[J_NT]; n++) {
++ int code = jfm->type[n].code;
++ int index = jfm->type[n].index;
++ int width = jfm->width[jfm->info[index].width_ix];
++ int height= jfm->height[jfm->info[index].height_depth_ix / 0x10];
++ int depth = jfm->depth[jfm->info[index].height_depth_ix % 0x10];
++
++ g = xcalloc(1, sizeof(struct glyph));
++ g->bitmap.w = (int)(dimconv * width) >> 16;
++ g->bitmap.h = (int)(dimconv * (height + depth)) >> 16;
++ if (g->bitmap.w != g->bitmap.h) {
++ if (code<0xFF61 || code>0xFFDC) /* HALFWIDTH in Unicode: U+FF61 -- U+FFDC */
++ fprintf(stderr, "Warning: '%s' (code=0x%X) is not square.\n",
++ fontp->fontname, code);
++ }
++ g->bitmap.bits = NULL;
++ g->x = 0;
++ g->y = (int) (dimconv * height) >> 16;
++ g->dvi_adv = dimconv * width;
++ fontp->kglyph[code] = g;
++ }
++ g = fontp->kglyph[0];
++ alloc_bitmap(&g->bitmap);
++ fill_bitmap(&g->bitmap);
++ return 0;
++}
++#endif /* PTEX */