TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

 找回密码
 加入社区
查看: 3345|回复: 18

[已解决] 部分字体下文字定位的错误 (font size issue) [复制链接]

Rank: 5Rank: 5

发表于 2012-2-28 22:17:36 |显示全部楼层
先上图:

100版本:

110

110


118版本:

118

118


第一行是ASS字幕,第二行是TCAS字幕,字体使用的是微软雅黑。

可以看出118版本的ASS字幕,字与字的间距变大了,显然这么大的字距是错误的。

回帖推荐

milkyjing 发表于19楼  查看完整内容

一波三折之后, 应该算是终于找到正确的方法了... (计算一个合理的FontSize) 估计会保持以VSFilter为基准... 这样的话, 只有118是脱离这基准的... ---> 但之前的所有版本其实都包含了这个BUG, 只是在这里118体现得更明显一点... 大概下个版本就可以修复这个恼人的字体大小问题了... p.s. 关于定位问题, 还未有很理想的解决方案, 目前的一个想法是编写一个小程序, 用来帮助校正位置... ----------------------- ...

milkyjing 发表于18楼  查看完整内容

努力了一下午, 貌似终于见到一丝曙光了... 不过, 大致的修正方向已经确定了. 由于GDI与FreeType之前的差异性(尝试了所以字体大小定义方式, 也找不到一个对所有字体都适用的, 能让他们输出相同大小的字符的方法), 所以只能引入一个新的字体大小, 让TCC中设置的字体大小作为参照(不管是指定给GDI或是FT, 对应的为ASS普通文字与其他类型文字), 程序自动计算出一个字体大小给另一个字体引擎, 从而使两个引擎的结果相 ...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 22:22:58 |显示全部楼层
不应该是 "这么小的字" 是错误的么?

定义的字体大小是多少? 同样的大小, 换个日文字体试试

Rank: 5Rank: 5

发表于 2012-2-28 22:25:44 |显示全部楼层
118版的ASS字幕的字与字的间距不应该变大,应该跟100版本字与字的间距相同才对!

Rank: 5Rank: 5

发表于 2012-2-28 22:33:50 |显示全部楼层
milkyjing 发表于 2012-2-28 22:22
不应该是 "这么小的字" 是错误的么?

定义的字体大小是多少? 同样的大小, 换个日文字体试试

难道我们不是应该让TCAX生成的ASS字幕与直接编写ASS字幕的效果一样吗?最终ASS字幕是要靠VSFilter来解析的……

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 22:37:46 |显示全部楼层
lijingjie 发表于 2012-2-28 22:25
118版的ASS字幕的字与字的间距不应该变大,应该跟100版本字与字的间距相同才对! ...

恩, 我明白你的意思了, 是我看问题不周到了, 只以TCAS的标准去衡量问题. 真是矛盾啊. 不, 应该说纠结-_-

我总觉得ASS(或者说VSFilter)字体大小有问题, 但它既然这样子了, 如果我们勉强改个看起来更加正确的, 用到错误的地方, 也就成了错误的了.

其实我最头疼的还是英文字体... 如果原来的定义方式对英文字体也适用的话, 我大可把cairo和magick的代码给改了来迎合ASS.

另外, 对于同样的字体大小, 旧的定义方式, 雅黑等字体会明显偏小我也挺纠结的. 唯一值得庆幸的是, 对日文字体影响不大? (我也没有做太多的实验来证实这个)

p.s. 也许还是返回原来的方式更好点? 毕竟ASS还是主流. 我再考虑考虑 (撞豆腐...


Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 22:38:24 |显示全部楼层
lijingjie 发表于 2012-2-28 22:33
难道我们不是应该让TCAX生成的ASS字幕与直接编写ASS字幕的效果一样吗?最终ASS字幕是要靠VSFilter来解析 ...

恩, 你说的对

Moderator

youkaze

Rank: 5Rank: 5

发表于 2012-2-28 22:41:22 |显示全部楼层
是不是我要用回1.0.0呢 等待BUG修正 话说帮忙测试的时候还真没注意这个问题- -

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 22:41:48 |显示全部楼层
七海の游风 发表于 2012-2-28 22:41
是不是我要用回1.0.0呢 等待BUG修正 话说帮忙测试的时候还真没注意这个问题- - ...


因为你用的日文字体吧?

p.s. 这问题没那么简单... 毕竟英文字体的问题还留在那儿呢...

Moderator

youkaze

Rank: 5Rank: 5

发表于 2012-2-28 22:42:31 |显示全部楼层
milkyjing 发表于 2012-2-28 22:41
因为你用的日文字体吧?

确实是日文字体- -

Rank: 5Rank: 5

发表于 2012-2-28 22:44:18 |显示全部楼层
milkyjing 发表于 2012-2-28 22:37
恩, 我明白你的意思了, 是我看问题不周到了, 只以TCAS的标准去衡量问题. 真是矛盾啊. 不, 应该说纠结-_-
...

纠结啊,纠结!矛盾啊,矛盾!

毕竟不能让ASS字幕成为118版那么大间距,否则就舍本逐末了,还是想想其他办法来平衡ASS和TCAS吧……

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 22:50:17 |显示全部楼层
lijingjie 发表于 2012-2-28 22:44
纠结啊,纠结!矛盾啊,矛盾!

毕竟不能让ASS字幕成为118版那么大间距,否则就舍本逐末了,还是想想其他 ...

恩, 确实纠结-_-|

可能在天朝, 没几个人用英文字体, 其实这问题一直存在着的, 只是老的定义方式对中文支持还算不错. 光返回以前的用法, 也没有实际的解决问题... 还得花时间研究研究..

p.s. 你可以用100 sp1的tcax.exe替换118的... (别的不需要换...), 暂时先用着吧...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 22:57:18 |显示全部楼层
噗... 突然想吐槽字幕了...

Rank: 5Rank: 5

发表于 2012-2-28 23:01:09 |显示全部楼层
milkyjing 发表于 2012-2-28 22:57
噗... 突然想吐槽字幕了...

应该吐槽VSFilter,刚刚试了最新版,还是一个样!我也感觉VSFilter是错误的,文字怎么能那么小……

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 23:10:07 |显示全部楼层
lijingjie 发表于 2012-2-28 23:01
应该吐槽VSFilter,刚刚试了最新版,还是一个样!我也感觉VSFilter是错误的,文字怎么能 ...

么办法... 全部丢掉不用又太可惜了...

唉, 这种问题, 根本的解决办法还是得从代码入手... 改天找皮神交流交流... (貌似他有玩过VSFilter的代码..

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-29 00:11:28 |显示全部楼层
想到一個雖然不算完美,但應該確實可行的辦法:-P
白天起來實驗一下XD

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-29 09:33:13 |显示全部楼层
路過 我就吐槽一下字幕好了

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-29 13:01:58 |显示全部楼层
皮神给了一个不错的链接, 先保存下 http://lists.gnu.org/archive/html/freetype/2010-03/msg00007.html


----------------------- 2012-03-01 22:38 编辑 -------------------

刚注册了个FreeType的Mailing List就让我找到了...

http://lists.nongnu.org/archive/ ... 07-01/msg00048.html

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-29 15:30:08 |显示全部楼层
努力了一下午, 貌似终于见到一丝曙光了...

不过, 大致的修正方向已经确定了.

由于GDI与FreeType之前的差异性(尝试了所以字体大小定义方式, 也找不到一个对所有字体都适用的, 能让他们输出相同大小的字符的方法), 所以只能引入一个新的字体大小, 让TCC中设置的字体大小作为参照(不管是指定给GDI或是FT, 对应的为ASS普通文字与其他类型文字), 程序自动计算出一个字体大小给另一个字体引擎, 从而使两个引擎的结果相同.

使用该解决方案应该能得到一个最理想的结果, 但会对以前的脚本(用到了像素字, Mask, tcas等非纯ASS普通文字特效)造成一定的兼容性问题, 好在修改起来应该会非常容易 --> 只需要修改 GetVal(val_FontSize) 为 GetVal(val_ftFontSize) 或 GetVal(val_gdiFontSize) 即可, GetVal(val_FontSize)仍然会保留, 其含义应该会等价于 GetVal(val_gdiFontSize) --> 也即ASS普通文字的大小定义.

具体要看最终实现以及影响范围评估而定.

-------------- 19:12 编辑 ----------------

   惊奇的发现用目前这算法不会造成任何兼容性问题... XD



Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-29 18:04:42 |显示全部楼层
一波三折之后, 应该算是终于找到正确的方法了... (计算一个合理的FontSize)

估计会保持以VSFilter为基准... 这样的话, 只有118是脱离这基准的... ---> 但之前的所有版本其实都包含了这个BUG, 只是在这里118体现得更明显一点...

大概下个版本就可以修复这个恼人的字体大小问题了...

p.s. 关于定位问题, 还未有很理想的解决方案, 目前的一个想法是编写一个小程序, 用来帮助校正位置...

------------------------------- 23:12 编辑 -----------------------------

新版本已发布 http://www.tcax.org/forum.php?mod=viewthread&tid=13

呼.. 感谢皮神陪我折腾了一个下午...

------------------------------ 2012-03-03 11:39 编辑 -------------------

测试用例 http://www.tcax.org/forum.php?mo ... =1654&fromuid=2


您需要登录后才可以回帖 登录 | 加入社区

GitHub|TCAX 主页

GMT+8, 2018-10-22 13:07

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH