Skip to content

Commit

Permalink
Gujarati, Oriya ss2.1: clarify positioning of non-canonical decomposi…
Browse files Browse the repository at this point in the history
…tions for top-and-right multipart matras. Also unify minor differences in 2.1 wording between the two.
  • Loading branch information
n8willis committed Sep 19, 2019
1 parent c5364de commit 22fcabd
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 18 deletions.
23 changes: 14 additions & 9 deletions opentype-shaping-gujarati.md
Original file line number Diff line number Diff line change
Expand Up @@ -732,15 +732,20 @@ into their components. Gujarati has one multi-part dependent vowel,

> "Candra O" (`U+0AC9`) decomposes to "`U+0AC5`,`U+0ABE`"
> Note: "Candra O" is atypical in that it would decompose into one
> above-base mark and one right-side mark.
> This combination, unlike other multi-part matras, does not affect
> reordering: the two decomposed components would be tagged for the
> `POS_AFTER_SUBJOINED` and `POS_AFTER_POST` sorting positions,
> respectively, and neither will need to be reordered. In addition,
> the decomposition is not canonical in Unicode. Consequently, shaping
> engines may choose to skip it.
> Note: "Candra O" is categorized in Unicode as being a top-and-right
> matra, a combination that would normally decompose into one
> TOP_POSITION mark and one RIGHT_POSITION mark. In "Candra O",
> however, the `U+0AC5` component is intended to be positioned over the
> `U+0ABE` component, not above the base.
>
> Consequently, the two decomposed components should both be tagged
> for the `POS_AFTER_POST` sorting position, and neither will need to
> be reordered.
>
> In addition, the decomposition is not canonical in
> Unicode. so performing the decomposition may trigger unknown
> behavior from other components of the software stack. Consequently,
> shaping engines may choose to skip it.
Because this decomposition is a character-level operation, the shaping
engine may choose to perform it earlier, such as during an initial
Expand Down
23 changes: 14 additions & 9 deletions opentype-shaping-oriya.md
Original file line number Diff line number Diff line change
Expand Up @@ -803,22 +803,27 @@ has a canonical decomposition, so this step is unambiguous.
>
> "Au" (`U+0B4C`) decomposes to "`U+0B47`,`U+0B57`"
Because this decomposition is a character-level operation, the shaping
engine may choose to perform it earlier, such as during an initial
Unicode-normalization stage. However, all such decompositions must be
completed before the shaping engine begins step three, below.

> Note: "Au Length Mark" (`U+0B57`) is categorized in Unicode as being a
> top-and-right matra, a combination that would normally decompose
> into one above-base mark and one right-side mark
> (`U+0B3E`,`U+0B56`). This combination, unlike other multi-part
> matras, does not affect reordering.
>
> into one TOP_POSITION mark and one RIGHT_POSITION mark
> (`U+0B3E`,`U+0B56`). In "Au Length Mark", however, the `U+0B3E`
> component is intended to be positioned over the `U+0B56` component,
> not above the base.
>
> Consequently, the two decomposed components should both be tagged
> for the `POS_AFTER_POST` sorting position, and neither will need to
> be reordered.
>
> In addition, the decomposition is not canonical in
> Unicode, so performing the decomposition may trigger unknown
> behavior from other components of the software stack. Consequently,
> shaping engines may choose to skip it.
Because this decomposition is a character-level operation, the shaping
engine may choose to perform it earlier, such as during an initial
Unicode-normalization stage. However, all such decompositions must be
completed before the shaping engine begins step three, below.

![Two-part matra decomposition](/images/oriya/oriya-matra-decompose.png)

#### 2.3: Tag matras ####
Expand Down

0 comments on commit 22fcabd

Please sign in to comment.