File size: 819 Bytes
312898d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def is_full_width_char(ch):
    """判断给定的单个字符是否是全角字符"""
    if '\u4e00' <= ch <= '\u9fff':
        return True  # 中文字符
    if '\uff01' <= ch <= '\uff5e':
        return True  # 全角符号
    if '\u3000' <= ch <= '\u303f':
        return True  # CJK标点符号
    return False

def scolling_visual_effect(text, scroller_max_len):
    text = text.\
            replace('\n', '').replace('`', '.').replace(' ', '.').replace('<br/>', '.....').replace('$', '.')
    place_take_cnt = 0
    pointer = len(text) - 1

    if len(text) < scroller_max_len:
        return text

    while place_take_cnt < scroller_max_len and pointer > 0:
        if is_full_width_char(text[pointer]): place_take_cnt += 2
        else: place_take_cnt += 1
        pointer -= 1

    return text[pointer:]