YAMAHAgb1的个人博客分享 http://blog.sciencenet.cn/u/YAMAHAgb1

博文

IDL画图符号和字体修改等(待更新)

已有 17550 次阅读 2016-6-3 20:07 |系统分类:科研笔记| 特殊符号

博主主要把科学网博客当作记笔记的地方,所以如果有小伙伴们有问题要找我,请联系我的邮箱,kxguo@pku.edu.cn 以及pmoguo@gmail.com(长期有效)

(博主最近出了点bug,可能不会及时回复,请见谅)


起因是像博主这么懒的人基本有熟悉的包就会用到死, 所以IDL画图里遇到特殊符号基本都用textoidl搞定。然而仍然遇到了一些问题,比如xyouts “小于等于”用textoidl('leq')输出是这个样子……在以下三个reference的帮助下,初步解决了问题。

http://www.idlcoyote.com/ps_tips/greeksym.php

http://www.physics.emory.edu/faculty/weeks//lab/papers/idlfonts.pdf

https://idlangstrom.wordpress.com/2011/03/31/angstrom-character-and-other-astronomical-stuff-for-idl/

为了了解这个问题的原因,我们直接print以下textoidl('leq'),发现输出的字符串是!Ml!X,这其实是IDL字体库中的矢量字体font !9下的符号,也就是说xyouts, posx, posy, '!Ml!X'和xyouts, posx, posy, '!9+string("154B)+!X'的效果都和xyouts, posx, posy, textoidl('leq')是一样的。而“154B,其实指的就是在"!9"对应的字体库中014X行14列的符号,这里154=14+14*10(即x)。


那么既然矢量字体中的数学符号如此奇葩,该怎么办呢。巧的是,coyote在他的例子中给出了


而他的例子是想输出mu (14x+15)这个符号,方法是


coyote几乎把所有能画图的都优化了一遍,这一直令懒癌晚期的博主头疼不已,所以看到cg开头的程序总是过滤为idl自带程序。于是从上面的code看来,使用这个"Font Symbol"似乎可以直接代入到xyouts, posx, posy, greekletter上去了。然而,他这里采用的居然也是"!9"!字体却和!9矢量字体表完全不同!这其实是因为:


注意右边三列的区别。textoidl('leq')用的是Vector Font, 而coyote画mu用的则是TrueType Font。到此,问题可以得到解决了。博主输出的方法是:


在ps图中的效果为:


以上



https://blog.sciencenet.cn/blog-773206-982273.html

上一篇:科研上的注意事项
下一篇:安装R-package XML遇到的问题和解决方式
收藏 IP: 58.108.21.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-21 02:05

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部