<function>
<fname>v_get_string_pic</fname>
<prototype>

#include	"v.h"

void
v_get_string_pic(
	V_STRING_PIC * p,
	VDISPLAY *win,
	L_CHAR * str,
	int	size,
	int 	dir)


</prototype>
<history>
<renew "01/11/10">
基本的に、今までは文字コードの識別をプログラム・コード内にダイレクトに書いて識別していました。それを、d->font_workのテーブルを参照することによって行うように改造しました。

以下にソース変更箇所を示します。
<pre>
void
v_get_string_pic(
	V_STRING_PIC * p,
	VWINDOW * win,
	L_CHAR * str,
	int	size,
	int 	dir)
{
int len;
int i,j;
V_STRING_PIC pp;
L_CHAR unknown;
int f;
WRITABLE_CODE_TABLE * t;
	len = l_strlen(str);
	unknown = '?';
	f = 0;
	for ( i = 0 ; i < len ; ) {

/* ここのコードが変わりました。 */

		t = get_wct(win->d->font_work,str[i]);
		if ( t ) {
			for ( j = i ; j < len &&
				(str[j]&t->mask) == t->lcz ; j ++ );
			v_get_string_pic_call(
				&pp,
				win,
				&str[i],
				j-i,
				t->work,
				size,
				dir,
				t->mask);
			i = j;
		}
		else {
			v_get_string_pic_call(
				&pp,
				win,
				&unknown,
				1,
				&win->d->iso8859_1,
				size,
				dir,
				LCZM_1B_TYPE);
			i ++;
		}
		if ( f == 0 ) {
			*p = pp;
			f = 1;
		}
		else {
			compose_pic(p,&pp);
		}
	}
}
</pre>
<renew "02/11/19">
VWINDOW * の引数をVDISPLAY *に変更しました。これは、文字のビットマップを取
り出すときにview agent ではウィンドウを表示しないので、VWINDOW *はまずい
からです。
</history>
</function>

 
