New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 693687 link

Starred by 8 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 2
Type: Bug



Sign in to add a comment

Tamil fonts: two characters rendered as one

Project Member Reported by siddaarths@google.com, Feb 17 2017

Issue description

Chrome Version       : 56.0.2924.87
OS Version: 
URLs (if applicable) :
Other browsers tested:
  Add OK or FAIL after other browsers where you have tested this issue:
     Safari 5: OK
  Firefox 4.x: OK
     IE 7/8/9: Not tested

** What steps will reproduce the problem?
1) Copy paste "க்க" on any Google property
2) Put the cursor at the end of the text.
3) Move the cursor left - you will observe that the cursor would pass both the characters together (க் & க).

** What is the expected result?
Cursor should only traverse க when moved one character left.


** What happens instead of that?
When a pure consonant, (eg: க் - k), is followed by a vowel+consonant (eg: க - ka) character, the two characters are rendered as one character (or a single compound glyph). These should be rendered as two separate characters (or glyphs).

While this kind of rendering is correct for other Indic languages, Tamil is an exception because it doesn't compound glyphs to form a single glyph when combining a pure consonant with a vowel+consonant combo.

** Please provide any additional information below. Attach a screenshot if
possible.

UserAgentString: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
 
This happens on Chrome irrespective of the OS (I tried on Mac and Linux).

Comment 2 by e...@chromium.org, Feb 17 2017

Cc: kojii@chromium.org e...@chromium.org
Components: Blink>Fonts
Labels: -Pri-3 Pri-2
Owner: drott@chromium.org
Status: Available (was: Unconfirmed)
Summary: Tamil fonts: two characters rendered as one (was: Tamil fonts: two characters rendered as one)

Comment 3 by e...@chromium.org, Feb 17 2017

Labels: OS-Android OS-Chrome OS-Mac OS-Windows

Comment 4 by behdad@chromium.org, Feb 17 2017

Cc: behdad@chromium.org

Comment 5 by kojii@chromium.org, Feb 20 2017

Cc: drott@chromium.org
Components: -Blink>Fonts Blink>Editing>Selection
Owner: nona@chromium.org
This is a selection bug; we shape "க்க" as 3 glyphs, 2 clusters.

Probably the grapheme cluster logic in the selection considers this as a grapheme, but as per UAX#29, this should be 2 grapheme.

Comment 6 by behdad@chromium.org, Feb 22 2017

> Probably the grapheme cluster logic in the selection considers this as a grapheme, but as per UAX#29, this should be 2 grapheme.

Perhaps because HarfBuzz reports this as one cluster.  I think our selection code does not handle that.  One can also try with a simple "fi" ligature.

Comment 7 by kojii@chromium.org, Feb 22 2017

HarfBuzz is correct as far as I checked in my debugger; unfortunately our editing/selection doesn't use cluster info from HarfBuzz yet; it uses its own logic. This in on the backlog for editing team.
So, any updates or ETA for this?
This is pretty annoying for someone who types in Tamil language.

Comment 9 by nona@chromium.org, Apr 26 2017

Cc: ajha@chromium.org nona@chromium.org yosin@chromium.org
 Issue 675478  has been merged into this issue.
Project Member

Comment 11 by sheriffbot@chromium.org, Jul 26 2017

Labels: Hotlist-Google
Labels: Pri-3
This is probably the same root cause as  Issue 473476 
i tried, this bug is reproducible in Windows 10 and Mac OS X High Sierra. 
Cc: fs...@chromium.org
Agree that this is likely the same as  issue 473476 . fserb@, can you confirm, and mark as duplicate if appropriate?

Owner: ----
This isn't a ligature; see #5:
> we shape "க்க" as 3 glyphs, 2 clusters.
Labels: -Pri-3 Pri-2
Owner: rlanday@chromium.org
Status: Started (was: Available)
Labels: M-65
Status: Fixed (was: Started)
Will be fixed in Chrome 65:
https://chromium-review.googlesource.com/c/chromium/src/+/843461
Project Member

Comment 19 by bugdroid1@chromium.org, Jan 3 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/60a12c281f9c177383b3bcad8c6459dac6e07f25

commit 60a12c281f9c177383b3bcad8c6459dac6e07f25
Author: Ryan Landay <rlanday@chromium.org>
Date: Wed Jan 03 03:37:08 2018

Allow splitting grapheme clusters after Tamil virama

We currently don't allow grapheme clusters to be split after Indic virama
characters (this seems to be a custom deviation from the grapheme cluster rules
in UAX #29). According to a Googler familiar with Indic languages, this behavior
is correct for other Indic languages, but not for Tamil ("Tamil is an exception
because it doesn't compound glyphs to form a single glyph when combining a pure
consonant with a vowel+consonant combo.")

This is causing at least two problems:

1. It's not possible to put the insertion point between certain pairs of Tamil
   characters when typing ( crbug.com/693687 ).

2. Inputting Tamil with phonetic keyboard IMEs is super broken
   ( crbug.com/675477 ).

This CL fixes both of these problems by treating the Tamil virama character
differently from other Indic viramas.

Note: this does *not* address the issue in crbug.com/792713 where the Tamil
handwriting IME on Android inserting lone SpacingMark characters triggers odd
behavior.

Bug:  675477 ,  693687 
Change-Id: Iae95e70418aeadcbab5296245ad7253cf3c31cde
Reviewed-on: https://chromium-review.googlesource.com/843461
Reviewed-by: Emil A Eklund <eae@chromium.org>
Reviewed-by: Xiaocheng Hu <xiaochengh@chromium.org>
Commit-Queue: Ryan Landay <rlanday@chromium.org>
Cr-Commit-Position: refs/heads/master@{#526611}
[modify] https://crrev.com/60a12c281f9c177383b3bcad8c6459dac6e07f25/third_party/WebKit/Source/core/editing/ime/InputMethodControllerTest.cpp
[modify] https://crrev.com/60a12c281f9c177383b3bcad8c6459dac6e07f25/third_party/WebKit/Source/core/editing/state_machines/StateMachineUtil.cpp
[modify] https://crrev.com/60a12c281f9c177383b3bcad8c6459dac6e07f25/third_party/WebKit/Source/core/editing/state_machines/StateMachineUtilTest.cpp

Sign in to add a comment