Skip to content

字体描边及阴影相关类型

ts
// 字体描边相关
export type FontStroke = {
    // 描边颜色
    strokeStyle: string;
    // 描边宽度
    lineWidth: number;
    // 线条端点样式
    lineCap: CanvasLineCap;
    // 线条连接样式
    lineJoin: CanvasLineJoin;
    // 控制锐角处斜接角的最大长度
    miterLimit: number;
}

// 字体描边的默认值
export const DEFAULT_FONT_STROKE: FontStroke = {
    strokeStyle: 'rgba(0, 0, 0, 0)',
    lineWidth: 1,
    lineCap: 'butt',
    lineJoin: 'miter',
    miterLimit: 10,
}

// 字体阴影相关
export type FontShadow = {
    // 阴影颜色
    shadowColor: string;
    // 阴影模糊半径
    shadowBlur: number;
    // 阴影在 X 轴的偏移量
    shadowOffsetX: number;
    // 阴影在 Y 轴的偏移量
    shadowOffsetY: number;
}

// 字体阴影的默认值
export const DEFAULT_FONT_SHADOW: FontShadow = {
    shadowColor: 'rgba(0, 0, 0, 0)',
    shadowBlur: 0,
    shadowOffsetX: 0,
    shadowOffsetY: 0,
}

export type FontStrokeAndShadow = FontStroke & FontShadow;

/**
 * 弹幕渲染器渲染弹幕的配置
 */
export type RenderConfig = {
  // 自定义弹幕过滤器,返回 false,弹幕就会被过滤掉
  barrageFilter?: (barrage: BaseBarrage) => boolean;
  // 重要弹幕 边框 的自定义渲染函数
  priorBorderCustomRender?: RenderFn;

  // Canvas 元素默认和 container 等高,为了避免弹幕渲染遮挡住播放器的控制栏,
  // 可以设置减少一定的高度
  heightReduce: number;
  // 弹幕运行速度,仅对滚动弹幕有效(每秒多少像素)
  speed: number;
  // 显示区域,只针对滚动弹幕,有效值 0 ~ 1
  renderRegion: number;
  // 滚动弹幕水平最小间距
  minSpace: number;
  // 是否重叠,只适用于滚动弹幕
  avoidOverlap: boolean;

  // 透明度,有效值 0 ~ 1
  opacity: number;
  // 弹幕字体
  fontFamily: string;
  // 字体粗细
  fontWeight: string;
} & FontStrokeAndShadow;

具体用法

TIP

可以直接看项目中的完整 DEMO,已经实现了字体描边和字体阴影功能。

字体描边和字体阴影的配置是在 RenderConfig 中的,所以可以在 new BarrageRenderer 实例的 时候,传递字体描边和字体阴影相关的属性,或者可以通过 BarrageRenderer 实例的 setRenderConfig 方法变更新的字体描边或者字体阴影。

Released under the MIT License.