絵定義での文字の描画の不具合

 投稿者:[  投稿日:2011年 5月25日(水)06時55分57秒
  何年か前より利用させて戴いております.ありがとうございます.

内部絵定義で,PLOT TEXTで文字を描こうとすると反転され歪んで表示されて,上手く行きません.此の時,PLOT TEXTをPLOT LABELやPLOT LETTERSに書き換えると解決します.
100 SET WINDOW -1 , 1 , 1 , -1
110 LET a$="あ"
120 PLOT TEXT ,AT 0,0 : a$!内部絵定義を使わないで文字を描く場合
130 !
140 SET TEXT COLOR 2
150 DRAW p WITH SHIFT(0,0)!内部絵定義を使って文字を描く場合
160 PICTURE p
170    PLOT TEXT ,AT 0,0 : a$!PLOT TEXTをPLOT LABELやPLOT LETTERSに書き換えると解決
!171    PLOT LABEL ,AT 0,0 : a$
!172    PLOT LETTERS ,AT 0,0 : a$
180 END PICTURE
190 END

又,外部絵定義で,PLOT TEXTで文字を描こうとすると描かれません[若しくは何処か画面外に描かれている?].更に,PLOT TEXTをPLOT LABELやPLOT LETTERSに書き換えても解決しません.
90 DECLARE EXTERNAL PICTURE p
100 SET WINDOW -1 , 1 , 1 , -1
110 LET a$="あ"
120 PLOT TEXT ,AT 0,0 : a$!外部絵定義を使わないで文字を描く場合
130 !
140 SET TEXT COLOR 2
150 DRAW p WITH SHIFT(0,0)!外部絵定義を使って文字を描く場合
160 END
170 EXTERNAL PICTURE p
180 PLOT TEXT ,AT 0,0 : a$!PLOT TEXTをPLOT LABELやPLOT LETTERSに書き換えても解決しない
!181 PLOT LABEL ,AT 0,0 : a$
!182 PLOT LETTERS ,AT 0,0 : a$
190 END PICTURE
 

Re: 絵定義での文字の描画の不具合

 投稿者:白石 和夫  投稿日:2011年 5月25日(水)16時17分1秒
  > No.1562[元記事へ]

Ver. 7.4.0でPLOT TEXT文の動作をJIS規格に適合させました。
規格では座標系に対して文字の字形が定義されることになっているので,上下が逆転した座標系を指定すると文字が裏返しになります。
Ver. 7.3以前のPLOT TEXT文の動作をPLOT LETTERSとして残しています。
PLOT LABELは,文字の基点のみを変換し,字形は物理座標で(要するに,人間が読むのに適するように)描きます。

なお,後半の外部副プログラムで描かれないのは,主プログラムの変数名a$と外部絵定義の変数a$とが区別されるからで,PLOT TEXT文の動作とは関係ありません。
 

Re: 絵定義での文字の描画の不具合

 投稿者:プカリ  投稿日:2011年 5月25日(水)21時27分11秒
  > No.1562[元記事へ]

面白いことに気付かされました。元記事で投稿された座標設定で正常に動いたとすると、
上下に反転した文字が表示されます。つまり、座標軸の取りかたで、
ピクチャ定義を変換せずに文字を上下・左右に反転できるということです。

 元投稿では文字の上下反転まで意図されていないと推測しますので、問題は二つあります。
 (1) Y座標軸の上下設定方向が逆です
   SET WINDOW left,right,bottom,top が標準なので
   SET WINDOW -1,1,1,-1 だと上下が逆になります。
 (2) 絵定義に変数の値が引き継がれていません
   文字の値(ここでは「あ」)が絵定義に渡されていません。
   なので、絵定義としては、何を表示してよいのか分かりません。
   外部絵定義の内部で使う変数は別のプログラム単位(ここでは
   メインルーチン)に書かれた同名の変数と独立しています。

 これらは、不具合というより仕様です。
 上記の挙動を示すプログラムの修正例と結果を次に示します。

------------------------------
DECLARE EXTERNAL PICTURE p
SET WINDOW -1,1,1,-1
SET TEXT HEIGHT 0.4
LET a$="あ"
SET TEXT COLOR "BLACK"
PLOT TEXT, AT 0,0: a$
DRAW p(a$,0.5) WITH SHIFT(0,0)
END

EXTERNAL PICTURE p(b$,n)
SET TEXT COLOR "RED"
PLOT TEXT, AT 0,0: b$
SET TEXT COLOR "GREEN"
PLOT LABEL, AT 0,-n: b$
SET TEXT COLOR "BLUE"
PLOT LETTERS, AT -n,0: b$
SET TEXT COLOR "CYAN"
PLOT TEXT, AT n,-0.5: b$
END PICTURE
------------------------------

 

Re: 絵定義での文字の描画の不具合

 投稿者:白石和夫  投稿日:2011年 5月26日(木)07時07分5秒
  > No.1566[元記事へ]

オプション―互換性―描画―TEXT描画の設定を変更すると動作が変わります。
JIS互換を選ぶと,座標系の設定だけで文字を歪ませることができます。
逆に「物理座標」を選ぶと文字が歪みません。(Ver 7.3以前の動作に戻ります)
なお,JISの規定通りに文字を歪ませるのは容易ではなく,現時点でビットマップ以外(メタファイルとプリンタ)には未対応です。
 

Re: 絵定義での文字の描画の不具合

 投稿者:[  投稿日:2011年 5月26日(木)13時45分16秒
  > No.1563[元記事へ]

なるほど,不具合でなくて仕様でしたのですね,すみません.しかもPLOT TEXTをJIS規格に適合させた上でPLOT LETTERSとPLOT LABELを用意されていたのですか.
外部絵定義の変数が独立している件はやらかしました.
白石さん,プカリさん,ありがとうございます.
 

戻る