【发布时间】:2018-07-08 01:49:19
【问题描述】:
我正在尝试显示使用 JavaScript 生成的弯曲文本 当我增加曲率时,一些字符消失了
这是我创建的JSFiddle
这是我的函数,它根据曲线百分比和文本大小生成路径数据
public getPathData (width, height, curve): string {
const positive_curve = (curve > 0);
const perimeter = width / Math.abs(curve) * 100;
const radius = perimeter / (2 * Math.PI) + (positive_curve ? 0 : height);
const sign = positive_curve ? 1 : 1;
const side = positive_curve ? 1 : 0;
const diameter_parameter = sign * (2 * radius);
return `m0,${radius}
a${radius},${radius} 0 0 ${side} ${diameter_parameter},0
a${radius},${radius} 0 0 ${side} ${-diameter_parameter},0Z`;
}
这是浏览器问题吗?还是问题出在路径本身?
根据@Paul LeBeau 的回答更新了代码
public getPathData (width, height, curve): string {
const perimeter = width / Math.abs(curve) * 100;
const radius = perimeter / (2 * Math.PI);
const diameter = radius * 2;
if (curve > 0) {
return `m${radius},${diameter}
a${radius},${radius} 0 0 1 0 ${diameter}
a${radius},${radius} 0 0 1 0 ${diameter}Z`;
} else {
return `m${radius},${diameter}
a${radius},${radius} 0 0 0 0 ${diameter}
a${radius},${radius} 0 0 0 0 ${-diameter}Z`;
}
}
它基本上根据曲线百分比 [-100%, 100%] 将文本环绕在圆的内部或外部
【问题讨论】: