- UID
- 2
- 积分
- 8682
- 帖子
- 2905
- 主题
- 199
- 论坛币
- 11742
- 威望
- 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)
复制代码 完整工程见附件
|
|