FontLab - 用于将数字更改为罗马表示法的OpenType功能

时间:2017-03-20 14:08:18

标签: opentype

我想在我的字体中使用opentype功能,我在FontLab中创建,将所有数字转换为罗马符号。这是我使用的OpeType功能代码:

feature liga{
  sub @arabic by @roman1;
  sub @roman1' @roman1 by @roman2;
  sub @roman2' @roman2 by @roman3;
  sub @roman3' @roman3 by @roman4;
} liga;

课程' arabic'和' roman1-4' all包含0到9之间的数字,其中roman1包含:[空符号],I,II ... IX,roman2:[空smbol],X,XX ...... XC等。

最多99个数字正在按预期工作,但是100个以上只有roman2字形正在重复,所以111是CXI'我得到了XXI'。我不确定opentype功能的正确语法应该是什么样的,以及问题究竟在哪里。

1 个答案:

答案 0 :(得分:1)

所以我已经解决了我的问题。它之所以不起作用,是因为所有的规则都只是在一个单词中作为一个规则运行而不是一个接一个地贯穿整个单词。这是正确的解决方案:

feature liga{
   lookup rOne {
      sub @arabic by @roman1;
   } rOne;
   lookup rTwo {
      sub @roman1' @roman1 by @roman2;
   } rTwo;
   lookup rThree {
      sub @roman2' @roman2 by @roman3;
   } rThree;
   lookup rFour {
      sub @roman3' @roman3 by @roman4;
   } rFour;
} liga;

P.S。:为了澄清,此代码适用于FontLab的OpenType功能编码