Illustrator插件开发 使用Adobe Text Engine

Adobe text engine提供了Illustrator中强大的文本支持,主要的特点有:

1.      unicode

2.      OpenType

3.      先进的排版技术,如字距、边缘对齐、自动的字形替换、字形比例。

4.      文本和段落样式

5.      亚洲文字

下面就是一些使用ATE的方法。

创建point text:

ASErr SnpText::CreatePointText()
{
	ASErr result = kNoErr;
	try {
		// Get the group art that contains all the art in the current layer.
		AIArtHandle artGroup = NULL;
		result = sAIArt->GetFirstArtOfLayer(NULL, &artGroup);
		aisdk::check_ai_error(result);


		// Add the new point text item to the layer. 添加point text
		AITextOrientation orient = kHorizontalTextOrientation;
		AIRealPoint anchor = {10,10};
		AIArtHandle textFrame = NULL;
		result = sAITextFrame->NewPointText(kPlaceAboveAll, artGroup, orient, anchor, &textFrame);
		aisdk::check_ai_error(result);


		// Set the contents of the text range. 改变内容
		TextRangeRef range = NULL;
		result = sAITextFrame->GetATETextRange(textFrame, &range);
		aisdk::check_ai_error(result);
		ITextRange crange(range);
		crange.InsertAfter("New point text item");
	}
	catch (ai::Error& ex) {
		result = ex;
	}
	catch (ATE::Exception& ex) {
		result = ex.error;
	}
	return result;
}


创建In path text:

ASErr SnpText::CreateInPathText()
{
	ASErr result = kNoErr;
	try {
		// Get the group art that contains all the art in the current layer. 获取组art
		AIArtHandle artGroup = NULL;
		result = sAIArt->GetFirstArtOfLayer(NULL, &artGroup);
		aisdk::check_ai_error(result);

		// Add the new in path text item to the layer.
		AIArtHandle textFrame;
		sAIArt->GetArtFirstChild(artGroup, &textFrame); // 我先创建了一个矩形矿,这里是获取这个矩形框
		aisdk::check_ai_error(result);
		AITextOrientation orient = kHorizontalTextOrientation;
		result = sAITextFrame->NewInPathText(kPlaceAboveAll, artGroup, orient, textFrame, NULL, false, &textFrame);
		aisdk::check_ai_error(result);

		// Set the contents of the text range. 改变内容
		TextRangeRef range = NULL;
		result = sAITextFrame->GetATETextRange(textFrame, &range);
		aisdk::check_ai_error(result);
		ITextRange iTextRange(range);
		iTextRange.InsertAfter("New in path text item");
	}
	catch (ai::Error& ex) {
		result = ex;
	}
	catch (ATE::Exception& ex) {
		result = ex.error;
	}
	return result;
}

创建on path text:

ASErr SnpText::CreateOnPathText()
{
	ASErr result = kNoErr;
	try {
		// Get the group art that contains all the art in the current layer.
		AIArtHandle artGroup = NULL;
		result = sAIArt->GetFirstArtOfLayer(NULL, &artGroup);
		aisdk::check_ai_error(result);

		// Add the new on path text item to the layer.
		AITextOrientation orient = kHorizontalTextOrientation;
		AIArtHandle	textPath;
		sAIArt->GetArtFirstChild(artGroup, &textPath); // 先创建了一个圆弧,这里是获取这个圆弧
		aisdk::check_ai_error(result);
		result = sAITextFrame->NewOnPathText(kPlaceAboveAll, artGroup, orient, textPath, 0, 0, NULL, false, &textPath);
		aisdk::check_ai_error(result);

		// Set the contents of the text range.
		TextRangeRef range = NULL;
		result = sAITextFrame->GetATETextRange(textPath, &range);
		aisdk::check_ai_error(result);
		ITextRange iTextRange(range);
		iTextRange.InsertAfter("New on path text item");
	}
	catch (ai::Error& ex) {
		result = ex;
	}
	catch (ATE::Exception& ex) {
		result = ex.error;
	}
	return result;
}



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值