[IDL下的字体分为三种,可以根据系统变量!P.Font的值进行判断。值为-1代表矢量字体(也可称为Hershey字体),值为0代表设备字体或系统字体和1代表TureType轮廓字体。
1 矢量字体
矢量字体是直接图形法下的缺省字体,它们有不依赖于平台的优点且极易在三维空间旋转。IDL系统中有下面这些类型的矢量字体。
可查看系统帮助链接
http://127.0.0.1:57564/help/topic/com.rsi.idl.doc.core/Hershey_Vector_Font_Samples.html?resultof=%22%66%6f%6e%74%22%20
在缺省值情况下,直接图形使用的是矢量字体,即AXIS, CONTOUR, PLOT, SHADE_SURF, SURFACE, XYOUTS.等功能函数中如设置关键词font为-1,则使用的字体为矢量字体。
字体选择可通过字符串前添加”!index”来进行,其中index为字体的索引,取值范围3~20,文字大小可通过关键字charsize进行控制。
IDL> XYOUTS,.1, .1, '!3Hershey Font ' , /NORM, CHARSIZE=4
IDL> XYOUTS,.1, .4, '!4Hershey Font ' , /NORM, CHARSIZE=4
IDL> XYOUTS,.1, .7, '!5Hershey Font ' , /NORM, CHARSIZE=4
2 设备字体
设备字体(也称为系统字体)通过设置!P.Font系统变量或 Font关键字为0来加以选择。
如在AXIS, CONTOUR, PLOT, SHADE_SURF, SURFACE, XYOUTS.等中进行系统字体的显示时,需要采用这种方式。系统字体的获得可以通过Device函数来获得,获得系统字体个数及系统字体名字的方法如下:
IDL> Device,Set_Font='*',Get_FontNum = deviceFontsNum
IDL> print,deviceFontsNum
223
IDL> Device,Set_Font='*',Get_FontNames = DeviceFonts
IDL> help,DeviceFonts
DEVICEFONTS STRING = Array[223]
如显示输出汉字的方法;
IDL> Window,1,xsize = 400,ySize =300
IDL> x=FINDGEN(100)
IDL> y=x^2
IDL> DEVICE,Set_Font ='隶书'
IDL>;设置自定义字体模式
IDL>!p.font = 0
IDL> PLOT, x, y, TITLE='回归分析'
IDL>;设置字体
IDL> DEVICE,Set_Font ='宋体'
IDL> PLOT,x,y ,title ='回归分析'
3 TrueType字体
该字体也称为轮廓字体,这个字体由一系列的外形轮廓描述的,这些轮廓通过创建一系列的多边形来填充。IDL有四种TrueType字体家族系列:Times、Helvetica、Courier和Symbol。TrueType字体渲染需要花更长的时间,因为这种字体首先必须刻绘出来,然后创建相应的填充多边形,最后填充。TrueType字体是IDL对象图形系统的一种缺省字体。
添加自定义TrueType字体的方法,将字体ttf文件拷贝到IDL安装目录的/resource/fonts/tt下,然后修改ttfont.map文件(ASCII码文本),在最后一行添加"beijing2008" Olympic_Beijing_Pictos.ttf 1.0 1.0,其中Fontname-“beijing2008”是使用该字体时的标示符,Filename-“Olympic_Beijing_Pictos.ttf”是拷贝的字体文件名, 调用的方法见例子下面例子。
pro test_ttfont
;
device, set_font ='beijing2008',/tt_font
;
!p.font =1
window,2,xsize = 1200,ysize =260
xyouts,0,0,'012abc',charsize =20,/device
end
IDL字体
最新推荐文章于 2021-03-23 18:28:41 发布