MS RFC 104:用嵌入的TrueType字体替换位图标签¶
- 日期
2013/09
- 作者
托马斯堡
- 联系方式
- 状态
采用
- 版本
MAPServer 7
1。现状¶
MapServer支持嵌入式位图字体,以便简单地呈现文本,而不需要外部字体文件或字体集。通过在标签块中使用小、小、中、大和大的关键字来激活这些关键字,但有许多限制:
它们只有agg渲染器支持。如果提供位图字体,cairo和kml渲染器将救市。GD是另一个唯一支持它们的渲染器,但是它在7.0版本中被删除了。
它们只支持ASCII字符集。重音字母或常用符号被忽略或替换为一个停止符字符
它们不支持旋转。跟随标签将导致错误,而显式旋转或自动标签将不正确地水平呈现。
他们的渲染质量没有达到今天的制图渲染预期。
但是,它们具有以下优势:
它们不需要依赖于外部字体文件,因此不需要创建或维护字体集文件。因此,它们是快速 Mapfile 原型的理想选择。
它们不经过freetype渲染,因此渲染速度非常快(考虑到它们的局限性,这似乎是公平的)。
1.1即将到来的演变¶
随着…的到来 MS RFC 98:标签/文本呈现大修 和 MS RFC 99:删除对gd渲染器的支持 维护对位图字体的支持需要代码中有相当多的缺点。考虑到这一点以及前面列举的其他限制,这个RFC建议删除整个MapServer代码库中的位图字体支持。
为了保持快速生成 Mapfile 原型和/或不必依赖外部TrueType字体和字体集的能力,它们将被嵌入的TrueType字体取代。
2。嵌入式TrueType字体¶
TrueType字体将被编码并作为二进制blob包含在MapServer库中。它将在mapfile用户未提供特定字体时使用,或者在请求位图字体时用作向后兼容性回退。
2.1影响¶
所有渲染器将自动支持嵌入的TrueType字体。
嵌入式TrueType字体将覆盖更大的字符集
嵌入的TrueType字体将支持旋转和跟随标签
代码将被清除并易于维护
渲染速度将略慢于位图字体。
由于渲染文本的图形质量,图像大小将略大于位图字体(由于抗锯齿)。
2.2向后兼容性¶
使用嵌入字体时渲染的图像将与以前使用位图字体的渲染不同。除此之外,不存在向后不兼容的情况:将忽略位图关键字和标签类型,并将小、小、中、大和大键盘映射到匹配视觉高度的整数字体大小。
三。实施细节¶
3.1受影响的文件¶
mapfile.c/h:解析器,向后兼容
mapagg.cpp,maplabel.c,textlayout.c,其他…:位图支持删除
3.2MapScript¶
可以扩展与位图相关的函数,以提供已删除该功能的警告。由于透明的向后兼容性处理,不需要进行其他更改。
3.3跟踪问题¶
TBD
第四章。讨论¶
我们嵌入的TrueType文件应具有允许此类使用的许可证,以及支持大多数已使用语言的字形覆盖范围,而不是太大,无法限制内存消耗。除非在注释期间另有决定,否则所选字体将是Linux发行版通常提供的dejavasonsconded.ttf truetype字体。
5.投票历史¶
+史蒂文、托马斯布、佩里克森、塔马斯、汤克、斯蒂芬、叶旺德沃塞纳、米克斯、丹尼尔和斯蒂芬