【第3章 文本】3.2 设置字型属性

文章目录


前言

在 Canvas 中,可以通过绘图环境对象的 font 属性设置文本所采用的字型。该属性是一个 CSS3 格式的字型字符串,各个分量如下表所示,在设置font属性时,需要从上到下一次制定这些分量的值。

Canvas 默认字型是 10px sans-serif 。font-style、font-variant、font-weidht的默认值均为normal。

字型属性分量描述
font-style规定字体样式。可能的值:normal、italic、oblique
font-variant规定字体变体。可能的值:normal、small-caps
font-weight规定字体的粗细。可能的值:normal、bold、bolder、lighter、100-900
font-size规定字体的大小。可能的值:larger、medium……
line-height浏览器强制normal值,不管你设置什么值
font-family规定字体系列。

示例

该应用程序将每个要绘制的字符串设置为绘图环境对象的font值,然后用fillText()绘制到屏幕上。

左边这一列字符串所使用的字型都是Palatino字体集的变种,右边一列演示了一些“网络安全字型”(Web-safe font)的绘制效果。这个“安全”并不是说字体本身有什么危险性,实际意思是这些字体在三大主流操作系统中所有浏览器上都能被正确地渲染,因为已经广泛地被使用在了Windows、Mac和Linux上。

另外,如果font值无效,浏览器就不会修改该属性值。比如说,设置font-style和font-family分量时弄错了顺序,或非法指定了font-style分量等等。

在这里插入图片描述

<!DOCTYPE html>
<!-- 定义HTML文档语言为中文 -->
<html lang="zh-CN">
	<head>
		<!-- 设置文档字符编码为UTF-8 -->
		<meta charset="UTF-8" />
		<!-- 设置页面标题 -->
		<title>3-3-设置font属性</title>
		<style>
			/* 设置页面背景颜色 */
			body {
				background: #eeeeee;
			}

			/* 设置画布样式 */
			#canvas {
				background: #ffffff;
				margin-top: 5px;
				margin-left: 10px;
				/* 兼容不同浏览器的阴影效果 */
				-webkit-box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.5);
				-moz-box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.5);
				box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.5);
				/* 设置边框样式 */
				border: 1px solid rgba(0, 0, 0, 0.2);
			}
		</style>
	</head>
	<body>
		<!-- 创建画布元素,不支持时显示提示 -->
		<canvas id="canvas" width="850" height="440">canvas not supports</canvas>

		<script>
			// 使用严格模式
			'use strict'

			// 获取画布元素和绘图上下文
			let canvas = document.getElementById('canvas'),
				context = canvas.getContext('2d'),
				/**
				 * 左列字体样式数组
				 * 使用Palatino字体及其变种
				 * Palatino是一种常见的衬线字体
				 */
				LEFT_COLUMN_FONTS = [
					'2em palatino', // 标准大小
					'bolder 2em palatino', // 加粗
					'lighter 2em patatino', // 变细(注意拼写错误)
					'italic 2em palatino', // 斜体
					'oblique small-caps 24px palatino', // 倾斜+小型大写字母
					'bold 14pt palatino', // 粗体+点单位
					'xx-large palatino', // 超大号
					'italic xx-larrge palatino', // 斜体+超大号(注意拼写错误)
				],
				/**
				 * 右列字体样式数组
				 * 使用网络安全字体
				 */
				RIGHT_COLUMN_FONTS = [
					'oblique 1.5em lucida console', // 倾斜+等宽字体
					'x-large fantasy', // 大号+幻想字体
					'italic 28px monaco', // 斜体+等宽字体
					'italic large copperplate', // 斜体+铜版字体
					'36px century', // 像素单位
					'28px tahoma', // 微软常用字体
					'28px impact', // 紧凑无衬线字体
					'1.7em verdana', // 常用无衬线字体
				],
				// 左列文本的X坐标
				LEFT_COLUMN_X = 50,
				// 右列文本的X坐标
				RIGHT_COLUMN_X = 500,
				// 行间距
				DELTA_Y = 50,
				// 顶部起始Y坐标
				TOP_Y = 50,
				// 当前Y坐标
				y = 0

			/**
			 * 绘制背景网格线
			 */
			let drawBackground = () => {
				// 垂直间距
				let STEP_Y = 12,
					// 从画布底部开始绘制
					i = context.canvas.height

				// 设置网格线样式
				context.strokeStyle = 'rgba(0,0,200,0.225)'
				context.lineWidth = 0.5

				// 保存和恢复绘图状态(此处可能多余)
				context.save()
				context.restore()

				// 从下往上绘制水平网格线
				while (i > STEP_Y * 4) {
					context.beginPath()
					context.moveTo(0, i)
					context.lineTo(context.canvas.width, i)
					context.stroke()
					i -= STEP_Y
				}

				context.save()

				// 绘制垂直参考线
				context.strokeStyle = 'rgba(100,0,0,0.3)'
				context.lineWidth = 1

				context.beginPath()
				context.moveTo(35, 0)
				context.lineTo(35, context.canvas.height)
				context.stroke()

				context.restore()
			}

			// 绘制背景
			drawBackground()

			// 设置文本填充颜色为蓝色
			context.fillStyle = 'blue'

			// 绘制左列所有文本
			LEFT_COLUMN_FONTS.forEach((font) => {
				// 设置当前字体
				context.font = font
				// 绘制文本,Y坐标递增
				context.fillText(font, LEFT_COLUMN_X, (y += DELTA_Y))
			})

			// 重置Y坐标
			y = 0

			// 绘制右列所有文本
			RIGHT_COLUMN_FONTS.forEach(function (font) {
				context.font = font
				context.fillText(font, RIGHT_COLUMN_X, (y += DELTA_Y))
			})
		</script>
	</body>
</html>

基于C2000 DSP的电力电子、电机驱动和数字滤波器的仿真模型构建及其C代码实现方法。首先,在MATLAB/Simulink环境中创建电力电子系统的仿真模型,如三相逆变器,重点讨论了PWM生成模块中死区时间的设置及其对输出波形的影响。接着,深入探讨了C2000 DSP内部各关键模块(如ADC、DAC、PWM定时器)的具体配置步骤,特别是EPWM模块采用上下计数模式以确保对称波形的生成。此外,还讲解了数字滤波器的设计流程,从MATLAB中的参数设定到最终转换为适用于嵌入式系统的高效C代码。文中强调了硬件在环(HIL)和支持快速原型设计(RCP)的重要性,并分享了一些实际项目中常见的陷阱及解决方案,如PCB布局不当导致的ADC采样异常等问题。最后,针对中断服务程序(ISR)提出了优化建议,避免因ISR执行时间过长而引起的系统不稳定现象。 适合人群:从事电力电子、电机控制系统开发的技术人员,尤其是那些希望深入了解C2000 DSP应用细节的研发工程师。 使用场景及目标:①掌握利用MATLAB/Simulink进行电力电子设备仿真的技巧;②学会正确配置C2000 DSP的各项外设资源;③能够独立完成从理论设计到实际产品落地全过程中的各个环节,包括但不限于数字滤波器设计、PWM信号生成、ADC采样同步等。 其他说明:文中提供了大量实用的代码片段和技术提示,帮助读者更好地理解和实践相关知识点。同时,也提到了一些常见错误案例,有助于开发者规避潜在风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值