Imported Debian patch 2.23.05-1
[hcoop/zz_old/debian/webalizer.git] / debian / patches / 18_ttf_support_throught_libgd.diff
CommitLineData
dc9c5d88
FAW
1From: Tatsuki Sugiura <sugi@nemui.org>
2Subject: make possible to use TrueTypeFont throught libgd
3
4Origin: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=201723
5
6####################
7# graph label characters will be broken under non-C locale
8# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=201723
9# From: Tatsuki Sugiura <sugi@nemui.org>
10#
11# GD's built-in font has no Japanese Kanji and any other multi-byte
12# characters. Graph labels can't be displayed correctly under some
13# locales which has these characters.
14# This patch make possible to use TrueTypeFont throught libgd
15# function.
16
17Index: webalizer/README.FIRST
18===================================================================
19--- webalizer.orig/README.FIRST 2011-01-08 20:59:30.000000000 +0100
20+++ webalizer/README.FIRST 2011-01-08 20:59:49.000000000 +0100
21@@ -28,3 +28,18 @@
22 # with the options you prefer, build it, install it and use it.
23 ##################
24
25+################### SUMMARY 18_ttf_support_throught_libgd ##########################
26+
27+##################
28+# TrueTypeFont makes possible to replace GD built-in font by
29+# specified TrueTypeFont.
30+# The value can be '/path/to/your/true_type_font.file' or empty.
31+# If value is empty(or commented out), GD built-in font will be used.
32+# The default is empty.
33+# (Supplement for Japanese:
34+# Under EUC-JP locale, TTF file must be specified which has *Windows
35+# Shift-JIS encoding*. This limitation is derived from libgd.
36+# e.g. you can use "/usr/share/fonts/truetype/X-TT/wadalab-gothic.ttf"
37+# provided by ttf-xtt-wadalab-gothic package)
38+#TrueTypeFont
39+##################
40Index: webalizer/configure.in
41===================================================================
42--- webalizer.orig/configure.in 2011-01-08 20:36:44.000000000 +0100
43+++ webalizer/configure.in 2011-01-08 20:59:49.000000000 +0100
44@@ -140,6 +140,7 @@
45 AC_CHECK_LIB(gd, main, LIBGD="yes"; LIBS="-lgd ${LIBS}")
46 if test "${LIBGD}" = "yes"; then
47 AC_CHECK_LIB(gd, gdImagePng, LIBGD="yes", LIBGD="no")
48+ AC_CHECK_LIB(gd, gdImageStringFT, LIBS="-lgd ${LIBS}"; HAVE_LIBGD_TTF="yes", HAVE_LIBGD_TTF="")
49 if test "${LIBGD}" = "no"; then
50 AC_MSG_ERROR(Old version of libgd found.. please upgrade!)
51 fi
52@@ -147,6 +148,10 @@
53 AC_MSG_ERROR(gd library not found.. please install libgd)
54 fi
55
56+if test "$HAVE_LIBGD_TTF" = "yes" ;then
57+ AC_DEFINE(HAVE_LIBGD_TTF)
58+fi
59+
60 AC_CHECK_HEADER(gd.h, HDR="yes", HDR="no")
61 if test "${HDR}" = "no"; then
62 AC_MSG_ERROR(gd.h header not found.. please install)
63Index: webalizer/graphs.c
64===================================================================
65--- webalizer.orig/graphs.c 2011-01-08 20:59:42.000000000 +0100
66+++ webalizer/graphs.c 2011-01-08 20:59:49.000000000 +0100
67@@ -1025,6 +1025,48 @@
68 return;
69 }
70
71+#ifdef HAVE_LIBGD_TTF
72+/*
73+ * Simple wrapper of gdImageString() for TrueType fonts
74+ *
75+ * To support Japanese (and other multi-byte characters), GD 1.7
76+ * or later that supports kanji(JISX208) TTF has been required.
77+ * So, we must use TrueType fonts instead of gd built-in
78+ * bitmap fonts.
79+ *
80+ * Original of function written by <yasu@on.cs.keio.ac.jp>.
81+ * And modified by Tatsuki Sugiura <sugi@nemui.org>
82+ *
83+ */
84+static void gdImageStringWrapper(gdImagePtr im, gdFontPtr f,
85+ int x, int y,
86+ unsigned char *s, int color, double rad)
87+{
88+ double ptsize = 11.0;
89+ int brect[8];
90+ extern char *ttf_file;
91+
92+ if (ttf_file == NULL || strcmp(ttf_file, "") == 0) {
93+ if (fabs(rad) < PI/4.0)
94+ gdImageString(im, f, x, y, s, color);
95+ else
96+ gdImageStringUp(im, f, x, y, s, color);
97+ } else {
98+ if (f == gdFontSmall)
99+ ptsize = 9.0;
100+
101+ gdImageStringFT(im, brect, color, ttf_file, ptsize, rad,
102+ x + (int)(ptsize*sin(rad)),
103+ y + (int)(ptsize*cos(rad)), s);
104+ }
105+}
106+
107+#define gdImageString(im, f, x, y, s, color) \
108+ gdImageStringWrapper(im, f, x, y, s, color, 0.0)
109+#define gdImageStringUp(im, f, x, y, s, color) \
110+ gdImageStringWrapper(im, f, x, y, s, color, PI/2.0)
111+#endif /* HAVE_LIBGD_TTF */
112+
113 /****************************************************************/
114 /* */
115 /* ASHEX2INT - ASCII HEX TO INT CONVERTER */
116Index: webalizer/sample.conf
117===================================================================
118--- webalizer.orig/sample.conf 2011-01-08 20:59:48.000000000 +0100
119+++ webalizer/sample.conf 2011-01-08 20:59:49.000000000 +0100
120@@ -792,4 +792,17 @@
121 #PieColor3 ff00ff
122 #PieColor4 ffc080
123
124+# TrueTypeFont makes possible to replace GD built-in font by
125+# specified TrueTypeFont.
126+# The value can be '/path/to/your/true_type_font.file' or empty.
127+# If value is empty(or commented out), GD built-in font will be used.
128+# The default is empty.
129+# (Supplement for Japanese:
130+# Under EUC-JP locale, TTF file must be specified which has *Windows
131+# Shift-JIS encoding*. This limitation is derived from libgd.
132+# e.g. you can use "/usr/share/fonts/truetype/X-TT/wadalab-gothic.ttf"
133+# provided by ttf-xtt-wadalab-gothic package)
134+
135+#TrueTypeFont
136+
137 # End of configuration file... Have a nice day!
138Index: webalizer/webalizer.c
139===================================================================
140--- webalizer.orig/webalizer.c 2011-01-08 20:59:42.000000000 +0100
141+++ webalizer/webalizer.c 2011-01-08 20:59:49.000000000 +0100
142@@ -175,6 +175,10 @@
143 GeoIP *geo_fp = NULL; /* GeoIP database handle */
144 #endif
145
146+#ifdef HAVE_LIBGD_TTF
147+char *ttf_file = ""; /* truetype font file */
148+#endif
149+
150 int ntop_sites = 30; /* top n sites to display */
151 int ntop_sitesK = 10; /* top n sites (by kbytes) */
152 int ntop_urls = 30; /* top n url's to display */
153@@ -1668,7 +1672,10 @@
154 "SearchCaseI", /* srch str case insensitive 120 */
155 "InOutkB", /* logio (0=no,1=yes,2=auto) 121 */
156 "ColorIKbyte", /* IKbyte Color (def=0080ff) 122 */
157- "ColorOKbyte" /* OKbyte Color (def=00e000) 123 */
158+ "ColorOKbyte", /* OKbyte Color (def=00e000) 123 */
159+#ifdef HAVE_LIBGD_TTF
160+ "TrueTypeFont" /* TrueType Font file 124 */
161+#endif
162 };
163
164 FILE *fp;
165@@ -1908,6 +1915,9 @@
166 (tolower(value[0])=='y')?1:2; break; /* InOutkB */
167 case 122: strncpy(ikbyte_color+1,value,6); break; /* ColorIKbyte */
168 case 123: strncpy(okbyte_color+1,value,6); break; /* ColorOKbyte */
169+#ifdef HAVE_LIBGD_TTF
170+ case 124: ttf_file=save_opt(value); break; /* TrueType font */
171+#endif
172 }
173 }
174 fclose(fp);