| # How To Fix |
| |
| This file describes the causes of common problems that OTS detects. |
| |
| ### DFLT script doesn't satisfy the spec |
| |
| DFLT script doesn't satisfy the spec. DefaultLangSys is NULL |
| DFLT script doesn't satisfy the spec. LangSysCount is not zero: $lang_sys_count |
| |
| These errors are related to the language system declaration and how the lookup language tags are declared in the feature syntax. |
| |
| Old files made in FontLab Studio version 5.0, using Adobe FDK version 2.5 or so, then the `latin` language was the default, and thus could go unspecified. |
| And sometimes a language tag was declared after the untagged feature. |
| This was a common practice to assume that script `latn` is the default script. |
| For example: |
| |
| ``` |
| feature liga { |
| sub f f i by ffi; |
| sub f f l by ffl; |
| sub f f by ff; |
| sub f i by fi; |
| sub f l by fl; |
| language AZE; |
| language CRT; |
| language MOL; |
| language ROM; |
| language TRK; |
| script DFLT; |
| sub f f i by ffi; |
| sub f f l by ffl; |
| sub f f by ff; |
| sub f i by fi; |
| sub f l by fl; |
| } liga; |
| ``` |
| |
| But the script `latn` should be declared before language tags. |
| For example, |
| |
| ``` |
| feature liga { |
| script DFLT; |
| sub f f i by ffi; |
| sub f f l by ffl; |
| sub f f by ff; |
| sub f i by fi; |
| sub f l by fl; |
| script latn; |
| sub f f i by ffi; |
| sub f f l by ffl; |
| sub f f by ff; |
| sub f i by fi; |
| sub f l by fl; |
| language AZE; |
| language CRT; |
| language MOL; |
| language ROM; |
| language TRK; |
| } liga; |
| ``` |
| |
| For fonts where sources are missing, or rebuilding is undesirable, there is a FontTools [script](https://github.com/fonttools/fonttools/blob/master/Snippets/fix-dflt-langsys.py) that can be used to hotfix the binary files. |