umming 发布的文章

安装依赖
pip install fonttools brotli
python源码
from fontTools import ttLib
from fontTools.subset import main as subset_main
import os
import math
import random
import string

# ===================== 配置 =====================
SOURCE_FONT = "你的字体.TTF"  # 改成你的字体文件名
OUTPUT_DIR = "dist_woff" #字体切片存放的文件夹
FONT_FAMILY = "fzxbs" #font-famliy
OUTPUT_FORMAT = "woff" #需要的格式woff或者woff2
# =================================================

os.makedirs(OUTPUT_DIR, exist_ok=True)

# 加载字体
tt = ttLib.TTFont(SOURCE_FONT)
cmap = tt.getBestCmap()
all_chars = sorted(cmap.keys())
tt.close()

# 分片计算
total_glyphs = len(all_chars)
glyphs_per_chunk = 150
chunk_count = math.ceil(total_glyphs / glyphs_per_chunk)

chunks = []
for i in range(chunk_count):
    start = i * glyphs_per_chunk
    end = start + glyphs_per_chunk
    chunk = all_chars[start:end]
    if chunk:
        chunks.append(chunk)

css_lines = []

# 生成 6位随机字母+数字
def random_str(length=6):
    return ''.join(random.choices(string.ascii_lowercase + string.digits, k=length))

# 批量切片
for idx, chunk in enumerate(chunks):
    # 生成随机串 + 序号
    rand = random_str()
    #chunk_name = f"chunk_{rand}_{idx+1:02d}"
    chunk_name = f"{idx+1:02d}"
    
    font_out = os.path.join(OUTPUT_DIR, f"{FONT_FAMILY}_{chunk_name}.{OUTPUT_FORMAT}")
    unicodes = ",".join(f"U+{c:04X}" for c in chunk)

    args = [
        SOURCE_FONT,
        f"--unicodes={unicodes}",
        f"--output-file={font_out}",
        f"--flavor={OUTPUT_FORMAT}",
        "--layout-features=*",
        "--no-hinting",
    ]
    subset_main(args)

    # 生成CSS
    min_c = min(chunk)
    max_c = max(chunk)
    urange = f"U+{min_c:04X}-{max_c:04X}"

    css = f'''
@font-face {{
  font-family: '{FONT_FAMILY}';
  src: url('{os.path.basename(font_out)}') format('{OUTPUT_FORMAT}');
  unicode-range: {urange};
}}
'''
    css_lines.append(css.strip())
    print(f"✅ 生成:{font_out}")

# 保存CSS
with open(os.path.join(OUTPUT_DIR, "fonts.css"), "w", encoding="utf-8") as f:
    f.write("\n\n".join(css_lines))

print("\n🎉 全部完成!")
print(f"📁 输出目录:{OUTPUT_DIR}")

当面目录cmd执行py 你的python文件名,享用~

<script type="text/javascript">
var path = document.getElementById('s4');
var length = path.getTotalLength();
console.log("Path length:", length);
</script>

矩形polygon(0 0, 100% 0, 100% 100%, 0 100%)

clip-path: polygon(0 3%, 100% 0, 100% 100%, 0 97%);

ScreenShot_2026-06-01_095500_543.png

4个点分别是左上xy,右上xy,右下xy,左下xy,比如左上角如果要向下,则改左上,x=0,y=3%,依次类推

function getSwiper(itemWrap, groupNum, swiperOpt) {
  if (swiperOpt === void 0) {
    swiperOpt = {};
  }

  var $wrap = $(itemWrap);
  var $items = $wrap.children('.item');

  if (!$items.length) return;

  var swiperId = 'swiper-' + Date.now() + Math.random().toString(36).substr(2, 5);
  var paginationId = swiperId + '-pagination';

  var swiperHtml =
    '<div class="swiper-container ' + swiperId + '">' +
      '<div class="swiper-wrapper"></div>' +
      '<div class="swiper-pagination" id="' + paginationId + '"></div>' +
    '</div>';

  $wrap.after(swiperHtml);

  var $wrapper = $('.' + swiperId + ' .swiper-wrapper');

  for (var i = 0; i < $items.length; i += groupNum) {
    var $slide = $('<div class="swiper-slide"></div>');
    $items.slice(i, i + groupNum).appendTo($slide);
    $wrapper.append($slide);
  }
  var defaultOpt = {
    pagination: { el: '#' + paginationId, clickable: true },
    spaceBetween: 10,
    slidesPerView: 1
  };

  var finalOpt = {};
  for (var key in defaultOpt) {
    finalOpt[key] = defaultOpt[key];
  }
  for (var key in swiperOpt) {
    finalOpt[key] = swiperOpt[key];
  }

  $wrap.remove();

  new Swiper('.' + swiperId, finalOpt);
}
//调用
getSwiper('.slide-p1a', 4, {
      loop: true,
      autoplay: {delay: 6000,stopOnLastSlide: false,disableOnInteraction: false,},
      navigation: { nextEl: ".slide-p1ap .next", prevEl: ".slide-p1ap .prev" },
});
  

# 查看是否安装 Perl 版 rename
rename -v
# 未找到则安装:
# Ubuntu/Debian
sudo apt update && sudo apt install rename
# CentOS/RHEL(启用 EPEL 后)
sudo yum install prename
# Fedora
sudo dnf install perl-rename

#安装后
# 先预览(推荐,避免误操作)
rename -n 'y/A-Z/a-z/' *
# 确认无误后执行
rename -v 'y/A-Z/a-z/' *