当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。