• R语言
  • 迎接R版第3000帖及PDF中文字体解决方案探讨

所谓的字体的英文名字,应该就是实际的文件名。

x = list.files(file.path(Sys.getenv('SystemRoot'), 'Fonts'))<br />
grep('\\.ttf$', x, ignore.case=TRUE, value=TRUE)<br />
# 结果<br />
#  [1] "AGENCYB.TTF"                        "AGENCYR.TTF"                        "ALGER.TTF"<br />
#  [4] "AndaleMo.TTF"                       "ANTQUAB.TTF"                        "ANTQUABI.TTF"<br />
# ....<br />
# [343] "WINGDNG2.TTF"                       "WINGDNG3.TTF"                       "ZWAdobeF.TTF"<br />
# [346] "文鼎中隶简.TTF"   </p>
<p>## 去掉.ttf就可以了<br />
fontList = sub("\\.ttf", "", grep("\\.ttf$", x, ignore.case = TRUE,<br />
    value = TRUE), ignore.case = TRUE)<br />
## 用系统中所有的字体画图<br />
library(Cairo)<br />
n = length(fontList)<br />
CairoPDF(width = 3, height = 3*n)<br />
par(mar = rep(0, 4))<br />
plot(0, xlim = c(0, 2), ylim = c(1, n))<br />
for (i in 1:n) {<br />
    text(1, i, paste(fontList[i], "字体"), family = fontList[i])<br />
}<br />
dev.off()<br />
## 见附件<br />
</p>

回复 第8楼 的 谢益辉:奇怪,我原本也是这么以为的,但实际试的时候发现有些地方不对,比如楷体,它的文件名是simkai,但打出来还是宋体,只有把它改成KaiTi_GB2312才行。当然有些字体的文件名可能碰巧和它的“英文名”相同,比如宋体和黑体,所以它们可以正确显示。

字体的英文名字应该是在'Properties'中'Details'中的'Title'

例如'方正准圆_GBK.ttf'的名字应该是'FZZhunYuan-M02'

[attachment=203513,174]

回复 第9楼 的 Ihavenothing:哦,那这就麻烦了,还得按楼上所说的看字体的属性……

1 年 后

Win下有人写了个小工具叫ttfname 可以看非常详细的字体信息

前一阵用到一个华文黑体 ttf里好像是有中日台韩四种字符 属于比较bt的情况 怎么也猜不对要调用字体名

在ttfname生成的XML中 查看 <- UniqueIdentifier -> 部分

得到的字体名为 STHeiti-SC-Regular XeTeX直接通过

但是在Linux下 CairoPDF不给力了 。。。只能 pdf(family = 'GB1') 。。。 字体是非嵌入的 。。。求自定义 。。。求嵌入 。。。

回复 第12楼 的 nan.xiao:猜我是怎么找字体名的?我在Ubuntu的LyX中点文档设置,其中字体有菜单可以点(当然,选上用XeTeX的选项),选完自己之后看LaTeX源代码,就知道字体名是什么了。

这让我想起《地海传说》中的“真名”,真名是不能告诉别人的,否则就会被别人控制了。

回复 第13楼 的 谢益辉:fc-list就行了,一般而言有:

[data]

Droid Sans Fallback:style=Regular

微软雅黑,Microsoft

YaHei:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaa

li,Normál,Normale

,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta

Adobe 楷体 Std,Adobe Kaiti Std,Adobe Kaiti Std R,Adobe 楷体 Std

R:style=R,Regular

方正静蕾简体,FZJingLeiS\-R\-GB:style=Regular

文鼎PL简报宋,AR PL SungtiL GB:style=Regular

Efont Fixed Wide:style=Italic

Efont Biwidth:style=Bold Italic

Efont Fixed Wide:style=Bold Italic

Misc Fixed Wide:style=ko

Misc Fixed Wide:style=ja

文泉驿正黑,文泉驛正黑,WenQuanYi Zen Hei:style=Regular

Efont Biwidth:style=Italic

Adobe 黑体 Std,Adobe Heiti Std,Adobe Heiti Std R,Adobe 黑体 Std

R:style=R,Regular

文鼎PL中楷Uni,AR PL ZenKai Uni:style=Medium

Efont Fixed Wide:style=Regular

Efont Biwidth:style=Regular

微软雅黑,Microsoft

YaHei:style=Negreta,tučné,fed,Fett,Έντονα,Bold,Negrita,Lihavoi

tu,Gras,Félkövé

r,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın

,Krepko,Lodia

Efont Fixed Wide:style=Bold

文鼎PL细上海宋Uni,文鼎PL細上海宋Uni,AR PL ShanHeiSun Uni:style=Regular

Adobe 宋体 Std,Adobe Song Std,Adobe Song Std L,Adobe 宋体 Std

L:style=L,Regular

文鼎PL简中楷,AR PL KaitiM GB:style=Regular

文泉驿等宽正黑,文泉驛等寬正黑,WenQuanYi Zen Hei Mono:style=Regular

Efont Biwidth:style=Bold

Adobe 仿宋 Std,Adobe Fangsong Std,Adobe Fangsong Std R,Adobe 仿宋 Std

R:style=R,Regular

文泉驿点阵正黑,文泉驛點陣正黑,WenQuanYi Zen Hei Sharp:style=Regular

[/data]

回复 第14楼 的 enthumelon:Yifan V5!

回复 第13楼 的 谢益辉:呃 。。。 Texmaker临时用户表示无鸭梨 。。。[s:11]

回复 第14楼 的 enthumelon:报告Yifan大人 这个是非常情况 。。。

比如

<br />
fc-list >> fts<br />
</p>

fts中的字体信息:

<br />
...<br />
华文黑体\-中,華文黑體\-中,STHeiti\-SC,華文黒体\-中:style=Regular<br />
华文黑体\-日,華文黑體\-日,STHeiti\-J,華文黒体\-日:style=Regular<br />
华文黑体\-韩,華文黑體\-韓,STHeiti\-K,華文黒体\-韓:style=regular<br />
华文黑体\-台,華文黑體\-臺,STHeiti\-TC,華文黒体\-台:style=Regular<br />
...<br />
</p>

去设置一下调用系统字体的命令 比如

<br />
\setCJKmainfont[BoldFont={...}, ItalicFont={...}]{...}<br />
</p>

我是怎么都没办法让这个 ... 接受含有反斜杠的字体名, 带空格的倒是可以.

而STHeiti-SC-Regular是一个正确答案.

将ttfname放上来 非常可惜 Windows only:

http://u.115.com/file/dnhqvk28

猜想FontForge一类的工具也可以看得到

1 年 后

legend中无family选项,导致无法使用中文字体,怎么办啊?

6 个月 后
5 个月 后