文字定位问题修复方法 - 相关教程 - TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua - Powered by Discuz!

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

 找回密码
 加入社区
查看: 2365|回复: 1

文字定位问题修复方法 [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-24 21:16:15 |显示全部楼层
说明

普通文字与像素字, ASS绘图文字, 文字Mask等有时会有一定的定位偏差(某一部分特定字体不存在该问题), 这个问题的产生原因比较复杂, 就不细讲了. 本教程主要是针对如何修复该问题. 方法比较死板, 虽然很简单, 但操作起来比较繁琐.

该问题, 有时候可以通过一些小窍门避开, 需要在实践中掌握.

本方法的主要思想是, 通过眼睛观察, 然后手工调整文字定位. 需要具体问题具体分析.


例子

本例子调整的是ASS绘图文字的定位, 有时候修改普通文字定位会来得简单一些.
代码如下
  1. from tcaxPy import *

  2. def tcaxPy_Init():
  3.     global _Fs
  4.     global _Spacing
  5.     global Font
  6.     global pos_fix
  7.     _FontFileName = GetVal(val_FontFileName)
  8.     _FaceID       = GetVal(val_FaceID)
  9.     _Fs           = GetVal(val_FontSize)
  10.     _Spacing = GetVal(val_Spacing)
  11.     Font = InitFont(_FontFileName, _FaceID, _Fs, _Spacing, GetVal(val_SpaceScale), MakeRGB(0, 0, 0), 0, False)
  12.     pos_fix = {'こ':(-0.5, 0.3), 'の':(0, 0.6), '空':(0, 0.4), '彼':(-0.3, 0.8), '方':(0.4, 0)}

  13. def tcaxPy_Fin():
  14.     FinFont(Font)

  15. def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):
  16.     ASS_BUF  = []        # 保存ASS特效
  17.     TCAS_BUF = []        # 保存TCAS特效
  18.     ##### 主要特效编写操作 #####
  19.     dx = _x - int((_a + _Spacing) / 2 + 0.5)    # an7, standard way
  20.     dy = _y - int(_Fs / 2 + 0.5)                # an7, standard way
  21.     outline = TextOutlineDraw(Font, _txt, 0, 0)
  22.     # with fix
  23.     ass_main(ASS_BUF, SubL(_start, _end), pos(_x, _y) + alpha1(255) + color3('0000FF') + bord(1), _txt)
  24.     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}')
  25.     # without fix
  26.     ass_main(ASS_BUF, SubL(_start, _end), pos(_x, _y + 100) + alpha1(255) + color3('0000FF') + bord(1), _txt)
  27.     ass_main(ASS_BUF, SubL(_start, _end), an(7) + pos(dx, dy + 100) + color1('00FF00') + bord(0), '{\\p7}' + outline + '{\\p0}')
  28.     ##### 将结果返回给tcax进行处理 #####
  29.     return (ASS_BUF, TCAS_BUF)
复制代码
完整工程见附件

pos_fix_method.rar

2.22 KB, 下载次数: 616

完整工程

Moderator

youkaze

Rank: 5Rank: 5

发表于 2012-2-24 22:25:19 |显示全部楼层
嗯嗯 只能这样了
您需要登录后才可以回帖 登录 | 加入社区

GitHub|TCAX 主页

GMT+8, 2018-8-15 08:00

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH