jabranr / noto

Automatically exported from code.google.com/p/noto
0 stars 0 forks source link

Invalid GSUB rules in Noto Sans Javanese #236

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
The GSUB table for Noto Sans Javanese contains several rules that
- assume character sequences that are invalid according to the Unicode Standard 
and to the OpenType specification for Javanese,
- assume glyph sequences that can't occur when GSUB rules are processed because 
of prior OpenType reordering, or
- assume glyph sequences that can't occur because of earlier GSUB rules.

Specification references:
http://www.unicode.org/versions/Unicode7.0.0/ch17.pdf
http://www.microsoft.com/typography/OpenTypeDev/javanese/intro.htm

1) Lookup 1 defines a ligature for the sequence uniA9B8 uniA9BF. U+A9B8 is a 
vowel, U+A9BF a medial consonant, and according to the specifications vowels 
always follow medial consonants in well-formed syllables. The ligature is 
therefore not formed for well-formed text.

2) Lookup 2 defines an alternate glyph for the pasangan form of uniA9B0 if it 
precedes one of the vowels uniA9BA or uniA9BB. These sequences are valid at the 
character level, but cannot occur at the stage where GSUB rules are processed 
because a shaper implementing the OpenType Javanese specification reorders 
these vowels to the beginning of the syllable.

Note: Lookup 4 similarly defines ligatures for the pasangan forms of uniA9A5, 
uniA9A6, uniA9B1, and uniA9B2 if they precede one of the vowels uniA9BA or 
uniA9BB; however, unlike Lookup 2 it is used only for the DFLT writing system, 
when Javanese-specific reordering rules aren't applied.

3) Lookup 3 defines a ligature to replace either uniA981 uniA9BC or uniA9BC 
uniA981. Only uniA9BC uniA981 is a valid sequence according to the 
specifications.

4) Lookup 6 includes glyph00119, which is a ligature for uniA994 and uniA9B8, 
as context for uniA9B8. A sequence of two U+A9B8 is not valid according to the 
Unicode standard (although the OpenType specification strangely allows it).

5) Lookup 11 defines ligatures for the pasangan forms of uniA994, uniA997, 
uniA99B, uniA99D, uniA9AE followed by uniA9B8; however, Lookup 6 already maps 
uniA9B8 to a below-pasangan form when following these pasangan forms, so the 
ligature rule can't match uniA9B8.

Noto Sans Javanese 1.01

Original issue reported on code.google.com by googled...@lindenbergsoftware.com on 20 Jan 2015 at 11:38

GoogleCodeExporter commented 9 years ago

Original comment by stua...@google.com on 28 Feb 2015 at 12:31

GoogleCodeExporter commented 9 years ago

Original comment by roozbeh@google.com on 2 Apr 2015 at 4:02