2016-07-22 126 views
1

我使用cairo_pdf()在R中生成一個具有漂亮字體的圖。如果我指定的字體系列具有合理命名的基本重量,則它工作正常,例如, 「Arial」包含Arial Regular,Arial Bold,Arial Italic,Arial Bold Italic。在cairo_pdf中設置粗體樣式

但是有沒有辦法爲給定的風格任意設置字體?例如,在Hoefler Text中,我有Hoefler Text 黑色不粗體。我可以通過cairo_pdf將這個體重用於粗體文本嗎?

+0

目前呼叫:'名稱(X11Fonts())'我的機器上並不帶來了「Hoefler文本」,但它肯定可以你的機器是不同的。你爲什麼不回顧'?cairo_pdf'和'?X11Fonts',然後提供足夠的細節以便我們提供建議?我將暫停投票結束「不清楚」,但只會持續幾個小時。之後,我將雙方投降並投票結束。 –

+0

我的機器上安裝了Hoefler Text,我已閱讀文檔。 cairo_pdf採取一個家庭的單一名稱,然後推斷哪個重量是'大膽';該文檔沒有說明如何像'CairoFonts'那樣明確地設置'bold'的首選字體。 – jkeirstead

回答

1

我可能使用的是不同於你的操作系統,但是我想知道是否有可能在Linux上成功,儘管它在我的Mac上沒有成功。字體樣式是與Mac專用的應用程序,FontBook.app確定,但我想,你有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搜索中找到的「在線字體轉換器」之一將「Hoefler Text.ttc」(一種TrueType集合)字體提取到其組件中。我將它們移動到/Library/Fonts/目錄中。我看着從Cairo::CairoFontMatch("HoeflerText:style=Black",verbose=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" 
+0

這是字體轉換器做的伎倆。謝謝。 – jkeirstead

+0

我們的共同經歷讓我相信底層機制無法處理TrueType集合。 –

相關問題