设计矢量字体引擎
Designing a vectored font engine
我正在尝试设计一个矢量字体引擎,就像Atari 1979中的引擎一样。我在保存预定义的字符集及其坐标时遇到了问题,我不知道保存这些多边形的最佳数据结构是什么,也不知道为此设计类的最佳方法是什么。这是我的审判,我对此感到非常不舒服。
class Character
{
public:
Character();
public:
int ascii;
int strokes;
std::vector<ci::Vec2i> points;
};
void VectorFont::Init_Chars()
{
for (int i=0; i<1;i++)
{
Character char_A;
char_A.ascii = 65;
char_A.strokes = 6;
ci::Vec2i point_1 = ci::Vec2i(-6,-4);
ci::Vec2i point_2 = ci::Vec2i(0,8);
ci::Vec2i point_3 = ci::Vec2i(0,8);
ci::Vec2i point_4 = ci::Vec2i(6,-4);
ci::Vec2i point_5 = ci::Vec2i(4,0);
ci::Vec2i point_6 = ci::Vec2i(-4,0);
char_A.points.push_back(point_1);
char_A.points.push_back(point_2);
char_A.points.push_back(point_3);
char_A.points.push_back(point_4);
char_A.points.push_back(point_5);
char_A.points.push_back(point_6);
chars.push_back(char_A);
}
}
由于这些字符有洞,您需要定义一个Path
类:
class Path
{
public:
std::vector<ci::Vec2i> points;
int orientation; // 1 for fill, 0 for hole.
}
Path
是点和方向的集合。你的路径应该是封闭的,也就是说,第一点和最后一点是相同的。如果方向为1,则表示填充黑色。如果是0,就切一个洞。
然后,Character
类将有一个Paths集合,这些Paths将是填充或洞。
上面只是描述了填充和孔上的点的数据结构。必须编写一个引擎来将该数据结构转换为像素。这是另一个话题。
相关文章:
- 在C++中测量postscript字体宽度
- 当使用带有VS2019或VSCode的虚幻引擎4.24.2时,我如何修复这些错误的Intellisense错误
- Unity在虚幻引擎4中的"Vector3.Slerp"等效C++?
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 在虚幻引擎中删除NXOpen对象时崩溃
- 引擎节点:未定义的符号:_ZTV6Config
- Agora.io 虚幻引擎插件构建错误
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 无法在 Arch Linux 中启动虚幻引擎 4
- 在虚幻引擎中触发C++ dll的事件
- 在 C/C++ 中加载 OpenSSL 自定义引擎
- 组件上的虚幻引擎可蓝图UFUNCTION会导致构建错误
- SetCurrentConsoleFontEx() 不适用于自定义安装的字体
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- C++ wxWidgets:在创建小部件后设置字体
- C++ wxWidgets:更改大小器的字体
- C++ 位图中的 ttc 字体
- 提高基于组件的游戏引擎的效率
- 设计矢量字体引擎