TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua
标题:
文字定位问题修复方法
[打印本页]
作者:
milkyjing
时间:
2012-2-24 21:16:15
标题:
文字定位问题修复方法
说明
普通文字与像素字, ASS绘图文字, 文字Mask等有时会有一定的定位偏差(某一部分特定字体不存在该问题), 这个问题的产生原因比较复杂, 就不细讲了. 本教程主要是针对如何修复该问题. 方法比较死板, 虽然很简单, 但操作起来比较繁琐.
该问题, 有时候可以通过一些小窍门避开, 需要在实践中掌握.
本方法的主要思想是, 通过眼睛观察, 然后手工调整文字定位. 需要具体问题具体分析.
例子
本例子调整的是ASS绘图文字的定位, 有时候修改普通文字定位会来得简单一些.
代码如下
from tcaxPy import *
def tcaxPy_Init():
global _Fs
global _Spacing
global Font
global pos_fix
_FontFileName = GetVal(val_FontFileName)
_FaceID = GetVal(val_FaceID)
_Fs = GetVal(val_FontSize)
_Spacing = GetVal(val_Spacing)
Font = InitFont(_FontFileName, _FaceID, _Fs, _Spacing, GetVal(val_SpaceScale), MakeRGB(0, 0, 0), 0, False)
pos_fix = {'こ':(-0.5, 0.3), 'の':(0, 0.6), '空':(0, 0.4), '彼':(-0.3, 0.8), '方':(0.4, 0)}
def tcaxPy_Fin():
FinFont(Font)
def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):
ASS_BUF = [] # 保存ASS特效
TCAS_BUF = [] # 保存TCAS特效
##### 主要特效编写操作 #####
dx = _x - int((_a + _Spacing) / 2 + 0.5) # an7, standard way
dy = _y - int(_Fs / 2 + 0.5) # an7, standard way
outline = TextOutlineDraw(Font, _txt, 0, 0)
# with fix
ass_main(ASS_BUF, SubL(_start, _end), pos(_x, _y) + alpha1(255) + color3('0000FF') + bord(1), _txt)
ass_main(ASS_BUF, SubL(_start, _end), an(7) + pos(dx + pos_fix[_txt][0], dy + pos_fix[_txt][1]) + color1('00FF00') + bord(0), '{\\p7}' + outline + '{\\p0}')
# without fix
ass_main(ASS_BUF, SubL(_start, _end), pos(_x, _y + 100) + alpha1(255) + color3('0000FF') + bord(1), _txt)
ass_main(ASS_BUF, SubL(_start, _end), an(7) + pos(dx, dy + 100) + color1('00FF00') + bord(0), '{\\p7}' + outline + '{\\p0}')
##### 将结果返回给tcax进行处理 #####
return (ASS_BUF, TCAS_BUF)
复制代码
完整工程见附件
附件: [完整工程]
pos_fix_method.rar
(2012-2-24 21:16:05, 2.22 KB) / 下载次数 1915
http://tcax.org/forum.php?mod=attachment&aid=MzM5fGZlMGY2Y2U3fDE3MzIyMTg1MjZ8MHww
作者:
四月一日 君寻
时间:
2012-2-24 22:25:19
嗯嗯 只能这样了
欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://tcax.org/)
Powered by Discuz! X2