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)
示例
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中囊括了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
...
示例
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坐標處邊框的底部。
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坐標處邊框的右側。
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);函數即可輕鬆實現。