Closed kafuumi closed 2 years ago
如果一条弹幕中间部分带有回车符,在转换成ass文件后,导致回车符后面的字符另起一行,从而导致这部分内容不会被当成字幕内容。
例如,原始的xml数据为:
<d p="1.085,1,25,5566168,1649656743447,0,xxxx,0" user="xxxx">呵 呵 比 你 们 更 喜 欢 晚 晚</d>
转换后对应的ass内容为:
Dialogue: 2,0:00:01.08,0:00:16.09,Float,,0,0,0,,{\move(1280, 224, -660, 224)\c&Hd8ee54&}呵 呵 比 你 们 更 喜 欢 晚 晚
这样的字幕内容会导致最终的渲染只有内容 呵,而 呵比你们更喜欢晚晚 因为格式问题被当作错误数据而不被渲染。
呵
呵比你们更喜欢晚晚
在ass格式中,如果要实现换行效果需要显式地使用\N来代替不可见的回车符(参见:aegisub手册)。
\N
也就是说,如果要正确显示上面提到的内容,对应的ass内容应该为:
Dialogue: 2,0:00:01.08,0:00:16.09,Float,,0,0,0,,{\move(1280, 224, -660, 224)\c&Hd8ee54&}呵\N呵\N比\N你\N们\N更\N喜\N欢\N晚\N晚
所以在生成ass文件时需要进行一次字符替换,将\n替换为\N。
\n
确认是bug,修复一下
额外补充一点:有些弹幕的首尾部分也会存在回车,对这部分弹幕如果直接将回车换成\N有可能会影响最终的排布效果,建议在替换前先去除掉弹幕内容首尾部分的回车。
close via 63331d52ffbbd00ae9f43db6c4c921eafe025cef
环境说明
问题描述
如果一条弹幕中间部分带有回车符,在转换成ass文件后,导致回车符后面的字符另起一行,从而导致这部分内容不会被当成字幕内容。
例如,原始的xml数据为:
转换后对应的ass内容为:
这样的字幕内容会导致最终的渲染只有内容
呵
,而呵比你们更喜欢晚晚
因为格式问题被当作错误数据而不被渲染。解决方案
在ass格式中,如果要实现换行效果需要显式地使用
\N
来代替不可见的回车符(参见:aegisub手册)。也就是说,如果要正确显示上面提到的内容,对应的ass内容应该为:
所以在生成ass文件时需要进行一次字符替换,将
\n
替换为\N
。