Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于算法实现 #7

Open
bilibiliou opened this issue Jan 18, 2017 · 2 comments
Open

关于算法实现 #7

bilibiliou opened this issue Jan 18, 2017 · 2 comments

Comments

@bilibiliou
Copy link

Hi , 虽然您已经open Source了 但能否提供一个 关于该算法的剖析 或是 相关论文的link。

有兴趣 研究 使用 js + canvas 转为 web 版本,并增加新功能(哥特 或 其他体)

不胜感激

@MrVPlusOne
Copy link
Owner

MrVPlusOne commented Jan 18, 2017

Hi,

  • 该算法的大致思路是用一系列三次Bezier曲线来表示每个字母,Bezier曲线可视为一个Double参数t到二维点的映射(t->Vec2)。因为字母书写时有粗细变化,所以每段曲线还需要提供配套的一个Thickness函数(t->Thickness)。每个字母用Muse自带的字体编辑器可以设计一个模板,然后该算法在渲染这些字体时负责将这些模板拼接成一个个单词。拼接时大体思路是将前一个字母的最后一段和后一个字母的第一段合并成新的一段。渲染时先计算好单词所对应的曲线,再将这些带粗细的曲线用一系列四边形绘制出来。
  • 目前还没有相关的论文
  • 我觉得转成web版本应该是可行的,不过用js的话得重复实现很多复杂的逻辑。Scala.js也许是一种更省事的方案,但性能可能会是个问题。不过目前算法花在绘制四边形上的时间似乎比计算这些曲线更长。
  • 字体的话这个算法一开始就是考虑的用来绘制圆体,如果是其他类似风格的字体应该问题不大。(比较圆滑,容易连接)

@bilibiliou
Copy link
Author

ok , 待我研究一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants