跳轉到內容

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 文字示例
華夏公益教科書