几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » DirectDWG
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-05-05, 11:17 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】get short font name

get short font name
get short font name
hi,
is there a function to get the short ttf-name from a given ttf-filename?
example: i have the filename "arial.ttf" and i'd like to have the short font name "arial", not the long name "arial (truetype)".
the reason for this is a dwg file i just received. the file contains an mtext with a segment, for which oddbmtextfragment::fontname is the name of the ttf-file instead of the short fontname.
note: when opening this file in dd 2.2.0, oddbmtextfragment::fontname is the short fontname. with dd 2.4.2, the result is as described above.
torsten
hello torsten,
there is such behavior in case mtext has switch like {\farial.ttf}. you may get face name (short name) in desc::typeface() by use next code (for windows platform).
code:
void getttfontnamebyfilename(odttfdescriptor* descr)
{
osversioninfo os;
int result,n;
hkey fontkey;
// int len;
int value_len=255;
int data_len=255;
odchar value[256];
odchar data[256];
dword type;
odchar *s;
os.dwosversioninfosize=sizeof(osversioninfo);
getversionex(&os);
if (os.dwplatformid & ver_platform_win32_nt) {
result = regopenkeyex(hkey_local_machine,
dd_t("software\\microsoft\\windows nt\\currentversion\\fonts"),
0,
key_read,
&fontkey);
}
else {
result=regopenkeyex(hkey_local_machine,
dd_t("software\\microsoft\\windows\\currentversion\\fonts"),
0,
key_read,
&fontkey);
}
odchar fontfilename[max_path];
odchar ext[max_path];
odstring sourcefontfilename = descr->filename();
_wsplitpath(sourcefontfilename, null, null, fontfilename, ext);
odstring fontfilename = fontfilename;
if ( :dstrlen(ext) > 0 )
{
fontfilename += ext;
} else
{
fontfilename += dd_t(".ttf");
}
for(n = 0; ; n++) {
value_len = data_len = 255;
result = regenumvalue(fontkey,
n, // index of value to query
value, // address of buffer for value string
(unsigned long *)&value_len, // address for size of value buffer
0, // reserved
&type, // address of buffer for type code
(lpbyte)data, // address of buffer for value data
(unsigned long *)&data_len); // address for size of data buffer);
if (result != error_success) {
break;
}
// len = odstrlen(pttf->m_filename);
if( fontfilename.icompare((odchar*)data) == 0 ||
sourcefontfilename.icompare((odchar*)data) == 0 )
{
if ((s = wcsstr(value,dd_t(" (truetype)"))) != null)
{
*s=0;
}
odstring val = value;
int n = val.replace(dd_t(" bold"), dd_t(""));
descr->setbold( n > 0 ? true : false );
n = val.replace(dd_t(" italic"), dd_t(""));
descr->setitalic(n > 0 ? true : false );
descr->settypeface(val);
break;
}
}
if (fontkey) {
regclosekey(fontkey);
}
}
best regards,
sergey z.
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】font convertion yang686526 DirectDWG 0 2009-05-05 11:01 AM
【转帖】different vectorization of same file on windows and mac yang686526 DirectDWG 0 2009-05-04 07:29 PM
【转帖】access violation during font mapping yang686526 DirectDWG 0 2009-05-04 03:30 PM
【转帖】scale of symbol yang686526 SolidWorks二次开发 0 2009-04-13 02:07 PM
友元((friend) 详解 yogy vc编程 0 2007-05-16 02:20 PM


所有的时间均为北京时间。 现在的时间是 09:49 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多