FontCreator14 中文使用手册

  1. 首页
  2. FontCreator14 中文使用手册
  3. OpenType布局功能
  4. Script Editor代码编辑
  5. OTLFD脚本语法
  6. Pos关键字

Pos关键字

关键字 pos 用于声明字形定位(positioning)。正如所支持的字形定位类型中所述,有几种定位类型。定位声明只能在查询(lookup)中声明,不能直接在特征(feature)中声明定位。每个查询只能有一种定位类型,这意味着如果您想在单个特征中使用多种定位类型,就必须声明多个查询。

对于大多数定位声明,可以定义几个坐标来确定字形的定位变化。每个声明由一到四个坐标组成。

坐标的格式是(包括尖括号):

<X预置宽度 Y预置高度 X横向位移 Y纵向位移>

X预置宽度(XAdvance)必须始终指定,Y预置高度(YAdvance)、X横向位移(XPlacement) 和 Y纵向位移(YPlacement)是可选项。

XAdvance预置宽度的水平调整量
YAdvance预置高度的垂直调整量
XPlacement放置位置的水平调整量
YPlacement放置位置的垂直调整量

声明单个调整(类型 1)定位

单个定位用于更改单个字形或字形类组的位置,可用来轻松创建使用相同字形特征的下标和上标。

lookup MyLookupTable {
 pos A <-20 [0 0 0]>;
}

对于类组,其语法非常相似:

class @class1 [A-Z]

lookup MyLookupTable {
 pos @class1 <-20>
}

声明配对调整(类型 2)定位

配对定位用于改变 2 个字形或字形类组的位置,主要用于定义字距调整对子。

lookup MyLookupTable {
 pos A B <-10 [0 0 0]> [<0 [0]>];
}

对于类组,其语法非常相似:

class @class1 [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]

class @class2 [a b c d e f g h i j k l m n o p q r s t u v w x y z]

lookup MyLookupTable {
 pos @class1 @class2 <-20>
}

上面只用一行代码创建了676个(26×26)、值为-20的字距调整对子。

也可以将一个类组与单个字形进行组合:

class @class1 [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]

lookup MyLookupTable {
 pos @class1 hyphen <-10>
}

上面只用一行代码创建了值为-10、 大写字母与连字符(hyphen)组合的26个字距调整对子。

强制单个调整(类型 1)定位

假如要声明基于类组的字距调整对子,但在导出字体时,需要导出为基于字形的展平式(flattened)字距调整对子,请添加 PairPosFormat1 选项。

lookup MyLookupTable {

 option PairPosFormat1;
 pos @class1 hyphen <-10>
}

声明标记到基本(类型 4)的定位

标记到基本(Mark-to-Base)定位,用于通过锚点将标记字形(变音符号)附接(attach)到基本字形上。

lookup MyLookupTable {
 mark acute 0 0;

 mark ring 0 0;

 pos A mark  -10 30;

 pos B mark -10 20;

 mark esp 0 0;

 pos A mark -10 20;
}

声明标记到标记(类型 6)的定位

标记到标记(Mark-to-Mark)的定位,用来将标记字形附接到其他标记字形上。

其语法与标记到基本的定位相同,但仅用于标记字形。

声明链式上下文(类型 8)的定位

此语法与 GSUB 语法相同。唯一的区别是,替换表是 GPOS 查询而不是 GSUB 查询。

Was this article helpful to you? Yes No

How can we help?