跳转到内容

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)

示例

示例1: 执行效果。
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字体列表对话框

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
...

示例

示例2: 执行效果。
 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坐标处边框的底部。
OpenSCAD垂直文本对齐
 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坐标处边框的右侧。
OpenSCAD水平文本对齐
 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);函数即可轻松实现。