OpenSCAD用户手册/文本
text
模块借助本地系统安装的字体或用户提供的单独字体文件,以2D几何对象的方式来创建文本。
[请注意: 需要使用版本 2015.03]
参数
- text
- 字符串。待生成的文本。
- size
- 十进制数。生成的文本将逼近所指定值的大小(也就是基线以上的高度)。 默认值为10。
请注意,特定字体或有差异,可能会导致不能按指定的size精确地填充字体,通常情况下填充的效果会稍小一些。
- font
- 字符串。所用的字体名称。此参数并非字体文件的名称,而是字体的逻辑名称 (即,fontconfig库内部处理时所用名称)。此参数中还可以包括一个字体样式参数,参见下文。系统中安装的字体与样式列表可以通过字体列表(font list)对话框来获取 (Help -> Font List)。
- halign
- 字符串。文本的水平对齐方式。取值可以为:"left(左对齐)", "center(居中对齐)" 与 "right(右对齐)". 默认值为"left"。
- valign
- 字符串。文本的垂直对齐方式。取值可以为"top(顶部对齐)", "center(居中对齐)", "baseline(基线对齐)" 与 "bottom(底部对齐)"。默认值为"baseline"。
- spacing
- 十进制数。用于增减字符间距的因子。默认值1采用的是字体的一般间距,而大于1的值将导致字母间的距离更大。
- direction
- 字符串。文本流的方向。取值可以为"ltr" (左 -> 右), "rtl" (右 -> 左), "ttb" (上 -> 下) 与 "btt" (下 -> 上)。默认值为"ltr"。
- language
- 字符串。文本的语言。默认值为"en(英文)"。
- script
- 字符串。文本的脚本。默认值为"latin(拉丁文)"。
- $fn
- 用于细分freetype所提供的曲线路径片段(curved path segments)
示例
text("OpenSCAD");
- 请注意
为了可以使用特殊的Unicode字符,您可以在字符串中借助以下转义码来指定它们:
\x03 - 单个16进制字符 (仅限于01h - 7fh范围内的值)
\u0123 - 以4个十六进制数表示的unicode字符 (请注意: 要使用小写字母)
\U012345 - 以6个十六进制数表示的unicode字符 (请注意: 要使用大写字母)
示例
t="\u20AC10 \u263A"; // 10欧元以及1个笑脸
使用字体及其样式
[编辑]指定字体依赖于其字体逻辑名;另外,还能利用像"bold" 或 "italic"等样式参数为它选择字体的样式。这样,指定字体的语句就形如:
font="Liberation Sans:style=Bold Italic"
字体列表(font list)对话框中给出了每个可用字体的字体名称及其样式。另外,此列表还提供了字体文件的所在位置以供参考。您可以直接将字体列表中的字体拖拽至编辑器窗口,以便用于text()语句。
OpenSCAD中囊括了Liberation Mono, Liberation Sans, Liberation Sans Narrow 与 Liberation Serif字体。因此,就算不同的平台采用不同的字体,而OpenSCAD却依然可以跨平台保持其字体的兼容性。
出于上述原因,不管是对于常用文本/非正式文本而言,墙裂建议您使用上述内置字体之一。Liberation Sans是程序推荐使用的默认字体。
为了安装字体,可能需要为工程添加特定的字体文件。OpenSCAD支持的字体格式为TrueType字体(*.ttf)与 OpenType字体(*.otf)。另外,还需要使用use<>语句来注册字体文件。
use <ttf/paratype-serif/PTF55F.ttf>
注册后的字体也将位于字体列表对话框之中,因此在字体逻辑名称未知的情况下,也可以在注册后借助字体列表来查询。
OpenSCAD通过fontconfig来查找并管理各种字体,因此,也能够以命令行的方式借助fontconfig工具列出系统中配置的字体,其格式就像在GUI对话框中所示的那样。
$ fc-list -f "%-60{{%{family[0]}%{:style[0]=}}}%{file}\n" | sort
...
Liberation Mono:style=Bold Italic /usr/share/fonts/truetype/liberation2/LiberationMono-BoldItalic.ttf
Liberation Mono:style=Bold /usr/share/fonts/truetype/liberation2/LiberationMono-Bold.ttf
Liberation Mono:style=Italic /usr/share/fonts/truetype/liberation2/LiberationMono-Italic.ttf
Liberation Mono:style=Regular /usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf
...
示例
square(10); translate([15, 15]) { text("OpenSCAD", font = "Liberation Sans"); } translate([15, 0]) { text("OpenSCAD", font = "Liberation Sans:style=Bold Italic"); }
对齐
[编辑]垂直对齐
[编辑]- top
- 文本对齐于指定Y坐标处边框(bounding box)的顶部。
- center
- 文本对齐于指定Y坐标处边框的中心。
- baseline
- 文本对齐于指定Y坐标处的字体基线。此项为默认值。
- bottom
- 文本对齐于指定Y坐标处边框的底部。
text = "Align"; font = "Liberation Sans"; valign = [ [ 0, "top"], [ 40, "center"], [ 75, "baseline"], [110, "bottom"] ]; for (a = valign) { translate([10, 120 - a[0], 0]) { color("red") cube([135, 1, 0.1]); color("blue") cube([1, 20, 0.1]); linear_extrude(height = 0.5) { text(text = str(text,"_",a[1]), font = font, size = 20, valign = a[1]); } } }
水平对齐
[编辑]- left
- 文本对齐于指定X坐标处边框的左侧。此项为默认值。
- center
- 文本对齐于指定X坐标处边框的中心。
- right
- 文本对齐于指定X坐标处边框的右侧。
text = "Align"; font = "Liberation Sans"; halign = [ [10, "left"], [50, "center"], [90, "right"] ]; for (a = halign) { translate([140, a[0], 0]) { color("red") cube([115, 2,0.1]); color("blue") cube([2, 20,0.1]); linear_extrude(height = 0.5) { text(text = str(text,"_",a[1]), font = font, size = 20, halign = a[1]); } } }
可渲染3D文本
[编辑]只需利用linear_extrude(height);函数即可轻松实现。