跳至內容

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);函數即可輕鬆實現。