diff --git a/TermTk/TTkCore/canvas.py b/TermTk/TTkCore/canvas.py index 0098da68..3172906a 100644 --- a/TermTk/TTkCore/canvas.py +++ b/TermTk/TTkCore/canvas.py @@ -22,8 +22,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -import unicodedata - from TermTk.TTkCore.TTkTerm.term import TTkTerm from TermTk.TTkCore.constant import TTkK from TermTk.TTkCore.log import TTkLog @@ -197,8 +195,7 @@ class TTkCanvas: if self._data[y][x+a] == '': self._data[y][x+a] = TTkCfg.theme.unicodeWideOverflowCh[0] self._colors[y][x+a] = TTkCfg.theme.unicodeWideOverflowColor - if ( len(ch:=self._data[y][x+b-1])==1 - and unicodedata.east_asian_width(ch)=='W'): + if TTkString._isWideCharData(self._data[y][x+b-1]): self._data[y][x+b-1] = TTkCfg.theme.unicodeWideOverflowCh[1] self._colors[y][x+b-1] = TTkCfg.theme.unicodeWideOverflowColor @@ -620,19 +617,16 @@ class TTkCanvas: if self._data[y+iy][a]=='': self._data[y+iy][a] = TTkCfg.theme.unicodeWideOverflowCh[0] self._colors[y+iy][a] = TTkCfg.theme.unicodeWideOverflowColor - if ( len(ch:=self._data[y+iy][b-1])==1 - and unicodedata.east_asian_width(ch)=='W'): + if TTkString._isWideCharData(self._data[y+iy][b-1]): self._data[y+iy][b-1] = TTkCfg.theme.unicodeWideOverflowCh[1] self._colors[y+iy][b-1] = TTkCfg.theme.unicodeWideOverflowColor - if ( a and len(ch:=self._data[y+iy][a-1])==1 - and unicodedata.east_asian_width(ch)=='W'): + if TTkString._isWideCharData(self._data[y+iy][a-1]): self._data[y+iy][a-1] = TTkCfg.theme.unicodeWideOverflowCh[1] self._colors[y+iy][a-1] = TTkCfg.theme.unicodeWideOverflowColor if ( b 1: + return unicodedata.east_asian_width(ch[0])=='W' + return False + @staticmethod def _isSpecialWidthChar(ch): return ( unicodedata.east_asian_width(ch) == 'W' or @@ -594,7 +602,10 @@ class TTkString(): retCol += (self._colors[i],self._colors[i]) elif unicodedata.category(ch) in ('Me','Mn'): if retTxt: - retTxt[-1]+=ch + if len(retTxt)>1 and retTxt[-1] == '': + retTxt[-2]+=ch + else: + retTxt[-1]+=ch #else: # retTxt = [f"{ch}"] # retCol = [TTkColor.RST] diff --git a/TermTk/TTkTestWidgets/testwidget.py b/TermTk/TTkTestWidgets/testwidget.py index feb5109c..39eb44ab 100644 --- a/TermTk/TTkTestWidgets/testwidget.py +++ b/TermTk/TTkTestWidgets/testwidget.py @@ -33,7 +33,7 @@ from TermTk.TTkWidgets.frame import * class _TestContent(TTkWidget): def paintEvent(self): # TTkLog.debug(f"Test Paint - {self._name}") - y=0; self._canvas.drawText(pos=(-5,y),text=TTkString(color=TTkColor.fg("#ff0000") ,text=" L๐Ÿ˜Žrem ipsum dolor sit amet,")) + y=0; self._canvas.drawText(pos=(-5,y),text=TTkString(color=TTkColor.fg("#ff0000") ,text=" L๐Ÿ˜Žrem ipsum dolor sit amet, โŒšโŒš๏ธŽโŒš๏ธ โคโค๏ธŽโค๏ธ ๐Ÿ™‹๐Ÿ™‹๏ธŽ๐Ÿ™‹๏ธ'")) y+=1; self._canvas.drawText(pos=(0,y), text=TTkString(color=TTkColor.fg("#ff8800") ,text="consectetur adipiscing elit,")) y+=1; self._canvas.drawText(pos=(0,y), text=TTkString(color=TTkColor.fg("#ffff00") ,text="sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")) y+=1; self._canvas.drawText(pos=(0,y), text=TTkString(color=TTkColor.fg("#00ff00") ,text="Ut enim ad minim veniam,")) diff --git a/tests/sandbox/sandbox.html b/tests/sandbox/sandbox.html index 6127b799..995124f9 100644 --- a/tests/sandbox/sandbox.html +++ b/tests/sandbox/sandbox.html @@ -9,6 +9,7 @@ +