OpenSCAD 用户手册/文本
text
模块使用本地系统上安装的字体或作为单独字体文件提供的字体,将文本创建为 2D 几何对象。
[注意: 需要 2015.03 版本]
参数
- text
- 字符串。要生成的文本。
- size
- 十进制。生成的文本的升高(基线以上的高度)约为给定值。默认值为 10。不同的字体可能有所不同,并且可能不会完全填充指定的大小,通常它们渲染得略小。在公制系统中,大小为 25.4(1 英寸帝国)将对应于 100pt ⇒ 12pt 字体大小将为 12×0.254 用于公制转换或 0.12 英寸帝国。
- font
- 字符串。应使用的字体的名称。这不是字体文件的名称,而是逻辑字体名称(由 fontconfig 库内部处理)。这也可以包含样式参数,见下文。可以使用字体列表对话框(帮助 -> 字体列表)获取已安装字体的列表和样式。
- halign
- 字符串。文本的水平对齐方式。可能的值为“left”、“center”和“right”。默认值为“left”。
- valign
- 字符串。文本的垂直对齐方式。可能的值为“top”、“center”、“baseline”和“bottom”。默认值为“baseline”。
- spacing
- 十进制。用于增加/减少字符间距的因子。默认值为 1,导致字体正常间距,给定值大于 1 导致字母间距更大。
- direction
- 字符串。文本流的方向。可能的值为“ltr”(从左到右)、“rtl”(从右到左)、“ttb”(从上到下)和“btt”(从下到上)。默认值为“ltr”。
- language
- 字符串。文本的语言(例如,“en”、“ar”、“ch”)。默认值为“en”。
- script
- 字符串。文本的脚本(例如,“latin”、“arabic”、“hani”)。默认值为“latin”。
- $fn
- 用于细分 freetype 提供的曲线路径段
示例
text("OpenSCAD");
- 注释
为了允许指定特定的 Unicode 字符,您可以在字符串中使用以下转义代码指定它们;
- \x03 - 十六进制字符值(仅支持01到7f的十六进制值)
- \u0123 - 使用 4 个十六进制数字的 Unicode 字符(注意:小写\u)
- \U012345- 使用 6 个十六进制数字的 Unicode 字符(注意:大写\U)
空字符 (NUL) 映射到空格字符 (SP)。
assert(version() == [2019, 5, 0]); assert(ord(" ") == 32); assert(ord("\x00") == 32); assert(ord("\u0000") == 32); assert(ord("\U000000") == 32);
示例
t="\u20AC10 \u263A"; // 10 euro and a smilie
字体由其逻辑字体名称指定;此外,可以添加样式参数以选择特定的字体样式,例如“粗体”或“斜体”,例如
font="Liberation Sans:style=Bold Italic"
字体列表对话框(在帮助 > 字体列表中可用)显示每个可用字体的字体名称和字体样式。作为参考,该对话框还显示字体文件的路径。您可以在字体列表中拖动字体,将其拖放到编辑器窗口中以在 text() 语句中使用。
OpenSCAD 包含字体Liberation Mono、Liberation Sans 和Liberation Serif。因此,由于字体通常因平台类型而异,因此使用这些包含的字体很可能在平台之间移植。
出于此原因,建议使用其中一种字体进行常见/休闲文本使用。Liberation Sans 是默认字体,以鼓励这样做。
除了已安装的字体(对于 Windows,仅以管理员身份为所有用户安装的字体),还可以添加项目特定的字体文件。支持的字体文件格式是 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
...
在 Windows 下,字体存储在 Windows 注册表中。要获取包含字体文件名的文件,请使用以下命令
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /s > List_Fonts_Windows.txt
示例
square(10); translate([15, 15]) { text("OpenSCAD", font = "Liberation Sans"); } translate([15, 0]) { text("OpenSCAD", font = "Liberation Sans:style=Bold Italic"); }
- top
- 文本与给定 Y 坐标处边界框的顶部对齐。
- 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]); } } }
多行文本不支持使用 `text()`,但将每行平移 size × .72 将导致前导(行间距)为 1 em(em= 字体主体高度或点)。可以添加 20%(× 1.2)。
- 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]); } } }
可以使用 linear_extrude 函数将文本从二维对象更改为三维对象。
//3d Text Example linear_extrude(4) text("Text");