2011-04-07 4 views
5

Je dois énumérer les noms postscript de toutes les polices installées.Trouver les noms postscript de toutes les polices installées

par exemple:

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

Cela donnera seulement les noms des polices réels. Mais j'ai besoin de trouver les noms postscript.

Par exemple: Pour la police "Arial Black" - 1. Nom de la police actuelle est "Arial Black" 2. Nom PostScript est "Arial-Black"

Merci à l'avance, James


EDIT:

  1. @ socle en fait, je lis le nom de la police du PDF et charger le système correspondant f Ont. Dans ce cas, le PDF a un nom de police "Arial-Black" (nom de script Post) .. comment puis-je charger la police du sytem (Arial Black) en conséquence .... idées ??

Ainsi, la méthode idéale doit être en train de lire les noms postscript des polices installées

  1. de la substitution « - » avec « » est pas une solution appropriée car, il y a des possibilités d'autres noms de polices telles que "Arial-Bold", "Time New Roman - PSMT" etc.
+0

Plus de suggestions? J'ai en quelque sorte le même problème. –

Répondre

0

J'ai fait quelque chose de très similaire à cela. Vous devez être conscient que FontFamily.Families peut ne pas être l'ensemble des polices disponibles. Pourquoi ne pas simplement remplacer «-» par «-»? Dans mon cas, j'avais besoin d'aller au nom de police PDF, qui pour Times New Roman en gras devait être "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 En fait, j'ai lu le nom de la police à partir du PDF et charger la police système correspondante. Dans ce cas, le PDF a un nom de police "Arial-Black" (nom de script Post) .. comment puis-je charger la police du sytem (Arial Black) en conséquence .... idées ?? – user438959

4

Vous pouvez le faire directement dans PostScript. Exécuter ceci:

%!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 

J'ai été capable de trouver les fontes disponibles d'une imprimante avec ce code.

J'espère que je vous ai aidé.

+0

Nice! Cela sera très utile. –

Questions connexes