IDLでは
の3種類のフォントが使える。
詳細はHershey vector fontsを参照。
SHOWFONT
プロシージャを用いてset_plot, 'PS' & SHOWFONT, 3, 'Simplex Roman' & device, /CLOSE
などとする。!P.FONT = -1
または、グラフィックスプロシージャのFONT
キーワードを-1にセットすることで利用できる。Direct graphicsではデフォルトでHershey vector fontsが用いられる。!3
)である。xyouts, string([192B, 193B, 194B, 195B, 196B, 197B]), CHARSIZE=3
(ÀÁÂÃÄÅ が出力される)。Unicode符号位置で文字を指定する!Z
は Hershey vector fonts では使えない。!6
、Complex Italic (Font 8) 切り替える !8
、上付き文字に切り替える !U
、元のサイズと位置に戻す !N
、元のSimplex Roman (Font 3)に戻す !3
を用いて、xyouts,'!8E!6=!8mc!U!62!N!3', CHARSIZE=3
とする。xyouts,'!4ABCabc!3', CHARSIZE=3
(ΑΒΓαβγ が出力される)!M
と!V
を用いると元のフォントに戻す手間が省ける。xyouts,'1.23!MX10!U45!N', CHARSIZE=3
(1.23×1045 が出力される)!P.CHARTHICK
またはグラフィックスプロシージャのCHARTHICK
キーワードの値を増やす。また、Duplex Roman (Font 5) (文字を二重線で表現する。sans-serif風)などの利用も検討する。EFONT
プロシージャを用いることで、独自のフォント・文字を作成することができる。'Hershey ' + 番号 + フォント名
で Hershey vector fonts を指定することができる。例: p = PLOT(/test, title = 'TITLE', font_name = 'Hershey 8 Complex Italic')
以前は 'Hershey ' + 番号
だけでも動作したが、IDL 8.6.1? 以降はフォント名も含める必要がある。一旦表示した後にフォントを変更する場合は p.TITLE.FONT_NAME = 'Hershey 3'
などのようにフォント名を含めなくても(今のところは)大丈夫。フォント番号 10 (Special) は利用できない。詳細はTrueType fontsを参照。
!P.FONT = 1
または、グラフィックスプロシージャのFONT
キーワードを1にセットすることで利用できる。Function graphics と Object graphicsではデフォルトでTrueType fontsが用いられる。Helvetica
, Helvetica Italic
, Helvetica Bold
, Helvetica Bold Italic
(実際に使われるフォントは Arimo)Times
, Times Italic
, Times Bold
, Times Bold Italic
(実際に使われるフォントは Cousine)Courier
, Courier Italic
, Courier Bold
, Courier Bold Italic
(実際に使われるフォントは Tinos)DejaVuSans
, DejaVuSans Italic
, DejaVuSans Bold
, DejaVuSans Bold Italic
Symbol
(実際に使われるフォントは Tinos Symbol)Monospace Symbol
(実際に使われるフォントは Cousine Symbol)DejaVuSymbol
ENVI Symbols
(IDL/ENVIのロゴや方位記号などが入っている)Helvetica
(コマンド !3
)、Function Graphics では DejaVuSans
(コマンド !10
) である。Save
メソッドで EPS/PDF ファイルを出力する際に TryeType fontsが埋め込まれるようになった。それ以前は Helvetica, Times 等の標準フォントは埋め込まれなかった。DejaVuSans
を使うと、IDL 8.6 以前の約80%のサイズで表示される。($IDL_DIR/resource/fonts/tt/ttfont.map
で定義されるフォントのスケーリングの係数が変更されたため)DejaVuSans
(Regularのみ)が、IDL 8.6 で DejaVuSans
の Italic (Oblique), Bold, Bold Italic (Bold Oblique), DejaVuSymbol
が追加された。Helvetica
, Helvetica Italic
, Helvetica Bold
, Helvetica Bold Italic
(実際に使われるフォントは Swiss 721 BT)Times
, Times Italic
, Times Bold
, Times Bold Italic
(実際に使われるフォントは Dutch 801 BT)Courier
, Courier Italic
, Courier Bold
, Courier Bold Italic
(実際に使われるフォントは Courier 10 Pitch BT)Symbol
(実際に使われるフォントは Symbol Proportional BT)Monospace Symbol
(実際に使われるフォントは Symbol Monospaced BT)ENVI Symbols
(IDL/ENVIのロゴや方位記号などが入っている)DejaVuSans
(IDL 8.2以降), DejaVuSans Italic
, DejaVuSans Bold
, DejaVuSans Bold Italic
, DejaVuSymbol
(IDL 8.6)Helvetica
(コマンド !3
) である。set_plot, 'PS' & SHOWFONT, 'Times', 'Times Roman', /TT_FONT & device, /CLOSE
などとする。開始位置を変更するには OFFSET=開始位置
をつける。device, set_font='Times Italic', /TT_FONT
とする。xyouts,'!8E!7=!8mc!U!72!N!3', CHARSIZE=3
とする。$IDL_DIR/resource/fonts/tt/ttfont.map
を編集すればよい。詳細はTrueType fontsを参照。ttfont.map
の編集なしで簡単に使うことができる。利用可能なフォント名を調べるには、p = plot(/test, title = 'TEST')
などとして適当なFunction Graphicsのウィンドウを開き、テキストの書式設定(Tのアイコン)でフォント一覧を見るとよい。日本語名のフォントの場合は英語名で指定する必要がある。例えば游ゴシックを指定する時はdevice, set_font='Yu Gothic Regular', /TT_FONT
とする。SET_PLOT, 'WIN'
)、Windowsのシステムにインストールされたフォントを TrueType fonts (!P.FONT = 1
)としても Device fonts (!P.FONT = 0
) としても利用できる。両者の比較はDevice Fontsの項目を参照。
xyouts, '!10!Z(2600)', CHARSIZE = 10
などとする (!10
でDejaVuSansに切り替える。!Z(nnnn, nnnn, ...)
でUnicode符号位置を16進数表記で指定する。)。
CHARSIZE
ではなく!D.X_CH_SIZE
および!D.Y_CH_SIZE
)に依存する。このため、文字サイズを拡大するときは、!P.CHARSIZE
またはCHARSIZE
キーワードを用いるよりは、DEVICE
プロシージャのSET_CHARACTER_SIZE
キーワードを用いたほうが良好な結果が得られる。つまり、!P.CHARSIZE = 10 & device, SET_CHARACTER_SIZE = [6, 10]
とするよりは、!P.CHARSIZE = 1 & device, SET_CHARACTER_SIZE = [60, 100]
とするほうがよい。詳細はDevice fontsを参照。
set_plot
で出力先デバイスを切り替えて、!P.FONT = 0
または、グラフィックスプロシージャのFONT
キーワードを0にセットすることで Device fonts を利用できる。set_plot, 'PS'
) では、Device fonts として PostScript Type 1 フォントを利用できる。
PS_SHOW_FONTS
を用いる。set_plot, 'PS' & !P.FONT = 0 & device, /HELVETICA, /NARROW, /OBLIQUE
device, set_font = 'Helvetica-Narrow-Oblique'
などようにPostScript名で指定することもできる。IDLが標準で対応しているPostScriptフォントのPostScript名は $IDL_DIR/resource/fonts/ps/
以下にある Adobe Font Metrics (AFM) ファイルの FontName
の行を参照する。ISOLATIN1=1
と記載されているページの文字)を使うには device, /ISOLATIN1
が必要。set_plot, 'PS' & !P.FONT = 0 & device, /HELVETICA, /ISOLATIN1 & xyouts, 0.5, 0.5, /normal, align = 0.5, STRING(197B) & device, /CLOSE
で Å が出力される。help, /device
の Font Mapping の項目に表示される。!M
は1文字のみSymbolを使うときに便利。ただし、device, /times & xyouts, 0.5, 0.5 ,/normal, align = 0.5, '!10A!M' + string(180b) + 'B', charsize=2
などようにすると、'A' は Courier
(!10
) となるが、'B' は Times-Roman
(device
で指定) となることに注意。set_plot, 'X'
)で利用可能な Device fonts を探すには xlsfonts や xfontsel コマンドを用いる。また、IDL のIDL の xfont()
関数や device, GET_FONTNAMES = FONTLIST, set_font='*'
でフォントを探すこともできる。set_plot, 'WIN'
) は、Device fonts としてシステムで利用可能な多くのフォントを利用できる。
device, GET_FONTNAMES = FONTLIST, set_font='*'
として、配列 FONTLIST
に得られる。日本語名のフォント名のエンコーディングは Shift-JIS となっている。device, SET_FONT='Tahoma*BOLD*ITALIC*24'
のように、フォント名にアスタリスクで区切った修飾子をつける。大小文字は区別されない。修飾子として利用可能なものは、THIN, LIGHT, BOLD, HEAVY, ITALIC, STRIKEOUT, UNDERLINE
と文字サイズを表す数字など。文字サイズは文字の高さをピクセルで表したもの。WindowsのDevice fontsでは charsize
で文字のサイズを変更することはできない。device, SET_FONT=i18n_utf8tomultibyte('游明朝 Regular*24')
SET_PLOT, 'WIN'
)、Windowsのシステムにインストールされたフォントを TrueType fonts (!P.FONT = 1
)としても Device fonts (!P.FONT = 0
) としても利用できる。前者はIDLにより、後者はWindowsによりレンダリングされる。 前者の利点: アンチエイリアスによる中間色やClearTypeによる偽色が出ない。後者の利点: システムにインストールされた拡張子otfのOpenTypeフォントも利用できる、レンダリング品質が高い、高速。set_plot, 'Z'
)では Device fonts は利用できない。!D.FLAGS
のbit 12が1であるかで判別できる。IF (!D.FLAGS AND 4096) NE 0 THEN PRINT, 'Bit is set.'
p = plot(/test, title = 'TEST')
などとして適当なFunction Graphicsのウィンドウを開き、テキストの書式設定(Tのアイコン)でフォント一覧を見るとよい。i18n_utf8tomultibyte
(UTF-8文字列をShift-JISに変換) かi18n_widechartomultibyte
(UTF-16文字列をShift-JISに変換)関数を用いて文字列をShift-JISに変換する必要がある。!p.font = 1 & device, set_font = 'Yu Mincho', /TT_FONT & xyouts, 0, 0, '日本語', CHARSIZE = 5
!p.font = 0 & device, set_font = '游明朝 Regular*60' & xyouts, 0, 0, '日本語'
w = WIDGET_BASE(xsize = 300, ysize = 30, TITLE = '日本語') & l = WIDGET_LABEL(w, value = '日本語', font = 'Yu Mincho') & WIDGET_CONTROL, /REALIZE, w
p = plot(/test, title = '日本語', font_name = 'Yu Gothic Regular')
!p.font = 1 & device, set_font = 'Yu Mincho', /TT_FONT & xyouts, 0, 0, i18n_utf8tomultibyte('日本語'), CHARSIZE = 5
!p.font = 0 & device, set_font = i18n_utf8tomultibyte('游明朝 Regular*60') & xyouts, 0, 0, i18n_utf8tomultibyte('日本語')
w = WIDGET_BASE(xsize = 300, ysize = 30, TITLE = i18n_utf8tomultibyte('日本語')) & l = WIDGET_LABEL(w, value = i18n_utf8tomultibyte('日本語'), font = 'Yu Mincho') & WIDGET_CONTROL, /REALIZE, w
p = plot(/test, title = '日本語', font_name = 'Yu Gothic Regular') ; Function Graphics は UTF-8 対応
$IDL_DIR/resource/fonts/tt/ttfont.map
に登録することで日本語表示可能。i18n_utf8tomultibyte
等の変換関数も存在しないので、!Z
でUnicode符号位置を直接指定する必要がある。例: xyouts, '!Z(65e5, 672c, 8a9e)', CHARSIZE = 5
!Z
で使えるUnicode符号位置の16進数表記を得るには、例えばシェルで echo -n 日本語 | iconv -t UCS-2 | xxd -p | fold -w4
とする。出力は 65e5 672c 8a9e
。絵文字などU+10000 以降(追加面)の文字の場合、echo -n 😀 | iconv -t UCS-4 | xxd -p | fold -w8
とする。p = plot(/test, title='$\alpha = 2 \times 10^4 M_\odot$')
p = plot(/test, title='!10!Z(1D601, 1D602, 1D603, 1D604, 1D605)')