你还在为无法获取文本实际宽度发愁吗?这里我总结了一套标准

[复制链接]
250 |7
森林人 发表于 2022-12-12 22:26:06 | 显示全部楼层 |阅读模式
你还在为无法获取文本实际宽度发愁吗?这里我总结了一套标准
const FontDefinition = {
        'originSize': 24,
        "48": { 'char': 0, 'width': 18.667, xoffset: 0 },
        "49": { 'char': 1, 'width': 18.667, xoffset: 0 },
        "50": { 'char': 2, 'width': 18.667, xoffset: 0 },
        "51": { 'char': 3, 'width': 18.667, xoffset: 0 },
        "52": { 'char': 4, 'width': 18.667, xoffset: 0 },
        "53": { 'char': 5, 'width': 18.667, xoffset: 0 },
        "54": { 'char': 6, 'width': 18.667, xoffset: 0 },
        "55": { 'char': 7, 'width': 18.667, xoffset: 0 },
        "56": { 'char': 8, 'width': 18.667, xoffset: 0 },
        "57": { 'char': 9, 'width': 18.667, xoffset: 0 },
        "65": { 'char': "A", 'width': 21.333, xoffset: 0 },
        "66": { 'char': "B", 'width': 21.333, xoffset: 0 },
        "67": { 'char': "C", 'width': 21.333, xoffset: 0 },
        "68": { 'char': "D", 'width': 21.333, xoffset: 0 },
        "69": { 'char': "E", 'width': 18.667, xoffset: 0 },
        "70": { 'char': "F", 'width': 18.667, xoffset: 0 },
        "71": { 'char': "G", 'width': 21.333, xoffset: 0 },
        "72": { 'char': "H", 'width': 21.333, xoffset: 0 },
        "73": { 'char': "I", 'width': 8, xoffset: 0 },
        "74": { 'char': "J", 'width': 18.667, xoffset: 0 },
        "75": { 'char': "K", 'width': 21.333, xoffset: 0 },
        "76": { 'char': "L", 'width': 18.667, xoffset: 0 },
        "77": { 'char': "M", 'width': 26.667, xoffset: 0 },
        "78": { 'char': "N", 'width': 21.333, xoffset: 0 },
        "79": { 'char': "O", 'width': 21.333, xoffset: 0 },
        "80": { 'char': "P", 'width': 21.333, xoffset: 0 },
        "81": { 'char': "Q", 'width': 21.333, xoffset: 0 },
        "82": { 'char': "R", 'width': 21.333, xoffset: 0 },
        "83": { 'char': "S", 'width': 18.667, xoffset: 0 },
        "84": { 'char': "T", 'width': 18.667, xoffset: 0 },
        "85": { 'char': "U", 'width': 21.333, xoffset: 0 },
        "86": { 'char': "V", 'width': 21.333, xoffset: 0 },
        "87": { 'char': "W", 'width': 26.667, xoffset: 0 },
        "88": { 'char': "X", 'width': 21.333, xoffset: 0 },
        "89": { 'char': "Y", 'width': 21.333, xoffset: 0 },
        "90": { 'char': "Z", 'width': 18.667, xoffset: 0 },
        "91": { 'char': "[", 'width': 8.667, xoffset: 0 },
        "92": { 'char': "\\", 'width': 13.333, xoffset: 0 },
        "93": { 'char': "]", 'width': 8.667, xoffset: 0 },
        "94": { 'char': "^", 'width': 13.333, xoffset: 0 },
        "95": { 'char': "_", 'width': 13.333, xoffset: 0 },
        "96": { 'char': "`", 'width': 10.667, xoffset: 0 },
        "97": { 'char': 'a', 'width': 18.667, xoffset: 0 },
        "98": { 'char': 'b', 'width': 18.667, xoffset: 0 },
        "99": { 'char': 'c', 'width': 18.667, xoffset: 0 },
        "100": { 'char': 'd', 'width': 18.667, xoffset: 0 },
        "101": { 'char': 'e', 'width': 16, xoffset: 0 },
        "102": { 'char': 'f', 'width': 10.667, xoffset: 1 },
        "103": { 'char': 'g', 'width': 18.667, xoffset: 0 },
        "104": { 'char': 'h', 'width': 18.667, xoffset: 0 },
        "105": { 'char': 'i', 'width': 8, xoffset: 0 },
        "106": { 'char': 'j', 'width': 8, xoffset: 0 },
        "107": { 'char': 'k', 'width': 16, xoffset: 0 },
        "108": { 'char': 'l', 'width': 8, xoffset: 0 },
        "109": { 'char': 'm', 'width': 26.667, xoffset: 0 },
        "110": { 'char': 'n', 'width': 18.667, xoffset: 0 },
        "111": { 'char': 'o', 'width': 18.667, xoffset: 0 },
        "112": { 'char': 'p', 'width': 18.667, xoffset: 0 },
        "113": { 'char': 'q', 'width': 18.667, xoffset: 0 },
        "114": { 'char': 'r', 'width': 10.667, xoffset: 0 },
        "115": { 'char': 's', 'width': 16, xoffset: 0 },
        "116": { 'char': 't', 'width': 10.667, xoffset: 0 },
        "117": { 'char': 'u', 'width': 18.667, xoffset: 0 },
        "118": { 'char': 'v', 'width': 16, xoffset: 0 },
        "119": { 'char': 'w', 'width': 24, xoffset: 0 },
        "120": { 'char': 'x', 'width': 16, xoffset: 0 },
        "121": { 'char': 'y', 'width': 16, xoffset: 0 },
        "122": { 'char': 'z', 'width': 16, xoffset: 0 },
        "123": { 'char': '{', 'width': 10.667, xoffset: 0 },
        "124": { 'char': '|', 'width': 8, xoffset: 0 },
        "125": { 'char': '}', 'width': 10.667, xoffset: 0 },
        "126": { 'char': '~', 'width': 21.333, xoffset: 0 },
}
以上字符已经能满足目前的开发需要
https://user.233lyly.com/community/resources/post_1670855165390.jpg32表示24号中文字体的所占尺寸
这样你就可以做出漂亮的富文本啦!!!
https://user.233lyly.com/community/resources/post_1670855165670.jpg途中的紫色文字可以点击弹出其他UI界面呢
回复

使用道具 举报

森林鹿 发表于 2022-11-26 09:50:11 | 显示全部楼层
赞!另外fyi 富文本功能编辑器也实现了,不过目前高优内容较多,估计会晚点上车。
回复

使用道具 举报

森林人楼主 发表于 2022-11-26 09:51:06 | 显示全部楼层
编辑器组可以参考此方法,当用户setText后底层就把宽度计算出来,让便用户马上获取实际的宽度
回复

使用道具 举报

文青少女 发表于 2022-11-26 12:31:58 | 显示全部楼层
嗯嗯~如果想获取宽度可以单独提个ice;上个版本刚上了一个获取文本高度的功能,当时本来想把获取文本宽度一起做出来的,但是有考虑到如果文本不是自动换行而是被剪裁的情况下不太好算,以及自动换行时还有多行的情况太复杂了,就没一起做
回复

使用道具 举报

森林人楼主 发表于 2022-11-26 12:45:37 | 显示全部楼层
https://user.233lyly.com/community/resources/post_1670855166111.jpg这里的文本是由5个子文本拼接而成的,文字“的的的....”超出当前行的就实现了自动换行
回复

使用道具 举报

文青少女 发表于 2022-11-26 12:48:47 | 显示全部楼层
嗯嗯我是指有一大段自动换行文本宽度算起来比较复杂,需要看最长的一行的宽度;也不是不能算,到时候可以按需求流程让技术再调研一下
回复

使用道具 举报

文青少女 发表于 2022-11-26 12:50:52 | 显示全部楼层
如果只是想一段话里实现富文本,可以等富文本的需求上线,就很简单啦;但是目前是不带点击事件,还需要额外写逻辑
回复

使用道具 举报

森林人楼主 发表于 2022-11-26 12:53:35 | 显示全部楼层
目前没有太多的要求,这是我们项目为了好看点还能交互,自己实现的
回复

使用道具 举报

72小时热榜
热门版块
快速回复 返回顶部 返回列表