LatexFont

From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community

Jump to: navigation, search

关于 LatexFont 的恩恩怨怨就不想再说了,用 lyfont 脚本能给系统装上 Type1 类型的字体,使用内建 TrueType 字体需要增加一个 cid-x.map 的文件。以下说明摘自 LinuxSir分享

cid-x.map文件的格式如下:

TFMNAME[@SFDNAME@] ENCNAME [:INDEX:][!]FONTNAME[/CSI][,VARIANT] [OPTIONS]

1) TFMNAME[@SFDNAME@]:TFMNAME指的是去掉.tfm文件扩展名的字串,可以看一下~/texmf的目录结构, ~/texmf/fonts/tfm/local/就是我们生成的tfm文件,该目录下的子目录是字体名称,字体目录下(如 ~/texmf/fonts/tfm/local/song就是我机器tetex的宋体--由SimSun字体生成)的文件即tfm文件,可以看到其中有 songXX.tfm和songslXX.tfm两类文件,其中songslXX.tfm是支持斜体的文件;SFDNAME其实就是subfont喽,使用UTF-8编码当然就是Unicode了,sfd文件即latex-unicode-font-utils中的Unicode.sfd,采用GBK编码的话可使用UGBK.sfd。

2) ENCNAME:也就是CMap资源名字,如果采用GBK编码就要用到UniGB-UCS2-H、UniGB-UCS2-V、UniGB-UTF16- H、UniGB-UTF16-V、Adobe-GB1-UCS2这几个CMap资源文件,它们用于进行编码转换,这些文件可从acroread的资源目录里找到。当我们采用unicode编码的时候也就不需要进行编码转换了,该字段即为unicode。

3) [:INDEX:][!]FONTNAME[/CSI][,VARIANT]:字体名称不用说了,就是ttf文件去掉扩展名的字串如simsun。 INDEX主要用于不止一种字体的TrueType(如simsun.ttf就包括宋体和新宋体),用于指定字体序号。!指定了要不要内嵌字体,如果你想减小pdf文档的大小可以不嵌入字体,不过我相信你不能保证使用你pdf机器的用户机器上有你指定的字体。如果在ENCNAME中指定了CMap资源需要进行编码转换的时候TrueType字体就需要/CSI选项了。VARIANT指的是格式变量(Bold, Italic, BoldItalic)。

4) [OPTIONS]:对于内嵌TrueType字体我们可使用-s .167来达到斜体效果。

下面是我机器上的cid-x.map部分配置:
song@Unicode@ unicode simsun
songsl@Unicode@ unicode simsun -s .167

hei@Unicode@ unicode simhei
heisl@Unicode@ unicode simhei -s .167

再参照最近炒得很火热的 dvipdfmx 最新的 STEMV 设定 fix ,还要在 -s 后面增加 -v 10 才能让 simsun 看起来和别的字体深浅一致。真是太猛了!

Personal tools