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");
