如何在64位Windows7上获取后期脚本名称,类型1字体的完整路径?这些API由Adobe ATM库提供,用于32位获胜操作系统,如ATMGetPostScriptName,ATMGetFontPaths等。
根据我的知识,OS现在支持1种字体。我可以通过GetFontData,RegQueryMultipleValues等获取TTF和OTF字体的所有这些字体信息,但这些API对于type1字体(.pfm,.pfb字体)失败。
我第一次使用这个论坛并希望有人可以帮我快点。
先谢谢, Vijendra
答案 0 :(得分:0)
我有类似的问题,我想要postscript名称并将字体转换为postscript。该解决方案位于名为ttf2pt1的小型库中,位于http://ttf2pt1.sourceforge.net/README.html
您需要的例程如下。该例程使用OutlineTextMetrics挖掘出该字体的所有各种内部名称。 nameFace值是您想要的值。
short i;
short val;
long offset;
OUTLINETEXTMETRIC *otm;
UINT nSize;
UINT retVal;
char *sptr;
char *nameFamily;
char *nameFace;
char *nameStyle;
char *nameFull;
int fontType;
char otmBuffer[4096];
SelectObject(hdc, theFont);
nSize = GetOutlineTextMetrics(hdc, 0, NULL);
if(nSize){
otm = (OUTLINETEXTMETRIC *) otmBuffer;
retVal = GetOutlineTextMetrics(hdc, nSize, otm);
val = otm->otmTextMetrics.tmPitchAndFamily;
offset = (long) otm->otmpFamilyName;
sptr = &otmBuffer[offset];
nameFamily = sptr;
offset = (long) otm->otmpFaceName;
sptr = &otmBuffer[offset];
nameFace = sptr;
offset = (long) otm->otmpStyleName;
sptr = &otmBuffer[offset];
nameStyle = sptr;
offset = (long) otm->otmpFullName;
sptr = &otmBuffer[offset];
nameFull = sptr;
if(val & TMPF_TRUETYPE){
fontType = kFontTypeTrueType;
}
else{
if(val & TMPF_VECTOR){
fontType = kFontTypePostscript;
}
}
}
else{
fontType = kFontTypeUnknown;
}