<font face="verdana,sans-serif">Thanks, Adam! I didn't think of ttx for this, but as I use that tool all the time I am happy to use it for this purpose, now that I know how.</font><div><font face="verdana, sans-serif"><br>
</font></div><div><font face="verdana, sans-serif">Khaled: Good to know that FontForge can handle it as well.<br></font><div><font face="verdana,sans-serif"><br></font></div><div><font face="verdana,sans-serif">Cheers,</font></div>
<div><font face="verdana,sans-serif"><br>T<br></font><br><div class="gmail_quote">On Thu, Aug 30, 2012 at 2:25 PM, Adam Twardoch (List) <span dir="ltr"><<a href="mailto:list.adam@twardoch.com" target="_blank">list.adam@twardoch.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 12-08-30 20:49, Thomas Phinney wrote:<br>
><br>
><br>
> I have a different question about ReqFeatureIndex.<br>
><br>
> I am collaborating on a special-purpose font, whose entire purpose is<br>
> tied up in having ligatures work. It is useless without them. It seems<br>
> to me like as a practical matter, ReqFeatureIndex would be a good way<br>
> to make those ligatures work in more environments, at least in<br>
> versions of Windows and Office that might not otherwise support those<br>
> ligatures.<br>
> What tools actually support making fonts with ReqFeatureIndex? I'm<br>
> happy using FontLab Studio. AFDKO would not be the ideal workflow for<br>
> this project, but is possible. I would be fine with learning VOLT. I'd<br>
> use FontForge if scary weapons were pointed at me, or I had no<br>
> alternative.<br>
</div></div>You'll certainly be able to use FontTools/TTX and set the<br>
ReqFeatureIndex in the post-production step.<br>
<br>
Regardless of which tool you use to build the GSUB and GPOS tables, you<br>
would then run<br>
<br>
ttx -t GSUB myfont.otf<br>
<br>
which will yield you a "myfont.ttx" file which will contain the GSUB<br>
table. Inside, you'll find something like this:<br>
<br>
<GSUB><br>
<Version value="1.0"/><br>
<ScriptList><br>
<ScriptRecord index="0"><br>
<ScriptTag value="latn"/><br>
<Script><br>
<DefaultLangSys><br>
<ReqFeatureIndex value="65535"/><br>
<FeatureIndex index="0" value="7"/><br>
<FeatureIndex index="1" value="6"/><br>
<FeatureIndex index="2" value="12"/><br>
<FeatureIndex index="3" value="25"/><br>
...<br>
</LangSys><br>
</LangSysRecord><br>
</Script><br>
</ScriptRecord><br>
</ScriptList><br>
<FeatureList><br>
...<br>
<FeatureRecord index="12"><br>
<FeatureTag value="liga"/><br>
<Feature><br>
<LookupListIndex index="0" value="37"/><br>
<LookupListIndex index="1" value="38"/><br>
</Feature><br>
</FeatureRecord><br>
<br>
If you change the line<br>
<ReqFeatureIndex value="65535"/><br>
to<br>
<ReqFeatureIndex value="2"/><br>
then FeatureIndex 2 will be the ReqFeatureIndex. FeatureIndex 2 points<br>
to FeatureRecord 12, and FeatureRecord 2 implements the "liga" feature<br>
with two lookups.<br>
<br>
So basically, you'll need to locate the FeatureRecord for the feature<br>
entry that you're interested in, then look up its reference in the<br>
appropriate languagesystem list, and then just set the FeatureIndex of<br>
that record as the ReqFeatureIndex for that languagesystem.<br>
<br>
It's relatively easy.<br>
<br>
Then you just run<br>
<br>
ttf -m myfont.otf myfont.ttx<br>
<br>
and you'll get myfont#1.otf, which will have the modified GSUB table.<br>
<br>
Best,<br>
Adam<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
<br>
May success attend your efforts,<br>
-- Adam Twardoch<br>
(Remove "list." from e-mail address to contact me directly.)<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>“Anti-intellectualism has been a constant thread winding its way through our political and cultural life, nurtured by the false notion that democracy means that ‘my ignorance is just as good as your knowledge.’”<br>
—Isaac Asimov<br>
</div></div>