小编今天来分享一下SAS输出RTF如何实现字体自由。本文将主要介绍SAS输出RTF实现“中文宋体,英文Times New Roman”的实现方法。在此之前,先来分享一下“宋体”设置失效的解决方案。
设置“宋体”失效
在Style中字体设置为“宋体”,但最终输出的结果字体却是“等线”,针对这种问题其实也很好解决,我们可以将“宋体”替换成“simsun”。
Proc Template中设置Style
中文“宋体”,英文“新罗马”
关于如何实现字体自由,下面我将以如何实现“中文宋体,英文新罗马”为例进行介绍。在网上不乏看到许多这样的提问,但往往是没有结果或是无法实现的。小编实现的思路主要分为3个步骤(【自定义字体】-【安装导入字体】-【设置字体及输出】),其实有了思路后,实现起来真的很简单。
自定义字体
作为一个程序员,逻辑思维是很重要的。既然现有字体不能满足我们的需求,其实我们可以自己来定义或者创建我们所需要的字体。网上可以找到一些免费的字体编辑器,可以用来创作字体。小编在现有宋体字体的基础上将字母/数字/符号替换成了新罗马字体,于是自定义的字体就产生了,小编将其命名为"宋体(Times New Roman)"。
字体编辑器
安装/导入字体
将自定义字体安装在电脑上(大概是小编此处自定义字体的本质是“宋体”与“Times New Roman”的组合,即使别人电脑上没有安装自定义字体也是可以正常显示的),然后将其导入到SAS中。
安装字体
双击打开字体,点击安装即可
导入SAS
代码语言:javascript复制/*将字体写入SAS注册表中,fontpath 填写字体所在路径*/
proc fontreg mode=all ;
fontpath 'E:日常编程SAS宏程序发开字体设置字体';
run;
设置输出
最后其实就是Proc template设置与ODS输出就可以了。
代码语言:javascript复制proc template;
define style tp_rtf;
parent = styles.rtf;
replace fonts /
"TitleFont2" = ("宋体(Times New Roman)",9pt)
"TitleFont" = ("宋体(Times New Roman)",9pt)
"StrongFont" = ("宋体(Times New Roman)",9pt,Bold)
"EmphasisFont" = ("宋体(Times New Roman)",9pt,Italic)
"FixedEmphasisFont" = ("宋体(Times New Roman)",9pt,Italic)
"FixedStrongFont" = ("宋体(Times New Roman)",9pt)
"FixedHeadingFont" = ("宋体(Times New Roman)",10pt)
"BatchFixedFont" = ("宋体(Times New Roman)",10pt)
"FixedFont" = ("宋体(Times New Roman)",9pt)
"headingEmphasisFont" = ("宋体(Times New Roman)",10pt,Bold Italic)
"headingFont" = ("宋体(Times New Roman)",10pt,Bold)
"docFont" = ("宋体(Times New Roman)",9pt);
replace Header from HeadersandFooters / font = ("宋体(Times New Roman)", 9pt, medium)
background = _undef_
protectspecialchars = off;
replace table from output / font = ("宋体(Times New Roman)", 9pt, medium)
background = _undef_
frame = void
rules = none
cellspacing = 0.5pt
cellpadding = 1pt
outputwidth = 100%;;
replace cell from output /
font = ("宋体(Times New Roman)", 9pt, medium) ;
*定义表头;
style header /
backgroundcolor=white
color=black
fontweight=bold;
*定义文件的布局;
style body from document /
bottommargin = 15mm
topmargin = 15mm
rightmargin = 15mm
leftmargin = 15 mm;
end;
run;
结果展示
双结果展示
总结
相信看完前文,实现字体自由已经是一件非常简单的事情了。