Flex4中textField使用嵌入字体

本文介绍如何在Flex4.0中嵌入并使用自定义字体,包括ActionScript代码示例及解决字体显示问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:

http://11lingxian.javaeye.com/blog/653837

1. 嵌入字体

Actionscript代码
  1. [Embed(source="c:/windows/fonts/FREESCPT.TTF", fontName="Freestyle", unicodeRange="U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E")]   
  2. public static var freestyle:Class;  

2. 使用字体

Actionscript代码
  1. var tf:TextField = new TextField();   
  2. tf.defaultTextFormat = new TextFormat("Freestyle"300);   
  3. tf.embedFonts = true;   
  4. tf.autoSize = "left";   
  5. tf.text = "Hello World!";   
  6. addChild(tf);  

如果要在Flex3.X中嵌入字体,到此就可以结束了。但是在Flex4.0 SDK中字体很有可能无法显示。这就需要下面的步骤了。

 

3. 解决Flex4.0 SDK的问题

  • 方法1,在embed标签中加入embedAsCFF=”false”。
Actionscript代码
  1. [Embed(source="c:/windows/fonts/FREESCPT.TTF", embedAsCFF="false", fontName="Freestyle", unicodeRange="U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E")]   
  2. public static var freestyle:Class;  
  • 方法2,修改SDK目录下flex-config.xml文件。

flash.fonts.AFEFontManager

将AFEFontManager挪到的最后一行。

 

=============

另外还有一种方法文章中没提到,但在其他文章看到了。

3、向编译器参数列表里添加“-managers=flash.fonts.AFEFontManager”编译器参数

 

经过测试,三种方法都可以实现使用嵌入字体。

但目前出现的一个未解决问题是。字体不是通过embed来嵌入的。而是通过loader动态加载,试过上面三种办法,都没能解决。先记录下来,以后看有没找到解决方法。

<think>我们之前讨论的是如何让Text在Rectangle中居中。现在用户的新问题是关于TextField设置输入字体的方法。根据引用[4]中的示例,可以看到TextField中通过font属性设置字体的方法。具体步骤:1.在TextField组件内使用font属性设置字体2.可以设置的子属性包括:family(字体族)、pixelSize(像素大小)、pointSize(点大小)、bold(粗体)、italic(斜体)、underline(下划线)等引用[4]中的示例代码片段:```qmlTextField{id:osdTextField//...其他属性...font{family:"宋体"pixelSize:16underline:false}//...其他属性...}```因此,回答用户:在QML中设置TextField的输入字体,是通过其font属性进行设置的,可以设置字体族、大小、样式等。同时,我们注意到用户的问题可能是由于看到了引用[4]中的例子而提出的,因此可以直接参考该示例。另外,根据引用[1]和[2]的内容,TextField还有其他属性,但用户目前只关心字体设置。我们需要按照要求生成相关问题,并且注意使用数学公式时使用正确的格式。但是本问题不涉及数学公式,所以主要关注字体设置。最后,回答要结构清晰,分步骤说明。生成相关问题:1.如何在TextField中设置字体颜色?2.TextField的placeholderText字体如何设置?3.TextField中如何实现密码输入模式?4.QML中TextField与TextInput有什么区别?5.如何动态改变TextField字体属性?</think> 在 QML 中设置 TextField 的输入字体,可通过其 `font` 属性实现,以下是详细方法和步骤: ### 完整字体设置方法 ```qml TextField { id: inputField width: 200 placeholderText: "请输入内容" // 字体设置核心属性组 font { family: "Arial" // 字体族(支持中文字体如"微软雅黑") pixelSize: 16 // 像素大小(或 pointSize: 12) bold: true // 加粗 italic: true // 斜体 underline: true // 下划线 letterSpacing: 1.2 // 字符间距 capitalization: Font.AllUppercase // 全大写(可选值:MixedCase/SmallCaps等) } } ``` ### 关键属性说明: 1. **字体族 (`family`)** - 支持系统安装的字体(含中文字体) - 例如:`family: "Microsoft YaHei"`(微软雅黑)[^4] 2. **字号设置方式**: ```qml font.pixelSize: 24 // 推荐:像素绝对值 // 或 font.pointSize: 12 // 设备无关单位(1pt ≈ 1.33px) ``` 3. **动态字体加载**(特殊字体文件): ```qml FontLoader { id: customFont source: "fonts/SourceHanSansCN-Regular.otf" } TextField { font.family: customFont.name } ``` ### 完整应用示例 ```qml import QtQuick 2.15 import QtQuick.Controls 2.15 ApplicationWindow { width: 400 height: 300 visible: true TextField { anchors.centerIn: parent width: parent.width * 0.8 // 字体配置 font { family: "微软雅黑" pixelSize: 18 bold: true letterSpacing: 1.5 } color: "navy" // 输入文本颜色 placeholderText: "请输入姓名" placeholderTextColor: "gray" // 占位符颜色[^4] } } ``` ### 效果说明: - 该配置将显示:**微软雅黑字体、18像素字号、粗体、字符间距150%、深蓝色文本** - 占位符显示为灰色提示文本[^4] ### 注意事项: 1. **字体回退机制**:当指定字体不存在时,QT会自动使用系统默认字体(可通过 `Qt.fontFamilies()` 检测可用字体) 2. **高清屏适配**:使用 `pixelSize` 可精确控制物理像素大小,避免高清屏模糊问题 3. **性能优化**:对于动态文本字段,添加 `renderType: Text.NativeRendering` 可提升渲染性能[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值