2011-04-07 26 views
5

我需要枚舉所有已安裝字體的postsript名稱。查找所有已安裝字體的附註名稱

例如:

 foreach (FontFamily item in FontFamily.Families) 
     { 
      listBox1.Items.Add(item.Name); 
     } 

這將給只有實際的字體名稱。但我需要找到postscript的名字。

例如:對於字體「宋體黑」 - 1.實際的字體名稱是「宋體黑」 2的PostScript名稱是「宋體黑」

由於提前, 詹姆斯


編輯:

  1. @底座其實,我從PDF閱讀字體名稱和加載相應的系統F ONT。在這種情況下,PDF的字體名稱爲「Arial-Black」(Post script name)..我怎樣才能從系統(Arial Black)加載字體......想法?

因此,理想的方法應該被讀取來自安裝的字體

  1. 代後記名字「 - 」與「」不是一個合適的解決方案,因爲,也有其他的字體名稱如可能性「Arial-Bold」,「Time New Roman - PSMT」等。
+0

沒有更多建議?我有類似的問題。 – 2015-04-28 17:44:16

回答

0

我做了一些非常相似的事情。你應該知道FontFamily.Families可能不是整套可用字體。

爲什麼不用''替換''?

在我的情況下,我需要去PDF字體名稱,這對於大膽風格的Times New Roman必須是「TimesNewRoman,Bold」。

private static string ToPdfFontName(Font f) 
    { 
     StringBuilder sb = new StringBuilder(); 
     StripSpaces(sb, f.Name); 
     if ((f.Style & FontStyle.Bold)!= 0 && (f.Style & FontStyle.Italic)!= 0) 
     { 
      sb.Append(",BoldItalic"); 
     } 
     else if ((f.Style & FontStyle.Bold)!= 0) 
     { 
      sb.Append(",Bold"); 
     } 
     else if ((f.Style & FontStyle.Italic)!= 0) 
     { 
      sb.Append(",Italic"); 
     } 
     return sb.ToString(); 
    } 
+0

@ plinth 實際上,我從PDF中讀取字體名稱並加載相應的系統字體。在這種情況下,PDF的字體名稱爲「Arial-Black」(Post script name)..我怎樣才能從系統(Arial Black)加載字體......想法? – user438959 2011-04-08 09:18:59

4

您可以直接在PostScript中執行此操作。執行此操作:

%!PS 
/FS { findfont exch scalefont setfont } bind def 

% gets page boundaries 
clippath pathbbox newpath 
/var_TopOfPage exch def 
/var_RightOfPage exch def 
/var_BottomOfPage exch def 
/var_LeftOfPage exch def 

% helvetica is almost always there 
12 /Helvetica FS 
0 setgray 

% set start position 
var_LeftOfPage var_TopOfPage 30 sub moveto 
/pos var_TopOfPage 20 sub def 

GlobalFontDirectory { 
    var_LeftOfPage pos moveto 
    /FontName get 70 string cvs show 
    /pos pos 20 sub def 
    pos 0 le { 
     showpage 
     /pos var_TopOfPage 20 sub def 
    } if 
} forall 

showpage 
%%EOF 

我已經能夠使用此代碼找出打印機的可用字體。

我希望我幫你。

+0

不錯!這將是非常有用的。 – 2014-05-10 21:18:35

相關問題