xref: /aosp_15_r20/external/fonttools/Tests/feaLib/data/spec4h1.fea (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1*e1fe3e4aSElliott Hughes# OpenType Feature File specification, section 4.h, example 1.
2*e1fe3e4aSElliott Hughes# http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html
3*e1fe3e4aSElliott Hughes
4*e1fe3e4aSElliott Hugheslanguagesystem DFLT dflt;
5*e1fe3e4aSElliott Hugheslanguagesystem latn dflt;
6*e1fe3e4aSElliott Hugheslanguagesystem latn DEU;
7*e1fe3e4aSElliott Hugheslanguagesystem latn TRK;
8*e1fe3e4aSElliott Hugheslanguagesystem cyrl dflt;
9*e1fe3e4aSElliott Hughes
10*e1fe3e4aSElliott Hughesfeature smcp {
11*e1fe3e4aSElliott Hughes    sub [a - z] by [A.sc - Z.sc];
12*e1fe3e4aSElliott Hughes
13*e1fe3e4aSElliott Hughes    # Since all the rules in this feature are of the same type, they
14*e1fe3e4aSElliott Hughes    # will be grouped in a single lookup.  Since no script or language
15*e1fe3e4aSElliott Hughes    # keyword has been specified yet, the lookup will be registered
16*e1fe3e4aSElliott Hughes    # for this feature under all the language systems.
17*e1fe3e4aSElliott Hughes} smcp;
18*e1fe3e4aSElliott Hughes
19*e1fe3e4aSElliott Hughesfeature liga {
20*e1fe3e4aSElliott Hughes    sub f f by f_f;
21*e1fe3e4aSElliott Hughes    sub f i by f_i;
22*e1fe3e4aSElliott Hughes    sub f l by f_l;
23*e1fe3e4aSElliott Hughes
24*e1fe3e4aSElliott Hughes    # Since all the rules in this feature are of the same type, they
25*e1fe3e4aSElliott Hughes    # will be grouped in a single lookup.  Since no script or language
26*e1fe3e4aSElliott Hughes    # keyword has been specified yet, the lookup will be registered
27*e1fe3e4aSElliott Hughes    # for this feature under all the language systems.
28*e1fe3e4aSElliott Hughes
29*e1fe3e4aSElliott Hughes    script latn;
30*e1fe3e4aSElliott Hughes    language dflt;
31*e1fe3e4aSElliott Hughes    # lookupflag 0;      (implicit)
32*e1fe3e4aSElliott Hughes    sub c t by c_t;
33*e1fe3e4aSElliott Hughes    sub c s by c_s;
34*e1fe3e4aSElliott Hughes
35*e1fe3e4aSElliott Hughes    # The rules above will be placed in a lookup that is registered
36*e1fe3e4aSElliott Hughes    # for all the specified languages for the script latn, but not any
37*e1fe3e4aSElliott Hughes    # other scripts.
38*e1fe3e4aSElliott Hughes
39*e1fe3e4aSElliott Hughes    language DEU;
40*e1fe3e4aSElliott Hughes    # script latn;       (stays the same)
41*e1fe3e4aSElliott Hughes    # lookupflag 0;      (stays the same)
42*e1fe3e4aSElliott Hughes    sub c h by c_h;
43*e1fe3e4aSElliott Hughes    sub c k by c_k;
44*e1fe3e4aSElliott Hughes
45*e1fe3e4aSElliott Hughes    # The rules above will be placed in a lookup that is registered
46*e1fe3e4aSElliott Hughes    # only under the script latn, language DEU.
47*e1fe3e4aSElliott Hughes
48*e1fe3e4aSElliott Hughes    language TRK;
49*e1fe3e4aSElliott Hughes
50*e1fe3e4aSElliott Hughes    # This will inherit both the top level default rules - the rules
51*e1fe3e4aSElliott Hughes    # defined before the first 'script' statement, and the
52*e1fe3e4aSElliott Hughes    # script-level default rules for 'latn': all the lookups of this
53*e1fe3e4aSElliott Hughes    # feature defined after the 'script latn' statement, and before
54*e1fe3e4aSElliott Hughes    # the language DEU statement.  If TRK were not named here, it
55*e1fe3e4aSElliott Hughes    # would not inherit the default rules for the script latn.
56*e1fe3e4aSElliott Hughes} liga;
57*e1fe3e4aSElliott Hughes
58*e1fe3e4aSElliott Hughes# TODO(sascha): Uncomment once we support 'pos' statements.
59*e1fe3e4aSElliott Hughes# feature kern {
60*e1fe3e4aSElliott Hughes#     pos a y -150;
61*e1fe3e4aSElliott Hughes#     # [more pos statements]
62*e1fe3e4aSElliott Hughes#     # All the rules in this feature will be grouped in a single lookup
63*e1fe3e4aSElliott Hughes#     # that is is registered under all the language systems.
64*e1fe3e4aSElliott Hughes# } kern;
65