跳转到内容

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 提供的曲线路径段

示例

示例 1:结果。
text("OpenSCAD");



注释

为了允许指定特定的 Unicode 字符,您可以在字符串中使用以下转义代码指定它们;

  • \x03    - 十六进制字符值(仅支持017f的十六进制值)
  • \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 字体列表对话框

OpenSCAD 包含字体Liberation MonoLiberation SansLiberation 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


示例

示例 2:结果。
 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 坐标处边界框的底部对齐。
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]);
     }
   }
 }


多行文本不支持使用 `text()`,但将每行平移 size × .72 将导致前导(行间距)为 1 em(em= 字体主体高度或点)。可以添加 20%(× 1.2)。

水平对齐

[编辑 | 编辑源代码]
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 函数将文本从二维对象更改为三维对象。

//3d Text Example
linear_extrude(4)
    text("Text");
3D 文本示例
华夏公益教科书