当前位置:操作系统 > Unix/Linux >>

Fontconfig用户手册

原文:http://www.fontconfig.org/fontconfig-user.html

  作者:Keith Packard , HP Cambridge Research Lab

  翻译:Conner Mo (connermo@hotmail.com) 中国Linux公社 (www.linuxfans.org )

  Fonts-conf

  名称

  fonts.conf - 字体配置文件

  文件纲要

  /etc/fonts/fonts.conf

  /etc/fonts/fonts.dtd

  ~/.fonts.conf

  描述

  fontconfig 是提供系统范围内字体设置,定制和允许应用程序访问的函数库。

  功能概述

  fontconfig 包含两个基本的模块,即读取XML文件并建立内部配置的配置模块和接受请求的字体样板并返回最接近所需字体的匹配模块。

  字体设置

  fontconfig的配置模块由FcConfig 数据类型,libexpat和FcConfigParse 组成。它扫描一个XML树并将其中的数据处理成一个配置文件。从外部来看,函数库的配置就是生成一个有效的XML树并将其填充到FcConfigParse里。应用程序改变运行中的函数库配置的唯一途径就是添加字体和目录到用户的字体文件列表中。

  这样做的目的就是让字体的配置变得相对静态,并且可以尽可能多地让其他应用程序共享。这种做法预计可以在应用程序相互传递字体名称的时候获得相对稳定的字体选择。XML被选为配置文件的标准格式是因为它是一个既便于外部程序编辑又可以保留正确结构和语法的格式。

  字体的配置和字体的是分开的。需要采取自身特定匹配方式的应用程序可以从库中访问已有的字体并执行独立的匹配操作。这样做是为了让应用程序可以从字体库中挑选并选定合适的库功能,而不是易做图他们选择这个库或者私有的设置机制。这种做法预计可以让所有应用程序的字体配置可以集中在一处。集中的字体配置可以标准化和简化字体安装和定制。

  字体属性

  虽然字体样板可能包含任意基本属性,但还是有一些众所周知的属性及其附带的类型。Fontconfig利用这些属性来匹配和完成字体配置。其他属性则被用来为应用程序的渲染机制提供方便。

  属性

  类型

  描述

  family

  String

  字体家族名称 (宋体,仿宋体等)

  style

  String

  字体风格,包括粗度(weight)和倾斜度(slant)。

  slant

  Int

  倾斜度,分为Italic(斜体), oblique(倾斜罗马体)或者roman(罗马体)

  weight

  Int

  Light (微粗),medium(稍粗),demibold(略粗),bold(粗)或者black(黑体)

  size

  Double

  尺寸大小

  aspect

  Double

  在微调(hinting)前水平拉伸字体

  pixelsize

  Double

  像素大小

  spacing

  Int

  间距,Proportial (可变),monospace (等宽) 或者charcell (字符单元)

  foundry

  String

  字体厂商名称

  antialias

  Bool

  字体渲染是否采用抗锯齿功能

  hinting

  Bool

  渲染引擎是否采用微调

  verticallayout

  Bool

  采用竖直排版

  autohint

  Bool

  采用自动微调代替普通微调

  globaladvance

  Bool

  使用字体全局间距数据

  file

  String

  存储字体的文件名称

  index

  Int

  字体文件内的字体索引

  ftface

  FT_Face

  使用指定的Freetype格式对象

  rasterizer

  String

  正在使用的渲染引擎

  outline

  Bool

  字型是否中空

  scalable

  Bool

  字型是否可以放缩

  scale

  Double

  尺寸->像素的放缩比例

  dpi

  Double

  目标点数/英寸

  rgba

  Int

  unkonw, rgb, brg, vrgb, vbgr, none -子像素的几何排列

  minspace

  Bool

  是否采用最小行间距

  charset

  CharSet

  字体的编码

  lang

  String

  字体支持的RFC-3066-style 语言列表。

  字体匹配

  Fontconfig用计算输入的字体样板和现有系统中字体的距离来实现字体匹配。最接近的字体将被选择。这样可以保证任何时候都能够返回一个字体,但不能保证它和所需要的样板类似。

  字体的匹配是从应用程序所创建的样板开始的。请求字体的所有属性会被搜集到一个样板里。每个属性可以包含一个或多个值。它们按照优先等级排列。匹配列表前的被认为是比符和列表后的更加接近所需属性。

  最初的字体样板会按照配置文件中的编辑指令按顺序修改。每个修改的过程包括匹配和其它一系列的编辑操作,并且每个匹配的过程都会执行相应的编辑操作。

  当字体样板编辑修改完后,将会执行一系列默认的替换操作,从而标准化已有的一套属性。这样可以避免较低层程序在渲染的时候为不同的字体属性提供一成不变的默认值。

  标准化后的字体样板最后将和系统所有拥有的字体进行匹配。样板和字体的距离是用它的每个属性,厂商,编码,家族,语言,间距,像素大小,风格,斜度,粗度,防锯齿,渲染引擎和中空测量出来的。这个列表是按照优先级排序的,排在前面的元素比后面的元素占的比重大。

  这个规则中有一个特殊的例子:家族的名称分成两个部分,strong(强)和weak (弱)。强家族名称在匹配中比语言元素优先级要高,而弱家族名称在匹配中比语言元素的优先级别要低。这样允许在文档指定字体都不存在的时候,文档的语言属性可以指导字体的选择。

  代表所属字体的样板会包含所有在那个样板找到的属性,而不只是在字体中找到的。这允许应用程序通过匹配系统传送渲染指令和其它数据。最后,在配置文件中找到字体的编辑指令列表将被应用到样板。修改过的样板会返回给应用程序。

  返回的值包括充足的字体定位和渲染信息,包括文件名,像素大小和其他渲染数据。因为没有任何包含的信息属于Freetype库,引用程序可以自由选择渲染引擎,甚至直接获取和访问字体文件。

  在编辑文件中,匹配和编辑的序列是按照两步执行的,因为需要有两个不同操作。第一步是修改如何选取字体,为字体家族取别名和添加合适的默认值。第二步是修改如何渲染已选择的字体。这些步骤必须应用在已选择的字体上,而不是原有的字体样板,因为经常会发生错误的匹配。

  字体名称

  Fontconfig 为样板提供一个可以让函数库接受和产生的文本表达。表达有三个部分,第一个是字体家族名称列表,第二个是尺寸大小列表,最后是附加属性列表:

  <families>-<point sizes>:<name1>=<values1>:<name2>=<values2>...

  <家族名称>-<尺寸大小>:<名称1>=<赋值1>:<名称2>=<赋值2>...

  在列表中的赋值用逗号分开。名称不需要包含家族或者尺寸大小,它们可以省略。另外,还有一些字符常量可以同时说明名称和赋值。这里有一些例子:

  名称

  含义

  Times-12

  尺寸12的Times Roman

  Times-12:bold

  尺寸12的Times粗体

  Courier:italic

  Courier默认尺寸的斜体

  Monospace:matrix=1 .1 0 1

  用户首选的采用人工斜体的等宽字体

  语言标记

  每种在数据库中的字体包括一个它所支持的语言列表。这是用比较字体的unicode范围和语言的正词法(orthography)计算出来的。语言使用一个兼容RFC-3066的命名标准并且具有两个部分——ISO693语言标记跟一个连字符,然后是ISO3166国家代码。连字符和国家代码可以省略。

  Fontconfig在函数库中有几种语言的正词法。除了重新编译函数库外,还没有其他途径添加新的正词法。Fontconfig现在支持ISO639-1中命名的139种语言的122种,ISO 639-2的141种有双字符编码的语言和另外30种三字符编码的语言。

  配置文件的格式

  Fontconfig的配置文件的存储格式为XML格式。这种格式可以让延伸的配置工具更加方便的编写并且可以保证他们可以生成语法结构正确的文件。由于XML文件是纯文本文件,专家用户可以用文本编辑器处理它们。

  Fontconfig 文件类型定义在延伸的实体“fonts.dtd”中,通常存储在默认的字体设置目录(/etc/fonts)。每个配置文件必须包括下列的结构:

  <?xml version="1.0"?>

  <!DOCTYPE fontconfig SYSTEM "fonts.dtd">

  <fontconfig>

  ...

  </fontconfig>
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,