各種フォント文字列/マーク描画(PTEXT)

ptext/lstyle/pcstr | pmark

PTEXT, LSTYLE, PCSTR (各種フォント文字列描画)
1.機 能
    lsytle/ptext ルーチンは,使用する字体・文字サイズ・文字の向き・文字色
  および背景色を指定して文字列(漢字可)を描く.lsytleルーチンで,文字列描画
  に使用するフォント・文字サイズ・文字の向き・文字色・背景色を事前に設定し,
  ptext ルーチンで,指定する位置への 左詰め/右詰め/中央揃え の文字列の作画
  を行う.文字幅は使用するフォントと文字によって異なるため,文字列の描画開始
  位置もそれらの設定に応じて調整される.背景色によるぬりつぶしは,描く文字列
  をちょうど包含する矩形範囲に自動設定される.
    pcstr ルーチンは,Courierフォントの文字列(漢字不可)を作画する.

2.呼出し手順と引数

      call lstyle(font, high, angle, itcol, ibcol)
  font    [char]  使用する字体を指定するASCII文字列.(4文字目以降無視)
        第1文字は,T A H C S K M G のいずれか(小文字可)でなければならず,
        各々 TimesNewRoman Areal Helvetica CourierNew Symbol 漢字 明朝 ゴシック
        の各フォントの指定を意味する.ここで 明朝(M) は,漢字(K)フォント指定と
        同義とし,ゴシック(G) は,漢字(K)フォントの太字体指定と解釈する.また,
        H (Helvetica) の指定は A (Areal) の別名と解釈して処理される.
        第2文字・第3文字は,第1文字による指定に対する修飾子であり,
           B (Bold 太字体の指定), F (Fine 細字体の指定=太字指定解除),
           O I (Oblique/Italic 斜体の指定), N R (Normal/Roman 直立体の指定
           =斜体指定の解除  [いずれも小文字可,相反する指定は後側の指定が有効]
        が指定できる(それ以外の文字は無効).
        なお,Symbol 字体に対する太字指定は意味を持たない(細字と同じ).
         (例) 'Mincho' : 'cho' は無視され,'i' は 'n' に打ち消され,
                            漢字細字(明朝)の直立体と解釈される.
                'Gothic' : 'hic' は無視され,'t' も無効となるので,
                            漢字太字(ゴシック)の斜体とみなされる.
  high    [float] 文字の高さ(cm単位)
        活字の大きさ(ポイント数)を,cm単位で表現したもので,実際に描かれる文
        字サイズは,フォントごと文字ごとに異なる. Times/Helvetica の大文字の
        高さは70%程度,Courier の大文字の高さは60%程度,全角漢字の高さは85%
        程度となる.なお,背景色による矩形ぬりつぶし範囲の高さは,指定文字高の
        125%(文字列下辺の基準線に対し,上側100%と下側25%)である.
  angle   [float] 文字を描く向き(度単位,右方向から反時計回りにはかる.)
                  横書きで後続文字を描く位置の方向を与える.
  itcol   [int]   文字色のカラーコード/濃淡レベル
  ibcol   [int]   背景色のカラーコード/濃淡レベル
        itcol/ibcol について,カラーコードは RGB 各8ビット(その色の光の255
        を最大値とする輝度を表す) 計24ビットの正の値(0~16777215)で表現し,
        モノクロ濃淡レベルは,255 を最大とする輝度値を,負の値で与える.すなわ
        ち,0 が黒,16777215 と -255 が白を意味する.
        なお,itcol に範囲外の値を与えると,文字色として黒(itcol=0)が採用さ
        れ,ibcol に範囲外の値(例えば -999)を与えると,背景色は無色透明である
        とみなし,矩形ぬりつぶしを行わない.

      call ptext(text, ltxt, xp, yp, kp)
  text    [char]  描くべき文字列.半角カタカナはサポートしない.
                  日本語(全角)の場合は,EUC でのコーディングを原則とするが,
                  EUC と競合しない範囲の Shift_JIS をも許容する.
                  (JIS第2水準の以降の一部の文字群が EUC と競合する.)
  ltxt    [int]   描くべき文字列のバイト数
  xp, yp  [float] 文字列を描く位置の座標(cm単位)
  kp      [int]   文字列を描く位置の制御を行う引数.kp=0 のとき文字列の左下(
                  始点),kp=1 のとき文字列の右下(終点),kp=2 のとき文字列
                  の中心(下辺中央より指定文字高の35%だけ上の位置)が,それぞ
                  れ (xp,yp) の位置になるように調整される.なお,kp<0 または 
                  kp>2 のときは,kp=0 の場合と同じになる.

      call pcstr(xp, yp, chi, str, angle, ns)
  xp, yp  [float] 文字列を描く位置の座標(cm単位)
  chi     [float] 文字の高さ(cm単位)[ lstyle での high指定と異なり,実質高.]
  str     [char]  描くべき文字列
  angle   [float] 文字を描く(後続文字の)方向(度単位,右方向から反時計回り.)
  ns      [int]   描くべき文字列の字数.正の値で与えると (xp,yp) から書き始め,
                  負の値で与えると (xp,yp) で書き終るように調整される.

3.使 用 例

!----------
  integer,parameter :: iwhite = -255, igray = -128, iblack = 0, none = -999
  integer,parameter :: iblue = 255, iyellow = (255*256 + 255) * 256)
  call psopn('ptext.ps', 'A4P');
  call plots(2., 2.)
  call dfpcol(0, 200)
  call paintr(0., 0., 15., 9.)
  call lstyle('HB', 1., 0., iblack, none)
  call ptext('Helvetica-Bold', 14, 1., 7., 0)
  call lstyle('ti', 1., 30., iwhite, iblack)
  call ptext('Times-Italic', 12, 12., 7., 2)
  call pcstr(15., 6., 1., 'Courier', 30., -7)
  call lstyle('Kbi', 1., 0., iyellow, igray)
  call ptext('Test', 10, 6., 4., 1)
  call ptext('Test', 10, 6., 4., 2)
  call lstyle('M', 1., 180., iblue, iwhite)
  call ptext('Test', 10, 6., 2., 0)
  call lstyle('S', 1.5, 0., iblack, iyellow)
  call ptext('W=abc', 5, 9.5, 1., 0)
  call plote;
  call pscls
  stop
  end

4.参考(Symbol字体の一覧)




PMARK (マーク描画)
1.機 能
    マークの種別・マークの中心位置・マークの大きさ・マークを描く線の幅・マーク
  の色を指定して,マークの作画を行う.

2.呼出し手順と引数

      call pmark(mark, xp, yp, size, thick, icol)
  mark    [int]   描くべきマークの種別(使用例参照)を指定する 0~9 の値.
                  負 または 10 以上の値を与えると,mark=0, thick=0., icol=0
                  を指定したのと同等(黒い円のぬりつぶし,sizeは有効)になる.
  xc, yc  [float] マークを描く位置(中心)の座標(cm単位)
  size    [float] マークの大きさ(cm単位)
  thick   [float] マークを描く線の太さ(cm単位)
                  但し,値として 0. を与えると,0≦mark≦6 の場合は 特別な意味
                  になり,マークの内側が指定の色/濃淡でぬりつぶされる.(mark
                  =1 のときは,さらに内円の内側が白くぬりつぶされる.)
  icol    [int]   マークの色のカラーコード/濃淡レベル
        カラーコードは RGB 各8ビット(その色の光の 255 を最大値とする輝度を
        表す)計24ビットの正の値(0~16777215)で表現し,モノクロ濃淡レベルは,
        255 を最大とする輝度値を,負の値で与える.すなわち,0 が黒,16777215 と
        -255 が白を意味する.なお,-255~16777215 の範囲外の値を与えると,黒が
        採用される.

3.使 用 例

!----------
  character(2) :: mark
  call psopn('pmark.ps', 'a4p')
  call plots(2., 2.)
  call dfpcol(1, -200)
  call paintr(0., 0., 15.5, 4.8)
  do i=0,9
    x = float(i)*1.5 + 1.
    write(mark,'(i2)') i
    call pcstr(x-0.5, 4.2, 0.3, mark, 0., 2)
    call pmark(i, x, 3.4, 1., 0.1, -255)
    call pmark(i, x, 2.1, 1., 0.03,   0)
    call pmark(i, x, 0.8, 1., 0. , -128)
  enddo
  call plote
  call pscls
  stop
  end