zoukankan      html  css  js  c++  java
  • 宋体 与 粗宋体

    这几日在学习ConTeXt,拜读了 LiYanrui 同学的若干文章之后,开始想着尝试点东西。

    因为以前一直用MS Word,所以想尝试把一些文档从Word转到ConTeXt,遇到的第一件事情就是字体。虽然可以直接用LiYanrui的zhfonts模块,但是Word里有一些样式,比如标题设置为黑体初号,宋体加粗什么的,还是需要一个像 \hei \bfsong这样的命令,zhfonts貌似并没有直接提供这样的命令,因为他站在一个更高的层次来看问题^_^。

    想到这里我觉得应该有这么一个宏  \ziti[黑体][小初],第一个参数是Word中的字体,第二个参数是Word中的字号,这样可以使人快速从Word转到ConTeXt。为了达到这目的,应编写一个程序自动读Windows中的所有字体,生成一个tex文件,使得\ziti[][]可以用到Word中的所有字体设置。

    查了一些资料,就在我准备动手编程时,我发现一个问题,Windows的字体目录中的宋体 C:\Windows\Fonts\simsun.ttc,是Regular的,而且没有发现其他宋体的粗体类型,再看zhfonts中的设置,bold型字体被设置黑体,我也记得LiYanrui在博客上说字体加粗就变另一个字体了,但是Word为什么能做到呢? google之,发现Word的粗宋体是假的(参见http://lists.fedoraproject.org/pipermail/chinese/2011-January/005028.html),是通过软件插值出来的,ctex上的一些帖子也说了这样插值出来的字体可能会有毛刺,不光滑,如果需要真的宋体,可以下载一些收费的字体,如华文粗宋。原来是这样!被Word骗了这么久!

    上面的发现,让我放弃了为Word编写那个\ziti宏的想法,还是按照LiYanrui同学的博客自己动手吧~,不过查了一些关键的信息,记在下面,以便其他同志有同样想法,或者我以后又想了~

    Windows字体名 -> 字体文件

    所有Windows中安装的字体都在C:\Windows\Fonts中,这个安装字体的信息,也被映射到注册表中:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts,程序员可以在这里找到Word中的字体名对应的字体文件名

    顺便提一句,在Windows下不需要为ConTeXt设置OSFONTDIR环境变量,参见luatools.lua文件,里面直接给定了C:\Windows\Fonts

    字体文件 -> ConTeXt字体名

    Word里的字体名是有中文的,但是 mtxrun --script fonts --list pattern=* --all (参见LiYanrui的博客)列表出来的字体名字里是没有中文名的。所有我们还需要从ttf或ttc里读出实际的字体名。ttf/ttc的格式也比较复杂,codeproject上有现成的代码,参见 How to Use a Font Without Installing it ,这位大哥提供了一个TTF和TTC的类,还提供了示例代码,很好使!

    另外,猜测了下,ConTeXt最后生成的字体名,是实际字体名中去掉非字母,并全部整成小写的结果。

  • 相关阅读:
    网易数帆实时数据湖 Arctic 的探索和实践
    私有化场景下大规模云原生应用的交付实践
    Apache Kyuubi 在 T3 出行的深度实践
    Win7 32位原版镜像无法安装VMware Tools
    VB.NET代码转C#的方法
    ArcGIS Pro导入OSGB倾斜摄影数据
    基于倾斜摄影测量的三维建模实验
    解决QTTabBar标签不能置顶的问题
    GIS中图斑椭球面积的计算
    ISaveAs导出栅格显示异常
  • 原文地址:https://www.cnblogs.com/windtail/p/2623182.html
Copyright © 2011-2022 走看看