Closed Bug 156881 (text-decoration-mode) Opened 22 years ago Closed 9 years ago

Underline should skip character/part-of-character that is below the base line (text-decoration-mode)


(Core :: Layout, enhancement)

Not set





(Reporter: arthit.suriyawongkul, Assigned: dbaron, Mentored)


(Depends on 1 open bug, Blocks 1 open bug, )


(Keywords: css3, intl, testcase, Whiteboard: [lang=c++])


(4 files)

From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0rc3) Gecko/20020614
BuildID:    20020614


in Thai text,
we need the line to skip all below-level part & tail of char
(also below-level char, like below vowel)

please see the attached testcase.

Reproducible: Always
Steps to Reproduce:
open attached testcase

Actual Results:
underline went across Thai base-level characters, also base-level part/tail of
Thai characters.

Expected Results:
underline skip Thai base-level characters, also base-level part/tail of Thai


also, in case of English text, e.g


when it went underlined,
should the line skip tails of "gyqj" ?
Attached file Thai underlined text
Thai character has 4 levels of displaying.
from highest to lowest level:
 above (same level as accent mark of western)
 base  (same level as general western character)

list of below-level Thai character:

list of Thai character with "below-level part":

list of Thai character with "below-level tail":
some character like U+0E3A,
will be unseen if the underline striked over it.
This is, IMO, another deficiency of the underline definition in the CSS spec
(which we're moving towards in bug 1777), that we're not allowed to do this. 
(Or are we?)
Component: Style System → Layout
Ever confirmed: true
Whiteboard: [CSSWG]
propose new attribute to CSS ?
to let web developer able to choose style for underline ?

2 style options
 - strike out
 - skip over

seems this too hard -_-'
just my 2 satangs :|
(changed the summary to be more general)

example of Latin characters that has some part below the base line:

U+0067  g
U+006A  j
U+0070  p
U+0071  q
U+0079  y
U+00C7  Latin Capital Letter C with Cedilla
U+00FD  Latin Small Letter Y with Acute
U+00FE  Latin Small Letter Thorn
U+0104  Latin Capital Letter A with Ogonek
U+014B  Latin Small Letter Eng
Summary: Underline should skip Thai below-level character or part/tail of character → Underline should skip character/part-of-character that is below the base line
comment #5 .. may be it's not clear.

possible options
1) not skip
2) skip only whitespace
3) skip only below-base-line part-of-character
4) skip whitespace and below-base-line part-of-character
I think we are allowed to do this per the spec, actually. It counts the same as
changing the thickness to allow for subscripts, which the spec explicitly allows.

We should give feedback to the CSSWG that we want 'text-underline-mode' to have
a value which controls whether or not we skip descenders.
actually, i've sent an e-mail to yesterday,
not sure if it a good place to send to.
(i'm not subscribed to the list yet, so the msg may delayed)

i can fwd the e-mail to you on monday morning,
when i'm at the office and can access the sentbox :)

please comment on it, thanks.
list archive
OS: Solaris → All
Hardware: Sun → All
Blocks: thai
Shows input and output sequences and expected underlining. Pl ignore the boxes.

Comment about attachment 92925 [details]
Indian language scripts (particularly South Indian languages) will have the same
issue. In addition could someone point me to the logic of underlining text? My
concern is that CTL (Complex Text Layout) scripts such as Thai, Hebrew, Arabic
require underlining to happen after the characters are shaped to account for
shaping as well as below-base characters. Pl see attached gif for hindi.
black: grapheme cluster WITH some part below the base line level.
grey: grapheme cluster without.
from attachment 94217 [details]
i think "skip-whole-cell" is the easiest to implement.
(note: i use the word (display) cell/grapheme cluster interchangably here .. sorry)
So if I have:

<span style="text-decoration: underline">
  <span style="vertical-align: -0.5em">text</span>
  more text

what should happen?  Should the same apply for overline and ascenders?  (Think
bigger font in the middle of an overlined inline.)
Alias: text-decoration-mode
Blocks: css-text-3
Severity: normal → enhancement
Keywords: css3, testcase
Summary: Underline should skip character/part-of-character that is below the base line → Underline should skip character/part-of-character that is below the base line (text-decoration-mode)
Whiteboard: [CSSWG]
Similar issue in 

Underlining should optionally skip descenders and characters below baseline
Isn't this a dupe of bug 64874?
*** Bug 64874 has been marked as a duplicate of this bug. ***
Keywords: intl
The problem still affects with current nightly build.
BugAThon Bangkok:

We all agreed that this bug is not a blocking bug for Thai support.
(i.e. just optional, good to have, but not necessary)
QA Contact: ian → layout
This seems more important with the new support for colored underlines.
I have a very rough idea of how to do this. If someone's interested in trying to fix it I can give some guidance. It would be good to prototype out an algorithm for breaking the underline first.
Whiteboard: [mentor=jrmuizel][lang=c++]
I would like to work on this bug, i am good at c++. Please guide me through this
Mentor: jmuizelaar
Whiteboard: [mentor=jrmuizel][lang=c++] → [lang=c++]
Aish, you should probably look over the CSS3 Text Decoration spec:
and maybe ping jrmuizel directly -- he seems to have not noticed your comment. :)
Depends on: 812990
It looks like this property has been removed from specs long ago. I cannot find it in any current draft. So close it.
Closed: 9 years ago
Resolution: --- → WONTFIX
Bug 812990 supersedes this.
You need to log in before you can comment on or make changes to this bug.