当前位置: 首页 > 知识库问答 >
问题:

在cairo_pdf中设置粗体样式

陶柏
2023-03-14

我使用< code>cairo_pdf()来生成一个字体很好的R绘图。如果我指定的字体系列具有合理命名的基本粗细,例如“Arial”包含Arial Regular、Arial Bold、Arial Italic、Arial Bold Italic,它会工作得很好。

但是有没有办法为给定样式任意设置字体?例如,在Hoefler Text中,我有Hoefler文本黑色而不是粗体。我可以cairo_pdf将此权重用于粗体文本吗?

共有1个答案

仲孙信瑞
2023-03-14

我使用的操作系统可能与你不同,但我想知道这是否有可能在Linux系统上成功,尽管它在我的Mac上没有成功。字体样式是由特定于Mac的应用程序FontBook.app决定的,但我猜想您有< code>fontforge或类似的方法来确定所需的样式名称。:

 Cairo::CairoFonts(    # for some reason I seem to need the `pkgname::` format
    regular="Hoefler Text:style=Regular",
    bold="Hoefler Text:style=Black",
    italic="Hoefler Text:style=Italic",
    bolditalic="Hoefler Text:style=Black Italic",
    symbol="Symbol"
 )
Cairo::CairoFontMatch("Hoefler Text:style=Black",verbose=TRUE)
cairo_pdf("test_bold.pdf", family="Hoefler Text") 
     plot(1,1, main=bquote(bold(test~fl~ligature)) )
dev.off()

我的机器上的输出似乎属于“Hoefler Text”系列,但样式似乎与非粗体调用没有任何不同。我认为Linux机器可能会有更好的运气。

更新:我使用在SO搜索中找到的“在线字体转换器”之一将“HoeflerText.ttc”(TrueType集合)字体提取到其组件中。我将它们移动到/库/字体/目录中。我查看了开罗::CairoFontMatch("HoeflerText: type=Black",详细=TRUE)的输出,发现它在那里看到ttc文件,因此我将原始ttc文件移动到非字体目录并重新启动了R。现在当我运行时:

cairo_pdf("test_bold.pdf", family="HoeflerText")
  plot(1,1, main=bquote(bold(test~fl~ligature)) ); dev.off() 

…在我的PDF查看器中查看,我看到一个粗体字体作为标题。我不确定这实际上是a)通过R重新映射字体的结果,还是b)查看器现在正在进行正确的查找,并且没有被cairo_pdf设备赋予正确的名称。无论如何,我现在能够进行正确的查找:

> Cairo::CairoFontMatch("HoeflerText:style=Black",verbose=TRUE)
1. family: "Hoefler Text", style: "Black", file: "/Library/Fonts/HoeflerText-Black.ttf"
   "Hoefler Text-12:familylang=en:style=Black,黑體,Sort,Sehr fett,Lihava,Noir,Nero,ブラック,두껍게,Zwart,Svart,Preto,Насыщенный жирный,Extrafet,黑体,Negra:stylelang=en,zh-tw,da,de,fi,fr,it,ja,ko,nl,no,pt,ru,sv,zh-cn,es:fullname=Hoefler Text Black:fullnamelang=en:slant=0:weight=0:width=100:pixelsize=12.5:foundry=unknown:hintstyle=3:hinting=True:verticallayout=False:autohint=False:globaladvance=True:file=/Library/Fonts/HoeflerText-Black.ttf:index=0:outline=True:scalable=True:dpi=75:scale=1:charset=  |>^1!|>^1!P0oWQ U>w0A|>^1!|>^1!!!!%#lm6Uq{tu}/lr9j#{}!CB!!OoV!/9m> !%J<G!!!)$&olY4 !^^7$   9;*f! !!!.%!!#&|!!!&S    !!!!# !!!1&|>^1!|>^1!|>^1!!)Ib~9R6#i(){NjxJemz#%jg%!!#0GM>RAd#y#fx!!!!5s<..R!!%U3!!![t  !!#3H !!!!n      !!#6I;sG44!!!?+!!!%#!!!!X    !!#AL      !!!1& !!+lx       P0oWR!!+u{!!!#/       !!+~~  !9PX<!!!!#    :lang=aa|av|ay|az-az|ba|be|bg|bi|br|bs|bua|ca|ce|ch|chm|co|cs|cv|da|de|en|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|hr|hu|ia|id|ie|ik|io|is|it|kaa|kk|kum|kv|ky|lb|lez|lt|lv|mg|mh|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|oc|om|os|pl|pt|rm|ro|ru|sel|sh|sk|sl|sma|smj|so|sq|sr|ss|st|sv|sw|tg|tk|tl|tn|tr|ts|tt|tyv|uk|uz|vo|vot|wa|wen|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|li|mn-mn|ms|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za:fontversion=65536:capability=otlayout\:DFLT otlayout\:cyrl otlayout\:grek otlayout\:latn:fontformat=TrueType:embeddedbitmap=True:decorative=False:namelang=en:prgname=R:hash=sha256\:6ad00ff0335de002e10e0dc0aca8b6282ba3425c3b2f8ce3f0a6fea668d0a711:postscriptname=HoeflerText-Black"
 类似资料:
  • 问题内容: 我在选择时遇到样式问题。我需要一些选项以粗体显示,但Internet Explorer不想呈现它。 我使用CSS进行设置: : 在Firefox中显示粗体字体,但在Internet Explorer中不显示。 我已经在Internet Explorer 7和8中尝试过。 有人有其他选择吗? 编辑:一个示例: HTML: CSS: 问题答案: IE不允许独立设计元素的样式。这是因为IE使

  • 我正在使用iReport 5.1.0和JasperReports 5.0.0构建一些报告。现在我的麻烦是粗体样式没有出现在pdf输出中。如果我有样式化的文本(例如),粗体部分在报表输出中显示为粗体,但在PDF中不显示。在pdf中设置粗体的唯一方法是强制该元素的pdf字体为粗体字体(例如pdffontname=“helvetica-bold”),但这样会使整个字符串粗体化,并且不允许我通过样式标记来

  • 问题内容: 如何在iPhone / iPad 上设置粗体和斜体?我搜索了论坛,但没有任何帮助。有人可以帮我吗? 问题答案: 您可以设置字体名称列表来代替’fontWithName’属性。链接位于此处

  • 我使用irport 3.1.0,在从ireport生成预览时,所有样式(粗体、斜体)都可以工作,但在从web应用程序调用时,所有内容都以纯文本形式出现。

  • $format = new \Vtiful\Kernel\Format($fileHandle); $boldStyle = $format->bold()->toResource();

  • 问题内容: 我需要有关在Openpyxl中设置样式的建议。 我看到可以设置单元格的NumberFormat,但是我还需要设置字体颜色和属性(粗体等)。有一个style.py类,但是似乎我无法设置单元格的style属性,而且我真的不想开始修改openpyxl源代码。 有没有人找到解决方案? 问题答案: 从openpyxl版本1.5.7开始,我已成功应用以下工作表样式选项… 仅供参考,您可以在…中找到