EveSunMaple / Frosti

A clean, elegant, and fast static blog template! 🚀 Developed with Astro
https://frosti.saroprock.com
GNU General Public License v3.0
181 stars 30 forks source link

2.5.7的文章字数统计在中文下严重不准确 #32

Closed Bigwind110 closed 1 month ago

Bigwind110 commented 1 month ago

Title: 🛠️ Bug Report: [2.5.7的文章字数统计在中文下严重不准确]

Date: [2024/9/11]

Affected Version: [2.5.7]

Description: 我的中文文章字数超过了500字数,但是统计显示只有6个词,这似乎也造成了阅读时间统计的偏差 image

Proposed Fix or Solution: 是否会在后续加入中文的字数统计支持或者开关?

Contact Information: -Web:博客首页

Bigwind110 commented 1 month ago

2.5.7版本另一个可能的bug是

image 在标题或者是《Info》这类标签中,链接符号总是会另起一行,而在正文中表现是正常的 image 具体表现可以参考 链接符号参考

EveSunMaple commented 1 month ago

已收到 👌

中文统计是我使用的库(来自 Astro 官方示例)的原因,到时候我自己写一下好了;有关连接符号的样式是因为它是一个单独的svg,所以在排版上可能会因为 alert 的布局造成以上问题

原则上来说,第2位版本号增加才是新增功能,2.5.7 只是一个“测试版”,这星期发布 2.6.0 会修复这些问题。

Bigwind110 commented 1 month ago

好的,我很期待你的更新😍

Loping151 commented 1 month ago

看到作者打算修了呀,我给一个可(bian)能(tai)的实现:

./src/plugins/remark-word-count.mjs

import { toString } from 'hast-util-to-string';

export function remarkWordCount() {
    return function (tree, { data }) {
        const textOnPage = toString(tree);

        // 中英文字符处理:按中文、英文分别统计
        const wordCount = textOnPage
            .replace(/[\u4e00-\u9fa5]/g, ' $& ')  // 在每个中文字符前后加空格
            .split(/\s+/)                         // 继续按照空格分割
            .filter(Boolean).length;              // 过滤掉空字符串,得到有效字符数

        data.astro.frontmatter.wordCount = wordCount;
    };
}

因为他是直接数空格的。算是暴力解决了,看了下时间估计好像问题不大

Loping151 commented 1 month ago

另一个问题也看了下。感觉是样式不对。

./src/styles/global.scss

line ~117

h1,
h2,
h3,
h4,
h5,
h6 {
  @apply my-2 mb-1 font-semibold;

  svg {
    @apply inline-block;
    vertical-align: -0.25rem;
  }
}

然后找个空的地方加

.alert
{
  svg {
  @apply inline-block;
  vertical-align: -0.25rem;
  }
}

就解决了。 image

Loping151 commented 1 month ago

另外,问下有无优雅的更新方式?还是说只能手动替换文件。。考虑写个脚本来替换式升级了。。

EveSunMaple commented 1 month ago

此问题我已修复,只不过我是通过 const chineseCount = textOnPage.match(/[\u4e00-\u9fa5]/g)?.length || 0; 计算的中文字符数量。之前所使用的计算阅读时间的库已替换,样式也已修改。只不过因为2.6.0的原因还没有提交。

感谢您的贡献 @Loping151 ❤️

EveSunMaple commented 1 month ago

另外,问下有无优雅的更新方式?还是说只能手动替换文件。。考虑写个脚本来替换式升级了。。

我正在开发一个项目,只是它可能需要很久之后才会上线

EveSunMaple commented 1 month ago

2.6.0 已发布