当前位置:   article > 正文

three.js使用中文汉字展示方法_threejs显示中文的json

threejs显示中文的json

一开始使用的就是自己在电脑C盘fonts 文件夹找的字体包在线转换为json引入的。本地没有发现问题。部署上线后发现模型加载出来了文字出不来,过一会刷新才正常展示,打开请求发现文字库几十M,加载太慢了。后来有使用canvas把文字当做纹理贴图到材质,可是纹理会跟着材质的透明度变薄或者消失不能单独显示文字。ThreeJS-四步绘制中文 - 简书 (jianshu.com) 这篇文章中提取了作者已经在线转好的一份json文件,通过只能AI询问如何挑取自己需要的文字并保存为需要的JSON文件,得到下面一份转换的JS脚本。

  1. import {
  2. readFile,
  3. writeFile
  4. } from 'fs/promises';
  5. import {
  6. dirname,
  7. join
  8. } from 'path';
  9. import {
  10. fileURLToPath
  11. } from 'url';
  12. // 获取当前文件的目录
  13. const __dirname = dirname(fileURLToPath(
  14. import.meta.url));
  15. // JSON文件的路径
  16. const inputFile = join(__dirname, 'AlibabaPuHuiTiRegular.json');
  17. // 输出文件的路径
  18. const outputFile = join(__dirname, 'filtered_text_library.json');
  19. // 设置想要保留的汉字
  20. const keywords = ['正', '主', '后', '左', '右', '俯', '仰', '视', '图','a','b', 'c', 'd', 'e','f', 'g', 'h', 'i','j','k','l','m','n','o','p','q','r','s','t','u', 'v', 'w', 'x', 'y', 'z',
  21. ,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0',':','.'];
  22. // 读取JSON文件
  23. readFile(inputFile, 'utf8').then(data => {
  24. // 解析JSON数据为数组或对象
  25. const textLibrary = JSON.parse(data);
  26. // 筛选包含关键词的文字
  27. const selectedTexts = { glyphs: {} };
  28. if (typeof textLibrary === 'object' && textLibrary !== null) {
  29. // 如果textLibrary是一个对象
  30. for (const key in textLibrary) {
  31. if (key === 'glyphs') {
  32. for (const keyw in textLibrary[key]) {
  33. if (keywords.includes(keyw)) {
  34. selectedTexts.glyphs[keyw] = textLibrary[key][keyw];
  35. }
  36. }
  37. } else {
  38. selectedTexts[key] = textLibrary[key];
  39. }
  40. }
  41. } else {
  42. throw new Error('Invalid JSON structure');
  43. }
  44. // 将筛选后的结果转换为JSON字符串
  45. const selectedTextsJSON = JSON.stringify(selectedTexts, null, 4);
  46. // 将JSON字符串保存回文件
  47. return writeFile(outputFile, selectedTextsJSON, 'utf8');
  48. }).then(() => {
  49. console.log('文件已保存');
  50. }).catch(err => {
  51. console.error('处理文件时出错:', err);
  52. });

只要你拥有一份汉字json,挑取自己需要的就能转换得到一份简化后的JSON,大大缩小了文件大小,由原来的30M直接变30K。真的很有成就感。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/520573
推荐阅读
相关标签
  

闽ICP备14008679号