| 
UID2积分8682帖子2905主题199论坛币13045 威望16 EP值2349 MP值15 阅读权限200注册时间2011-8-3在线时间2597 小时最后登录2024-8-28
 
   
 | 
| 说明 
 普通文字与像素字, 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)
 
 | 
 |