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)DejaVuSymbolENVI 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, /OBLIQUEdevice, 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, wp = 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, wp = 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)')