當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R Hershey R 中的好時矢量字體


R語言 Hershey 位於 grDevices 包(package)。

說明

如果 family 圖形參數(請參閱 par )已設置為 Hershey 字體之一(請參閱“詳細信息”),則使用 Hershey 矢量字體來呈現文本。

使用 textcontour 函數時,可以通過 vfont 參數選擇 Hershey 字體,該參數是長度為 2 的字符向量(有關有效值,請參閱“詳細信息”)。這允許選擇西裏爾字母,這是無法通過字體係列獲得的。

用法

Hershey

細節

Hershey 字體有兩個優點:

  1. 矢量字體用一組點來說明每個字符;R通過用直線連接點來渲染角色。對每個角色輪廓的深入了解意味著R可以任意變換字符,這意味著矢量字體對於旋轉文本來說看起來更好。

  2. 該實現改編自 GNU libplot 庫,該庫提供對非 ASCII 和非英語字體的支持。這意味著可以產生奇怪的繪圖符號和日語字符等。

退稅:
您不能使用數學表達式 (plotmath)與好時字體。

好時字符被組織成一組字體。通過 par(family) 指定以下字體係列之一並通過 par(font) 指定所需的字體(普通、粗體、斜體、bold-italic)來選擇特定字體。

family 可用的麵孔
"HersheySerif" 普通、粗體、斜體、bold-italic
"HersheySans" 普通、粗體、斜體、bold-italic
"HersheyScript" 樸實、大膽
"HersheyGothicEnglish" plain
"HersheyGothicGerman" plain
"HersheyGothicItalian" plain
"HersheySymbol" 普通、粗體、斜體、bold-italic
"HersheySansSymbol" 普通、斜體

textcontour 函數的 vfont 規範中,Hershey 字體由字體(例如 serifsans serif )和字體索引或 ‘style’(例如 plainitalic)。 vfont 的第一個元素指定字體,第二個元素指定字體索引。 demo(Hershey) 生成的第一個表顯示了每種不同字體生成的字符a

可用的 typefacefontindex 值可用作變量 Hershey 的列表組件。 (typeface, fontindex) 允許的對是:

serif plain
serif italic
serif bold
serif 加粗斜體
serif cyrillic
serif 斜西裏爾字母
serif EUC
無襯線字體 plain
無襯線字體 italic
無襯線字體 bold
無襯線字體加粗斜體
script plain
script italic
script bold
哥特式英語 plain
哥特式德語 plain
哥特式意大利語 plain
襯線符號 plain
襯線符號 italic
襯線符號 bold
襯線符號加粗斜體
無襯線符號 plain
無襯線符號 italic

這些索引可作為 Hershey$allowed 獲得。

轉義序列:

要繪製的字符串可以包含轉義序列,全部以“開頭”⁠\⁠’。什麽時候R遇到一個‘⁠\⁠’,而不是畫‘⁠\⁠’,它將後續字符視為要繪製內容的編碼說明。

一種有用的轉義序列(在當前上下文中)的形式如下:‘⁠\123⁠’。 ‘後麵的三位數字⁠\⁠' 指定字符的八進製代碼。例如,八進製代碼為p是 160 所以字符串"p""\160"是等價的。當鍵盤上沒有合適的鍵時,這對於生成字符很有用。

其他有用的轉義序列都以‘開頭⁠\\⁠’。這些將在下麵說明。請記住,反斜杠必須加倍R字符串,因此需要輸入反斜杠。

符號:

通過選擇 HersheySymbol 或 HersheySansSymbol 係列或 Serif Symbol 或 Sans Serif Symbol 字體可以生成一整串希臘符號。為了允許希臘符號嵌入到使用非符號字體的字符串中,有一組形式為“的符號轉義序列”⁠\\ab⁠’。例如,轉義序列‘⁠\\*a⁠’產生一個希臘字母。第二個表在demo(Hershey)顯示所有符號轉義序列及其產生的符號。

ISO Latin-1:

進一步的轉義序列形式為‘⁠\\ab⁠’ 用於生成 ISO Latin-1 字符。另一種選擇是使用適當的八進製代碼。 (非 ASCII)ISO Latin-1 字符的範圍為 241...377。例如, '⁠\366⁠’ 產生帶有變音符號的字符 o。第三個表在demo(Hershey)顯示所有 ISO Latin-1 轉義序列。

這些字符可以直接使用。 (不在 Latin-1 中的字符被點替換。)

缺少幾個字符,c-cedilla 沒有變音符號和“升號 s”(‘⁠U+00DF⁠’,也稱為‘esszett’)呈現為ss.

特殊字符:

提供了一組不屬於任何標準字體的字符。這些隻能通過轉義序列訪問。例如, '⁠\\LI⁠' 生成天秤座的星座,並且 '⁠\\JU⁠’產生了木星的天文符號。第四個表在demo(Hershey)顯示所有特殊字符轉義序列。

西裏爾字母字符:

西裏爾字母是根據 K018-R 編碼實現的,並且可以使用 Serif 字體和西裏爾字母(或斜西裏爾字母)字體索引直接在此類語言環境中使用。或者,可以通過小寫字符 300 到 337 範圍內的八進製代碼或大寫字符 340 到 377 範圍內的八進製代碼指定它們。 demo(Hershey) 中的第五個表顯示了可用西裏爾字符的八進製代碼。

西裏爾字母必須通過 ("serif", fontindex) 對而不是通過字體係列來選擇。

日語字符:

83 個平假名、86 個片假名和 603 個漢字字符是根據 EUC-JP(擴展 Unix 代碼)編碼實現的。每個字符都由唯一的十六進製代碼標識。平假名字符的範圍為 0x2421 到 0x2473,片假名字符的範圍為 0x2521 到 0x2576,而漢字(分散)的範圍為 0x3021 到 0x6d55。

當使用 Serif 字體和 EUC 字體索引時,這些字符可以由一對八進製代碼。給定十六進製代碼(例如,0x2421),取前兩位數字並添加 0x80,並對後兩位數字執行相同的操作(例如,0x21 和 0x24 變為 0xa4 和 0xa1),然後將兩者都轉換為八進製(例如,0xa4 和 0xa1)變為 244 和 241)。例如,第一個平假名字符是由‘⁠\244\241⁠’。

也可以直接使用十六進製代碼。通過指定形式‘的轉義序列,這適用於所有非 EUC 字體⁠\\#J1234⁠’。例如,第一個平假名字符是由‘⁠\\#J2421⁠’。

漢字字符可以通過第三種方式指定,即使用所謂的"Nelson Index",通過指定形式的轉義序列‘⁠\\#N1234⁠’。例如,‘one’ 的(過時的)漢字是由‘生成的⁠\\#N0001⁠’。

demo(Japanese) 顯示可用的日語字符。

原始好時字形:

Hershey 字體中的所有字符都存儲在一個大數組中。某些字符在任何 Hershey 字體中都無法訪問。這些字符隻能通過以下形式的轉義序列訪問:⁠\\#H1234⁠’。例如,fleur-de-lys 是由‘⁠\\#H0746⁠’。第六表和第七表demo(Hershey)顯示所有可用的原始字形。

例子

Hershey

## for tables of examples, see demo(Hershey)

參考

https://www.gnu.org/software/plotutils/plotutils.html.

也可以看看

demo(Hershey)partextcontour

Japanese 表示 Hershey 字體中的日語字符。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Hershey Vector Fonts in R。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。