无法为CKEditor 4添加自定义字体,MVC5项目问题求助
解决MVC5中CKEditor 4自定义字体失效的问题
看起来你遇到的核心问题是CKEditor的实际加载来源与缓存冲突——毕竟移除本地包后还能正常使用,说明当前页面用的CKEditor大概率不是你项目里的本地版本,或者缓存死死咬住旧配置不肯更新。下面一步步帮你排查解决:
1. 先确认CKEditor的加载来源
你提到移除解决方案里的CKEditor包后仍能使用,这几乎可以肯定是页面引用了CDN版本的CKEditor,而非本地文件。这种情况下你修改本地config.js完全不会生效,因为CDN的CKEditor只会加载自身默认配置,或是你在页面内直接定义的配置。
检查你的页面视图代码,找类似这样的标签:
<script src="https://cdn.ckeditor.com/4.x/standard/ckeditor.js"></script>
如果是这种情况,你有两个选择:
- 改用本地CKEditor包,确保页面引用的是项目内的
ckeditor.js; - 在页面初始化CKEditor时,直接在代码里指定自定义字体配置,不依赖本地
config.js,比如:
CKEDITOR.replace('yourEditorId', { contentsCss: '/Content/fonts.css', // 用绝对路径更可靠 font_names: 'Khmer_OS;' + CKEDITOR.config.font_names // 保留默认字体+新增自定义字体 });
2. 彻底清除缓存(浏览器+服务器端)
普通的清除缓存可能不够彻底,试试这些方法:
- 浏览器端:打开开发者工具(F12),切换到Network标签,勾选Disable cache,再按Ctrl+Shift+R强制刷新页面;
- 服务器端(IIS):回收应用池,或者在IIS管理器里清除静态内容缓存;
- 如果你用了自定义CDN,还需要刷新CDN的缓存。
3. 验证配置文件和资源路径的正确性
如果确实用的是本地CKEditor,检查以下几点:
config.js是否和ckeditor.js在同一目录?如果不是,初始化时要指定自定义配置路径:CKEDITOR.replace('yourEditorId', { customConfig: '/Scripts/ckeditor/config.js' // 替换成你实际的路径 });fonts.css的路径是否正确?用绝对路径替代相对路径更不容易出错,比如/Content/fonts.css;- 字体文件
KHMEROS.TTF的路径:确保fonts/KHMEROS.TTF是相对于fonts.css的正确路径,比如fonts.css在Content文件夹,那么fonts文件夹应该在Content下,即Content/fonts/KHMEROS.TTF。
4. 检查是否有配置被覆盖
有时候页面里的其他脚本或inline配置会覆盖config.js的设置,你可以在浏览器控制台输入以下命令,查看当前生效的字体配置:
console.log(CKEDITOR.config.font_names);
如果输出里没有Khmer_OS,说明你的配置没被正确加载,需要回到前面的步骤排查路径或加载来源问题。
附上你提供的配置代码,方便对照:
config.js
/** * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. * For licensing, see https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.editorConfig = function( config ) { config.contentsCss = 'fonts.css' config.font_names = 'Khmer_OS;' };
fonts.css
@font-face { font-family: "Khmer_OS"; src: local("Khmer_OS"), url("fonts/KHMEROS.TTF") format('opentype'); /*non-IE*/ }
内容的提问来源于stack exchange,提问作者m5kev4n
相关产品推荐
相关产品推荐

