如何从字体中获取矢量?
我想找一种方法,可以把字符转换成矢量形式(点和曲线),就像在这个SO问题中描述的那样,不过我想用Python来实现,而不是Java。有没有人知道怎么做?
2 个回答
这个问题其实是关于如何用图形来表示一个向量。你可以开始了解一下matplotlib和Pyplot这两个工具。
更新
我刚发现一个相当完整的Python库,可以用来操作FreeType库:
这个库是基于ctypes的,属于比较底层的东西,但里面的示例很清楚地展示了如何使用它,包括如何获取字形的几何形状,比如用线条和弧形来描述等。FreeType本身可以处理你需要的任何字体文件格式。
原始回答
我不知道在Java问题上,大家是否得到了他们想要的答案,但这绝对不是个简单的事情。
在Java中,字体渲染引擎作为Java对象在JVM内部运行,这可能是可行的。而Python的哲学不同,像渲染到屏幕这样的底层操作是用本地代码完成的,而不是通过Python对象在解释器虚拟机中完成。
所以,在Java中,你可以连接到实际渲染字符的类,并从中提取数据;而在Python中,这些操作和你的实际代码之间隔着好几层代码。
说完这个区别,你的问题中信息不够多,无法给出有意义的答案:你想要处理什么类型的字体文件呢?有好几十种类型呢!:-)
你打算在什么场景下使用这个字体路径信息?我是说,你会用哪些库来渲染图形,或者你只是想把数据输出到一个可读的文件?这很重要,因为根据你打算用来渲染图形的库,可能会有不同的方法来访问字符信息,比如使用Qt、Cairo、pango、Windows原生、pygame等等。
不过,有一种字体文件格式,获取你想要的信息相对简单:SVG字体,其中的点和曲线会以XML数据的形式表示。
另外,你可以看看fontforge项目——它可以处理多种字体格式,并且可以用Python进行脚本编写。但这就是我所知道的全部了。(http://fontforge.org)