Chain contextual lookup subtable in GSUB feature 'dlig' causes offset overflow.
it's driving me nuts
It means that the size of the your lookups has become too large for them to be referenced using the 16 bit offsets used in standard GSUB tables.
Read up on the 'useExtension' keyword in the OpenType Feature Syntax reference.
http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html
André
I readed it but it's hard for me to understand, i'm used to actionscript and processing (java). The opentype code is by far the most confusing for me.
I tried to create lookups now but now i get the overflow error even faster, normaly it showed after a minute or something, now in a second.
I got things like this, what am i doing wrong?
p.s. the font i make is very experimental.
lookup PART1{
sub @49 @AZ' by @50;
sub @49 @all @AZ' by @50;
sub @49 @all @all @AZ' by @50;
sub @49 @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
sub @49 @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @all @AZ' by @50;
} PART1;
That lookup is way to big. It looks to me like like what you're trying to do definitely requires tables which are larger than what the OTSpec was really designed to handle. OT doesn't include a type of rule which allows for non-local context over arbitrary distances, and trying to mimic such rules using code such as above is really pushing the limits. The 'useExtension' tag might allow this to compile, but it's still going to really slow down the user's system.
What exactly is it that you are trying to do with the above rule? What's in @59 and @50?
André
@50 = [A.50-Z.50];
@59 = [A.59-Z.59];
@AZ = [A-Z];
@all = [space @1 @2 @3 @4 @5 @6 @7 @8 @9 @10 @11 @12 @13 @14 @15 @16 .....etc (expet @AZ)
The code in the first post was to archieve this (yes it's a font):

The thing on the left is the alfabet typed, 1 time A to Z then AA BB CC etc. and then AAA BBB CCC etc. The thing on the right is just some text, you can see good how the 'e' is the most used letter.
I thought i needed a lot of @all between the things cause a 'j' is not a frequent used letter for example. However i was wrong with the code and it doesnt need that much.
Anyway the thing i made above was made because my original idea failed, which has to look like this (it's not a font atm it's made in illustrator):

The code looks now like (small part, and classes are same as in the top of this post):
sub A.5 A' by A.6;
sub A.5 @all A' by A.6;
sub A.4 A' by A.5;
sub A.4 @all A' by A.5;
sub A.3 A' by A.4;
sub A.3 @all A' by A.4;
sub A.2 A' by A.3;
sub A.2 @all A' by A.3;
sub A.1 A' by A.2;
sub A.1 @all A' by A.2;
sub A A' by A.1;
sub A @all A' by A.1;
Where the .# has to reach to 100 (or even more if possible).
Only now when i type ABABABABABABABABA then it goes good but when i type
AAAAABAAAAABAAAAAABAAAAAAABAAAAAAB then the B just stays the B.1 version.
I know why this is, instand of this:
sub A.# A' by A.#;
sub A.# @all A' by A.#;
it should grow to:
sub A.# A' by A.#;
sub A.# @all A' by A.#;
sub A.# @all @all A' by A.#;
sub A.# @all @all @all A' by A.#;
sub A.# @all @all @all @all A' by A.#;
sub A.# @all @all @all @all @all A' by A.#;
etc.
But i have chars from A to Z and 100 alternate versions, if i want a max distance between 2 letters to be 50 for example (which is even a low amount cause i counted in a text and sometimes it takes even 50 chars before the letter b is coming back) then that would mean
26x100x50 = 130000 lines of code.
So if you ore someone else can help me to archieve my original idea then that would be great.
I don't really understand what your original idea is, so I can't really help there.
I do have a suggestion for you, though: I'd put your more experimental projects on hold for the time being and try working on a more conventional design while you master the tools you are using and gain a better understanding of the OpenType format. You'll then be in a much better position to decide whether your projects are feasible, and whether opentype fonts is really an appropriate technology to use for that project.
FontLab and FDK are both fairly complex tools, and while GSUB rules can be fairly powerful, they also have many limitations and are not designed with the kinds of things you have proposed in mind. Learning how all the pieces fit together is a lot easier if you are working on the kind of thing which can be readily compared with existing OT fonts. OpenType coding also differs in some fairly salient ways from programming which may not be obvious until you're more used to working with OpenType lookups.
I'd start by reading through the FontLab manual as well as the documentation on Adobe and Microsoft's sites with the goal of understanding the big picture rather than using them as 'troubleshooting guides' whenever you encounter an error.
André
[p.s. Some of the you are doing would likely be more readily implemented using AAT rather than OpenType, though the set of tools available for developing AAT fonts is both more limited and less user friendly than those available for OpenType, so I definitely wouldn't recommend that as a place to start; however, if you are determined to do this as a font and find that OpenType doesn't meet your needs that might be an option to consider somewhere down the road].
Captured from web.archive.org on 3 Feb 2010. view this capture