UWP 手绘视频创作工具技术分享系列 - 文字的解析和绘制

简介: 原文:UWP 手绘视频创作工具技术分享系列 - 文字的解析和绘制本篇作为技术分享系列的第二篇,详细讲一下文字的解析和绘制,这部分功能的研究和最终实现由团队共同完成,目前还在寻找更理想的实现方式。 首先看一下文字绘制在手绘视频中的应用场景     文字是手绘视频中很重要的表现形式,应用场景很广,比如字幕、旁白和一些重要的文字说明提示。
原文: UWP 手绘视频创作工具技术分享系列 - 文字的解析和绘制

本篇作为技术分享系列的第二篇,详细讲一下文字的解析和绘制,这部分功能的研究和最终实现由团队共同完成,目前还在寻找更理想的实现方式。

首先看一下文字绘制在手绘视频中的应用场景

    文字是手绘视频中很重要的表现形式,应用场景很广,比如字幕、旁白和一些重要的文字说明提示。和普通视频,如 MV、电影等使用某一种固定字体,如宋体、微软雅黑字体不同的是,在手绘视频中,我们通常会使用一些很有个性化的字体,如毛笔字体、卡通字体和很多手写字体。另一个很大的区别,电影等中的问题,是整体出现的,不存在绘制的过程,所以只需要按照字体显示;而手绘视频中的文字,通常是以手绘的形式展出来的。下面两张图片分别是一个电影截图中的字幕和手绘视频中的一种火柴字体。

   

接下来介绍文字绘制的几种方案

    文字的静态显示过程,是通过读取特定字型的字体文件(ttf)中对应文字的矢量路径数据,以显示在屏幕上对应像素上的。对于不同的字型,文字的形状是不一样的,所以对应文字的路径数据也是不同的。因为是矢量路径数据,所以在放大和缩小时,文字才不会失真。

    文字的绘制,实际上是把文字对应的某种路径,按照时间和某种顺序描绘出来。下面介绍的几种市面上常见的方案都是基于这种方式:

1. InkScape 等文字转换路径的软件的绘制方式

    Inkscape是开源的矢量图像编辑软件,与Illustrator、Freehand、CorelDraw 等软件很相似,它使用 W3C 标准的 SVG 文件格式。它支持把输入的文字,按照字体大小,轮廓粗细,文字颜色等生成一个 SVG 文件。上一篇我们介绍了 SVG 的绘制方式,所以这里不赘述,我们主要来分析一下 InkScape 生成的 SVG 的数据来源和构成。虽然 InkScape 是比较主流的处理软件,但是它对文字的路径数据处理其实还是比较初级的方式:它会直接获取文字在 ttf 中存储的路径数据,未做特殊处理。而这种路径数据,虽然能准确的勾勒出文字,但是缺点也很明显,首先 ttf 路径是文字的边缘路径,换句话说它是围着文字的周边描绘的,而不是正常的笔迹;其次 ttf 中的路径是完全没有顺序可言的,完全没有正常笔迹构成的文字笔画和笔顺,所以整体来说它是不理想的。

    下面是一个文字 ”二“ 和 ”四“ 在 Inkscape 中绘制的原理,它会直接获取如图中蓝色箭头组成的路径,而最终绘制时的顺序也如蓝色箭头一样。因为 ”二“ 字由两个简单的横组成,所以笔顺还算正常;再来看 ”四“ 字,它的路径顺序跟笔顺完全不同,而是简单的把一些封闭图形勾勒出来,所以对于文字来说,这种绘制方式不够理想。

  

2. VideoScribe 的文字绘制方式

    VideoScribe 是一个老牌的英国公司,所做的事情也是手绘视频软件。它在文字绘制方面的表现,和真实的笔迹基本吻合,但是只针对英文字母和数字,并不支持汉字和其他文字。这里说明一下为什么英文和数字会更容易实现,其实也很好理解,英文字母大小写加起来只有 52 个字母,而数字一共只有 0-9 十个数字。所以针对英文字母和数字的绘制,可以预先针对每种字体,准备好这 52+10 个特定的路径,绘制时获取对应的文字和字体来绘制和显示。之所以不做汉字的适配,一方面是 VideoScribe 并没有重点推广中国市场,最主要的还是,汉字远比英文的情况复杂,汉字常用字就超过 3500 个。虽然它们都是由固定的十几个偏旁部首组成的,也有一些途径可以拿到每个汉字的笔画和笔顺,但是想得到某个汉字的每个笔画的相对位置,就没有办法了,所以想按照部首来组成汉字的路径,也就行不通了,这也是我们目前遇到的瓶颈。

3. 我们目前的实现方式

我们的实现方式,是基于文字的边缘路径,通过算法得到边缘中央的路径,也就是笔迹的路径,然后进行一定的重新排序和分组,得到最终绘制的路径进行绘制。

 

其中中间四个步骤的示例图如下:

4. 我们正在开发的方式

    如上面说到的,汉字的绘制,最大的问题在于文字过多,而每种字体的表现形式又有很大差异,通过获取笔顺的方式,很难匹配到多种字体中。我们目前正在尝试的方式是:

    ① 通过一些合作网站获取的一种正规字型的字体的路径数据,如微软雅黑这种没有笔画附加路径的字体,我们称为基础路径

    ② 获取常见汉字的笔顺和笔画组成

    ③ 对于每种字体,准备十几个部首的路径数据,覆盖所有汉字,我们称为部首路径

    ④ 绘制时针对每个汉字,先取得笔顺中对应的笔画,对应取得基础路径中对应笔顺的起点,在从部首路径中取得对应部首。

    ⑤ 以笔顺起点为起点,通过指定的缩放率,绘制这个部首。这样对每个部首做处理,就完成了文字的绘制。

这种做法,可以完成大部分字体的文字绘制,缺点时首先要获取到合适的基础路径数据,这点已经完成;其次是如果每种字型的部首起点差异较大,那么效果就不会特别理想。所以我们还在尝试更多的绘制方式,以达到针对每种字体的汉字的绘制。

 

 文字的解析和绘制方式就介绍到这里,目前虽然由解决方式,但是每种方式都有自己的问题,都不够理想,如果大家有更好的方式,欢迎和我交流,谢谢!

 

目录
相关文章
|
11天前
|
SQL 存储 关系型数据库
数据库开发之图形化工具以及表操作的详细解析
数据库开发之图形化工具以及表操作的详细解析
28 0
|
22天前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
63 2
|
2月前
|
数据可视化 搜索推荐 BI
深度解析好用项目管理工具的功能优势
在选择项目管理工具时,重点在于全面的功能和高性价比。好工具应具备资源利用图(避免过度分配或闲置资源),团队协作功能(促进沟通与进度追踪),质量管理(如问题跟踪和自定义工作流),项目规划和跟踪(甘特图支持),任务管理(任务分解和依赖关系),以及费用跟踪。Zoho Projects、Microsoft Project、Jira等工具各有价格差异,例如,对于50个用户,Microsoft Project最贵,Zoho Projects最实惠,性价比高,适合中小企业。
32 2
|
2月前
|
机器学习/深度学习 人工智能 编解码
哲学家解析Sora本质,AI视频离世界模拟器还有多远?
【2月更文挑战第24天】哲学家解析Sora本质,AI视频离世界模拟器还有多远?
29 2
哲学家解析Sora本质,AI视频离世界模拟器还有多远?
|
3天前
项目管理工具计划模板解析:项目管理工具的双重功能与创建方法
本文介绍了项目计划模板的含义和重要性。项目计划模板是用于规划项目结构的可编辑文档,帮助团队明确任务、分配责任和管理时间。模板有助于跟踪项目进度、避免任务冲突,并简化会议安排。创建模板通常涉及选择合适的项目管理工具,如Zoho Projects或Microsoft Excel,然后分解任务、定义日期并持续调整。在Zoho Projects中,用户可以按步骤创建模板,包括命名、添加任务和设置相关细节。
13 0
|
4天前
|
JavaScript 前端开发 开发者
Node.js的包管理和npm工具深度解析
【4月更文挑战第30天】本文深入解析Node.js的包管理和npm工具。包管理促进代码复用和社区协作,包包含元数据描述文件`package.json`和入口文件。npm提供搜索、安装、发布等功能,通过命令行进行操作,如`install`、`search`、`uninstall`。npm支持版本控制、全局安装、脚本定义及私有仓库。理解和熟练运用npm能提升Node.js开发效率。
|
18天前
|
数据采集 开发者 Python
使用urllib和BeautifulSoup解析网页中的视频链接
使用urllib和BeautifulSoup解析网页中的视频链接
|
2月前
|
算法 Unix Linux
【Linux 库管理工具】深入解析pkg-config与CMake的集成与应用
【Linux 库管理工具】深入解析pkg-config与CMake的集成与应用
77 0
|
2月前
|
存储 编解码 算法
【解码与渲染 异常情况】深入解析视频中绿色竖线现象(二)
【解码与渲染 异常情况】深入解析视频中绿色竖线现象
38 1
|
4天前
|
缓存 Java 开发者
10个点介绍SpringBoot3工作流程与核心组件源码解析
Spring Boot 是Java开发中100%会使用到的框架,开发者不仅要熟练使用,对其中的核心源码也要了解,正所谓知其然知其所以然,V 哥建议小伙伴们在学习的过程中,一定要去研读一下源码,这有助于你在开发中游刃有余。欢迎一起交流学习心得,一起成长。