Quill 后台富文本设置自定义字体(包含引入第三方字体)

一、建一个统一引入字体的文件(模块规范化,便于后期维护)

在根目录 /src 下,找到放置静态资源的文件夹 /assets。
既然是引入字体相关的,那就建立 /font/font.css 文件

▲如图:

在这里插入图片描述

【/src/assets/font/font.css】

@font-face {
    font-family: '您自定义的字体名'; // 这里注意,之后如果要用这个字体,就以这个字体名字为准
    src: url('您的字体地址.ttf'); // 这里字体文件的地址可以是本地的(取决于当前的这个字体文件是否放在项目的目录下),也可以是外部的(放在了你们自己的静态资源服务器上),各有利弊;
}

二、主入口文件main.js引入字体文件font.css

这里的目的懂的都懂,main.js引入font.css文件之后,在当前的项目下font.css中自定义引入第三方的字体全局可用

【main.js】

 import '@/assets/font/font.css' // 引入字体文件

三、重头戏: Quill组件相关

建议看这里的话,暂时先了解一下Quill富文本的介绍及基本配置
在自定义工具栏toolbar中可知,字体对应的是[{ ‘font’: [] }],
( font是有默认值的,只是我们可能会不需要,想要了解的建议看一下/node_modules/quill文件夹下的/formats/fonts.js 及 /dist文件夹下的三个css文件)

3-1 在需要引入富文本的【xxx.vue】文件中

import Quill from "quill";  //引入编辑器
//quill编辑器的字体
let fontArr = ['SimSun', 'Microsoft-YaHei','KaiTi','自定义的字体名字'];  // 这里的顺序注意一下
let Font = Quill.import('formats/font');  
Font.whitelist = fontArr ; // 将字体加入到白名单 ,这里可在 /formats/fonts.js 中了解
Quill.register(Font, true);
data(){
	return {
		toolbarOptions: [[{ 'font': fontArr }]] // 在工具栏配置中传入想要的字体集
	}
}

3-2 在Editor组件(可以理解是Quill富文本的主组件)中,写.vue文件中我们传入的字体集对应的css样式

【这是刚才在 xxx.vue文件中我们加入白名单的字体集 】
let fonts = ['SimSun', 'Microsoft-YaHei','KaiTi','自定义的字体名字'];  // 这里的顺序注意一下
【Editor组件】

<style>
  .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='SimSun']::before,
  .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='SimSun']::before {
    content: '宋体';
    font-family: 'SimSun' !important;
  }
  .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='Microsoft-YaHei']::before,
  .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='Microsoft-YaHei']::before {
    content: '微软雅黑';
    font-family: '微软雅黑';
  }
  .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='KaiTi']::before,
  .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='KaiTi']::before {
    content: '楷体';
    font-family: 'KaiTi' !important;
  }
  .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=您自定义的字体名]::before,
  .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=您自定义的字体名]::before {
    content: "您自定义的字体名";
    font-family: '您自定义的字体名';
  }
  /*  设置每个字体的css字体样式 */
  .ql-font-SimSun {
    font-family: 'SimSun';
  }
  .ql-font-Microsoft-YaHei {
    font-family: '微软雅黑';
  }
  .ql-font-KaiTi {
    font-family: 'KaiTi';
  }
  .ql-font-您自定义的字体名 {
    font-family: '您自定义的字体名';
  }
</style>

▲看下效果:

在这里插入图片描述

### Quill 富文本编辑器自定义字体实现方法 为了在 Quill 中添加自定义字体支持,需扩展默认的格式化选项并修改样式表。具体操作如下: #### 修改工具栏配置 通过创建新的 Blot 类来注册自定义字体功能[^1]。 ```javascript import Parchment from 'parchment'; const Font = new Parchment.Attributor.Style('font', 'font-family', { scope: Parchment.Scope.INLINE, whitelist: ['Arial', 'Times New Roman', 'Courier'] }); Quill.register(Font, true); ``` 此代码片段向 Quill 注册了一个名为 `font` 的新属性,允许设置三种不同的字体家族。 #### 更新 CSS 文件 确保页面中的 CSS 能够正确渲染这些字体。为此,在项目的样式文件里加入相应的规则[^2]: ```css .ql-font-Arial { font-family: Arial; } .ql-font-'Times New Roman' { font-family: "Times New Roman"; } .ql-font-Courier { font-family: Courier; } ``` 注意这里使用了特定的选择器前缀 `.ql-font-` 来匹配 Quill 自动生成的类名。 #### 初始化编辑器实例时指定可用字体列表 当初始化 Quill 编辑器对象时,可以通过传递一个包含所需字体名称数组给 `formats` 参数的方式来自定义可选字体项。 ```javascript var quill = new Quill('#editor-container', { modules: { toolbar: [ [{ header: [1, 2, false] }], [{ font: [] }], // 这里的空数组会被之前定义好的Font blot替代 ["bold", "italic", "underline"], [{ color: [] }, { background: [] }], [{ align: [] }] ] }, placeholder: 'Compose an epic...', theme: 'snow' }); // 动态加载已注册的所有字体到下拉菜单中 let fontSizeSelect = document.querySelector('.ql-font'); for (let name of Font.whitelist) { let option = document.createElement('option'); option.value = name; option.textContent = name; fontSizeSelect.appendChild(option); } ``` 上述 JavaScript 代码展示了如何构建带有自定义字体选择框的 Quill 工具条,并且动态填充了前面所提到的支持字体列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值